{"version":3,"file":"js/app.62eb8822.js","mappings":"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AQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,KAAM5hF,KAAM,MACzB,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MAAO5hF,KAAM,MAC1B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,QAAS5hF,KAAM,MAC5B,CAAE4hF,UAAW,OAAQ5hF,KAAM,MAC3B,CAAE4hF,UAAW,MA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C,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJzqF,GAAI,KACJ0qF,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,MACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,KACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,MACJC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,KACJC,GAAI,QACJC,GAAI,Q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AYq9K,mBAAmBjuL,MAAM,MAAQ,GAClE,OAAOktD,EAAK9xC,SAAS0V,IACnB,MAAMn7B,EAAIk4L,EAAKn5L,MAAMo5L,GAAQA,EAAIrzM,OAASq2C,EAAI4F,UAAYs3J,EAAalzL,SAASg2B,EAAItrC,MACpF,YAAazK,IAAN4a,EAAkB,GAAKm7B,CAA9B,GAEH,C,qCClCK,SAAUq9B,IACd,MAAM+/H,EAAKviI,UAAUC,UACfuiI,IAAQD,EAAG9mM,MAAM,YAAc8mM,EAAG9mM,MAAM,WACxCgnM,IAAWF,EAAG9mM,MAAM,WACpBinM,EAAYF,GAAOC,IAAWF,EAAG9mM,MAAM,UAC7C,OAAOinM,CACR,CAEK,SAAUlxE,IACd,MAAM+wE,EAAKviI,UAAUC,UACrB,QAASsiI,EAAG9mM,MAAM,kCACnB,CAEK,SAAUs7G,EAAWpyG,GACzB,MAAiB,kBAANA,EAAuB,GAC3BA,EAAEg+L,OAAO,GAAGprM,cAAgBoN,EAAEnN,MAAM,EAC5C,CAEK,SAAU0gB,EAAiCpjB,GAC/C,MAAM8tM,EAA+B,CACnC,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,SACA,SACA,IACA,IACA,IACA,SACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAGIC,EAAuB,IAAI7xL,IAAI4xL,GAC/BE,EAAkB91M,MAAM6lB,KAAK/d,GAAOoqB,QAAQ6jL,IAAUF,EAAqB9wL,IAAIgxL,KAC/EC,EAAcF,EAAgBrrM,KAAK,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","sources":["webpack://gstpln-webapp/./src/components/buttons/PaywallButton.vue","webpack://gstpln-webapp/./src/components/buttons/PaywallButton.vue?1659","webpack://gstpln-webapp/./src/components/buttons/PaywallButton.vue?3201","webpack://gstpln-webapp/./src/components/buttons/PaywallButton.vue?3169","webpack://gstpln-webapp/./src/components/dialogs/ConfirmationDialog.vue","webpack://gstpln-webapp/./src/components/dialogs/ConfirmationDialog.vue?d624","webpack://gstpln-webapp/./src/components/dialogs/ConfirmationDialog.vue?f986","webpack://gstpln-webapp/./src/components/dialogs/ConfirmationDialog.vue?5d17","webpack://gstpln-webapp/./src/components/dialogs/DataTableInputDialog.vue","webpack://gstpln-webapp/./src/components/dialogs/DataTableInputDialog.vue?b6da","webpack://gstpln-webapp/./src/components/dialogs/DataTableInputDialog.vue?8dcb","webpack://gstpln-webapp/./src/components/dialogs/DataTableInputDialog.vue?8d7a","webpack://gstpln-webapp/./src/components/dialogs/ImageUploadDialog.vue?72de","webpack://gstpln-webapp/./src/components/dialogs/ImageUploadDialog.vue","webpack://gstpln-webapp/./src/components/dialogs/ImageUploadDialog.vue?308a","webpack://gstpln-webapp/./src/components/dialogs/ImageUploadDialog.vue?591c","webpack://gstpln-webapp/./src/components/dialogs/InputDialog.vue","webpack://gstpln-webapp/./src/components/dialogs/InputDialog.vue?97b4","webpack://gstpln-webapp/./src/components/dialogs/InputDialog.vue?459c","webpack://gstpln-webapp/./src/components/dialogs/InputDialog.vue?2b83","webpack://gstpln-webapp/./src/components/dialogs/NewModalDialog.vue","webpack://gstpln-webapp/./src/components/dialogs/NewModalDialog.vue?781e","webpack://gstpln-webapp/./src/components/dialogs/NewModalDialog.vue?8030","webpack://gstpln-webapp/./src/components/dialogs/NewModalDialog.vue?dff9","webpack://gstpln-webapp/./src/components/dialogs/PaywallUpgradeDialog.vue","webpack://gstpln-webapp/./src/components/dialogs/PaywallUpgradeDialog.vue?54d1","webpack://gstpln-webapp/./src/components/dialogs/PaywallUpgradeDialog.vue?dcf1","webpack://gstpln-webapp/./src/components/dialogs/PaywallUpgradeDialog.vue?1c3e","webpack://gstpln-webapp/./src/components/editors/RichTextEditor.vue","webpack://gstpln-webapp/./src/services/handlebar-tiptap-extension.ts","webpack://gstpln-webapp/./src/services/handlebar-utils.ts","webpack://gstpln-webapp/./src/components/editors/RichTextEditor.vue?ce91","webpack://gstpln-webapp/./src/components/editors/RichTextEditor.vue?f45d","webpack://gstpln-webapp/./src/components/editors/RichTextEditor.vue?c9db","webpack://gstpln-webapp/./src/components/forms/SectionHeader.vue","webpack://gstpln-webapp/./src/components/forms/SectionHeader.vue?6742","webpack://gstpln-webapp/./src/components/forms/SectionHeader.vue?6cbe","webpack://gstpln-webapp/./src/components/forms/SectionHeader.vue?25bd","webpack://gstpln-webapp/./src/components/forms/ValidatedTextField.vue","webpack://gstpln-webapp/./src/components/forms/ValidatedTextField.vue?5a28","webpack://gstpln-webapp/./src/components/forms/ValidatedTextField.vue?8503","webpack://gstpln-webapp/./src/components/forms/ValidatedTextField.vue?15c1","webpack://gstpln-webapp/./src/components/layouts/SettingsForm.vue","webpack://gstpln-webapp/./src/components/layouts/SettingsForm.vue?526d","webpack://gstpln-webapp/./src/components/layouts/SettingsForm.vue?26de","webpack://gstpln-webapp/./src/components/layouts/SettingsForm.vue?9dcd","webpack://gstpln-webapp/./src/components/layouts/SettingsGroup.vue","webpack://gstpln-webapp/./src/components/layouts/SettingsGroup.vue?e899","webpack://gstpln-webapp/./src/components/layouts/SettingsGroup.vue?07c4","webpack://gstpln-webapp/./src/components/layouts/SettingsGroup.vue?3df7","webpack://gstpln-webapp/./src/components/pickers/ColorPickerField.vue","webpack://gstpln-webapp/./src/components/pickers/ColorPickerField.vue?ab32","webpack://gstpln-webapp/./src/components/pickers/ColorPickerField.vue?c470","webpack://gstpln-webapp/./src/components/pickers/ColorPickerField.vue?6ba6","webpack://gstpln-webapp/./src/components/pickers/CurrencyPicker.vue","webpack://gstpln-webapp/./src/components/pickers/CurrencyPicker.vue?a9ee","webpack://gstpln-webapp/./src/components/pickers/CurrencyPicker.vue?aee9","webpack://gstpln-webapp/./src/components/pickers/CurrencyPicker.vue?44c8","webpack://gstpln-webapp/./src/components/pickers/DatePickerField.vue","webpack://gstpln-webapp/./src/components/pickers/DatePickerField.vue?98bc","webpack://gstpln-webapp/./src/components/pickers/DatePickerField.vue?511b","webpack://gstpln-webapp/./src/components/pickers/DatePickerField.vue?1ecb","webpack://gstpln-webapp/./src/components/pickers/DateRangePickerField.vue","webpack://gstpln-webapp/./src/components/pickers/DateRangePickerField.vue?7d93","webpack://gstpln-webapp/./src/components/pickers/DateRangePickerField.vue?5b31","webpack://gstpln-webapp/./src/components/pickers/DateRangePickerField.vue?8987","webpack://gstpln-webapp/./src/components/reservation/StatusContextMenu.vue","webpack://gstpln-webapp/./src/components/reservation/StatusContextMenu.vue?2222","webpack://gstpln-webapp/./src/components/reservation/StatusContextMenu.vue?f2a9","webpack://gstpln-webapp/./src/components/reservation/StatusContextMenu.vue?2155","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanCanvas.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTable.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRect.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeSeat.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeOverflow.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeOverflow.vue?c2d8","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeOverflow.vue?6214","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeOverflow.vue?8700","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeSeat.vue?578c","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeSeat.vue?640f","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeSeat.vue?41de","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRect.vue?879c","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRect.vue?1181","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRect.vue?6e26","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRound.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRound.vue?8bdf","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRound.vue?5533","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanShapeTableRound.vue?4f6e","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTable.vue?bddf","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTable.vue?78f9","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTable.vue?7630","webpack://gstpln-webapp/./src/components/views/floorplan/mixins/editable-canvas.ts","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanCanvas.vue?008c","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanCanvas.vue?551c","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanCanvas.vue?a6a5","webpack://gstpln-webapp/./src/components/views/guests/GuestListHeaderRow.vue","webpack://gstpln-webapp/./src/components/views/guests/GuestListHeaderRow.vue?fcee","webpack://gstpln-webapp/./src/components/views/guests/GuestListHeaderRow.vue?b626","webpack://gstpln-webapp/./src/components/views/guests/GuestListHeaderRow.vue?a486","webpack://gstpln-webapp/./src/components/views/guests/GuestListRow.vue","webpack://gstpln-webapp/./src/components/views/guests/StatusSelectionMenu.vue","webpack://gstpln-webapp/./src/components/views/guests/StatusSelectionMenu.vue?471d","webpack://gstpln-webapp/./src/components/views/guests/StatusSelectionMenu.vue?a195","webpack://gstpln-webapp/./src/components/views/guests/StatusSelectionMenu.vue?de94","webpack://gstpln-webapp/./src/components/util/HideableBadge.vue","webpack://gstpln-webapp/./src/components/util/HideableBadge.vue?b5ad","webpack://gstpln-webapp/./src/components/util/HideableBadge.vue?13f5","webpack://gstpln-webapp/./src/components/util/HideableBadge.vue?55e6","webpack://gstpln-webapp/./src/components/views/guests/GuestListRow.vue?92f4","webpack://gstpln-webapp/./src/components/views/guests/GuestListRow.vue?7718","webpack://gstpln-webapp/./src/components/views/guests/GuestListRow.vue?8b08","webpack://gstpln-webapp/./src/components/views/guests/GuestResultsList.vue","webpack://gstpln-webapp/./src/components/views/guests/GuestResultsList.vue?0150","webpack://gstpln-webapp/./src/components/views/guests/GuestResultsList.vue?e31e","webpack://gstpln-webapp/./src/components/views/guests/GuestResultsList.vue?d91c","webpack://gstpln-webapp/./src/components/views/guests/ReservationChips.vue","webpack://gstpln-webapp/./src/components/views/guests/ReservationChips.vue?bc9d","webpack://gstpln-webapp/./src/components/views/guests/ReservationChips.vue?e94d","webpack://gstpln-webapp/./src/components/views/guests/ReservationChips.vue?e450","webpack://gstpln-webapp/./src/components/views/main/AccountSwitcher.vue","webpack://gstpln-webapp/./src/components/views/main/AccountAvatar.vue","webpack://gstpln-webapp/./src/components/views/main/AccountAvatar.vue?bbbf","webpack://gstpln-webapp/./src/components/views/main/AccountAvatar.vue?36ca","webpack://gstpln-webapp/./src/components/views/main/AccountAvatar.vue?3bdf","webpack://gstpln-webapp/./src/components/views/main/AccountSwitcher.vue?aaf3","webpack://gstpln-webapp/./src/components/views/main/AccountSwitcher.vue?c87c","webpack://gstpln-webapp/./src/components/views/main/AccountSwitcher.vue?d452","webpack://gstpln-webapp/./src/components/views/main/MainToolbar.vue","webpack://gstpln-webapp/./src/components/views/main/MainToolbar.vue?8e21","webpack://gstpln-webapp/./src/components/views/main/MainToolbar.vue?8bf3","webpack://gstpln-webapp/./src/components/views/main/MainToolbar.vue?04fa","webpack://gstpln-webapp/./src/components/views/main/SearchList.vue","webpack://gstpln-webapp/./src/components/views/main/SearchList.vue?df06","webpack://gstpln-webapp/./src/components/views/main/SearchList.vue?1827","webpack://gstpln-webapp/./src/components/views/main/SearchList.vue?d36c","webpack://gstpln-webapp/./src/components/views/reservation/ContactDetailsDialog.vue","webpack://gstpln-webapp/./src/util/codes.ts","webpack://gstpln-webapp/./src/components/views/reservation/ContactDetailsDialog.vue?fa52","webpack://gstpln-webapp/./src/components/views/reservation/ContactDetailsDialog.vue?59fe","webpack://gstpln-webapp/./src/components/views/reservation/ContactDetailsDialog.vue?9698","webpack://gstpln-webapp/./src/grpc-api/model/message.ts","webpack://gstpln-webapp/./src/components/views/reservation/ContactMessageDialog.vue","webpack://gstpln-webapp/./src/components/views/reservation/ContactMessageDialog.vue?e08c","webpack://gstpln-webapp/./src/components/views/reservation/ContactMessageDialog.vue?1117","webpack://gstpln-webapp/./src/components/views/reservation/ContactMessageDialog.vue?1de3","webpack://gstpln-webapp/./src/components/views/reservation/EmployeeDialog.vue","webpack://gstpln-webapp/./src/components/views/reservation/EmployeeDialog.vue?3ea7","webpack://gstpln-webapp/./src/components/views/reservation/EmployeeDialog.vue?54f2","webpack://gstpln-webapp/./src/components/views/reservation/EmployeeDialog.vue?1bef","webpack://gstpln-webapp/./src/components/views/reservation/ReservationResultsDialog.vue","webpack://gstpln-webapp/./src/components/views/reservation/ReservationResultsDialog.vue?e46d","webpack://gstpln-webapp/./src/components/views/reservation/ReservationResultsDialog.vue?5c6c","webpack://gstpln-webapp/./src/components/views/reservation/ReservationResultsDialog.vue?3c07","webpack://gstpln-webapp/./src/components/views/settings/DeleteAccountDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/DeleteAccountDialog.vue?a1d6","webpack://gstpln-webapp/./src/components/views/settings/DeleteAccountDialog.vue?eb0f","webpack://gstpln-webapp/./src/components/views/settings/DeleteAccountDialog.vue?9b6e","webpack://gstpln-webapp/./src/components/views/settings/FloorplanEditDialog.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanEditSidebar.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTablePreview.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTablePreview.vue?7ef2","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTablePreview.vue?c11c","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanTablePreview.vue?fd8c","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanEditSidebar.vue?ed50","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanEditSidebar.vue?325b","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanEditSidebar.vue?2b2b","webpack://gstpln-webapp/./src/components/views/settings/FloorplanEditDialog.vue?80c2","webpack://gstpln-webapp/./src/components/views/settings/FloorplanEditDialog.vue?2898","webpack://gstpln-webapp/./src/components/views/settings/FloorplanEditDialog.vue?894b","webpack://gstpln-webapp/./src/components/views/settings/HelpHeader.vue","webpack://gstpln-webapp/./src/components/views/settings/HelpHeader.vue?9009","webpack://gstpln-webapp/./src/components/views/settings/HelpHeader.vue?0916","webpack://gstpln-webapp/./src/components/views/settings/HelpHeader.vue?8d02","webpack://gstpln-webapp/./src/components/views/settings/TablesDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/TablesDialog.vue?eb19","webpack://gstpln-webapp/./src/components/views/settings/TablesDialog.vue?a9e7","webpack://gstpln-webapp/./src/components/views/settings/TablesDialog.vue?e3f7","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodsList.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodBankTransfer.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodLayout.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodLayout.vue?91b5","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodLayout.vue?4ceb","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodLayout.vue?f090","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodBankTransfer.vue?3c19","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodBankTransfer.vue?d2cb","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodBankTransfer.vue?50a5","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodCard.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodCard.vue?6143","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodCard.vue?2acd","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodCard.vue?7041","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodSepaDebit.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodSepaDebit.vue?bd53","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodSepaDebit.vue?8c04","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodSepaDebit.vue?a665","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodUnknown.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodUnknown.vue?4b28","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodUnknown.vue?1de6","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodUnknown.vue?26c2","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodsList.vue?498a","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodsList.vue?1cbf","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethodsList.vue?e799","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentWizard.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentBillingDetails.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentBillingDetails.vue?4d09","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentBillingDetails.vue?acf3","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentBillingDetails.vue?6d57","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentDetails.vue","webpack://gstpln-webapp/./src/services/payment-details-utils.ts","webpack://gstpln-webapp/./src/components/views/settings/billing/InvoiceDetails.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/InvoiceDetails.vue?ca53","webpack://gstpln-webapp/./src/components/views/settings/billing/InvoiceDetails.vue?f2c7","webpack://gstpln-webapp/./src/components/views/settings/billing/InvoiceDetails.vue?ed19","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethods.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentElement.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentElement.vue?07fc","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentElement.vue?4831","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentElement.vue?d959","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethods.vue?f7af","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethods.vue?5fe7","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentMethods.vue?b890","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentDetails.vue?0ebb","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentDetails.vue?05b5","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentDetails.vue?cc28","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccess.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessIntent.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentResultSuccessLayout.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentResultSuccessLayout.vue?f2a1","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentResultSuccessLayout.vue?69fd","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentResultSuccessLayout.vue?6187","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessIntent.vue?d873","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessIntent.vue?d30e","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessIntent.vue?aa3a","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessInvoice.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessInvoice.vue?8ded","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessInvoice.vue?eb38","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessInvoice.vue?7dba","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessSubscription.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessSubscription.vue?d1af","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessSubscription.vue?23ac","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessSubscription.vue?0654","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessBankTransferInstructions.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessBankTransferInstructions.vue?ba4b","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessBankTransferInstructions.vue?3aca","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessBankTransferInstructions.vue?edc5","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessMandateInstructions.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessMandateInstructions.vue?ff44","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessMandateInstructions.vue?d328","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccessMandateInstructions.vue?c17f","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccess.vue?d502","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccess.vue?462b","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentSuccess.vue?f6fd","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentWizard.vue?5833","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentWizard.vue?c142","webpack://gstpln-webapp/./src/components/views/settings/billing/PaymentWizard.vue?b404","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanSelector.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanDetailsCard.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanDetailsCard.vue?e027","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanDetailsCard.vue?4734","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanDetailsCard.vue?cca3","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanSelector.vue?6c13","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanSelector.vue?c106","webpack://gstpln-webapp/./src/components/views/settings/billing/PlanSelector.vue?64d0","webpack://gstpln-webapp/./src/components/views/tables/TimeTableStripedFill.vue","webpack://gstpln-webapp/./src/components/views/tables/TimeTableStripedFill.vue?496f","webpack://gstpln-webapp/./src/components/views/tables/TimeTableStripedFill.vue?8541","webpack://gstpln-webapp/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://gstpln-webapp/./src/api/api-billing.ts","webpack://gstpln-webapp/./src/api/api-error.ts","webpack://gstpln-webapp/./src/api/api-utils.ts","webpack://gstpln-webapp/./src/api/api-messenger.ts","webpack://gstpln-webapp/./src/api/api-allocations.ts","webpack://gstpln-webapp/./src/api/api-dashboard.ts","webpack://gstpln-webapp/./src/api/api-campaign-filter.ts","webpack://gstpln-webapp/./src/api/api-billing-connect.ts","webpack://gstpln-webapp/./src/api/http-client.ts","webpack://gstpln-webapp/./src/components/apps/app.ts","webpack://gstpln-webapp/./src/components/dialogs/confirmation-dialog.ts","webpack://gstpln-webapp/./src/components/helpers/colors.ts","webpack://gstpln-webapp/./src/components/helpers/vue2-helpers.ts","webpack://gstpln-webapp/./src/components/views/floorplan/floorplan-types.ts","webpack://gstpln-webapp/./src/services/grpc-client-utils.ts","webpack://gstpln-webapp/./src/grpc-api/model/campaign.ts","webpack://gstpln-webapp/./src/grpc-api/model/app.ts","webpack://gstpln-webapp/./src/grpc-api/model/currency.ts","webpack://gstpln-webapp/./src/grpc-api/model/giftcard-recipient.ts","webpack://gstpln-webapp/./src/grpc-api/model/giftcard.ts","webpack://gstpln-webapp/./src/grpc-api/grpc-client.ts","webpack://gstpln-webapp/./src/grpc-api/model/contact-filter.ts","webpack://gstpln-webapp/./src/grpc-api/model/contact.ts","webpack://gstpln-webapp/./src/grpc-api/model/dashboard-availability.ts","webpack://gstpln-webapp/./src/grpc-api/model/feedback-settings.ts","webpack://gstpln-webapp/./src/grpc-api/model/feedback.ts","webpack://gstpln-webapp/./src/grpc-api/model/giftcard-product.ts","webpack://gstpln-webapp/./src/grpc-api/model/giftcard-transaction.ts","webpack://gstpln-webapp/./src/grpc-api/model/html-template.ts","webpack://gstpln-webapp/./src/grpc-api/model/marketing-campaign-settings.ts","webpack://gstpln-webapp/./src/grpc-api/model/marketing-campaign.ts","webpack://gstpln-webapp/./src/grpc-api/model/model-utils.ts","webpack://gstpln-webapp/./src/grpc-api/model/reservation-service.ts","webpack://gstpln-webapp/./src/grpc-api/model/attachment.ts","webpack://gstpln-webapp/./src/grpc-api/model/reservation.ts","webpack://gstpln-webapp/./src/services/email-validation.ts","webpack://gstpln-webapp/./src/plugins/validation.ts","webpack://gstpln-webapp/./src/plugins/reorder-table.ts","webpack://gstpln-webapp/./src/App.vue","webpack://gstpln-webapp/./src/composables/pwa-install.ts","webpack://gstpln-webapp/./src/components/apps/campaign-filter/campaign-filter.ts","webpack://gstpln-webapp/./src/components/apps/export/export.ts","webpack://gstpln-webapp/./src/components/apps/stripe/stripe.ts","webpack://gstpln-webapp/./src/components/apps/stripe-connect/stripe-connect.ts","webpack://gstpln-webapp/./src/components/apps/dyflexis/dyflexis.ts","webpack://gstpln-webapp/./src/components/apps/booq-planner/booq-planner.ts","webpack://gstpln-webapp/./src/components/apps/simpleCampaignApp/simpleCampaignApp.ts","webpack://gstpln-webapp/./src/components/apps/giftcards/giftcards.ts","webpack://gstpln-webapp/./src/components/apps/annoncer/annoncer.ts","webpack://gstpln-webapp/./src/components/apps/bookdinners/bookdinners.ts","webpack://gstpln-webapp/./src/util/create-apps.ts","webpack://gstpln-webapp/./src/composables/activity-indicator.ts","webpack://gstpln-webapp/./src/components/browserhacks/browserhacks.ts","webpack://gstpln-webapp/./src/composables/toast-init.ts","webpack://gstpln-webapp/./src/composables/pwa-update.ts","webpack://gstpln-webapp/./src/App.vue?84e5","webpack://gstpln-webapp/./src/App.vue?78e3","webpack://gstpln-webapp/./src/App.vue?01fe","webpack://gstpln-webapp/./src/components/views/MainView.vue","webpack://gstpln-webapp/./src/components/views/main/MainFloatingButton.vue","webpack://gstpln-webapp/./src/components/views/main/MainFloatingButton.vue?f7e9","webpack://gstpln-webapp/./src/components/views/main/MainFloatingButton.vue?4b00","webpack://gstpln-webapp/./src/components/views/main/MainFloatingButton.vue?e55e","webpack://gstpln-webapp/./src/components/views/main/MainMenu.vue","webpack://gstpln-webapp/./src/components/views/main/MainMenuGroup.vue","webpack://gstpln-webapp/./src/components/util/MenuItem.vue","webpack://gstpln-webapp/./src/components/util/MenuItem.vue?bf5b","webpack://gstpln-webapp/./src/components/util/MenuItem.vue?be39","webpack://gstpln-webapp/./src/components/util/MenuItem.vue?e403","webpack://gstpln-webapp/./src/components/views/main/MainMenuGroup.vue?c2fc","webpack://gstpln-webapp/./src/components/views/main/MainMenuGroup.vue?609d","webpack://gstpln-webapp/./src/components/views/main/MainMenuGroup.vue?c0b8","webpack://gstpln-webapp/./src/components/views/main/MainMenu.vue?0638","webpack://gstpln-webapp/./src/components/views/main/MainMenu.vue?372d","webpack://gstpln-webapp/./src/components/views/main/MainMenu.vue?d7bf","webpack://gstpln-webapp/./src/services/push-updater.ts","webpack://gstpln-webapp/./src/components/views/onboarding/OnboardingSteps.vue?2be4","webpack://gstpln-webapp/./src/components/views/onboarding/OnboardingSteps.vue","webpack://gstpln-webapp/./src/components/views/onboarding/OnboardingSteps.vue?1e8c","webpack://gstpln-webapp/./src/components/views/onboarding/OnboardingSteps.vue?9ca5","webpack://gstpln-webapp/./src/components/views/onboarding/Welcome.vue","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepWelcome.vue","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepWelcome.vue?d701","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepWelcome.vue?f142","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepWelcome.vue?110c","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepAccount.vue","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepAccount.vue?b64a","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepAccount.vue?1f7c","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepAccount.vue?ae16","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepTables.vue","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepTables.vue?d390","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepTables.vue?e52d","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepTables.vue?985f","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepOnline.vue","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepOnline.vue?af52","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepOnline.vue?b917","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepOnline.vue?3eea","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepHours.vue","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepHours.vue?f180","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepHours.vue?53c3","webpack://gstpln-webapp/./src/components/views/onboarding/WelcomeStepHours.vue?9d62","webpack://gstpln-webapp/./src/components/views/onboarding/Welcome.vue?3557","webpack://gstpln-webapp/./src/components/views/onboarding/Welcome.vue?e849","webpack://gstpln-webapp/./src/components/views/onboarding/Welcome.vue?c06e","webpack://gstpln-webapp/./src/components/views/settings/billing/BillingWarningBar.vue","webpack://gstpln-webapp/./src/components/views/settings/billing/BillingWarningBar.vue?102d","webpack://gstpln-webapp/./src/components/views/settings/billing/BillingWarningBar.vue?b80e","webpack://gstpln-webapp/./src/components/views/settings/billing/BillingWarningBar.vue?6d2d","webpack://gstpln-webapp/./src/components/views/main/LanguageSwitchDialog.vue","webpack://gstpln-webapp/./src/components/views/main/LanguageSwitchDialog.vue?496e","webpack://gstpln-webapp/./src/components/views/main/LanguageSwitchDialog.vue?cc44","webpack://gstpln-webapp/./src/components/views/main/LanguageSwitchDialog.vue?9bfe","webpack://gstpln-webapp/./src/components/common/PrivacyScreenView.vue","webpack://gstpln-webapp/./src/components/common/PrivacyScreenView.vue?7d78","webpack://gstpln-webapp/./src/components/common/PrivacyScreenView.vue?255b","webpack://gstpln-webapp/./src/components/common/PrivacyScreenView.vue?4e76","webpack://gstpln-webapp/./src/services/fcm-app-cfg.ts","webpack://gstpln-webapp/./src/services/fcm.ts","webpack://gstpln-webapp/./src/services/reservation-history.ts","webpack://gstpln-webapp/./src/components/util/PwaInstallBar.vue","webpack://gstpln-webapp/./src/components/util/PwaInstallBar.vue?610e","webpack://gstpln-webapp/./src/components/util/PwaInstallBar.vue?c6f5","webpack://gstpln-webapp/./src/components/util/PwaInstallBar.vue?ffb5","webpack://gstpln-webapp/./src/components/views/MainView.vue?4bf3","webpack://gstpln-webapp/./src/components/views/MainView.vue?5fb5","webpack://gstpln-webapp/./src/components/views/MainView.vue?1867","webpack://gstpln-webapp/./src/components/views/reservation/Reservation.vue","webpack://gstpln-webapp/./src/components/views/reservation/ReservationHistoryDialog.vue","webpack://gstpln-webapp/./src/components/views/reservation/ReservationHistoryDialog.vue?75f7","webpack://gstpln-webapp/./src/components/views/reservation/Reservation.vue?5cbd","webpack://gstpln-webapp/./src/components/views/reservation/ReservationHistoryDialog.vue?e8ba","webpack://gstpln-webapp/./src/components/views/reservation/ReservationHistoryDialog.vue?21cc","webpack://gstpln-webapp/./src/components/views/reservation/FileUploadDialog.vue","webpack://gstpln-webapp/./src/components/views/reservation/FileUploadDialog.vue?7f74","webpack://gstpln-webapp/./src/components/views/reservation/FileUploadDialog.vue?080b","webpack://gstpln-webapp/./src/components/views/reservation/FileUploadDialog.vue?20ab","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocomplete.vue","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocompleteRow.vue","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocompleteRow.vue?334e","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocompleteRow.vue?fafe","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocompleteRow.vue?9c4f","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocomplete.vue?e68a","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocomplete.vue?5814","webpack://gstpln-webapp/./src/components/views/reservation/ContactAutocomplete.vue?409f","webpack://gstpln-webapp/./src/components/pickers/PartySizePicker.vue","webpack://gstpln-webapp/./src/components/pickers/PartySizePicker.vue?8638","webpack://gstpln-webapp/./src/components/pickers/PartySizePicker.vue?694e","webpack://gstpln-webapp/./src/components/pickers/PartySizePicker.vue?a3de","webpack://gstpln-webapp/./src/components/views/reservation/TabItemMenu.vue","webpack://gstpln-webapp/./src/components/views/reservation/TabItemMenu.vue?fa67","webpack://gstpln-webapp/./src/components/views/reservation/TabItemMenu.vue?90b5","webpack://gstpln-webapp/./src/components/views/reservation/TabItemMenu.vue?9d6f","webpack://gstpln-webapp/./src/components/views/reservation/TagNoteMenu.vue","webpack://gstpln-webapp/./src/components/views/reservation/TagNoteMenu.vue?4f7c","webpack://gstpln-webapp/./src/components/views/reservation/TagNoteMenu.vue?c4c2","webpack://gstpln-webapp/./src/components/views/reservation/TagNoteMenu.vue?c976","webpack://gstpln-webapp/./src/components/views/reservation/ReservationStatusSelect.vue","webpack://gstpln-webapp/./src/components/views/reservation/ReservationStatusSelect.vue?f908","webpack://gstpln-webapp/./src/components/views/reservation/ReservationStatusSelect.vue?f400","webpack://gstpln-webapp/./src/components/views/reservation/ReservationStatusSelect.vue?326b","webpack://gstpln-webapp/./src/components/views/reservation/ReservationItemSelect.vue","webpack://gstpln-webapp/./src/components/views/reservation/ReservationItemSelect.vue?95ee","webpack://gstpln-webapp/./src/components/views/reservation/ReservationItemSelect.vue?33fa","webpack://gstpln-webapp/./src/components/views/reservation/ReservationItemSelect.vue?d1a4","webpack://gstpln-webapp/./src/components/views/reservation/Reservation.vue?48f2","webpack://gstpln-webapp/./src/components/views/reservation/Reservation.vue?41dc","webpack://gstpln-webapp/./src/components/views/calendar/Calendar.vue","webpack://gstpln-webapp/./src/components/views/calendar/Calendar.vue?9047","webpack://gstpln-webapp/./src/components/layouts/RowFormDivider.vue","webpack://gstpln-webapp/./src/components/views/calendar/Calendar.vue?341a","webpack://gstpln-webapp/./src/components/views/calendar/Calendar.vue?7f06","webpack://gstpln-webapp/./src/components/pickers/TimePickerField.vue","webpack://gstpln-webapp/./src/components/pickers/TimePickerField.vue?bcfe","webpack://gstpln-webapp/./src/components/pickers/TimePickerField.vue?3bdf","webpack://gstpln-webapp/./src/components/pickers/TimePickerField.vue?8c92","webpack://gstpln-webapp/./src/components/dialogs/ModalDialog.vue","webpack://gstpln-webapp/./src/components/dialogs/ModalDialog.vue?ac77","webpack://gstpln-webapp/./src/components/dialogs/ModalDialog.vue?7e6d","webpack://gstpln-webapp/./src/components/dialogs/ModalDialog.vue?bc2f","webpack://gstpln-webapp/./src/components/layouts/RowFormDivider.vue?3679","webpack://gstpln-webapp/./src/components/layouts/RowFormDivider.vue?e2b7","webpack://gstpln-webapp/./src/components/buttons/FilledButton.vue","webpack://gstpln-webapp/./src/components/buttons/FilledButton.vue?1281","webpack://gstpln-webapp/./src/components/buttons/FilledButton.vue?e740","webpack://gstpln-webapp/./src/components/buttons/FilledButton.vue?93dc","webpack://gstpln-webapp/./src/components/layouts/ToolbarContainer.vue","webpack://gstpln-webapp/./src/components/layouts/ToolbarContainer.vue?cd25","webpack://gstpln-webapp/./src/components/layouts/ToolbarContainer.vue?25e8","webpack://gstpln-webapp/./src/components/layouts/ToolbarContainer.vue?4f70","webpack://gstpln-webapp/./src/components/buttons/TooltipIconButton.vue","webpack://gstpln-webapp/./src/components/buttons/TooltipIconButton.vue?5332","webpack://gstpln-webapp/./src/components/buttons/TooltipIconButton.vue?6c3b","webpack://gstpln-webapp/./src/components/buttons/TooltipIconButton.vue?864c","webpack://gstpln-webapp/./src/plugins/vue-localized-formatter/src/plugin.ts","webpack://gstpln-webapp/./src/plugins/activity-indicator-plugin/plugin.ts","webpack://gstpln-webapp/./src/plugins/toast-plugin/plugin.ts","webpack://gstpln-webapp/./src/registerServiceWorker.ts","webpack://gstpln-webapp/./src/main.ts","webpack://gstpln-webapp/./src/mixins/dialog-closable.ts","webpack://gstpln-webapp/./src/mixins/settings-breadcrumbs.ts","webpack://gstpln-webapp/./src/mixins/unsaved-guard.ts","webpack://gstpln-webapp/./src/model/Account.ts","webpack://gstpln-webapp/./src/model/AccountSettings.ts","webpack://gstpln-webapp/./src/model/Allocation.ts","webpack://gstpln-webapp/./src/model/AppStoreApp.ts","webpack://gstpln-webapp/./src/model/Attachment.ts","webpack://gstpln-webapp/./src/model/Campaign.ts","webpack://gstpln-webapp/./src/model/CampaignFilter.ts","webpack://gstpln-webapp/./src/model/Contact.ts","webpack://gstpln-webapp/./src/model/Country.ts","webpack://gstpln-webapp/./src/model/DateAndTime.ts","webpack://gstpln-webapp/./src/model/DayNote.ts","webpack://gstpln-webapp/./src/model/DurationRule.ts","webpack://gstpln-webapp/./src/model/Employee.ts","webpack://gstpln-webapp/./src/model/HourSlot.ts","webpack://gstpln-webapp/./src/model/Label.ts","webpack://gstpln-webapp/./src/model/MessageRule.ts","webpack://gstpln-webapp/./src/model/MessageTemplate.ts","webpack://gstpln-webapp/./src/model/MessageType.ts","webpack://gstpln-webapp/./src/model/OpeningHour.ts","webpack://gstpln-webapp/./src/model/Reservation.ts","webpack://gstpln-webapp/./src/model/Service.ts","webpack://gstpln-webapp/./src/model/Tab.ts","webpack://gstpln-webapp/./src/model/TabItem.ts","webpack://gstpln-webapp/./src/model/TagNote.ts","webpack://gstpln-webapp/./src/model/TimeSlot.ts","webpack://gstpln-webapp/./src/model/User.ts","webpack://gstpln-webapp/./src/model/model-utils.ts","webpack://gstpln-webapp/./src/plugins/activity-indicator-plugin/activity-indicator.ts","webpack://gstpln-webapp/./src/plugins/i18n-locale.ts","webpack://gstpln-webapp/./src/plugins/i18n.ts","webpack://gstpln-webapp/./src/plugins/toast-plugin/toast.ts","webpack://gstpln-webapp/./src/plugins/vue-localized-formatter/src/formatter.ts","webpack://gstpln-webapp/./src/plugins/vue-localized-formatter/src/localized.ts","webpack://gstpln-webapp/./src/theme/theme.ts","webpack://gstpln-webapp/./src/components/icons/IconGuestplan.vue","webpack://gstpln-webapp/src/components/icons/IconGuestplan.vue","webpack://gstpln-webapp/./src/components/icons/IconGuestplan.vue?ff68","webpack://gstpln-webapp/./src/components/icons/IconGuestplan.vue?4377","webpack://gstpln-webapp/./src/components/icons/IconWalkOutline.vue","webpack://gstpln-webapp/src/components/icons/IconWalkOutline.vue","webpack://gstpln-webapp/./src/components/icons/IconWalkOutline.vue?2591","webpack://gstpln-webapp/./src/components/icons/IconWalkOutline.vue?9842","webpack://gstpln-webapp/./src/plugins/vuetify.ts","webpack://gstpln-webapp/./src/components/views/Guests.vue?198d","webpack://gstpln-webapp/./src/components/views/Guests.vue","webpack://gstpln-webapp/./src/components/views/guests/GuestList.vue","webpack://gstpln-webapp/./src/components/views/guests/GuestList.vue?0183","webpack://gstpln-webapp/./src/components/views/guests/GuestList.vue?f84a","webpack://gstpln-webapp/./src/components/views/guests/GuestList.vue?0637","webpack://gstpln-webapp/./src/components/views/guests/GuestFilter.vue","webpack://gstpln-webapp/./src/components/views/guests/GuestFilter.vue?ab2e","webpack://gstpln-webapp/./src/components/views/guests/GuestFilter.vue?9478","webpack://gstpln-webapp/./src/components/views/guests/GuestFilter.vue?4325","webpack://gstpln-webapp/./src/components/views/guests/GuestFilterCompactBar.vue","webpack://gstpln-webapp/./src/components/views/guests/GuestFilterCompactBar.vue?f80b","webpack://gstpln-webapp/./src/components/views/guests/GuestFilterCompactBar.vue?cbbf","webpack://gstpln-webapp/./src/components/views/guests/GuestFilterCompactBar.vue?544e","webpack://gstpln-webapp/./src/components/views/main/ReservationsToolbar.vue","webpack://gstpln-webapp/./src/components/views/main/DayNoteBar.vue","webpack://gstpln-webapp/./src/components/views/main/DayNoteBar.vue?c503","webpack://gstpln-webapp/./src/components/views/main/DayNoteBar.vue?dae6","webpack://gstpln-webapp/./src/components/views/main/DayNoteBar.vue?a4d7","webpack://gstpln-webapp/./src/components/views/main/DayNoteEditDialog.vue","webpack://gstpln-webapp/./src/components/views/main/DayNoteEditDialog.vue?406f","webpack://gstpln-webapp/./src/components/views/main/DayNoteEditDialog.vue?fc55","webpack://gstpln-webapp/./src/components/views/main/DayNoteEditDialog.vue?5975","webpack://gstpln-webapp/./static/guests.mustache","webpack://gstpln-webapp/./src/components/views/main/ReservationsToolbar.vue?a712","webpack://gstpln-webapp/./src/components/views/main/ReservationsToolbar.vue?0e6d","webpack://gstpln-webapp/./src/components/views/main/ReservationsToolbar.vue?dbbc","webpack://gstpln-webapp/./src/mixins/keyboard-control.ts","webpack://gstpln-webapp/./src/components/views/guests/GuestListPlaceholder.vue","webpack://gstpln-webapp/./src/components/views/guests/GuestListPlaceholder.vue?daf9","webpack://gstpln-webapp/./src/components/views/guests/GuestListPlaceholder.vue?d5ab","webpack://gstpln-webapp/./src/components/views/guests/GuestListPlaceholder.vue?3dcc","webpack://gstpln-webapp/./src/components/views/Guests.vue?62ce","webpack://gstpln-webapp/./src/components/views/Guests.vue?75b9","webpack://gstpln-webapp/./src/components/views/Tables.vue","webpack://gstpln-webapp/./src/util/timetable-entities.ts","webpack://gstpln-webapp/./src/components/views/tables/TimeTableGrid.vue","webpack://gstpln-webapp/./src/components/views/tables/mixins/drag-drop.ts","webpack://gstpln-webapp/./src/components/views/tables/mixins/drag-new-reservation.ts","webpack://gstpln-webapp/./src/components/views/tables/mixins/day-part.ts","webpack://gstpln-webapp/./src/components/views/tables/TimeTableEvent.vue","webpack://gstpln-webapp/./src/components/views/tables/TimeTableEvent.vue?6a4e","webpack://gstpln-webapp/./src/components/views/tables/TimeTableEvent.vue?69b4","webpack://gstpln-webapp/./src/components/views/tables/TimeTableEvent.vue?0bcb","webpack://gstpln-webapp/./src/components/views/tables/TimeTableClosedSlot.vue","webpack://gstpln-webapp/./src/components/views/tables/TimeTableClosedSlot.vue?5c85","webpack://gstpln-webapp/./src/components/views/tables/TimeTableClosedSlot.vue?ce14","webpack://gstpln-webapp/./src/components/views/tables/TimeTableClosedSlot.vue?6adf","webpack://gstpln-webapp/./src/components/views/tables/TimeTableIndicator.vue","webpack://gstpln-webapp/./src/components/views/tables/TimeTableIndicator.vue?8fa2","webpack://gstpln-webapp/./src/components/views/tables/TimeTableIndicator.vue?fc7f","webpack://gstpln-webapp/./src/components/views/tables/TimeTableIndicator.vue?44e4","webpack://gstpln-webapp/./src/components/views/tables/TimeTableTooltip.vue","webpack://gstpln-webapp/./src/components/views/tables/TimeTableTooltip.vue?b05f","webpack://gstpln-webapp/./src/components/views/tables/TimeTableTooltip.vue?218c","webpack://gstpln-webapp/./src/components/views/tables/TimeTableTooltip.vue?5f13","webpack://gstpln-webapp/./src/components/views/tables/TimeTableGrid.vue?96a0","webpack://gstpln-webapp/./src/components/views/tables/TimeTableGrid.vue?3fee","webpack://gstpln-webapp/./src/components/views/tables/TimeTableGrid.vue?77a9","webpack://gstpln-webapp/./src/components/util/TableAllocationCTA.vue","webpack://gstpln-webapp/./src/components/util/TableAllocationCTA.vue?7625","webpack://gstpln-webapp/./src/components/util/TableAllocationCTA.vue?9d19","webpack://gstpln-webapp/./src/components/util/TableAllocationCTA.vue?adcb","webpack://gstpln-webapp/./src/components/views/Tables.vue?daa6","webpack://gstpln-webapp/./src/components/views/Tables.vue?1021","webpack://gstpln-webapp/./src/components/views/Tables.vue?5eda","webpack://gstpln-webapp/./src/components/views/Floor.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanViewSidebar.vue","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanViewSidebar.vue?acda","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanViewSidebar.vue?bb14","webpack://gstpln-webapp/./src/components/views/floorplan/FloorplanViewSidebar.vue?64a9","webpack://gstpln-webapp/./src/components/views/Floor.vue?b2dd","webpack://gstpln-webapp/./src/components/views/Floor.vue?c089","webpack://gstpln-webapp/./src/components/views/Floor.vue?054d","webpack://gstpln-webapp/./src/components/views/Login.vue","webpack://gstpln-webapp/./src/components/views/login/ResetPasswordDialog.vue","webpack://gstpln-webapp/./src/components/views/login/ResetPasswordDialog.vue?4c3b","webpack://gstpln-webapp/./src/components/views/login/ResetPasswordDialog.vue?3e86","webpack://gstpln-webapp/./src/components/views/login/ResetPasswordDialog.vue?27e1","webpack://gstpln-webapp/./src/components/views/login/CreateAccountDialog.vue","webpack://gstpln-webapp/./src/components/views/login/RegisterAccountStep.vue","webpack://gstpln-webapp/./src/components/forms/PasswordTextField.vue","webpack://gstpln-webapp/./src/components/forms/PasswordTextField.vue?c98c","webpack://gstpln-webapp/./src/components/forms/PasswordTextField.vue?938b","webpack://gstpln-webapp/./src/components/forms/PasswordTextField.vue?65e7","webpack://gstpln-webapp/./src/components/views/login/RegisterAccountStep.vue?2880","webpack://gstpln-webapp/./src/components/views/login/RegisterAccountStep.vue?1d83","webpack://gstpln-webapp/./src/components/views/login/RegisterAccountStep.vue?bfbb","webpack://gstpln-webapp/./src/components/views/login/VerifyAccountStep.vue","webpack://gstpln-webapp/./src/components/views/login/VerifyAccountStep.vue?bae9","webpack://gstpln-webapp/./src/components/views/login/VerifyAccountStep.vue?28fb","webpack://gstpln-webapp/./src/components/views/login/VerifyAccountStep.vue?8cb7","webpack://gstpln-webapp/./src/components/views/login/CreateAccountDialog.vue?ed07","webpack://gstpln-webapp/./src/components/views/login/CreateAccountDialog.vue?533d","webpack://gstpln-webapp/./src/components/views/login/CreateAccountDialog.vue?8852","webpack://gstpln-webapp/./src/components/views/Login.vue?d0ef","webpack://gstpln-webapp/./src/components/views/Login.vue?2860","webpack://gstpln-webapp/./src/components/views/Login.vue?051a","webpack://gstpln-webapp/./src/components/views/Account.vue","webpack://gstpln-webapp/./src/components/forms/ImagePreviewField.vue","webpack://gstpln-webapp/./src/components/forms/ImagePreviewField.vue?e794","webpack://gstpln-webapp/./src/components/forms/ImagePreviewField.vue?03a6","webpack://gstpln-webapp/./src/components/forms/ImagePreviewField.vue?5f65","webpack://gstpln-webapp/./src/composables/store-watch.ts","webpack://gstpln-webapp/./src/composables/unsaved-guard.ts","webpack://gstpln-webapp/./src/components/views/Account.vue?ea5e","webpack://gstpln-webapp/./src/components/views/Account.vue?e38c","webpack://gstpln-webapp/./src/components/views/Account.vue?24c2","webpack://gstpln-webapp/./src/components/views/AdvancedSettings.vue","webpack://gstpln-webapp/./src/components/views/settings/helpers/settings-values.ts","webpack://gstpln-webapp/./src/components/views/AdvancedSettings.vue?59fc","webpack://gstpln-webapp/./src/components/views/AdvancedSettings.vue?79a5","webpack://gstpln-webapp/./src/components/views/AdvancedSettings.vue?e85b","webpack://gstpln-webapp/./src/components/views/Users.vue","webpack://gstpln-webapp/./src/components/views/Users.vue?a8da","webpack://gstpln-webapp/./src/components/views/Users.vue?a60f","webpack://gstpln-webapp/./src/components/views/Users.vue?b7cb","webpack://gstpln-webapp/./src/components/views/User.vue","webpack://gstpln-webapp/./src/components/views/settings/ChangePasswordDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/ChangePasswordDialog.vue?9cb8","webpack://gstpln-webapp/./src/components/views/settings/ChangePasswordDialog.vue?94cb","webpack://gstpln-webapp/./src/components/views/settings/ChangePasswordDialog.vue?fd9f","webpack://gstpln-webapp/./src/components/views/User.vue?7ff4","webpack://gstpln-webapp/./src/components/views/User.vue?f2c4","webpack://gstpln-webapp/./src/components/views/User.vue?5e8a","webpack://gstpln-webapp/./src/components/views/Contacts.vue","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterDialog.vue","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterValueRow.vue","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterValueRow.vue?d636","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterValueRow.vue?040b","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterValueRow.vue?511e","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterDialog.vue?19f2","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterDialog.vue?a207","webpack://gstpln-webapp/./src/components/views/contacts/ContactsFilterDialog.vue?a3af","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeDialog.vue","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeRow.vue","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeRow.vue?4972","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeRow.vue?7da7","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeRow.vue?3bf0","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeDialog.vue?e516","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeDialog.vue?f6eb","webpack://gstpln-webapp/./src/components/views/contacts/ContactsMergeDialog.vue?0289","webpack://gstpln-webapp/./src/components/views/contacts/ContactFilterSelect.vue","webpack://gstpln-webapp/./src/components/views/contacts/ContactFilterSelect.vue?882a","webpack://gstpln-webapp/./src/components/views/contacts/ContactFilterSelect.vue?890d","webpack://gstpln-webapp/./src/components/views/contacts/ContactFilterSelect.vue?3e23","webpack://gstpln-webapp/./src/util/copy-name.ts","webpack://gstpln-webapp/./src/components/views/Contacts.vue?87b7","webpack://gstpln-webapp/./src/components/views/Contacts.vue?aafc","webpack://gstpln-webapp/./src/components/views/Contacts.vue?542f","webpack://gstpln-webapp/./src/components/views/TagNotes.vue","webpack://gstpln-webapp/./src/components/views/settings/SettingsList.vue","webpack://gstpln-webapp/./src/components/views/settings/SettingsList.vue?3292","webpack://gstpln-webapp/./src/components/views/settings/SettingsList.vue?75d4","webpack://gstpln-webapp/./src/components/views/settings/SettingsList.vue?c494","webpack://gstpln-webapp/./src/components/views/TagNotes.vue?9ecc","webpack://gstpln-webapp/./src/components/views/TagNotes.vue?1513","webpack://gstpln-webapp/./src/components/views/TagNotes.vue?2ef7","webpack://gstpln-webapp/./src/components/views/Employees.vue","webpack://gstpln-webapp/./src/components/views/Employees.vue?61e1","webpack://gstpln-webapp/./src/components/views/Employees.vue?14d3","webpack://gstpln-webapp/./src/components/views/Employees.vue?7144","webpack://gstpln-webapp/./src/components/views/Labels.vue","webpack://gstpln-webapp/./src/components/views/Labels.vue?2d82","webpack://gstpln-webapp/./src/components/views/Labels.vue?d1a5","webpack://gstpln-webapp/./src/components/views/Labels.vue?7318","webpack://gstpln-webapp/./src/components/views/OpeningHours.vue","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsGrid.vue","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsProfileDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsProfileDialog.vue?1dd6","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsProfileDialog.vue?332e","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsProfileDialog.vue?3d30","webpack://gstpln-webapp/./src/model/HourSlotProfile.ts","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsGrid.vue?4bd6","webpack://gstpln-webapp/./src/components/views/settings/TabAllocationsDialog.vue?520d","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsGrid.vue?0661","webpack://gstpln-webapp/./src/components/views/settings/HourSlotsGrid.vue?cf6f","webpack://gstpln-webapp/./src/components/forms/SettingsButtonBlock.vue","webpack://gstpln-webapp/./src/components/forms/SettingsButtonBlock.vue?45a5","webpack://gstpln-webapp/./src/components/forms/SettingsButtonBlock.vue?cf95","webpack://gstpln-webapp/./src/components/forms/SettingsButtonBlock.vue?cb7d","webpack://gstpln-webapp/./src/components/views/OpeningHours.vue?a4a2","webpack://gstpln-webapp/./src/components/views/OpeningHours.vue?cc26","webpack://gstpln-webapp/./src/components/views/OpeningHours.vue?6681","webpack://gstpln-webapp/./src/components/views/SimpleOpeningHours.vue","webpack://gstpln-webapp/./src/components/views/SimpleOpeningHours.vue?98ec","webpack://gstpln-webapp/./src/components/views/SimpleOpeningHours.vue?a40b","webpack://gstpln-webapp/./src/components/views/SimpleOpeningHours.vue?7c4e","webpack://gstpln-webapp/./src/components/views/Sections.vue","webpack://gstpln-webapp/./src/components/views/Sections.vue?cdfc","webpack://gstpln-webapp/./src/components/views/Sections.vue?3372","webpack://gstpln-webapp/./src/components/views/Sections.vue?54af","webpack://gstpln-webapp/./src/components/views/Section.vue","webpack://gstpln-webapp/./src/components/views/settings/DurationRulesDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/EditDurationRuleDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/EditDurationRuleDialog.vue?387a","webpack://gstpln-webapp/./src/components/views/settings/EditDurationRuleDialog.vue?3ec0","webpack://gstpln-webapp/./src/components/views/settings/EditDurationRuleDialog.vue?1c95","webpack://gstpln-webapp/./src/components/views/settings/DurationRulesDialog.vue?4134","webpack://gstpln-webapp/./src/components/views/settings/DurationRulesDialog.vue?32f6","webpack://gstpln-webapp/./src/components/views/settings/DurationRulesDialog.vue?7cbd","webpack://gstpln-webapp/./src/components/views/settings/TabAllocationsDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/GuestsAllocationsDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/GuestsAllocationsDialog.vue?6f9a","webpack://gstpln-webapp/./src/components/views/settings/GuestsAllocationsDialog.vue?48f9","webpack://gstpln-webapp/./src/components/views/settings/GuestsAllocationsDialog.vue?e50f","webpack://gstpln-webapp/./src/components/views/settings/TableCombinationDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/TabItemAllocationRow.vue","webpack://gstpln-webapp/./src/components/views/settings/TabItemAllocationRow.vue?75ab","webpack://gstpln-webapp/./src/components/views/settings/TabItemAllocationRow.vue?fcb3","webpack://gstpln-webapp/./src/components/views/settings/TabItemAllocationRow.vue?e4ce","webpack://gstpln-webapp/./src/components/views/settings/TableCombinationDialog.vue?0b0b","webpack://gstpln-webapp/./src/components/views/settings/TableCombinationDialog.vue?0617","webpack://gstpln-webapp/./src/components/views/settings/TableCombinationDialog.vue?c0dd","webpack://gstpln-webapp/./src/components/views/settings/TabAllocationsDialog.vue?f741","webpack://gstpln-webapp/./src/components/views/settings/TabAllocationsDialog.vue?6230","webpack://gstpln-webapp/./src/components/views/Section.vue?3742","webpack://gstpln-webapp/./src/components/views/Section.vue?82e9","webpack://gstpln-webapp/./src/components/views/Section.vue?f953","webpack://gstpln-webapp/./src/components/views/OnlineSettings.vue","webpack://gstpln-webapp/./src/components/views/settings/WebsiteQrDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/WebsiteQrDialog.vue?9688","webpack://gstpln-webapp/./src/components/views/settings/WebsiteQrDialog.vue?6e68","webpack://gstpln-webapp/./src/components/views/settings/WebsiteQrDialog.vue?23c6","webpack://gstpln-webapp/./src/components/buttons/PaywallSwitch.vue","webpack://gstpln-webapp/./src/components/buttons/PaywallSwitch.vue?0be7","webpack://gstpln-webapp/./src/components/buttons/PaywallSwitch.vue?6fdb","webpack://gstpln-webapp/./src/components/buttons/PaywallSwitch.vue?77ea","webpack://gstpln-webapp/./src/components/views/OnlineSettings.vue?0a98","webpack://gstpln-webapp/./src/components/views/OnlineSettings.vue?8985","webpack://gstpln-webapp/./src/components/views/OnlineSettings.vue?5951","webpack://gstpln-webapp/./src/components/views/ServiceManager.vue","webpack://gstpln-webapp/./src/components/views/ServiceManager.vue?316b","webpack://gstpln-webapp/./src/components/views/ServiceManager.vue?3d8d","webpack://gstpln-webapp/./src/components/views/ServiceManager.vue?f99e","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerEditor.vue","webpack://gstpln-webapp/./src/components/forms/AmountField.vue","webpack://gstpln-webapp/./src/components/forms/AmountField.vue?7565","webpack://gstpln-webapp/./src/components/forms/AmountField.vue?4fd5","webpack://gstpln-webapp/./src/components/forms/AmountField.vue?a8e3","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerConditionalPanel.vue","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerConditionalPanel.vue?399a","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerConditionalPanel.vue?ea8b","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerConditionalPanel.vue?6b62","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerEditor.vue?070c","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerEditor.vue?f922","webpack://gstpln-webapp/./src/components/views/settings/servicemanager/ServiceManagerEditor.vue?60c5","webpack://gstpln-webapp/./src/components/views/Sms.vue","webpack://gstpln-webapp/./src/components/views/settings/SmsBalanceChart.vue","webpack://gstpln-webapp/./src/components/views/settings/SmsBalanceChart.vue?3e43","webpack://gstpln-webapp/./src/components/views/settings/SmsBalanceChart.vue?f2f0","webpack://gstpln-webapp/./src/components/views/settings/SmsBalanceChart.vue?1158","webpack://gstpln-webapp/./src/components/views/Sms.vue?d464","webpack://gstpln-webapp/./src/components/views/Sms.vue?f17e","webpack://gstpln-webapp/./src/components/views/Sms.vue?d022","webpack://gstpln-webapp/./src/components/views/Settings.vue","webpack://gstpln-webapp/./src/components/views/Settings.vue?0bbf","webpack://gstpln-webapp/./src/components/views/Settings.vue?131c","webpack://gstpln-webapp/./src/components/views/Settings.vue?475d","webpack://gstpln-webapp/./src/components/views/SpecialHours.vue","webpack://gstpln-webapp/./src/components/views/SpecialHours.vue?e10b","webpack://gstpln-webapp/./src/components/views/SpecialHours.vue?73cf","webpack://gstpln-webapp/./src/components/views/SpecialHours.vue?700f","webpack://gstpln-webapp/./src/components/views/MessageCenter.vue","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterRulesTable.vue","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterRulesTable.vue?65bc","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterRulesTable.vue?10d7","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterRulesTable.vue?6d97","webpack://gstpln-webapp/./src/components/views/MessageCenter.vue?0938","webpack://gstpln-webapp/./src/components/views/MessageCenter.vue?8141","webpack://gstpln-webapp/./src/components/views/MessageCenter.vue?6e5d","webpack://gstpln-webapp/./src/components/views/Dashboard.vue","webpack://gstpln-webapp/./src/components/views/dashboard/HourlyGuestsCard.vue","webpack://gstpln-webapp/./src/components/views/dashboard/HourlyGuestsCard.vue?208a","webpack://gstpln-webapp/./src/components/views/dashboard/HourlyGuestsCard.vue?97ae","webpack://gstpln-webapp/./src/components/views/dashboard/HourlyGuestsCard.vue?a473","webpack://gstpln-webapp/./src/components/views/dashboard/NumericListCard.vue","webpack://gstpln-webapp/./src/components/views/dashboard/NumericListCard.vue?0c71","webpack://gstpln-webapp/./src/components/views/dashboard/NumericListCard.vue?ffba","webpack://gstpln-webapp/./src/components/views/dashboard/NumericListCard.vue?83e3","webpack://gstpln-webapp/./src/components/views/dashboard/AvailablePartySizeCard.vue","webpack://gstpln-webapp/./src/components/views/dashboard/AvailablePartySizeCard.vue?a3b1","webpack://gstpln-webapp/./src/components/views/dashboard/AvailablePartySizeCard.vue?1aa9","webpack://gstpln-webapp/./src/components/views/dashboard/AvailablePartySizeCard.vue?f2b4","webpack://gstpln-webapp/./src/components/views/Dashboard.vue?5fb1","webpack://gstpln-webapp/./src/components/views/Dashboard.vue?2eb2","webpack://gstpln-webapp/./src/components/views/Dashboard.vue?79eb","webpack://gstpln-webapp/./src/components/views/ReportReservations.vue","webpack://gstpln-webapp/./src/components/views/reports/SimpleLineChart.vue","webpack://gstpln-webapp/./src/components/views/reports/SimpleLineChart.vue?8a14","webpack://gstpln-webapp/./src/components/views/reports/SimpleLineChart.vue?1e58","webpack://gstpln-webapp/./src/components/views/reports/SimpleLineChart.vue?6128","webpack://gstpln-webapp/./src/components/views/reports/StackedLineChart.vue","webpack://gstpln-webapp/./src/components/views/reports/StackedLineChart.vue?328e","webpack://gstpln-webapp/./src/components/views/reports/StackedLineChart.vue?f9c2","webpack://gstpln-webapp/./src/components/views/reports/StackedLineChart.vue?96d9","webpack://gstpln-webapp/./src/components/views/reports/MiniDataChart.vue","webpack://gstpln-webapp/./src/components/views/reports/MiniDataChart.vue?2853","webpack://gstpln-webapp/./src/components/views/reports/MiniDataChart.vue?af94","webpack://gstpln-webapp/./src/components/views/reports/MiniDataChart.vue?4592","webpack://gstpln-webapp/./src/components/views/reports/ReportsToolbar.vue","webpack://gstpln-webapp/./src/components/views/reports/ReportsToolbar.vue?236a","webpack://gstpln-webapp/./src/components/views/reports/ReportsToolbar.vue?6634","webpack://gstpln-webapp/./src/components/views/reports/ReportsToolbar.vue?1df2","webpack://gstpln-webapp/./src/components/views/ReportReservations.vue?0f5c","webpack://gstpln-webapp/./src/components/views/ReportReservations.vue?96fc","webpack://gstpln-webapp/./src/components/views/ReportReservations.vue?9c41","webpack://gstpln-webapp/./src/components/views/ReportServices.vue","webpack://gstpln-webapp/./src/components/views/reports/MiniPieChart.vue","webpack://gstpln-webapp/./src/components/views/reports/MiniPieChart.vue?4cd9","webpack://gstpln-webapp/./src/components/views/reports/MiniPieChart.vue?0656","webpack://gstpln-webapp/./src/components/views/reports/MiniPieChart.vue?6c9c","webpack://gstpln-webapp/./src/components/views/reports/ServicesRevenueChart.vue","webpack://gstpln-webapp/./src/components/views/reports/ServicesRevenueChart.vue?45e9","webpack://gstpln-webapp/./src/components/views/reports/ServicesRevenueChart.vue?c84e","webpack://gstpln-webapp/./src/components/views/reports/ServicesRevenueChart.vue?de58","webpack://gstpln-webapp/./src/components/views/ReportServices.vue?161a","webpack://gstpln-webapp/./src/components/views/ReportServices.vue?3e47","webpack://gstpln-webapp/./src/components/views/ReportServices.vue?5cb4","webpack://gstpln-webapp/./src/components/views/ReportWeekdays.vue","webpack://gstpln-webapp/./src/components/views/reports/WeekdaysBarChart.vue","webpack://gstpln-webapp/./src/components/views/reports/WeekdaysBarChart.vue?0762","webpack://gstpln-webapp/./src/components/views/reports/WeekdaysBarChart.vue?4c32","webpack://gstpln-webapp/./src/components/views/reports/WeekdaysBarChart.vue?02d7","webpack://gstpln-webapp/./src/components/views/reports/AvgGuestsWeekdayChart.vue","webpack://gstpln-webapp/./src/components/views/reports/ChartHelpTooltip.vue","webpack://gstpln-webapp/./src/components/views/reports/ChartHelpTooltip.vue?ab88","webpack://gstpln-webapp/./src/components/views/reports/ChartHelpTooltip.vue?27a4","webpack://gstpln-webapp/./src/components/views/reports/ChartHelpTooltip.vue?03f1","webpack://gstpln-webapp/./src/components/views/reports/AvgGuestsWeekdayChart.vue?553e","webpack://gstpln-webapp/./src/components/views/reports/AvgGuestsWeekdayChart.vue?bddb","webpack://gstpln-webapp/./src/components/views/reports/AvgGuestsWeekdayChart.vue?cfa2","webpack://gstpln-webapp/./src/components/views/ReportWeekdays.vue?9891","webpack://gstpln-webapp/./src/components/views/ReportWeekdays.vue?4116","webpack://gstpln-webapp/./src/components/views/ReportWeekdays.vue?fff3","webpack://gstpln-webapp/./src/components/views/ReportFeedback.vue","webpack://gstpln-webapp/./src/components/views/reports/RatingsBarChart.vue","webpack://gstpln-webapp/./src/components/views/reports/RatingsBarChart.vue?ceb0","webpack://gstpln-webapp/./src/components/views/reports/RatingsBarChart.vue?0045","webpack://gstpln-webapp/./src/components/views/reports/RatingsBarChart.vue?b6e7","webpack://gstpln-webapp/./src/services/reports-feedback-utils.ts","webpack://gstpln-webapp/./src/components/views/ReportFeedback.vue?d133","webpack://gstpln-webapp/./src/components/views/ReportFeedback.vue?927d","webpack://gstpln-webapp/./src/components/views/ReportFeedback.vue?841d","webpack://gstpln-webapp/./src/components/views/ReportMessages.vue","webpack://gstpln-webapp/./src/components/views/ReportMessages.vue?8eac","webpack://gstpln-webapp/./src/components/views/ReportMessages.vue?9355","webpack://gstpln-webapp/./src/components/views/ReportMessages.vue?dc26","webpack://gstpln-webapp/./src/components/views/Search.vue","webpack://gstpln-webapp/./src/components/views/Search.vue?5386","webpack://gstpln-webapp/./src/components/views/Search.vue?1fcb","webpack://gstpln-webapp/./src/components/views/Search.vue?1b96","webpack://gstpln-webapp/./src/components/views/MessageCenterRuleEditor.vue","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterTemplateDialog.vue","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterTemplateDialog.vue?fd35","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterTemplateDialog.vue?565e","webpack://gstpln-webapp/./src/components/views/settings/MessageCenterTemplateDialog.vue?6f9d","webpack://gstpln-webapp/./src/components/views/MessageCenterRuleEditor.vue?43a4","webpack://gstpln-webapp/./src/components/views/MessageCenterRuleEditor.vue?9503","webpack://gstpln-webapp/./src/components/views/MessageCenterRuleEditor.vue?47b1","webpack://gstpln-webapp/./src/components/views/UnreadReservations.vue","webpack://gstpln-webapp/./src/components/views/UnreadReservations.vue?f464","webpack://gstpln-webapp/./src/components/views/UnreadReservations.vue?7cd4","webpack://gstpln-webapp/./src/components/views/UnreadReservations.vue?8887","webpack://gstpln-webapp/./src/components/views/PwaInfo.vue","webpack://gstpln-webapp/./src/composables/pwa.ts","webpack://gstpln-webapp/./src/components/views/PwaInfo.vue?6f99","webpack://gstpln-webapp/./src/components/views/PwaInfo.vue?677e","webpack://gstpln-webapp/./src/components/views/PwaInfo.vue?973b","webpack://gstpln-webapp/./src/components/views/Feedback.vue","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingChip.vue","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingChip.vue?aed5","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingChip.vue?5944","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingChip.vue?6ff7","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingSelect.vue","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingSelect.vue?478e","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingSelect.vue?a0db","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackRatingSelect.vue?01e9","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackDetailsDialog.vue","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackDetailsDialog.vue?d360","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackDetailsDialog.vue?9471","webpack://gstpln-webapp/./src/components/views/feedback/FeedbackDetailsDialog.vue?9570","webpack://gstpln-webapp/./src/services/repeatable-timer.ts","webpack://gstpln-webapp/./src/components/views/Feedback.vue?2303","webpack://gstpln-webapp/./src/components/views/Feedback.vue?e340","webpack://gstpln-webapp/./src/components/views/Feedback.vue?34d4","webpack://gstpln-webapp/./src/components/views/settings/Feedback.vue","webpack://gstpln-webapp/./src/components/views/settings/Feedback.vue?cb38","webpack://gstpln-webapp/./src/components/views/settings/Feedback.vue?7728","webpack://gstpln-webapp/./src/components/views/settings/Feedback.vue?0939","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaigns.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignDetailsDialog.vue","webpack://gstpln-webapp/./src/components/util/HtmlImage.vue","webpack://gstpln-webapp/./src/components/util/HtmlImage.vue?8898","webpack://gstpln-webapp/./src/components/util/HtmlImage.vue?a817","webpack://gstpln-webapp/./src/components/util/HtmlImage.vue?0271","webpack://gstpln-webapp/./src/components/views/newsletter/EmailPreviewFrame.vue","webpack://gstpln-webapp/./src/components/views/newsletter/EmailPreviewFrame.vue?99bd","webpack://gstpln-webapp/./src/components/views/newsletter/EmailPreviewFrame.vue?87ca","webpack://gstpln-webapp/./src/components/views/newsletter/EmailPreviewFrame.vue?5e03","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterFunnelChart.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterResultsCard.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterResultsCard.vue?f5c6","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterResultsCard.vue?c188","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterResultsCard.vue?f80d","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterFunnelChart.vue?e739","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterFunnelChart.vue?2c09","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterFunnelChart.vue?4f6b","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterGaugeChart.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterGaugeChart.vue?94a4","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterGaugeChart.vue?2b75","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterGaugeChart.vue?e69c","webpack://gstpln-webapp/./src/components/views/newsletter/newsletter.ts","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignDetailsDialog.vue?5c00","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignDetailsDialog.vue?eb6b","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignDetailsDialog.vue?5f65","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterQuotaBar.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterQuotaBar.vue?f1e8","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterQuotaBar.vue?93fa","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterQuotaBar.vue?dbf0","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaigns.vue?40c0","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaigns.vue?8d87","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaigns.vue?6065","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignCompose.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateEditorDialog.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateEditorDialog.vue?8b98","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateEditorDialog.vue?d71c","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateEditorDialog.vue?cae7","webpack://gstpln-webapp/./src/components/views/newsletter/TemplateGridView.vue","webpack://gstpln-webapp/./src/components/views/newsletter/TemplateGridView.vue?6c15","webpack://gstpln-webapp/./src/components/views/newsletter/TemplateGridView.vue?0f05","webpack://gstpln-webapp/./src/components/views/newsletter/TemplateGridView.vue?a671","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTestEmailRecipientsDialog.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTestEmailRecipientsDialog.vue?c2f9","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTestEmailRecipientsDialog.vue?cce1","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTestEmailRecipientsDialog.vue?5005","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignCompose.vue?ff8c","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignCompose.vue?4870","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterCampaignCompose.vue?0968","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateLibrary.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateLibrary.vue?d7d6","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateLibrary.vue?6c6e","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterTemplateLibrary.vue?8b47","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterSettings.vue","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterSettings.vue?f9e1","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterSettings.vue?7228","webpack://gstpln-webapp/./src/components/views/newsletter/NewsletterSettings.vue?d145","webpack://gstpln-webapp/./src/components/views/Apps.vue","webpack://gstpln-webapp/./src/components/views/settings/apps/AppCard.vue","webpack://gstpln-webapp/./src/components/views/settings/apps/AppCard.vue?8a95","webpack://gstpln-webapp/./src/components/views/settings/apps/AppCard.vue?7a4c","webpack://gstpln-webapp/./src/components/views/settings/apps/AppCard.vue?72bb","webpack://gstpln-webapp/./src/components/views/Apps.vue?3260","webpack://gstpln-webapp/./src/components/views/Apps.vue?0e99","webpack://gstpln-webapp/./src/components/views/Apps.vue?e5de","webpack://gstpln-webapp/./src/router.ts","webpack://gstpln-webapp/./src/services/autodarkmode.ts","webpack://gstpln-webapp/./src/services/autoupdater.ts","webpack://gstpln-webapp/./src/services/billing-utils.ts","webpack://gstpln-webapp/./src/services/color-utils.ts","webpack://gstpln-webapp/./src/services/common.ts","webpack://gstpln-webapp/./src/services/configuration.ts","webpack://gstpln-webapp/./src/services/contact-search.ts","webpack://gstpln-webapp/./src/services/date-range.ts","webpack://gstpln-webapp/./src/services/filter/filter-convert.ts","webpack://gstpln-webapp/./src/services/filter/filter-descriptor.ts","webpack://gstpln-webapp/./src/services/filter/filter-rule-date-operation.ts","webpack://gstpln-webapp/./src/services/filter/filter-rule-operation.ts","webpack://gstpln-webapp/./src/services/filter/filter-rule.ts","webpack://gstpln-webapp/./src/services/filter/filter.ts","webpack://gstpln-webapp/./src/services/hours-utils.ts","webpack://gstpln-webapp/./src/services/local-storage.ts","webpack://gstpln-webapp/./src/services/messages.ts","webpack://gstpln-webapp/./src/services/module-loader.ts","webpack://gstpln-webapp/./src/services/now-updater.ts","webpack://gstpln-webapp/./src/services/payment-wizard-utils.ts","webpack://gstpln-webapp/./src/services/reports-cache.ts","webpack://gstpln-webapp/./src/services/reports-utils.ts","webpack://gstpln-webapp/./src/services/reports.ts","webpack://gstpln-webapp/./src/services/reservation-edit-utils.ts","webpack://gstpln-webapp/./src/services/reservation-utils.ts","webpack://gstpln-webapp/./src/services/reservation-validation.ts","webpack://gstpln-webapp/./src/services/reservations-utils.ts","webpack://gstpln-webapp/./src/services/search.ts","webpack://gstpln-webapp/./src/services/time-utils.ts","webpack://gstpln-webapp/./src/services/timer.ts","webpack://gstpln-webapp/./src/services/timestlot-utils.ts","webpack://gstpln-webapp/./src/services/vue-utils.ts","webpack://gstpln-webapp/./src/store/allocations-store.ts","webpack://gstpln-webapp/./src/store/billing-store.ts","webpack://gstpln-webapp/./src/store/campaign-filter-store.ts","webpack://gstpln-webapp/./src/store/dashboard-store.ts","webpack://gstpln-webapp/./src/store/feedback-store.ts","webpack://gstpln-webapp/./src/store/giftcards-store.ts","webpack://gstpln-webapp/./src/grpc-api/model/employee.ts","webpack://gstpln-webapp/./src/store/guestbook-store.ts","webpack://gstpln-webapp/./src/store/marketing-campaign-manager-store.ts","webpack://gstpln-webapp/./src/model/MessageEventType.ts","webpack://gstpln-webapp/./src/model/MessageHandlebar.ts","webpack://gstpln-webapp/./src/store/message-center-store.ts","webpack://gstpln-webapp/./src/store/reports-store.ts","webpack://gstpln-webapp/./src/store/service-manager-store.ts","webpack://gstpln-webapp/./src/model/UserAccount.ts","webpack://gstpln-webapp/./src/store/session-store.ts","webpack://gstpln-webapp/./src/services/store-utils.ts","webpack://gstpln-webapp/./src/store/update-store.ts","webpack://gstpln-webapp/./src/model/DateSlot.ts","webpack://gstpln-webapp/./src/model/date-slot-utils.ts","webpack://gstpln-webapp/./src/store/reservations-store.ts","webpack://gstpln-webapp/./src/model/Locale.ts","webpack://gstpln-webapp/./src/model/TimeZone.ts","webpack://gstpln-webapp/./src/store/codes-store.ts","webpack://gstpln-webapp/./src/api/api-floorplan.ts","webpack://gstpln-webapp/./src/store/settings-store.ts","webpack://gstpln-webapp/./src/store/autoupdate-store.ts","webpack://gstpln-webapp/./src/store/filter-store.ts","webpack://gstpln-webapp/./src/store/search-store.ts","webpack://gstpln-webapp/./src/store/reservation-store.ts","webpack://gstpln-webapp/./src/store/reservation-suggestions-store.ts","webpack://gstpln-webapp/./src/services/drag-drop-utils.ts","webpack://gstpln-webapp/./src/store/drag-drop-store.ts","webpack://gstpln-webapp/./src/store/pushupdate-store.ts","webpack://gstpln-webapp/./src/store/store.ts","webpack://gstpln-webapp/./src/util/apps.ts","webpack://gstpln-webapp/./src/util/common.ts","webpack://gstpln-webapp/./src/util/menu.ts","webpack://gstpln-webapp/./src/util/status.ts","webpack://gstpln-webapp/./src/grpc-pb/app_pb.js","webpack://gstpln-webapp/./src/grpc-pb/apps_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/apps_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/campaign_pb.js","webpack://gstpln-webapp/./src/grpc-pb/contact_filter_pb.js","webpack://gstpln-webapp/./src/grpc-pb/contact_manager_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/contact_manager_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/contact_pb.js","webpack://gstpln-webapp/./src/grpc-pb/currency_pb.js","webpack://gstpln-webapp/./src/grpc-pb/dashboard_pb.js","webpack://gstpln-webapp/./src/grpc-pb/dashboard_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/dashboard_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/employee_pb.js","webpack://gstpln-webapp/./src/grpc-pb/empty_pb.js","webpack://gstpln-webapp/./src/grpc-pb/feedback_pb.js","webpack://gstpln-webapp/./src/grpc-pb/feedback_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/feedback_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/feedback_settings_pb.js","webpack://gstpln-webapp/./src/grpc-pb/giftcard_pb.js","webpack://gstpln-webapp/./src/grpc-pb/giftcard_product_pb.js","webpack://gstpln-webapp/./src/grpc-pb/giftcard_transaction_pb.js","webpack://gstpln-webapp/./src/grpc-pb/giftcards_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/giftcards_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/history_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/history_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/html_template_pb.js","webpack://gstpln-webapp/./src/grpc-pb/html_template_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/html_template_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/marketing_campaign_manager_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/marketing_campaign_manager_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/marketing_campaign_pb.js","webpack://gstpln-webapp/./src/grpc-pb/marketing_campaign_settings_pb.js","webpack://gstpln-webapp/./src/grpc-pb/message_pb.js","webpack://gstpln-webapp/./src/grpc-pb/message_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/message_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/reorder_pb.js","webpack://gstpln-webapp/./src/grpc-pb/reports_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/reports_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/reservation_pb.js","webpack://gstpln-webapp/./src/grpc-pb/reservation_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/service_manager_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/service_manager_service_pb.js","webpack://gstpln-webapp/./src/grpc-pb/settings_service_grpc_web_pb.js","webpack://gstpln-webapp/./src/grpc-pb/settings_service_pb.js","webpack://gstpln-webapp/./src/locales/ sync [A-Za-z0-9-_,\\s]+\\.json$i","webpack://gstpln-webapp/webpack/bootstrap","webpack://gstpln-webapp/webpack/runtime/chunk loaded","webpack://gstpln-webapp/webpack/runtime/compat get default export","webpack://gstpln-webapp/webpack/runtime/define property getters","webpack://gstpln-webapp/webpack/runtime/ensure chunk","webpack://gstpln-webapp/webpack/runtime/get javascript chunk filename","webpack://gstpln-webapp/webpack/runtime/get mini-css chunk filename","webpack://gstpln-webapp/webpack/runtime/global","webpack://gstpln-webapp/webpack/runtime/hasOwnProperty shorthand","webpack://gstpln-webapp/webpack/runtime/load script","webpack://gstpln-webapp/webpack/runtime/make namespace object","webpack://gstpln-webapp/webpack/runtime/node module decorator","webpack://gstpln-webapp/webpack/runtime/publicPath","webpack://gstpln-webapp/webpack/runtime/css loading","webpack://gstpln-webapp/webpack/runtime/jsonp chunk loading","webpack://gstpln-webapp/webpack/runtime/nonce","webpack://gstpln-webapp/webpack/startup"],"sourcesContent":["var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_setup.upgradeDialog)?_c(_setup.PaywallUpgradeDialog,{attrs:{\"plans\":_vm.plans},on:{\"close\":function($event){_setup.upgradeDialog=false}}}):_vm._e(),(!_vm.unlocked)?_c('v-badge',{staticClass:\"paywall-badge\",attrs:{\"hidden\":\"\",\"overlap\":\"\",\"icon\":\"mdi-lock\",\"color\":_setup.badgeColor}},[_c('v-btn',_vm._b({attrs:{\"disabled\":_vm.disabled},on:{\"click\":_setup.click}},'v-btn',_vm.$attrs,false),[_vm._t(\"default\")],2)],1):_c('v-btn',_vm._b({attrs:{\"disabled\":_vm.disabled},on:{\"click\":_setup.click}},'v-btn',_vm.$attrs,false),[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, PropType, ref } from 'vue';\nimport PaywallUpgradeDialog from '@/components/dialogs/PaywallUpgradeDialog.vue';\nimport { useVuetify } from '../helpers/vue2-helpers';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaywallButton',\n props: {\n unlocked: { type: Boolean, required: true },\n disabled: { type: Boolean, required: false, default: false },\n plans: { type: Array as PropType<('pro' | 'business' | 'ultimate')[]>, required: false, default: () => undefined },\n},\n emits: ['click'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst vuetify = useVuetify();\n\n\n\n\n\nconst upgradeDialog = ref(false);\n\nconst click = () => {\n if (props.unlocked) {\n emit('click');\n return;\n }\n upgradeDialog.value = true;\n};\n\nconst badgeColor = computed(() => {\n if (!props.disabled) return 'red';\n if (vuetify.theme.dark) return 'grey darken-3';\n return 'grey lighten-1';\n});\n\n\nreturn { __sfc: true,vuetify, props, emit, upgradeDialog, click, badgeColor, PaywallUpgradeDialog }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaywallButton.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaywallButton.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaywallButton.vue?vue&type=template&id=e3bb0904&\"\nimport script from \"./PaywallButton.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaywallButton.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./PaywallButton.vue?vue&type=style&index=0&id=e3bb0904&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"persistent\":\"\",\"width\":\"450\",\"max-width\":\"550\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onClick(0)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.disableEsc ? null : _vm.onClick(1)}]},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"text-h5\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('v-card-text',[(_vm.message)?_vm._l((_vm.message.split('\\n')),function(text,index){return _c('div',{key:index},[_vm._v(\" \"+_vm._s(text)+\" \")])}):_vm._e(),_vm._t(\"default\")],2),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":_vm.confirmColor},on:{\"click\":function($event){return _vm.onClick(0)}}},[_vm._v(\" \"+_vm._s(_vm.confirmTitle || _vm.$t('button.yes'))+\" \")]),(!_vm.hideCancel)?_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":function($event){return _vm.onClick(1)}}},[_vm._v(\" \"+_vm._s(_vm.cancelTitle || _vm.$t('button.cancel'))+\" \")]):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport DialogClosable from '@/mixins/dialog-closable';\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'ConfirmationDialog',\n mixins: [DialogClosable],\n props: {\n title: { type: String as PropType, required: true },\n message: { type: String as PropType, required: false, default: undefined },\n confirmTitle: { type: String as PropType, required: true },\n confirmColor: { type: String as PropType, required: false, default: 'success' },\n cancelTitle: { type: String as PropType, required: true },\n hideCancel: { type: Boolean, required: false, default: false },\n disableEsc: { type: Boolean, required: false, default: false },\n },\n data: () => ({ }),\n methods: {\n onClick(ret: number) {\n switch (ret) {\n case 0:\n this.$emit('confirm');\n break;\n case 1:\n this.$emit('cancel');\n break;\n default:\n break;\n }\n this.$emit('close', true);\n },\n },\n});\n\nexport interface ConfirmationDialogData {\n // visible: boolean,\n title: string,\n message: string,\n confirmTitle: string,\n cancelTitle: string,\n confirm: () => void,\n // cancel: () => void,\n // close: () => void,\n}\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConfirmationDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ConfirmationDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ConfirmationDialog.vue?vue&type=template&id=72ab68e4&\"\nimport script from \"./ConfirmationDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ConfirmationDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-edit-dialog',{ref:\"dialog\",scopedSlots:_vm._u([{key:\"input\",fn:function(){return [_c('validation-provider',{attrs:{\"rules\":_vm.rules},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [(_vm.type === 'select')?_c('v-select',{attrs:{\"value\":_vm.value,\"items\":_vm.items,\"error-messages\":errors,\"label\":_vm.label},on:{\"input\":_vm.updateValue,\"change\":_vm.updateValue}}):_c('v-text-field',{attrs:{\"value\":_vm.value,\"label\":_vm.label,\"error-messages\":errors,\"single-line\":\"\"},on:{\"change\":_vm.updateValue}})]}}])})]},proxy:true}]),model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('validation-provider',{attrs:{\"rules\":_vm.rules},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('input',{attrs:{\"type\":\"hidden\"},domProps:{\"value\":_vm.value}}),_c('span',{},[_vm._v(_vm._s(_vm.value))]),_c('v-icon',{staticClass:\"ml-2 mr-2\",staticStyle:{\"cursor\":\"edit\"},attrs:{\"small\":\"\"}},[_vm._v(\" mdi-lead-pencil \")]),_c('span',{staticClass:\"flex-item text-caption error--text\"},[_vm._v(_vm._s(errors[0]))])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'DataTableInputDialog',\n props: {\n type: { type: String, default: 'input' },\n items: { type: Array, default: () => [] as Array },\n rules: { type: String, default: '' },\n label: { type: String, default: '' },\n value: { type: String, required: true },\n },\n data() {\n return {\n dialog: false,\n };\n },\n watch: {\n dialog(val: boolean) {\n if (!val) { this.$emit('input', this.value); }\n },\n },\n methods: {\n updateValue(value: string) {\n this.$emit('input', value);\n // Auto dismiss on selected value in combobox\n if (this.type === 'select') {\n (this.$refs.dialog as Vue & { save: (val: any)=>void }).save(value);\n }\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DataTableInputDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DataTableInputDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DataTableInputDialog.vue?vue&type=template&id=eeaaa508&\"\nimport script from \"./DataTableInputDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./DataTableInputDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, ref, watch,\n} from 'vue';\nimport { Cropper } from 'vue-advanced-cropper';\nimport { v4 as uuidv4 } from 'uuid';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\nimport i18n from '@/plugins/i18n';\nimport { TranslateResult } from 'vue-i18n';\nimport Pica from 'pica';\n// eslint-disable-next-line import/no-unresolved\nimport 'vue-advanced-cropper/dist/style.css';\n\ninterface UploadedFile {\n file: File;\n}\n\nenum UploadDialogMode {\n PREVIEW,\n UPLOAD_FORM,\n EDIT\n}\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImageUploadDialog',\n props: {\n title: { type: [String, Object] as PropType, required: false, default: '' },\n imageSrc: { type: String, required: false, default: '' },\n filenamePrefix: { type: String, required: false, default: 'img' },\n helpLabel: { type: [String, Object] as PropType, required: true },\n deleteConfirmationLabel: { type: [String, Object] as PropType, required: true },\n stencilProps: { type: Object, required: false, default: () => {} },\n maxWidth: { type: Number, required: false, default: 0 },\n },\n emits: ['close', 'change'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst cropperRef = ref>();\n\nconst previewImage = ref('');\n\nconst fileRecords = ref([] as UploadedFile[]);\n\nconst mode = ref(props.imageSrc.length === 0 ? UploadDialogMode.UPLOAD_FORM : UploadDialogMode.PREVIEW);\n\nwatch(fileRecords, () => {\n if (!fileRecords.value || fileRecords.value.length === 0) {\n return;\n }\n previewImage.value = URL.createObjectURL(fileRecords.value[0].file);\n mode.value = UploadDialogMode.EDIT;\n});\n\n//\n\nconst save = async () => {\n if (cropperRef.value === null) { return; }\n\n const { canvas } = cropperRef.value.getResult();\n if (!canvas) return;\n\n const shouldResize = props.maxWidth !== 0 && canvas.width > props.maxWidth;\n\n const fileName = `${props.filenamePrefix}-${uuidv4()}.png`;\n\n console.log('canvas acquired');\n\n const getBlob = () => {\n if (shouldResize) {\n // if we need to resize\n const ratio = canvas.width / canvas.height;\n const rCanvas = document.createElement('canvas');\n rCanvas.width = props.maxWidth;\n rCanvas.height = props.maxWidth / ratio;\n\n console.log(`Resizing (${canvas.width},${canvas.height}) to (${rCanvas.width}, ${rCanvas.height}})`);\n\n const pica = new Pica();\n return pica.resize(canvas, rCanvas).then((result: HTMLCanvasElement) => pica.toBlob(result, 'image/png'));\n }\n // otherwise pull directly from cropper canvas\n console.log(`Not Resizing (${canvas.width},${canvas.height}) under ${props.maxWidth} or disabled.`);\n return new Promise((resolve) => {\n canvas.toBlob((blob: Blob) => {\n resolve(blob);\n });\n });\n };\n\n const blob = await getBlob();\n if (!blob) { return; }\n const file = new File([blob], fileName, { type: 'image/png' });\n emit('change', file);\n};\n\nconst replaceImage = () => {\n mode.value = UploadDialogMode.UPLOAD_FORM;\n};\n\nconst deleteImage = () => {\n showConfirmationDialog(\n undefined,\n props.deleteConfirmationLabel as string,\n { title: i18n.tc('button.yes'), action: () => { emit('change', null); } },\n { title: i18n.tc('button.cancel') },\n );\n};\n\nconst close = () => {\n emit('close');\n};\n\n\nreturn { __sfc: true,UploadDialogMode, props, emit, cropperRef, previewImage, fileRecords, mode, save, replaceImage, deleteImage, close, Cropper }\n}\n\n})","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":\"\",\"persistent\":\"\",\"max-width\":\"600px\",\"title\":_vm.title},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),(_setup.mode === _setup.UploadDialogMode.PREVIEW)?_c('v-btn',{attrs:{\"outlined\":\"\",\"color\":\"primary\"},on:{\"click\":_setup.replaceImage}},[_vm._v(\" \"+_vm._s(_vm.$t('button.replace_image'))+\" \")]):_vm._e(),(_setup.mode === _setup.UploadDialogMode.PREVIEW)?_c('v-btn',{attrs:{\"color\":\"error\",\"outlined\":\"\"},on:{\"click\":_setup.deleteImage}},[_c('v-icon',[_vm._v(\"mdi-delete\")]),_c('span',{staticClass:\"d-none d-lg-block\"},[_vm._v(_vm._s(_vm.$t('button.delete')))])],1):_vm._e(),(_setup.mode === _setup.UploadDialogMode.UPLOAD_FORM || _setup.mode === _setup.UploadDialogMode.EDIT)?_c('v-btn',{attrs:{\"disabled\":_setup.mode === _setup.UploadDialogMode.UPLOAD_FORM,\"color\":\"success\"},on:{\"click\":_setup.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]):_vm._e(),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_setup.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close' ))+\" \")])]},proxy:true}])},[_c('v-form',{ref:\"form\"},[(_setup.mode === _setup.UploadDialogMode.PREVIEW)?[_c('v-img',{attrs:{\"src\":_vm.imageSrc}})]:_vm._e(),(_setup.mode === _setup.UploadDialogMode.UPLOAD_FORM)?_c('vue-file-agent',{attrs:{\"theme\":\"list\",\"multiple\":false,\"deletable\":\"\",\"meta\":\"\",\"accept\":\"image/*\",\"max-size\":\"2MB\",\"max-files\":1,\"help-text\":_vm.helpLabel,\"error-text\":{\n type: _vm.$t('error.upload_invalid_filetype'),\n size: _vm.$t('error.upload_file_size_exceeded_maximum_x', ['2MB']),\n }},scopedSlots:_vm._u([{key:\"file-preview-new\",fn:function(){return [_c('div',{key:\"new\",staticClass:\"d-flex align-center justify-center flex-column\",staticStyle:{\"height\":\"200px\"}},[_c('v-icon',{staticClass:\"mb-2\",attrs:{\"x-large\":\"\"}},[_vm._v(\" mdi-image-plus-outline \")]),_vm._v(\" \"+_vm._s(_vm.helpLabel)+\" \")],1)]},proxy:true}],null,false,4204393387),model:{value:(_setup.fileRecords),callback:function ($$v) {_setup.fileRecords=$$v},expression:\"fileRecords\"}}):_vm._e(),(_setup.mode === _setup.UploadDialogMode.EDIT)?[_c(_setup.Cropper,{ref:\"cropperRef\",attrs:{\"classname\":\"cropper\",\"src\":_setup.previewImage,\"stencil-props\":_vm.stencilProps}}),_c('div',{staticClass:\"text-center mt-2\"},[_c('span',[_vm._v(_vm._s(_vm.$t('label.upload_image_crop_instructions')))])])]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImageUploadDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImageUploadDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ImageUploadDialog.vue?vue&type=template&id=0e0ee11c&\"\nimport script from \"./ImageUploadDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ImageUploadDialog.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./ImageUploadDialog.vue?vue&type=style&index=0&id=0e0ee11c&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":_vm.maxWidth},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"text-h5\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('v-card-text',[_c('v-form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.onClickOk.apply(null, arguments)}}},[_c('validation-observer',{ref:\"observer\"},[_vm._v(\" \"+_vm._s(_vm.message)+\" \"),_c('validation-provider',{attrs:{\"rules\":_vm.rules,\"debounce\":_vm.debounceValidation},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-input',{attrs:{\"autofocus\":\"\"}}),_c('v-text-field',{ref:\"inputField\",attrs:{\"label\":_vm.labelTitle,\"error-messages\":errors,\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\",\"prefix\":_vm.textfieldPrefix,\"suffix\":_vm.textfieldSuffix},on:{\"input\":_vm.updateValue},model:{value:(_vm.inputValue),callback:function ($$v) {_vm.inputValue=$$v},expression:\"inputValue\"}})]}}])})],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":function($event){return _vm.onClickOk()}}},[_vm._v(\" \"+_vm._s(_vm.confirmTitle || _vm.$t('button.ok'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":function($event){return _vm.onClickCancel()}}},[_vm._v(\" \"+_vm._s(_vm.cancelTitle || _vm.$t('button.cancel'))+\" \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { ValidationObserver } from 'vee-validate';\n\nexport default Vue.extend({\n mixins: [DialogClosable],\n props: {\n title: { type: String as PropType, required: true },\n message: { type: String as PropType, required: true },\n labelTitle: { type: String as PropType, required: true },\n confirmTitle: { type: String as PropType, required: true },\n cancelTitle: { type: String as PropType, required: true },\n rules: { type: String as PropType, required: true },\n value: { type: String as PropType, required: true },\n maxWidth: { type: Number, required: false, default: 290 },\n textfieldPrefix: { type: String, required: false, default: undefined },\n textfieldSuffix: { type: String, required: false, default: undefined },\n noAutoClose: { type: Boolean as PropType, required: false, default: false },\n debounceValidation: { type: Number, required: false, default: undefined },\n },\n data() {\n return {\n inputValue: this.value,\n };\n },\n watch: {\n value() {\n this.inputValue = this.value;\n },\n // hack to ensure input field is focused & keyboard visible even on iOS\n visible(val) {\n if (!val) {\n return;\n }\n setTimeout(() => {\n const tfElm = ((this.$refs.inputField as Vue).$refs.input as HTMLInputElement);\n tfElm.focus();\n }, 250);\n },\n },\n created() {\n if (this.visible) {\n setTimeout(() => {\n const tfElm = ((this.$refs.inputField as Vue).$refs.input as HTMLInputElement);\n tfElm.focus();\n }, 250);\n }\n },\n methods: {\n updateValue(value: string) {\n this.$emit('input', value);\n },\n reset() {\n (this.$refs.observer as InstanceType).reset();\n if (this.value === undefined) (this.$refs.form as Vue & { reset: () => void }).reset();\n },\n close() {\n this.reset();\n this.$emit('close', true);\n },\n async onClickOk() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) return;\n this.$emit('confirm', this.inputValue);\n if (this.noAutoClose !== true) this.close();\n },\n async onClickCancel() {\n this.$emit('cancel');\n if (this.noAutoClose !== true) this.close();\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InputDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InputDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./InputDialog.vue?vue&type=template&id=19afe10e&\"\nimport script from \"./InputDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./InputDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',_vm._b({attrs:{\"persistent\":_vm.persistent,\"max-width\":_vm.maxWidth,\"scrollable\":_vm.scrollable,\"content-class\":_vm.contentClass,\"fullscreen\":_vm.fullscreen,\"container-class\":_vm.containerClass},model:{value:(_setup.dialog),callback:function ($$v) {_setup.dialog=$$v},expression:\"dialog\"}},'v-dialog',_vm.$attrs,false),[_c('v-card',{attrs:{\"height\":_vm.cardHeight,\"max-height\":_vm.cardMaxHeight}},[_c('v-card-title',{staticClass:\"pa-0 ma-0\"},[(_vm.title !== '')?_c('span',{staticClass:\"px-5 py-2\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]):_vm._e(),_vm._t(\"title\")],2),_vm._t(\"title-append-outer\"),_c('v-divider'),_c('v-card-text',{ref:\"scrollContent\",class:_vm.cardClass},[_c('v-container',{class:_vm.containerClass,attrs:{\"fluid\":_vm.fluid}},[_vm._t(\"default\")],2)],1),(_vm.scrollable)?_c('v-divider'):_vm._e(),_c('v-card-actions',[_vm._t(\"actions\")],2)],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, ref, watch } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewModalDialog',\n props: {\n title: { type: [String, Object] as PropType, required: false, default: '' },\n maxWidth: { type: String, required: false, default: '600' },\n persistent: { type: Boolean, required: false, default: false },\n cardClass: { type: String, required: false, default: null },\n cardHeight: { type: Number, required: false, default: null },\n cardMaxHeight: { type: String, required: false, default: null },\n scrollable: { type: Boolean, required: false, default: false },\n contentClass: { type: String, required: false, default: null },\n containerClass: { type: String, required: false, default: 'pa-md-5 pa-0' },\n fluid: { type: Boolean, required: false, default: false },\n fullscreen: { type: Boolean, required: false, default: false },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst dialog = ref(true);\nwatch(dialog, () => {\n if (dialog.value === false) { emit('close'); }\n});\n\nconst scrollContent = ref(null as null | HTMLElement);\nconst scrollToBottom = () => {\n const scrollDiv = scrollContent.value as HTMLElement;\n scrollDiv.scrollTop = scrollDiv.scrollHeight + 60;\n};\n\n\nreturn { __sfc: true,props, emit, dialog, scrollContent, scrollToBottom }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewModalDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewModalDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewModalDialog.vue?vue&type=template&id=6caaf1b0&\"\nimport script from \"./NewModalDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewModalDialog.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('confirmation-dialog',{attrs:{\"visible\":\"\",\"title\":_vm.$t('title.upgrade'),\"confirm-title\":_setup.isVIP ? _vm.$t('button.ok') : _vm.$t('button.view_upgrade_options'),\"hide-cancel\":_setup.isVIP},on:{\"confirm\":function($event){_setup.isVIP ? _setup.emit('close') : _setup.upgradePlanAction},\"close\":function($event){return _setup.emit('close')}}},[_c('p',{staticClass:\"pb-1 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.feature_not_available_in_current_plan'))+\" \")]),(_setup.isVIP)?_c('p',{staticClass:\"py-1 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.talk_to_sales_to_upgrade'))+\" \")]):_c('i18n',{attrs:{\"path\":\"message.feature_upgrade_to_plan\",\"tag\":\"span\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_setup.message))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { BillingInfoSubscriptionStatus } from '@/model/Account';\nimport i18nn from '@/plugins/i18n';\nimport store from '@/store/store';\nimport { computed, PropType } from 'vue';\nimport { useRouter } from 'vue-router/composables';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaywallUpgradeDialog',\n props: {\n // eslint-disable-next-line vue/max-len\n plans: { type: Array as PropType<('pro' | 'business' | 'ultimate')[]>, required: false, default: () => ['business', 'ultimate'] },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst router = useRouter();\n\n\n\nconst upgradePlanAction = () => {\n router.push('/settings/billing?upgrade=true');\n};\n\nconst isVIP = computed(() => store.state.settings.account.proStatus === BillingInfoSubscriptionStatus.VIP);\n\nconst message = computed(() => {\n const plans = props.plans.map((p) => `Guestplan ${p[0].toUpperCase()}${p.slice(1)}`);\n if (plans.length === 0) return '';\n if (plans.length === 1) return plans[0];\n return `${plans.slice(0, -1).join(', ')} ${i18nn.t('label.or')} ${plans[plans.length - 1]}`;\n});\n\n\nreturn { __sfc: true,props, router, emit, upgradePlanAction, isVIP, message }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaywallUpgradeDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaywallUpgradeDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaywallUpgradeDialog.vue?vue&type=template&id=0cd07f15&\"\nimport script from \"./PaywallUpgradeDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaywallUpgradeDialog.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"editor\"},[(_vm.label)?_c('p',{class:['editor__title v-label mb-2 mt-0', {'error--text': _vm.errorMessages.length > 0}]},[_vm._v(\" \"+_vm._s(_vm.label)+\" \")]):_vm._e(),(_vm.linkInputDialog)?_c('input-dialog',{attrs:{\"label-title\":\"Link\",\"rules\":\"required|url\",\"title\":\"Add Link\",\"visible\":_vm.linkInputDialog},on:{\"close\":function($event){_vm.linkInputDialog = false},\"confirm\":_vm.editorToggleLink},model:{value:(_vm.linkUrl),callback:function ($$v) {_vm.linkUrl=$$v},expression:\"linkUrl\"}}):_vm._e(),_c('div',{staticClass:\"menubar\"},[_vm._t(\"menubar\",null,{\"editor\":_vm.editor}),(_vm.richtextAllowed)?[_c('filled-button',{staticClass:\"mr-2 pt-2\",attrs:{\"filled\":_vm.isBoldMark,\"icon\":\"mdi-format-bold\",\"tooltip\":_vm.$t('button.bold')},on:{\"click\":function($event){_vm.editor?.chain().focus().toggleBold().run()}}}),_c('filled-button',{staticClass:\"mr-2 pt-2\",attrs:{\"filled\":_vm.isItalicMark,\"icon\":\"mdi-format-italic\",\"tooltip\":_vm.$t('button.italic')},on:{\"click\":function($event){_vm.editor?.chain().focus().toggleItalic().run()}}}),_c('filled-button',{staticClass:\"mr-2 pt-2\",attrs:{\"icon\":\"mdi-minus\",\"tooltip\":_vm.$t('button.horizontal_rule')},on:{\"click\":function($event){_vm.editor?.chain().focus().setHorizontalRule().run()}}}),_c('filled-button',{staticClass:\"mr-2 pt-2\",attrs:{\"disabled\":_vm.isHyperlink || !_vm.isHyperlink && _vm.editor?.view.state.selection.empty,\"icon\":\"mdi-link-variant\",\"tooltip\":_vm.$t('button.add_hyperlink')},on:{\"click\":function($event){_vm.linkInputDialog = true}}}),_c('filled-button',{staticClass:\"mr-2 pt-2\",attrs:{\"disabled\":!_vm.isHyperlink,\"icon\":\"mdi-link-variant-off\",\"tooltip\":_vm.$t('button.remove_hyperlink')},on:{\"click\":function($event){_vm.editor?.chain().focus().unsetLink().run()}}})]:_vm._e()],2),_c('editor-content',{class:[\n {'editor__content-dark': _vm.dark},\n {'editor__content-error': _vm.errorMessages.length > 0},\n _vm.dense ? 'mt-2' : 'mt-5',\n 'editor__content text--primary'],attrs:{\"editor\":_vm.editor}}),_c('div',{staticClass:\"d-flex w-100 flex-row\"},[_c('p',{staticClass:\"field-error-message mt-1 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.errorMessages.join(' '))+\"  \")]),_c('p',{staticClass:\"ml-auto\"},[_vm._v(\" \"+_vm._s(_vm.hint)+\" \")])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable class-methods-use-this */\nimport { Node } from '@tiptap/vue-2';\nimport { mergeAttributes } from '@tiptap/core';\n\nexport interface HandlebarOptions {}\ndeclare module '@tiptap/core' {\n interface Commands {\n handlebar: {\n insertHandlebar: (options: { id: string, label: string }) => ReturnType,\n }\n }\n}\n\nexport const Handlebar = Node.create({\n name: 'handlebar',\n group: 'inline',\n atom: true,\n inline: true,\n selectable: false,\n\n renderHTML({ node, HTMLAttributes }) {\n return [\n 'span',\n mergeAttributes(HTMLAttributes, { class: 'handlebar' }),\n `${node.attrs.label}`,\n ];\n },\n\n addAttributes() {\n return {\n id: {\n parseHTML: (elm) => elm.getAttribute('data-handlebar-id'),\n renderHTML: (attributes) => ({\n 'data-handlebar-id': attributes.id,\n }),\n },\n label: {\n parseHTML: (elm) => elm.innerText,\n },\n };\n },\n\n parseHTML() {\n return [{ tag: 'span[data-handlebar-id]' }];\n },\n\n addCommands() {\n return {\n insertHandlebar: (options) => ({ commands }) => commands.insertContent({\n type: this.name,\n attrs: options,\n }),\n };\n },\n\n});\n","import MessageHandlebar from '@/model/MessageHandlebar';\nimport i18n from '@/plugins/i18n';\n\nconst className = 'handlebar';\n\nexport function textWithHandlebarsToHtml(text: String | null, handlebars:MessageHandlebar[]): string {\n if (!text) return '

';\n\n let newtext = text;\n\n handlebars.forEach((handlebar) => {\n const name = i18n.t(`code.handlebar.${handlebar.name}`);\n const r = `${name}`;\n newtext = newtext.replace(new RegExp(handlebar.expression, 'g'), r);\n });\n\n newtext = newtext.replace(/(?:\\r\\n|\\r|\\n)/g, '

');\n return `

${newtext}

`;\n}\n\nexport function htmlToTextWithHandlebars(\n text: string | null,\n handlebarsById: Map,\n): string | null {\n if (!text) return null;\n let newtext = text;\n if (newtext.startsWith('

')) newtext = newtext.substring(3);\n if (newtext.endsWith('

')) newtext = newtext.substring(0, newtext.length - 4);\n newtext = newtext.replace(/<\\/p>

/g, '\\n');\n\n const regexp = `([^<]*)`;\n\n // eslint-disable-next-line no-constant-condition\n while (1) {\n const result = newtext.match(regexp);\n if (!result) break;\n const [match, id, name] = [...result];\n const replacement = handlebarsById.get(Number(id))?.expression ?? name ?? '';\n newtext = newtext.replace(new RegExp(match, 'g'), replacement);\n }\n return newtext;\n}\n","\nimport Vue, { PropType, defineComponent } from 'vue';\nimport { Editor, EditorContent } from '@tiptap/vue-2';\nimport { Handlebar } from '@/services/handlebar-tiptap-extension';\nimport { textWithHandlebarsToHtml, htmlToTextWithHandlebars } from '@/services/handlebar-utils';\nimport StarterKit from '@tiptap/starter-kit';\nimport Link from '@tiptap/extension-link';\nimport MessageHandlebar from '@/model/MessageHandlebar';\nimport InputDialog from '@/components/dialogs/InputDialog.vue';\nimport { TranslateResult } from 'vue-i18n';\n\nconst __default__ = defineComponent({\n name: 'RichTextEditor',\n components: {\n EditorContent,\n InputDialog,\n },\n props: {\n value: { type: String, required: false, default: '' },\n dense: { type: Boolean, required: false, default: false },\n richtextAllowed: { type: Boolean, required: false, default: false },\n encodeLinebreak: { type: Boolean, required: false, default: false },\n errorMessages: { type: Array, required: false, default: [] },\n hint: { type: String, required: false, default: '' },\n height: { type: String, required: false, default: '200px' },\n label: { type: [String, Object] as PropType, required: false, default: undefined },\n },\n data() {\n return {\n editor: undefined as undefined | Editor,\n linkInputDialog: false,\n linkUrl: undefined as undefined | string,\n };\n },\n computed: {\n dark(): boolean { return this.$vuetify.theme.dark; },\n isBoldMark(): boolean { return this.editor?.isActive('bold') || false; },\n isItalicMark(): boolean { return this.editor?.isActive('italic') || false; },\n isHyperlink(): boolean { return this.editor?.isActive('link') || false; },\n handlebars(): MessageHandlebar[] {\n return this.$tstore.state.messageCenter.handlebars;\n },\n handlebarsById(): Map {\n return this.$tstore.getters.handlebarsById;\n },\n },\n watch: {\n value() {\n if (this.editor?.getHTML() === textWithHandlebarsToHtml(this.value, this.handlebars)) { return; }\n this.editor?.commands.setContent(textWithHandlebarsToHtml(this.value, this.handlebars));\n },\n },\n created() {\n // @ts-ignore\n this.editor = new Editor({\n extensions: [\n StarterKit,\n Link,\n Handlebar,\n ],\n content: textWithHandlebarsToHtml(this.value, this.handlebars),\n onUpdate: ({ editor }) => {\n const content = editor.getHTML();\n let newContent = htmlToTextWithHandlebars(content, this.handlebarsById);\n if (this.encodeLinebreak && newContent) {\n newContent = newContent.replaceAll(/\\n/g, '
');\n }\n this.$emit('input', newContent);\n },\n });\n },\n beforeDestroy() {\n this.editor?.destroy();\n this.editor = undefined;\n },\n methods: {\n editorToggleLink(href: string) {\n this.editor?.commands.toggleLink({ href, target: '_blank' });\n },\n },\n});\n\nimport { useCssVars as _useCssVars } from 'vue'\nconst __injectCSSVars__ = () => {\n_useCssVars((_vm, _setup) => ({\n \"02590ce5\": (_vm.height)\n}))}\nconst __setup__ = __default__.setup\n__default__.setup = __setup__\n ? (props, ctx) => { __injectCSSVars__();return __setup__(props, ctx) }\n : __injectCSSVars__\n\nexport default __default__","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RichTextEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RichTextEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RichTextEditor.vue?vue&type=template&id=64503baa&\"\nimport script from \"./RichTextEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./RichTextEditor.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RichTextEditor.vue?vue&type=style&index=0&id=64503baa&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('p',{staticClass:\"mt-0 pt-5 mb-0 pb-0 text-caption font-weight-bold text--primary\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'SectionHeader',\n props: {\n title: { type: String, required: false, default: '' },\n },\n data() {\n return {};\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SectionHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SectionHeader.vue?vue&type=template&id=5010d91a&\"\nimport script from \"./SectionHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./SectionHeader.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('validation-provider',{attrs:{\"rules\":_vm.rules,\"mode\":_vm.validationMode},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-text-field',_vm._b({staticClass:\"pt-0\",attrs:{\"label\":_vm.label,\"error-messages\":errors,\"required\":_vm.rules !== '',\"type\":_vm.type},model:{value:(_vm.val),callback:function ($$v) {_vm.val=$$v},expression:\"val\"}},'v-text-field',_vm.$attrs,false))]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'ValidatedTextField',\n props: {\n validationMode: { type: String, required: false, default: 'aggressive' },\n value: { type: String, required: true },\n rules: { type: String, required: false, default: '' },\n label: { type: String, required: false, default: '' },\n type: { type: String, required: false, default: 'text' },\n },\n data() {\n return {\n val: this.value,\n };\n },\n computed: {\n\n },\n watch: {\n value(value: string) {\n this.val = value;\n },\n val() {\n this.$emit('input', this.val);\n },\n },\n methods: {\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValidatedTextField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ValidatedTextField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ValidatedTextField.vue?vue&type=template&id=ff6931f4&\"\nimport script from \"./ValidatedTextField.vue?vue&type=script&lang=ts&\"\nexport * from \"./ValidatedTextField.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"pa-0\",attrs:{\"fluid\":\"\"}},[_c('v-card',{attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"d-block\",style:(`position: sticky; top: ${_vm.$vuetify.breakpoint.mdAndUp ? '64' : '56'}px; z-index: 2`)},[_vm._t(\"header\"),(_vm.breadcrumbs)?_c('v-breadcrumbs',{class:`${_vm.dark ? 'bluegray' : 'grey lighten-4'} pt-1 pb-0 pl-2 d-sm-none`,attrs:{\"items\":_vm.breadcrumbs}}):_vm._e(),_c('v-card-actions',{class:`${_vm.dark ? 'bluegray' : 'grey lighten-4'}`},[(_vm.breadcrumbs)?_c('v-breadcrumbs',{staticClass:\"pl-2 d-none d-sm-block\",attrs:{\"items\":_vm.breadcrumbs}}):_vm._e(),_c('v-spacer'),_vm._t(\"actions\")],2),_c('v-divider')],2),(_vm.$slots.content)?_c('v-card-text',{staticClass:\"pa-4 pa-md-6\"},[_c('help-header'),_vm._t(\"content\")],2):_vm._e()],1),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport HelpHeader from '@/components/views/settings/HelpHeader.vue';\n\nexport default Vue.extend({\n name: 'SettingsForm',\n components: { HelpHeader },\n props: {\n breadcrumbs: { type: Object, required: false, default: null },\n },\n data: () => ({}),\n computed: {\n dark(): boolean { return this.$vuetify.theme.dark; },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsForm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsForm.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsForm.vue?vue&type=template&id=31764936&\"\nimport script from \"./SettingsForm.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsForm.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',[_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"md\":\"4\"}},[_c('p',{staticClass:\"pa-0 ma-0 text-subtitle-1 font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('p',{staticClass:\"grp-subtitle\"},[_vm._v(\" \"+_vm._s(_vm.subtitle)+\" \"),_vm._t(\"subtitle\")],2)]),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"md\":\"8\"}},[_c('v-row',{staticClass:\"px-0 py-2 pa-md-4\"},[(_vm.gutter)?_c('v-col',{staticClass:\"py-2 my-0\",attrs:{\"cols\":\"12\",\"md\":_vm.gutterMd,\"lg\":_vm.gutterLg,\"xl\":_vm.gutterXl}},[_c('v-row',[_vm._t(\"default\")],2)],1):_vm._t(\"default\")],2)],1),(!_vm.hideDivider)?_c('v-col',{staticClass:\"py-8\",attrs:{\"cols\":\"12\"}},[_c('v-divider')],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SettingsGroup',\n props: {\n title: { type: [String, Object] as PropType, required: false, default: '' },\n subtitle: { type: [String, Object] as PropType, required: false, default: '' },\n hideDivider: { type: Boolean, required: false, default: false },\n gutter: { type: Boolean, required: false, default: false },\n gutterMd: { type: Number, required: false, default: 10 },\n gutterLg: { type: Number, required: false, default: 8 },\n gutterXl: { type: Number, required: false, default: 6 },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\nreturn { __sfc: true,props }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsGroup.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsGroup.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsGroup.vue?vue&type=template&id=4e5c0080&scoped=true&\"\nimport script from \"./SettingsGroup.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./SettingsGroup.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./SettingsGroup.vue?vue&type=style&index=0&id=4e5c0080&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e5c0080\",\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('v-menu',{ref:\"menu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"290px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(!_vm.showSwatches)?_c('v-text-field',_vm._g({staticClass:\"pt-0\",attrs:{\"error-messages\":_vm.errors,\"disabled\":_vm.disabled,\"label\":_vm.label,\"readonly\":\"\"},scopedSlots:_vm._u([{key:\"prepend\",fn:function(){return [_c('v-icon',_vm._g({attrs:{\"disabled\":_vm.disabled,\"color\":_vm.color}},on),[_vm._v(\" mdi-circle \")])]},proxy:true}],null,true),model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}},on)):_c('v-icon',_vm._g({attrs:{\"disabled\":_vm.disabled,\"color\":_vm.color}},on),[_vm._v(\" mdi-circle \")])]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-sheet',[_c('v-color-picker',{class:_vm.showSwatches ? 'no-slider' : '',attrs:{\"type\":\"hex\",\"mode\":\"hexa\",\"hide-canvas\":_vm.showSwatches,\"hide-inputs\":_vm.showSwatches,\"show-swatches\":_vm.showSwatches,\"swatches\":_vm.swatches,\"swatches-max-height\":\"300\",\"flat\":\"\"},on:{\"input\":_vm.updateValue},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}}),_c('v-btn',{staticClass:\"mt-0\",attrs:{\"text\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":function($event){_vm.menu = false}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'ColorPickerField',\n props: {\n value: { type: String, required: true },\n disabled: { type: Boolean, required: false, default: false },\n label: { type: String, required: false, default: '' },\n showSwatches: { type: Boolean, required: false, default: false },\n swatches: { type: Array, required: false, default: () => [] as Array },\n },\n data() {\n return {\n color: this.value,\n menu: false,\n };\n },\n watch: {\n value() {\n this.color = this.value;\n },\n },\n methods: {\n updateValue() {\n if (this.showSwatches) {\n this.menu = false;\n }\n this.$emit('input', this.color);\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ColorPickerField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ColorPickerField.vue?vue&type=template&id=4e3d5cb4&\"\nimport script from \"./ColorPickerField.vue?vue&type=script&lang=ts&\"\nexport * from \"./ColorPickerField.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ColorPickerField.vue?vue&type=style&index=0&id=4e3d5cb4&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({},'span',attrs,false),on),[_c('span',{staticClass:\"cursor-pointer border-bottom-dashed primary--text font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.currencyText)+\" \")]),_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-chevron-down \")])],1)]}}])},[_c('v-list',{staticClass:\"py-0\"},_vm._l((_vm.currenciesItems),function(curr){return _c('v-list-item',{key:curr,attrs:{\"disabled\":_vm.currency === curr.key},on:{\"click\":function($event){return _vm.setCurrency(curr.key)}}},[_c('v-list-item-title',[_vm._v(_vm._s(curr.value))])],1)}),1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { billingCurrencyText, preferedCountryCurrency } from '@/services/billing-utils';\nimport {\n Currency, Customer, Price, Country as BillingCountry,\n} from '@/api/api-billing';\n\nimport Vue, { PropType } from 'vue';\nimport Account from '@/model/Account';\n\nexport default Vue.extend({\n name: 'CurrencyPicker',\n props: {\n value: { type: String as PropType, required: true },\n },\n data() {\n return {\n currency: Currency.EUR as string,\n };\n },\n computed: {\n currencies(): string[] {\n return this.$tstore.getters.billingCurrencies as string[];\n },\n currencyText(): string {\n return billingCurrencyText(this.currency);\n },\n currenciesItems(): {key: string, value: string}[] {\n return this.currencies.map((curr) => ({ key: curr, value: billingCurrencyText(curr) }));\n },\n },\n watch: {\n value() {\n this.currency = this.value;\n },\n },\n async mounted() {\n this.currency = this.value;\n },\n methods: {\n setCurrency(curr: string) {\n this.currency = curr;\n this.$emit('input', this.currency);\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrencyPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CurrencyPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CurrencyPicker.vue?vue&type=template&id=054a8635&\"\nimport script from \"./CurrencyPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./CurrencyPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{ref:\"menu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"290px\"},on:{\"input\":_vm.updateValue},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-text-field',_vm._g(_vm._b({class:`${_vm.contentClass} gp-date-picker-field`,attrs:{\"value\":_vm.formattedDate,\"dense\":_vm.dense,\"hide-details\":_vm.hideDetails,\"error-messages\":_vm.errorMessages,\"outlined\":_vm.outlined,\"disabled\":_vm.disabled,\"label\":_vm.label,\"clearable\":_vm.clearable,\"readonly\":\"\",\"retain-focus-on-click\":false},on:{\"click:clear\":_vm.clear,\"click:append-outer\":function($event){$event.preventDefault();return _vm.$emit('click:append-outer', $event)}}},'v-text-field',_vm.$attrs,false),on))]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-date-picker',{staticClass:\"date-picker-menu\",attrs:{\"type\":_vm.type,\"no-title\":\"\",\"min\":_vm.fmtDateStringFromDate8601(_vm.minDate),\"first-day-of-week\":_vm.$localized.firstDayOfWeek(),\"color\":\"brand\",\"scrollable\":\"\"},on:{\"input\":function($event){_vm.$refs.menu.save(_vm.date); _vm.menu = false; _vm.updateValue()}},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport { dateStringFromDate8601, dateFromDateString8601 } from '@/services/time-utils';\n\nexport default Vue.extend({\n name: 'DatePickerField',\n props: {\n value: { type: Object as PropType, required: true },\n formatFn: { type: Function as PropType<((d: Date) => string)>, required: false, default: undefined },\n disabled: { type: Boolean, required: false, default: false },\n label: { type: String, required: false, default: '' },\n type: { type: String, required: false, default: 'date' },\n dense: { type: Boolean, required: false, default: false },\n hideDetails: { type: Boolean, required: false, default: false },\n outlined: { type: Boolean, required: false, default: false },\n clearable: { type: Boolean, required: false, default: false },\n errorMessages: { type: Array, required: false, default: null },\n contentClass: { type: String, required: false, default: '' },\n minDate: { type: Object as PropType, required: false, default: undefined },\n },\n data() {\n return {\n date: dateStringFromDate8601(this.value),\n menu: null,\n };\n },\n computed: {\n formattedDate(): string | null {\n if (this.formatFn !== undefined) {\n const d = dateFromDateString8601(this.date!)!;\n return this.formatFn(d);\n }\n return this.date;\n },\n },\n watch: {\n value() {\n this.date = dateStringFromDate8601(this.value);\n },\n },\n methods: {\n clear() {\n this.date = '';\n this.updateValue();\n },\n fmtDateStringFromDate8601(d: Date | undefined) {\n return d ? dateStringFromDate8601(d) : undefined;\n },\n updateValue() {\n this.$emit('input', dateFromDateString8601(this.date!));\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DatePickerField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DatePickerField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DatePickerField.vue?vue&type=template&id=fd28ce0c&scoped=true&\"\nimport script from \"./DatePickerField.vue?vue&type=script&lang=ts&\"\nexport * from \"./DatePickerField.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DatePickerField.vue?vue&type=style&index=0&id=fd28ce0c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd28ce0c\",\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('v-menu',{ref:\"menu\",staticStyle:{\"z-index\":\"99999999\"},attrs:{\"content-class\":\"pa-0 ma-0\",\"close-on-content-click\":false,\"nudge-right\":0,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":_vm.$vuetify.breakpoint.xsOnly ? '100px' : '290px',\"max-width\":_vm.$vuetify.breakpoint.xsOnly ? '314px' : '600px'},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-text-field',_vm._g({class:`${_vm.contentClass} gp-date-picker-field`,style:(_vm.contentStyle),attrs:{\"value\":_vm.formattedCurrentDateRange,\"dense\":_vm.dense,\"hide-details\":_vm.hideDetails,\"error-messages\":_vm.errorMessages,\"outlined\":_vm.outlined,\"disabled\":_vm.disabled,\"label\":_vm.label,\"clearable\":_vm.clearable,\"readonly\":\"\"},on:{\"click:clear\":_vm.clear}},on))]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-sheet',{staticClass:\"ma-0 pa-0\",attrs:{\"elevation\":\"0\"}},[_c('v-row',{staticClass:\"ma-0 pa-0\"},[_c('v-col',{staticClass:\"mb-2\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-date-picker',{staticClass:\"date-picker-menu\",attrs:{\"type\":_vm.type,\"show-adjacent-months\":\"\",\"no-title\":\"\",\"range\":\"\",\"first-day-of-week\":_vm.$localized.firstDayOfWeek(),\"color\":\"brand\",\"scrollable\":\"\",\"picker-date\":_vm.pickerDate},on:{\"update:pickerDate\":function($event){_vm.pickerDate=$event},\"update:picker-date\":function($event){_vm.pickerDate=$event},\"input\":_vm.dateChanged},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}})],1),(_vm.$vuetify.breakpoint.xsOnly)?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-divider')],1):_vm._e(),_c('v-col',{staticClass:\"py-6 px-4 mt-1\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('div',{staticClass:\"d-flex\"},[_c('v-select',{attrs:{\"value\":_vm.selectPeriod,\"items\":_vm.items,\"label\":_vm.$t('label.date_range'),\"dense\":\"\",\"error-messages\":_vm.editedError,\"hide-details\":\"\"},on:{\"input\":_vm.periodChanged}}),_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.shiftPeriod(true)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.shiftPeriod(false)}}},[_c('v-icon',[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('div',{staticClass:\"pt-1 text-overline\"},[_vm._v(\" \"+_vm._s(_vm.formattedEditedDateRange)+\" \")]),(!_vm.disableFuture)?_c('v-checkbox',{attrs:{\"disabled\":_vm.previousPeriodDisabled,\"label\":_vm.$t('label.compare_to_previous'),\"hide-details\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.previousPeriodChanged.apply(null, arguments)}},model:{value:(_vm.previousPeriod),callback:function ($$v) {_vm.previousPeriod=$$v},expression:\"previousPeriod\"}}):_vm._e(),(_vm.previousPeriod)?_c('div',{staticClass:\"text-overline pt-1\"},[_vm._v(\" \"+_vm._s(_vm.formattedEditedPreviousDateRange)+\" \")]):_vm._e(),_c('v-btn',{staticClass:\"mt-5\",attrs:{\"disabled\":_vm.editedError !== undefined,\"color\":\"primary\",\"small\":\"\",\"block\":\"\"},on:{\"click\":function($event){_vm.menu=false}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport 'moment-range';\nimport {\n dateStringFromDate8601, dateFromDateString8601, areDatesEqual, dateFlooredToDate,\n} from '@/services/time-utils';\nimport {\n DateRange, dateRangeDatesFromPeriod, DateRangePeriod,\n periodFromDateRangeDates, shiftedDateRangeFromPeriodAndRange, formattedDateRange,\n DateRangePickerItem, DateRangePeriodsPast, DateRangePeriods, createPickerItems,\n} from '@/services/date-range';\nimport { reportsValidateDateRange } from '@/services/reports-utils';\nimport debounce from 'lodash.debounce';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { DebouncedFunc } from 'lodash';\n\nexport default Vue.extend({\n name: 'DateRangePickerField',\n props: {\n value: { type: Object as PropType, required: true },\n previousPeriodDisabled: { type: Boolean, required: false, default: false },\n disabled: { type: Boolean, required: false, default: false },\n label: { type: String, required: false, default: '' },\n type: { type: String, required: false, default: 'date' },\n dense: { type: Boolean, required: false, default: false },\n hideDetails: { type: Boolean, required: false, default: true },\n outlined: { type: Boolean, required: false, default: false },\n clearable: { type: Boolean, required: false, default: false },\n errorMessages: { type: Array, required: false, default: null },\n contentClass: { type: String, required: false, default: '' },\n contentStyle: { type: String, required: false, default: 'min-width: 110px; max-width: 190px' },\n disableFuture: { type: Boolean, required: false, default: false },\n },\n data() {\n return {\n date: null as null | string[],\n beginDate: dateFlooredToDate(new Date()),\n endDate: dateFlooredToDate(new Date()),\n pickerDate: undefined as undefined | string,\n previousBeginDate: undefined as Date | undefined,\n previousEndDate: undefined as Date | undefined,\n period: DateRangePeriod.Today,\n previousPeriod: false,\n menu: false,\n debouncedApply: undefined as undefined | DebouncedFunc <() => Promise>,\n };\n },\n computed: {\n periods(): DateRangePeriod[] {\n return this.disableFuture ? DateRangePeriodsPast : DateRangePeriods;\n },\n items(): DateRangePickerItem[] {\n return createPickerItems(this.periods);\n },\n selectPeriod(): DateRangePeriod {\n if (this.period.startsWith('custom')) return DateRangePeriod.Custom;\n return this.period;\n },\n editedDateRange(): DateRange {\n const dateRange: DateRange = {\n period: this.period,\n firstDayOfWeek: this.$localized.firstDayOfWeek(),\n beginDate: this.beginDate,\n endDate: this.endDate,\n previousBeginDate: this.previousBeginDate,\n previousEndDate: this.previousEndDate,\n };\n return dateRange;\n },\n formattedCurrentDateRange(): string {\n return formattedDateRange(this.value).main;\n },\n formattedEditedDateRange(): string {\n return formattedDateRange(this.editedDateRange).main;\n },\n formattedEditedPreviousDateRange(): string {\n return formattedDateRange(this.editedDateRange).previous;\n },\n editedError(): string | undefined {\n return reportsValidateDateRange(this.editedDateRange);\n },\n },\n watch: {\n value(value: DateRange) {\n this.reset();\n },\n date() {\n this.pickerDate = this.date === null || this.date.length === 0 ? undefined : this.date[0];\n },\n },\n created() {\n this.reset();\n this.debouncedApply = debounce(this.apply, 100);\n },\n methods: {\n clear() {\n this.reset();\n },\n reset() {\n this.beginDate = this.value.beginDate;\n this.endDate = this.value.endDate;\n this.period = periodFromDateRangeDates(\n this.periods,\n this.beginDate,\n this.endDate,\n this.$localized.firstDayOfWeek(),\n );\n this.previousPeriod = this.value.previousBeginDate !== undefined && this.value.previousEndDate !== undefined;\n\n if (areDatesEqual(this.beginDate, this.endDate)) {\n this.date = [dateStringFromDate8601(this.beginDate)!];\n } else {\n this.date = [dateStringFromDate8601(this.beginDate)!, dateStringFromDate8601(this.endDate)!];\n }\n\n this.recalculatePreviousPeriod();\n },\n async dateChanged(date: string[]|null) {\n if (!date) return;\n if (date.length === 1) {\n this.beginDate = dateFromDateString8601(date[0])!;\n this.endDate = this.beginDate;\n } else if (date.length === 2) {\n this.beginDate = dateFromDateString8601(date[0])!;\n this.endDate = dateFromDateString8601(date[1])!;\n\n if (this.beginDate > this.endDate) {\n this.date = [date[1], date[0]];\n [this.beginDate, this.endDate] = [this.endDate, this.beginDate];\n }\n }\n\n this.period = periodFromDateRangeDates(\n this.periods,\n this.beginDate,\n this.endDate,\n this.$localized.firstDayOfWeek(),\n );\n this.recalculatePreviousPeriod();\n\n await this.debouncedApply!();\n },\n async periodChanged(period: DateRangePeriod) {\n if (period !== DateRangePeriod.Custom) {\n const { begin, end } = dateRangeDatesFromPeriod(period, this.$localized.firstDayOfWeek());\n\n this.beginDate = begin;\n this.endDate = end;\n this.period = period;\n\n if (areDatesEqual(this.beginDate, this.endDate)) {\n this.date = [dateStringFromDate8601(this.beginDate)!];\n } else {\n this.date = [dateStringFromDate8601(this.beginDate)!, dateStringFromDate8601(this.endDate)!];\n }\n }\n\n this.recalculatePreviousPeriod();\n\n await this.debouncedApply!();\n },\n async shiftPeriod(previous = true) {\n const { begin, end, period } = shiftedDateRangeFromPeriodAndRange(\n this.periods,\n this.period,\n this.beginDate,\n this.endDate,\n this.$localized.firstDayOfWeek(),\n previous,\n );\n\n this.beginDate = begin;\n this.endDate = end;\n this.period = period;\n\n if (areDatesEqual(this.beginDate, this.endDate)) {\n this.date = [dateStringFromDate8601(this.beginDate)!];\n } else {\n this.date = [dateStringFromDate8601(this.beginDate)!, dateStringFromDate8601(this.endDate)!];\n }\n\n this.recalculatePreviousPeriod();\n\n await this.debouncedApply!();\n },\n async previousPeriodChanged() {\n this.recalculatePreviousPeriod();\n await this.debouncedApply!();\n },\n recalculatePreviousPeriod() {\n if (!this.previousPeriod) {\n this.previousBeginDate = undefined;\n this.previousEndDate = undefined;\n } else {\n const { begin, end } = shiftedDateRangeFromPeriodAndRange(\n this.periods,\n this.period,\n this.beginDate,\n this.endDate,\n this.$localized.firstDayOfWeek(),\n );\n this.previousBeginDate = begin;\n this.previousEndDate = end;\n }\n },\n apply() {\n if (this.editedError) return;\n\n const dateRange: DateRange = {\n period: this.period,\n firstDayOfWeek: this.$localized.firstDayOfWeek(),\n beginDate: this.beginDate,\n endDate: this.endDate,\n previousBeginDate: this.previousBeginDate,\n previousEndDate: this.previousEndDate,\n };\n this.$emit('input', dateRange);\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangePickerField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DateRangePickerField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DateRangePickerField.vue?vue&type=template&id=2cc727f0&scoped=true&\"\nimport script from \"./DateRangePickerField.vue?vue&type=script&lang=ts&\"\nexport * from \"./DateRangePickerField.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DateRangePickerField.vue?vue&type=style&index=0&id=2cc727f0&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2cc727f0\",\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('v-menu',{attrs:{\"position-x\":_vm.x,\"position-y\":_vm.y,\"absolute\":\"\"},model:{value:(_vm.isVisible),callback:function ($$v) {_vm.isVisible=$$v},expression:\"isVisible\"}},[_c('v-list',{staticClass:\"py-0\"},[_vm._l((_vm.items),function(status){return _c('v-list-item',{key:status.value,on:{\"click\":function($event){return _vm.setReservationStatus(status.value)}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('label.status_set_to'))+\" \"),_c('v-icon',{staticClass:\"ml-1 mr-1\",staticStyle:{\"padding-bottom\":\"3px\"},attrs:{\"x-small\":\"\",\"color\":_vm.colorForStatus(status)}},[_vm._v(\" mdi-circle \")]),_c('b',[_vm._v(_vm._s(status.text))])],1),(_vm.isCheckedOutStatus(status.value))?_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.endDateTextForCheckedOut)+\" \")]):_vm._e()],1)],1)}),_c('v-divider'),_c('v-list-item',{on:{\"click\":_vm.editReservationClicked}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('label.edit_reservation')))])],1)],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { cloneModel } from '@/model/model-utils';\nimport Reservation, { ReservationStatus } from '@/model/Reservation';\nimport { tryEditReservation } from '@/services/reservation-edit-utils';\nimport { endDateForCheckedOut } from '@/services/reservation-utils';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { nextStatusItems, nextStatusItemsBlock } from '@/util/status';\nimport Vue, { PropType } from 'vue';\nimport { mapActions } from 'vuex';\nimport { colorForStatus } from '@/components/helpers/colors';\n\nexport default Vue.extend({\n name: 'StatusContextMenu',\n components: { },\n props: {\n visible: { type: Boolean, required: true },\n x: { type: Number, required: true },\n y: { type: Number, required: true },\n reservation: { type: Object as PropType, required: true },\n },\n data() {\n return {\n isVisible: this.visible,\n };\n },\n computed: {\n items() {\n if (!this.reservation) return [];\n return this.reservation.isBlock\n ? nextStatusItemsBlock(this.reservation.status)\n : nextStatusItems(this.reservation.status);\n },\n endDateTextForCheckedOut(): string | null {\n if (!this.reservation) return null;\n\n const endDate = endDateForCheckedOut(this.reservation);\n const endDateText = this.$localized.hourMinText(endDate);\n if (!endDateText) return null;\n const text = this.$i18n.t('label.ending_time_will_be_x', [endDateText]).toString();\n return text;\n },\n },\n watch: {\n visible() {\n this.isVisible = this.visible;\n },\n isVisible() {\n if (this.isVisible === false) {\n this.$emit('close');\n }\n },\n },\n mounted() { },\n methods: {\n ...mapActions(['editReservation', 'sendReservation', 'setReservationFromContextStatusChange']),\n async setReservationStatus(status: ReservationStatus) {\n if (!this.reservation) { return; }\n\n const r = cloneModel(this.reservation);\n r.setStatus(status as ReservationStatus);\n const ok = await performSaveAction(\n undefined,\n async () => this.sendReservation({ reservation: r }),\n );\n if (ok) this.setReservationFromContextStatusChange(r);\n },\n async editReservationClicked() {\n if (!this.reservation) { return; }\n await tryEditReservation(this.$router, this.reservation);\n },\n isCheckedOutStatus(s: ReservationStatus): boolean {\n return s === ReservationStatus.CheckedOut;\n },\n colorForStatus(s: any): string {\n return colorForStatus(s.value);\n },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatusContextMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatusContextMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StatusContextMenu.vue?vue&type=template&id=6da621bc&\"\nimport script from \"./StatusContextMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatusContextMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"fp-canvas-wrapper\",attrs:{\"id\":\"fp-canvas-wrapper\"},on:{\"click\":_vm.deselect}},[_c('status-context-menu',{attrs:{\"x\":_vm.contextMenu.x,\"y\":_vm.contextMenu.y,\"reservation\":_vm.contextMenu.reservation,\"visible\":_vm.contextMenu.visible},on:{\"close\":function($event){_vm.contextMenu.visible = false}}}),(!_vm.isLoaded)?_c('div'):(_vm.isSetUp)?_c('div',{ref:\"fpCanvasDiv\",staticClass:\"fp-canvas h-100\",style:(_vm.canvasOffset),attrs:{\"id\":\"fp-canvas\"},on:{\"click\":_vm.deselect}},[_vm._l((_vm.ti),function(t){return [(t.posX !== undefined && t.posY !== undefined)?_c('floorplan-table',{key:t.id,ref:`tabitem-${t.id}`,refInFor:true,attrs:{\"data-ref\":t.id,\"tab-item\":t,\"reservations\":_vm.reservationsForTable(t.id),\"upcoming-reservations\":_vm.upcomingReservationsForTable(t.id),\"editable\":_vm.editable,\"selected\":_vm.isTabItemSelected(t.id),\"overbooked\":_vm.isTabItemOverbooked(t.id),\"zoom\":_vm.zoom},on:{\"selected\":_vm.tabItemSelected,\"rotate\":_vm.rotateTable,\"remove\":_vm.removeTable,\"change-shape\":_vm.changeTableShape,\"context-menu\":_vm.showContextMenu}}):_vm._e()]})],2):(!_vm.isSetUp && !_vm.editable)?[_c('div',{staticClass:\"d-flex h-100 flex-column justify-center align-center\"},[_c('div',{staticClass:\"mb-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('placeholder.floorplan_not_set_up_yet'))+\" \")]),_c('v-btn',{attrs:{\"outlined\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('setup-floorplan')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.setup_floorplan'))+\" \")])],1)]:_vm._e()],2)\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',{class:[\n 'fp-object noselect',\n {'fp-draggable': _vm.selected},\n {'selected': _vm.selected},\n {'editable': _vm.editable},\n {'theme--dark': _vm.$vuetify.theme.dark}\n ],style:(`\n width: ${(_vm.tableSize.h + 60)}px;\n height: ${(_vm.tableSize.h + 60)}px;\n transform: matrix(${_vm.zoom}, 0, 0, ${_vm.zoom}, ${_vm.x*_vm.zoom}, ${_vm.y*_vm.zoom})`),on:{\"contextmenu\":function($event){$event.preventDefault();return _vm.onRightClick.apply(null, arguments)},\"click\":function($event){$event.stopPropagation();return _vm.select.apply(null, arguments)}}},[_c('div',{staticClass:\"fp-toolbar\"},[(_vm.selected && _vm.editable)?[_c('v-btn',{attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":_vm.rotateCcw}},[_c('v-icon',[_vm._v(\" mdi-rotate-left \")])],1),_c('v-btn',{attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":_vm.rotateCw}},[_c('v-icon',[_vm._v(\" mdi-rotate-right \")])],1)]:_vm._e()],2),_c('div',{staticClass:\"fp-inner\"},[_c('svg',{staticStyle:{\"overflow\":\"visible\"},attrs:{\"width\":\"100%\",\"height\":\"100%\",\"viewBox\":`0 0 ${_vm.tableSize.w + 40} ${_vm.tableSize.h + 40}`}},[(_vm.isBlock || _vm.reservation?.holdTabItems)?_c('time-table-striped-fill',{attrs:{\"pattern-id\":`fp-pattern-stripe-${_vm.reservation?.id}`,\"pattern-transform\":`rotate(${45-_vm.a})`,\"fill-light\":_vm.fillColor,\"fill-dark\":_vm.darkenColor(_vm.fillColor, _vm.isBlock ? 30 : 15)}}):_vm._e(),_c('g',{attrs:{\"transform\":`rotate(${_vm.a}, ${(_vm.tableSize.w + 40)/2}, ${(_vm.tableSize.h + 40)/2})`}},[(_vm.tabItem.shape === 'SQUARED' || _vm.tabItem.shape === 'HEADSEAT')?_c('floorplan-shape-table-rect',{attrs:{\"fill-color\":_vm.fill,\"stroke-color\":_vm.strokeColor,\"party-size\":_vm.reservation !== undefined ? _vm.reservation.partySize : 0,\"table-size\":_vm.tableSize,\"shape\":_vm.tabItem.shape,\"seats\":_vm.tabItem.seats,\"type\":_vm.type,\"block\":_vm.isBlock}}):(_vm.tabItem.shape === 'ROUNDED')?_c('floorplan-shape-table-round',{attrs:{\"party-size\":_vm.reservation !== undefined ? _vm.reservation.partySize : 0,\"fill-color\":_vm.fill,\"stroke-color\":_vm.strokeColor,\"table-size\":_vm.tableSize,\"seats\":_vm.tabItem.seats,\"block\":_vm.isBlock}}):_vm._e()],1),_c('text',{staticClass:\"fp-table-title\",style:(`font-size: ${_vm.titleFontSize}px;\n stroke: ${_vm.titleStrokeColor};`),attrs:{\"x\":\"50%\",\"y\":_vm.titleYpos,\"dominant-baseline\":\"central\",\"text-anchor\":\"middle\",\"fill\":_vm.titleColor}},[_vm._v(_vm._s(_vm.title))]),(_vm.subtitle !== null)?_c('text',{staticClass:\"fp-table-subtitle\",style:(`stroke: ${_vm.subtitleStrokeColor};`),attrs:{\"x\":\"50%\",\"y\":_vm.subtitleYpos,\"dominant-baseline\":\"central\",\"text-anchor\":\"middle\",\"fill\":_vm.subtitleColor}},[_vm._v(_vm._s(_vm.subtitle))]):_vm._e(),(_vm.partySizeTitle !== null)?_c('text',{staticClass:\"fp-table-subtitle\",style:(`stroke: ${_vm.subtitleStrokeColor};`),attrs:{\"x\":\"50%\",\"y\":_vm.partySizeYpos,\"dominant-baseline\":\"central\",\"text-anchor\":\"middle\",\"fill\":_vm.subtitleColor}},[_vm._v(_vm._s(_vm.partySizeTitle))]):_vm._e(),_c('v-icon',[_vm._v(\"mdi-crown\")])],1)]),_c('div',{staticClass:\"fp-toolbar\"},[(_vm.selected && _vm.editable)?[_c('v-spacer'),_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\",\"x-small\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,false,3735098154)},[_c('v-list',{staticClass:\"py-0\"},[_c('v-list-item',{on:{\"click\":function($event){return _vm.changeTableShape('HEADSEAT')}}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('label.table_type_squared')))])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.changeTableShape('SQUARED')}}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('label.table_type_headseat')))])],1),_c('v-list-item',{on:{\"click\":function($event){return _vm.changeTableShape('ROUNDED')}}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('label.table_type_rounded')))])],1),_c('v-divider'),_c('v-list-item',{on:{\"click\":_vm.removeTable}},[_c('v-list-item-title',{staticClass:\"error--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('button.remove'))+\" \")])],1)],1)],1)]:_vm._e()],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('g',[_c('rect',{attrs:{\"x\":\"20\",\"y\":\"20\",\"fill\":_vm.fillColor,\"stroke\":_vm.strokeColor,\"stroke-width\":\"2\",\"width\":_vm.tableSize.w,\"height\":_vm.tableSize.h,\"rx\":\"3\"}}),_vm._l((_vm.tableSeats.n),function(seat,i){return _c('floorplan-shape-seat',{key:`seat_n_${i}`,attrs:{\"stroke-color\":_vm.strokeColor,\"x\":20 + seat.origin,\"y\":\"12.5\",\"overflow\":seat.isOverflow,\"occupied\":seat.occupied,\"orientation\":\"n\"}})}),_vm._l((_vm.tableSeats.e),function(seat,i){return _c('floorplan-shape-seat',{key:`seat_e_${i}`,attrs:{\"stroke-color\":_vm.strokeColor,\"x\":\"12.5\",\"y\":20 + seat.origin,\"overflow\":seat.isOverflow,\"occupied\":seat.occupied,\"orientation\":\"e\"}})}),_vm._l((_vm.tableSeats.s),function(seat,i){return _c('floorplan-shape-seat',{key:`seat_s_${i}`,attrs:{\"stroke-color\":_vm.strokeColor,\"x\":20 + seat.origin,\"y\":_vm.tableSize.h + 40 - 12.5,\"overflow\":seat.isOverflow,\"occupied\":seat.occupied,\"orientation\":\"s\"}})}),_vm._l((_vm.tableSeats.w),function(seat,i){return _c('floorplan-shape-seat',{key:`seat_w_${i}`,attrs:{\"stroke-color\":_vm.strokeColor,\"x\":_vm.tableSize.w + 40 - 12.5,\"y\":20 + seat.origin,\"overflow\":seat.isOverflow,\"occupied\":seat.occupied,\"orientation\":\"w\"}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('g',[(!_vm.overflow)?_c('g',[_c('path',{attrs:{\"d\":`M ${_vm.x} ${_vm.y} ${_vm.path}`,\"stroke\":_vm.strokeColor,\"fill\":\"transparent\",\"stroke-linecap\":\"round\",\"stroke-width\":\"3\"}}),(_vm.occupied)?_c('circle',{attrs:{\"cx\":_vm.horizontal ? _vm.x+15 : _vm.x,\"cy\":_vm.orientation === 's' ? _vm.y : _vm.y + 15,\"r\":\"6\",\"fill\":_vm.strokeColor}}):_vm._e()]):_c('floorplan-shape-overflow',{attrs:{\"x\":_vm.horizontal ? _vm.x + 7.5 : _vm.x,\"y\":_vm.y + 8,\"horizontal\":_vm.horizontal,\"stroke-color\":_vm.strokeColor}})],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('g',[_c('circle',{attrs:{\"r\":\"1.25\",\"cx\":_vm.x,\"cy\":_vm.y,\"fill\":_vm.strokeColor}}),_c('circle',{attrs:{\"r\":\"1.25\",\"cx\":_vm.horizontal ? _vm.x + 6 : _vm.x,\"cy\":_vm.horizontal ? _vm.y : _vm.y + 6,\"fill\":_vm.strokeColor}}),_c('circle',{attrs:{\"r\":\"1.25\",\"cx\":_vm.horizontal ? _vm.x + 12 : _vm.x,\"cy\":_vm.horizontal ? _vm.y : _vm.y + 12,\"fill\":_vm.strokeColor}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'FloorplanShapeOverflow',\n props: {\n x: { type: Number, required: true },\n y: { type: Number, required: true },\n horizontal: { type: Boolean, required: false, default: false },\n strokeColor: { type: String, required: true },\n },\n data() {\n return { };\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeOverflow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeOverflow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanShapeOverflow.vue?vue&type=template&id=6259cb69&\"\nimport script from \"./FloorplanShapeOverflow.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanShapeOverflow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport FloorplanShapeOverflow from './FloorplanShapeOverflow.vue';\n\nexport default Vue.extend({\n name: 'FloorplanShapeSeat',\n components: {\n FloorplanShapeOverflow,\n },\n mixins: [],\n props: {\n x: { type: Number, required: true },\n y: { type: Number, required: true },\n occupied: { type: Boolean, required: false, default: false },\n strokeColor: { type: String, required: true },\n orientation: { type: String, required: true },\n overflow: { type: Boolean, required: false, default: false },\n },\n data() {\n return {\n };\n },\n computed: {\n horizontal(): boolean {\n return this.orientation === 'n' || this.orientation === 's';\n },\n path(): string {\n switch (this.orientation) {\n case 'n':\n return 'c 5 -12.5, 25 -12.5, 30 0';\n case 'e':\n return 'c -12.5 5, -12.5 25, 0 30';\n case 's':\n return 'c 5 12.5, 25 12.5, 30 0';\n case 'w':\n return 'c 12.5 5, 12.5 25, 0 30';\n default:\n return '';\n }\n },\n },\n watch: {\n\n },\n mounted() {\n\n },\n methods: {\n\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeSeat.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeSeat.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanShapeSeat.vue?vue&type=template&id=1363a4ca&scoped=true&\"\nimport script from \"./FloorplanShapeSeat.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanShapeSeat.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1363a4ca\",\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport FloorplanShapeSeat from './FloorplanShapeSeat.vue';\nimport { TableSeatType, ITableSize, ITableSeats } from './floorplan-types';\n\nexport default Vue.extend({\n name: 'FloorplanShapeTableRect',\n components: { FloorplanShapeSeat },\n props: {\n partySize: { type: Number, required: false, default: 0 },\n fillColor: { type: String, required: true },\n strokeColor: { type: String, required: true },\n seats: { type: Number, required: true },\n tableSize: { type: Object as PropType, required: true },\n shape: { type: String as PropType, required: true },\n },\n data() { return { }; },\n computed: {\n tableSeats(): ITableSeats | null {\n let eSeatCount = 0;\n let wSeatCount = 0;\n\n if (this.shape === TableSeatType.HEADSEAT) {\n eSeatCount = this.seats === 2 ? 1 : Math.ceil((this.seats - 2) / 2);\n wSeatCount = this.seats - eSeatCount - 2;\n } else {\n eSeatCount = Math.ceil(this.seats / 2);\n wSeatCount = this.seats - eSeatCount;\n }\n\n const eSeatToDraw = Math.min(8, eSeatCount);\n const wSeatToDraw = Math.min(8, wSeatCount);\n const seatSpacing = (this.tableSize.h - (eSeatToDraw * 30)) / (eSeatToDraw + 1);\n const seatSpacingWidth = (this.tableSize.w - 30) / 2;\n\n const ts = {} as ITableSeats;\n\n let occupiedSeats = this.partySize;\n if (this.shape === TableSeatType.HEADSEAT && this.seats > 0) {\n ts.n = [{ origin: seatSpacingWidth, occupied: occupiedSeats > 0 }];\n occupiedSeats -= 1;\n if (this.seats >= 3) {\n ts.s = [{ origin: seatSpacingWidth, occupied: occupiedSeats > 0 }];\n occupiedSeats -= 1;\n }\n }\n\n let seatsForE = Math.ceil(occupiedSeats / 2);\n let seatsForW = occupiedSeats - seatsForE;\n\n ts.e = [];\n for (let i = 0; i < eSeatToDraw; i += 1) {\n ts.e.push({ origin: ((i + 1) * seatSpacing) + i * 30, occupied: seatsForE > 0 });\n ts.e[i].isOverflow = (eSeatCount > eSeatToDraw && i === 6);\n seatsForE -= 1;\n }\n\n ts.w = [];\n for (let i = 0; i < wSeatToDraw; i += 1) {\n ts.w.push({ origin: ((i + 1) * seatSpacing) + i * 30, occupied: seatsForW > 0 });\n ts.w[i].isOverflow = (wSeatCount > wSeatToDraw && i === 6);\n seatsForW -= 1;\n }\n\n return ts;\n },\n },\n watch: { },\n mounted() { },\n methods: { },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeTableRect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeTableRect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanShapeTableRect.vue?vue&type=template&id=3784988c&\"\nimport script from \"./FloorplanShapeTableRect.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanShapeTableRect.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('g',[_c('circle',{attrs:{\"cx\":(40 + _vm.tableSize.w)/2,\"cy\":(40 + _vm.tableSize.w)/2,\"r\":_vm.tableSize.w/2,\"stroke\":_vm.strokeColor,\"stroke-width\":\"2\",\"fill\":_vm.fillColor}}),_vm._l((_vm.tableSeats.n),function(seat,i){return _c('floorplan-shape-seat',{key:`seat_n_${i}`,attrs:{\"occupied\":seat.occupied,\"overflow\":seat.isOverflow,\"orientation\":\"n\",\"stroke-color\":_vm.strokeColor,\"x\":(40 + _vm.tableSize.w)/2-15,\"y\":\"12.5\",\"transform\":`rotate(${seat.rotation}, ${(40 + _vm.tableSize.w)/2}, ${(40 + _vm.tableSize.w)/2})`}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport FloorplanShapeSeat from './FloorplanShapeSeat.vue';\nimport { ITableSize, ITableSeats } from './floorplan-types';\n\nexport default Vue.extend({\n name: 'FloorplanShapeTableRound',\n components: { FloorplanShapeSeat },\n props: {\n fillColor: { type: String, required: true },\n strokeColor: { type: String, required: true },\n seats: { type: Number, required: true },\n partySize: { type: Number, required: false, default: 0 },\n tableSize: { type: Object as PropType, required: true },\n },\n data() { return { }; },\n computed: {\n tableSeats(): ITableSeats | null {\n const seatsToDraw = Math.min(28, this.seats);\n const anglePerSeat = 360 / seatsToDraw;\n\n const ts = {} as ITableSeats;\n ts.n = [];\n let occupied = this.partySize;\n for (let i = 0; i < seatsToDraw; i += 1) {\n ts.n.push({ origin: 0, rotation: anglePerSeat * i, occupied: occupied > 0 });\n occupied -= 1;\n }\n if (seatsToDraw < this.seats) {\n ts.n[1].isOverflow = true;\n }\n return ts;\n },\n },\n watch: { },\n mounted() { },\n methods: { },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeTableRound.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanShapeTableRound.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanShapeTableRound.vue?vue&type=template&id=42d48f16&\"\nimport script from \"./FloorplanShapeTableRound.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanShapeTableRound.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport Reservation, { ReservationStatus } from '@/model/Reservation';\nimport { darkenColor } from '@/services/color-utils';\nimport TabItem from '@/model/TabItem';\nimport TimeTableStripedFill from '@/components/views/tables/TimeTableStripedFill.vue';\nimport FloorplanShapeTableRect from './FloorplanShapeTableRect.vue';\nimport FloorplanShapeTableRound from './FloorplanShapeTableRound.vue';\nimport { TableSeatType, ITableSize } from './floorplan-types';\n\nexport default Vue.extend({\n name: 'FloorplanTable',\n components: {\n FloorplanShapeTableRect,\n FloorplanShapeTableRound,\n TimeTableStripedFill,\n },\n mixins: [],\n props: {\n tabItem: { type: Object as PropType, required: true },\n editable: { type: Boolean, required: false, default: false },\n reservations: { type: Object as PropType, required: false, default: undefined },\n upcomingReservations: { type: Object as PropType, required: false, default: undefined },\n selected: { type: Boolean, required: false, default: false },\n overbooked: { type: Boolean, required: false, default: false },\n zoom: { type: Number, required: false, default: 1 },\n },\n data() {\n return { };\n },\n computed: {\n title(): string {\n return `${this.tabItem.no}`;\n },\n reservation(): Reservation | undefined {\n return this.reservations?.find(Boolean);\n },\n upcomingReservation(): Reservation | undefined {\n return this.upcomingReservations?.find(Boolean);\n },\n // Colors\n fill(): string {\n if (this.isBlock || this.reservation?.holdTabItems) {\n return `url(#fp-pattern-stripe-${this.reservation?.id})`;\n }\n return this.fillColor;\n },\n fillColor(): string {\n if (this.upcomingReservation) {\n return this.$vuetify.theme.dark ? '#3F3F49' : '#C6C6C8';\n }\n\n if (this.reservation === undefined) {\n return this.$vuetify.theme.dark ? '#1E1E2B' : '#f9f9f9';\n }\n\n if (this.isBlock) {\n return this.$vuetify.theme.dark ? '#666668' : '#C6C6C8';\n }\n\n if (this.overbooked) {\n return '#FF002B';\n }\n\n // TODO MAYBE refactor with Timetable, it's the same colors probably\n switch (this.reservation.status) {\n case ReservationStatus.CheckedIn: return '#FF8262'; // 'orange';\n case ReservationStatus.Seated: return '#00A26F'; // 'green';\n case ReservationStatus.NonConfirmed: return '#E42DD0'; // 'purple';\n case ReservationStatus.CheckedOut: return '#858593'; // gray-50\n default: return '#3355FF'; // primary;\n }\n },\n // Partysize & Name\n partySizeTitle(): string | null {\n if (this.isBlock || this.upcomingReservation?.isBlock) {\n return this.$i18n.tc('label.blocked');\n }\n if (this.reservation) {\n return `${this.reservation.partySize} p. ${this.reservation.nameText}`;\n }\n if (this.upcomingReservation) {\n return `${this.upcomingReservation.partySize} p.`;\n }\n return null;\n },\n partySizeYpos(): number {\n return this.subtitleYpos + 13;\n },\n // Subtitle\n subtitle(): string | null {\n if (this.reservation) {\n const start = this.$localized.hourMinText(this.reservation.dateBegin);\n const end = this.$localized.hourMinText(this.reservation.dateEnd);\n return `${start} - ${end}`;\n } if (this.upcomingReservation) {\n const start = this.$localized.hourMinText(this.upcomingReservation.dateBegin);\n return `${this.$i18n.t('label.next')} ${start}`;\n }\n return null;\n },\n subtitleYpos(): number {\n return (this.tableSize.h + 42) / 2;\n },\n subtitleColor(): string {\n return this.titleColor;\n },\n subtitleStrokeColor(): string {\n return this.strokeColor;\n },\n // TITLE\n titleColor(): string {\n if (this.subtitle === null) {\n return this.$vuetify.theme.dark ? '#D6D6D8' : '#171721';\n }\n return 'white';\n },\n titleYpos(): number | string {\n if (this.subtitle === null) {\n return '50%';\n }\n return ((this.tableSize.h + 60) / 2) - 26;\n },\n titleStrokeColor(): string {\n if (this.subtitle === null) {\n return 'transparent';\n }\n return this.strokeColor;\n },\n strokeColor(): string {\n if ((!this.upcomingReservation && this.reservation === undefined) || this.isBlock) {\n return this.$vuetify.theme.dark ? '#D6D6D8' : '#171721';\n }\n return darkenColor(this.fillColor, this.$vuetify.theme.dark ? -41 : 51);\n },\n\n // Position\n x(): number {\n return (this.tabItem.posX || 0) - ((this.tableSize.h + 60) / 2);\n },\n y(): number {\n return (this.tabItem.posY || 0) - ((this.tableSize.h + 60) / 2);\n },\n a(): number {\n return this.tabItem.rotation || 0;\n },\n\n // Font Sizes\n titleFontSize(): number {\n if (this.subtitle !== null) {\n return 20;\n }\n if (this.tabItem.shape === TableSeatType.ROUNDED) {\n return this.tabItem.seats <= 4 ? 28 : 42;\n }\n return this.tabItem.seats <= 4 ? 36 : 42;\n },\n\n //\n tableSize(): ITableSize {\n const { seats } = this.tabItem;\n if (this.tabItem.shape === TableSeatType.SQUARED) {\n if (seats <= 1) { return { w: 40, h: 40 }; }\n if (seats <= 2) { return { w: 80, h: 80 }; }\n return { w: 80, h: Math.min(300, 80 + Math.trunc((seats - 1) / 2.0) * 40.0) };\n }\n if (this.tabItem.shape === TableSeatType.HEADSEAT) {\n if (seats <= 1) { return { w: 40, h: 40 }; }\n if (seats <= 2) { return { w: 80, h: 80 }; }\n return { w: 80, h: Math.min(300, 80 + Math.trunc((seats - 3) / 2.0) * 40.0) };\n }\n if (this.tabItem.shape === TableSeatType.ROUNDED) {\n if (seats <= 1) { return { w: 40, h: 40 }; }\n if (seats <= 2) { return { w: 60, h: 60 }; }\n return {\n w: Math.min(300, 40 + Math.trunc((seats - 1) / 2.0) * 20.0),\n h: Math.min(300, 40 + Math.trunc((seats - 1) / 2.0) * 20.0),\n };\n }\n return { w: 0, h: 0 };\n },\n isBlock(): boolean {\n return this.reservation !== undefined && this.reservation.isBlock;\n },\n },\n methods: {\n select() {\n this.$emit('selected', this.tabItem.id);\n },\n rotateCcw() {\n this.$emit('rotate', this.tabItem.id, -22.5);\n },\n rotateCw() {\n this.$emit('rotate', this.tabItem.id, 22.5);\n },\n changeTableShape(shape: string) {\n this.$emit('change-shape', this.tabItem.id, shape);\n },\n removeTable() {\n this.$emit('remove', this.tabItem.id);\n },\n onRightClick(e: MouseEvent) {\n this.$emit('context-menu', this.reservation, e);\n },\n darkenColor(c: string, n: number): string {\n return darkenColor(c, n);\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanTable.vue?vue&type=template&id=1e6371f2&\"\nimport script from \"./FloorplanTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanTable.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FloorplanTable.vue?vue&type=style&index=0&id=1e6371f2&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue, { defineComponent } from 'vue';\nimport interact from 'interactjs';\nimport TabItem from '@/model/TabItem';\nimport { BoundingBox, TableSeatType } from '../floorplan-types';\n\nconst FP_CANVAS_SNAP = 20;\n\nexport default defineComponent({\n props: {\n editable: { type: Boolean, required: false, default: false },\n },\n data() {\n return {\n ti: [] as TabItem[],\n originTopScroll: 0,\n originLeftScroll: 0,\n zoom: 1,\n };\n },\n watch: {\n zoom() {\n this.destroyInteract();\n this.initInteract();\n },\n },\n\n mounted() {\n this.initInteract();\n },\n beforeDestroy() {\n this.destroyInteract();\n },\n methods: {\n initInteract() {\n if (!this.editable) { return; }\n\n interact('.fp-draggable')\n // .on('hold', (evt: any) => {\n // // console.log('[fp-canvas] Hold');\n // })\n .draggable({\n modifiers: [\n interact.modifiers.snap({\n targets: [\n interact.createSnapGrid({ x: FP_CANVAS_SNAP * this.zoom, y: FP_CANVAS_SNAP * this.zoom }),\n ],\n offset: 'parent',\n range: Infinity,\n relativePoints: [{ x: 0, y: 0 }],\n }),\n ],\n inertia: false,\n autoScroll: {\n container: document.getElementById('fp-canvas-wrapper')!,\n margin: 80,\n distance: 80,\n interval: 1000,\n speed: 400,\n },\n })\n .on('dragstart', (evt) => {\n // const { target } = evt;\n // const ref = target.dataset.ref || '';\n\n const canvasWrapperElm = document.getElementById('fp-canvas-wrapper')! as HTMLDivElement;\n this.originTopScroll = canvasWrapperElm.scrollTop;\n this.originLeftScroll = canvasWrapperElm.scrollLeft;\n })\n // .on('move', (evt) => {\n\n // })\n .on('dragmove', (evt) => {\n const { target } = evt;\n const tabItemId = parseInt(target.dataset.ref, 10);\n if (tabItemId === undefined) { return; }\n\n const canvasWrapperElm = document.getElementById('fp-canvas-wrapper')! as HTMLDivElement;\n const diffY = canvasWrapperElm.scrollTop - this.originTopScroll;\n const diffX = canvasWrapperElm.scrollLeft - this.originLeftScroll;\n\n this.moveTabItem(\n tabItemId,\n evt.modifiers[0].target.x - evt.modifiers[0].target.offset.x + diffX,\n (evt.modifiers[0].target.y - evt.modifiers[0].target.offset.y + diffY),\n );\n })\n .on('dragend', (evt) => {\n console.log('dragend');\n\n this.originTopScroll = 0;\n this.originLeftScroll = 0;\n\n const { target } = evt;\n const tabId = parseInt(target.dataset.ref, 10);\n if (tabId === undefined) { return; }\n\n this.modelChanged(tabId);\n });\n },\n destroyInteract() {\n interact('.fp-draggable').unset();\n },\n moveTabItem(tabItemId: number, x: number, y: number) {\n // console.log(`[fp-canvas] Moved Item ${tabItemId}; delta ${x} ${y}`);\n\n const tabItem = this.ti.find((t) => t.id === tabItemId);\n if (!tabItem) { return; }\n\n // console.log(`[fp-canvas] Moved Item from ${tabItem.posX} ${tabItem.posY}`);\n tabItem.posX = x / this.zoom + this.sizeForTabItem(tabItem) / 2;\n tabItem.posY = y / this.zoom + this.sizeForTabItem(tabItem) / 2;\n\n // console.log(`[fp-canvas] Moved Item to ${tabItem.posX} ${tabItem.posY}`);\n },\n\n // eslint-disable-next-line vue/no-unused-properties\n rotateTable(tabItemId: number, angle: number) {\n // console.log(`[fp-canvas] Rotated Item ${tabItemId}; angle ${angle}`);\n\n const tabItem = this.ti.find((t) => t.id === tabItemId);\n if (!tabItem) { return; }\n\n tabItem.rotation = (tabItem.rotation || 0) + angle;\n this.$emit('update:tabItems', this.ti);\n },\n\n // eslint-disable-next-line vue/no-unused-properties\n removeTable(tabItemId: number) {\n const tabItem = this.ti.find((t) => t.id === tabItemId);\n if (!tabItem) { return; }\n\n tabItem.posX = undefined;\n tabItem.posY = undefined;\n this.$emit('update:tabItems', this.ti);\n },\n\n // eslint-disable-next-line vue/no-unused-properties\n changeTableShape(tabId: number, shape: string) {\n const tabItem = this.ti.find((t) => t.id === tabId);\n if (!tabItem) { return; }\n\n tabItem.shape = shape;\n this.$emit('update:tabItems', this.ti);\n },\n\n // eslint-disable-next-line vue/no-unused-properties\n placeTable(tabItem: TabItem) {\n // console.log(`[fp-canvas] Placing TabItem: ${tabItem.id}`);\n\n // eslint-disable-next-line no-param-reassign\n tabItem.shape = TableSeatType.SQUARED;\n\n const canvasWrapperElm = document.getElementById('fp-canvas-wrapper')! as HTMLDivElement;\n const maxCanvasRect = canvasWrapperElm.getBoundingClientRect();\n // (this.$refs.fpCanvasDiv as HTMLDivElement).getBoundingClientRect();\n // console.log(maxCanvasRect);\n\n const i = this.ti.findIndex((t) => t.id === tabItem.id);\n\n const size = this.sizeForTabItem(tabItem);\n // console.log(tabItem);\n // console.log(`Size: ${size}`);\n\n for (let y = 0; ; y += FP_CANVAS_SNAP / 2) {\n for (let x = 0; ; x += FP_CANVAS_SNAP / 2) {\n const bbox = new BoundingBox(x, y, size, size);\n\n // eslint-disable-next-line no-continue\n if (bbox.x1 < 0) { continue; }\n if (bbox.y1 < 0) { break; }\n if (bbox.x2 > maxCanvasRect.width) { break; }\n\n if (!this.isOverlappingTables(tabItem, bbox)) {\n // eslint-disable-next-line no-param-reassign\n tabItem.posX = x; tabItem.posY = y; tabItem.rotation = 0;\n\n Vue.set(this.ti, i, tabItem);\n this.$emit('update:tabItems', this.ti);\n return;\n }\n }\n }\n },\n isOverlappingTables(tabItem: TabItem, bbox: BoundingBox): boolean {\n return this.ti.some((t) => {\n if (t.id !== tabItem.id && t.posX !== undefined && t.posY !== undefined) {\n // console.log(`Evaluating overlap: ${t.id}`);\n // console.log(`Candidate (bbox): ${bbox.x1}, ${bbox.y1}, ${bbox.x2}, ${bbox.y2}`);\n const tSize = this.sizeForTabItem(t);\n const tBbox = new BoundingBox(t.posX || 0, t.posY || 0, tSize, tSize);\n // console.log(`existing (Tbox): ${tBbox.x1}, ${tBbox.y1}, ${tBbox.x2}, ${tBbox.y2}`);\n\n if (bbox.overlaps(tBbox)) { return true; }\n }\n return false;\n });\n },\n\n modelChanged(tabItemId: number) {\n // console.log(`[fp-canvas] Drag Ended: ${tabItemId}`);\n this.$emit('update:tabItems', this.ti);\n },\n\n sizeForTabItem(ti: TabItem): number {\n if (ti.shape === TableSeatType.SQUARED) {\n if (ti.seats <= 1) { return 80 + 60; }\n if (ti.seats <= 2) { return 80 + 60; }\n return Math.min(300, 80 + Math.trunc((ti.seats - 1) / 2.0) * 40.0) + 60;\n }\n if (ti.shape === TableSeatType.HEADSEAT) {\n if (ti.seats <= 1) { return 40 + 60; }\n if (ti.seats <= 2) { return 80 + 60; }\n return Math.min(300, 80 + Math.trunc((ti.seats - 3) / 2.0) * 40.0) + 60;\n }\n if (ti.shape === TableSeatType.ROUNDED) {\n if (ti.seats <= 1) { return 40 + 60; }\n if (ti.seats <= 2) { return 60 + 60; }\n return Math.min(300, 40 + Math.trunc((ti.seats - 1) / 2.0) * 20.0) + 60;\n }\n return 0;\n },\n\n },\n\n});\n","\nimport Vue, { PropType } from 'vue';\nimport FloorplanTable from '@/components/views/floorplan/FloorplanTable.vue';\nimport TabItem from '@/model/TabItem';\nimport { cloneModel } from '@/model/model-utils';\nimport Reservation from '@/model/Reservation';\nimport StatusContextMenu from '@/components/reservation/StatusContextMenu.vue';\nimport EditableCanvas from './mixins/editable-canvas';\nimport { TableSeatType } from './floorplan-types';\n\nexport default Vue.extend({\n name: 'FloorplanCanvas',\n components: {\n FloorplanTable,\n StatusContextMenu,\n },\n mixins: [EditableCanvas],\n props: {\n editable: { type: Boolean, required: false, default: false },\n tabItems: { type: Object as PropType>, required: true },\n ongoingReservations: {\n type: Object as PropType | undefined>,\n required: false,\n default: undefined,\n },\n upcomingReservations: {\n type: Object as PropType | undefined>,\n required: false,\n default: undefined,\n },\n selectedTabItemIds: { type: Array as PropType>, required: false, default: () => [] },\n overbookedTabItemIds: { type: Array as PropType>, required: false, default: () => [] },\n zoom: { type: Number, required: false, default: 1 },\n isLoaded: { type: Boolean, required: false, default: true },\n },\n data() {\n return {\n ti: [] as TabItem[],\n contextMenu: {\n reservation: null as null | Reservation,\n visible: false,\n x: 0,\n y: 0,\n },\n };\n },\n computed: {\n canvasOffset(): string {\n let marginLeft = 0;\n let marginTop = 0;\n\n this.ti.forEach((t) => {\n if (t.posX === undefined || t.posY === undefined) { return; }\n\n const tSize = this.sizeForTabItem(t);\n const x1 = (t.posX - tSize / 2);\n const y1 = (t.posY - tSize / 2);\n\n if (x1 < marginLeft) {\n marginLeft = x1;\n }\n if (y1 < marginTop) {\n marginTop = y1;\n }\n });\n\n marginLeft = Math.abs(marginLeft) * this.zoom;\n marginTop = Math.abs(marginTop) * this.zoom;\n const width = this.editable ? '3000px' : `calc(100% - ${marginLeft}px)`;\n const height = this.editable ? '3000px' : `calc(100% - ${marginTop}px)`;\n\n return `margin-left: ${marginLeft}px; margin-top: ${marginTop}px; height: ${height}; width: ${width}`;\n },\n isSetUp(): boolean {\n if (this.editable) { return true; }\n return this.ti.find((t) => (t.posX !== undefined && t.posY !== undefined)) !== undefined;\n },\n },\n\n watch: {\n tabItems() {\n this.ti = [];\n this.tabItems.forEach((t) => { this.ti.push(cloneModel(t)); });\n },\n selectedTabItemIds() {\n if (this.selectedTabItemIds.length === 0) { return; }\n const selectedTabItemId = this.selectedTabItemIds[0];\n const tabItemVue = (this.$refs[`tabitem-${selectedTabItemId}`] as Vue[])[0];\n const tabItemEl = tabItemVue.$el as any;\n\n if (typeof tabItemEl.scrollIntoViewIfNeeded === 'function') {\n tabItemEl.scrollIntoViewIfNeeded(true);\n }\n // TODO: maybe provide custom implementation for firefox browsers\n },\n },\n\n beforeMount() {\n this.tabItems.forEach((t) => { this.ti.push(cloneModel(t)); });\n },\n\n mounted() { },\n\n methods: {\n tabItemSelected(tabItemId: number) {\n this.$emit('selected', tabItemId, this.reservationsForTable(tabItemId));\n },\n deselect() {\n this.$emit('selected', undefined);\n },\n\n isTabItemSelected(tabItemId: number): boolean {\n if (this.selectedTabItemIds === undefined) { return false; }\n return (this.selectedTabItemIds as number[]).includes(tabItemId);\n },\n isTabItemOverbooked(tabItemId: number): boolean {\n if (this.overbookedTabItemIds === undefined) { return false; }\n return (this.overbookedTabItemIds as number[]).includes(tabItemId);\n },\n sizeForTabItem(ti: TabItem): number {\n if (ti.shape === TableSeatType.SQUARED) {\n if (ti.seats <= 1) { return 80 + 60; }\n if (ti.seats <= 2) { return 80 + 60; }\n return Math.min(300, 80 + Math.trunc((ti.seats - 1) / 2.0) * 40.0) + 60;\n }\n if (ti.shape === TableSeatType.HEADSEAT) {\n if (ti.seats <= 1) { return 40 + 60; }\n if (ti.seats <= 2) { return 80 + 60; }\n return Math.min(300, 80 + Math.trunc((ti.seats - 3) / 2.0) * 40.0) + 60;\n }\n if (ti.shape === TableSeatType.ROUNDED) {\n if (ti.seats <= 1) { return 40 + 60; }\n if (ti.seats <= 2) { return 60 + 60; }\n return Math.min(300, 40 + Math.trunc((ti.seats - 1) / 2.0) * 20.0) + 60;\n }\n return 0;\n },\n reservationsForTable(tabItemId: number): Reservation[] | undefined {\n return this.ongoingReservations?.get(tabItemId);\n },\n upcomingReservationsForTable(tabItemId: number): Reservation[] | undefined {\n if (this.ongoingReservations?.get(tabItemId)) return undefined;\n return this.upcomingReservations?.get(tabItemId);\n },\n showContextMenu(r: Reservation, evt: MouseEvent) {\n if (!r) { return; }\n this.contextMenu.x = evt.clientX;\n this.contextMenu.y = evt.clientY;\n this.contextMenu.reservation = r;\n this.contextMenu.visible = true;\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanCanvas.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanCanvas.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanCanvas.vue?vue&type=template&id=6d661bdd&scoped=true&\"\nimport script from \"./FloorplanCanvas.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanCanvas.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FloorplanCanvas.vue?vue&type=style&index=0&id=6d661bdd&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d661bdd\",\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('v-subheader',{class:`${_vm.backgroundColor} ${_vm.textColor} guest-list-header text-h6 font-weight-medium`},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('v-divider')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'GuestListHeaderRow',\n props: {\n title: { type: String, required: true },\n },\n computed: {\n textColor(): string {\n return this.$vuetify.theme.dark ? 'grey--text' : 'secondary--text';\n },\n backgroundColor(): string {\n return this.$vuetify.theme.dark ? 'black' : 'grey lighten-3';\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestListHeaderRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestListHeaderRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestListHeaderRow.vue?vue&type=template&id=7bdff32c&scoped=true&\"\nimport script from \"./GuestListHeaderRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestListHeaderRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GuestListHeaderRow.vue?vue&type=style&index=0&id=7bdff32c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7bdff32c\",\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('v-list-item',{key:_vm.r.id,staticClass:\"pa-0\",attrs:{\"value\":_vm.r.id}},[_c('v-list-item-content',{staticClass:\"mh-48 py-1 pl-0 pr-2\"},[_c('v-lazy',{staticClass:\"w-100\"},[(_vm.compact)?_c('v-row',{staticClass:\"pa-0 ma-0 pl-0 w-100\"},[_c('v-col',{staticClass:\"pa-0 ma-0\"},[_c('v-row',{staticClass:\"pa-0 ma-0 d-flex align-center\"},[_c('v-col',{staticClass:\"pa-0 ma-0 flex-grow-0 flex-shrink-1\",style:(`min-width: ${_vm.searchResult ? 160 : 70}px`)},[(!_vm.r.isBlock)?_c('div',{staticClass:\"glr-icon-column pa-0 ma-0\"},[(_vm.r.isFlagged)?_c('v-icon',{staticClass:\"pl-1 pa-0\",attrs:{\"x-small\":\"\",\"color\":\"yellow\"}},[_vm._v(\" mdi-circle \")]):_vm._e(),(_vm.unreadReservations && _vm.r.isUnread)?_c('v-btn',{attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.markAsRead.apply(null, arguments)},\"mousedown\":function($event){$event.stopPropagation();}},nativeOn:{\"touchstart\":function($event){$event.stopPropagation();}}},[_c('v-icon',{attrs:{\"x-small\":\"\",\"color\":\"brand\"}},[_vm._v(\" mdi-circle \")])],1):_vm._e()],1):_vm._e(),(_vm.searchResult)?_c('span',{staticClass:\"glr-search-time font-weight-medium pr-5\"},[_vm._v(_vm._s(_vm.$localized.hourMinText(_vm.r.dateBegin)))]):_vm._e(),(!_vm.r.isBlock)?_c('div',{staticClass:\"glr-partysize-compact\"},[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.r.partySizeText))]),_c('span',{staticClass:\"text-caption\"},[_vm._v(\"p.\")])]):_c('div',{staticStyle:{\"margin-left\":\"20px\",\"min-width\":\"250px\",\"display\":\"inline-block\"}},[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('label.table_blocked')))])])]),_c('v-col',{class:[\n 'pa-0 ma-0 text-right flex-grow-1 flex-shrink-0 text-body-2 ellipsize',\n {'error--text': _vm.r.tabItems.length === 0}]},[_vm._v(\" \"+_vm._s(_vm.r.tabText)+\" \"),(_vm.r.tabItems.length > 0)?[_vm._v(\" - \"),_c('span',{staticClass:\"font-weight-bold\",domProps:{\"innerHTML\":_vm._s(_vm.tablesHtmlText)}})]:_vm._e()],2)],1),_c('v-row',{staticClass:\"pa-0 ma-0 d-flex align-center\"},[(!_vm.r.isBlock)?_c('v-col',{staticClass:\"pa-0 ma-0 flex-grow-1 flex-shrink-1 ellipsize\"},[_c('div',{staticClass:\"glr-star-compact pa-0 ma-0\"},[(_vm.r.isStarred)?_c('v-icon',{staticStyle:{\"padding-left\":\"3px!important\",\"padding-bottom\":\"3px\"},attrs:{\"color\":\"primary\",\"small\":\"\"}},[_vm._v(\" mdi-star \")]):_vm._e()],1),(_vm.r.contact.isVIP)?_c('div',{staticClass:\"glr-star-compact pa-0 ma-0\"},[_c('v-icon',{staticStyle:{\"padding-bottom\":\"3px\"},attrs:{\"color\":\"primary\",\"small\":\"\"}},[_vm._v(\" mdi-crown \")])],1):_vm._e(),(_vm.r.nameText)?_c('span',{staticClass:\"font-weight-medium text-subtitle-1\"},[_vm._v(_vm._s(_vm.r.nameText))]):_c('span',{staticClass:\"text--secondary text-subtitle-1\"},[_vm._v(_vm._s(_vm.isWalkin ? _vm.$t('code.booking_type.walkin') : _vm.$t('placeholder.no_name')))]),(_vm.r.contact.reservationCount !== 0)?_c('sup',{staticClass:\"pl-1\"},[_vm._v(_vm._s(_vm.r.contact.reservationCount))]):_vm._e(),(_vm.r.contact.companyName)?_c('div',{staticClass:\"ml-5 mb-1 glr-compact-company text-body-2 text--secondary\"},[_vm._v(\" \"+_vm._s(_vm.r.contact.companyName)+\" \")]):_vm._e()]):_vm._e(),(!_vm.r.isBlock)?_c('v-col',{staticClass:\"glr-block-125 pa-0 ma-0 text-right\"},[(_vm.searchResult)?_c('v-btn',{staticStyle:{\"min-width\":\"125px\"},attrs:{\"depressed\":\"\",\"outlined\":_vm.statusButtonOutlined(_vm.r.status),\"small\":\"\",\"color\":_vm.colorStatusButton}},[_vm._v(\" \"+_vm._s(_vm.$t(`code.status.${_vm.r.statusText}`))+\" \")]):_c('status-selection-menu',{attrs:{\"value\":_vm.r.status,\"reservation\":_vm.r},on:{\"item-clicked\":_vm.statusChanged},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: { click } }){return [_c('hideable-badge',{attrs:{\"color\":\"purple darken-3\",\"content\":_vm.waitlistBadgeContent,\"visible\":_vm.waitlistBadgeVisible}},[_c('v-btn',{staticStyle:{\"min-width\":\"125px\"},attrs:{\"depressed\":\"\",\"outlined\":_vm.statusButtonOutlined(_vm.r.status),\"small\":\"\",\"color\":_vm.colorStatusButton},on:{\"click\":function($event){$event.stopPropagation();return click.apply(null, arguments)},\"mousedown\":function($event){$event.stopPropagation();}},nativeOn:{\"touchstart\":function($event){$event.stopPropagation();}}},[_vm._v(\" \"+_vm._s(_vm.$t(`code.status.${_vm.r.statusText}`))+\" \")])],1)]}}],null,false,3366118916)})],1):_vm._e(),_c('v-col',{staticClass:\"glr-chips-compact pa-0 ma-0 text-caption\",attrs:{\"cols\":\"12\"}},[_c('reservation-chips',{attrs:{\"compact\":\"\",\"reservation\":_vm.r}})],1),(_vm.r.notesText)?_c('v-col',{staticClass:\"glr-note-compact pa-0 ma-0 text-caption\",attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"ellipsize d-table-cell\"},[_vm._v(_vm._s(_vm.r.notesText))])]):_vm._e()],1)],1)],1):_c('v-row',{staticClass:\"pl-2 pa-0 ma-0 d-flex align-center\",staticStyle:{\"max-width\":\"100%\"}},[_c('v-col',{staticClass:\"glr-block-20 pa-0 ma-0 ml-1 text-center\"},[(_vm.r.isFlagged)?_c('v-icon',{staticClass:\"pr-0\",staticStyle:{\"margin-bottom\":\"1px\"},attrs:{\"x-small\":\"\",\"color\":\"yellow\"}},[_vm._v(\" mdi-circle \")]):_vm._e(),(_vm.unreadReservations && _vm.r.isUnread)?_c('v-btn',{attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.markAsRead.apply(null, arguments)},\"mousedown\":function($event){$event.stopPropagation();}},nativeOn:{\"touchstart\":function($event){$event.stopPropagation();}}},[_c('v-icon',{attrs:{\"x-small\":\"\",\"color\":\"brand\"}},[_vm._v(\" mdi-circle \")])],1):_vm._e(),(_vm.r.isStarred)?_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-star \")]):_vm._e()],1),_c('v-col',{staticClass:\"glr-block-50 pa-0 ma-0 text-right\"},[_c('span',{staticClass:\"text-h6 font-weight-medium\"},[_vm._v(_vm._s(_vm.r.partySizeText)+\" \"),_c('span',{staticClass:\"text-body-2\"},[_vm._v(\" p.\")])])]),_c('v-col',{staticClass:\"pa-0 flex-grow-1 flex-shrink-1 mx-3\",staticStyle:{\"max-width\":\"200px\"},attrs:{\"align-self\":\"center\"}},[(_vm.r.contact.isVIP)?_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-crown \")]):_vm._e(),(_vm.r.nameText)?_c('span',{staticClass:\"valign-middle font-weight-medium text-h7\"},[_vm._v(\" \"+_vm._s(_vm.r.nameText)+\" \")]):_c('span',{staticClass:\"valign-middle text-h7 text--secondary\"},[_vm._v(_vm._s(_vm.isWalkin ? _vm.$t('code.booking_type.walkin') : _vm.$t('placeholder.no_name')))]),(_vm.r.contact.reservationCount ?? 0 > 0)?_c('sup',[_vm._v(_vm._s(_vm.r.contact.reservationCount))]):_vm._e(),(_vm.r.contact.companyName)?_c('div',{staticClass:\"py-0 text-body-2 text--secondary\"},[_vm._v(\" \"+_vm._s(_vm.r.contact.companyName)+\" \")]):_vm._e()],1),_c('v-col',{staticClass:\"pa-0 text-body-2 text-left flex-grow-1 flex-shrink-1\",staticStyle:{\"max-height\":\"40px\",\"overflow\":\"hidden\"}},[_c('div',{staticClass:\"text-left\"},[_c('reservation-chips',{attrs:{\"reservation\":_vm.r}})],1),_c('v-tooltip',{attrs:{\"bottom\":\"\",\"open-delay\":\"400\",\"max-width\":\"80%\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on, attrs}){return [_c('div',_vm._g(_vm._b({staticClass:\"text-left ellipsize\"},'div',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.r.notesText)+\" \")])]}}])},[_c('span',{staticClass:\"text-pre-wrap\"},[_vm._v(_vm._s(_vm.r.notesText))])])],1),_c('v-col',{class:[\n 'pa-0 text-body-2 text-center ml-3 mr-3 glr-name',\n {'glr-name-compact': _vm.$vuetify.breakpoint.lgAndDown}]},[_c('div',{staticClass:\"text-center font-weight-bold ellipsize\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.tablesHtmlText)}})]),_c('div',{class:[{'error--text': _vm.r.tabItems.length === 0}, 'text-center', 'ellipsize']},[_vm._v(\" \"+_vm._s(_vm.r.tabText)+\" \")])]),_c('v-col',{staticClass:\"glr-status-btn pr-3 pa-0 ma-0 align-center\"},[_c('status-selection-menu',{attrs:{\"value\":_vm.r.status,\"reservation\":_vm.r},on:{\"item-clicked\":_vm.statusChanged},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on: { click } }){return [_c('hideable-badge',{attrs:{\"color\":\"purple darken-4\",\"content\":_vm.waitlistBadgeContent,\"visible\":_vm.waitlistBadgeVisible}},[_c('v-btn',{attrs:{\"width\":\"150\",\"depressed\":\"\",\"small\":\"\",\"outlined\":_vm.statusButtonOutlined(_vm.r.status),\"color\":_vm.colorStatusButton},on:{\"click\":function($event){$event.stopPropagation();return click.apply(null, arguments)},\"mousedown\":function($event){$event.stopPropagation();}},nativeOn:{\"touchstart\":function($event){$event.stopPropagation();}}},[_vm._v(\" \"+_vm._s(_vm.$t(`code.status.${_vm.r.statusText}`))+\" \")])],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('v-menu',{attrs:{\"absolute\":\"\",\"offset-y\":\"\",\"min-width\":\"250\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(slotData){return [_vm._t(\"activator\",null,null,slotData)]}}],null,true)},[_c('v-list',[_c('v-list-item-group',{attrs:{\"active-class\":\"primary--text\"},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_vm._l((_vm.statuses),function(item,i){return [(item.divider === true)?_c('v-divider',{key:i}):_c('v-list-item',{key:i,attrs:{\"value\":item.value},on:{\"click\":function($event){return _vm.itemClicked(item.value)}}},[_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))]),(_vm.isCheckedOutStatus(item.value))?_c('v-list-item-subtitle',[_vm._v(\" \"+_vm._s(_vm.endDateTextForCheckedOut)+\" \")]):_vm._e()],1),_c('v-list-item-avatar',[_c('v-icon',{staticClass:\"mt-1\",attrs:{\"small\":\"\",\"color\":_vm.colorForStatus(item.value)}},[_vm._v(\" mdi-circle \")])],1)],1)]})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport Reservation, { ReservationStatus, ReservationType } from '@/model/Reservation';\nimport { reservationStatusItems } from '@/util/status';\nimport { endDateForCheckedOut } from '@/services/reservation-utils';\nimport { colorForStatus } from '@/components/helpers/colors';\n\nexport default Vue.extend({\n name: 'StatusSelectionMenu',\n components: { },\n props: {\n value: { type: String, required: true },\n reservation: { type: Reservation, required: true },\n },\n data() {\n return {\n selected: this.value,\n statuses: reservationStatusItems(),\n };\n },\n computed: {\n endDateTextForCheckedOut(): string | null {\n const endDate = endDateForCheckedOut(this.reservation);\n const endDateText = this.$localized.hourMinText(endDate);\n if (!endDateText) return null;\n const text = this.$i18n.t('label.ending_time_will_be_x', [endDateText]).toString();\n return text;\n },\n },\n watch: {\n value() {\n this.selected = this.value;\n },\n },\n methods: {\n itemClicked(value: string) {\n this.$emit('item-clicked', value);\n },\n isCheckedOutStatus(s: ReservationStatus): boolean {\n return s === ReservationStatus.CheckedOut;\n },\n colorForStatus(s: ReservationStatus): string {\n return colorForStatus(s);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatusSelectionMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StatusSelectionMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StatusSelectionMenu.vue?vue&type=template&id=76b3ed36&\"\nimport script from \"./StatusSelectionMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./StatusSelectionMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.visible)?_c('v-badge',{attrs:{\"bordered\":\"\",\"left\":\"\",\"color\":_vm.color,\"content\":_vm.content,\"overlap\":\"\"}},[_vm._t(\"default\")],2):_c('div',[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'HideableBadge',\n props: {\n visible: { type: Boolean, required: false, default: true },\n content: { type: String, required: false, default: '' },\n color: { type: String, required: false, default: 'primary' },\n },\n data() {\n return {};\n },\n computed: { },\n methods: { },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HideableBadge.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HideableBadge.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HideableBadge.vue?vue&type=template&id=2fb18d66&\"\nimport script from \"./HideableBadge.vue?vue&type=script&lang=ts&\"\nexport * from \"./HideableBadge.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport StatusSelectionMenu from '@/components/views/guests/StatusSelectionMenu.vue';\nimport Reservation, { ReservationStatus, ReservationType } from '@/model/Reservation';\nimport ReservationChips from '@/components/views/guests/ReservationChips.vue';\nimport { mapActions } from 'vuex';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { cloneModel, toMapById } from '@/model/model-utils';\nimport HideableBadge from '@/components/util/HideableBadge.vue';\n\nexport default Vue.extend({\n name: 'GuestListRow',\n components: { StatusSelectionMenu, ReservationChips, HideableBadge },\n props: {\n reservation: { type: Object as PropType, required: true },\n waitlistListOrder: { type: Number as PropType, required: false, default: 0 },\n overbookedTabItems: { type: Set as PropType|undefined>, required: false, default: undefined },\n compact: { type: Boolean, required: false, default: false },\n searchResult: { type: Boolean, required: false, default: false },\n unreadReservations: { type: Boolean, required: false, default: false },\n },\n computed: {\n r(): Reservation {\n return this.reservation;\n },\n isWalkin(): boolean {\n return this.r.bookingType === ReservationType.Walkin;\n },\n waitlistBadgeContent(): string | null {\n return this.waitlistListOrder.toString();\n },\n waitlistBadgeVisible(): boolean {\n return this.r.status === ReservationStatus.WaitingList;\n },\n colorStatusButton(): string {\n switch (this.r.status) {\n case ReservationStatus.Planned: return 'grey lighten-1';\n case ReservationStatus.Confirmed: return 'info white--text';\n case ReservationStatus.CheckedIn: return 'orange white--text';\n case ReservationStatus.CheckedOut: return 'grey-50 lighten-2 white--text';\n case ReservationStatus.Seated: return 'green white--text';\n case ReservationStatus.NonConfirmed: return 'purple white--text';\n case ReservationStatus.Cancelled: return 'red white--text';\n case ReservationStatus.Spam: return 'red white--text';\n case ReservationStatus.Deleted: return 'red white--text';\n case ReservationStatus.NoShow: return 'red white--text';\n case ReservationStatus.WaitingList: return 'white--text purple darken-4';\n default: return 'grey lighten-1';\n }\n },\n tablesHtmlText(): string {\n return this.r.tabItems.map((ti) => (this.overbookedTabItems?.has(ti.id)\n ? `${ti.no}`\n : `${ti.no}`)).join(', ');\n },\n },\n methods: {\n ...mapActions(['sendReservation', 'setReservationFromContextStatusChange']),\n statusButtonOutlined(s: ReservationStatus) {\n return s === ReservationStatus.Planned;\n },\n async statusChanged(value: string) {\n const r = cloneModel(this.r);\n r.setStatus(value as ReservationStatus);\n const ok = await performSaveAction(\n undefined,\n async () => this.sendReservation({ reservation: r }),\n );\n if (ok) this.setReservationFromContextStatusChange(r);\n },\n async markAsRead() {\n const r = cloneModel(this.r);\n r.isUnread = false;\n await performSaveAction(\n undefined,\n async () => this.sendReservation({ reservation: r }),\n );\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestListRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestListRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestListRow.vue?vue&type=template&id=9a5d286e&scoped=true&\"\nimport script from \"./GuestListRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestListRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GuestListRow.vue?vue&type=style&index=0&id=9a5d286e&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9a5d286e\",\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('v-list',{staticClass:\"pt-0\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-group',{on:{\"change\":_vm.selectedChange},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_vm._l((_vm.reservationEntries),function([date, dateReservations]){return [_c('guest-list-header-row',{key:date.getTime(),attrs:{\"title\":_vm.$localized.fullDateText(date) || ''}}),_vm._l((dateReservations),function(reservation,i){return [_c('guest-list-row',{key:reservation.id,attrs:{\"reservation\":reservation,\"compact\":\"\",\"search-result\":\"\",\"unread-reservations\":_vm.showUnread}}),(i + 1 < dateReservations.length)?_c('v-divider',{key:i}):_vm._e()]})]})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue, { PropType } from 'vue';\nimport Reservation from '@/model/Reservation';\nimport GuestListRow from '@/components/views/guests/GuestListRow.vue';\nimport GuestListHeaderRow from '@/components/views/guests/GuestListHeaderRow.vue';\nimport { tryEditReservation } from '@/services/reservation-edit-utils';\n\nexport default Vue.extend({\n name: 'GuestResultsList',\n components: { GuestListRow, GuestListHeaderRow },\n props: {\n reservations: { type: Map as PropType>, required: true },\n showUnread: { type: Boolean, required: false, default: false },\n },\n data() {\n return {\n selected: undefined as undefined | number,\n };\n },\n computed: {\n reservationEntries(): [Date, Reservation[]][] {\n const entries = Array.from(this.reservations.entries());\n const sortedEntries = entries.sort((o1, o2) => o2[0].getTime() - o1[0].getTime());\n return sortedEntries;\n },\n },\n methods: {\n async selectedChange() {\n if (this.selected === undefined) { return; }\n\n const reservationId = this.selected;\n const res = Array.from(this.reservations.values()).flat(1).find((r) => r.id === reservationId);\n if (res === undefined) { return; }\n\n const retVal = await tryEditReservation(this.$router, res, {}, { forceGuestsRoute: true });\n\n Vue.nextTick(() => {\n this.selected = undefined;\n });\n\n this.$emit('close', retVal);\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestResultsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestResultsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestResultsList.vue?vue&type=template&id=90669b90&\"\nimport script from \"./GuestResultsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestResultsList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticStyle:{\"display\":\"inline\"}},[(_vm.reservation.rating)?_c('v-chip',{class:['mr-1 px-1 guest-chip', {'guest-chip__compact': _vm.compact}],attrs:{\"label\":\"\",\"color\":\"green\",\"text-color\":\"white\",\"x-small\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-star \")]),_vm._v(_vm._s(_vm.reservation.rating)+\"/5 \")],1):_vm._e(),(_vm.reservation.paymentInfo)?_c('v-chip',{class:['mr-1 px-1 guest-chip', {'guest-chip__compact': _vm.compact}],attrs:{\"label\":\"\",\"color\":\"yellow\",\"text-color\":\"yellow darken-5\",\"x-small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.reservation.paymentInfo)+\" \")]):_vm._e(),(_vm.reservation.waitlistFlexibleStartText)?_c('v-chip',{class:['mr-1 px-1 guest-chip', {'guest-chip__compact': _vm.compact}],attrs:{\"label\":\"\",\"x-small\":\"\",\"color\":\"purple darken-3\",\"text-color\":\"white\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-clock-start \")]),_vm._v(\" \"+_vm._s(_vm.reservation.waitlistFlexibleStartText)+\" \")],1):_vm._e(),(!_vm.noService && _vm.reservation.service)?_c('v-chip',{class:['mr-1 px-1 guest-chip', {'guest-chip__compact': _vm.compact}],attrs:{\"label\":\"\",\"color\":_vm.reservation.service.color,\"text-color\":_setup.contrastForColor(_vm.reservation.service.color),\"x-small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.reservation.service.title)+\" \")]):_vm._e(),(_vm.reservation.fixedEnding)?_c('v-chip',{class:['mr-1 px-1 guest-chip', {'guest-chip__compact': _vm.compact}],attrs:{\"label\":\"\",\"color\":\"grey\",\"text-color\":_setup.contrastForColor('#9e9e9e'),\"x-small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.ends'))+\" \"+_vm._s(_vm.$localized.hourMinText(_vm.reservation.dateEnd))+\" \")]):_vm._e(),(!_vm.noLabel && _vm.reservation.label)?_c('v-chip',{class:['mr-1 px-1 guest-chip', {'guest-chip__compact': _vm.compact}],attrs:{\"label\":\"\",\"color\":_vm.reservation.label.color,\"text-color\":_setup.contrastForColor(_vm.reservation.label.color),\"x-small\":\"\"}},[_c('v-icon',{class:['guest-chip__icon', {'guest-chip__icon__compact': _vm.compact}],attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-label-outline \")]),_vm._v(\" \"+_vm._s(_vm.reservation.label.text)+\" \")],1):_vm._e(),(!_vm.noAttachments && _vm.reservation.attachments.length)?_c('v-chip',{class:['mr-1 px-1 guest-chip', {'guest-chip__compact': _vm.compact}],attrs:{\"label\":\"\",\"color\":_vm.$vuetify.theme.dark ? 'white' : '#1C1A27',\"text-color\":_vm.$vuetify.theme.dark ? '#1C1A27' : 'white',\"x-small\":\"\"}},[_c('v-icon',{attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-paperclip \")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport Vue, { PropType } from 'vue';\nimport Reservation from '@/model/Reservation';\nimport { contrastForColor } from '@/services/color-utils';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ReservationChips',\n props: {\n reservation: { type: Object as PropType, required: true },\n compact: { type: Boolean, required: false, default: false },\n noLabel: { type: Boolean, required: false, default: false },\n noService: { type: Boolean, required: false, default: false },\n noAttachments: { type: Boolean, required: false, default: false },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nreturn { __sfc: true,props, contrastForColor }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationChips.vue?vue&type=script&lang=ts&setup=true&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationChips.vue?vue&type=script&lang=ts&setup=true&\"","import { render, staticRenderFns } from \"./ReservationChips.vue?vue&type=template&id=d544cd96&\"\nimport script from \"./ReservationChips.vue?vue&type=script&lang=ts&setup=true&\"\nexport * from \"./ReservationChips.vue?vue&type=script&lang=ts&setup=true&\"\nimport style0 from \"./ReservationChips.vue?vue&type=style&index=0&id=d544cd96&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{key:`${_vm.collapsable && _vm.miniVariant}_account_menu`,attrs:{\"offset-y\":\"\",\"max-height\":\"66%\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on}){return [(_vm.collapsable && _vm.miniVariant)?_c('div',_vm._g({directives:[{name:\"ripple\",rawName:\"v-ripple\",value:(_setup.accounts.length > 0),expression:\"accounts.length > 0\"}],staticClass:\"text-center py-3\",staticStyle:{\"max-height\":\"64px\"}},_setup.accounts.length>0 ? on : {}),[_c(_setup.AccountAvatar,{attrs:{\"account-name\":_setup.accountName,\"color\":_setup.accountColor}})],1):_c('v-list-item',_vm._g({staticClass:\"pl-3\",staticStyle:{\"height\":\"56px\"}},_setup.accounts.length>0 ? on : {}),[(!_vm.miniVariant)?_c('v-list-item-avatar',{staticClass:\"d-inline pr-0 mr-3 my-0 py-0\",attrs:{\"size\":\"32\"}},[_c(_setup.AccountAvatar,{attrs:{\"account-name\":_setup.accountName,\"color\":_setup.accountColor}})],1):_vm._e(),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(_setup.accountName))]),_c('v-list-item-subtitle',[_vm._v(_vm._s(_setup.userName))])],1),(_setup.accounts.length>0)?_c('v-list-item-action',[_c('v-icon',[_vm._v(\"mdi-menu-down\")])],1):_vm._e()],1)]}}]),model:{value:(_setup.switcherActive),callback:function ($$v) {_setup.switcherActive=$$v},expression:\"switcherActive\"}},[_c('v-list',{staticClass:\"py-0 my-0\"},[_c('v-list-item-group',{staticClass:\"d-menu py-0\",attrs:{\"value\":_setup.currentAccountId}},[_vm._l((_setup.accounts),function(a,i){return [_c('v-list-item',{key:`account_switcher_li_${i}`,staticClass:\"pl-2\",attrs:{\"id\":`account_switcher_li_${a.id}`,\"value\":a.id,\"disabled\":a.id === _setup.currentAccountId},on:{\"click\":function($event){return _setup.changeAccount(a)}}},[_c('v-list-item-avatar',{staticClass:\"pr-0 mr-2\"},[_c(_setup.AccountAvatar,{attrs:{\"account-name\":a.accountName,\"color\":a.color}})],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(a.accountName))])],1)],1),(i !== _setup.accounts.length-1)?_c('v-divider',{key:`account_switcher_divider_${i}`}):_vm._e()]})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-tooltip',{attrs:{\"right\":\"\",\"open-delay\":\"270\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-avatar',_vm._g(_vm._b({staticClass:\"noselect\",attrs:{\"color\":_vm.color,\"size\":\"32\"}},'v-avatar',attrs,false),on),[_c('span',{staticClass:\"text-subtitle-1\",style:(`color: ${_vm.textColor}`)},[_vm._v(_vm._s(_vm.accountInitials))])])]}}])},[_c('span',[_vm._v(_vm._s(_vm.accountName))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue, { PropType } from 'vue';\nimport runes from 'runes';\nimport { contrastForColor } from '@/services/color-utils';\n\nexport default Vue.extend({\n name: 'AccountAvatar',\n props: {\n accountName: { type: String, required: true },\n color: { type: String, required: true },\n },\n data() {\n return { };\n },\n computed: {\n accountInitials(): string {\n if (this.accountName === undefined || this.accountName.length === 0) {\n return 'GP';\n }\n const accName = this.accountName.split(' ');\n if (accName.length === 1) {\n return runes.substr(this.accountName, 0, 2);\n }\n return `${runes.substr(accName[0], 0, 1)}${runes.substr(accName[accName.length - 1], 0, 1)}`;\n },\n textColor(): string {\n if (this.color === 'brand') { return '#ffffff'; }\n return contrastForColor(this.color);\n },\n },\n methods: {},\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccountAvatar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccountAvatar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AccountAvatar.vue?vue&type=template&id=390339ec&\"\nimport script from \"./AccountAvatar.vue?vue&type=script&lang=ts&\"\nexport * from \"./AccountAvatar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport AccountAvatar from '@/components/views/main/AccountAvatar.vue';\n\nimport { computed, ref, watch } from 'vue';\nimport i18n from '@/plugins/i18n';\nimport { performAction } from '@/services/vue-utils';\nimport store from '@/store/store';\nimport { startAutoUpdates, stopAutoUpdates } from '@/services/autoupdater';\nimport { startTodayUpdatesAsync } from '@/services/now-updater';\nimport UserAccount from '@/model/UserAccount';\nimport { useRouter } from 'vue-router/composables';\nimport scrollIntoView from 'scroll-into-view-if-needed';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AccountSwitcher',\n props: {\n miniVariant: { type: Boolean, required: false, default: false },\n collapsable: { type: Boolean, required: false, default: false },\n},\n setup(__props) {\n\nconst props = __props;\n\nconst router = useRouter();\n\n\nconst switcherActive = ref(false);\n\nconst newAccountName = ref(null as string | null);\nconst accountName = computed(() => store.state.settings.account.accountName ?? newAccountName.value ?? '');\n\nconst newUserName = ref(null as string | null);\nconst userName = computed(() => store.state.settings.account.username || newUserName.value || '');\n\nconst accounts = computed(() => store.getters.userAccounts);\n\nconst accountColor = computed(() => store.state.settings.account.color ?? 'brand');\n\nconst currentAccountId = computed(() => store.state.settings.account.id);\n\nwatch(switcherActive, () => {\n if (!switcherActive.value) { return; }\n setTimeout(() => {\n const elm = document.getElementById(`account_switcher_li_${currentAccountId.value}`);\n if (elm === null) { return; }\n\n scrollIntoView(elm, {\n behavior: 'auto',\n scrollMode: 'if-needed',\n block: 'center',\n });\n }, 100);\n});\n\nconst changeAccount = async (a: UserAccount) => {\n newAccountName.value = a.accountName;\n newUserName.value = store.state.settings.account.username ?? '';\n\n await performAction(\n null,\n i18n.tc('error.load_data'),\n async () => {\n await stopAutoUpdates();\n store.dispatch('switchAccount', { id: a.id, token: a.token, userName: newUserName.value });\n router.go(0);\n await startTodayUpdatesAsync();\n await startAutoUpdates();\n },\n );\n};\n\n\nreturn { __sfc: true,router, props, switcherActive, newAccountName, accountName, newUserName, userName, accounts, accountColor, currentAccountId, changeAccount, AccountAvatar }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccountSwitcher.vue?vue&type=script&lang=ts&setup=true&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AccountSwitcher.vue?vue&type=script&lang=ts&setup=true&\"","import { render, staticRenderFns } from \"./AccountSwitcher.vue?vue&type=template&id=3fca30f4&\"\nimport script from \"./AccountSwitcher.vue?vue&type=script&lang=ts&setup=true&\"\nexport * from \"./AccountSwitcher.vue?vue&type=script&lang=ts&setup=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-toolbar',{staticClass:\"pl-0 ml-0\",attrs:{\"short\":\"\",\"dense\":_vm.$vuetify.breakpoint.smAndDown,\"flat\":\"\"}},[_vm._t(\"default\"),_vm._t(\"buttons.prepend\"),_vm._t(\"buttons.append\")],2),_c('v-divider')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MainToolbar',\n setup(__props) {\n\n\n\nreturn { __sfc: true, }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainToolbar.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainToolbar.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./MainToolbar.vue?vue&type=template&id=5ca5a25f&\"\nimport script from \"./MainToolbar.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./MainToolbar.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"d-flex flex-column h-100\"},[_c('div',{staticClass:\"px-2 pt-5 flex-grow-0\"},[_c('validation-observer',[_c('validated-text-field',{attrs:{\"autofocus\":\"\",\"label\":_vm.$t('title.search'),\"prepend-icon\":\"mdi-magnify\",\"clearable\":\"\",\"rules\":\"max:49\",\"maxlength\":\"49\",\"dense\":_vm.dense,\"loading\":_vm.isSearching},model:{value:(_vm.query),callback:function ($$v) {_vm.query=$$v},expression:\"query\"}})],1)],1),_c('v-divider'),_c('v-tabs',{staticClass:\"pa-0 flex-grow-0\",attrs:{\"fixed-tabs\":\"\",\"dense\":_vm.dense},model:{value:(_vm.mode),callback:function ($$v) {_vm.mode=$$v},expression:\"mode\"}},[_c('v-tab',[_vm._v(\" \"+_vm._s(_vm.$t('label.search_this_day'))+\" \")]),_c('v-tab',[_vm._v(\" \"+_vm._s(_vm.$t('label.search_all_days'))+\" \")])],1),_c('v-divider'),(_vm.resultsByDate.size === 0)?_c('div',{staticClass:\"align-center text-center pa-5 py-8\"},[(!_vm.isSearching && _vm.query.length < 3)?_c('p',{staticClass:\"mb-0 text--secondary\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.enter_x_characters_to_search', [3]))+\" \")]):(_vm.isSearching)?_c('p',{staticClass:\"text--secondary\"},[_vm._v(\" \"+_vm._s(_vm.$t('placeholder.searching'))+\" \")]):(_vm.mode===0)?[_c('p',{staticClass:\"text--secondary\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.no_results_for_this_day'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"outlined\":\"\",\"small\":\"\"},on:{\"click\":function($event){_vm.mode=1}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.search_all_days'))+\" \")])]:_c('p',{staticClass:\"mb-0 text--secondary\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.no_results'))+\" \")])],2):_c('guest-results-list',{attrs:{\"reservations\":_vm.resultsByDate},on:{\"close\":function($event){return _vm.$emit('close')}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue from 'vue';\nimport Reservation from '@/model/Reservation';\nimport GuestResultsList from '@/components/views/guests/GuestResultsList.vue';\nimport { SearchType } from '@/services/search';\n\nexport default Vue.extend({\n name: 'SearchList',\n components: { GuestResultsList },\n data() {\n return {\n query: '',\n mode: 0,\n };\n },\n computed: {\n resultsByDate(): Map {\n return this.mode === 0\n ? this.$tstore.getters['search/searchDayReservationsByDate']\n : this.$tstore.getters['search/searchAllReservationsByDate'];\n },\n dense(): boolean {\n return this.$vuetify.breakpoint.xsOnly;\n },\n isSearching(): boolean {\n return this.$tstore.getters['search/isSearching'];\n },\n },\n watch: {\n query() {\n const query = this.query ?? '';\n this.$tstore.dispatch('search/search', { query, type: SearchType.AllReservations });\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SearchList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SearchList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SearchList.vue?vue&type=template&id=2c801a6e&\"\nimport script from \"./SearchList.vue?vue&type=script&lang=ts&\"\nexport * from \"./SearchList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"scrollable\":\"\",\"container-class\":\"pa-0 pt-2\",\"title\":_vm.$t('label.contact_details')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":!_vm.isReservationsAllowed || !_vm.isChanged},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('validation-observer',{ref:\"observer\"},[_c('v-row',[_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:999\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-textarea',{attrs:{\"label\":_vm.$t('label.notes'),\"rows\":\"2\",\"error-messages\":errors,\"hide-details\":!errors || errors.length === 0},model:{value:(_vm.c.notes),callback:function ($$v) {_vm.$set(_vm.c, \"notes\", $$v)},expression:\"c.notes\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('v-switch',{attrs:{\"prepend-icon\":\"mdi-crown\",\"label\":_vm.$t('label.vip')},model:{value:(_vm.c.isVIP),callback:function ($$v) {_vm.$set(_vm.c, \"isVIP\", $$v)},expression:\"c.isVIP\"}})],1),_c('row-form-divider'),_c('v-col',{staticClass:\"pb-0\",attrs:{\"md\":\"2\",\"cols\":\"4\"}},[_c('v-select',{attrs:{\"items\":_vm.contactTitles,\"label\":_vm.$t('label.title')},model:{value:(_vm.c.title),callback:function ($$v) {_vm.$set(_vm.c, \"title\", $$v)},expression:\"c.title\"}})],1),_c('v-col',{staticClass:\"pb-0\",attrs:{\"md\":\"10\",\"cols\":\"8\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:49\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-text-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.name'),\"persistent-hint\":\"\",\"hint\":_vm.totalVisitsText,\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\"},model:{value:(_vm.c.name),callback:function ($$v) {_vm.$set(_vm.c, \"name\", $$v)},expression:\"c.name\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"md\":\"6\",\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:254\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-text-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.company'),\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\"},model:{value:(_vm.c.companyName),callback:function ($$v) {_vm.$set(_vm.c, \"companyName\", $$v)},expression:\"c.companyName\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"md\":\"6\",\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":`max:19|validPhone:${_vm.defaultCC}`},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-text-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.phone_number'),\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\"},model:{value:(_vm.c.phone),callback:function ($$v) {_vm.$set(_vm.c, \"phone\", $$v)},expression:\"c.phone\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"md\":\"6\",\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:254|validEmail\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-text-field',{attrs:{\"label\":_vm.$t('label.email'),\"error-messages\":errors},on:{\"input\":_vm.changedEmail},model:{value:(_vm.c.email),callback:function ($$v) {_vm.$set(_vm.c, \"email\", $$v)},expression:\"c.email\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.newsletter_subscription')},model:{value:(_vm.c.newsletterSubscription),callback:function ($$v) {_vm.$set(_vm.c, \"newsletterSubscription\", $$v)},expression:\"c.newsletterSubscription\"}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"8\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:99\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-text-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.street_address'),\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\"},model:{value:(_vm.c.address),callback:function ($$v) {_vm.$set(_vm.c, \"address\", $$v)},expression:\"c.address\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"4\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:19\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-text-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.zip_code'),\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\"},model:{value:(_vm.c.postalCode),callback:function ($$v) {_vm.$set(_vm.c, \"postalCode\", $$v)},expression:\"c.postalCode\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:49\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-text-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.city_and_state'),\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\"},model:{value:(_vm.c.city),callback:function ($$v) {_vm.$set(_vm.c, \"city\", $$v)},expression:\"c.city\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"return-object\":\"\",\"items\":_vm.countries,\"label\":_vm.$t('label.country')},model:{value:(_vm.c.country),callback:function ($$v) {_vm.$set(_vm.c, \"country\", $$v)},expression:\"c.country\"}})],1),_c('row-form-divider'),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_vm.languages,\"label\":_vm.$t('label.language')},model:{value:(_vm.c.preferredLanguage),callback:function ($$v) {_vm.$set(_vm.c, \"preferredLanguage\", $$v)},expression:\"c.preferredLanguage\"}})],1),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"6\"}},[_c('date-picker-field',{attrs:{\"label\":_vm.$t('label.birthday'),\"value\":_vm.c.dateOfBirth,\"clearable\":\"\",\"type\":\"date\",\"format-fn\":_vm.formatBirthday},on:{\"input\":_vm.dateOfBirthChange}})],1)],1)],1),(_vm.confirmationDialogVisible)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.confirmationDialogVisible,\"message\":_vm.$t('message.confirm_discard_changes')},on:{\"confirm\":_vm.cancel,\"close\":function($event){_vm.confirmationDialogVisible=false}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import i18n from '@/plugins/i18n';\nimport { ContactTitle } from '@/model/Contact';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function contactTitleItems() {\n return [\n ContactTitle.Mr, ContactTitle.Ms, ContactTitle.Fam,\n ].map((o) => ({ text: i18n.t(`code.title.${o}`), value: o }));\n}\n","\nimport Vue, { nextTick, PropType } from 'vue';\nimport { ValidationObserver } from 'vee-validate';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport Contact from '@/model/Contact';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport Country from '@/model/Country';\nimport Reservation from '@/model/Reservation';\nimport { contactTitleItems } from '@/util/codes';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport { removeInvisibleUnicodeCharacters } from '@/util/common';\n\nexport default Vue.extend({\n name: 'ContactDetailsDialog',\n mixins: [DialogClosable, UnsavedGuard],\n props: {\n contact: { type: Object as PropType, required: false, default: null },\n },\n data() {\n return {\n contactTitles: contactTitleItems(),\n newc: new Contact(), // direct editing: new contact duplicated from prop if any\n oldc: new Contact(), // reservation editing: old contact from reservation\n confirmationDialogVisible: false,\n };\n },\n computed: {\n isReservationEditing(): boolean {\n return this.contact === null;\n },\n r(): Reservation {\n return this.$tstore.getters.editReservation ?? new Reservation();\n },\n c(): Contact {\n if (!this.isReservationEditing) return this.newc; // direct contact editing\n return this.r.contact ?? new Contact(); // reservation editing\n },\n countries(): Country[] {\n return this.$tstore.getters.sortedCountries;\n },\n languages(): String[] {\n return this.$tstore.getters.sortedLocales;\n },\n totalVisitsText(): string {\n return this.c.reservationCount && this.c.reservationCount > 0\n ? this.$i18n.t('label.total_visits_x', [this.c.reservationCount]) as string\n : '';\n },\n // eslint-disable-next-line vue/no-unused-properties\n isChanged(): boolean {\n return !isModelEqualToModel(this.c, this.oldc);\n },\n isReservationsAllowed(): boolean {\n return this.$tstore.getters.isReservationsAllowed;\n },\n defaultCC(): string {\n const { account } = this.$tstore.state.settings;\n return this.newc.country?.code || account.countryCode || '';\n },\n },\n watch: {\n visible(value: boolean) {\n if (value) {\n if (!this.isReservationEditing) { // direct contact editing\n this.newc = cloneModel(this.contact!);\n this.oldc = cloneModel(this.contact!);\n } else this.oldc = cloneModel(this.r.contact); // reservation editing\n }\n },\n },\n created() {\n this.oldc = cloneModel(this.r.contact);\n },\n mounted() {\n console.log('Contact Details mounted: ', this.contact);\n if (!this.isReservationEditing) { // direct contact editing\n this.newc = cloneModel(this.contact!);\n this.oldc = cloneModel(this.contact!);\n } else this.oldc = cloneModel(this.r.contact); // reservation editing\n },\n methods: {\n changedEmail() {\n this.$nextTick(() => {\n this.c.email = removeInvisibleUnicodeCharacters(this.c.email || '').trim();\n });\n },\n formatBirthday(d: Date): string | null {\n return this.$localized.dateText(d);\n },\n dateOfBirthChange(date: Date) {\n this.c.dateOfBirth = date ?? undefined;\n },\n async save() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) { return; }\n\n if (!this.isReservationEditing) this.$emit('save', this.newc); // direct contact editing\n else this.$emit('close', false); // reservation editing\n },\n close() {\n // TODO alert if changed, discard changes\n if (this.isChanged) {\n this.confirmationDialogVisible = true;\n } else {\n this.cancel();\n }\n },\n cancel() {\n if (this.isReservationEditing) this.r.contact = this.oldc; // reservation editing\n this.$emit('close', false);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactDetailsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactDetailsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactDetailsDialog.vue?vue&type=template&id=08195d23&\"\nimport script from \"./ContactDetailsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactDetailsDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/message_pb';\n\nexport enum MessageType {\n EMAIL = 'email',\n SMS = 'sms',\n}\n\nexport default class Message {\n messageType: MessageType = MessageType.EMAIL;\n\n reservationId?: number;\n\n feedbackId?: number;\n\n subject?: string;\n\n body?: string;\n\n sendBcc: boolean = false;\n\n constructor(o?: { messageType?: MessageType, reservationId?: number, feedbackId?: number, subject?: string, body?: string, sendBcc?: boolean}) {\n if (o?.messageType) this.messageType = o.messageType;\n if (o?.reservationId) this.reservationId = o.reservationId;\n if (o?.feedbackId) this.feedbackId = o.feedbackId;\n if (o?.subject) this.subject = o.subject;\n if (o?.body) this.body = o.body;\n if (o?.sendBcc) this.sendBcc = o.sendBcc;\n }\n\n toGrpcModel(): pbm.Message {\n const o = new pbm.Message();\n\n switch (this.messageType) {\n case MessageType.EMAIL: o.setMessageType(pbm.Message.MessageType.SENDGRID); break;\n case MessageType.SMS: o.setMessageType(pbm.Message.MessageType.SMS); break;\n default: o.setMessageType(pbm.Message.MessageType.SENDGRID); break;\n }\n\n if (this.reservationId) o.setReservationId(this.reservationId);\n if (this.feedbackId) o.setFeedbackId(this.feedbackId);\n if (this.subject) o.setSubject(this.subject);\n if (this.body) o.setBody(this.body);\n o.setSendBcc(this.sendBcc ?? false);\n\n return o;\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":\"\",\"persistent\":\"\",\"scrollable\":\"\",\"container-class\":\"pa-0 pt-0\",\"card-class\":\"pa-0\",\"title\":_vm.$t('label.message_guest')},on:{\"close\":function($event){return _setup.emit('close')}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":_setup.body.length === 0},on:{\"click\":_setup.sendMessage}},[_vm._v(\" \"+_vm._s(_setup.isEmail ? _vm.$t('label.send_email') : _vm.$t('label.send_sms'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":function($event){return _setup.emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c(_setup.ValidationObserver,{ref:\"observer\"},[_c('v-tabs',{attrs:{\"fixed-tabs\":\"\",\"height\":\"40\"},on:{\"change\":function($event){_setup.body = _setup.isEmail ? _setup.emailBody : _setup.smsBody}},model:{value:(_setup.messageType),callback:function ($$v) {_setup.messageType=$$v},expression:\"messageType\"}},[_c('v-tab',{attrs:{\"disabled\":!_vm.reservation.contact.email}},[_vm._v(\" \"+_vm._s(_vm.$t('code.message_type.email'))+\" \")]),_c('v-tab',{attrs:{\"disabled\":!_vm.reservation.contact.phone}},[_vm._v(\" \"+_vm._s(_vm.$t('code.message_type.sms'))+\" \")])],1),_c('v-row',{staticClass:\"ma-2 pt-6\"},[(_setup.isEmail)?[_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\"}},[_c('v-text-field',{staticClass:\"py-0\",attrs:{\"label\":_vm.$t('label.email'),\"value\":_vm.reservation.contact.email,\"disabled\":\"\"}})],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"py-0\",attrs:{\"rules\":\"required|max:250\",\"label\":_vm.$t('label.subject')},model:{value:(_setup.emailSubject),callback:function ($$v) {_setup.emailSubject=$$v},expression:\"emailSubject\"}})],1)]:[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-text-field',{staticClass:\"py-0\",attrs:{\"label\":_vm.$t('label.phone_number'),\"value\":_vm.reservation.contact.phone,\"disabled\":\"\"}})],1)],_c('v-col',{attrs:{\"cols\":\"12\"}},[_c(_setup.RichTextEditor,{attrs:{\"richtext-allowed\":_setup.isEmail},on:{\"input\":_setup.updateMessage},scopedSlots:_vm._u([{key:\"menubar\",fn:function({editor}){return [_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"px-4 mr-2\",attrs:{\"color\":\"primary\",\"outlined\":\"\",\"small\":\"\"}},on),[_vm._v(\" \"+_vm._s(_vm.$t('label.insert_field'))+\" \")])]}}],null,true)},[_c('v-list',_vm._l((_setup.directMessageFields),function(field,i){return _c('v-list-item',{key:i,attrs:{\"disabled\":_setup.isContentForField(field.value) === false},on:{\"click\":function($event){editor.commands.insertContent(_setup.contentForField(field.value));editor.commands.focus()}}},[_c('v-list-item-title',[_vm._v(_vm._s(field.text))])],1)}),1)],1)]}}]),model:{value:(_setup.body),callback:function ($$v) {_setup.body=$$v},expression:\"body\"}}),(_setup.isSMS)?_c('div',{staticClass:\"text--caption text-right pa-0 ma-0\"},[_vm._v(\" \"+_vm._s(_setup.smsMessagesCount)+\" \")]):_vm._e()],1)],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, PropType, ref } from 'vue';\nimport RichTextEditor from '@/components/editors/RichTextEditor.vue';\nimport { count } from 'sms-length';\nimport i18n from '@/plugins/i18n';\nimport Reservation from '@/model/Reservation';\nimport Message, { MessageType } from '@/grpc-api/model/message';\nimport { performDispatchAction } from '@/services/vue-utils';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport store from '@/store/store';\nimport toast from '@/plugins/toast-plugin/toast';\nimport { ValidationObserver } from 'vee-validate';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ContactMessageDialog',\n props: {\n reservation: { type: Object as PropType, required: true },\n feedbackId: { type: Number, required: false, default: undefined },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst messageTypes = [MessageType.EMAIL, MessageType.SMS];\nconst messageType = ref(props.reservation.contact.email ? 0 : 1);\n\nconst directMessageFields = [\n { text: i18n.t('code.handlebar.restaurant_name'), value: 'restaurant_name' },\n { text: i18n.t('code.handlebar.full_name'), value: 'full_name' },\n { text: i18n.t('code.handlebar.party_size'), value: 'party_size' },\n { text: i18n.t('code.handlebar.start_date'), value: 'start_date' },\n { text: i18n.t('code.handlebar.start_time'), value: 'start_time' },\n { text: i18n.t('code.handlebar.end_time'), value: 'end_time' },\n { text: i18n.t('code.handlebar.reservation_note'), value: 'reservation_note' },\n];\n\nconst body = ref('');\nconst emailSubject = ref('');\nconst emailBody = ref('');\nconst smsBody = ref('');\n\nconst isEmail = computed(() => messageTypes[messageType.value] === MessageType.EMAIL);\nconst isSMS = computed(() => messageTypes[messageType.value] === MessageType.SMS);\n\nconst smsMessagesCount = computed(() => {\n const c = count(smsBody.value || '');\n return i18n.t(\n 'label.sms_messages_count',\n [c.length, c.characterPerMessage * (c.messages || 1), c.messages],\n );\n});\n\nfunction contentForField(field: string): string {\n switch (field) {\n case 'restaurant_name': return ` ${store.state.settings.account.accountName} `;\n case 'full_name': return props.reservation.contact.name ? ` ${props.reservation.contact.name} ` : '';\n case 'party_size': return ` ${String(props.reservation.partySize)} `;\n case 'start_date': return ` ${localized.dateText(props.reservation.dateBegin)} `;\n case 'start_time': return ` ${localized.hourMinText(props.reservation.dateBegin)} `;\n case 'end_time': return ` ${localized.hourMinText(props.reservation.dateEnd)} `;\n case 'reservation_note': return props.reservation.notes ? ` ${props.reservation.notes} ` : '';\n default: return '';\n }\n}\n\nfunction isContentForField(field: string): boolean {\n return contentForField(field) !== '';\n}\n\nfunction updateMessage(value: string) {\n if (isEmail.value) {\n emailBody.value = value;\n } else {\n smsBody.value = value;\n }\n}\n\nconst observer = ref>();\n\nasync function sendMessage() {\n const message = new Message();\n message.reservationId = props.reservation.id;\n message.feedbackId = props.feedbackId;\n message.sendBcc = false;\n\n if (isEmail.value) {\n message.messageType = MessageType.EMAIL;\n message.subject = emailSubject.value;\n message.body = emailBody.value;\n } else {\n message.messageType = MessageType.SMS;\n message.subject = emailSubject.value;\n message.body = smsBody.value;\n }\n if (!await observer.value!.validate()) {\n toast.error(i18n.tc('error.validation_failed'));\n return;\n }\n\n const ok = await performDispatchAction('sendReservationMessage', { message });\n console.log('sendMessage: ', ok);\n if (!ok) return;\n toast.success(i18n.tc('message.message_successfuly_sent'));\n emit('close', true);\n}\n\n\nreturn { __sfc: true,emit, props, messageTypes, messageType, directMessageFields, body, emailSubject, emailBody, smsBody, isEmail, isSMS, smsMessagesCount, contentForField, isContentForField, updateMessage, observer, sendMessage, RichTextEditor, ValidationObserver }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactMessageDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactMessageDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ContactMessageDialog.vue?vue&type=template&id=09b048ba&\"\nimport script from \"./ContactMessageDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ContactMessageDialog.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"title\":_vm.$t('title.employee'),\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"300\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticStyle:{\"display\":\"flex\",\"flex-grow\":\"1\"},attrs:{\"color\":\"success\"},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('validation-observer',{ref:\"observer\"},[_c('validation-provider',{ref:\"provider\",attrs:{\"vid\":\"employee\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-radio-group',{attrs:{\"error-messages\":errors},model:{value:(_vm.selection),callback:function ($$v) {_vm.selection=$$v},expression:\"selection\"}},[_vm._l((_vm.employees),function(e){return _c('v-radio',{key:e.id,attrs:{\"label\":e.name,\"value\":e.id}},[_c('template',{slot:\"label\"},[_c('span',{staticClass:\"text-subtitle-1 text--primary\"},[_vm._v(_vm._s(e.name))])])],2)}),_c('v-spacer'),_c('v-radio',{attrs:{\"value\":0}},[_c('template',{slot:\"label\"},[_c('v-text-field',{staticClass:\"pb-0\",attrs:{\"hide-details\":\"\",\"label\":_vm.$t('label.new_employee')},model:{value:(_vm.newEmployeeName),callback:function ($$v) {_vm.newEmployeeName=$$v},expression:\"newEmployeeName\"}})],1)],2)],2)]}}])})],1),_c('v-switch',{attrs:{\"label\":_vm.$t('label.remember_my_name')},model:{value:(_vm.rememberMe),callback:function ($$v) {_vm.rememberMe=$$v},expression:\"rememberMe\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport { ValidationObserver } from 'vee-validate';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { mapActions } from 'vuex';\nimport Employee from '@/model/Employee';\n\nexport default Vue.extend({\n name: 'EmployeeDialog',\n mixins: [DialogClosable],\n props: {\n\n },\n data: () => ({\n selection: null as number | null,\n newEmployeeName: '',\n rememberMe: false,\n }),\n computed: {\n employees(): Employee[] {\n return this.$tstore.state.settings.employees;\n },\n },\n watch: {\n visible(value: boolean) {\n if (value) {\n this.reset();\n }\n },\n },\n mounted() {\n this.reset();\n },\n methods: {\n ...mapActions(['setLastEmployee']),\n reset() {\n this.selection = null;\n if (this.$refs.observer) (this.$refs.observer as InstanceType).reset();\n\n const { lastEmployee, rememberEmployee } = this.$tstore.state.reservation;\n console.log('lastEmployee, rememberEmployee:', lastEmployee, rememberEmployee);\n\n this.rememberMe = rememberEmployee;\n if (!rememberEmployee) { // not remember -> null selection\n this.selection = null;\n } else if (lastEmployee?.id === 0) { // remember but last employee was the newly created one -> find him\n this.selection = this.employees.find((o) => o.name === lastEmployee?.name)?.id ?? null;\n } else { // set the last id\n this.selection = lastEmployee?.id ?? null;\n }\n\n this.newEmployeeName = '';\n },\n async save() {\n const observer = this.$refs.observer as InstanceType;\n\n // Manually validate in case the user tries to create a new employee from the provided field\n if (this.selection === 0 && this.newEmployeeName.length < 2) {\n observer.setErrors(\n { employee: [this.$i18n.tc('error.no_employee_selected')] },\n );\n return;\n }\n\n const isValid = await observer.validate();\n if (!isValid) { return; }\n\n console.log(this.selection);\n\n const remember = this.rememberMe;\n const employee = this.selection === 0 // new user has ID 0\n ? new Employee({ employeeId: 0, employeeName: this.newEmployeeName })\n : this.employees.find(((e) => e.id === this.selection));\n\n this.setLastEmployee({ employee, remember });\n\n this.$emit('selected', { employee, remember });\n },\n cancel() {\n this.$emit('close', false);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmployeeDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmployeeDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EmployeeDialog.vue?vue&type=template&id=3a8fd8d0&\"\nimport script from \"./EmployeeDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./EmployeeDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"container-class\":\"ma-0 pa-0\",\"content-class\":\"ma-0 pa-0\",\"card-class\":\"ma-0 pa-0\",\"scrollable\":\"\",\"max-width\":\"700\",\"title\":_vm.title},on:{\"close\":function($event){return _vm.$emit('close')}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close' ))+\" \")])]},proxy:true}])},[_c('guest-results-list',{attrs:{\"reservations\":_vm.reservationsByDate},on:{\"close\":_vm.handleUnsavedChanges}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport Reservation from '@/model/Reservation';\nimport Contact from '@/model/Contact';\nimport {\n mapByDateIndexToMapByDate, toSortedMapByDateIndex,\n} from '@/services/reservations-utils';\nimport GuestResultsList from '@/components/views/guests/GuestResultsList.vue';\n\nexport default Vue.extend({\n name: 'ReservationResultsDialog',\n components: { GuestResultsList },\n mixins: [DialogClosable],\n props: {\n title: { type: String, required: false, default: '' },\n reservations: { type: Array as PropType, required: false, default: null },\n },\n data() {\n return { };\n },\n computed: {\n reservationsByDate(): Map {\n const mapByDateIndex = toSortedMapByDateIndex(this.reservations ?? []);\n const mapByDate = mapByDateIndexToMapByDate(mapByDateIndex);\n return mapByDate;\n },\n },\n watch: { },\n methods: {\n handleUnsavedChanges(shouldClose: boolean) {\n if (shouldClose) { this.$emit('close'); }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationResultsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationResultsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReservationResultsDialog.vue?vue&type=template&id=5cbe6668&\"\nimport script from \"./ReservationResultsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReservationResultsDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":\"\",\"persistent\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"error\",\"disabled\":!_setup.deleteEnabled},on:{\"click\":_setup.deleteAccount}},[_vm._v(\" \"+_vm._s(_vm.$t('button.delete_account'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('v-container',{staticClass:\"d-flex align-center flex-column\",attrs:{\"fluid\":\"\"}},[_c('p',{staticClass:\"text-body-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.prompt_delete_account'))+\" \")]),_c('v-text-field',{ref:\"deleteField\",staticClass:\"pt-3\",attrs:{\"label\":_vm.$t('message.type_delete_account'),\"outlined\":\"\"},model:{value:(_setup.deleteConfirmText),callback:function ($$v) {_setup.deleteConfirmText=$$v},expression:\"deleteConfirmText\"}}),_c('div',{staticClass:\"w-100\"},[_c('v-divider',{staticClass:\"py-1 my-0\"})],1),_c('p',{staticClass:\"pt-2 py-0 my-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.provide_delete_account_reason'))+\" \")]),_c('v-radio-group',{staticClass:\"pa-0 ma-0 pt-1\",model:{value:(_setup.reason),callback:function ($$v) {_setup.reason=$$v},expression:\"reason\"}},[_c('v-radio',{attrs:{\"value\":0,\"label\":_vm.$t('label.delete_reason_1')}}),_c('v-radio',{attrs:{\"value\":1,\"label\":_vm.$t('label.delete_reason_2')}}),_c('v-radio',{attrs:{\"value\":2,\"label\":_vm.$t('label.delete_reason_3')}}),_c('v-radio',{attrs:{\"value\":3,\"label\":_vm.$t('label.delete_reason_4')}}),_c('div',{staticClass:\"d-flex\"},[_c('v-radio',{attrs:{\"value\":4}}),_c('v-text-field',{staticClass:\"pt-0 mt-0\",attrs:{\"placeholder\":_vm.$t('label.reason_other'),\"dense\":\"\",\"hide-details\":\"\"},on:{\"click\":function($event){_setup.reason=4}},model:{value:(_setup.otherReason),callback:function ($$v) {_setup.otherReason=$$v},expression:\"otherReason\"}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport Vue, { computed, onMounted, ref } from 'vue';\nimport { performAction } from '@/services/vue-utils';\nimport i18n from '@/plugins/i18n';\nimport store from '@/store/store';\nimport { useVuetify } from '@/components/helpers/vue2-helpers';\nimport router from '@/router';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'DeleteAccountDialog',\n setup(__props) {\n\nconst vuetify = useVuetify();\n\nconst deleteFieldRef = ref();\n\nconst deleteConfirmText = ref('');\n\nconst reason = ref(undefined as number | undefined);\nconst otherReason = ref('');\n\nconst deleteEnabled = computed(() => deleteConfirmText.value.toUpperCase() === 'DELETE' && reason.value !== undefined);\n\nonMounted(() => {\n setTimeout(() => {\n deleteFieldRef.value?.focus();\n }, 300);\n});\n\nconst deleteAccount = async () => {\n const reasonIndex = reason.value ?? 4;\n const reasonText = reasonIndex === 4\n ? otherReason.value || i18n.tc('label.delete_reason_other')\n : i18n.tc(`label.delete_reason_${reasonIndex + 1}`);\n\n const ok = await performAction(\n i18n.tc('message.success_delete_account'),\n i18n.tc('error.deleting_account'),\n async () => store.dispatch('deleteAccount', { reasonText }),\n );\n\n if (!ok) return;\n\n vuetify.theme.dark = false;\n router.push('/login');\n};\n\n\nreturn { __sfc: true,vuetify, deleteFieldRef, deleteConfirmText, reason, otherReason, deleteEnabled, deleteAccount }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAccountDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DeleteAccountDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./DeleteAccountDialog.vue?vue&type=template&id=585b70f1&\"\nimport script from \"./DeleteAccountDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./DeleteAccountDialog.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{ref:\"dialog\",staticClass:\"w-100 pa-0\",attrs:{\"visible\":_vm.dialog,\"title\":_vm.$t('button.setup_floorplan'),\"persistent\":\"\",\"scrollable\":\"\",\"fullscreen\":_vm.compact,\"max-width\":\"100%\",\"card-class\":\"pa-0\",\"content-class\":\"dialog-height-100\",\"container-class\":\"pa-0 h-100\",\"fluid\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.compact)?_c('v-btn',{staticClass:\"mr-5\",attrs:{\"text\":\"\",\"primary\":\"\"},on:{\"click\":function($event){_vm.sidebarToggle = !_vm.sidebarToggle}}},[_vm._v(\" \"+_vm._s(_vm.sidebarVisible ? _vm.$t('button.show_floorplan') : _vm.$t('button.show_tables'))+\" \")]):_vm._e(),_c('v-select',{staticClass:\"pt-0 mt-0\",style:(`min-width:${_vm.$vuetify.breakpoint.xsOnly ? 42 : 78 }px!important;\n max-width:${_vm.$vuetify.breakpoint.xsOnly ? 42 : 78 }px!important`),attrs:{\"append-icon\":\"\",\"prepend-inner-icon\":_vm.$vuetify.breakpoint.xsOnly ? '' : 'mdi-magnify-plus',\"hide-details\":\"\",\"items\":_vm.zoomLevels},model:{value:(_vm.zoom),callback:function ($$v) {_vm.zoom=$$v},expression:\"zoom\"}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.confirmCancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('div',{staticClass:\"fp-edit-container\"},[(_vm.sidebarVisible)?_c('floorplan-edit-sidebar',{class:['fp-edit-sidebar', {'compact': _vm.compact}],attrs:{\"tab-items\":_vm.tabItems,\"selected-tab-item-ids\":_vm.selectedTabItemIds},on:{\"place-tabitem\":_vm.placeTabItem,\"selected\":_vm.tabItemSelected}}):_vm._e(),(!_vm.sidebarVisible && _vm.compact || !_vm.compact)?_c('v-divider',{attrs:{\"vertical\":\"\"}}):_vm._e(),_c('floorplan-canvas',{ref:\"fpCanvas\",attrs:{\"tab-items\":_vm.tabItems,\"selected-tab-item-ids\":_vm.selectedTabItemIds,\"editable\":\"\",\"zoom\":_vm.zoom},on:{\"update:tabItems\":function($event){_vm.tabItems=$event},\"update:tab-items\":function($event){_vm.tabItems=$event},\"selected\":_vm.tabItemSelected}})],1),_c('v-divider')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-list',{staticClass:\"pt-0\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-group',{on:{\"change\":_vm.selectedChange},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_vm._l((_vm.tabItems),function(ti,i){return [_c('v-list-item',{key:ti.id,staticClass:\"py-0\",staticStyle:{\"height\":\"50px\"},attrs:{\"value\":ti.id},scopedSlots:_vm._u([{key:\"default\",fn:function(){return [_c('v-list-item-content',{staticClass:\"py-0 h-100\"},[_c('v-row',{staticClass:\"py-0\"},[_c('v-col',{staticClass:\"py-0 d-flex justify-center align-center\",attrs:{\"cols\":\"3\"}},[_c('span',{staticClass:\"text-subtitle-1\"},[_vm._v(_vm._s(ti.no))])]),_c('v-col',{staticClass:\"pa-0 d-flex justify-center align-center\",attrs:{\"cols\":\"4\"}},[_c('floorplan-table-preview',{staticStyle:{\"height\":\"100%\"},attrs:{\"seats\":ti.seats,\"shape\":ti.shape}})],1),_c('v-col',{staticClass:\"py-0 d-flex justify-center align-center\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.x_seats', [ti.seats]))+\" \")])],1)],1),_c('v-list-item-action',[(ti.posX === undefined || ti.posY === undefined)?_c('v-btn',{attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _vm.placeTabItem(i, ti)}}},[_c('v-icon',[_vm._v(\" mdi-plus-circle-outline \")])],1):_c('v-icon',{staticStyle:{\"width\":\"28px\",\"height\":\"28px\"}},[_vm._v(\" mdi-check \")])],1)]},proxy:true}],null,true)}),(i < _vm.tabItems.length - 1)?_c('v-divider',{key:`divider_${i}`}):_vm._e()]})],2)],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',{style:(`height: ${_vm.height}px; width: ${_vm.width}px`)},[_c('div',[_c('svg',{attrs:{\"width\":\"100%\",\"height\":\"100%\",\"viewBox\":`0 0 ${_vm.width} ${_vm.height}`}},[_c('g',[(_vm.shape === 'SQUARED' || _vm.shape==='HEADSEAT')?_c('rect',{attrs:{\"x\":(_vm.width-_vm.tableSize.h)/2,\"y\":(_vm.height-_vm.tableSize.w)/2,\"width\":_vm.tableSize.h,\"height\":_vm.tableSize.w,\"stroke-width\":\"1\",\"stroke\":_vm.strokeColor,\"fill\":_vm.fillColor,\"rx\":\"1\"}}):_c('circle',{attrs:{\"cx\":_vm.width/2,\"cy\":_vm.height/2,\"r\":_vm.tableSize.w/2,\"stroke\":_vm.strokeColor,\"stroke-width\":\"1\",\"fill\":_vm.fillColor}})])])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\n\nimport { TableSeatType, ITableSize } from './floorplan-types';\n\nexport default Vue.extend({\n name: 'FloorplanTablePreview',\n components: {\n\n },\n mixins: [],\n props: {\n seats: { type: Number, required: true },\n shape: { type: String as PropType, required: true },\n },\n data() {\n return {\n width: 110,\n height: 60,\n };\n },\n computed: {\n tableSize(): ITableSize {\n const scale = this.seats <= 4 ? 0.29 : 0.20;\n if (this.shape === TableSeatType.SQUARED) {\n if (this.seats <= 1) { return { w: 40 * scale, h: 40 * scale }; }\n if (this.seats <= 2) { return { w: 80 * scale, h: 80 * scale }; }\n return { w: 80 * scale, h: Math.min(300, (80 + Math.trunc((this.seats - 1) / 2.0) * 40.0)) * scale };\n }\n if (this.shape === TableSeatType.HEADSEAT) {\n if (this.seats <= 1) { return { w: 40 * scale, h: 40 * scale }; }\n if (this.seats <= 2) { return { w: 80 * scale, h: 80 * scale }; }\n return { w: 80 * scale, h: Math.min(300, (80 + Math.trunc((this.seats - 3) / 2.0) * 40.0)) * scale };\n }\n if (this.shape === TableSeatType.ROUNDED) {\n if (this.seats <= 1) { return { w: 40 * scale, h: 40 * scale }; }\n if (this.seats <= 2) { return { w: 60 * scale, h: 60 * scale }; }\n return {\n w: Math.min(300, (40 + Math.trunc((this.seats - 1) / 2.0) * 20.0)) * scale,\n h: Math.min(300, (40 + Math.trunc((this.seats - 1) / 2.0) * 20.0)) * scale,\n };\n }\n return { w: 0, h: 0 };\n },\n\n fillColor(): string {\n return this.$vuetify.theme.dark ? '#1E1E2B' : '#f9f9f9';\n },\n strokeColor(): string {\n return this.$vuetify.theme.dark ? '#D6D6D8' : '#171721';\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanTablePreview.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanTablePreview.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanTablePreview.vue?vue&type=template&id=48fc2314&scoped=true&\"\nimport script from \"./FloorplanTablePreview.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanTablePreview.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48fc2314\",\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport TabItem from '@/model/TabItem';\nimport FloorplanTablePreview from '@/components/views/floorplan/FloorplanTablePreview.vue';\n\nexport default Vue.extend({\n name: 'FloorplanEditSidebar',\n components: {\n FloorplanTablePreview,\n },\n props: {\n tabItems: { type: Object as PropType>, required: true },\n selectedTabItemIds: { type: Object as PropType>, required: false, default: undefined },\n },\n data() {\n return {\n selected: undefined as number | undefined,\n };\n },\n watch: {\n selectedTabItemIds() {\n [this.selected] = this.selectedTabItemIds;\n },\n },\n methods: {\n selectedChange(tabItemId: number) {\n if (this.selected === undefined) { return; }\n this.$emit('selected', tabItemId);\n },\n placeTabItem(i: number, t: TabItem) {\n this.$emit('place-tabitem', i, t);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanEditSidebar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanEditSidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanEditSidebar.vue?vue&type=template&id=1b1d4c98&\"\nimport script from \"./FloorplanEditSidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanEditSidebar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport Tab from '@/model/Tab';\nimport TabItem from '@/model/TabItem';\nimport { cloneModel, isModelEqualToModel, uniqueMinId } from '@/model/model-utils';\nimport { performSaveAction, confirmLeaveWithoutSaving } from '@/services/vue-utils';\n\nimport FloorplanCanvas from '@/components/views/floorplan/FloorplanCanvas.vue';\nimport FloorplanEditSidebar from '@/components/views/floorplan/FloorplanEditSidebar.vue';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\n\nexport default Vue.extend({\n name: 'FloorplanEditDialog',\n components: { FloorplanCanvas, FloorplanEditSidebar },\n mixins: [DialogClosable],\n props: {\n tab: { type: Object as PropType, required: true },\n },\n data() {\n return {\n tabItems: [] as TabItem[],\n oldTabItems: [] as TabItem[],\n selectedTabItemIds: [] as number[],\n sidebarToggle: false,\n\n zoom: 1,\n zoomLevels: [\n { value: 0.25, text: '25%' },\n { value: 0.5, text: '50%' },\n { value: 0.75, text: '75%' },\n { value: 1, text: '100%' },\n { value: 1.25, text: '125%' },\n { value: 1.50, text: '150%' },\n { value: 1.75, text: '175%' }],\n };\n },\n computed: {\n isChanged(): boolean {\n return !isModelEqualToModel(this.tabItems, this.oldTabItems);\n },\n sidebarVisible(): boolean {\n return !this.compact || this.sidebarToggle;\n },\n compact(): boolean {\n return this.$vuetify.breakpoint.xsOnly;\n },\n },\n watch: {\n visible(value: boolean) {\n if (!value) return;\n this.reset();\n },\n },\n methods: {\n reset() {\n const tab = this.$tstore.getters.tabsById.get(this.tab.id) as Tab | undefined;\n this.tabItems = (tab?.tabItems ?? []).map((o) => cloneModel(o));\n this.oldTabItems = tab?.tabItems ?? [];\n },\n tabItemSelected(tabItemId: number) {\n this.selectedTabItemIds = [tabItemId];\n this.sidebarToggle = false;\n },\n placeTabItem(i: number, t: TabItem) {\n (this.$refs.fpCanvas as any).placeTable(t);\n },\n close() {\n this.$emit('close');\n },\n confirmCancel() {\n showConfirmationDialog(\n this.$i18n.t('title.confirmation'),\n this.$i18n.t('message.confirm_leave_without_saving'),\n { title: this.$i18n.tc('button.yes'), action: () => this.cancel() },\n { title: this.$i18n.tc('button.cancel'), action: () => {} },\n );\n },\n cancel() {\n this.close();\n },\n async save() {\n const ok = await performSaveAction(\n undefined,\n async () => this.$tstore.dispatch('sendFloorplanTabItems', {\n entities: this.tabItems,\n tabId: this.tab.id,\n }),\n );\n\n if (ok) {\n this.close();\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanEditDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanEditDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanEditDialog.vue?vue&type=template&id=78c64613&scoped=true&\"\nimport script from \"./FloorplanEditDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanEditDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FloorplanEditDialog.vue?vue&type=style&index=0&id=78c64613&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"78c64613\",\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.helpText)?_c('div',[_c('p',{staticClass:\"font-weight-bold text-h6 pb-0 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$i18n.t(_vm.$router.currentRoute.meta.titleKey))+\" \")]),_c('p',{staticClass:\"text-subtitle-1\"},[_vm._v(\" \"+_vm._s(_vm.helpText)+\" \")]),_c('v-divider',{staticClass:\"pb-5\"})],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'HelpHeader',\n props: { },\n data() {\n return {};\n },\n computed: {\n helpText(): string | null {\n const key = `help.settings.${this.$router.currentRoute.name}`;\n // console.log(key);\n return this.$i18n.tc(key) === key ? null : this.$i18n.tc(key);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HelpHeader.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HelpHeader.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HelpHeader.vue?vue&type=template&id=76b3fdeb&\"\nimport script from \"./HelpHeader.vue?vue&type=script&lang=ts&\"\nexport * from \"./HelpHeader.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{ref:\"dialog\",attrs:{\"visible\":_vm.dialog,\"content-class\":\"dialog-height-60\",\"card-class\":\"pa-0 pb-5 mb-5\",\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"600px\",\"title\":_vm.$t('title.setup_tables')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.add}},[_vm._v(\" \"+_vm._s(_vm.$t('button.add_new_table'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('validation-observer',{ref:\"observer\"},[_c('v-data-table',{directives:[{name:\"reorder-table\",rawName:\"v-reorder-table\"}],attrs:{\"headers\":_vm.headers,\"items\":_vm.tables,\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"no-data-text\":_vm.$t('label.no_tables')},on:{\"sorted\":_vm.changeOrder},scopedSlots:_vm._u([{key:\"item.id\",fn:function(){return [_c('v-icon',{staticClass:\"reorder-handle\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-arrow-up-down \")])]},proxy:true},{key:\"item.name\",fn:function(props){return [_c('data-table-input-dialog',{attrs:{\"value\":props.item['no'],\"rules\":\"required|min:1|max:5\"},on:{\"update:value\":function($event){return _vm.$set(props.item, 'no', $event)}},model:{value:(props.item['no']),callback:function ($$v) {_vm.$set(props.item, 'no', $$v)},expression:\"props.item['no']\"}})]}},{key:\"item.seats\",fn:function(props){return [_c('data-table-input-dialog',{attrs:{\"type\":\"select\",\"items\":_vm.seats,\"value\":props.item['seats']},on:{\"update:value\":function($event){return _vm.$set(props.item, 'seats', $event)}},model:{value:(props.item['seats']),callback:function ($$v) {_vm.$set(props.item, 'seats', $$v)},expression:\"props.item['seats']\"}})]}},{key:\"item.actions\",fn:function(props){return [_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.remove(props.item.id)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],1)]}}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport Sortable from 'sortablejs';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport DataTableInputDialog from '@/components/dialogs/DataTableInputDialog.vue';\nimport Tab from '@/model/Tab';\nimport TabItem, { suggestedTabItem } from '@/model/TabItem';\n\nexport default Vue.extend({\n name: 'TablesDialog',\n components: { DataTableInputDialog },\n mixins: [DialogClosable],\n props: {\n tab: { type: Object as PropType, required: true },\n },\n data() {\n return {\n tables: [] as TabItem[],\n oldTables: [] as TabItem[],\n headers: [\n {\n text: '',\n width: '32',\n value: 'id',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.name'),\n value: 'name',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.seats'),\n width: '80',\n value: 'seats',\n align: 'start',\n sortable: false,\n },\n {\n text: '',\n width: '32',\n value: 'actions',\n align: 'center',\n sortable: false,\n },\n ],\n seats: [...new Array(99)].map((e, i) => (i + 1)),\n };\n },\n computed: {\n isChanged(): boolean {\n return !isModelEqualToModel(this.tables, this.oldTables);\n },\n },\n watch: {\n visible() {\n this.reset();\n },\n },\n mounted() {\n },\n methods: {\n changeOrder(event: Sortable.SortableEvent) {\n if (event.oldIndex === undefined || event.newIndex === undefined) return;\n const movedItem = this.tables.splice(event.oldIndex, 1)[0];\n this.tables.splice(event.newIndex, 0, movedItem);\n },\n reset() {\n const tab = this.$tstore.getters.tabsById.get(this.tab.id) as Tab | undefined;\n this.tables = (tab?.tabItems ?? []).map((o :TabItem) => cloneModel(o));\n this.oldTables = tab?.tabItems ?? [];\n },\n add() {\n const table = suggestedTabItem(this.tables);\n this.tables.push(table);\n\n (this.$refs.dialog as Vue & { scrollToBottom: ()=>void }).scrollToBottom();\n },\n remove(id: number) {\n this.tables = this.tables.filter((o) => o.id !== id);\n },\n close() {\n this.$emit('close');\n },\n cancel() {\n this.close();\n },\n async save() {\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.$tstore.dispatch('sendTabItems', {\n entities: this.tables,\n tabId: this.tab.id,\n }),\n );\n\n if (ok) {\n this.close();\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TablesDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TablesDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TablesDialog.vue?vue&type=template&id=5bd125fe&\"\nimport script from \"./TablesDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./TablesDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.bankTransferAllowed && _vm.bankTransferOnTop)?_c(_setup.PaymentMethodBankTransfer,{attrs:{\"value\":\"PAYMENT_METHOD_BANK_TRANSFER\",\"active\":true,\"show-controls\":_vm.showControls},on:{\"method:set-default\":function($event){return _setup.emit('method:set-default')}}}):_vm._e(),_vm._l((_vm.paymentMethodInfos),function(pmi){return [(pmi.cardInfo)?_c(_setup.PaymentMethodCard,{key:pmi.paymentMethod.ID,attrs:{\"value\":pmi.paymentMethod.ID ?? '',\"active\":pmi.active,\"payment-method-info\":pmi,\"show-controls\":_vm.showControls},on:{\"method:delete\":function($event){return _setup.emit('method:delete', pmi.paymentMethod)},\"method:set-default\":function($event){return _setup.emit('method:set-default', pmi.paymentMethod)}}}):_vm._e(),(pmi.sepaDebitInfo)?_c(_setup.PaymentMethodSepaDebit,{key:pmi.paymentMethod.ID,attrs:{\"value\":pmi.paymentMethod.ID ?? '',\"active\":pmi.active,\"payment-method-info\":pmi,\"show-controls\":_vm.showControls},on:{\"method:delete\":function($event){return _setup.emit('method:delete', pmi.paymentMethod)},\"method:set-default\":function($event){return _setup.emit('method:set-default', pmi.paymentMethod)}}}):_vm._e(),(!pmi.cardInfo && !pmi.sepaDebitInfo)?_c(_setup.PaymentMethodUnknown,{key:pmi.paymentMethod.ID,attrs:{\"value\":pmi.paymentMethod.ID ?? '',\"active\":pmi.active,\"payment-method-info\":pmi,\"show-controls\":_vm.showControls},on:{\"method:delete\":function($event){return _setup.emit('method:delete', pmi.paymentMethod)},\"method:set-default\":function($event){return _setup.emit('method:set-default', pmi.paymentMethod)}}}):_vm._e()]}),(_vm.bankTransferAllowed && !_vm.bankTransferOnTop)?_c(_setup.PaymentMethodBankTransfer,{attrs:{\"value\":\"PAYMENT_METHOD_BANK_TRANSFER\",\"active\":false,\"show-controls\":_vm.showControls},on:{\"method:set-default\":function($event){return _setup.emit('method:set-default')}}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.PaymentMethodLayout,{attrs:{\"value\":_vm.value,\"active\":_vm.active,\"logo-src\":\"/assets/payment-method/sepa.svg\",\"show-inactive-chip\":_vm.showControls},on:{\"method:delete\":function($event){return _setup.emit('method:delete')},\"method:set-default\":function($event){return _setup.emit('method:set-default')}}},[_vm._v(\" \"+_vm._s(_vm.$t('label.bank_transfer'))+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-list-item',{attrs:{\"value\":_vm.value}},[(!_vm.showInactiveChip)?_c('v-list-item-action',[_c('v-radio',{attrs:{\"value\":_vm.value}})],1):_vm._e(),_c('v-list-item-content',[_c('v-list-item-title',[_c('div',{staticClass:\"d-flex\"},[_c('v-img',{staticClass:\"mr-4\",attrs:{\"src\":_vm.logoSrc,\"max-width\":\"46\",\"contain\":\"\"}}),_c('div',{staticClass:\"d-flex flex-column justify-center\"},[_c('div',{class:_vm.active ? 'font-weight-bold' : 'font-weight-medium text--secondary'},[_vm._t(\"default\")],2),_c('div',{staticClass:\"text-body-2 text--secondary\"},[_vm._t(\"subtitle\")],2)])],1)])],1),_c('v-list-item-action',[_c('div',[(_vm.active)?_c('v-chip',{class:['ml-10', {'mr-9': (_vm.active || _vm.showInactiveChip) && !_vm.showDelete}],attrs:{\"small\":\"\",\"dark\":\"\",\"color\":\"brand\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.default'))+\" \")]):_vm._e(),(!_vm.active && _vm.showInactiveChip)?_c('v-chip',{class:['ml-10', {'mr-9': (_vm.active || _vm.showInactiveChip) && !_vm.showDelete}],attrs:{\"small\":\"\",\"color\":\"gray\"},on:{\"click\":function($event){return _setup.emit('method:set-default')}}},[_vm._v(\" \"+_vm._s(_vm.$t('label.inactive'))+\" \")]):_vm._e(),(_vm.showDelete)?_c('v-btn',{staticClass:\"ml-2\",attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){return _setup.emit('method:delete')}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],1):_vm._e()],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentMethodLayout',\n props: {\n value: { type: String as PropType, required: true },\n active: { type: Boolean as PropType, default: false },\n logoSrc: { type: String, required: true },\n showInactiveChip: { type: Boolean, required: false, default: false },\n showDelete: { type: Boolean, required: false, default: false },\n},\n emits: ['method:delete', 'method:set-default'],\n setup(__props, { emit }) {\n\n\n\n\n\n\nreturn { __sfc: true,emit }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodLayout.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodLayout.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentMethodLayout.vue?vue&type=template&id=af497922&\"\nimport script from \"./PaymentMethodLayout.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentMethodLayout.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType } from 'vue';\nimport PaymentMethodLayout from './PaymentMethodLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentMethodBankTransfer',\n props: {\n value: { type: String as PropType, required: true },\n active: { type: Boolean as PropType, default: false },\n showControls: { type: Boolean, required: false, default: false },\n},\n emits: ['method:delete', 'method:set-default'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nreturn { __sfc: true,emit, props, PaymentMethodLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodBankTransfer.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodBankTransfer.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentMethodBankTransfer.vue?vue&type=template&id=76b14486&\"\nimport script from \"./PaymentMethodBankTransfer.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentMethodBankTransfer.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.PaymentMethodLayout,{attrs:{\"value\":_vm.value,\"active\":_vm.active,\"logo-src\":_vm.paymentMethodInfo.logoSrc,\"show-inactive-chip\":_vm.showControls,\"show-delete\":!_vm.active && _vm.showControls},on:{\"method:delete\":function($event){return _setup.emit('method:delete')},\"method:set-default\":function($event){return _setup.emit('method:set-default')}},scopedSlots:_vm._u([{key:\"subtitle\",fn:function(){return [_vm._v(\" Exp.: \"+_vm._s(_setup.cardInfo.exp)+\" \")]},proxy:true}])},[_vm._v(\" \"+_vm._s(_setup.cardInfo.number)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PaymentMethodInfo } from '@/services/billing-utils';\nimport { PropType, computed } from 'vue';\nimport PaymentMethodLayout from './PaymentMethodLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentMethodCard',\n props: {\n value: { type: String as PropType, required: true },\n active: { type: Boolean as PropType, default: false },\n paymentMethodInfo: { type: Object as PropType, required: true },\n showControls: { type: Boolean, required: false, default: false },\n},\n emits: ['method:delete', 'method:set-default'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst cardInfo = computed(() => props.paymentMethodInfo.cardInfo);\n\n\nreturn { __sfc: true,emit, props, cardInfo, PaymentMethodLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodCard.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodCard.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentMethodCard.vue?vue&type=template&id=e98e9452&\"\nimport script from \"./PaymentMethodCard.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentMethodCard.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.PaymentMethodLayout,{attrs:{\"value\":_vm.value,\"active\":_vm.active,\"logo-src\":_vm.paymentMethodInfo.logoSrc,\"show-inactive-chip\":_vm.showControls,\"show-delete\":!_vm.active && _vm.showControls},on:{\"method:delete\":function($event){return _setup.emit('method:delete')},\"method:set-default\":function($event){return _setup.emit('method:set-default')}},scopedSlots:_vm._u([(_vm.showControls && _vm.paymentMethodInfo.sepaDebitInfo.generatedFromType === '')?{key:\"subtitle\",fn:function(){return [_c('v-link',{class:[{'primary--text': _vm.active}, {'text--secondary': !_vm.active}, 'text-decoration-underline cursor-pointer'],on:{\"click\":_setup.showPaymentMethodMandate}},[_vm._v(\" \"+_vm._s(_vm.$t('label.payment_method_mandate'))+\" \")])]},proxy:true}:null],null,true)},[_vm._v(\" \"+_vm._s(_setup.sepaDebitInfo.number)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PaymentMethodInfo } from '@/services/billing-utils';\nimport { PropType, computed } from 'vue';\nimport { PaymentMethod as BillingPaymentMethod } from '@/api/api-billing';\nimport store from '@/store/store';\nimport { performAction } from '@/services/vue-utils';\nimport i18n from '@/plugins/i18n';\nimport PaymentMethodLayout from './PaymentMethodLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentMethodSepaDebit',\n props: {\n value: { type: String as PropType, required: true },\n active: { type: Boolean as PropType, default: false },\n paymentMethodInfo: { type: Object as PropType, required: true },\n showControls: { type: Boolean, required: false, default: false },\n},\n emits: ['method:delete', 'method:set-default'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst sepaDebitInfo = computed(() => props.paymentMethodInfo.sepaDebitInfo);\n\nconst showPaymentMethodMandate = async () => {\n const pm = props.paymentMethodInfo.paymentMethod;\n const paymentMethodID = pm.ID;\n let paymentMethod = undefined as BillingPaymentMethod|undefined;\n const action = async () => {\n paymentMethod = await store.dispatch('billingGetPaymentMethod', { paymentMethodID });\n };\n const ok = await performAction(null, i18n.tc('error.load_data'), action);\n if (!ok || !paymentMethod?.mandate?.url) return;\n\n const newWin = window.open(\n paymentMethod?.mandate?.url,\n 'invoiceWindow',\n 'height=600,width=600',\n );\n newWin!.document.close();\n newWin!.focus();\n};\n\n\nreturn { __sfc: true,emit, props, sepaDebitInfo, showPaymentMethodMandate, PaymentMethodLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodSepaDebit.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodSepaDebit.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentMethodSepaDebit.vue?vue&type=template&id=42d733b8&\"\nimport script from \"./PaymentMethodSepaDebit.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentMethodSepaDebit.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.PaymentMethodLayout,{attrs:{\"value\":_vm.value,\"active\":_vm.active,\"logo-src\":\"\",\"show-inactive-chip\":_vm.showControls,\"show-delete\":!_vm.active && _vm.showControls},on:{\"method:delete\":function($event){return _setup.emit('method:delete')},\"method:set-default\":function($event){return _setup.emit('method:set-default')}}},[_vm._v(\" \"+_vm._s(_vm.paymentMethodInfo.type)+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PaymentMethodInfo } from '@/services/billing-utils';\nimport { PropType } from 'vue';\nimport PaymentMethodLayout from './PaymentMethodLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentMethodUnknown',\n props: {\n value: { type: String as PropType, required: true },\n active: { type: Boolean as PropType, default: false },\n paymentMethodInfo: { type: Object as PropType, required: true },\n showControls: { type: Boolean, required: false, default: false },\n},\n emits: ['method:delete', 'method:set-default'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nreturn { __sfc: true,emit, props, PaymentMethodLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodUnknown.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodUnknown.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentMethodUnknown.vue?vue&type=template&id=60f93474&\"\nimport script from \"./PaymentMethodUnknown.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentMethodUnknown.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { PaymentMethodInfo } from '@/services/billing-utils';\nimport { PropType } from 'vue';\nimport PaymentMethodBankTransfer from './PaymentMethodBankTransfer.vue';\nimport PaymentMethodCard from './PaymentMethodCard.vue';\nimport PaymentMethodSepaDebit from './PaymentMethodSepaDebit.vue';\nimport PaymentMethodUnknown from './PaymentMethodUnknown.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentMethodsList',\n props: {\n paymentMethodInfos: { type: Array as PropType>, required: true },\n showControls: { type: Boolean, required: false, default: false },\n bankTransferAllowed: { type: Boolean, required: true },\n bankTransferOnTop: { type: Boolean, required: false, default: false },\n},\n emits: ['method:delete', 'method:set-default'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nreturn { __sfc: true,emit, props, PaymentMethodBankTransfer, PaymentMethodCard, PaymentMethodSepaDebit, PaymentMethodUnknown }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodsList.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethodsList.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentMethodsList.vue?vue&type=template&id=a7731484&\"\nimport script from \"./PaymentMethodsList.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentMethodsList.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":\"\",\"max-width\":\"900\",\"card-height\":\"760\",\"card-max-height\":\"80vh\",\"container-class\":\"pa-0 ma-0 h-100\",\"card-class\":\"pa-0 ma-0\",\"persistent\":\"\",\"scrollable\":\"\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly,\"title\":_setup.steps.length <= 2 && _setup.step ? _setup.step.label : undefined},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),(!_setup.step || _setup.step.hideSubmit !== true)?_c('v-btn',{attrs:{\"disabled\":_setup.step && _setup.disabledSteps.includes(_setup.step.key),\"color\":_setup.step?.submitColor ?? 'primary'},on:{\"click\":_setup.submit}},[_vm._v(\" \"+_vm._s(_setup.submitText)+\" \")]):_vm._e(),(!_setup.step || _setup.step.hideCancel !== true)?_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\"},on:{\"click\":_setup.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")]):_vm._e()]},proxy:true}])},[_c('v-stepper',{staticClass:\"elevation-0 stepper-h100\",attrs:{\"alt-labels\":_vm.$vuetify.breakpoint.smAndUp},on:{\"change\":_setup.stepChanged},model:{value:(_setup.stepNo),callback:function ($$v) {_setup.stepNo=$$v},expression:\"stepNo\"}},[(_setup.stepKeys.length > 2)?_c('v-stepper-header',{staticClass:\"elevation-0\",attrs:{\"flat\":\"\"}},[_vm._l((_setup.steps),function(ss,i){return [_c('v-stepper-step',{key:`${i}-step`,attrs:{\"color\":\"blue\",\"complete\":_setup.completedSteps.includes(ss.key),\"step\":i+1,\"edit-icon\":\"$complete\",\"editable\":_setup.editableSteps.includes(ss.key)}},[_vm._v(\" \"+_vm._s(ss.label)+\" \")]),(i < _setup.steps.length-1)?_c('v-divider',{key:`${i}-divider`}):_vm._e()]})],2):_vm._e(),_c('v-divider'),_c('v-stepper-items',[(_setup.stepKeys.includes(_setup.PaymentWizardStepKey.PlanSelector))?_c('v-stepper-content',{attrs:{\"step\":_setup.stepKeys.indexOf(_setup.PaymentWizardStepKey.PlanSelector)+1}},[_c('v-card',[_c(_setup.PlanSelector)],1)],1):_vm._e(),(_setup.stepKeys.includes(_setup.PaymentWizardStepKey.BillingDetails))?_c('v-stepper-content',{attrs:{\"step\":_setup.stepKeys.indexOf(_setup.PaymentWizardStepKey.BillingDetails)+1}},[_c('v-card',[(_vm.$vuetify.breakpoint.xsOnly)?_c('p',{staticClass:\"ma-0 pa-0 text-caption font-weight-bold text--primary\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.billing_details'))+\" \")]):_vm._e(),_c(_setup.BillingDetails,{attrs:{\"embedded\":\"\",\"mode\":_vm.mode}})],1)],1):_vm._e(),(_setup.stepKeys.includes(_setup.PaymentWizardStepKey.PaymentDetails))?_c('v-stepper-content',{attrs:{\"step\":_setup.stepKeys.indexOf(_setup.PaymentWizardStepKey.PaymentDetails)+1}},[_c('v-card',[_c(_setup.PaymentDetails,{attrs:{\"mode\":_vm.mode,\"price\":_setup.paymentDetailsPrice,\"preview-invoice\":_setup.paymentDetailsPreviewInvoice,\"invoice\":_setup.paymentDetailsInvoice,\"prices\":_setup.paymentDetailsPrices}})],1)],1):_vm._e(),(_setup.stepKeys.includes(_setup.PaymentWizardStepKey.NewPaymentMethod))?_c('v-stepper-content',{attrs:{\"step\":_setup.stepKeys.indexOf(_setup.PaymentWizardStepKey.NewPaymentMethod)+1}},[_c('v-card',[_c(_setup.PaymentMethods,{attrs:{\"mode\":_vm.mode,\"client-secret\":_setup.paymentMethodsClientSecret}})],1)],1):_vm._e(),(_setup.stepKeys.includes(_setup.PaymentWizardStepKey.PaymentSuccess))?_c('v-stepper-content',{attrs:{\"step\":_setup.stepKeys.indexOf(_setup.PaymentWizardStepKey.PaymentSuccess)+1}},[_c('v-card',[_c(_setup.PaymentSuccess,{attrs:{\"invoice\":_setup.paymentSuccessInvoice,\"setup-intent\":_setup.paymentSuccessIntent}})],1)],1):_vm._e()],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('v-container',[_c('v-form',{ref:\"form\",model:{value:(_setup.isValid),callback:function ($$v) {_setup.isValid=$$v},expression:\"isValid\"}},[_c(_setup.ValidationObserver,{ref:\"observer\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:2|max:255\",\"label\":_vm.$t('label.business_name')},model:{value:(_setup.c.name),callback:function ($$v) {_vm.$set(_setup.c, \"name\", $$v)},expression:\"c.name\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|validEmail|max:255\",\"label\":_vm.$t('label.email')},model:{value:(_setup.c.email),callback:function ($$v) {_vm.$set(_setup.c, \"email\", $$v)},expression:\"c.email\"}})],1),(_setup.vatInfo.visible)?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"label\":_vm.$t('label.vat_number'),\"rules\":_setup.vatInfo.rules},model:{value:(_setup.c.vatNumber),callback:function ($$v) {_vm.$set(_setup.c, \"vatNumber\", $$v)},expression:\"c.vatNumber\"}})],1):_vm._e(),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"label\":_vm.$t('label.street'),\"rules\":\"required|min:2|max:255\"},model:{value:(_setup.c.addressLine1),callback:function ($$v) {_vm.$set(_setup.c, \"addressLine1\", $$v)},expression:\"c.addressLine1\"}})],1),_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:2|max:255\",\"label\":_vm.$t('label.city')},model:{value:(_setup.c.city),callback:function ($$v) {_vm.$set(_setup.c, \"city\", $$v)},expression:\"c.city\"}})],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('validated-text-field',{attrs:{\"label\":_vm.$t('label.zipcode'),\"rules\":\"required|min:2|max:50\"},model:{value:(_setup.c.postalCode),callback:function ($$v) {_vm.$set(_setup.c, \"postalCode\", $$v)},expression:\"c.postalCode\"}})],1),_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.country'),\"placeholder\":_vm.$t('label.country'),\"error-messages\":errors,\"items\":_setup.countries},model:{value:(_setup.c.country),callback:function ($$v) {_vm.$set(_setup.c, \"country\", $$v)},expression:\"c.country\"}})]}}])})],1),(_setup.stateInfo.visible)?_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('validated-text-field',{attrs:{\"label\":_vm.$t('label.state'),\"rules\":_setup.stateInfo.rules},model:{value:(_setup.c.state),callback:function ($$v) {_vm.$set(_setup.c, \"state\", $$v)},expression:\"c.state\"}})],1):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport Vue, {\n PropType, ref, Ref, computed, onMounted, watch, inject,\n} from 'vue';\nimport {\n Customer, Invoice, InvoiceStatus, Price, Country as BillingCountry, BillingConvert,\n} from '@/api/api-billing';\nimport Country from '@/model/Country';\nimport store from '@/store/store';\nimport {\n isEUCountry, isOriginCountry, toDTOCustomer, validateVatNumberFormat,\n} from '@/services/billing-utils';\nimport httpClient from '@/api/http-client';\nimport i18n from '@/plugins/i18n';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { ValidationObserver, extend } from 'vee-validate';\nimport { PaymentWizardMode, PaymentWizardStep, PaymentWizardStepKey } from '@/services/payment-wizard-utils';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentBillingDetails',\n props: {\n mode: { type: String as PropType, default: undefined },\n embedded: { type: Boolean as PropType, required: false, default: false },\n},\n emits: ['submit', 'is-changed'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\nextend('vat', {\n validate(value, params) { return validateVatNumberFormat(value); },\n message: (field, args) => i18n.tc('error.field_incorrect_vat_format'),\n});\n\n\n\n\n\nconst observer = ref>();\n\nconst c = ref({}) as Ref;\nconst oldc = ref({}) as Ref;\nconst countries = ref([]) as Ref;\n\nconst isValid = ref(false) as Ref;\n\nconst isNew = computed(() => !store.getters.isBillingCustomer);\n\nconst isChanged = computed(\n () => isNew.value || BillingConvert.customerToJson(c.value) !== BillingConvert.customerToJson(oldc.value),\n);\n\nconst stateInfo = computed(() => ({\n visible: true,\n rules: 'required|min:2|max:50',\n}));\n\nconst vatInfo = computed(() => {\n if (!isEUCountry(c.value.country)) {\n return {\n visible: false, // non EU country -> no VAT\n };\n }\n if (!isOriginCountry(c.value.country)) { // non origin country -> must be business with VAT\n return {\n visible: true,\n rules: 'required|min:2|max:20|vat',\n };\n }\n return { // orogin country -> can be also private customer without vat\n visible: true,\n rules: 'min:2|max:20|vat',\n };\n});\n\nconst loadCustomer = () => {\n oldc.value = toDTOCustomer(store.getters.billingCustomer);\n c.value = { ...oldc.value };\n countries.value = store.getters.sortedCountries;\n\n if (!isNew.value) return;\n\n const a = store.state.settings.account;\n const country = store.getters.billingGuessedCountry as BillingCountry | null;\n\n if (country && country.countryCode !== a.countryCode) {\n // guessed country and account country do not match\n c.value = {\n name: a.accountName,\n email: a.email,\n country: country.countryCode,\n };\n } else {\n // no guessed country or guessed country matches account country\n c.value = {\n name: a.accountName,\n email: a.email,\n addressLine1: a.streetAddress,\n city: a.city,\n postalCode: a.postalCode,\n country: a.countryCode,\n state: a.countryState,\n };\n }\n};\n\nconst autofillCountry = async () => {\n try {\n const countryCode = await httpClient.getCountryCode();\n console.log('autofillCountry:', countryCode, c.value.country);\n if (!countryCode || c.value.country) return; // no country code detected or no need to update it any more\n Vue.set(c.value, 'country', countryCode); // autofill country code\n } catch (e) {\n console.log('Autofill country code error: ', e);\n }\n};\n\nconst reset = () => {\n loadCustomer();\n if (c.value && !c.value.country) autofillCountry();\n};\n\nconst submit = async () => {\n if (!isChanged.value) {\n emit('submit', c.value);\n return true;\n }\n\n const customer = { ...c.value };\n if (!vatInfo.value.visible) {\n customer.vatNumber = undefined;\n }\n customer.locale = i18n.locale ?? '';\n\n const action = isNew.value ? 'billingCreateCustomer' : 'billingUpdateCustomer';\n const ok = await performSaveAction(\n observer.value,\n async () => store.dispatch(action, { customer }),\n { hideSuccess: props.embedded },\n );\n\n if (!ok) return false;\n\n emit('submit', c.value);\n\n return true;\n};\n\nonMounted(() => {\n reset();\n});\n\n// wizard embeddable\nconst addStep = inject('addStep') as ((s: PaymentWizardStep) => void) | undefined;\nconst stepChanged = inject('stepChanged') as ((s: PaymentWizardStep) => void) | undefined;\n\nconst paymentWizardStep = computed(() => {\n const complete = props.mode === PaymentWizardMode.BillingDetails ? isChanged.value && isValid.value : true;\n const submitText = props.mode === PaymentWizardMode.BillingDetails ? i18n.tc('button.save') : undefined;\n\n return {\n key: PaymentWizardStepKey.BillingDetails,\n label: i18n.tc('label.billing_details'),\n complete,\n submitAction: submit,\n submitText,\n } as PaymentWizardStep;\n});\n\nwatch(\n () => paymentWizardStep.value,\n (value) => { if (stepChanged) stepChanged(value); },\n);\n\nif (addStep) addStep(paymentWizardStep.value);\n\n\nreturn { __sfc: true,props, emit, observer, c, oldc, countries, isValid, isNew, isChanged, stateInfo, vatInfo, loadCustomer, autofillCountry, reset, submit, addStep, stepChanged, paymentWizardStep, ValidationObserver }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentBillingDetails.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentBillingDetails.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentBillingDetails.vue?vue&type=template&id=7b19afb5&\"\nimport script from \"./PaymentBillingDetails.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentBillingDetails.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_setup.invoiceInfo)?_c(_setup.InvoiceDetails,{attrs:{\"invoice-info\":_setup.invoiceInfo}}):_vm._e(),(!_setup.disallowPaymentMethods)?_c(_setup.PaymentMethods,{key:_setup.paymentMethodsKey,attrs:{\"mode\":_vm.mode,\"invoice\":_setup.paymentInvoice,\"client-secret\":_setup.clientSecret,\"default-activate\":_setup.activatePaymentMethod,\"disable-activate\":_setup.disableActivatePaymentMethod,\"hide-activate\":_setup.hideActivatePaymentMethod,\"disallow-new\":_setup.disallowNewPaymentMethod,\"allowed-payment-method-types\":_setup.allowedPaymentMethodTypes},on:{\"changed\":_setup.paymentMethodChanged,\"activate-changed\":_setup.paymentMethodActivateChanged}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable no-use-before-define */\n/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable vue/max-len */\n/* eslint-disable no-param-reassign */\n/* eslint-disable max-len */\nimport {\n Customer, IntentStatus, IntentUsage, Invoice, InvoiceStatus, PaymentMethodType, ProductType, SetupIntent,\n} from '@/api/api-billing';\nimport {\n PaymentIntent as StripePaymentIntent, SetupIntent as StripeSetupIntent,\n PaymentIntentResult as StripePaymentIntentResult, SetupIntentResult as StripeSetupIntentResult,\n Appearance, StripeElements, StripeElementsOptionsClientSecret, StripeElementsOptionsMode, StripePaymentElementOptions, Stripe, loadStripe,\n} from '@stripe/stripe-js';\nimport store from '@/store/store';\nimport i18n from '@/plugins/i18n';\nimport { IntentError, effectiveAmountDue, intentErrorText } from './billing-utils';\n\nexport const PAYMENT_METHOD_BANK_TRANSFER = 'PAYMENT_METHOD_BANK_TRANSFER';\nexport const NEW_PAYMENT_METHOD = 'NEW_PAYMENT_METHOD';\n\nexport enum PaymentContextMode {\n None = 'none',\n SubscriptionCreate = 'subscription-create',\n SubscriptionModify = 'subscription-modify',\n Invoice = 'invoice',\n Prices = 'prices',\n}\n\nexport interface PaymentContext {\n customer: Customer,\n mode: PaymentContextMode,\n idempotencyKey: string,\n priceID?: string;\n previewInvoice?: Invoice;\n paymentMethod?: string|StripeElements;\n paymentMethodType?: string\n invoice?: Invoice;\n setupIntent?: SetupIntent;\n priceIDs?: string[];\n activatePaymentMethod?: boolean;\n disableActivatePaymentMethod?: boolean;\n hideActivatePaymentMethod?: boolean;\n disallowPaymentMethods?: boolean;\n disallowNewPaymentMethod?: boolean;\n allowedPaymentMethodTypes?: string[];\n warningText?: string;\n}\n\n// load stripe\nlet stripe = undefined as Stripe | undefined;\n\nexport async function getStripe(): Promise {\n if (stripe) return stripe;\n\n const publishableKey = process.env.VUE_APP_STRIPE_PUBLISHABLE_KEY as string;\n stripe = (await loadStripe(publishableKey, { locale: i18n.locale as any }))!;\n\n return stripe;\n}\n\nexport async function createPaymentElements(p: { customer?: Customer, clientSecret?: string, invoice?: Invoice, darkTheme: boolean}): Promise {\n const { customer, invoice } = p;\n const { clientSecret } = p;\n\n if (!clientSecret && !invoice) return undefined;\n\n // if (invoice?.paymentIntent?.clientSecret !== undefined && !invoice?.paymentIntent?.paymentMethodTypes?.includes(PaymentMethodType.CustomerBalance)) {\n // clientSecret = invoice?.paymentIntent.clientSecret;\n // }\n\n const stripe = await getStripe();\n if (!stripe) throw new Error('Missing payment processor');\n\n const rules = {\n '.Input': {\n boxShadow: 'none',\n border: '2px #3355ff00 solid',\n },\n '.Input:focus': {\n boxShadow: 'none',\n border: '2px #3355ff solid',\n },\n '.Tab': {\n boxShadow: 'none',\n border: '2px #3355ff00 solid',\n },\n '.Tab:focus': {\n boxShadow: 'none',\n },\n '.Tab--selected:focus': {\n boxShadow: 'none',\n },\n '.Tab--selected': {\n boxShadow: 'none',\n border: '2px #3355ff solid',\n },\n };\n\n const appearanceLight: Appearance = {\n theme: 'flat',\n variables: {\n colorPrimary: '#3355ff',\n colorPrimaryText: '#ffffff',\n borderRadius: '4px',\n },\n rules,\n };\n\n const appearanceDark: Appearance = {\n theme: 'night',\n variables: {\n colorPrimary: '#3355ff',\n colorPrimaryText: '#ffffff',\n borderRadius: '4px',\n colorBackground: '#30303b',\n colorTextSecondary: '#858593',\n },\n rules,\n };\n\n const appearance = p.darkTheme ? appearanceDark : appearanceLight;\n\n const elemenOptionsMode: StripeElementsOptionsMode = {\n mode: 'payment',\n appearance,\n currency: invoice?.currency,\n amount: invoice?.amountRemaining,\n paymentMethodTypes: invoice?.paymentMethodTypes?.filter((pmt) => pmt !== PaymentMethodType.CustomerBalance),\n };\n\n const elemenOptionsClientSecret: StripeElementsOptionsClientSecret = {\n clientSecret,\n appearance,\n };\n\n const paymentElemenOptions: StripePaymentElementOptions = {\n layout: {\n type: 'tabs',\n defaultCollapsed: false,\n // radios: false,\n // spacedAccordionItems: true,\n },\n };\n\n if (customer) {\n paymentElemenOptions.defaultValues = {\n billingDetails: {\n name: customer.name || undefined,\n email: customer.email || undefined,\n // phone: customer.phone || undefined,\n address: {\n line1: customer.addressLine1 || undefined,\n line2: customer.addressLine1 || undefined,\n city: customer.city || undefined,\n state: customer.state || undefined,\n country: customer.country || undefined,\n postal_code: customer.postalCode || undefined,\n },\n },\n };\n }\n\n const elements = clientSecret ? stripe.elements(elemenOptionsClientSecret) : stripe.elements(elemenOptionsMode);\n elements.create('payment', paymentElemenOptions);\n\n return elements;\n}\n\n// confirm setup\nexport async function confirmSetup(\n clientSecret: string,\n paymentMethodIDOrElements: string | StripeElements,\n activate: boolean,\n invoiceID: string | undefined = undefined,\n) {\n const stripe = await getStripe();\n if (!stripe) throw new Error('Missing payment processor');\n\n const elements = typeof paymentMethodIDOrElements !== 'string' ? paymentMethodIDOrElements : undefined;\n // eslint-disable-next-line camelcase\n const payment_method = typeof paymentMethodIDOrElements === 'string' ? paymentMethodIDOrElements : undefined;\n\n // submit elements\n if (elements) {\n const { error: submitError } = await elements.submit();\n if (submitError) {\n throw submitError;\n }\n }\n\n // return url\n let url = window.location.href;\n url = url.slice(0, url.lastIndexOf('/'));\n url += '/payment-result?';\n if (invoiceID) url += `invoice=${invoiceID}`;\n if (invoiceID && activate) url += '&';\n if (activate) url += 'activate=yes';\n\n // eslint-disable-next-line camelcase\n const return_url = url;\n const response = await stripe.confirmSetup({\n elements,\n clientSecret,\n redirect: 'always',\n // eslint-disable-next-line camelcase\n confirmParams: { return_url, payment_method },\n });\n\n return handlePaymentResponse(response);\n}\n\n// confirm payment\nexport async function confirmPayment(\n clientSecret: string,\n paymentMethodIDOrElements: string | StripeElements,\n activate: boolean,\n) {\n const stripe = await getStripe();\n if (!stripe) throw new Error('Missing payment processor');\n\n const elements = typeof paymentMethodIDOrElements !== 'string' ? paymentMethodIDOrElements : undefined;\n // eslint-disable-next-line camelcase\n const payment_method = typeof paymentMethodIDOrElements === 'string' ? paymentMethodIDOrElements : undefined;\n\n // submit elements\n if (elements) {\n const { error: submitError } = await elements.submit();\n if (submitError) {\n throw submitError;\n }\n }\n\n // return url\n let url = window.location.href;\n url = url.slice(0, url.lastIndexOf('/'));\n url += '/payment-result?';\n if (activate) url += 'activate=yes';\n\n // eslint-disable-next-line camelcase\n const return_url = url;\n const response = await stripe.confirmPayment({\n elements,\n clientSecret,\n redirect: 'always',\n // eslint-disable-next-line camelcase\n confirmParams: { return_url, payment_method },\n });\n\n return handlePaymentResponse(response);\n}\n\nexport async function confirmPaymentBankTransfer(\n clientSecret: string,\n) {\n const stripe = await getStripe();\n if (!stripe) throw new Error('Missing payment processor');\n\n const response = await stripe.confirmCustomerBalancePayment(\n clientSecret,\n {\n payment_method: {\n customer_balance: {},\n },\n payment_method_options: {\n customer_balance: {\n funding_type: 'bank_transfer',\n bank_transfer: {\n type: 'eu_bank_transfer',\n eu_bank_transfer: {\n country: 'NL',\n },\n },\n },\n },\n },\n {\n handleActions: false,\n },\n );\n\n return handlePaymentResponse(response);\n}\n\nfunction handlePaymentResponse(response: StripePaymentIntentResult | StripeSetupIntentResult): {id: string, offSession?: boolean} {\n const { error } = response;\n const { paymentIntent } = response as StripePaymentIntentResult;\n const { setupIntent } = response as StripeSetupIntentResult;\n\n if (error) {\n const {\n type, message, code, decline_code: declineCode,\n } = error;\n const paymentError = {\n type, message, code, declineCode,\n } as IntentError;\n\n const text = intentErrorText(paymentError);\n if (text) throw new Error(text);\n }\n\n const intent = paymentIntent ?? setupIntent;\n\n if (intent?.status === 'succeeded'\n || (intent?.status === 'requires_action' && intent.next_action?.type === 'display_bank_transfer_instructions')\n || intent?.status === 'processing') {\n return { id: intent.id, offSession: paymentIntent?.setup_future_usage === 'off_session' };\n }\n\n const text = intentErrorText({ type: 'operation_failed' });\n throw new Error(text);\n}\n\nexport async function preparePayment(data: PaymentContext) {\n // check price and create preview invoice if needed (if not wizard plan selector)\n if (data.mode === PaymentContextMode.SubscriptionModify || data.mode === PaymentContextMode.SubscriptionCreate) {\n if (!data.priceID) throw new Error('Prepare payment: missing price');\n if (!data.previewInvoice) {\n data.previewInvoice = await store.dispatch('billingPreviewSubscription', { priceID: data.priceID, invoiceOnly: true });\n }\n data.setupIntent = await store.dispatch('billingAddPaymentMethod');\n }\n\n // check price(s) and create invoice from prices if invoice not created yet\n if (data.mode === PaymentContextMode.Prices && !data.invoice) {\n if (!data.priceIDs) throw new Error('Prepare payment: missing prices');\n data.invoice = await store.dispatch('billingCreatePaymentInvoice', { priceIDs: data.priceIDs });\n if (!data.invoice) throw new Error('Prepare payment: missing invoice for prices');\n }\n\n // check invoice\n if (data.mode === PaymentContextMode.Invoice && !data.invoice) {\n throw new Error('Prepare payment: missing invoice for prices');\n }\n\n // payment methods params: disallow activate, disable activate, default activate, disallow new\n const isOffSession = data.mode === PaymentContextMode.SubscriptionCreate || data.mode === PaymentContextMode.SubscriptionModify\n || (data.mode === PaymentContextMode.Invoice && data.invoice?.paymentIntent?.usage === IntentUsage.OffSession);\n\n data.disableActivatePaymentMethod = !data.setupIntent;\n data.activatePaymentMethod = isOffSession;\n data.hideActivatePaymentMethod = !data.setupIntent;\n data.disallowNewPaymentMethod = false;\n\n // disallow all payment metods for 0 amount invoices\n if (data.invoice && !data.setupIntent) {\n const balance = data.customer.balance ?? 0;\n const cashBalance = -(data.customer.cashBalances?.find((cb) => cb.currency === data.invoice?.currency)?.amount ?? 0);\n const { amountDue } = effectiveAmountDue(data.invoice, { balance, cashBalance });\n data.disallowPaymentMethods = !amountDue || undefined;\n }\n\n // allowed payment method types: from invoice payment intent, invoice or preview invoice\n data.allowedPaymentMethodTypes = data.invoice?.paymentIntent?.paymentMethodTypes\n ?? data.invoice?.paymentMethodTypes\n ?? data.previewInvoice?.paymentMethodTypes\n ?? undefined;\n}\n\nexport async function submitPayment(data: PaymentContext) {\n const setupNewPaymentMethod = !!data.paymentMethod && typeof data.paymentMethod !== 'string';\n let methodAlreadyActivated = false;\n\n // 1.) activate payment method if not new and requested\n if (!setupNewPaymentMethod && data.activatePaymentMethod) {\n const paymentMethodID = data.paymentMethod === PAYMENT_METHOD_BANK_TRANSFER ? undefined : data.paymentMethod;\n await store.dispatch('billingActivatePaymentMethod', { paymentMethodID });\n methodAlreadyActivated = true;\n\n // invoice might get paid if from subscription - get fresh one\n if (data.invoice?.paymentIntent?.usage === IntentUsage.OffSession) {\n data.invoice = await store.dispatch('billingFinishPaymentInvoice', { invoiceID: data.invoice.ID });\n }\n }\n\n // 2a.) create or modify subscription and create invoice\n if ((data.mode === PaymentContextMode.SubscriptionCreate || data.mode === PaymentContextMode.SubscriptionModify) && !data.invoice) {\n // subscription and no invoice -> create/modify subscription\n const paymentMethodTypes = [data.paymentMethodType!];\n const deactivatePaymentMethod = setupNewPaymentMethod && data.activatePaymentMethod;\n\n const action = data.mode === PaymentContextMode.SubscriptionCreate ? 'billingCreateSubscription' : 'billingUpdateSubscription';\n const customer: Customer = await store.dispatch(action, {\n priceID: data.priceID, idempotencyKey: data.idempotencyKey, paymentMethodTypes, deactivatePaymentMethod, prorationDate: data.previewInvoice?.created,\n });\n\n data.invoice = customer.subscription?.invoice;\n }\n\n // 2b.) finalize draft invoice\n if (data.mode === PaymentContextMode.Prices && data.invoice?.status === InvoiceStatus.Draft) {\n const paymentMethodTypes = data.paymentMethod === PAYMENT_METHOD_BANK_TRANSFER ? [PaymentMethodType.CustomerBalance] : [];\n data.invoice = await store.dispatch('billingFinalizePaymentInvoice', { invoiceID: data.invoice.ID, paymentMethodTypes });\n }\n\n // check invoice exists\n if (!data.invoice) throw new Error('Submit payment: missing invoice');\n if (data.invoice.status === InvoiceStatus.Draft) throw new Error('Submit payment: draft invoice');\n // const invoiceOpen = [InvoiceStatus.Open, InvoiceStatus.Uncollectible].includes(data.invoice?.status!);\n const invoiceOpen = [IntentStatus.RequiresPaymentMethod, IntentStatus.RequiresConfirmation, IntentStatus.RequiresAction].includes(data.invoice?.paymentIntent?.status ?? IntentStatus.None);\n\n // 3.) bank transfer -> confirm and finalize invoice\n if (data.paymentMethod === PAYMENT_METHOD_BANK_TRANSFER) {\n if (invoiceOpen && (data.invoice?.paymentIntent?.nextAction?.displayIBANBankTransferInstructions === undefined || data.invoice.amountDue === 0)) {\n // give stripe time to process invoice\n if (data.mode === PaymentContextMode.SubscriptionCreate || data.mode === PaymentContextMode.SubscriptionModify) {\n await new Promise((resolve) => { setTimeout(resolve, 5000); });\n }\n data.invoice = await store.dispatch('billingFinishPaymentInvoice', { invoiceID: data.invoice.ID, bankTransfer: true });\n }\n // remove setup intent since unused (state = requires payment method)\n // no payment intent for 0 amount due subscription invoice\n data.setupIntent = undefined;\n return;\n }\n\n // 4.) confirm payment by existing or new payment method\n if (invoiceOpen && (!data.setupIntent || methodAlreadyActivated)) {\n let activate = data.activatePaymentMethod && !methodAlreadyActivated;\n const { offSession } = await confirmPayment(data.invoice.paymentIntent?.clientSecret!, data.paymentMethod!, activate ?? false);\n\n activate = activate && offSession;\n const invoiceID = data.invoice.ID;\n data.invoice = await store.dispatch('billingFinishPaymentInvoice', { invoiceID, activate });\n return;\n }\n\n // 5.) confirm setup if new payment method\n if (data.setupIntent && setupNewPaymentMethod) {\n // payment elements with setup intent with client secret\n const { id: intentID } = await confirmSetup(data.setupIntent.clientSecret!, data.paymentMethod!, data.activatePaymentMethod ?? false, data.invoice.ID);\n\n // finish setup intent\n const activate = data.activatePaymentMethod;\n data.setupIntent = await store.dispatch('billingFinishPaymentMethod', { intentID, activate });\n\n // check invoice -> subscription might get paid\n if (invoiceOpen) {\n const invoiceID = data.invoice.ID;\n data.invoice = await store.dispatch('billingFinishPaymentInvoice', { invoiceID });\n }\n } else {\n // remove setup intent since unused (state = requires payment method)\n data.setupIntent = undefined;\n }\n}\n\nexport async function cancelPayment(data: PaymentContext) {\n if (data.invoice?.status === InvoiceStatus.Draft) {\n await store.dispatch('billingDeletePaymentInvoice', { invoiceID: data.invoice.ID });\n }\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('h3',[_vm._v(_vm._s(_vm.$t('label.review_order'))+\":\")])]),_c('v-col',{staticClass:\"pt-2 mt-0 pb-0 mx-auto\",attrs:{\"cols\":\"12\",\"md\":\"10\"}},[_c('div',{staticClass:\"mx-16 receipt mt-4 mb-8\"},[_c('div',{staticClass:\"receipt-list py-2 px-4 black--text\"},[_vm._l((_vm.invoiceInfo.items),function(item,i){return [_c('div',{key:`item_${i}`,staticClass:\"my-4\"},[_c('span',{staticClass:\"font-weight-medium text-body-2\"},[_vm._v(_vm._s(item.description)+\" \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(item.amount))])]),_vm._l((item.discountInfos),function(discount,di){return [_c('div',{key:`item_${i}_discount_${di}`},[_c('span',{staticClass:\"text-body-2\"},[_vm._v(_vm._s(discount.shortDescription)+\" \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(discount.discountAmount))])])])]})],2)]}),(_setup.discountInfo)?_c('div',{staticClass:\"my-2\"},[_c('span',{staticClass:\"font-weight-medium text-body-1\"},[_vm._v(_vm._s(_setup.discountInfo.shortDescription)+\" \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(_setup.discountInfo.discountAmount))])])]):_vm._e(),_c('v-divider',{attrs:{\"light\":\"\"}}),(_vm.invoiceInfo.tax)?_c('p',{staticClass:\"my-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.vat'))+\": \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(_vm.invoiceInfo.tax))])]):_vm._e(),_c('p',{staticClass:\"my-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.total'))+\": \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(_vm.invoiceInfo.total))])]),(_vm.invoiceInfo.appliedBalance)?_c('p',{staticClass:\"my-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.applied_balance'))+\" \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(_vm.invoiceInfo.appliedBalance))])]):_vm._e(),_c('v-divider',{attrs:{\"light\":\"\"}}),(_vm.invoiceInfo.futureProrationDate)?_c('p',{staticClass:\"font-weight-bold my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.amount_due_on', [_vm.invoiceInfo.futureProrationDate] ))+\" \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(_vm.invoiceInfo.amountDue))])]):_c('p',{staticClass:\"font-weight-bold my-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.amount_due'))+\" \"),_c('span',{staticClass:\"float-right\"},[_vm._v(_vm._s(_vm.invoiceInfo.amountDue))])]),(_setup.subscriptionPriceInfo && _setup.subscriptionPriceInfo.intervalPeriodically)?[_c('v-divider',{attrs:{\"light\":\"\"}}),_c('div',{staticClass:\"text-caption text-center my-0 pt-4 pb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.subscription_renewed_periodically', [_setup.subscriptionPriceInfo.intervalPeriodically]))+\" \"),(_setup.subscriptionPriceInfo?.discountInfo?.validUntilOrDurationDescription)?[_vm._v(\" \"+_vm._s(_setup.subscriptionPriceInfo.discountInfo.validUntilOrDurationDescription)+\" \")]:_vm._e()],2)]:_vm._e()],2)])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, computed, onMounted } from 'vue';\nimport { DiscountInfo, InvoiceInfo, PriceInfo } from '@/services/billing-utils';\nimport { ProductType } from '@/api/api-billing';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'InvoiceDetails',\n props: {\n invoiceInfo: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\nconst discountInfo = computed(() => {\n const di = props.invoiceInfo?.discountInfo;\n if (!di || props.invoiceInfo.items.find(\n (ii) => ii.discountInfos.find(\n (iidi) => iidi.discount?.name === di.discount?.name,\n ),\n )) return undefined;\n return di;\n});\n\nconst subscriptionPriceInfo = computed(() => {\n const items = props.invoiceInfo.items.toReversed();\n\n const index = items.findIndex(\n (i) => i.amountNumber > 0\n && i.priceInfo?.price?.product?.type === ProductType.Subscription\n && i.priceInfo.intervalPeriodically,\n );\n\n if (index < 0) return undefined;\n\n const priceInfo = { ...items[index].priceInfo };\n priceInfo.discountInfo = items[index].discountInfos.reduce(\n (odi, di) => ((di.discount?.discountAmount ?? 0) > (odi?.discount?.discountAmount ?? 0) ? di : odi),\n undefined as DiscountInfo | undefined,\n );\n\n console.log('subscriptionPriceInfo: ', priceInfo);\n return priceInfo;\n});\n\nonMounted(() => {\n console.log('invoice details mounted:', props.invoiceInfo, discountInfo.value, subscriptionPriceInfo.value);\n});\n\n\nreturn { __sfc: true,props, discountInfo, subscriptionPriceInfo }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InvoiceDetails.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./InvoiceDetails.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./InvoiceDetails.vue?vue&type=template&id=7b626788&\"\nimport script from \"./InvoiceDetails.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./InvoiceDetails.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./InvoiceDetails.vue?vue&type=style&index=0&id=7b626788&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(!_vm.hideTitle)?_c('p',{staticClass:\"mt-5 mb-2\"},[_c('v-icon',{staticStyle:{\"padding-bottom\":\"2px\",\"margin-bottom\":\"2px\"},attrs:{\"small\":\"\",\"color\":\"success\"}},[_vm._v(\" mdi-lock \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.secure_payment_with_cc'))+\" \")],1):_vm._e(),(_setup.invoceMode && !_vm.disallowNew && _setup.otherThanBankTransferAllowed)?_c(_setup.PaymentElement,{staticClass:\"pb-10 px-4\",attrs:{\"customer\":_setup.customer,\"client-secret\":_vm.clientSecret,\"invoice\":_vm.invoice,\"disallow-inactive\":_setup.disallowNewInactive},on:{\"complete\":_setup.onNewComplete}}):_vm._e(),(_setup.paymentMethodsVisible)?_c('v-list',{staticClass:\"py-0\"},[_c('v-list-item-group',{attrs:{\"active-class\":\"primary--text\"},model:{value:(_setup.selected),callback:function ($$v) {_setup.selected=$$v},expression:\"selected\"}},[_c('v-radio-group',{staticClass:\"mt-0 pt-0\",attrs:{\"value\":_setup.selected,\"hide-details\":\"\"}},[_c(_setup.PaymentMethodsList,{attrs:{\"payment-method-infos\":_setup.paymentMethodInfos,\"bank-transfer-allowed\":_setup.bankTransferAllowed,\"bank-transfer-on-top\":_setup.bankTransferAllowed && _setup.activePaymentMethodID === undefined}}),(!_vm.disallowNew && _setup.otherThanBankTransferAllowed && !_setup.invoceMode)?_c('v-list-item',{key:-1,attrs:{\"value\":\"NEW_PAYMENT_METHOD\"}},[_c('v-list-item-action',[_c('v-radio',{attrs:{\"value\":\"NEW_PAYMENT_METHOD\"}})],1),_c('v-list-item-title',[_c('v-icon',{staticStyle:{\"padding-bottom\":\"3px\"}},[_vm._v(\" mdi-plus \")]),_vm._v(\" \"+_vm._s(_setup.newPaymentMethodText)+\" \")],1)],1):_vm._e()],1)],1)],1):_vm._e(),(_setup.newPaymentMethodVisible && !_vm.disallowNew && _setup.otherThanBankTransferAllowed && !_setup.invoceMode)?_c(_setup.PaymentElement,{attrs:{\"customer\":_setup.customer,\"client-secret\":_vm.clientSecret,\"invoice\":_vm.invoice,\"disallow-inactive\":_setup.disallowNewInactive},on:{\"complete\":_setup.onNewComplete}}):_vm._e(),_c('div',[(!_vm.hideActivate)?_c('v-checkbox',{attrs:{\"input-value\":_setup.activate,\"disabled\":_vm.disableActivate || _setup.forceActivate,\"label\":_vm.$t('label.set_as_default_payment_method')},on:{\"click\":function($event){$event.stopPropagation();_setup.activate = !_setup.activate}}}):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{class:['gp-payment-element', {'inactive': _setup.incactive}],attrs:{\"id\":\"payment-element\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, Ref, ref, onMounted, watch, computed,\n} from 'vue';\n\nimport { StripeElements, StripeError } from '@stripe/stripe-js';\nimport { Customer, Invoice } from '@/api/api-billing';\nimport activityIndicator from '@/plugins/activity-indicator-plugin/activity-indicator';\nimport { actionShowError } from '@/services/vue-utils';\nimport { createPaymentElements } from '@/services/payment-details-utils';\nimport { useVuetify } from '@/components/helpers/vue2-helpers';\n\nexport interface PaymentElementsCompleteEvent {\n elements: StripeElements;\n paymentMethodType: string;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentElement',\n props: {\n clientSecret: { type: Object as PropType, required: false, default: undefined },\n invoice: { type: Object as PropType, required: false, default: undefined },\n customer: { type: Object as PropType, required: true },\n disallowInactive: { type: Boolean as PropType, required: false, default: false },\n},\n emits: [\"complete\"],\n setup(__props, { emit }: { emit: ({(e: 'complete', event: PaymentElementsCompleteEvent | undefined): void}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props;\n\nconst vuetify = useVuetify();\n\n\n\n\n\nfunction handleError(error: StripeError) {\n actionShowError(new Error(error.message));\n}\n\nlet elements: StripeElements | undefined;\n\nconst destroy = async () => {\n if (!elements) return;\n\n const paymentElement = elements.getElement('payment');\n if (!paymentElement) return;\n\n paymentElement.unmount();\n paymentElement.destroy();\n};\n\nconst paymentElementFocused = ref(true);\n\nconst incactive = computed(() => !paymentElementFocused.value && !props.disallowInactive);\n\nconst create = async () => {\n destroy();\n\n // create elements\n activityIndicator.show();\n const { customer, clientSecret, invoice } = props;\n const darkTheme = vuetify.theme.dark;\n elements = await createPaymentElements({\n customer, clientSecret, invoice, darkTheme,\n });\n activityIndicator.hide();\n\n const paymentElement = elements?.getElement('payment');\n if (!paymentElement) {\n return;\n }\n\n // setup elements\n paymentElement.on('loaderstart', (event) => {\n activityIndicator.show();\n });\n paymentElement.on('loaderror', (event) => {\n activityIndicator.hide();\n handleError(event.error);\n });\n paymentElement.on('ready', async (event) => {\n activityIndicator.hide();\n paymentElement.focus();\n });\n\n // latest 'change' values\n let paymentMethodType: string | undefined;\n let complete: boolean | undefined;\n\n paymentElement.on('change', (event) => {\n // remember latest 'change' values\n paymentMethodType = event.value.type;\n complete = event.complete;\n const e = complete && paymentMethodType && elements ? { elements, paymentMethodType } : undefined;\n emit('complete', e);\n });\n\n paymentElement.on('blur', (event) => {\n console.log('payment element blur: ', event);\n paymentElementFocused.value = false;\n });\n paymentElement.on('focus', (event) => {\n console.log('payment element focus: ', event);\n paymentElementFocused.value = true;\n // use latest 'change' values\n const e = complete && paymentMethodType && elements ? { elements, paymentMethodType } : undefined;\n emit('complete', e);\n });\n\n // mount elements\n paymentElement.mount('#payment-element');\n};\n\nwatch(\n () => props.clientSecret,\n (value, oldValue) => { if (value !== oldValue) create(); },\n);\n\nonMounted(async () => create());\n\n\nreturn { __sfc: true,vuetify, props, emit, handleError, elements, destroy, paymentElementFocused, incactive, create }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentElement.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentElement.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentElement.vue?vue&type=template&id=109d1997&scoped=true&\"\nimport script from \"./PaymentElement.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentElement.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./PaymentElement.vue?vue&type=style&index=0&id=109d1997&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"109d1997\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, ref, Ref, watch, onMounted, computed, inject,\n} from 'vue';\nimport { paymentMethodInfo } from '@/services/billing-utils';\nimport store from '@/store/store';\nimport {\n Customer, CustomerBalanceStatus, Invoice, SetupIntent, PaymentMethod, PaymentMethodType,\n} from '@/api/api-billing';\nimport { StripeElements } from '@stripe/stripe-js';\nimport { PaymentWizardMode, PaymentWizardStep, PaymentWizardStepKey } from '@/services/payment-wizard-utils';\nimport { NEW_PAYMENT_METHOD, PAYMENT_METHOD_BANK_TRANSFER, confirmSetup } from '@/services/payment-details-utils';\nimport i18n from '@/plugins/i18n';\nimport { performAction } from '@/services/vue-utils';\nimport PaymentElement, { PaymentElementsCompleteEvent } from './PaymentElement.vue';\nimport PaymentMethodsList from './PaymentMethodsList.vue';\n\nexport interface NewPaymentMethodEvent {\n finishedSetupIntent: SetupIntent,\n}\n\nexport interface PaymentMethodChangedEvent {\n paymentMethod: StripeElements | string;\n paymentMethodType: string;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentMethods',\n props: {\n mode: { type: String as PropType, default: undefined },\n clientSecret: { type: Object as PropType, default: undefined },\n invoice: { type: Object as PropType, required: false, default: undefined },\n defaultActivate: { type: Boolean as PropType, default: true },\n disableActivate: { type: Boolean as PropType, default: false },\n hideActivate: { type: Boolean as PropType, default: false },\n disallowNew: { type: Boolean as PropType, default: false },\n allowedPaymentMethodTypes: { type: Array as PropType, default: undefined },\n hideTitle: { type: Boolean, required: false, default: false },\n},\n emits: [\"activate-changed\", \"changed\"],\n setup(__props, { emit }: { emit: ({\n (e: 'activate-changed', event: boolean): void\n (e: 'changed', event: PaymentMethodChangedEvent | undefined): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props;\n\n\n\n// eslint-disable-next-line no-spaced-func, func-call-spacing\n\n\nconst selected = ref('') as Ref; // selected payment method id or new\n\n// new payment method if complete (all required fields provided)\nconst newElements = ref(undefined) as Ref;\nconst newPaymentMethodType = ref(undefined) as Ref;\n\nconst customer = computed(() => (store.getters.billingCustomer ?? undefined) as Customer|undefined);\n\nconst bankTransferAllowed = computed(() => customer.value?.customerBalanceStatus === CustomerBalanceStatus.Granted\n && (!props.allowedPaymentMethodTypes || props.allowedPaymentMethodTypes.includes(PaymentMethodType.CustomerBalance)));\n\nconst otherThanBankTransferAllowed = computed(() => !props.allowedPaymentMethodTypes\n|| props.allowedPaymentMethodTypes.some((pmt) => pmt !== PaymentMethodType.CustomerBalance));\n\nconst activePaymentMethodID = computed(() => customer.value?.paymentMethod?.ID);\n\nconst invoceMode = computed(() => props.mode === PaymentWizardMode.Invoice || props.mode === PaymentWizardMode.Prices);\n\nconst paymentMethodsVisible = computed(() => props.mode !== PaymentWizardMode.NewPaymentMethod);\n\nconst newPaymentMethodVisible = computed(() => selected.value === NEW_PAYMENT_METHOD);\n\nconst disallowNewInactive = computed(() => selected.value === NEW_PAYMENT_METHOD);\n\nconst activate = ref(true) as Ref;\n\nconst forceActivate = ref(false) as Ref;\n\nconst newPaymentMethodText = computed(() => i18n.tc('button.new_payment_method'));\n\nconst paymentMethodInfos = computed(() => {\n let paymentMethods = store.getters.billingPaymentMethods as PaymentMethod[];\n\n if (props.allowedPaymentMethodTypes) {\n paymentMethods = paymentMethods.filter((pm) => props.allowedPaymentMethodTypes?.includes(pm.type ?? ''));\n }\n\n const infos = paymentMethods.map((o) => paymentMethodInfo(o)!);\n const apmi = infos.findIndex((ci) => ci.paymentMethod.ID === customer.value?.paymentMethod?.ID);\n if (apmi < 0) return infos;\n const active = infos.splice(apmi);\n active[0].active = true;\n return [...active, ...infos];\n});\n\nconst paymentMethod = computed(() => {\n if (selected.value === '') return undefined;\n\n if (selected.value === PAYMENT_METHOD_BANK_TRANSFER) {\n return { paymentMethod: selected.value, paymentMethodType: PaymentMethodType.CustomerBalance };\n }\n\n if (selected.value !== NEW_PAYMENT_METHOD) {\n const paymentMethodType = paymentMethodInfos.value.find((pmi) => pmi.paymentMethod.ID === selected.value)?.type!;\n if (!paymentMethodType) return undefined;\n return { paymentMethod: selected.value, paymentMethodType };\n }\n\n if (selected.value === NEW_PAYMENT_METHOD) {\n if (!newElements.value || !newPaymentMethodType.value) return undefined;\n return { paymentMethod: newElements.value, paymentMethodType: newPaymentMethodType.value };\n }\n\n return undefined;\n});\n\nwatch(\n () => paymentMethod.value,\n () => { emit('changed', paymentMethod.value); },\n { immediate: true },\n);\n\nwatch(\n () => paymentMethod.value,\n () => { emit('activate-changed', activate.value); },\n { immediate: true },\n);\n\nconst onNewComplete = (value: PaymentElementsCompleteEvent | undefined) => {\n selected.value = NEW_PAYMENT_METHOD;\n newElements.value = value?.elements;\n newPaymentMethodType.value = value?.paymentMethodType;\n};\n\nonMounted(() => {\n activate.value = props.defaultActivate;\n\n if (customer.value?.customerBalanceStatus !== CustomerBalanceStatus.Granted // no bank transfer\n && store.getters.billingPaymentMethods.length === 0 // no payment method\n && !props.disableActivate) { // activate is allowed\n activate.value = true;\n forceActivate.value = true;\n }\n\n if (invoceMode.value && otherThanBankTransferAllowed.value) {\n selected.value = NEW_PAYMENT_METHOD;\n } else if (props.mode === PaymentWizardMode.NewPaymentMethod) {\n selected.value = NEW_PAYMENT_METHOD;\n } else if (bankTransferAllowed.value && !activePaymentMethodID.value) {\n selected.value = PAYMENT_METHOD_BANK_TRANSFER;\n } else if (paymentMethodInfos.value.some((pmi) => pmi.paymentMethod.ID === activePaymentMethodID.value)) {\n selected.value = activePaymentMethodID.value ?? '';\n } else if (paymentMethodInfos.value.length > 0) {\n selected.value = paymentMethodInfos.value[0].paymentMethod.ID!;\n } else if (!props.disallowNew || !otherThanBankTransferAllowed.value) {\n selected.value = NEW_PAYMENT_METHOD;\n } else {\n selected.value = '';\n }\n});\n\n// submit new payment method\nasync function submit() {\n let finishedSetupIntent: SetupIntent | undefined;\n const action = async () => {\n if (!props.clientSecret || !paymentMethod.value) return;\n const { id: intentID } = await confirmSetup(props.clientSecret, paymentMethod.value.paymentMethod, activate.value);\n finishedSetupIntent = await store.dispatch('billingFinishPaymentMethod', { intentID });\n };\n\n const ok = await performAction(null, i18n.tc('error.general'), action);\n if (!ok) return undefined;\n\n // return event\n const event = { finishedSetupIntent } as NewPaymentMethodEvent;\n if (finishedSetupIntent) return event;\n\n return undefined;\n}\n\n// wizard embeddable\nconst addStep = inject('addStep') as ((s: PaymentWizardStep) => void) | undefined;\nconst stepChanged = inject('stepChanged') as ((s: PaymentWizardStep) => void) | undefined;\n\nconst paymentWizardStep = computed(() => (\n {\n key: PaymentWizardStepKey.NewPaymentMethod,\n label: i18n.tc('button.add_new_payment_method'),\n complete: paymentMethod.value !== undefined,\n submitAction: submit,\n } as PaymentWizardStep));\n\nwatch(\n () => paymentWizardStep.value,\n () => { if (stepChanged) stepChanged(paymentWizardStep.value); },\n);\n\nif (addStep) addStep(paymentWizardStep.value);\n\n\nreturn { __sfc: true,props, emit, selected, newElements, newPaymentMethodType, customer, bankTransferAllowed, otherThanBankTransferAllowed, activePaymentMethodID, invoceMode, paymentMethodsVisible, newPaymentMethodVisible, disallowNewInactive, activate, forceActivate, newPaymentMethodText, paymentMethodInfos, paymentMethod, onNewComplete, submit, addStep, stepChanged, paymentWizardStep, PaymentElement, PaymentMethodsList }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethods.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentMethods.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentMethods.vue?vue&type=template&id=73b25592&\"\nimport script from \"./PaymentMethods.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentMethods.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, Ref, ref, onMounted, watch, computed, inject,\n} from 'vue';\nimport i18n from '@/plugins/i18n';\n\nimport { StripeElements } from '@stripe/stripe-js';\nimport {\n Customer, Invoice, InvoiceStatus, Price, ProductType, SetupIntent, SubscriptionStatus,\n} from '@/api/api-billing';\nimport { actionShowError, performAction } from '@/services/vue-utils';\nimport store from '@/store/store';\nimport { invoiceInfo as getInvoiceInfo } from '@/services/billing-utils';\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n PaymentContextMode, PaymentContext, preparePayment, submitPayment, cancelPayment,\n} from '@/services/payment-details-utils';\nimport { PaymentWizardMode, PaymentWizardStep, PaymentWizardStepKey } from '@/services/payment-wizard-utils';\nimport InvoiceDetails from './InvoiceDetails.vue';\nimport PaymentMethods, { PaymentMethodChangedEvent } from './PaymentMethods.vue';\n\nexport interface PaymentFinishedEvent {\n finishedInvoice: Invoice,\n finishedSetupIntent?: SetupIntent,\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentDetails',\n props: {\n mode: { type: String as PropType, default: undefined },\n price: { type: Object as PropType, default: undefined },\n previewInvoice: { type: Object as PropType, default: undefined },\n invoice: { type: Object as PropType, required: false, default: undefined },\n prices: { type: Array as PropType|undefined>, default: undefined },\n},\n emits: [\"payment-ready\", \"payment-finished\"],\n setup(__props, { expose, emit }: { emit: ({(e: 'payment-ready', event: string|StripeElements|undefined): void\n (e: 'payment-finished', event: PaymentFinishedEvent): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props;\n\n\n\n\n\nlet paymentContext = undefined as PaymentContext|undefined;\n\nconst clientSecret = ref(undefined) as Ref;\n\nconst paymentMethod = ref(undefined) as Ref;\nconst paymentMethodType = ref(undefined) as Ref;\n\nconst customer = computed(() => (store.getters.billingCustomer ?? undefined) as Customer|undefined);\n\nconst paymentInvoice = ref(undefined) as Ref;\n\nconst paymentMethodsKey = ref(0) as Ref;\nconst activatePaymentMethod = ref(true) as Ref;\nconst disableActivatePaymentMethod = ref(false) as Ref;\nconst hideActivatePaymentMethod = ref(false) as Ref;\nconst disallowNewPaymentMethod = ref(false) as Ref;\nconst disallowPaymentMethods = ref(false) as Ref;\n\nconst allowedPaymentMethodTypes = ref(undefined) as Ref;\n\nconst invoiceInfo = computed(() => {\n const invoice = paymentInvoice.value;\n if (!invoice) return undefined;\n\n // negative value = customer has credit\n const balance = customer.value?.balance ?? 0;\n const cashBalance = -(customer.value?.cashBalances?.find((cb) => cb.currency === invoice.currency)?.amount ?? 0);\n const info = getInvoiceInfo(invoice, { balance, cashBalance });\n\n return info;\n});\n\nconst paymentMethodChanged = (value: PaymentMethodChangedEvent|undefined) => {\n paymentMethod.value = value?.paymentMethod;\n paymentMethodType.value = value?.paymentMethodType;\n};\nconst paymentMethodActivateChanged = (value: boolean) => { activatePaymentMethod.value = value; };\n\nwatch(\n () => paymentMethod.value,\n (value) => { emit('payment-ready', paymentMethod.value); },\n { immediate: true },\n);\n\nfunction createContext() {\n // subscription\n const subscription = customer.value?.subscription && customer.value?.subscription.status !== SubscriptionStatus.Ended\n ? customer.value?.subscription\n : undefined;\n\n // context\n const context = {\n customer: customer.value,\n mode: 'none',\n idempotencyKey: uuidv4(),\n } as PaymentContext;\n\n if (props.price?.product?.type === ProductType.Subscription) {\n // subscription mode\n context.priceID = props.price.ID;\n context.previewInvoice = props.previewInvoice;\n\n if (subscription) {\n // subscription modify mode\n context.mode = PaymentContextMode.SubscriptionModify;\n } else {\n // subscription create mode\n context.mode = PaymentContextMode.SubscriptionCreate;\n }\n } else if (props.invoice) {\n // invoice mode\n context.mode = PaymentContextMode.Invoice;\n context.invoice = props.invoice;\n } else if (props.prices) {\n // invoice for prices mode\n context.mode = PaymentContextMode.Prices;\n context.priceIDs = props.prices.flatMap((p) => p.ID!);\n }\n\n return context;\n}\n\nasync function prepare() {\n if (!paymentContext) paymentContext = createContext();\n\n if (paymentContext.mode === PaymentContextMode.None) {\n actionShowError(new Error('Prepare payment: Unsupported payment mode'));\n paymentContext = undefined;\n return false;\n }\n\n const ok = await performAction(null, i18n.tc('error.general'), async () => preparePayment(paymentContext!));\n if (!ok) return false;\n\n clientSecret.value = paymentContext.setupIntent?.clientSecret;\n paymentInvoice.value = paymentContext.invoice ?? paymentContext.previewInvoice;\n\n activatePaymentMethod.value = paymentContext.activatePaymentMethod ?? false;\n disableActivatePaymentMethod.value = paymentContext.disableActivatePaymentMethod ?? true;\n hideActivatePaymentMethod.value = paymentContext.hideActivatePaymentMethod ?? true;\n disallowNewPaymentMethod.value = paymentContext.disallowNewPaymentMethod ?? false;\n disallowPaymentMethods.value = paymentContext.disallowPaymentMethods ?? false;\n allowedPaymentMethodTypes.value = paymentContext.allowedPaymentMethodTypes;\n\n paymentMethod.value = undefined;\n paymentMethodsKey.value += 1;\n\n return true;\n}\n\nasync function submit() {\n if (!paymentContext\n || (!disallowPaymentMethods.value && (!paymentMethod.value || !paymentMethodType.value))) return undefined;\n\n paymentContext.paymentMethod = paymentMethod.value;\n paymentContext.paymentMethodType = paymentMethodType.value;\n paymentContext.activatePaymentMethod = activatePaymentMethod.value;\n\n const ok = await performAction(null, i18n.tc('error.general'), () => submitPayment(paymentContext!));\n if (!ok) return undefined;\n\n if (paymentContext.warningText) {\n actionShowError(new Error(paymentContext.warningText));\n }\n\n // return event\n const event = {\n finishedInvoice: paymentContext.invoice,\n finishedSetupIntent: paymentContext.setupIntent,\n } as PaymentFinishedEvent;\n emit('payment-finished', event);\n return event;\n}\n\nasync function cancel() {\n await performAction(null, i18n.tc('error.general'), () => cancelPayment(paymentContext!));\n}\n\nexpose({ submit });\n\n// wizard embeddable\nconst addStep = inject('addStep') as ((s: PaymentWizardStep) => void) | undefined;\nconst stepChanged = inject('stepChanged') as ((s: PaymentWizardStep) => void) | undefined;\n\nconst payText = computed(() => {\n if (!invoiceInfo.value) return undefined;\n\n const text = invoiceInfo.value.futureProrationDate ? i18n.tc('button.confirm') : i18n.tc('button.pay');\n return `${text} ${invoiceInfo.value.amountDue}`;\n});\n\nconst paymentWizardStep = computed(() => (\n {\n key: PaymentWizardStepKey.PaymentDetails,\n label: i18n.tc('title.payment_details'),\n complete: paymentMethod.value !== undefined || disallowPaymentMethods,\n\n submitText: payText.value,\n submitColor: 'success',\n prepareAction: prepare,\n submitAction: submit,\n cancelAction: cancel,\n } as PaymentWizardStep));\n\nwatch(\n () => paymentWizardStep.value,\n (value) => { if (stepChanged) stepChanged(paymentWizardStep.value); },\n);\n\nif (addStep) addStep(paymentWizardStep.value);\n\n\nreturn { __sfc: true,props, emit, paymentContext, clientSecret, paymentMethod, paymentMethodType, customer, paymentInvoice, paymentMethodsKey, activatePaymentMethod, disableActivatePaymentMethod, hideActivatePaymentMethod, disallowNewPaymentMethod, disallowPaymentMethods, allowedPaymentMethodTypes, invoiceInfo, paymentMethodChanged, paymentMethodActivateChanged, createContext, prepare, submit, cancel, addStep, stepChanged, payText, paymentWizardStep, InvoiceDetails, PaymentMethods }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentDetails.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentDetails.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentDetails.vue?vue&type=template&id=3ceea448&\"\nimport script from \"./PaymentDetails.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentDetails.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"text-center d-flex flex-column flex-grow-1\"},[(_setup.visibleInfos.subscription && _setup.subscriptionInfo)?_c(_setup.PaymentSuccessSubscription,{attrs:{\"subscription-info\":_setup.subscriptionInfo}}):_vm._e(),(_setup.visibleInfos.invoice && _setup.invoiceInfo)?_c(_setup.PaymentSuccessInvoice,{attrs:{\"invoice-info\":_setup.invoiceInfo}}):_vm._e(),(_setup.visibleInfos.intent && _setup.intentInfo)?_c(_setup.PaymentSuccessIntent,{attrs:{\"intent-info\":_setup.intentInfo}}):_vm._e(),(_setup.visibleInfos.bankTransfer && _setup.bankTransferInfo)?_c(_setup.PaymentSuccessBankTransferInstructions,{attrs:{\"bank-transfer-info\":_setup.bankTransferInfo}}):_vm._e(),(_setup.visibleInfos.mandate && _setup.mandateInfo)?_c(_setup.PaymentSuccessMandateInstructions,{attrs:{\"mandate-info\":_setup.mandateInfo}}):_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(_setup.PaymentResultSuccessLayout,{attrs:{\"title\":_setup.title,\"icon\":_setup.icon,\"icon-color\":_setup.iconColor}})\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:\"d-flex flex-column flex-grow-1\"},[_c('div',{staticClass:\"d-flex flex-column justify-center justify-baseline\"},[_c('v-icon',{staticStyle:{\"font-size\":\"120px\"},attrs:{\"x-large\":\"\",\"color\":_vm.iconColor}},[_vm._v(\" \"+_vm._s(_vm.icon)+\" \")]),_c('p',{staticClass:\"text-h3 py-5\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('p',[_vm._v(\" \"+_vm._s(_vm.subtitle)+\" \")])],1),_c('v-row',{staticClass:\"flex-grow-0 py-0 pt-3 my-0 text-subtitle-1\"},[_vm._t(\"default\")],2),_c('div',{staticClass:\"flex-grow-1 d-flex flex-column justify-end\"},[_c('i18n',{staticClass:\"text-body-2\",attrs:{\"path\":_vm.footerPath,\"tag\":\"span\"}},[(!_setup.slots['footer-content'])?_c('span',[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.settings')))]),_vm._v(\" → \"),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.account')))]),_vm._v(\" → \"),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.billing')))])]):_vm._t(\"footer-content\")],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, useSlots } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentResultSuccessLayout',\n props: {\n icon: { type: String, required: true },\n iconColor: { type: String, required: false, default: 'success' },\n title: { type: [String, Object] as PropType, required: true },\n subtitle: { type: [String, Object] as PropType, required: false, default: undefined },\n footerPath: { type: String, required: false, default: 'message.billing_method_setup' },\n},\n setup(__props) {\n\nconst props = __props;\n\nconst slots = useSlots();\n\n\n\n\nreturn { __sfc: true,slots, props }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentResultSuccessLayout.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentResultSuccessLayout.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentResultSuccessLayout.vue?vue&type=template&id=4d332007&\"\nimport script from \"./PaymentResultSuccessLayout.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentResultSuccessLayout.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, computed } from 'vue';\nimport { IntentInfo } from '@/services/billing-utils';\nimport i18n from '@/plugins/i18n';\nimport PaymentResultSuccessLayout from './PaymentResultSuccessLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentSuccessIntent',\n props: {\n intentInfo: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nconst title = computed(() => (!props.intentInfo.error ? i18n.t('label.thank_you') : i18n.t('label.oops')));\nconst icon = computed(() => (!props.intentInfo.error ? 'mdi-checkbox-marked-circle' : 'mdi-alert'));\nconst iconColor = computed(() => (!props.intentInfo.error ? 'success' : 'error'));\n\n\nreturn { __sfc: true,props, title, icon, iconColor, PaymentResultSuccessLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessIntent.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessIntent.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentSuccessIntent.vue?vue&type=template&id=5e126b06&\"\nimport script from \"./PaymentSuccessIntent.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentSuccessIntent.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.PaymentResultSuccessLayout,{attrs:{\"title\":_setup.title,\"subtitle\":_setup.subtitle,\"icon\":_setup.icon,\"icon-color\":_setup.iconColor,\"footer-path\":\"message.billing_payment_paid\"},scopedSlots:_vm._u([{key:\"footer-content\",fn:function(){return [_c('span',[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.settings')))]),_vm._v(\" → \"),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.account')))]),_vm._v(\" → \"),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.billing')))])])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, computed,\n} from 'vue';\nimport { InvoiceInfo } from '@/services/billing-utils';\nimport i18n from '@/plugins/i18n';\nimport PaymentResultSuccessLayout from './PaymentResultSuccessLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentSuccessInvoice',\n props: {\n invoiceInfo: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nconst invoiceState = computed(() => {\n if (props.invoiceInfo.processing) return { processing: true };\n if (props.invoiceInfo.open) return { open: true };\n if (props.invoiceInfo.paid) return { paid: true };\n return { error: true };\n});\n\nconst title = computed(() => {\n if (invoiceState.value.paid) { return i18n.t('label.thank_you'); }\n if (invoiceState.value.processing) { return i18n.t('label.payment_processing'); }\n if (invoiceState.value.open) { return i18n.t('label.oops'); }\n return i18n.t('label.oops');\n});\n\nconst subtitle = computed(() => {\n if (invoiceState.value.paid) { return i18n.t('message.invoice_paid_success'); }\n if (invoiceState.value.processing) { return i18n.t('message.payment_processing'); }\n if (invoiceState.value.open) { return i18n.t('error.payment_invoice_not_closed_pay_invoice'); }\n return i18n.t('error.billing_general');\n});\n\nconst icon = computed(() => {\n if (invoiceState.value.paid) { return 'mdi-checkbox-marked-circle'; }\n if (invoiceState.value.processing) { return 'mdi-alert'; }\n if (invoiceState.value.open) { return 'mdi-alert'; }\n return 'mdi-alert';\n});\n\nconst iconColor = computed(() => {\n if (invoiceState.value.paid) { return 'success'; }\n if (invoiceState.value.processing) { return 'warning'; }\n if (invoiceState.value.open) { return 'error'; }\n return 'error';\n});\n\n\nreturn { __sfc: true,props, invoiceState, title, subtitle, icon, iconColor, PaymentResultSuccessLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessInvoice.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessInvoice.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentSuccessInvoice.vue?vue&type=template&id=11e92c60&\"\nimport script from \"./PaymentSuccessInvoice.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentSuccessInvoice.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.PaymentResultSuccessLayout,{attrs:{\"title\":_setup.title,\"subtitle\":_setup.subtitle,\"icon\":_setup.icon,\"footer-path\":_setup.footeri18nPath},scopedSlots:_vm._u([(_setup.subscriptionState.active)?{key:\"footer-content\",fn:function(){return [_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.subscriptionInfo.paidUntil)+\" \")]),_c('span',[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.settings')))]),_vm._v(\" → \"),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.account')))]),_vm._v(\" → \"),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.billing')))])])]},proxy:true}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, computed,\n} from 'vue';\nimport { SubscriptionInfo } from '@/services/billing-utils';\nimport i18n from '@/plugins/i18n';\nimport PaymentResultSuccessLayout from './PaymentResultSuccessLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentSuccessSubscription',\n props: {\n subscriptionInfo: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nconst subscriptionState = computed(() => {\n if (props.subscriptionInfo.active) return { active: true };\n if (props.subscriptionInfo.awaitingPayment) return { awaitingPayment: true };\n return { error: true };\n});\n\nconst title = computed(() => {\n if (subscriptionState.value.active) { return i18n.t('label.thank_you'); }\n if (subscriptionState.value.awaitingPayment) { return i18n.t('label.payment_processing'); }\n return i18n.t('label.oops');\n});\n\nconst subtitle = computed(() => {\n if (subscriptionState.value.active) { return i18n.t('label.your_subscription_is_active'); }\n if (subscriptionState.value.awaitingPayment) { return i18n.t('message.payment_processing'); }\n return i18n.t('error.billing_general');\n});\n\nconst icon = computed(() => {\n if (subscriptionState.value.active) { return 'mdi-checkbox-marked-circle'; }\n if (subscriptionState.value.awaitingPayment) { return 'mdi-alert'; }\n return 'mdi-alert';\n});\n\nconst footeri18nPath = computed(() => {\n if (!subscriptionState.value.active) return 'message.billing_method_setup';\n return props.subscriptionInfo.sentInvoice\n ? 'message.billing_subscription_invoice_sent_on' : 'message.billing_subscription_renewed_on';\n});\n\n\nreturn { __sfc: true,props, subscriptionState, title, subtitle, icon, footeri18nPath, PaymentResultSuccessLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessSubscription.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessSubscription.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentSuccessSubscription.vue?vue&type=template&id=67c33362&\"\nimport script from \"./PaymentSuccessSubscription.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentSuccessSubscription.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',{staticClass:\"d-flex flex-column justify-center justify-baseline\"},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"x-large\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-bank-transfer \")]),_c('p',{staticClass:\"text-h6 pt-5 font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.to_complete_send_payment_to_our_bank_account'))+\" \")])],1),_c('div',{staticClass:\"text-left\"},[_c('v-row',{staticClass:\"py-0 pt-3 my-0 text-subtitle-1\"},[_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"4\"}},[_vm._v(\" IBAN: \")]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.bankTransferInfo.formattedIBAN))])]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"4\"}},[_vm._v(\" BIC: \")]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.bankTransferInfo.BIC))])]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.amount'))+\": \")]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.bankTransferInfo.amountRemaining))])]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.account_holder_name'))+\": \")]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.bankTransferInfo.accountHolderName))])]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.payment_reference'))+\": \")]),_c('v-col',{staticClass:\"py-0 my-1\",attrs:{\"cols\":\"8\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.bankTransferInfo.reference))])])],1),_c('v-divider',{staticClass:\"my-4\"}),_c('div',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.bank_transfer_note_duration'))+\" \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { BankTransferInstructionsInfo } from '@/services/billing-utils';\nimport { PropType } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentSuccessBankTransferInstructions',\n props: {\n bankTransferInfo: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nreturn { __sfc: true,props }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessBankTransferInstructions.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessBankTransferInstructions.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentSuccessBankTransferInstructions.vue?vue&type=template&id=f3dad8fc&\"\nimport script from \"./PaymentSuccessBankTransferInstructions.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentSuccessBankTransferInstructions.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.PaymentResultSuccessLayout,{attrs:{\"icon\":\"mdi-bank-check\",\"title\":_vm.$i18n.t('label.success'),\"subtitle\":_setup.subtitle}},[_c('v-col',{staticClass:\"py-0 my-1 text-right\",attrs:{\"cols\":\"6\"}},[_vm._v(\" Mandate Reference: \")]),_c('v-col',{staticClass:\"py-0 my-1 text-left\",attrs:{\"cols\":\"6\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.mandateInfo.reference))])]),_c('v-col',{staticClass:\"py-0 my-1 text-right\",attrs:{\"cols\":\"6\"}},[_vm._v(\" Creditor Name: \")]),_c('v-col',{staticClass:\"py-0 my-1 text-left\",attrs:{\"cols\":\"6\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_setup.creditorInfo.name))])]),_c('v-col',{staticClass:\"py-0 my-1 text-right\",attrs:{\"cols\":\"6\"}},[_vm._v(\" Creditor ID (CID): \")]),_c('v-col',{staticClass:\"py-0 my-1 text-left\",attrs:{\"cols\":\"6\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_setup.creditorInfo.id))])]),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-link',{staticClass:\"primary--text text-decoration-underline cursor-pointer\",on:{\"click\":_setup.showPaymentMethodMandate}},[_vm._v(\" \"+_vm._s(_vm.$t('label.download_sepa_mandate'))+\" \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, computed } from 'vue';\nimport i18n from '@/plugins/i18n';\nimport PaymentResultSuccessLayout from './PaymentResultSuccessLayout.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentSuccessMandateInstructions',\n props: {\n mandateInfo: { type: Object as PropType<{ reference?: string, url?: string}>, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\nconst creditorInfo = computed(() => ({\n name: 'Guestplan',\n id: 'NL40ZZZ342518280000',\n address: 'Keizersgracht 188, Amterdam, 1016NA, NL',\n}));\n\nconst subtitle = `${i18n.t('label.arrange_sepa_debit_your_bank')} ${i18n.t('label.sepa_debit_note_duration')}`;\n\nasync function showPaymentMethodMandate() {\n const newWin = window.open(\n props.mandateInfo?.url,\n 'invoiceWindow',\n 'height=600,width=600',\n );\n newWin!.document.close();\n newWin!.focus();\n}\n\n\nreturn { __sfc: true,props, creditorInfo, subtitle, showPaymentMethodMandate, PaymentResultSuccessLayout }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessMandateInstructions.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccessMandateInstructions.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentSuccessMandateInstructions.vue?vue&type=template&id=a53fc472&\"\nimport script from \"./PaymentSuccessMandateInstructions.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentSuccessMandateInstructions.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, computed, inject, watch,\n} from 'vue';\nimport {\n bankTransferInstructionsInfo,\n invoiceInfo as getInvoiceInfo, intentInfo as getIntentInfo, subscriptionInfo as getSubscriptionInfo,\n} from '@/services/billing-utils';\nimport i18nn from '@/plugins/i18n';\nimport {\n Invoice, SetupIntent, Subscription, SubscriptionStatus,\n} from '@/api/api-billing';\nimport { PaymentWizardStep, PaymentWizardStepKey } from '@/services/payment-wizard-utils';\nimport store from '@/store/store';\nimport PaymentSuccessIntent from './PaymentSuccessIntent.vue';\nimport PaymentSuccessInvoice from './PaymentSuccessInvoice.vue';\nimport PaymentSuccessSubscription from './PaymentSuccessSubscription.vue';\nimport PaymentSuccessBankTransferInstructions from './PaymentSuccessBankTransferInstructions.vue';\nimport PaymentSuccessMandateInstructions from './PaymentSuccessMandateInstructions.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentSuccess',\n props: {\n invoice: { type: Object as PropType, required: false, default: undefined },\n setupIntent: { type: Object as PropType, required: false, default: undefined },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nconst intentInfo = computed(() => {\n const showSetup = !props.invoice?.paymentIntent?.lastError && !!props.setupIntent?.lastError;\n const intent = showSetup ? props.setupIntent : props.invoice?.paymentIntent ?? props.setupIntent;\n if (!intent) return undefined;\n return getIntentInfo(intent);\n});\n\nconst isIntentError = computed(() => intentInfo.value?.error !== undefined);\n\nconst bankTransferInfo = computed(() => {\n if (!props.invoice?.paymentIntent?.nextAction?.displayIBANBankTransferInstructions) return undefined;\n return bankTransferInstructionsInfo(props.invoice.paymentIntent.nextAction.displayIBANBankTransferInstructions);\n});\n\nconst invoiceInfo = computed(() => {\n if (!props.invoice) return undefined;\n return getInvoiceInfo(props.invoice);\n});\n\nconst subscription = computed(() => store.getters.billingSubscription ?? undefined as Subscription | undefined);\n\nconst subscriptionInfo = computed(() => {\n if (!subscription.value || !props.invoice || subscription.value?.invoice?.ID !== !props.invoice.ID) return undefined;\n if (subscription.value.status !== SubscriptionStatus.Active) return undefined;\n\n return getSubscriptionInfo(subscription.value);\n});\n\nconst mandateInfo = computed(() => {\n if (props.setupIntent?.mandate?.type !== 'sepa_debit') return undefined;\n\n const { reference, url } = props.setupIntent?.mandate ?? {};\n if (!url) return undefined;\n return { reference, url };\n});\n\nconst visibleInfos = computed(() => {\n if (isIntentError.value) return { intent: true }; // payment or setup intent error\n if (bankTransferInfo.value) return { bankTransfer: true }; // bank transfer expected\n if (mandateInfo.value) return { mandate: true }; // sepa debit info from setup intent\n if (subscriptionInfo.value) return { subscription: true }; // last invoice of subscription\n if (invoiceInfo.value) return { invoice: true }; // invoice\n if (intentInfo.value) return { intent: true }; // intent (setup itent)\n return {};\n});\n\nwatch(\n () => props.invoice,\n (value) => {\n console.log('PaymentSuccess: invoice=', props.invoice, ' setupIntent: ', props.setupIntent);\n console.log('invoiceInfo: ', invoiceInfo.value);\n console.log('intentInfo: ', intentInfo.value);\n console.log('subscriptionInfo: ', subscriptionInfo.value);\n console.log('bankTransferInfo: ', bankTransferInfo.value);\n console.log('mandateInfo: ', mandateInfo.value);\n },\n { immediate: true },\n);\n\n// wizard embeddable\nconst addStep = inject('addStep') as ((s: PaymentWizardStep) => void) | undefined;\n\nconst paymentWizardStep = {\n key: PaymentWizardStepKey.PaymentSuccess,\n label: i18nn.tc('title.finished'),\n complete: true,\n submitText: i18nn.t('button.close'),\n hideCancel: true,\n} as PaymentWizardStep;\n\nif (addStep) addStep(paymentWizardStep);\n\n\nreturn { __sfc: true,props, intentInfo, isIntentError, bankTransferInfo, invoiceInfo, subscription, subscriptionInfo, mandateInfo, visibleInfos, addStep, paymentWizardStep, PaymentSuccessIntent, PaymentSuccessInvoice, PaymentSuccessSubscription, PaymentSuccessBankTransferInstructions, PaymentSuccessMandateInstructions }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccess.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentSuccess.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentSuccess.vue?vue&type=template&id=93713b38&\"\nimport script from \"./PaymentSuccess.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentSuccess.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, ref, Ref, watch, onMounted, computed, provide, onBeforeMount, nextTick,\n} from 'vue';\nimport { PaymentWizardMode, PaymentWizardStep, PaymentWizardStepKey } from '@/services/payment-wizard-utils';\nimport {\n Customer, Invoice, Price, SetupIntent,\n} from '@/api/api-billing';\nimport i18n from '@/plugins/i18n';\nimport store from '@/store/store';\nimport BillingDetails from './PaymentBillingDetails.vue';\nimport PaymentDetails, { PaymentFinishedEvent } from './PaymentDetails.vue';\nimport PaymentSuccess from './PaymentSuccess.vue';\nimport PlanSelector, { PlanSelectedEvent } from './PlanSelector.vue';\nimport PaymentMethods, { NewPaymentMethodEvent } from './PaymentMethods.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaymentWizard',\n props: {\n mode: { type: String as PropType, default: undefined },\n\n price: { type: Object as PropType, default: undefined },\n previewInvoice: { type: Object as PropType, default: undefined },\n\n invoice: { type: Object as PropType, default: undefined },\n\n finishedInvoice: { type: Object as PropType, default: undefined },\n finishedIntent: { type: Object as PropType, default: undefined },\n\n setupIntent: { type: Object as PropType, default: undefined },\n\n prices: { type: Array as PropType|undefined>, default: undefined },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst paymentDetailsPrice = ref(undefined) as Ref;\nconst paymentDetailsPreviewInvoice = ref(undefined) as Ref;\nconst paymentDetailsInvoice = ref(undefined) as Ref;\nconst paymentDetailsPrices = ref(undefined) as Ref;\nconst paymentSuccessInvoice = ref(undefined) as Ref;\nconst paymentSuccessIntent = ref(undefined) as Ref;\nconst paymentMethodsClientSecret = ref(undefined) as Ref;\n\n\n\nconst stepKeys = ref([]) as Ref;\n\nconst steps = ref([]) as Ref;\nconst disabledSteps = ref([]) as Ref;\nconst completedSteps = ref([]) as Ref;\nconst editableSteps = ref([]) as Ref;\n\nconst stepNo = ref(1) as Ref;\nconst step = computed(() => steps.value[stepNo.value - 1]);\n\nconst stepMap = new Map();\nconst addStep = (s: PaymentWizardStep) => {\n stepMap.set(s.key, s);\n steps.value = stepKeys.value.flatMap((sk) => stepMap.get(sk) ?? []);\n};\nprovide('addStep', addStep);\n\nconst stepChanged = (s: PaymentWizardStep) => {\n // update step in steps\n stepMap.set(s.key, s);\n steps.value = stepKeys.value.flatMap((sk) => stepMap.get(sk) ?? []);\n\n // enable/disable step\n if (s.complete && disabledSteps.value.includes(s.key)) {\n disabledSteps.value = disabledSteps.value.filter((dsk) => dsk !== s.key);\n }\n if (!s.complete && !disabledSteps.value.includes(s.key)) {\n disabledSteps.value = [...disabledSteps.value, s.key];\n }\n};\nprovide('stepChanged', stepChanged);\n\nconst submit = async () => {\n // submit step and\n const submitAction = step.value.submitAction ?? null;\n if (submitAction) {\n const res = await submitAction();\n // eslint-disable-next-line no-use-before-define\n const ok = handleResult(res, step.value.key);\n if (!ok) return false;\n }\n\n // set step as completed\n if (!completedSteps.value.includes(step.value!.key)) completedSteps.value.push(step.value!.key);\n\n // last step -> close wizard\n if (stepNo.value === stepKeys.value.length) { emit('close'); return true; }\n\n // handleResult to prepareAction reactivity fix\n await nextTick();\n\n // prepare the next step\n const prepareAction = (stepNo.value < stepKeys.value.length) && steps.value[stepNo.value].prepareAction;\n if (prepareAction) {\n const ok = await prepareAction();\n if (!ok) return false;\n }\n\n // move to the next step\n stepNo.value += 1;\n return true;\n};\nconst submitStep = (s: PaymentWizardStep) => {\n if (s.key !== step.value.key) { return; }\n submit();\n};\nprovide('submitStep', submitStep);\n\nconst cancel = async () => {\n const cancelAction = step.value.cancelAction ?? null;\n if (cancelAction) await cancelAction();\n\n emit('close');\n};\n\nconst submitText = computed(\n () => step.value?.submitText\n ?? (stepNo.value < stepKeys.value.length ? i18n.tc('button.continue') : i18n.tc('button.ok')),\n);\n\n// watch(\n// () => steps.value,\n// (value) => { console.log('steps array changed: ', value); },\n// );\n\nconst handleResult = (result: any, key: string) => {\n console.log('handleResult: ', result);\n\n if (!result) return false;\n\n if (key === PaymentWizardStepKey.PlanSelector) {\n const event = result as PlanSelectedEvent;\n paymentDetailsPrice.value = event.price;\n paymentDetailsPreviewInvoice.value = event.previewInvoice;\n } else if (key === PaymentWizardStepKey.PaymentDetails) {\n const event = result as PaymentFinishedEvent;\n paymentSuccessInvoice.value = event.finishedInvoice;\n paymentSuccessIntent.value = event.finishedSetupIntent;\n } else if (key === PaymentWizardStepKey.NewPaymentMethod) {\n const event = result as NewPaymentMethodEvent;\n paymentSuccessIntent.value = event.finishedSetupIntent;\n }\n\n return true;\n};\n\n// create steps\nconst createSteps = () => {\n const keys = [] as PaymentWizardStepKey[];\n\n // subscription only\n if ([PaymentWizardMode.Subscription].includes(props.mode) && !props.price) {\n keys.push(PaymentWizardStepKey.PlanSelector);\n }\n\n // billing details or no customer -> create customer details\n const customer = store.getters.billingCustomer as Customer;\n if ([PaymentWizardMode.BillingDetails].includes(props.mode)\n || ([PaymentWizardMode.Subscription, PaymentWizardMode.Invoice, PaymentWizardMode.Prices].includes(props.mode)\n && !customer)\n ) {\n keys.push(PaymentWizardStepKey.BillingDetails);\n }\n\n // payment details and\n if ([PaymentWizardMode.Subscription, PaymentWizardMode.Invoice, PaymentWizardMode.Prices].includes(props.mode)) {\n keys.push(PaymentWizardStepKey.PaymentDetails);\n }\n\n // new payment method\n if (props.mode === PaymentWizardMode.NewPaymentMethod) {\n keys.push(PaymentWizardStepKey.NewPaymentMethod);\n }\n\n // success\n if ([PaymentWizardMode.Subscription, PaymentWizardMode.Invoice,\n PaymentWizardMode.NewPaymentMethod, PaymentWizardMode.Result, PaymentWizardMode.Prices].includes(props.mode)) {\n keys.push(PaymentWizardStepKey.PaymentSuccess);\n }\n\n stepKeys.value = keys;\n console.log('createSteps: ', keys);\n};\n\nonBeforeMount(() => {\n createSteps();\n\n paymentDetailsPrice.value = props.price;\n paymentDetailsPreviewInvoice.value = props.previewInvoice;\n paymentDetailsInvoice.value = props.invoice;\n paymentDetailsPrices.value = props.prices;\n paymentSuccessInvoice.value = props.finishedInvoice;\n paymentSuccessIntent.value = props.finishedIntent;\n paymentMethodsClientSecret.value = props.setupIntent?.clientSecret;\n});\n\nonMounted(async () => {\n const { prepareAction } = step.value;\n if (prepareAction) {\n const ok = await prepareAction();\n if (!ok) cancel();\n }\n});\n\n\nreturn { __sfc: true,props, paymentDetailsPrice, paymentDetailsPreviewInvoice, paymentDetailsInvoice, paymentDetailsPrices, paymentSuccessInvoice, paymentSuccessIntent, paymentMethodsClientSecret, emit, stepKeys, steps, disabledSteps, completedSteps, editableSteps, stepNo, step, stepMap, addStep, stepChanged, submit, submitStep, cancel, submitText, handleResult, createSteps, PaymentWizardStepKey, BillingDetails, PaymentDetails, PaymentSuccess, PlanSelector, PaymentMethods }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentWizard.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaymentWizard.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaymentWizard.vue?vue&type=template&id=41503511&\"\nimport script from \"./PaymentWizard.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaymentWizard.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./PaymentWizard.vue?vue&type=style&index=0&id=41503511&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"pa-0\"},[_c('v-row',{staticClass:\"pt-5 d-flex flex-row justify-center\"},[_c('v-btn-toggle',{attrs:{\"mandatory\":\"\",\"color\":\"primary\"},model:{value:(_setup.selectedIntervalIndex),callback:function ($$v) {_setup.selectedIntervalIndex=$$v},expression:\"selectedIntervalIndex\"}},[_vm._l((_setup.intervals),function(ii,i){return [_c('v-btn',{key:`pi_${i}`,attrs:{\"outlined\":\"\"}},[_vm._v(\" \"+_vm._s(ii.intervalText)+\" \")]),(i > 0 && i === _setup.intervals.length-1)?_c('v-badge',{key:`bi_${i}`,attrs:{\"color\":\"success\",\"overlap\":\"\"},scopedSlots:_vm._u([{key:\"badge\",fn:function(){return [_c('div',{staticClass:\"mx-1\"},[_c('v-icon',{staticClass:\"mr-0\",staticStyle:{\"padding-right\":\"3px\",\"padding-bottom\":\"2px\",\"font-size\":\"12px !important\"},attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-star \")]),_vm._v(\" \"+_vm._s(_vm.$i18n.t('label.best_value'))+\" \")],1)]},proxy:true}],null,true)}):_vm._e()]})],2)],1),_c('v-row',{staticClass:\"d-flex flex-row justify-center\"},[_vm._l((_setup.prices),function(p,i){return [_c('v-col',{key:`price_${i}`,attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"4\"}},[_c(_setup.PlanDetailsCard,{attrs:{\"features\":_setup.featuresArray[i],\"price\":_setup.prices[i],\"show-discount\":_setup.discountInfos.length > 1,\"current-plan\":p?.product?.subscriptionTierLevel === _setup.currentSubscriptionLevel,\"disabled\":(p?.product?.subscriptionTierLevel ?? 0) <= _setup.currentSubscriptionUpgradableLevel},on:{\"plan-selected\":function($event){return _setup.selectPrice(p)}}})],1)]}),_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"12\"}},[_c('i18n',{staticClass:\"text-secondary text-center pa-0 ma-0 pt-1 pb-4\",attrs:{\"path\":\"label.billing_all_prices_are_in\",\"tag\":\"p\"}},[(_setup.currencySelectorEnabled)?_c(_setup.CurrencyPicker,{attrs:{\"value\":_setup.selectedCurrency},on:{\"input\":_setup.setCurrency}}):_c('span',[_vm._v(\" \"+_vm._s(_setup.currencyText)+\" \")])],1),(_setup.discountInfos.length === 1)?_c('div',{staticClass:\"text-center pb-2\"},[(_setup.discountInfos[0] && _setup.discountInfos[0].offerExpiresDescription)?[_vm._v(\" \"+_vm._s(_setup.discountInfos[0].offerExpiresDescription)+\" \")]:_vm._e(),(_setup.discountInfos[0] && _setup.discountInfos[0].validUntilOrDurationDescription)?[_vm._v(\" \"+_vm._s(_setup.discountInfos[0].validUntilOrDurationDescription)+\" \")]:_vm._e()],2):_vm._e()],1)],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-sheet',{staticClass:\"pa-4 h-100 d-flex flex-column\",attrs:{\"outlined\":\"\"}},[_c('p',{staticClass:\"text-subtitle-1 font-weight-bold\"},[_vm._v(\" \"+_vm._s(_setup.priceInfo.name)+\" \")]),_c('v-divider'),_c('div',{staticClass:\"py-4 text-center\"},[(_setup.priceInfo.originalMonthlyAmount)?_c('div',{staticClass:\"text--secondary\"},[_c('s',[_c('span',{staticClass:\"font-weight-medium text-h5\"},[_vm._v(\" \"+_vm._s(_setup.integerPart(_setup.priceInfo.originalMonthlyAmount))+\" \")]),_c('span',{staticClass:\"text-h5\"},[_vm._v(\".\")]),_c('sup',{staticClass:\"font-weight-medium text-body-2\"},[_vm._v(_vm._s(_setup.fractionPart(_setup.priceInfo.originalMonthlyAmount)))])]),_vm._v(\" /\"+_vm._s(_vm.$t('label.month'))+\" \")]):_vm._e(),_c('span',{staticClass:\"font-weight-bold text-h5\"},[_vm._v(\" \"+_vm._s(_setup.integerPart(_setup.priceInfo.monthlyAmount))+\" \")]),_c('span',{staticClass:\"text-h5\"},[_vm._v(\".\")]),_c('sup',{staticClass:\"font-weight-bold text-body-2\"},[_vm._v(_vm._s(_setup.fractionPart(_setup.priceInfo.monthlyAmount)))]),_vm._v(\" /\"+_vm._s(_vm.$t('label.month'))+\" \")]),_vm._l((_vm.features),function(f,j){return _c('div',{key:`feature_${j}`,class:['text--primary text-body-2 pb-2', {'font-weight-bold': j === 0 && !_vm.isLowest}]},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"x-small\":\"\",\"color\":\"success\"}},[_vm._v(\" mdi-check \")]),_vm._v(_vm._s(f)+\" \")],1)}),_c('div',{staticClass:\"flex-grow-1 pt-2\"}),(_vm.showDiscount && _setup.priceInfo.discountInfo)?_c('div',[(_setup.priceInfo.discountInfo.offerExpiresDescription)?[_vm._v(\" \"+_vm._s(_setup.priceInfo.discountInfo.offerExpiresDescription)+\" \")]:_vm._e(),(_setup.priceInfo.discountInfo.validUntilOrDurationDescription)?[_vm._v(\" \"+_vm._s(_setup.priceInfo.discountInfo.validUntilOrDurationDescription)+\" \")]:_vm._e()],2):_vm._e(),_c('v-divider',{staticClass:\"py-2\"}),_c('v-btn',{staticClass:\"white--text\",attrs:{\"disabled\":_vm.disabled,\"color\":\"green\",\"rounded\":\"\",\"elevation\":\"0\"},on:{\"click\":function($event){return _setup.emit('plan-selected')}}},[_vm._v(\" \"+_vm._s(_vm.currentPlan ? _vm.$t('label.your_current_plan') : _vm.$t('button.select_plan'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { Price } from '@/api/api-billing';\nimport { PropType, computed } from 'vue';\nimport { subscriptionPriceInfo, SubscriptionPriceInfo } from '@/services/billing-utils';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PlanDetailsCard',\n props: {\n isLowest: { type: Boolean, required: false, default: false },\n features: { type: Array as PropType>, required: true },\n price: { type: Object as PropType, required: true },\n showDiscount: { type: Boolean, required: false, default: false },\n disabled: { type: Boolean, required: false, default: false },\n currentPlan: { type: Boolean, required: false, default: false },\n},\n emits: ['plan-selected'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\nconst priceInfo = computed(() => subscriptionPriceInfo(props.price));\n\nconst integerPart = (amt: string) => amt.split('.')[0];\nconst fractionPart = (amt: string) => amt.split('.')[1];\n\n\nreturn { __sfc: true,emit, props, priceInfo, integerPart, fractionPart }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanDetailsCard.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanDetailsCard.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PlanDetailsCard.vue?vue&type=template&id=5cd969ba&scoped=true&\"\nimport script from \"./PlanDetailsCard.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PlanDetailsCard.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./PlanDetailsCard.vue?vue&type=style&index=0&id=5cd969ba&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5cd969ba\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n ref, Ref, onMounted, computed, watch, nextTick, inject,\n} from 'vue';\nimport {\n Currency, Customer, Invoice, Price, Product,\n Subscription,\n} from '@/api/api-billing';\nimport {\n billingCurrencyText, SubscriptionPriceInfo, subscriptionPriceInfo,\n productPriceWithInterval,\n SubscriptionInterval,\n sortedSubscriptionIntervals,\n subscriptionUpgradableLevel,\n} from '@/services/billing-utils';\nimport CurrencyPicker from '@/components/pickers/CurrencyPicker.vue';\nimport { performAction } from '@/services/vue-utils';\nimport i18nn from '@/plugins/i18n';\nimport store from '@/store/store';\nimport { PaymentWizardStep, PaymentWizardStepKey } from '@/services/payment-wizard-utils';\nimport PlanDetailsCard from './PlanDetailsCard.vue';\n\nexport interface PlanSelectedEvent {\n price: Price\n previewInvoice?: Invoice,\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PlanSelector',\n props: {},\n emits: [\"submit\"],\n setup(__props, { emit }: { emit: ({(e: 'submit', event: PlanSelectedEvent): void}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props;\n\n/* eslint-disable vue/max-len */\n\nconst featuresPro = [\n i18nn.t('plans.pro.feature_no_cover_fees'),\n i18nn.t('plans.pro.feature_deposit_cost', ['€2.99']),\n i18nn.t('plans.pro.feature_unlimited_reservations'),\n i18nn.t('plans.pro.feature_rwg'),\n i18nn.t('plans.pro.feature_dashboard'),\n i18nn.t('plans.pro.feature_giftcards'),\n i18nn.t('plans.pro.feature_app'),\n i18nn.t('plans.pro.feature_email_support'),\n];\n\nconst featuresBusiness = [\n i18nn.t('plans.business.feature_all_from_pro'),\n i18nn.t('plans.pro.feature_deposit_cost', ['€0.99']),\n i18nn.t('plans.business.feature_feedback'),\n i18nn.t('plans.business.feature_waitlist'),\n i18nn.t('plans.business.feature_custom_giftcard_design'),\n i18nn.t('plans.business.feature_integrations'),\n i18nn.t('plans.business.feature_newsletter'),\n];\n\nconst featuresUltimate = [\n i18nn.t('plans.ultimate.feature_all_from_business'),\n i18nn.t('plans.pro.feature_deposit_cost', ['€0']),\n i18nn.t('plans.ultimate.feature_account_manager'),\n i18nn.t('plans.ultimate.feature_phone_support'),\n i18nn.t('plans.ultimate.feature_export_api'),\n];\n\nconst featuresArray = [featuresPro, featuresBusiness, featuresUltimate];\n\n\n\n\n\nconst customer = computed(() => store.getters.billingCustomer ?? undefined);\nconst subscription = computed(() => store.getters.billingSubscription);\nconst currencySelectorEnabled = computed(() => customer.value?.currency === undefined);\nconst selectedCurrency = ref(Currency.EUR) as Ref;\nconst currencyText = computed(() => billingCurrencyText(selectedCurrency.value));\n\nconst currentSubscriptionLevel = computed(() => subscription.value?.price?.product?.subscriptionTierLevel ?? 0);\nconst currentSubscriptionUpgradableLevel = computed(() => subscriptionUpgradableLevel(subscription.value));\nconst products = computed(() => (store.getters.billingSubscriptionPriceProducts as Product[]).filter((p) => p.subscriptionTierLevel && p.subscriptionTierLevel >= currentSubscriptionUpgradableLevel.value));\n\nconst intervals = computed(() => sortedSubscriptionIntervals(products.value, selectedCurrency.value));\nconst selectedIntervalIndex = ref(0);\nconst selectedInterval = computed(() => intervals.value.at(selectedIntervalIndex.value));\n\nconst prices = computed(() => products.value.flatMap((p) => productPriceWithInterval(p, selectedCurrency.value, selectedInterval.value?.interval, selectedInterval.value?.intervalCount) ?? []));\nconst priceInfos = computed(() => prices.value?.map((p) => subscriptionPriceInfo(p)));\nconst selectedPrice = ref(undefined) as Ref;\n\nconst discountInfos = computed(() => {\n const dinfos = priceInfos.value.flatMap((pi) => pi.discountInfo ?? []);\n // no or single discount found\n if (dinfos.length < 2) return dinfos;\n // more but all same\n if (dinfos.every((di) => di.offerExpiresDescription === dinfos[0].offerExpiresDescription && di.validUntilOrDurationDescription === dinfos[0].validUntilOrDurationDescription)) return [dinfos[0]];\n // multiple different\n return priceInfos.value.map((pi) => pi.discountInfo);\n});\n\nonMounted(async () => {\n selectedCurrency.value = store.getters.billingGuessedCurrency;\n await nextTick();\n selectedIntervalIndex.value = intervals.value.length > 0 ? intervals.value.length - 1 : 0;\n});\n\nasync function selectPrice(price: Price) {\n console.log('selectPrice: ', price);\n selectedPrice.value = price;\n\n // eslint-disable-next-line no-use-before-define\n if (submitStep) submitStep(paymentWizardStep.value);\n else emit('submit', { price });\n}\n\nasync function submit() {\n if (!selectedPrice.value) return undefined;\n\n let invoice = undefined as Invoice|undefined;\n\n const ok = await performAction(\n null,\n i18nn.tc('error.billing_general'),\n async () => { invoice = await store.dispatch('billingPreviewSubscription', { priceID: selectedPrice.value?.ID }); },\n );\n if (!ok) return undefined;\n\n const e: PlanSelectedEvent = {\n price: selectedPrice.value,\n previewInvoice: invoice,\n };\n\n return e;\n}\n\nfunction setCurrency(currency: string) {\n console.log('setCurrency: ', currency);\n selectedCurrency.value = currency;\n}\n\nwatch(\n () => selectedInterval.value,\n (value) => { console.log('selectedInterval changed: ', selectedInterval.value); },\n);\n\nwatch(\n () => prices.value,\n (value) => { console.log('prices changed: ', prices.value); },\n);\n\n// wizard embeddable\nconst addStep = inject('addStep') as ((s: PaymentWizardStep) => void) | undefined;\nconst stepChanged = inject('stepChanged') as ((s: PaymentWizardStep) => void) | undefined;\nconst submitStep = inject('submitStep') as ((s: PaymentWizardStep) => void) | undefined;\n\nconst paymentWizardStep = computed(() => ({\n key: PaymentWizardStepKey.PlanSelector,\n label: i18nn.tc('title.select_plan'),\n complete: selectedPrice.value !== undefined,\n hideSubmit: true,\n submitAction: submit,\n} as PaymentWizardStep));\n\nwatch(\n () => paymentWizardStep.value,\n (value) => { if (stepChanged) stepChanged(paymentWizardStep.value); console.log('paymentWizardStep: ', customer); },\n);\n\nif (addStep) addStep(paymentWizardStep.value);\n\n\nreturn { __sfc: true,featuresPro, featuresBusiness, featuresUltimate, featuresArray, props, emit, customer, subscription, currencySelectorEnabled, selectedCurrency, currencyText, currentSubscriptionLevel, currentSubscriptionUpgradableLevel, products, intervals, selectedIntervalIndex, selectedInterval, prices, priceInfos, selectedPrice, discountInfos, selectPrice, submit, setCurrency, addStep, stepChanged, submitStep, paymentWizardStep, CurrencyPicker, PlanDetailsCard }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanSelector.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PlanSelector.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PlanSelector.vue?vue&type=template&id=50ce0b16&\"\nimport script from \"./PlanSelector.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PlanSelector.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('svg',{staticStyle:{\"display\":\"inline\",\"height\":\"0px\"}},[_c('defs',[_c('pattern',{attrs:{\"id\":_vm.patternId,\"x\":\"0\",\"y\":\"0\",\"width\":\"8\",\"height\":\"8\",\"patternUnits\":\"userSpaceOnUse\",\"patternTransform\":_vm.patternTransform}},[_c('rect',{attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"8\",\"height\":\"8\",\"fill\":_vm.fillLight}}),_c('rect',{style:(`stroke:none; fill:${_vm.fillDark};`),attrs:{\"x\":\"0\",\"y\":\"0\",\"width\":\"4\",\"height\":\"8\"}})])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableStripedFill.vue?vue&type=script&setup=true&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableStripedFill.vue?vue&type=script&setup=true&lang=js&\"","import { render, staticRenderFns } from \"./TimeTableStripedFill.vue?vue&type=template&id=a5c39040&\"\nimport script from \"./TimeTableStripedFill.vue?vue&type=script&setup=true&lang=js&\"\nexport * from \"./TimeTableStripedFill.vue?vue&type=script&setup=true&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var map = {\n\t\"./af\": 25177,\n\t\"./af.js\": 25177,\n\t\"./ar\": 61509,\n\t\"./ar-dz\": 41488,\n\t\"./ar-dz.js\": 41488,\n\t\"./ar-kw\": 58676,\n\t\"./ar-kw.js\": 58676,\n\t\"./ar-ly\": 42353,\n\t\"./ar-ly.js\": 42353,\n\t\"./ar-ma\": 24496,\n\t\"./ar-ma.js\": 24496,\n\t\"./ar-sa\": 82682,\n\t\"./ar-sa.js\": 82682,\n\t\"./ar-tn\": 89756,\n\t\"./ar-tn.js\": 89756,\n\t\"./ar.js\": 61509,\n\t\"./az\": 95533,\n\t\"./az.js\": 95533,\n\t\"./be\": 28959,\n\t\"./be.js\": 28959,\n\t\"./bg\": 47777,\n\t\"./bg.js\": 47777,\n\t\"./bm\": 54903,\n\t\"./bm.js\": 54903,\n\t\"./bn\": 61290,\n\t\"./bn-bd\": 17357,\n\t\"./bn-bd.js\": 17357,\n\t\"./bn.js\": 61290,\n\t\"./bo\": 31545,\n\t\"./bo.js\": 31545,\n\t\"./br\": 11470,\n\t\"./br.js\": 11470,\n\t\"./bs\": 44429,\n\t\"./bs.js\": 44429,\n\t\"./ca\": 7306,\n\t\"./ca.js\": 7306,\n\t\"./cs\": 56464,\n\t\"./cs.js\": 56464,\n\t\"./cv\": 73635,\n\t\"./cv.js\": 73635,\n\t\"./cy\": 64226,\n\t\"./cy.js\": 64226,\n\t\"./da\": 93601,\n\t\"./da.js\": 93601,\n\t\"./de\": 77853,\n\t\"./de-at\": 26111,\n\t\"./de-at.js\": 26111,\n\t\"./de-ch\": 54697,\n\t\"./de-ch.js\": 54697,\n\t\"./de.js\": 77853,\n\t\"./dv\": 60708,\n\t\"./dv.js\": 60708,\n\t\"./el\": 54691,\n\t\"./el.js\": 54691,\n\t\"./en-au\": 53872,\n\t\"./en-au.js\": 53872,\n\t\"./en-ca\": 28298,\n\t\"./en-ca.js\": 28298,\n\t\"./en-gb\": 56195,\n\t\"./en-gb.js\": 56195,\n\t\"./en-ie\": 66584,\n\t\"./en-ie.js\": 66584,\n\t\"./en-il\": 65543,\n\t\"./en-il.js\": 65543,\n\t\"./en-in\": 9033,\n\t\"./en-in.js\": 9033,\n\t\"./en-nz\": 79402,\n\t\"./en-nz.js\": 79402,\n\t\"./en-sg\": 43004,\n\t\"./en-sg.js\": 43004,\n\t\"./eo\": 32934,\n\t\"./eo.js\": 32934,\n\t\"./es\": 97650,\n\t\"./es-do\": 20838,\n\t\"./es-do.js\": 20838,\n\t\"./es-mx\": 17730,\n\t\"./es-mx.js\": 17730,\n\t\"./es-us\": 56575,\n\t\"./es-us.js\": 56575,\n\t\"./es.js\": 97650,\n\t\"./et\": 3035,\n\t\"./et.js\": 3035,\n\t\"./eu\": 3508,\n\t\"./eu.js\": 3508,\n\t\"./fa\": 119,\n\t\"./fa.js\": 119,\n\t\"./fi\": 90527,\n\t\"./fi.js\": 90527,\n\t\"./fil\": 95995,\n\t\"./fil.js\": 95995,\n\t\"./fo\": 52477,\n\t\"./fo.js\": 52477,\n\t\"./fr\": 85498,\n\t\"./fr-ca\": 26435,\n\t\"./fr-ca.js\": 26435,\n\t\"./fr-ch\": 37892,\n\t\"./fr-ch.js\": 37892,\n\t\"./fr.js\": 85498,\n\t\"./fy\": 37071,\n\t\"./fy.js\": 37071,\n\t\"./ga\": 41734,\n\t\"./ga.js\": 41734,\n\t\"./gd\": 70217,\n\t\"./gd.js\": 70217,\n\t\"./gl\": 77329,\n\t\"./gl.js\": 77329,\n\t\"./gom-deva\": 32124,\n\t\"./gom-deva.js\": 32124,\n\t\"./gom-latn\": 93383,\n\t\"./gom-latn.js\": 93383,\n\t\"./gu\": 95050,\n\t\"./gu.js\": 95050,\n\t\"./he\": 11713,\n\t\"./he.js\": 11713,\n\t\"./hi\": 43861,\n\t\"./hi.js\": 43861,\n\t\"./hr\": 26308,\n\t\"./hr.js\": 26308,\n\t\"./hu\": 90609,\n\t\"./hu.js\": 90609,\n\t\"./hy-am\": 17160,\n\t\"./hy-am.js\": 17160,\n\t\"./id\": 74063,\n\t\"./id.js\": 74063,\n\t\"./is\": 89374,\n\t\"./is.js\": 89374,\n\t\"./it\": 88383,\n\t\"./it-ch\": 21827,\n\t\"./it-ch.js\": 21827,\n\t\"./it.js\": 88383,\n\t\"./ja\": 23827,\n\t\"./ja.js\": 23827,\n\t\"./jv\": 89722,\n\t\"./jv.js\": 89722,\n\t\"./ka\": 41794,\n\t\"./ka.js\": 41794,\n\t\"./kk\": 27088,\n\t\"./kk.js\": 27088,\n\t\"./km\": 96870,\n\t\"./km.js\": 96870,\n\t\"./kn\": 84451,\n\t\"./kn.js\": 84451,\n\t\"./ko\": 63164,\n\t\"./ko.js\": 63164,\n\t\"./ku\": 98174,\n\t\"./ku.js\": 98174,\n\t\"./ky\": 78474,\n\t\"./ky.js\": 78474,\n\t\"./lb\": 79680,\n\t\"./lb.js\": 79680,\n\t\"./lo\": 15867,\n\t\"./lo.js\": 15867,\n\t\"./lt\": 45766,\n\t\"./lt.js\": 45766,\n\t\"./lv\": 69532,\n\t\"./lv.js\": 69532,\n\t\"./me\": 58076,\n\t\"./me.js\": 58076,\n\t\"./mi\": 41848,\n\t\"./mi.js\": 41848,\n\t\"./mk\": 30306,\n\t\"./mk.js\": 30306,\n\t\"./ml\": 73739,\n\t\"./ml.js\": 73739,\n\t\"./mn\": 99053,\n\t\"./mn.js\": 99053,\n\t\"./mr\": 86169,\n\t\"./mr.js\": 86169,\n\t\"./ms\": 73386,\n\t\"./ms-my\": 92297,\n\t\"./ms-my.js\": 92297,\n\t\"./ms.js\": 73386,\n\t\"./mt\": 77075,\n\t\"./mt.js\": 77075,\n\t\"./my\": 72264,\n\t\"./my.js\": 72264,\n\t\"./nb\": 22274,\n\t\"./nb.js\": 22274,\n\t\"./ne\": 8235,\n\t\"./ne.js\": 8235,\n\t\"./nl\": 92572,\n\t\"./nl-be\": 43784,\n\t\"./nl-be.js\": 43784,\n\t\"./nl.js\": 92572,\n\t\"./nn\": 54566,\n\t\"./nn.js\": 54566,\n\t\"./oc-lnc\": 69330,\n\t\"./oc-lnc.js\": 69330,\n\t\"./pa-in\": 29849,\n\t\"./pa-in.js\": 29849,\n\t\"./pl\": 94418,\n\t\"./pl.js\": 94418,\n\t\"./pt\": 79834,\n\t\"./pt-br\": 48303,\n\t\"./pt-br.js\": 48303,\n\t\"./pt.js\": 79834,\n\t\"./ro\": 24457,\n\t\"./ro.js\": 24457,\n\t\"./ru\": 82271,\n\t\"./ru.js\": 82271,\n\t\"./sd\": 1221,\n\t\"./sd.js\": 1221,\n\t\"./se\": 33478,\n\t\"./se.js\": 33478,\n\t\"./si\": 17538,\n\t\"./si.js\": 17538,\n\t\"./sk\": 5784,\n\t\"./sk.js\": 5784,\n\t\"./sl\": 46637,\n\t\"./sl.js\": 46637,\n\t\"./sq\": 86794,\n\t\"./sq.js\": 86794,\n\t\"./sr\": 45719,\n\t\"./sr-cyrl\": 3322,\n\t\"./sr-cyrl.js\": 3322,\n\t\"./sr.js\": 45719,\n\t\"./ss\": 56000,\n\t\"./ss.js\": 56000,\n\t\"./sv\": 41011,\n\t\"./sv.js\": 41011,\n\t\"./sw\": 40748,\n\t\"./sw.js\": 40748,\n\t\"./ta\": 11025,\n\t\"./ta.js\": 11025,\n\t\"./te\": 11885,\n\t\"./te.js\": 11885,\n\t\"./tet\": 28861,\n\t\"./tet.js\": 28861,\n\t\"./tg\": 86571,\n\t\"./tg.js\": 86571,\n\t\"./th\": 55802,\n\t\"./th.js\": 55802,\n\t\"./tk\": 59527,\n\t\"./tk.js\": 59527,\n\t\"./tl-ph\": 29231,\n\t\"./tl-ph.js\": 29231,\n\t\"./tlh\": 31052,\n\t\"./tlh.js\": 31052,\n\t\"./tr\": 85096,\n\t\"./tr.js\": 85096,\n\t\"./tzl\": 79846,\n\t\"./tzl.js\": 79846,\n\t\"./tzm\": 81765,\n\t\"./tzm-latn\": 97711,\n\t\"./tzm-latn.js\": 97711,\n\t\"./tzm.js\": 81765,\n\t\"./ug-cn\": 48414,\n\t\"./ug-cn.js\": 48414,\n\t\"./uk\": 16618,\n\t\"./uk.js\": 16618,\n\t\"./ur\": 57777,\n\t\"./ur.js\": 57777,\n\t\"./uz\": 57609,\n\t\"./uz-latn\": 72475,\n\t\"./uz-latn.js\": 72475,\n\t\"./uz.js\": 57609,\n\t\"./vi\": 21135,\n\t\"./vi.js\": 21135,\n\t\"./x-pseudo\": 64051,\n\t\"./x-pseudo.js\": 64051,\n\t\"./yo\": 82218,\n\t\"./yo.js\": 82218,\n\t\"./zh-cn\": 52648,\n\t\"./zh-cn.js\": 52648,\n\t\"./zh-hk\": 1632,\n\t\"./zh-hk.js\": 1632,\n\t\"./zh-mo\": 31541,\n\t\"./zh-mo.js\": 31541,\n\t\"./zh-tw\": 50304,\n\t\"./zh-tw.js\": 50304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 35358;","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable no-empty */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-shadow */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-use-before-define */\n\nexport enum ProductType {\n None = 'none',\n SMS = 'sms',\n Subscription = 'sub',\n}\n\nexport interface Product {\n ID?: string;\n name?: string;\n description?: string;\n type?: ProductType;\n subscriptionTier?: string;\n subscriptionTierLevel?: number;\n prices?: Price[];\n active?: boolean;\n}\n\nexport enum PriceInterval {\n Day = 'day',\n Week = 'week',\n Month = 'month',\n Year = 'year',\n}\n\nexport enum Currency {\n USD = 'usd',\n EUR = 'eur',\n GBP = 'gbp',\n}\n\nexport interface Price {\n ID?: string;\n amount?: number;\n currency?: string;\n interval?: string;\n intervalCount?: number;\n quantity?: number;\n productID?: number;\n product?: Product;\n discount?: Discount;\n}\n\nexport enum CustomerBalanceStatus {\n None = 'none',\n Forbidden = 'forbidden',\n Allowed = 'allowed',\n Granted = 'granted',\n}\n\nexport interface Customer {\n ID?: string;\n name?: string;\n email?: string;\n city?: string;\n country?: string;\n addressLine1?: string;\n addressLine2?: string;\n postalCode?: string;\n state?: string;\n locale?: string;\n currency?: string;\n\n subscription?: Subscription;\n paymentMethod?: PaymentMethod;\n discount? :Discount;\n\n vatNumber?: string;\n vatNumberStatus?: string;\n\n balance?: number;\n cashBalances?: CashBalance[];\n\n customerBalanceStatus?: string;\n\n openInvoices?: Invoice[];\n}\n\nexport interface CashBalance {\n amount?: number;\n currency?: string;\n}\n\nexport enum SubscriptionStatus {\n None = 'none',\n Active = 'active',\n AwaitingPayment = 'awaiting_payment',\n Canceled = 'canceled',\n Ended = 'ended',\n}\n\nexport enum CollectionMethod {\n ChargeAutomatically = 'charge_automatically',\n SendInvoice = 'send_invoice',\n}\n\nexport interface Subscription {\n ID?: string;\n created?: number;\n periodStart?: number;\n periodEnd?: number;\n canceledAt?: number;\n paidUntil?: number;\n status?: SubscriptionStatus,\n price?: Price;\n scheduledPrice?: Price;\n scheduledStartDate?: number;\n paymentMethod?: PaymentMethod;\n invoice?: Invoice;\n setupIntent?: SetupIntent;\n paymentMethodTypes?: PaymentMethodType[];\n collectionMethod?: CollectionMethod;\n discount? :Discount;\n scheduledDiscount? :Discount;\n}\n\nexport interface InvoiceLine {\n ID?: string;\n amount?: number;\n currency?: string;\n description?: string;\n price?: Price;\n quantity?: number;\n discounts?: Discount[];\n}\n\nexport enum InvoiceStatus {\n Draft = 'draft',\n Open = 'open',\n Paid = 'paid',\n Uncollectible = 'uncollectible',\n Void = 'void',\n}\n\nexport enum PaymentMethodType {\n Unknown = 'unknown',\n CustomerBalance = 'customer_balance',\n Card = 'card',\n SepaDebit = 'sepa_debit',\n Ideal = 'ideal',\n Bancontact = 'bancontact',\n Sofort = 'sofort',\n}\nexport enum PaymentMethodCardBrand {\n Unknown = 'unknown',\n Amex = 'amex',\n Diners = 'diners',\n Discover = 'discover',\n JCB = 'jcb',\n Mastercard = 'mastercard',\n Unionpay = 'unionpay',\n Visa = 'visa',\n}\n\nexport interface Invoice {\n ID?: string;\n number?: string;\n total?: number;\n subtotal?: number;\n startingBalance?: number;\n endingBalance?: number;\n amountDue?: number;\n amountPaid?: number;\n amountRemaining?: number;\n currency?: string;\n status?: InvoiceStatus,\n created?: number;\n url?: string;\n pdf?: string;\n paymentIntent?: PaymentIntent;\n lines?: InvoiceLine[];\n tax?: number;\n dueDate?: number;\n subscriptionProrationDate?: number;\n subscriptionProrationInFuture?: boolean;\n paymentMethodTypes?: PaymentMethodType[];\n collectionMethod?: CollectionMethod;\n discount?: Discount;\n overDue?: boolean;\n pastDue?: boolean;\n generatedBySubscription?: boolean;\n}\n\nexport enum IntentStatus {\n None = '',\n Canceled = 'canceled',\n Processing = 'processing',\n RequiresAction = 'requires_action',\n RequiresCapture = 'requires_capture',\n RequiresConfirmation = 'requires_confirmation',\n RequiresPaymentMethod = 'requires_payment_method',\n Succeeded = 'succeeded',\n}\n\nexport enum IntentUsage {\n OffSession = 'off_session',\n}\n\nexport interface Mandate {\n type?: string;\n reference?: string;\n url?: string;\n}\n\nexport interface PaymentIntent {\n ID?: string;\n amount?: number;\n clientSecret?: string;\n usage?: IntentUsage;\n status?: IntentStatus;\n paymentMethodTypes?: PaymentMethodType[];\n nextAction?: PaymentIntentNextAction;\n\n lastError?: string;\n lastErrorType?: string;\n lastErrorCode?: string;\n lastDeclineCode?: string;\n\n mandate?: Mandate;\n}\n\nexport interface SetupIntent {\n ID?: string;\n clientSecret?: string;\n usage?: IntentUsage;\n status?: IntentStatus;\n paymentMethodTypes?: PaymentMethodType[];\n\n lastError?: string;\n lastErrorType?: string;\n lastErrorCode?: string;\n lastDeclineCode?: string;\n\n mandate?: Mandate;\n}\n\nexport interface PaymentMethod {\n ID?: string;\n type?: string;\n card?: Card;\n sepaDebit?: SepaDebit;\n\n mandate?: Mandate;\n}\n\nexport interface Card {\n brand?: string;\n expMonth?: number;\n expYear?: number;\n last4?: string;\n wallet?: string;\n}\n\nexport interface SepaDebit {\n bankCode?: string;\n branchCode?: string;\n country?: string;\n fingerprint?: string;\n last4?: string;\n generatedFromType?: string;\n}\nexport interface Country {\n city?: string;\n country?: string;\n region?: string;\n countryCode?: string;\n postalCode?: string;\n timeZone?: string;\n timeZoneID?: number;\n isEU?: string;\n}\n\nexport interface SMSProduct {\n balance?: number;\n sender?: string;\n autorenewPriceID?: string;\n balanceNotificationThreshold?: number;\n balanceNotificationEnabled?: boolean;\n latestInvoiceStatus?: string;\n latestInvoiceError?: string;\n}\n\nexport interface PaymentIntentNextAction {\n displayIBANBankTransferInstructions?: NextActionDisplayIBANBankTransferInstructions;\n}\n\nexport interface NextActionDisplayIBANBankTransferInstructions {\n amountRemaining?: number;\n currency?: string;\n hostedInstructionsURL?: string;\n reference?: string;\n accountHolderName?: string;\n BIC?: string;\n country?: string;\n IBAN?: string;\n}\n\nexport enum DiscountDuration {\n Once = 'once',\n Repeating = 'repeating',\n Forever = 'forever',\n}\n\nexport interface Discount {\n start?: number;\n end?: number;\n name?: string;\n amountOff?: { [key: string]: number };\n percentOff?: number;\n duration?: DiscountDuration;\n durationInMonths?: number;\n expiresAt?: number;\n originalAmount?: number;\n discountedAmount?: number;\n discountAmount?: number;\n currency?: string;\n}\n\n// Converts JSON strings to/from your types\n// and asserts the results of JSON.parse at runtime\nexport class BillingConvert {\n public static toProducts(json: string): Product[] {\n const products = cast(JSON.parse(json), a(r('Product'))) as Product[];\n products.forEach((product) => {\n product.prices?.forEach((price) => { price.product = product; });\n });\n return products;\n }\n\n public static toCustomer(json: string): Customer | null {\n const val = JSON.parse(json);\n if (val === null) return null;\n return cast(val, r('Customer'));\n }\n\n public static customerToDto(value: Customer) {\n return {\n ...value,\n currency: undefined,\n subscription: undefined,\n paymentMethod: undefined,\n vatNumberStatus: undefined,\n balance: undefined,\n };\n }\n\n public static customerToJson(value: Customer): string {\n return JSON.stringify(uncast(BillingConvert.customerToDto(value), r('Customer')), null, 2);\n }\n\n public static toPaymentMethod(json: string): PaymentMethod | null {\n const val = JSON.parse(json);\n if (val === null) return null;\n return cast(val, r('PaymentMethod'));\n }\n\n public static toSetupIntent(json: string): SetupIntent | null {\n const val = JSON.parse(json);\n if (val === null) return null;\n return cast(val, r('SetupIntent'));\n }\n\n public static toPaymentIntent(json: string): PaymentIntent | null {\n const val = JSON.parse(json);\n if (val === null) return null;\n return cast(val, r('PaymentIntent'));\n }\n\n public static toInvoice(json: string): Invoice {\n return cast(JSON.parse(json), r('Invoice'));\n }\n\n public static toInvoices(json: string): Invoice[] {\n return cast(JSON.parse(json), a(r('Invoice')));\n }\n\n public static toPaymentMethods(json: string): PaymentMethod[] {\n return cast(JSON.parse(json), a(r('PaymentMethod')));\n }\n\n public static toSMSProduct(json: string): SMSProduct | null {\n const val = JSON.parse(json);\n if (val === null) return null;\n return cast(val, r('SMSProduct'));\n }\n\n public static smsProductToJson(value: SMSProduct): string {\n return JSON.stringify(uncast(value, r('SMSProduct')), null, 2);\n }\n\n public static toCountry(json: string): Country {\n return cast(JSON.parse(json), r('Country'));\n }\n}\n\nfunction invalidValue(typ: any, val: any, key: any = ''): never {\n if (key) {\n throw Error(`Invalid value for key \"${key}\". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);\n }\n throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);\n}\n\nfunction jsonToJSProps(typ: any): any {\n if (typ.jsonToJS === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });\n typ.jsonToJS = map;\n }\n return typ.jsonToJS;\n}\n\nfunction jsToJSONProps(typ: any): any {\n if (typ.jsToJSON === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });\n typ.jsToJSON = map;\n }\n return typ.jsToJSON;\n}\n\nfunction transform(val: any, typ: any, getProps: any, key: any = ''): any {\n function transformPrimitive(typ: string, val: any): any {\n if (typeof typ === typeof val) return val;\n return invalidValue(typ, val, key);\n }\n\n function transformUnion(typs: any[], val: any): any {\n // val must validate against one typ in typs\n const l = typs.length;\n for (let i = 0; i < l; i++) {\n const typ = typs[i];\n try {\n return transform(val, typ, getProps);\n } catch (_) { }\n }\n return invalidValue(typs, val);\n }\n\n function transformEnum(cases: string[], val: any): any {\n if (cases.indexOf(val) !== -1) return val;\n return invalidValue(cases, val);\n }\n\n function transformArray(typ: any, val: any): any {\n // val must be an array with no invalid elements\n if (!Array.isArray(val)) return invalidValue('array', val);\n return val.map((el) => transform(el, typ, getProps));\n }\n\n function transformDate(val: any): any {\n if (val === null) {\n return null;\n }\n const d = new Date(val);\n if (isNaN(d.valueOf())) {\n return invalidValue('Date', val);\n }\n return d;\n }\n\n function transformObject(props: { [k: string]: any }, additional: any, val: any): any {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) {\n return invalidValue('object', val);\n }\n const result: any = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n const prop = props[key];\n const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;\n result[prop.key] = transform(v, prop.typ, getProps, prop.key);\n });\n Object.getOwnPropertyNames(val).forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n result[key] = val[key];\n }\n });\n return result;\n }\n\n if (typ === 'any') return val;\n if (typ === null) {\n if (val === null) return val;\n return invalidValue(typ, val);\n }\n if (typ === false) return invalidValue(typ, val);\n while (typeof typ === 'object' && typ.ref !== undefined) {\n typ = typeMap[typ.ref];\n }\n if (Array.isArray(typ)) return transformEnum(typ, val);\n if (typeof typ === 'object') {\n return typ.hasOwnProperty('unionMembers') ? transformUnion(typ.unionMembers, val)\n : typ.hasOwnProperty('arrayItems') ? transformArray(typ.arrayItems, val)\n : typ.hasOwnProperty('props') ? transformObject(getProps(typ), typ.additional, val)\n : invalidValue(typ, val);\n }\n // Numbers can be parsed by Date but shouldn't be.\n if (typ === Date && typeof val !== 'number') return transformDate(val);\n return transformPrimitive(typ, val);\n}\n\nfunction cast(val: any, typ: any): T {\n return transform(val, typ, jsonToJSProps);\n}\n\nfunction uncast(val: T, typ: any): any {\n return transform(val, typ, jsToJSONProps);\n}\n\nfunction a(typ: any) {\n return { arrayItems: typ };\n}\n\nfunction u(...typs: any[]) {\n return { unionMembers: typs };\n}\n\nfunction o(props: any[], additional: any) {\n return { props, additional };\n}\n\nfunction m(additional: any) {\n return { props: [], additional };\n}\n\nfunction r(name: string) {\n return { ref: name };\n}\n\nconst typeMap: any = {\n Product: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'name', js: 'name', typ: u(undefined, '') },\n { json: 'description', js: 'description', typ: u(undefined, '') },\n { json: 'type', js: 'type', typ: u(undefined, '') },\n { json: 'subscriptionTier', js: 'subscriptionTier', typ: u(undefined, '') },\n { json: 'subscriptionTierLevel', js: 'subscriptionTierLevel', typ: u(undefined, 0) },\n { json: 'prices', js: 'prices', typ: u(undefined, a(r('Price'))) },\n { json: 'active', js: 'active', typ: u(undefined, true) },\n ], false),\n Price: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'amount', js: 'amount', typ: u(undefined, 0) },\n { json: 'currency', js: 'currency', typ: u(undefined, '') },\n { json: 'interval', js: 'interval', typ: u(undefined, '') },\n { json: 'intervalCount', js: 'intervalCount', typ: u(undefined, 0) },\n { json: 'quantity', js: 'quantity', typ: u(undefined, 0) },\n { json: 'productID', js: 'productID', typ: u(undefined, '') },\n { json: 'discount', js: 'discount', typ: u(undefined, r('Discount')) },\n ], false),\n Customer: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'name', js: 'name', typ: u(undefined, '') },\n { json: 'email', js: 'email', typ: u(undefined, '') },\n { json: 'city', js: 'city', typ: u(undefined, '') },\n { json: 'country', js: 'country', typ: u(undefined, '') },\n { json: 'addressLine1', js: 'addressLine1', typ: u(undefined, '') },\n { json: 'addressLine2', js: 'addressLine2', typ: u(undefined, '') },\n { json: 'postalCode', js: 'postalCode', typ: u(undefined, '') },\n { json: 'state', js: 'state', typ: u(undefined, '') },\n { json: 'locale', js: 'locale', typ: u(undefined, '') },\n { json: 'currency', js: 'currency', typ: u(undefined, '') },\n { json: 'subscription', js: 'subscription', typ: u(undefined, r('Subscription')) },\n { json: 'paymentMethod', js: 'paymentMethod', typ: u(undefined, r('PaymentMethod')) },\n { json: 'discount', js: 'discount', typ: u(undefined, r('Discount')) },\n { json: 'vatNumber', js: 'vatNumber', typ: u(undefined, '') },\n { json: 'vatNumberStatus', js: 'vatNumberStatus', typ: u(undefined, '') },\n { json: 'balance', js: 'balance', typ: u(undefined, 0) },\n { json: 'cashBalances', js: 'cashBalances', typ: u(undefined, a(r('CashBalance'))) },\n { json: 'customerBalanceStatus', js: 'customerBalanceStatus', typ: u(undefined, '') },\n { json: 'openInvoices', js: 'openInvoices', typ: u(undefined, a(r('Invoice'))) },\n ], false),\n CashBalance: o([\n { json: 'currency', js: 'currency', typ: u(undefined, '') },\n { json: 'amount', js: 'amount', typ: u(undefined, 0) },\n ], false),\n Subscription: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'created', js: 'created', typ: u(undefined, 0) },\n { json: 'periodStart', js: 'periodStart', typ: u(undefined, 0) },\n { json: 'periodEnd', js: 'periodEnd', typ: u(undefined, 0) },\n { json: 'paidUntil', js: 'paidUntil', typ: u(undefined, 0) },\n { json: 'canceledAt', js: 'canceledAt', typ: u(undefined, 0) },\n { json: 'status', js: 'status', typ: u(undefined, '') },\n { json: 'price', js: 'price', typ: u(undefined, r('Price')) },\n { json: 'scheduledPrice', js: 'scheduledPrice', typ: u(undefined, r('Price')) },\n { json: 'scheduledStartDate', js: 'scheduledStartDate', typ: u(undefined, 0) },\n { json: 'invoice', js: 'invoice', typ: u(undefined, r('Invoice')) },\n { json: 'paymentMethod', js: 'paymentMethod', typ: u(undefined, r('PaymentMethod')) },\n { json: 'setupIntent', js: 'setupIntent', typ: u(undefined, r('SetupIntent')) },\n { json: 'paymentMethodTypes', js: 'paymentMethodTypes', typ: u(undefined, a('')) },\n { json: 'collectionMethod', js: 'collectionMethod', typ: u(undefined, '') },\n { json: 'discount', js: 'discount', typ: u(undefined, r('Discount')) },\n { json: 'scheduledDiscount', js: 'scheduledDiscount', typ: u(undefined, r('Discount')) },\n ], false),\n SubscriptionInfo: o([\n { json: 'bData', js: 'data', typ: u(undefined, '') },\n { json: 'bSubscriptionInfo', js: 'status', typ: u(undefined, '') },\n { json: 'bProTrialExpirationDate', js: 'trialExpDate', typ: u(undefined, 0) },\n { json: 'bProSubscriptionExpirationDate', js: 'subExpDate', typ: u(undefined, 0) },\n ], false),\n SMSProduct: o([\n { json: 'balance', js: 'balance', typ: u(undefined, 0) },\n { json: 'sender', js: 'sender', typ: u(undefined, '') },\n { json: 'autorenewPriceID', js: 'autorenewPriceID', typ: u(undefined, '') },\n { json: 'balanceNotificationThreshold', js: 'balanceNotificationThreshold', typ: u(undefined, 0) },\n { json: 'balanceNotificationEnabled', js: 'balanceNotificationEnabled', typ: u(undefined, true) },\n { json: 'latestInvoiceStatus', js: 'latestInvoiceStatus', typ: u(undefined, '') },\n { json: 'latestInvoiceError', js: 'latestInvoiceError', typ: u(undefined, '') },\n { json: 'status', js: 'status', typ: u(undefined, '') },\n ], false),\n Invoice: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'number', js: 'number', typ: u(undefined, '') },\n { json: 'total', js: 'total', typ: u(undefined, 0) },\n { json: 'subtotal', js: 'subtotal', typ: u(undefined, 0) },\n { json: 'startingBalance', js: 'startingBalance', typ: u(undefined, 0) },\n { json: 'endingBalance', js: 'endingBalance', typ: u(undefined, 0) },\n { json: 'amountDue', js: 'amountDue', typ: u(undefined, 0) },\n { json: 'amountPaid', js: 'amountPaid', typ: u(undefined, 0) },\n { json: 'amountRemaining', js: 'amountRemaining', typ: u(undefined, 0) },\n { json: 'currency', js: 'currency', typ: u(undefined, '') },\n { json: 'status', js: 'status', typ: u(undefined, '') },\n { json: 'created', js: 'created', typ: u(undefined, 0) },\n { json: 'url', js: 'url', typ: u(undefined, '') },\n { json: 'pdf', js: 'pdf', typ: u(undefined, '') },\n { json: 'paymentIntent', js: 'paymentIntent', typ: u(undefined, r('PaymentIntent')) },\n { json: 'discount', js: 'discount', typ: u(undefined, r('Discount')) },\n { json: 'discounts', js: 'discounts', typ: u(undefined, a(r('Discount'))) },\n { json: 'lines', js: 'lines', typ: u(undefined, a(r('InvoiceLine'))) },\n { json: 'tax', js: 'tax', typ: u(undefined, 0) },\n { json: 'dueDate', js: 'dueDate', typ: u(undefined, 0) },\n { json: 'subscriptionProrationDate', js: 'subscriptionProrationDate', typ: u(undefined, 0) },\n { json: 'subscriptionProrationInFuture', js: 'subscriptionProrationInFuture', typ: u(undefined, true) },\n { json: 'paymentMethodTypes', js: 'paymentMethodTypes', typ: u(undefined, a('')) },\n { json: 'collectionMethod', js: 'collectionMethod', typ: u(undefined, '') },\n { json: 'overDue', js: 'overDue', typ: u(undefined, true) },\n { json: 'pastDue', js: 'pastDue', typ: u(undefined, true) },\n { json: 'generatedBySubscription', js: 'generatedBySubscription', typ: u(undefined, true) },\n ], false),\n InvoiceLine: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'amount', js: 'amount', typ: u(undefined, 0) },\n { json: 'currency', js: 'currency', typ: u(undefined, '') },\n { json: 'description', js: 'description', typ: u(undefined, '') },\n { json: 'quantity', js: 'quantity', typ: u(undefined, 0) },\n { json: 'price', js: 'price', typ: u(undefined, r('Price')) },\n ], false),\n SetupIntent: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'clientSecret', js: 'clientSecret', typ: u(undefined, '') },\n { json: 'usage', js: 'usage', typ: u(undefined, '') },\n { json: 'status', js: 'status', typ: u(undefined, '') },\n { json: 'paymentMethodTypes', js: 'paymentMethodTypes', typ: u(undefined, a('')) },\n { json: 'lastError', js: 'lastError', typ: u(undefined, '') },\n { json: 'lastErrorType', js: 'lastErrorType', typ: u(undefined, '') },\n { json: 'lastErrorCode', js: 'lastErrorCode', typ: u(undefined, '') },\n { json: 'lastDeclineCode', js: 'lastDeclineCode', typ: u(undefined, '') },\n { json: 'mandate', js: 'mandate', typ: u(undefined, r('Mandate')) },\n ], false),\n PaymentIntent: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'amount', js: 'amount', typ: u(undefined, 0) },\n { json: 'clientSecret', js: 'clientSecret', typ: u(undefined, '') },\n { json: 'usage', js: 'usage', typ: u(undefined, '') },\n { json: 'status', js: 'status', typ: u(undefined, '') },\n { json: 'paymentMethodTypes', js: 'paymentMethodTypes', typ: u(undefined, a('')) },\n { json: 'nextAction', js: 'nextAction', typ: u(undefined, r('PaymentIntentNextAction')) },\n { json: 'lastError', js: 'lastError', typ: u(undefined, '') },\n { json: 'lastErrorType', js: 'lastErrorType', typ: u(undefined, '') },\n { json: 'lastErrorCode', js: 'lastErrorCode', typ: u(undefined, '') },\n { json: 'lastDeclineCode', js: 'lastDeclineCode', typ: u(undefined, '') },\n { json: 'mandate', js: 'mandate', typ: u(undefined, r('Mandate')) },\n ], false),\n Mandate: o([\n { json: 'type', js: 'type', typ: u(undefined, '') },\n { json: 'reference', js: 'reference', typ: u(undefined, '') },\n { json: 'url', js: 'url', typ: u(undefined, '') },\n ], false),\n PaymentMethod: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'type', js: 'type', typ: u(undefined, '') },\n { json: 'card', js: 'card', typ: u(undefined, r('Card')) },\n { json: 'sepaDebit', js: 'sepaDebit', typ: u(undefined, r('SepaDebit')) },\n { json: 'mandate', js: 'mandate', typ: u(undefined, r('Mandate')) },\n ], false),\n Card: o([\n { json: 'brand', js: 'brand', typ: u(undefined, '') },\n { json: 'expMonth', js: 'expMonth', typ: u(undefined, 0) },\n { json: 'expYear', js: 'expYear', typ: u(undefined, 0) },\n { json: 'last4', js: 'last4', typ: u(undefined, '') },\n { json: 'wallet', js: 'wallet', typ: u(undefined, '') },\n ], false),\n SepaDebit: o([\n { json: 'bankCode', js: 'bankCode', typ: u(undefined, '') },\n { json: 'branchCode', js: 'branchCode', typ: u(undefined, '') },\n { json: 'country', js: 'country', typ: u(undefined, '') },\n { json: 'fingerprint', js: 'fingerprint', typ: u(undefined, '') },\n { json: 'last4', js: 'last4', typ: u(undefined, '') },\n { json: 'generatedFromType', js: 'generatedFromType', typ: u(undefined, '') },\n ], false),\n Country: o([\n { json: 'city', js: 'city', typ: u(undefined, '') },\n { json: 'country', js: 'country', typ: u(undefined, '') },\n { json: 'region', js: 'region', typ: u(undefined, '') },\n { json: 'countryCode', js: 'countryCode', typ: u(undefined, '') },\n { json: 'postalCode', js: 'postalCode', typ: u(undefined, '') },\n { json: 'timeZone', js: 'timeZone', typ: u(undefined, '') },\n { json: 'timeZoneID', js: 'timeZoneID', typ: u(undefined, 0) },\n { json: 'isEU', js: 'isEU', typ: u(undefined, true) },\n ], false),\n Discount: o([\n { json: 'start', js: 'start', typ: u(undefined, 0) },\n { json: 'end', js: 'end', typ: u(undefined, 0) },\n { json: 'name', js: 'name', typ: u(undefined, '') },\n { json: 'amountOff', js: 'amountOff', typ: u(undefined, { props: [], additional: 0 }) },\n { json: 'percentOff', js: 'percentOff', typ: u(undefined, 0) },\n { json: 'duration', js: 'duration', typ: u(undefined, '') },\n { json: 'durationInMonths', js: 'durationInMonths', typ: u(undefined, 0) },\n { json: 'expiresAt', js: 'expiresAt', typ: u(undefined, 0) },\n { json: 'originalAmount', js: 'originalAmount', typ: u(undefined, 0) },\n { json: 'discountedAmount', js: 'discountedAmount', typ: u(undefined, 0) },\n { json: 'discountAmount', js: 'discountAmount', typ: u(undefined, 0) },\n { json: 'currency', js: 'currency', typ: u(undefined, '') },\n ], false),\n PaymentIntentNextAction: o([\n { json: 'displayIBANBankTransferInstructions', js: 'displayIBANBankTransferInstructions', typ: u(undefined, r('NextActionDisplayIBANBankTransferInstructions')) },\n ], false),\n NextActionDisplayIBANBankTransferInstructions: o([\n { json: 'amountRemaining', js: 'amountRemaining', typ: u(undefined, 0) },\n { json: 'currency', js: 'currency', typ: u(undefined, '') },\n { json: 'hostedInstructionsURL', js: 'hostedInstructionsURL', typ: u(undefined, '') },\n { json: 'reference', js: 'reference', typ: u(undefined, '') },\n { json: 'accountHolderName', js: 'accountHolderName', typ: u(undefined, '') },\n { json: 'BIC', js: 'BIC', typ: u(undefined, '') },\n { json: 'country', js: 'country', typ: u(undefined, '') },\n { json: 'IBAN', js: 'IBAN', typ: u(undefined, '') },\n ], false),\n};\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\nimport i18n from '@/plugins/i18n';\n\n/* eslint-disable no-use-before-define */\n/* eslint-disable camelcase */\nexport class ApiError implements Error {\n code: number = 0;\n\n name: string = '';\n\n message: string = '';\n\n constructor(code: number) {\n this.name = ApiErrorCode[code] ?? ApiErrorCode[0];\n this.code = code;\n this.message = message(code);\n }\n\n static fromError(error: any) {\n // custom grpc error\n if (error.metadata?.code !== undefined) {\n const errorCode = parseInt(error.metadata.code, 10) as number;\n return new ApiError(errorCode);\n }\n\n if (error.code !== undefined) {\n const errorCode = error.code + ApiErrorCode.grpc_offset;\n const apiError = new ApiError(errorCode);\n apiError.message = error.message || apiError.message;\n return apiError;\n }\n\n return new ApiError(ApiErrorCode.unknown);\n }\n\n get isLogoutError(): boolean {\n return LogoutErrors.includes(this.code);\n }\n}\n\nexport enum ApiErrorCode {\n unknown = 0,\n\n no_updates = 200,\n new_token = 201,\n logout = 202,\n registered = 203,\n registration_code_sent = 204,\n full_update = 210,\n incremental_update = 211,\n search = 212,\n\n username_or_email_not_valid = 1,\n password_not_valid = 2,\n ipaddress_not_allowed = 3,\n user_not_found = 4,\n token_not_valid = 5,\n token_not_found_or_expired_or_already_registered = 6,\n opening_account_failed = 7,\n username_already_exists = 8,\n registrationcode_not_found = 9,\n timestamp_not_valid = 10,\n dateandtime_not_valid = 11,\n full_update_needed = 12,\n user_not_allowed = 13,\n app_update_required = 14,\n web_access_not_allowed = 15,\n x_inapp_purchase_and_upgrade_1 = 16,\n x_inapp_purchase_and_upgrade_2 = 17,\n x_inapp_purchase_and_upgrade_3 = 18,\n x_inapp_purchase_and_upgrade_4 = 19,\n tab_not_found = 20,\n dates_not_valid = 22,\n tabitems_not_found = 24,\n weekday_not_valid = 31,\n weekday_time_not_valid = 32,\n json_not_valid = 41,\n daynote_date_not_valid = 52,\n promo_code_not_valid = 60,\n promo_code_already_exists = 61,\n\n server_error = 500,\n\n // our custom errors\n no_token_error = 1010,\n missing_token_error = 1011,\n\n entity_not_found = 1100,\n json_decoding_error = 1101,\n\n // api v2 error\n\n // grpc status codes\n grpc_offset = 10100,\n grpc_ok = 10100,\n canceled = 10101,\n grpc_unknown = 10102,\n invalid_argument = 10103,\n deadline_exceeded = 10104,\n not_found = 10105,\n already_exists = 10106,\n permission_denied = 10107,\n resource_exhausted = 10108,\n failed_precondition = 10109,\n aborted = 10110,\n out_of_range = 10111,\n unimplemented = 10112,\n internal = 10113,\n unavailable = 10114,\n dataloss = 10115,\n unauthenticated = 10116,\n\n // grpc custom codes\n\n // contact manager\n contact_upcomming_last_visit = 10207,\n\n // settings\n subdomain_already_exists = 10211,\n subdomain_invalid = 10212,\n\n // apps\n stripe_connect_error = 10301,\n\n // giftcards\n giftcard_not_found = 10401,\n giftcard_expired = 10402,\n giftcard_balance_insufficient = 10403,\n giftcard_redeem_error = 10410,\n\n // campaign manager\n campaign_manager_allowance_reached = 10501,\n campaign_manager_similar_campaign_found = 10502,\n\n // last error code\n grpc_last = 12100,\n}\n\nconst LogoutErrors = [\n ApiErrorCode.token_not_valid,\n ApiErrorCode.token_not_found_or_expired_or_already_registered,\n ApiErrorCode.app_update_required,\n];\n\n// export function isSmile(code: ApiErrorCode): boolean {\n// return code >= 200 && code < 300;\n// }\n\n// export function isError(code: ApiErrorCode): boolean {\n// return !isSmile(code);\n// }\n\n// extra errors\nconst registered = new Map();\nregistered.set(ApiErrorCode.permission_denied, i18n.tc('code.error.13'));\n\nregistered.set(ApiErrorCode.giftcard_not_found, i18n.tc('app.giftcards.error.gift_card_not_found'));\nregistered.set(ApiErrorCode.giftcard_expired, i18n.tc('app.giftcards.error.gift_card_expired'));\nregistered.set(ApiErrorCode.giftcard_balance_insufficient, i18n.tc('app.giftcards.error.gift_card_insufficient_balance'));\nregistered.set(ApiErrorCode.giftcard_redeem_error, i18n.tc('app.giftcards.error.gift_card_redeem_error'));\n\nregistered.set(ApiErrorCode.campaign_manager_allowance_reached, i18n.tc('message.campaign_manager_allowance_reached'));\n\nfunction message(code: ApiErrorCode): string {\n const rvalue = registered.get(code);\n if (rvalue) return rvalue;\n\n const key = `code.error.${String(code)}`;\n const value = i18n.tc(key);\n if (key !== value) return value;\n return ApiErrorCode[code] ?? 'unknown error';\n}\n","export function boolFromValue(s?: string | boolean, defaultValue?: boolean): boolean | undefined {\n if (s === undefined) return defaultValue;\n if (s === true || s === 'True' || s === 'true' || s === '1') return true;\n if (s === false || s === 'False' || s === 'false' || s === '0') return false;\n return defaultValue;\n}\n\nexport function numberFromValue(s?: string | number, defaultValue?: number): number | undefined {\n if (s === undefined) return defaultValue;\n if (s === 0 || s === '0') return 0;\n return Number(s) || defaultValue;\n}\n","/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable no-empty */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-shadow */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-use-before-define */\n\nexport interface IDTOMessengerResponse {\n warning?: string;\n smile?: string;\n update?: IDTOMessengerUpdate;\n}\n\nexport interface IDTOMessageRulesResponse {\n warning?: string;\n smile?: string;\n update?: IDTOMessageRulesUpdate;\n}\n\nexport interface IDTOMessageRulesUpdate {\n messageRules?: IDTOMessageRule[];\n}\n\nexport interface IDTOMessengerUpdate {\n eventTypes?: IDTOEventType[];\n campaigns?: IDTOCampaign[];\n messageTypes: IDTOMessageType[];\n handlebars?: IDTOHandlebar[];\n messageRules?: IDTOMessageRule[];\n}\n\nexport interface IDTOCampaign {\n campaignId: number;\n description?: string;\n}\n\nexport interface IDTOEventType {\n eventTypeId: number;\n eventType: string;\n eventName: string;\n}\n\nexport interface IDTOHandlebar {\n handlebarId: number;\n name: string;\n expression: string;\n}\n\nexport interface IDTOMessageRule {\n messageRuleId: number;\n campaignId?: number;\n serviceId?: number;\n tabId?: number;\n eventTypeId?: number;\n messageTypeId?: number;\n sendBcc: boolean;\n dtCreate?: string;\n dtUpdate?: string;\n isDeleted?: boolean;\n isDefault: boolean;\n isInactive: boolean;\n sendAtSpecificTime?: string;\n sendDaysAfter?: number;\n sendDaysInAdvance?: number;\n messageTemplates?: IDTOMessageTemplate[];\n}\n\nexport interface IDTOMessageTemplate {\n messageTemplateId: number;\n messageTypeId?: number;\n messageLayoutId?: number;\n messageDescription?: string;\n locale?: string;\n subject?: string;\n body?: string;\n dtCreate?: string;\n dtUpdate?: string;\n isDeleted?: boolean;\n isDefault?: boolean;\n}\n\nexport interface IDTOMessageType {\n messageTypeId: number;\n messageType: string;\n}\n\n// Converts JSON strings to/from your types\n// and asserts the results of JSON.parse at runtime\nexport class MessengerConvert {\n public static toMessangerResponse(json: string): IDTOMessengerResponse {\n return cast(JSON.parse(json), r('IDTOMessengerResponse'));\n }\n\n public static toMessageRulesResponse(json: string): IDTOMessageRulesResponse {\n return cast(JSON.parse(json), r('IDTOMessageRulesResponse'));\n }\n\n public static messangerResponseToJson(value: IDTOMessengerResponse): string {\n return JSON.stringify(uncast(value, r('IDTOMessengerResponse')), null, 2);\n }\n}\n\nfunction invalidValue(typ: any, val: any): never {\n throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);\n}\n\nfunction jsonToJSProps(typ: any): any {\n if (typ.jsonToJS === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });\n typ.jsonToJS = map;\n }\n return typ.jsonToJS;\n}\n\nfunction jsToJSONProps(typ: any): any {\n if (typ.jsToJSON === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });\n typ.jsToJSON = map;\n }\n return typ.jsToJSON;\n}\n\nfunction transform(val: any, typ: any, getProps: any): any {\n function transformPrimitive(typ: string, val: any): any {\n if (typeof typ === typeof val) return val;\n return invalidValue(typ, val);\n }\n\n function transformUnion(typs: any[], val: any): any {\n // val must validate against one typ in typs\n const l = typs.length;\n for (let i = 0; i < l; i++) {\n const typ = typs[i];\n try {\n return transform(val, typ, getProps);\n } catch (_) { }\n }\n return invalidValue(typs, val);\n }\n\n function transformEnum(cases: string[], val: any): any {\n if (cases.indexOf(val) !== -1) return val;\n return invalidValue(cases, val);\n }\n\n function transformArray(typ: any, val: any): any {\n // val must be an array with no invalid elements\n if (!Array.isArray(val)) return invalidValue('array', val);\n return val.map((el) => transform(el, typ, getProps));\n }\n\n function transformDate(typ: any, val: any): any {\n if (val === null) {\n return null;\n }\n const d = new Date(val);\n if (isNaN(d.valueOf())) {\n return invalidValue('Date', val);\n }\n return d;\n }\n\n function transformObject(props: { [k: string]: any }, additional: any, val: any): any {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) {\n return invalidValue('object', val);\n }\n const result: any = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n const prop = props[key];\n const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;\n result[prop.key] = transform(v, prop.typ, getProps);\n });\n Object.getOwnPropertyNames(val).forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n result[key] = transform(val[key], additional, getProps);\n }\n });\n return result;\n }\n\n if (typ === 'any') return val;\n if (typ === null) {\n if (val === null) return val;\n return invalidValue(typ, val);\n }\n if (typ === false) return invalidValue(typ, val);\n while (typeof typ === 'object' && typ.ref !== undefined) {\n typ = typeMap[typ.ref];\n }\n if (Array.isArray(typ)) return transformEnum(typ, val);\n if (typeof typ === 'object') {\n return typ.hasOwnProperty('unionMembers') ? transformUnion(typ.unionMembers, val)\n : typ.hasOwnProperty('arrayItems') ? transformArray(typ.arrayItems, val)\n : typ.hasOwnProperty('props') ? transformObject(getProps(typ), typ.additional, val)\n : invalidValue(typ, val);\n }\n // Numbers can be parsed by Date but shouldn't be.\n if (typ === Date && typeof val !== 'number') return transformDate(typ, val);\n return transformPrimitive(typ, val);\n}\n\nfunction cast(val: any, typ: any): T {\n return transform(val, typ, jsonToJSProps);\n}\n\nfunction uncast(val: T, typ: any): any {\n return transform(val, typ, jsToJSONProps);\n}\n\nfunction a(typ: any) {\n return { arrayItems: typ };\n}\n\nfunction u(...typs: any[]) {\n return { unionMembers: typs };\n}\n\nfunction o(props: any[], additional: any) {\n return { props, additional };\n}\n\nfunction m(additional: any) {\n return { props: [], additional };\n}\n\nfunction r(name: string) {\n return { ref: name };\n}\n\nconst typeMap: any = {\n IDTOMessageRulesResponse: o([\n { json: 'warning', js: 'warning', typ: u(undefined, '') },\n { json: 'smile', js: 'smile', typ: u(undefined, '') },\n { json: 'update', js: 'update', typ: u(undefined, r('IDTOMessageRulesUpdate')) },\n ], false),\n IDTOMessengerResponse: o([\n { json: 'warning', js: 'warning', typ: u(undefined, '') },\n { json: 'smile', js: 'smile', typ: u(undefined, '') },\n { json: 'update', js: 'update', typ: u(undefined, r('IDTOMessengerUpdate')) },\n ], false),\n IDTOMessageRulesUpdate: o([\n { json: 'messageRules', js: 'messageRules', typ: u(undefined, a(r('IDTOMessageRule'))) },\n ], false),\n IDTOMessengerUpdate: o([\n { json: 'eventTypes', js: 'eventTypes', typ: u(undefined, a(r('IDTOEventType'))) },\n { json: 'campaigns', js: 'campaigns', typ: u(undefined, a(r('IDTOCampaign'))) },\n { json: 'messageTypes', js: 'messageTypes', typ: u(undefined, a(r('IDTOMessageType'))) },\n { json: 'handlebars', js: 'handlebars', typ: u(undefined, a(r('IDTOHandlebar'))) },\n { json: 'messageRules', js: 'messageRules', typ: u(undefined, a(r('IDTOMessageRule'))) },\n ], false),\n IDTOCampaign: o([\n { json: 'campaignId', js: 'campaignId', typ: 0 },\n { json: 'description', js: 'description', typ: '' },\n ], false),\n IDTOEventType: o([\n { json: 'eventTypeId', js: 'eventTypeId', typ: 0 },\n { json: 'eventType', js: 'eventType', typ: '' },\n { json: 'eventName', js: 'eventName', typ: '' },\n ], false),\n IDTOHandlebar: o([\n { json: 'handlebarId', js: 'handlebarId', typ: 0 },\n { json: 'name', js: 'name', typ: '' },\n { json: 'expression', js: 'expression', typ: '' },\n ], false),\n IDTOMessageRule: o([\n { json: 'messageRuleId', js: 'messageRuleId', typ: 0 },\n { json: 'campaignId', js: 'campaignId', typ: 0 },\n { json: 'serviceId', js: 'serviceId', typ: 0 },\n { json: 'tabId', js: 'tabId', typ: 0 },\n { json: 'eventTypeId', js: 'eventTypeId', typ: 0 },\n { json: 'messageTypeId', js: 'messageTypeId', typ: 0 },\n { json: 'sendBcc', js: 'sendBcc', typ: true },\n { json: 'isDefault', js: 'isDefault', typ: u(undefined, true) },\n { json: 'isInactive', js: 'isInactive', typ: u(undefined, true) },\n { json: 'messageTemplates', js: 'messageTemplates', typ: u(undefined, a(r('IDTOMessageTemplate'))) },\n { json: 'sendAtSpecificTime', js: 'sendAtSpecificTime', typ: u(undefined, '') },\n { json: 'sendDaysInAdvance', js: 'sendDaysInAdvance', typ: u(undefined, 0) },\n { json: 'sendDaysAfter', js: 'sendDaysAfter', typ: u(undefined, 0) },\n { json: 'isDeleted', js: 'isDeleted', typ: u(undefined, true) },\n ], false),\n IDTOMessageTemplate: o([\n { json: 'messageTemplateId', js: 'messageTemplateId', typ: 0 },\n { json: 'messageTypeId', js: 'messageTypeId', typ: 0 },\n { json: 'messageLayoutId', js: 'messageLayoutId', typ: 0 },\n { json: 'messageDescription', js: 'messageDescription', typ: '' },\n { json: 'locale', js: 'locale', typ: '' },\n { json: 'subject', js: 'subject', typ: '' },\n { json: 'body', js: 'body', typ: '' },\n { json: 'isDefault', js: 'isDefault', typ: u(undefined, true) },\n { json: 'isDeleted', js: 'isDeleted', typ: u(undefined, true) },\n ], false),\n IDTOMessageType: o([\n { json: 'messageTypeId', js: 'messageTypeId', typ: 0 },\n { json: 'messageType', js: 'messageType', typ: '' },\n ], false),\n};\n","/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable no-empty */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-shadow */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-use-before-define */\n\nexport interface IDTOAllocationsResponse {\n update?: IDTOAllocationsUpdate;\n smile?: string;\n warning?: string;\n}\n\nexport interface IDTOAllocationsUpdate {\n allocations: IDTOAllocation[];\n}\n\nexport interface IDTOAllocation {\n tabId: number;\n partySize: number;\n allocationId: number;\n allocationOrder: number;\n allocatedTabItems?: number[];\n isForbidden?: boolean;\n isDeleted?: boolean;\n}\n\n// Converts JSON strings to/from your types\n// and asserts the results of JSON.parse at runtime\nexport class AllocationsConvert {\n public static toAllocationsResponse(json: string): IDTOAllocationsResponse {\n return cast(JSON.parse(json), r('IDTOAllocationsResponse'));\n }\n\n public static allocationsResponseToJson(value: IDTOAllocationsResponse): string {\n return JSON.stringify(uncast(value, r('IDTOAllocationsResponse')), null, 2);\n }\n}\n\nfunction invalidValue(typ: any, val: any): never {\n throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);\n}\n\nfunction jsonToJSProps(typ: any): any {\n if (typ.jsonToJS === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });\n typ.jsonToJS = map;\n }\n return typ.jsonToJS;\n}\n\nfunction jsToJSONProps(typ: any): any {\n if (typ.jsToJSON === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });\n typ.jsToJSON = map;\n }\n return typ.jsToJSON;\n}\n\nfunction transform(val: any, typ: any, getProps: any): any {\n function transformPrimitive(typ: string, val: any): any {\n if (typeof typ === typeof val) return val;\n return invalidValue(typ, val);\n }\n\n function transformUnion(typs: any[], val: any): any {\n // val must validate against one typ in typs\n const l = typs.length;\n for (let i = 0; i < l; i++) {\n const typ = typs[i];\n try {\n return transform(val, typ, getProps);\n } catch (_) { }\n }\n return invalidValue(typs, val);\n }\n\n function transformEnum(cases: string[], val: any): any {\n if (cases.indexOf(val) !== -1) return val;\n return invalidValue(cases, val);\n }\n\n function transformArray(typ: any, val: any): any {\n // val must be an array with no invalid elements\n if (!Array.isArray(val)) return invalidValue('array', val);\n return val.map((el) => transform(el, typ, getProps));\n }\n\n function transformDate(typ: any, val: any): any {\n if (val === null) {\n return null;\n }\n const d = new Date(val);\n if (isNaN(d.valueOf())) {\n return invalidValue('Date', val);\n }\n return d;\n }\n\n function transformObject(props: { [k: string]: any }, additional: any, val: any): any {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) {\n return invalidValue('object', val);\n }\n const result: any = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n const prop = props[key];\n const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;\n result[prop.key] = transform(v, prop.typ, getProps);\n });\n Object.getOwnPropertyNames(val).forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n result[key] = transform(val[key], additional, getProps);\n }\n });\n return result;\n }\n\n if (typ === 'any') return val;\n if (typ === null) {\n if (val === null) return val;\n return invalidValue(typ, val);\n }\n if (typ === false) return invalidValue(typ, val);\n while (typeof typ === 'object' && typ.ref !== undefined) {\n typ = typeMap[typ.ref];\n }\n if (Array.isArray(typ)) return transformEnum(typ, val);\n if (typeof typ === 'object') {\n return typ.hasOwnProperty('unionMembers') ? transformUnion(typ.unionMembers, val)\n : typ.hasOwnProperty('arrayItems') ? transformArray(typ.arrayItems, val)\n : typ.hasOwnProperty('props') ? transformObject(getProps(typ), typ.additional, val)\n : invalidValue(typ, val);\n }\n // Numbers can be parsed by Date but shouldn't be.\n if (typ === Date && typeof val !== 'number') return transformDate(typ, val);\n return transformPrimitive(typ, val);\n}\n\nfunction cast(val: any, typ: any): T {\n return transform(val, typ, jsonToJSProps);\n}\n\nfunction uncast(val: T, typ: any): any {\n return transform(val, typ, jsToJSONProps);\n}\n\nfunction a(typ: any) {\n return { arrayItems: typ };\n}\n\nfunction u(...typs: any[]) {\n return { unionMembers: typs };\n}\n\nfunction o(props: any[], additional: any) {\n return { props, additional };\n}\n\nfunction m(additional: any) {\n return { props: [], additional };\n}\n\nfunction r(name: string) {\n return { ref: name };\n}\n\nconst typeMap: any = {\n IDTOAllocationsResponse: o([\n { json: 'warning', js: 'warning', typ: u(undefined, '') },\n { json: 'smile', js: 'smile', typ: u(undefined, '') },\n { json: 'update', js: 'update', typ: u(undefined, r('IDTOAllocationsUpdate')) },\n ], false),\n IDTOAllocationsUpdate: o([\n { json: 'allocations', js: 'allocations', typ: a(r('IDTOAllocation')) },\n ], false),\n IDTOAllocation: o([\n { json: 'tabId', js: 'tabId', typ: 0 },\n { json: 'partySize', js: 'partySize', typ: 0 },\n { json: 'allocationId', js: 'allocationId', typ: 0 },\n { json: 'allocationOrder', js: 'allocationOrder', typ: 0 },\n { json: 'isForbidden', js: 'isForbidden', typ: u(undefined, true) },\n { json: 'isDeleted', js: 'isDeleted', typ: u(undefined, true) },\n { json: 'allocatedTabItems', js: 'allocatedTabItems', typ: u(undefined, a(0)) },\n ], false),\n};\n","/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable no-empty */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-shadow */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-use-before-define */\n\nexport interface GuestStats {\n tid: number;\n dif: number;\n dit: number;\n ts: { [key: string]: TimeStats };\n}\n\nexport interface TimeStats {\n ri: number;\n gi: number;\n rs: number;\n gs: number;\n}\n\n// Converts JSON strings to/from your types\n// and asserts the results of JSON.parse at runtime\nexport class Convert {\n public static toGuestStats(json: string): GuestStats {\n return cast(JSON.parse(json), r('GuestStats'));\n }\n\n public static guestStatsToJson(value: GuestStats): string {\n return JSON.stringify(uncast(value, r('GuestStats')), null, 2);\n }\n}\n\nfunction invalidValue(typ: any, val: any): never {\n throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);\n}\n\nfunction jsonToJSProps(typ: any): any {\n if (typ.jsonToJS === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });\n typ.jsonToJS = map;\n }\n return typ.jsonToJS;\n}\n\nfunction jsToJSONProps(typ: any): any {\n if (typ.jsToJSON === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });\n typ.jsToJSON = map;\n }\n return typ.jsToJSON;\n}\n\nfunction transform(val: any, typ: any, getProps: any): any {\n function transformPrimitive(typ: string, val: any): any {\n if (typeof typ === typeof val) return val;\n return invalidValue(typ, val);\n }\n\n function transformUnion(typs: any[], val: any): any {\n // val must validate against one typ in typs\n const l = typs.length;\n for (let i = 0; i < l; i++) {\n const typ = typs[i];\n try {\n return transform(val, typ, getProps);\n } catch (_) { }\n }\n return invalidValue(typs, val);\n }\n\n function transformEnum(cases: string[], val: any): any {\n if (cases.indexOf(val) !== -1) return val;\n return invalidValue(cases, val);\n }\n\n function transformArray(typ: any, val: any): any {\n // val must be an array with no invalid elements\n if (!Array.isArray(val)) return invalidValue('array', val);\n return val.map((el) => transform(el, typ, getProps));\n }\n\n function transformDate(val: any): any {\n if (val === null) {\n return null;\n }\n const d = new Date(val);\n if (isNaN(d.valueOf())) {\n return invalidValue('Date', val);\n }\n return d;\n }\n\n function transformObject(props: { [k: string]: any }, additional: any, val: any): any {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) {\n return invalidValue('object', val);\n }\n const result: any = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n const prop = props[key];\n const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;\n result[prop.key] = transform(v, prop.typ, getProps);\n });\n Object.getOwnPropertyNames(val).forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n result[key] = transform(val[key], additional, getProps);\n }\n });\n return result;\n }\n\n if (typ === 'any') return val;\n if (typ === null) {\n if (val === null) return val;\n return invalidValue(typ, val);\n }\n if (typ === false) return invalidValue(typ, val);\n while (typeof typ === 'object' && typ.ref !== undefined) {\n typ = typeMap[typ.ref];\n }\n if (Array.isArray(typ)) return transformEnum(typ, val);\n if (typeof typ === 'object') {\n return typ.hasOwnProperty('unionMembers') ? transformUnion(typ.unionMembers, val)\n : typ.hasOwnProperty('arrayItems') ? transformArray(typ.arrayItems, val)\n : typ.hasOwnProperty('props') ? transformObject(getProps(typ), typ.additional, val)\n : invalidValue(typ, val);\n }\n // Numbers can be parsed by Date but shouldn't be.\n if (typ === Date && typeof val !== 'number') return transformDate(val);\n return transformPrimitive(typ, val);\n}\n\nfunction cast(val: any, typ: any): T {\n return transform(val, typ, jsonToJSProps);\n}\n\nfunction uncast(val: T, typ: any): any {\n return transform(val, typ, jsToJSONProps);\n}\n\nfunction a(typ: any) {\n return { arrayItems: typ };\n}\n\nfunction u(...typs: any[]) {\n return { unionMembers: typs };\n}\n\nfunction o(props: any[], additional: any) {\n return { props, additional };\n}\n\nfunction m(additional: any) {\n return { props: [], additional };\n}\n\nfunction r(name: string) {\n return { ref: name };\n}\n\nconst typeMap: any = {\n GuestStats: o([\n { json: 'tid', js: 'tid', typ: 0 },\n { json: 'dif', js: 'dif', typ: 0 },\n { json: 'dit', js: 'dit', typ: 0 },\n { json: 'ts', js: 'ts', typ: m(r('TimeStats')) },\n ], false),\n TimeStats: o([\n { json: 'ri', js: 'ri', typ: 0 },\n { json: 'gi', js: 'gi', typ: 0 },\n { json: 'rs', js: 'rs', typ: 0 },\n { json: 'gs', js: 'gs', typ: 0 },\n ], false),\n};\n","/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable no-empty */\n/* eslint-disable no-plusplus */\n/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-use-before-define */\n\nexport interface IDTOCampaignFilterResponse {\n update?: IDTOCampaignFilterUpdate;\n smile?: string;\n warning?: string;\n}\n\nexport interface IDTOCampaignFilterUpdate {\n campaigns?: IDTOCampaign[];\n campaignFilters?: IDTOCampaignFilter[];\n}\n\nexport interface IDTOCampaignFilter {\n filterId?: number;\n campaignId?: number;\n dtFrom?: number;\n dtTo?: number;\n isDeleted?: boolean;\n}\n\nexport interface IDTOCampaign {\n campaignId: number;\n description?: string;\n}\n\n// Converts JSON strings to/from your types\n// and asserts the results of JSON.parse at runtime\nexport class CampaignFilterConvert {\n public static toCampaignFilterResponse(json: string): IDTOCampaignFilterResponse {\n return cast(JSON.parse(json), r('IDTOCampaignFilterResponse'));\n }\n\n public static campaignFilterResponseToJson(value: IDTOCampaignFilterResponse): string {\n return JSON.stringify(uncast(value, r('IDTOCampaignFilterResponse')), null, 2);\n }\n}\n\nfunction invalidValue(typ: any, val: any, key: any = ''): never {\n if (key) {\n throw Error(`Invalid value for key \"${key}\". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);\n }\n throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);\n}\n\nfunction jsonToJSProps(typ: any): any {\n if (typ.jsonToJS === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });\n typ.jsonToJS = map;\n }\n return typ.jsonToJS;\n}\n\nfunction jsToJSONProps(typ: any): any {\n if (typ.jsToJSON === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });\n typ.jsToJSON = map;\n }\n return typ.jsToJSON;\n}\n\nfunction transform(val: any, typ: any, getProps: any, key: any = ''): any {\n function transformPrimitive(typ: string, val: any): any {\n if (typeof typ === typeof val) return val;\n return invalidValue(typ, val, key);\n }\n\n function transformUnion(typs: any[], val: any): any {\n // val must validate against one typ in typs\n const l = typs.length;\n for (let i = 0; i < l; i++) {\n const typ = typs[i];\n try {\n return transform(val, typ, getProps);\n } catch (_) { }\n }\n return invalidValue(typs, val);\n }\n\n function transformEnum(cases: string[], val: any): any {\n if (cases.indexOf(val) !== -1) return val;\n return invalidValue(cases, val);\n }\n\n function transformArray(typ: any, val: any): any {\n // val must be an array with no invalid elements\n if (!Array.isArray(val)) return invalidValue('array', val);\n return val.map((el) => transform(el, typ, getProps));\n }\n\n function transformDate(val: any): any {\n if (val === null) {\n return null;\n }\n const d = new Date(val);\n if (isNaN(d.valueOf())) {\n return invalidValue('Date', val);\n }\n return d;\n }\n\n function transformObject(props: { [k: string]: any }, additional: any, val: any): any {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) {\n return invalidValue('object', val);\n }\n const result: any = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n const prop = props[key];\n const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;\n result[prop.key] = transform(v, prop.typ, getProps, prop.key);\n });\n Object.getOwnPropertyNames(val).forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n result[key] = val[key];\n }\n });\n return result;\n }\n\n if (typ === 'any') return val;\n if (typ === null) {\n if (val === null) return val;\n return invalidValue(typ, val);\n }\n if (typ === false) return invalidValue(typ, val);\n while (typeof typ === 'object' && typ.ref !== undefined) {\n typ = typeMap[typ.ref];\n }\n if (Array.isArray(typ)) return transformEnum(typ, val);\n if (typeof typ === 'object') {\n return typ.hasOwnProperty('unionMembers') ? transformUnion(typ.unionMembers, val)\n : typ.hasOwnProperty('arrayItems') ? transformArray(typ.arrayItems, val)\n : typ.hasOwnProperty('props') ? transformObject(getProps(typ), typ.additional, val)\n : invalidValue(typ, val);\n }\n // Numbers can be parsed by Date but shouldn't be.\n if (typ === Date && typeof val !== 'number') return transformDate(val);\n return transformPrimitive(typ, val);\n}\n\nfunction cast(val: any, typ: any): T {\n return transform(val, typ, jsonToJSProps);\n}\n\nfunction uncast(val: T, typ: any): any {\n return transform(val, typ, jsToJSONProps);\n}\n\nfunction a(typ: any) {\n return { arrayItems: typ };\n}\n\nfunction u(...typs: any[]) {\n return { unionMembers: typs };\n}\n\nfunction o(props: any[], additional: any) {\n return { props, additional };\n}\n\nfunction m(additional: any) {\n return { props: [], additional };\n}\n\nfunction r(name: string) {\n return { ref: name };\n}\n\nconst typeMap: any = {\n IDTOCampaignFilterResponse: o([\n { json: 'warning', js: 'warning', typ: u(undefined, '') },\n { json: 'smile', js: 'smile', typ: u(undefined, '') },\n { json: 'update', js: 'update', typ: u(undefined, r('IDTOCampaignFilterUpdate')) },\n ], false),\n IDTOCampaignFilterUpdate: o([\n { json: 'campaigns', js: 'campaigns', typ: u(undefined, a(r('IDTOCampaign'))) },\n { json: 'campaignFilters', js: 'campaignFilters', typ: u(undefined, a(r('IDTOCampaignFilter'))) },\n ], false),\n IDTOCampaignFilter: o([\n { json: 'filterId', js: 'filterId', typ: u(undefined, 0) },\n { json: 'campaignId', js: 'campaignId', typ: u(undefined, 0) },\n { json: 'dtFrom', js: 'dtFrom', typ: u(undefined, 0) },\n { json: 'dtTo', js: 'dtTo', typ: u(undefined, 0) },\n { json: 'isDeleted', js: 'isDeleted', typ: u(undefined, true) },\n ], false),\n IDTOCampaign: o([\n { json: 'campaignId', js: 'campaignId', typ: u(undefined, 0) },\n { json: 'description', js: 'description', typ: u(undefined, '') },\n { json: 'isDeleted', js: 'isDeleted', typ: u(undefined, true) },\n ], false),\n};\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable no-empty */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-shadow */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-use-before-define */\n\nexport interface ConnectAccount {\n ID?: string;\n Country?: string;\n Email?: string;\n OnboardingURL?: string;\n}\n\n// Converts JSON strings to/from your types\n// and asserts the results of JSON.parse at runtime\nexport class BillingConnectConvert {\n public static toAccount(json: string): ConnectAccount | null {\n const val = JSON.parse(json);\n if (val === null) return null;\n return cast(val, r('Account'));\n }\n\n public static accountToDto(value: ConnectAccount) {\n return {\n ...value,\n };\n }\n\n public static accountToJson(value: ConnectAccount): string {\n return JSON.stringify(uncast(BillingConnectConvert.accountToDto(value), r('Account')), null, 2);\n }\n}\n\nfunction invalidValue(typ: any, val: any, key: any = ''): never {\n if (key) {\n throw Error(`Invalid value for key \"${key}\". Expected type ${JSON.stringify(typ)} but got ${JSON.stringify(val)}`);\n }\n throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);\n}\n\nfunction jsonToJSProps(typ: any): any {\n if (typ.jsonToJS === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });\n typ.jsonToJS = map;\n }\n return typ.jsonToJS;\n}\n\nfunction jsToJSONProps(typ: any): any {\n if (typ.jsToJSON === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });\n typ.jsToJSON = map;\n }\n return typ.jsToJSON;\n}\n\nfunction transform(val: any, typ: any, getProps: any, key: any = ''): any {\n function transformPrimitive(typ: string, val: any): any {\n if (typeof typ === typeof val) return val;\n return invalidValue(typ, val, key);\n }\n\n function transformUnion(typs: any[], val: any): any {\n // val must validate against one typ in typs\n const l = typs.length;\n for (let i = 0; i < l; i++) {\n const typ = typs[i];\n try {\n return transform(val, typ, getProps);\n } catch (_) { }\n }\n return invalidValue(typs, val);\n }\n\n function transformEnum(cases: string[], val: any): any {\n if (cases.indexOf(val) !== -1) return val;\n return invalidValue(cases, val);\n }\n\n function transformArray(typ: any, val: any): any {\n // val must be an array with no invalid elements\n if (!Array.isArray(val)) return invalidValue('array', val);\n return val.map((el) => transform(el, typ, getProps));\n }\n\n function transformDate(val: any): any {\n if (val === null) {\n return null;\n }\n const d = new Date(val);\n if (isNaN(d.valueOf())) {\n return invalidValue('Date', val);\n }\n return d;\n }\n\n function transformObject(props: { [k: string]: any }, additional: any, val: any): any {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) {\n return invalidValue('object', val);\n }\n const result: any = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n const prop = props[key];\n const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;\n result[prop.key] = transform(v, prop.typ, getProps, prop.key);\n });\n Object.getOwnPropertyNames(val).forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n result[key] = val[key];\n }\n });\n return result;\n }\n\n if (typ === 'any') return val;\n if (typ === null) {\n if (val === null) return val;\n return invalidValue(typ, val);\n }\n if (typ === false) return invalidValue(typ, val);\n while (typeof typ === 'object' && typ.ref !== undefined) {\n typ = typeMap[typ.ref];\n }\n if (Array.isArray(typ)) return transformEnum(typ, val);\n if (typeof typ === 'object') {\n return typ.hasOwnProperty('unionMembers') ? transformUnion(typ.unionMembers, val)\n : typ.hasOwnProperty('arrayItems') ? transformArray(typ.arrayItems, val)\n : typ.hasOwnProperty('props') ? transformObject(getProps(typ), typ.additional, val)\n : invalidValue(typ, val);\n }\n // Numbers can be parsed by Date but shouldn't be.\n if (typ === Date && typeof val !== 'number') return transformDate(val);\n return transformPrimitive(typ, val);\n}\n\nfunction cast(val: any, typ: any): T {\n return transform(val, typ, jsonToJSProps);\n}\n\nfunction uncast(val: T, typ: any): any {\n return transform(val, typ, jsToJSONProps);\n}\n\nfunction a(typ: any) {\n return { arrayItems: typ };\n}\n\nfunction u(...typs: any[]) {\n return { unionMembers: typs };\n}\n\nfunction o(props: any[], additional: any) {\n return { props, additional };\n}\n\nfunction m(additional: any) {\n return { props: [], additional };\n}\n\nfunction r(name: string) {\n return { ref: name };\n}\n\nconst typeMap: any = {\n Account: o([\n { json: 'ID', js: 'ID', typ: u(undefined, '') },\n { json: 'Country', js: 'Country', typ: u(undefined, '') },\n { json: 'Email', js: 'Email', typ: u(undefined, '') },\n { json: 'OnboardingURL', js: 'OnboardingURL', typ: u(undefined, '') },\n ], false),\n\n};\n","import axios, { AxiosResponse, AxiosRequestConfig } from 'axios';\nimport { IDTOAccount } from '@/model/Account';\nimport { IDTOTab } from '@/model/Tab';\nimport { IDTOUser } from '@/model/User';\nimport { IDTOEmployee } from '@/model/Employee';\nimport { IDTOTagNote } from '@/model/TagNote';\nimport { IDTOLabel } from '@/model/Label';\nimport { IDTOService } from '@/model/Service';\n\nimport { IApi } from '@/model/model-utils';\nimport { IDTOOpeningHour } from '@/model/OpeningHour';\nimport { IDTOTabItem } from '@/model/TabItem';\nimport { IDTODurationRule } from '@/model/DurationRule';\nimport { IDTOAccountSetting } from '@/model/AccountSettings';\nimport { IDTODateAndTime } from '@/model/DateAndTime';\nimport { IDTODayNote } from '@/model/DayNote';\nimport { IDTOSendAllocation } from '@/model/Allocation';\nimport { v4 as uuidv4 } from 'uuid';\nimport { IDTOApp } from '@/model/AppStoreApp';\nimport { countries } from '@/model/Country';\nimport { ApiError, ApiErrorCode } from './api-error';\nimport IDTOReservation from './api-reservations-dto';\nimport { IUpdateResponse, IUpdate } from './api-update';\nimport {\n MessengerConvert, IDTOMessengerUpdate, IDTOMessageRule, IDTOMessageRulesUpdate,\n} from './api-messenger';\nimport { AllocationsConvert, IDTOAllocationsUpdate } from './api-allocations';\nimport { Convert as DashboardConvert, GuestStats } from './api-dashboard';\nimport { IDTOFloorplan } from './api-floorplan';\nimport {\n BillingConvert, Product, Customer, Invoice, SetupIntent, PaymentMethod, Country, PaymentIntent,\n SMSProduct,\n} from './api-billing';\nimport { CampaignFilterConvert, IDTOCampaignFilter, IDTOCampaignFilterUpdate } from './api-campaign-filter';\nimport { BillingConnectConvert, ConnectAccount } from './api-billing-connect';\n\nexport interface IHttpClientState {\n token?: string;\n timestamp?: string;\n unixTimestamp?: string;\n accountID?: number;\n fcmToken?: string;\n}\n\nexport type OnProgressFnc = (event: { loaded: number, total: number }) => void;\n\nconst origin = `web_${process.env.VUE_APP_VERSION}`;\nconst baseURL = process.env.VUE_APP_ENDPOINT_APIV1;\nconst baseURLv2 = process.env.VUE_APP_ENDPOINT_APIV2;\n// const baseURLv2 = 'http://127.0.0.1:8080/api/v2/';\nconst connectBaseURL = process.env.VUE_APP_ENDPOINT_ETC;\n\nclass HttpClient {\n private client = axios.create({\n baseURL,\n responseType: 'json',\n // headers: { 'Content-Type': 'text/plain' },\n headers: { 'Content-Type': 'text/plain', 'gp-origin': origin },\n });\n\n private clientV2 = axios.create({\n baseURL: baseURLv2,\n responseType: 'json',\n // headers: { 'Content-Type': 'text/plain' },\n headers: { 'Content-Type': 'text/plain', 'gp-origin': origin },\n });\n\n state: IHttpClientState = {};\n\n get token() {\n if (!this.state.token) throw new ApiError(ApiErrorCode.missing_token_error);\n return this.state.token;\n }\n\n get params() {\n if (!this.state.token) throw new ApiError(ApiErrorCode.missing_token_error);\n\n return {\n token: this.state.token,\n timeStamp: this.state.timestamp ?? undefined,\n unixTimeStamp: this.state.unixTimestamp ?? undefined,\n FCMToken: this.state.fcmToken ?? undefined,\n };\n }\n\n get clientConfigV2(): AxiosRequestConfig {\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data], headers: {} };\n if (process.env.VUE_APP_DEBUG_AUTH_HEADER === 'true' && this.state.accountID !== undefined) {\n config.headers.Authorization = `AccountID ${this.state.accountID}`;\n } else {\n config.headers.Authorization = `Bearer ${this.token}`;\n }\n return config;\n }\n\n // eslint-disable-next-line class-methods-use-this\n handleError(response: { warning?: string, smile?: string }): boolean {\n const errorCode = Number(response?.warning);\n\n if (errorCode) throw new ApiError(errorCode);\n\n return true;\n }\n\n handleToken(response: { token?: string }): boolean {\n if (!response.token) throw new ApiError(ApiErrorCode.no_token_error);\n this.state.token = response.token;\n return true;\n }\n\n async openAccount(\n username: string,\n password: string,\n firstname: string,\n companyName: string,\n phone: string,\n locale?: string,\n promoCode?: string,\n ): Promise {\n let country: Country | undefined;\n try {\n country = await this.getCountry(5000);\n } catch (e) {\n console.log('Country code error: ', e);\n }\n\n const params = {\n keyToOpen: 't3Jki5hGQ49mlhyOegvWsdewBaTzcBv8F5nvCsddJhKhYuIF',\n username,\n password,\n firstname,\n companyName,\n phone,\n locale,\n countryCode: country?.countryCode || undefined,\n state: country?.region || undefined,\n postalCode: country?.postalCode || undefined,\n timeZone: country?.timeZoneID || undefined,\n promoCode,\n };\n type Response = {\n token?: string,\n warning?: string,\n }\n const response = await this.client.post('/openAccount/default.asp', params);\n this.handleError(response?.data);\n this.handleToken(response?.data);\n }\n\n async register(username: string, registrationCode: string): Promise {\n const params = { ...this.params, username, registrationCode };\n type Response = {\n warning?: string,\n }\n const response = await this.client.post('/register/default.asp', params);\n this.handleError(response?.data);\n }\n\n async deleteAccount(reason?: string): Promise {\n const params = { ...this.params, reason };\n type Response = {\n warning?: string,\n }\n const response = await this.client.post('/deleteAccount/default.asp', params);\n this.handleError(response?.data);\n }\n\n async login(username: string, password: string): Promise {\n const params = { username, password };\n type Response = {\n token?: string,\n warning?: string,\n }\n const response = await this.client.post('/login/default.asp', params);\n this.handleError(response?.data);\n this.handleToken(response?.data);\n }\n\n async logout(): Promise {\n const params = { ...this.params };\n type Response = {\n warning?: string,\n }\n const response = await this.client.post('/logout/default.asp', params);\n this.handleError(response?.data);\n }\n\n async processUpdateResponse(\n response: AxiosResponse,\n p?: { retryCount?: number, date?: string },\n ): Promise {\n //\n // handle smile == no updates\n if (response?.data?.smile) return { isFullUpdate: false };\n\n // handle full update needed\n const retryCount = p?.retryCount ?? 1;\n if (Number(response?.data?.warning) === ApiErrorCode.full_update_needed && retryCount > 0) {\n console.log('Forced full update');\n this.state.timestamp = undefined;\n this.state.unixTimestamp = undefined;\n return this.getUpdates(p?.date, retryCount - 1);\n }\n\n // handle warning\n this.handleError(response?.data);\n\n // handle warning\n const update = response?.data?.update;\n if (!update) throw Error('No update');\n update.isFullUpdate = update.isFullUpdate === true || String(update.isFullUpdate) === 'True';\n if (update.timeStamp) this.state.timestamp = update.timeStamp;\n if (update.unixTimeStamp) this.state.unixTimestamp = update.unixTimeStamp;\n return update;\n }\n\n async getUpdates(date?: string, retryCount?: number): Promise {\n const params = { ...this.params, singleReservationDate: date };\n const response = await this.client.post('/updates/default.asp', params);\n return this.processUpdateResponse(response, { retryCount, date });\n }\n\n async sendSingleEntity(entity: IApi, url: string): Promise {\n const params = { ...this.params, ...entity };\n const response = await this.client.post(url, params);\n // console.log('sendSingleEntity: ', url, params, response);\n return this.processUpdateResponse(response);\n }\n\n async sendReservation(reservation: IDTOReservation): Promise {\n return this.sendSingleEntity(reservation, '/reservations/default.asp');\n }\n\n async sendAccount(account: IDTOAccount): Promise {\n return this.sendSingleEntity(account, '/account/default.asp');\n }\n\n async sendAccountSettings(accountSettings: IDTOAccountSetting): Promise {\n return this.sendSingleEntity(accountSettings, '/accountSettings/default.asp');\n }\n\n async sendUser(user: IDTOUser): Promise {\n return this.sendSingleEntity(user, '/users/default.asp');\n }\n\n async sendDurationRule(rule: IDTODurationRule): Promise {\n return this.sendSingleEntity(rule, '/durationRules/default.asp');\n }\n\n async sendDateAndTime(dateAndTime: IDTODateAndTime): Promise {\n return this.sendSingleEntity(dateAndTime, '/availability/default.asp');\n }\n\n async sendDayNote(dayNote: IDTODayNote): Promise {\n return this.sendSingleEntity(dayNote, '/dayNotes/default.asp');\n }\n\n async sendListEntities(entities: IApi[], fname: string, url: string, extraParams?: object): Promise {\n const params = { ...this.params, ...extraParams, [fname]: entities };\n const response = await this.client.post(url, params);\n return this.processUpdateResponse(response);\n }\n\n async sendTabs(tabs: IDTOTab[]): Promise {\n return this.sendListEntities(tabs, 'tabs', '/tabs/default.asp');\n }\n\n async sendTabItems(tabId: number, tabItems: IDTOTabItem[]): Promise {\n return this.sendListEntities(tabItems, 'tabItems', '/tabItems/default.asp', { tabId });\n }\n\n async sendEmployees(employees: IDTOEmployee[]): Promise {\n return this.sendListEntities(employees, 'employees', '/employees/default.asp');\n }\n\n async sendTagNotes(tags: IDTOTagNote[]): Promise {\n return this.sendListEntities(tags, 'tagNotes', '/tagNotes/default.asp');\n }\n\n async sendLabels(labels: IDTOLabel[]): Promise {\n return this.sendListEntities(labels, 'labels', '/labels/default.asp');\n }\n\n async sendServices(services: IDTOService[]): Promise {\n return this.sendListEntities(services, 'services', '/services/default.asp');\n }\n\n // eslint-disable-next-line class-methods-use-this\n async sendOpeningHours(openingHours: IDTOOpeningHour[]): Promise {\n return this.sendListEntities(openingHours, 'openingHours', '/openingHours/default.asp');\n }\n\n async changePassword(username: string, password: string, newPassword: string): Promise {\n const params = {\n ...this.params, username, password, newPassword,\n };\n const response = await this.client.post('/password/default.asp', params);\n return this.processUpdateResponse(response);\n }\n\n async resetPassword(username: string): Promise {\n const params = {\n username, keyToOpen: 't3Jki5hGQ49mlhyOegvWsdewBaTzcBv8F5nvCsddJhKhYuIF',\n };\n const response = await this.client.post('/resetPassword/default.asp', params);\n return this.processUpdateResponse(response);\n }\n\n async search(query: string): Promise {\n const params = {\n ...this.params, q: query,\n };\n const response = await this.client.post('/search/default.asp', params);\n return this.processUpdateResponse(response);\n }\n\n async suggestTables(reservation: IDTOReservation): Promise {\n const {\n reservationId, tabId, partySize, dtBegin, dtEnd,\n } = reservation;\n const params = {\n ...this.params, reservationId, tabId, partySize, dtBegin, dtEnd,\n };\n type Response = {\n tabItems?: number[],\n warning?: string,\n }\n\n const response = await this.client.post('/tableSuggest/default.asp', params);\n this.handleError(response?.data);\n return response?.data.tabItems ?? [];\n }\n\n async sendFloorplan(params: IDTOFloorplan): Promise {\n const response = await this.client.post('/floorplan/default.asp', params);\n return this.processUpdateResponse(response);\n }\n\n async loadAllocations(tabId: number): Promise {\n const params = { ...this.params, tabId };\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data] };\n const response = await this.client.post('/allocations/default.asp', params, config);\n const allocationsResponse = AllocationsConvert.toAllocationsResponse(response?.data);\n\n // handle warning\n this.handleError(allocationsResponse);\n\n if (!allocationsResponse.update) return { allocations: [] };\n return allocationsResponse.update;\n }\n\n async sendAllocations(tabId: number, partySize: number, allocations: IDTOSendAllocation[]):\n Promise {\n const params = {\n ...this.params, allocations, tabId, partySize,\n };\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data] };\n const response = await this.client.post('/allocations/default.asp', params, config);\n const allocationsResponse = AllocationsConvert.toAllocationsResponse(response?.data);\n\n // handle warning\n this.handleError(allocationsResponse);\n\n if (!allocationsResponse.update) return { allocations: [] };\n return allocationsResponse.update;\n }\n\n // message center\n async loadMessageCenter(): Promise {\n const params = { ...this.params };\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data] };\n const response = await this.client.post('/messenger/default.asp', params, config);\n const messengerResponse = MessengerConvert.toMessangerResponse(response?.data);\n\n // handle warning\n this.handleError(messengerResponse);\n\n if (!messengerResponse.update) throw new ApiError(ApiErrorCode.no_updates);\n return messengerResponse.update;\n }\n\n async sendMessageRule(rule: IDTOMessageRule): Promise {\n const params = { ...this.params, ...rule };\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data] };\n const response = await this.client.post('/messageRules/default.asp', params, config);\n const messageRulesResponse = MessengerConvert.toMessageRulesResponse(response?.data);\n\n // handle warning\n this.handleError(messageRulesResponse);\n\n if (!messageRulesResponse.update) throw new ApiError(ApiErrorCode.no_updates);\n return messageRulesResponse.update;\n }\n\n // apps\n async installApp(app: IDTOApp): Promise {\n return this.sendSingleEntity(app, '/apps/default.asp');\n }\n\n // campaign filter\n async loadCampaignFilter(): Promise {\n const params = { ...this.params };\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data] };\n const response = await this.client.post('/campaignFilters/default.asp', params, config);\n const capaignFilterResponse = CampaignFilterConvert.toCampaignFilterResponse(response?.data);\n\n // handle warning\n this.handleError(capaignFilterResponse);\n\n if (!capaignFilterResponse.update) throw new ApiError(ApiErrorCode.no_updates);\n return capaignFilterResponse.update;\n }\n\n async sendCampaignFilter(filter: IDTOCampaignFilter): Promise {\n const params = { ...this.params, campaignFilters: { ...filter } };\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data] };\n const response = await this.client.post('/campaignFilters/default.asp', params, config);\n\n const capaignFilterResponse = CampaignFilterConvert.toCampaignFilterResponse(response?.data);\n\n // handle warning\n this.handleError(capaignFilterResponse);\n\n if (!capaignFilterResponse.update) throw new ApiError(ApiErrorCode.no_updates);\n return capaignFilterResponse.update;\n }\n\n // v2 api\n async getStats(tabId: number | undefined, dateIndexFrom: number, dateIndexTo: number): Promise {\n const params = {\n ...this.params, tabId, dateIndexFrom, dateIndexTo,\n };\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data] };\n const response = await this.clientV2.post('/dashboard', params, config);\n const guestsStats = DashboardConvert.toGuestStats(response?.data);\n\n return guestsStats;\n }\n\n // file upload\n async uploadFile(path: string, file: File, accessKey: string, onProgressFnc?: OnProgressFnc): Promise {\n const fileName = `${uuidv4()}/${file.name.replace(/\\s\\s+/g, ' ')}`;\n const apiFile = new File([file], fileName, { type: file.type, lastModified: file.lastModified });\n\n const formData = new FormData();\n formData.append('file', apiFile);\n\n const config: AxiosRequestConfig = {\n responseType: 'json',\n headers: { Authorization: `Bearer ${this.token}`, 'Content-Type': 'multipart/form-data' },\n onUploadProgress: onProgressFnc,\n };\n\n const response = await this.clientV2.post<{ imageUrl: string }>(path, formData, config);\n return response.data.imageUrl;\n }\n\n // image file upload\n async uploadImageFile(file: File, accessKey: string, onProgressFnc?: OnProgressFnc): Promise {\n return this.uploadFile('uploadImage', file, accessKey, onProgressFnc);\n }\n\n // attachment file upload\n async uploadAttachmentFile(file: File, accessKey: string, onProgressFnc?: OnProgressFnc): Promise {\n return this.uploadFile('uploadAttachment', file, accessKey, onProgressFnc);\n }\n\n // validate email\n async validateEmailAddress(emailAddress: string): Promise {\n const params = { emailAddress };\n const config: AxiosRequestConfig = {\n responseType: 'json',\n headers: { Authorization: `Bearer ${this.token}` },\n };\n const response = await this.clientV2.post<{ valid?: boolean }>('/validateEmailAddress', params, config);\n return response.data.valid ?? false;\n }\n\n // export\n async requestExport(exportType: string, exportPeriod: number, exportFormat: string): Promise {\n const params = {\n ...this.params,\n exportType,\n exportPeriod,\n exportFormat,\n };\n\n const config: AxiosRequestConfig = { responseType: 'blob', transformResponse: [(data) => data] };\n const response = await this.client.post('/export/default.asp', params, config);\n const type = response.headers['content-type'] ?? 'text/csv';\n const blob = new Blob([response.data], { type });\n return blob;\n }\n\n // billing\n async getBilling(p?: { createdAfter?: number, invoicesLimit?: number })\n : Promise<{\n products: Product[],\n customer: Customer | null,\n invoices: Invoice[],\n paymentMethods: PaymentMethod[],\n smsProduct: SMSProduct | null,\n country: Country | null,\n }> {\n const { createdAfter, invoicesLimit: limit } = { ...p };\n const responses = await axios.all([\n this.clientV2.post('/billing/getProducts', {}, this.clientConfigV2),\n this.clientV2.post('/billing/getAccount', {}, this.clientConfigV2),\n this.clientV2.post('/billing/getInvoices', { createdAfter, limit }, this.clientConfigV2),\n this.clientV2.post('/billing/getPaymentMethods', {}, this.clientConfigV2),\n this.clientV2.post('/billing/getSMSProduct', {}, this.clientConfigV2),\n this.clientV2.post('/billing/country', {}, this.clientConfigV2),\n ]);\n console.log('getBilling: ', responses);\n const products = BillingConvert.toProducts(responses[0].data);\n const customer = BillingConvert.toCustomer(responses[1].data);\n const invoices = BillingConvert.toInvoices(responses[2].data);\n const paymentMethods = BillingConvert.toPaymentMethods(responses[3].data);\n const smsProduct = BillingConvert.toSMSProduct(responses[4].data);\n let country: Country | null = BillingConvert.toCountry(responses[5].data);\n\n if (countries.find((c) => c.code === country?.countryCode) === undefined) {\n country = null;\n }\n\n return {\n products, customer, invoices, paymentMethods, smsProduct, country,\n };\n }\n\n async getProducts(): Promise {\n const params = {};\n const response = await this.clientV2.post('/billing/getProducts', params, this.clientConfigV2);\n const products = BillingConvert.toProducts(response?.data);\n return products;\n }\n\n async sendCustomerRequest(url: string, params?: any): Promise {\n const response = await this.clientV2.post(url, params, this.clientConfigV2);\n const customer = BillingConvert.toCustomer(response?.data);\n console.log('customer: ', customer);\n return customer;\n }\n\n async getCustomer(): Promise {\n return this.sendCustomerRequest('/billing/getAccount');\n }\n\n async createCustomer(customer: Customer): Promise {\n return this.sendCustomerRequest('/billing/createAccount', BillingConvert.customerToDto(customer));\n }\n\n async updateCustomer(customer: Customer): Promise {\n return this.sendCustomerRequest('/billing/updateAccount', BillingConvert.customerToDto(customer));\n }\n\n async createSubscription(p: {\n priceID?: string, paymentMethodTypes?: string[], idempotencyKey?: string, deactivatePaymentMethod?: boolean,\n }) : Promise {\n const {\n priceID, paymentMethodTypes, idempotencyKey, deactivatePaymentMethod,\n } = { ...p };\n\n return this.sendCustomerRequest('/billing/createSubscription', {\n priceID, paymentMethodTypes, idempotencyKey, deactivatePaymentMethod,\n });\n }\n\n async updateSubscription(p: {\n priceID?: string, paymentMethodTypes?: string[], idempotencyKey?: string,\n prorationDate?: number,\n }) : Promise {\n const {\n priceID, paymentMethodTypes, idempotencyKey, prorationDate,\n } = { ...p };\n\n return this.sendCustomerRequest('/billing/updateSubscription', {\n priceID, paymentMethodTypes, idempotencyKey, prorationDate,\n });\n }\n\n async cancelSubscription(): Promise {\n return this.sendCustomerRequest('/billing/cancelSubscription');\n }\n\n async deleteSubscription(): Promise {\n return this.sendCustomerRequest('/billing/deleteSubscription', {});\n }\n\n async getInvoices(p?: { createdAfter?: number, limit?: number }): Promise {\n const { createdAfter, limit } = { ...p };\n const response = await this.clientV2.post(\n '/billing/getInvoices',\n { createdAfter, limit },\n\n this.clientConfigV2,\n );\n const invoices = BillingConvert.toInvoices(response?.data);\n return invoices;\n }\n\n async previewSubscription(p: { priceID?: string, idempotencyKey?: string }): Promise {\n const { priceID } = { ...p };\n const response = await this.clientV2.post(\n '/billing/previewSubscriptionInvoice',\n { priceID },\n\n this.clientConfigV2,\n );\n const invoice = BillingConvert.toInvoice(response?.data);\n console.log('previewSubscription: ', invoice);\n return invoice;\n }\n\n async getPaymentMethod(paymentMethodID: string): Promise {\n const params = { paymentMethodID };\n const response = await this.clientV2.post('/billing/getPaymentMethod', params, this.clientConfigV2);\n const method = BillingConvert.toPaymentMethod(response?.data);\n return method;\n }\n\n async getPaymentMethods(): Promise {\n const params = {};\n const response = await this.clientV2.post('/billing/getPaymentMethods', params, this.clientConfigV2);\n const methods = BillingConvert.toPaymentMethods(response?.data);\n return methods;\n }\n\n async addPaymentMethod(): Promise {\n const params = {};\n const response = await this.clientV2.post('/billing/addPaymentMethod', params, this.clientConfigV2);\n const setupIntent = BillingConvert.toSetupIntent(response?.data);\n return setupIntent;\n }\n\n async preparePayment(paymentIntentID: string): Promise {\n const params = { paymentIntentID };\n const response = await this.clientV2.post('/billing/preparePayment', params, this.clientConfigV2);\n const paymentIntent = BillingConvert.toPaymentIntent(response?.data);\n return paymentIntent;\n }\n\n async deletePaymentMethod(paymentMethodID: string): Promise {\n const params = { paymentMethodID };\n const response = await this.clientV2.post('/billing/deletePaymentMethod', params, this.clientConfigV2);\n }\n\n async activatePaymentMethod(paymentMethodID?: string): Promise {\n return this.sendCustomerRequest('/billing/activatePaymentMethod', { paymentMethodID });\n }\n\n async finishPaymentMethod(p: { intentID: string, activate?: boolean }): Promise {\n const { intentID, activate } = { ...p };\n const response = await this.clientV2.post(\n '/billing/finishPaymentMethod',\n { intentID, activate },\n this.clientConfigV2,\n );\n const intent = BillingConvert.toSetupIntent(response?.data);\n return intent;\n }\n\n // country\n async getCountry(timeout?: number): Promise {\n const config: AxiosRequestConfig = { responseType: 'text', transformResponse: [(data) => data], headers: {} };\n if (timeout) config.timeout = timeout;\n\n const response = await this.clientV2.post('/billing/country', {}, config);\n const country = BillingConvert.toCountry(response?.data);\n\n if (countries.find((c) => c.code === country.countryCode) === undefined) {\n throw new Error(`Unsupported country code ${country.countryCode}`);\n }\n\n return country;\n }\n\n async getCountryCode(): Promise {\n const country = await this.getCountry();\n return country.countryCode || null;\n }\n\n // payments\n async createPaymentInvoice(p: { priceIDs: string[] }): Promise {\n const { priceIDs } = { ...p };\n const response = await this.clientV2.post(\n '/billing/createPaymentInvoice',\n { priceIDs },\n this.clientConfigV2,\n );\n const invoice = BillingConvert.toInvoice(response?.data);\n return invoice;\n }\n\n async finalizePaymentInvoice(\n p: { invoiceID: string, paymentMethodTypes?: string[], confirm?: boolean },\n ): Promise {\n const { invoiceID, paymentMethodTypes, confirm } = { ...p };\n const response = await this.clientV2.post(\n '/billing/finalizePaymentInvoice',\n { invoiceID, paymentMethodTypes, confirm },\n this.clientConfigV2,\n );\n const invoice = BillingConvert.toInvoice(response?.data);\n return invoice;\n }\n\n async finishPaymentInvoice(p: { invoiceID: string, activate?: boolean }): Promise {\n const { invoiceID, activate } = { ...p };\n const response = await this.clientV2.post(\n '/billing/finishPaymentInvoice',\n { invoiceID, activate },\n this.clientConfigV2,\n );\n const invoice = BillingConvert.toInvoice(response?.data);\n return invoice;\n }\n\n async deletePaymentInvoice(p: { invoiceID: string }): Promise {\n const { invoiceID } = { ...p };\n const response = await this.clientV2.post(\n '/billing/deletePaymentInvoice',\n { invoiceID },\n this.clientConfigV2,\n );\n const invoice = BillingConvert.toInvoice(response?.data);\n return invoice;\n }\n\n async getInvoice(p: { invoiceID: string }): Promise {\n const { invoiceID } = { ...p };\n const response = await this.clientV2.post('/billing/getInvoice', { invoiceID }, this.clientConfigV2);\n const invoice = BillingConvert.toInvoice(response?.data);\n return invoice;\n }\n\n // sms info\n async getSMSProduct(): Promise {\n const response = await this.clientV2.post('/billing/getSMSProduct', {}, this.clientConfigV2);\n const smsProduct = BillingConvert.toSMSProduct(response?.data);\n console.log('smsProduct: ', smsProduct);\n return smsProduct;\n }\n\n async createSMSProduct(params: SMSProduct): Promise {\n const response = await this.clientV2.post('/billing/createSMSProduct', params, this.clientConfigV2);\n const smsProduct = BillingConvert.toSMSProduct(response?.data);\n console.log('smsProduct: ', smsProduct);\n return smsProduct;\n }\n\n async updateSMSProduct(params: SMSProduct): Promise {\n const response = await this.clientV2.post('/billing/updateSMSProduct', params, this.clientConfigV2);\n const smsProduct = BillingConvert.toSMSProduct(response?.data);\n console.log('smsProduct: ', smsProduct);\n return smsProduct;\n }\n\n // billing connect\n async sendConnectAccountRequest(url: string, params?: any): Promise {\n const response = await this.clientV2.post(url, params, this.clientConfigV2);\n const account = BillingConnectConvert.toAccount(response?.data);\n console.log('account: ', account);\n return account;\n }\n\n async getConnectAccount(): Promise {\n return this.sendConnectAccountRequest('/billing-connect/getAccount');\n }\n\n async createConnectAccount(account: ConnectAccount): Promise {\n return this.sendConnectAccountRequest(\n '/billing-connect/createAccount',\n BillingConnectConvert.accountToDto(account),\n );\n }\n}\n\nexport default new HttpClient();\n","import i18n from '@/plugins/i18n';\nimport { MenuItem } from '@/util/menu';\nimport Vue, { Component } from 'vue';\n\nexport enum GstplnAppCategory {\n Extensions = 'extensions',\n BookingPartners = 'booking_partners',\n Integrations = 'integrations',\n Payments = 'payments',\n}\nexport default abstract class GstplnApp {\n vue: Vue;\n\n id: string;\n\n url: string;\n\n icon?: string;\n\n installed: boolean = false;\n\n hasMenuItem: boolean = false;\n\n categories: string[] = [];\n\n allowedCountries: string[] = [];\n\n disallowedCountries: string[] = [];\n\n private configComponentImportFnc?: ()=>any;\n\n appConfigRoute?: string;\n\n private configComponentLoaded: boolean = false;\n\n configBeforeInstall: boolean = true;\n\n routeConfig?: {title?: string, titleKey?: string, route: string, f: ()=>any}[];\n\n private routeComponentsLoaded: boolean = false;\n\n constructor(\n vue: Vue,\n id: string,\n p?: {\n hasMenuItem?: boolean,\n subitems?: MenuItem[],\n configComponentImportFnc?: ()=>any, configBeforeInstall?: boolean,\n routeConfig?: {title?:string, titleKey?: string, route: string, f: ()=>any}[],\n appConfigRoute?: string,\n categories?: string[], allowedCountries?: string[], disallowedCountries?: string[],\n },\n ) {\n this.vue = vue;\n this.id = id;\n this.url = `/apps/${this.id.replace(/^(app\\.)/, '')}`;\n\n this.hasMenuItem = p?.hasMenuItem ?? false;\n\n this.appConfigRoute = p?.appConfigRoute;\n this.configComponentImportFnc = p?.configComponentImportFnc ?? undefined;\n this.configBeforeInstall = p?.configBeforeInstall ?? true;\n this.routeConfig = p?.routeConfig ?? undefined;\n\n this.categories = p?.categories ?? [];\n this.allowedCountries = p?.allowedCountries ?? [];\n this.disallowedCountries = p?.disallowedCountries ?? [];\n }\n\n install() {\n if (this.routeConfig) this.installRoute(this.vue);\n this.loadConfigComponent();\n this.loadRouteComponent();\n this.installed = true;\n }\n\n uninstall() {\n if (this.routeConfig) this.uninstallRoute(this.vue);\n this.installed = false;\n }\n\n protected installRoute(vue: Vue) {\n this.routeConfig?.forEach((rc) => {\n const titleKey = rc.titleKey ?? `${this.id}.title`;\n vue.$router.addRoute(\n {\n path: rc.route.startsWith('/') ? rc.route : `${this.url}/${rc.route}`,\n name: `app-${this.id}-${rc.route}`,\n component: Vue.component('AppContent', {\n data() { return { }; },\n render: (h, _) => h(`${this.id}.${rc.route}`),\n }),\n meta: {\n title: i18n.t(titleKey),\n titleKey,\n },\n },\n );\n });\n }\n\n get apiName(): string {\n return this.id;\n }\n\n protected uninstallRoute(vue: Vue) {\n this.routeConfig?.forEach((rc) => {\n vue.$router.addRoute(\n {\n path: `${this.url}/${rc.route}`,\n name: `app-${this.id}-${rc.route}`,\n redirect: '/apps/manage',\n },\n );\n });\n }\n\n description(): string {\n return i18n.tc(`${this.id}.description`);\n }\n\n title(): string {\n return i18n.tc(`${this.id}.title`);\n }\n\n loadConfigComponent() {\n if (!this.configComponentImportFnc || this.configComponentLoaded) return;\n Vue.component(`${this.id}.cfg`, this.configComponentImportFnc);\n this.configComponentLoaded = true;\n }\n\n configComponent(): string | undefined {\n return this.configComponentImportFnc ? `${this.id}.cfg` : undefined;\n }\n\n loadRouteComponent() {\n if (!this.routeConfig || this.routeComponentsLoaded) return;\n this.routeConfig.forEach((rc) => {\n Vue.component(`${this.id}.${rc.route}`, rc.f);\n });\n this.routeComponentsLoaded = true;\n }\n}\n","import Vue, { defineComponent } from 'vue';\nimport vuetify from '@/plugins/vuetify';\nimport i18n from '@/plugins/i18n';\nimport { TranslateResult } from 'vue-i18n';\nimport ConfirmationDialog from './ConfirmationDialog.vue';\n\ninterface DialogAction {\n title?: string | TranslateResult\n action?: () => void\n color?: string\n}\n\nexport default function showConfirmationDialog(\n title: string | TranslateResult | undefined = undefined,\n message: string | TranslateResult = '',\n confirmAction: DialogAction | undefined = undefined,\n cancelAction: DialogAction | undefined = undefined,\n) {\n const DlgConst = defineComponent(ConfirmationDialog);\n const dialog = new DlgConst({\n vuetify,\n propsData: {\n visible: true,\n title: title ?? i18n.tc('title.confirmation'),\n message,\n confirmTitle: confirmAction?.title ?? i18n.tc('button.ok'),\n confirmColor: confirmAction?.color,\n cancelTitle: cancelAction?.title ?? i18n.tc('button.cancel'),\n hideCancel: cancelAction === undefined,\n },\n });\n\n dialog.$on('close', () => {\n dialog.$destroy();\n dialog.$el.remove();\n });\n\n if (confirmAction && confirmAction.action) {\n dialog.$on('confirm', confirmAction.action);\n }\n\n if (cancelAction && cancelAction.action) {\n dialog.$on('cancel', cancelAction.action);\n }\n\n const mountEl = document.createElement('div');\n document.body.appendChild(mountEl);\n dialog.$mount(mountEl);\n}\n","import { ReservationStatus } from '@/model/Reservation';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function colorForStatus(s: ReservationStatus): string {\n switch (s) {\n case ReservationStatus.Planned: return 'grey lighten-1';\n case ReservationStatus.Confirmed: return 'blue';\n case ReservationStatus.CheckedIn: return 'orange';\n case ReservationStatus.CheckedOut: return 'grey-50';\n case ReservationStatus.Seated: return 'green';\n case ReservationStatus.NonConfirmed: return 'purple';\n case ReservationStatus.Cancelled: return 'red';\n case ReservationStatus.Spam: return 'red';\n case ReservationStatus.Deleted: return 'red';\n case ReservationStatus.NoShow: return 'red';\n case ReservationStatus.WaitingList: return 'purple darken-4';\n default: return 'grey lighten-1';\n }\n}\n\nexport const fullSwatchPalette = [\n ['#142266', '#1f3399', '#2944cc', '#3355ff', '#5c77ff', '#8599ff'],\n ['#660011', '#99001a', '#cc0022', '#ff002b', '#ff3355', '#ff8095'],\n ['#4c122c', '#992559', '#cc3176', '#FF3D94', '#ff77b4', '#ffb1d4'],\n ['#440d3e', '#891b7d', '#b624a6', '#e42dd0', '#ec6cde', '#f4abec'],\n ['#4c271d', '#994e3b', '#cc684e', '#ff8262', '#ffa891', '#ffcdc0'],\n ['#4c3a17', '#99742f', '#cc9b3e', '#ffc24e', '#ffd483', '#ffe7b8'],\n ['#3b4c00', '#638000', '#8bb300', '#c6ff00', '#ddff66', '#eeffb3'],\n ['#003121', '#006143', '#008259', '#00a26f', '#33b58c', '#80d1b7'],\n ['#0c3a3d', '#16666b', '#1f9199', '#359ca3', '#62b2b8', '#8fc8cc'],\n];\n","import { getCurrentInstance } from 'vue';\n\nexport function useLocalized() {\n const { proxy } = getCurrentInstance()!;\n return proxy.$localized;\n}\n\nexport function useVuetify() {\n const { proxy } = getCurrentInstance()!;\n return proxy.$vuetify;\n}\nexport function useToast() {\n const { proxy } = getCurrentInstance()!;\n return proxy.$toast;\n}\n\nexport function useAll() {\n const $localized = useLocalized();\n const $vuetify = useVuetify();\n const $toast = useToast();\n return {\n $vuetify, $localized, $toast,\n };\n}\n","export class BoundingBox {\n x1: number;\n\n y1: number;\n\n x2: number;\n\n y2: number;\n\n constructor(x: number, y: number, width: number, height: number) {\n this.x1 = x - (width / 2);\n this.y1 = y - (height / 2);\n this.x2 = x + (width / 2);\n this.y2 = y + (height / 2);\n }\n\n overlaps(bbox: BoundingBox): boolean {\n if (this.x1 >= bbox.x2 || bbox.x1 >= this.x2) return false;\n if (this.y1 >= bbox.y2 || bbox.y1 >= this.y2) return false;\n return true;\n }\n}\n\nexport interface ITableSize {\n h: number,\n w: number,\n}\n\nexport interface ITableSeatInfo {\n origin?: number\n rotation?: number,\n isOverflow?: boolean,\n occupied: boolean,\n}\n\nexport interface ITableSeats {\n n?: ITableSeatInfo[],\n s?: ITableSeatInfo[],\n e?: ITableSeatInfo[],\n w?: ITableSeatInfo[],\n}\n\nexport enum TableSeatType {\n HEADSEAT = 'HEADSEAT',\n SQUARED = 'SQUARED',\n ROUNDED = 'ROUNDED'\n}\n","import { ApiError } from '@/api/api-error';\nimport { RpcError, ClientReadableStream, StatusCode } from 'grpc-web';\n\nexport type FromGrpcResponseFnc = (resp: RESP, params?: any) => M;\nexport type OnErrorFnc = (error: ApiError) => void;\nexport type OnSingleDataFnc = (data: M) => void;\nexport type OnMultipleDataFnc = (data: M[]) => void;\n\nexport type UnaryCallbackFnc = (error: RpcError, resp: RESP) => void;\n\nexport type ResolveFnc = (value: M) => void;\nexport type RejectFnc = (reason?: any) => void;\n\nconst MIN_DATA_COUNT = 50;\nconst MAX_DATA_COUNT = 1000;\n\nexport async function grpcStreamOp(\n ModelType: { fromGrpcResponse: FromGrpcResponseFnc },\n service: any,\n method: string,\n metadata: any,\n req: any,\n fromGrpcRespParams: any,\n onData: OnMultipleDataFnc,\n onError: OnErrorFnc,\n extraParams?: { waitForEnd?: boolean, maxDataCount?: number },\n) {\n let dataCount = MIN_DATA_COUNT;\n if (extraParams?.maxDataCount && dataCount < extraParams.maxDataCount) dataCount = extraParams.maxDataCount;\n\n let resolved = false;\n let resolve: (() => void);\n let reject: ((reason?: any) => void);\n const promise = new Promise((res, rej) => { resolve = res; reject = rej; });\n\n let data: M[] = [];\n\n const complete = (reason?: any) => {\n if (resolved) return;\n if (reason) reject(reason); else resolve();\n resolved = true;\n };\n\n const handleData = (response: RESP) => {\n try {\n data.push(ModelType.fromGrpcResponse(response, fromGrpcRespParams));\n if (data.length < dataCount) return;\n\n dataCount *= 2;\n if (extraParams?.maxDataCount) {\n if (dataCount > extraParams.maxDataCount) dataCount = extraParams.maxDataCount;\n } else if (dataCount > MAX_DATA_COUNT) dataCount = MAX_DATA_COUNT;\n onData(data);\n } catch (error) {\n const apiError = ApiError.fromError(error);\n onError(apiError);\n complete(apiError);\n }\n data = [];\n\n if (!extraParams?.waitForEnd) complete();\n };\n\n const handleError = (error: RpcError) => {\n const apiError = ApiError.fromError(error);\n onError(apiError);\n complete(apiError);\n };\n\n const handleEnd = () => {\n try {\n if (data.length > 0) onData(data);\n onData([]);\n } catch (error) {\n const apiError = ApiError.fromError(error);\n onError(apiError);\n complete(apiError);\n }\n complete();\n };\n\n const stream = service[method](req, metadata) as ClientReadableStream;\n\n stream.on('data', (response) => {\n // console.log('stream data: ', response);\n handleData(response);\n });\n stream.on('metadata', (meta) => {\n console.log('stream metadata: ', meta);\n });\n stream.on('status', (status) => {\n console.log('stream status: ', status);\n });\n stream.on('end', () => {\n console.log('stream end');\n handleEnd();\n });\n stream.on('error', (error) => {\n console.log('stream error: ', error);\n handleError(error);\n stream.cancel();\n });\n\n return promise;\n}\n\n// read all data from sream op then return them all\nexport async function grpcStreamOpAll(\n ModelType: { fromGrpcResponse: FromGrpcResponseFnc },\n service: any,\n method: string,\n metadata: any,\n req: any,\n fromGrpcRespParams?: any,\n) {\n const allData: M[] = [];\n const onData = (data: M[]) => { allData.push(...data); };\n const onError = () => {};\n\n await grpcStreamOp(\n ModelType,\n service,\n method,\n metadata,\n req,\n fromGrpcRespParams,\n onData,\n onError,\n { waitForEnd: true },\n );\n return allData;\n}\n\nexport async function grpcUnaryOp(\n ModelType: { fromGrpcResponse: FromGrpcResponseFnc },\n servis: any,\n method: string,\n metadata: any,\n req: any,\n fromGrpcRespParams: any,\n onData?: OnSingleDataFnc,\n onError?: OnErrorFnc,\n) {\n let resolve: ((e: M) => void);\n let reject: ((reason?: any) => void);\n const promise = new Promise((res, rej) => { resolve = res; reject = rej; });\n\n const unaryCallback = (error: RpcError, resp: RESP) => {\n if (error && error.code !== StatusCode.OK) {\n const apiError = ApiError.fromError(error);\n if (onError) onError(apiError);\n reject(apiError);\n } else {\n const e = ModelType.fromGrpcResponse(resp, fromGrpcRespParams);\n if (onData) onData(e);\n resolve(e);\n }\n };\n\n const stream = servis[method](req, metadata, unaryCallback) as ClientReadableStream;\n\n stream.on('data', (response) => {\n console.log('stream data: ', response);\n });\n stream.on('metadata', (meta) => {\n console.log('stream metadata: ', meta);\n });\n stream.on('status', (status) => {\n console.log('stream status: ', status);\n });\n stream.on('end', () => {\n console.log('stream end');\n });\n stream.on('error', (error) => {\n console.log('stream error: ', error);\n });\n\n return promise;\n}\n\nexport async function grpcUnaryOpEx(\n transformFnc: ((resp: any, params?: any) => any) | null,\n servis: any,\n method: string,\n metadata: any,\n req: any,\n fncParams: any,\n onData?: OnSingleDataFnc,\n onError?: OnErrorFnc,\n) {\n let resolve: ((e: any) => void);\n let reject: ((reason?: any) => void);\n const promise = new Promise((res, rej) => { resolve = res; reject = rej; });\n\n const unaryCallback = (error: RpcError, resp: any) => {\n if (error && error.code !== StatusCode.OK) {\n const apiError = ApiError.fromError(error);\n if (onError) onError(apiError);\n reject(apiError);\n } else {\n const e = resp && transformFnc ? transformFnc(resp, fncParams) : resp;\n if (onData) onData(e);\n resolve(e);\n }\n };\n\n const stream = servis[method](req, metadata, unaryCallback) as ClientReadableStream;\n\n stream.on('data', (response) => {\n console.log('stream data: ', response);\n });\n stream.on('metadata', (meta) => {\n console.log('stream metadata: ', meta);\n });\n stream.on('status', (status) => {\n console.log('stream status: ', status);\n });\n stream.on('end', () => {\n console.log('stream end');\n });\n stream.on('error', (error) => {\n console.log('stream error: ', error);\n });\n\n return promise;\n}\n","import * as pbm from '@/grpc-pb/campaign_pb';\nimport * as pbs from '@/grpc-pb/settings_service_pb';\n\nexport default class Campaign {\n id: number = 0;\n\n subdomain?: string;\n\n constructor(o?: { id?: number, subdomain?: string }) {\n this.id = o?.id ?? 0;\n this.subdomain = o?.subdomain;\n }\n\n static fromGrpcResponse(r: pbs.CampaignResponse): Campaign {\n const e = r.getCampaign();\n return Campaign.fromGrpcModel(e);\n }\n\n static fromGrpcModel(o?: pbm.Campaign): Campaign {\n const e = new Campaign();\n\n e.id = o?.getId() ?? 0;\n e.subdomain = o?.getSubdomain() ?? undefined;\n\n return e;\n }\n\n toGrpcModel(): pbm.Campaign {\n const o = new pbm.Campaign();\n\n o.setId(this.id);\n if (this.subdomain) o.setSubdomain(this.subdomain);\n\n return o;\n }\n}\n","import * as pbm from '@/grpc-pb/app_pb';\nimport * as pbs from '@/grpc-pb/apps_service_pb';\n\nimport ApiApp from '@/model/AppStoreApp';\n\nexport default class App extends ApiApp {\n params?: string;\n\n static fromGrpcResponse(r: pbs.AppResponse): App {\n const a = r.getApp();\n return App.fromGrpcModel(a);\n }\n\n static fromGrpcModel(o?: pbm.App): App {\n const a = new App();\n\n a.id = o?.getId() ?? 0;\n a.name = o?.getName() ?? '';\n a.isInstalled = o?.getIsinstalled() ?? false;\n a.params = o?.getParams() || undefined;\n\n return a;\n }\n\n toGrpcModel(): pbm.App {\n const o = new pbm.App();\n\n o.setId(this.id);\n if (this.name) o.setName(this.name);\n if (this.isInstalled) o.setIsinstalled(this.isInstalled);\n if (this.params) o.setParams(this.params);\n\n return o;\n }\n}\n","import * as pbs from '@/grpc-pb/settings_service_pb';\nimport * as pbm from '@/grpc-pb/currency_pb';\n\nexport default class Currency {\n id: number = 0;\n\n code: string = 'N/A';\n\n hasDecimals: boolean = false;\n\n constructor(o?: { id?: number, code?: string, hasDecimals?: boolean }) {\n this.id = o?.id ?? 0;\n this.code = o?.code ?? 'N/A';\n this.hasDecimals = o?.hasDecimals ?? false;\n }\n\n static fromGrpcResponse(r: pbs.CurrencyResponse): Currency {\n const e = r.getCurrency();\n return Currency.fromGrpcModel(e);\n }\n\n static fromGrpcModel(o?: pbm.Currency): Currency {\n const e = new Currency();\n\n e.id = o?.getId() ?? 0;\n e.code = o?.getCode() ?? 'N/A';\n e.hasDecimals = o?.getHasdecimals() ?? false;\n\n return e;\n }\n\n toGrpcModel(): pbm.Currency {\n const o = new pbm.Currency();\n\n o.setId(this.id);\n o.setCode(this.code);\n o.setHasdecimals(this.hasDecimals);\n\n return o;\n }\n\n get value() { return this.id; }\n\n get text() { return this.code; }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/giftcard_pb';\n\nexport default class GiftcardRecipient {\n name?: string;\n\n email?: string;\n\n dtDelivery?: Date;\n\n giftcardMessage?: string;\n\n static fromGrpcModel(o?: pbm.GiftcardRecipient, m?: any): GiftcardRecipient {\n const p = new GiftcardRecipient();\n\n p.email = o?.getEmail();\n p.name = o?.getName();\n p.dtDelivery = o?.getDtDelivery() ? new Date(o.getDtDelivery() * 1000) : undefined;\n p.giftcardMessage = o?.getGiftcardMessage();\n\n return p;\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/giftcard_pb';\nimport * as pbs from '@/grpc-pb/giftcards_service_pb';\nimport { dateFromDateString, dateFromDateTimeString, unixFromDate } from '@/services/time-utils';\nimport { ContactMapping } from '@/model/Contact';\nimport Currency from './currency';\nimport GiftcardTransaction, { GiftcardTransactionMapping } from './giftcard-transaction';\nimport Contact from './contact';\nimport GiftcardRecipient from './giftcard-recipient';\n\nexport interface GiftcardMapping extends GiftcardTransactionMapping, ContactMapping {\n}\n\nexport default class Giftcard {\n id: number = 0;\n\n title?: string;\n\n description?: string;\n\n backgroundImageUrl?: string;\n\n serviceId?: number = 0;\n\n locale?: string;\n\n balance: number = 0;\n\n currency: string = '';\n\n status: string = '';\n\n code: string = '';\n\n color?: string;\n\n dtCreate?: Date;\n\n dtUpdate?: Date;\n\n dtExpiry?: Date;\n\n price?: number;\n\n showLogo?: boolean;\n\n contact?: Contact;\n\n recipient?: GiftcardRecipient;\n\n transactions: GiftcardTransaction[] = [];\n\n isExpired?: boolean;\n\n issuedBy?: string;\n\n issuedByAccountId?: number;\n\n issuedByAccountName?: string;\n\n static fromGrpcResponse(r: pbs.GiftcardsGiftcardResponse, m?: GiftcardMapping): Giftcard {\n const o = r.getGiftcard();\n return Giftcard.fromGrpcModel(o, m);\n }\n\n static fromGrpcModel(o?: pbm.Giftcard, m?: GiftcardMapping): Giftcard {\n const p = new Giftcard();\n\n p.id = o?.getId() ?? 0;\n p.title = o?.getTitle();\n p.description = o?.getDescription();\n p.backgroundImageUrl = o?.getBackgroundImageUrl();\n p.serviceId = o?.getServiceId();\n p.locale = o?.getLocale();\n p.balance = o?.getBalance() ?? 0;\n p.currency = o?.getCurrency() ?? '';\n p.status = o?.getStatus() ?? '';\n p.code = o?.getCode() ?? '';\n p.color = o?.getColor();\n p.dtCreate = o?.getDtCreate() ? new Date(o.getDtCreate() * 1000) : undefined;\n p.dtUpdate = o?.getDtUpdate() ? new Date(o.getDtUpdate() * 1000) : undefined;\n // p.dtExpiry = o?.getDtExpiry() ? new Date(o.getDtExpiry() * 1000) : undefined;\n p.price = o?.getPrice();\n p.showLogo = o?.getShowLogo();\n\n p.recipient = o?.getRecipient() ? GiftcardRecipient.fromGrpcModel(o?.getRecipient(), m) : undefined;\n p.contact = o?.getContact() ? Contact.fromGrpcModel(o?.getContact(), m) : undefined;\n p.transactions = (o?.getTransactionsList() ?? []).map((t) => GiftcardTransaction.fromGrpcModel(t, m));\n\n p.isExpired = o?.getIsExpired();\n p.dtExpiry = dateFromDateString(o?.getDtExpiryMil()) ?? undefined;\n\n p.issuedByAccountId = o?.getIssuedByAccountId();\n p.issuedByAccountName = o?.getIssuedByAccountName();\n\n return p;\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\nimport * as pbcm from '@/grpc-pb/contact_manager_service_pb';\nimport * as pbcms from '@/grpc-pb/contact_manager_service_grpc_web_pb';\nimport * as pbd from '@/grpc-pb/dashboard_service_pb';\nimport * as pbds from '@/grpc-pb/dashboard_service_grpc_web_pb';\nimport * as pbr from '@/grpc-pb/reports_service_pb';\nimport * as pbrs from '@/grpc-pb/reports_service_grpc_web_pb';\nimport * as pbs from '@/grpc-pb/settings_service_pb';\nimport * as pbss from '@/grpc-pb/settings_service_grpc_web_pb';\nimport * as pbh from '@/grpc-pb/history_service_pb';\nimport * as pbhs from '@/grpc-pb/history_service_grpc_web_pb';\nimport * as pbm from '@/grpc-pb/message_service_pb';\nimport * as pbms from '@/grpc-pb/message_service_grpc_web_pb';\nimport * as pba from '@/grpc-pb/apps_service_pb';\nimport * as pbas from '@/grpc-pb/apps_service_grpc_web_pb';\nimport * as pbsm from '@/grpc-pb/service_manager_service_pb';\nimport * as pbsms from '@/grpc-pb/service_manager_service_grpc_web_pb';\nimport * as pbgc from '@/grpc-pb/giftcards_service_pb';\nimport * as pbgcs from '@/grpc-pb/giftcards_service_grpc_web_pb';\nimport * as pbfb from '@/grpc-pb/feedback_service_pb';\nimport * as pbfbs from '@/grpc-pb/feedback_service_grpc_web_pb';\nimport * as pbmcm from '@/grpc-pb/marketing_campaign_manager_service_pb';\nimport * as pbmcms from '@/grpc-pb/marketing_campaign_manager_service_grpc_web_pb';\nimport * as pbht from '@/grpc-pb/html_template_service_pb';\nimport * as pbhts from '@/grpc-pb/html_template_service_grpc_web_pb';\n\nimport { EmptyRequest } from '@/grpc-pb/empty_pb';\n\nimport {\n grpcStreamOp, grpcStreamOpAll, grpcUnaryOp, grpcUnaryOpEx, OnErrorFnc, OnMultipleDataFnc,\n} from '@/services/grpc-client-utils';\nimport Contact from '@/grpc-api/model/contact';\nimport Employee from '@/grpc-api/model/employee';\nimport { ContactMapping } from '@/model/Contact';\nimport ContactFilter from '@/grpc-api/model/contact-filter';\nimport HtmlTemplate from '@/grpc-api/model/html-template';\nimport DashboardAvailability from '@/grpc-api/model/dashboard-availability';\nimport Campaign from '@/grpc-api/model/campaign';\nimport Message from '@/grpc-api/model/message';\nimport { ReorderEntity, ReorderRequest } from '@/grpc-pb/reorder_pb';\nimport { ReservationMapping } from '@/model/Reservation';\nimport { unixFromDate } from '@/services/time-utils';\nimport Reservation from '@/grpc-api/model/reservation';\nimport App from '@/grpc-api/model/app';\nimport ReservationService, { ReservationServiceMapping } from '@/grpc-api/model/reservation-service';\nimport Currency from '@/grpc-api/model/currency';\nimport GiftcardProduct from '@/grpc-api/model/giftcard-product';\nimport GiftcardTransaction, { GiftcardTransactionListParams } from '@/grpc-api/model/giftcard-transaction';\nimport Giftcard, { GiftcardMapping } from '@/grpc-api/model/giftcard';\nimport Feedback, { FeedbackMapping } from '@/grpc-api/model/feedback';\nimport FeedbackSettings, { FeedbackSettingsMapping } from '@/grpc-api/model/feedback-settings';\nimport MarketingCampaign, { MarketingCampaignListParams, MarketingCampaignMapping } from '@/grpc-api/model/marketing-campaign';\nimport MarketingCampaignSettings from '@/grpc-api/model/marketing-campaign-settings';\n\nconst baseURL = process.env.VUE_APP_ENDPOINT_GRPC!;\n\nexport interface IGrpcClientState {\n token?: string;\n}\n\nclass GrpcClient {\n state: IGrpcClientState = {};\n\n contactService = new pbcms.ContactServiceClient(baseURL);\n\n contactFilterService = new pbcms.ContactFilterServiceClient(baseURL);\n\n contactManagerService = new pbcms.ContactManagerServiceClient(baseURL);\n\n dashboardService = new pbds.DashboardServiceClient(baseURL);\n\n reportsService = new pbrs.ReportsServiceClient(baseURL);\n\n settingsService = new pbss.SettingsServiceClient(baseURL);\n\n historyService = new pbhs.HistoryServiceClient(baseURL);\n\n messageService = new pbms.MessageServiceClient(baseURL);\n\n appsService = new pbas.AppsServiceClient(baseURL);\n\n serviceManagerService = new pbsms.ServiceManagerServiceClient(baseURL);\n\n giftcardsService = new pbgcs.GiftcardsServiceClient(baseURL);\n\n feedbackService = new pbfbs.FeedbackServiceClient(baseURL);\n\n marketingCampaignManagerService = new pbmcms.MarketingCampaignManagerServiceClient(baseURL);\n\n htmlTemplateService = new pbhts.HtmlTemplateServiceClient(baseURL);\n\n get metadata() {\n return ({\n authorization: `Bearer ${this.state.token}`,\n // deadline: `${Date.now() + 10000}`,\n });\n }\n\n // Contact\n async listContacts(onData: OnMultipleDataFnc, onError: OnErrorFnc, m: ContactMapping) {\n const req = new pbcm.ContactListRequest();\n return grpcStreamOp(Contact, this.contactService, 'list', this.metadata, req, m, onData, onError);\n }\n\n async createContact(c: Contact, e: Employee|undefined, m: ContactMapping) {\n const req = new pbcm.ContactRequest(); req.setContact(c.toGrpcModel()); if (e) req.setEmployee(e.toGrpcModel());\n return grpcUnaryOp(Contact, this.contactService, 'create', this.metadata, req, m);\n }\n\n async updateContact(c: Contact, e: Employee|undefined, m: ContactMapping) {\n const req = new pbcm.ContactRequest(); req.setContact(c.toGrpcModel()); if (e) req.setEmployee(e.toGrpcModel());\n return grpcUnaryOp(Contact, this.contactService, 'update', this.metadata, req, m);\n }\n\n // ContactFilter\n async createContactFilter(cf: ContactFilter, m = undefined) {\n const req = new pbcm.ContactFilterRequest(); req.setContactfilter(cf.toGrpcModel());\n return grpcUnaryOp(ContactFilter, this.contactFilterService, 'create', this.metadata, req, m);\n }\n\n async getContactFilter(cf: ContactFilter, m = undefined) {\n const req = new pbcm.ContactFilterIdRequest(); req.setId(cf.id);\n return grpcUnaryOp(ContactFilter, this.contactFilterService, 'get', this.metadata, req, m);\n }\n\n async updateContactFilter(cf: ContactFilter, m = undefined) {\n const req = new pbcm.ContactFilterRequest(); req.setContactfilter(cf.toGrpcModel());\n return grpcUnaryOp(ContactFilter, this.contactFilterService, 'update', this.metadata, req, m);\n }\n\n async deleteContactFilter(cf: ContactFilter, m = undefined) {\n const req = new pbcm.ContactFilterIdRequest(); req.setId(cf.id);\n return grpcUnaryOp(ContactFilter, this.contactFilterService, 'delete', this.metadata, req, m);\n }\n\n async listContactFilters(onData: OnMultipleDataFnc, onError: OnErrorFnc, m = undefined) {\n const req = new pbcm.ContactFilterListRequest();\n return grpcStreamOp(ContactFilter, this.contactFilterService, 'list', this.metadata, req, m, onData, onError);\n }\n\n // ContactManager\n async selectedContacts(ids: number[], onData: OnMultipleDataFnc, onError: OnErrorFnc, m?: ContactMapping) {\n const req = new pbcm.SelectedContactsRequest(); req.setIdsList(ids);\n return grpcStreamOp(Contact, this.contactManagerService, 'selectedContacts', this.metadata, req, m, onData, onError, { waitForEnd: true });\n }\n\n async mergeContacts(c: Contact, e: Employee|undefined, ids: number[], onData: OnMultipleDataFnc, onError: OnErrorFnc, m?: ContactMapping) {\n const req = new pbcm.MergeContactsRequest();\n req.setContact(c.toGrpcModel());\n req.setIdsList(ids);\n if (e) req.setEmployee(e.toGrpcModel());\n return grpcStreamOp(Contact, this.contactManagerService, 'mergeContacts', this.metadata, req, m, onData, onError, { waitForEnd: true });\n }\n\n async deleteContacts(ids: number[], e: Employee|undefined, onData: OnMultipleDataFnc, onError: OnErrorFnc, m?: ContactMapping) {\n const req = new pbcm.DeleteContactsRequest();\n req.setIdsList(ids);\n if (e) req.setEmployee(e.toGrpcModel());\n return grpcStreamOp(Contact, this.contactManagerService, 'deleteContacts', this.metadata, req, m, onData, onError, { waitForEnd: true });\n }\n\n async searchContacts(filter: string, onData: OnMultipleDataFnc, onError: OnErrorFnc, m?: ContactMapping) {\n const req = new pbcm.SearchContactsRequest();\n req.setFilter(filter);\n return grpcStreamOp(Contact, this.contactManagerService, 'searchContacts', this.metadata, req, m, onData, onError, { waitForEnd: true });\n }\n\n // Dashboard\n async getAvailability(dateIndex: number, m = undefined): Promise {\n const req = new pbd.DashboardAvailabilityRequest(); req.setDate(dateIndex);\n return grpcUnaryOp(DashboardAvailability, this.dashboardService, 'getAvailability', this.metadata, req, m);\n }\n\n // Reports\n async getTabsReports(beginDateIndex: number, endDateIndex: number, binType: pbr.ReportsParams.ReportsBinType, m = undefined): Promise {\n const params = new pbr.ReportsParams();\n params.setBeginDate(beginDateIndex);\n params.setEndDate(endDateIndex);\n params.setBinType(binType);\n const req = new pbr.ReportsRequest(); req.setParams(params);\n return grpcUnaryOpEx(null, this.reportsService, 'getTabsReports', this.metadata, req, m) as Promise;\n }\n\n async getMsgsReports(beginDateIndex: number, endDateIndex: number, binType: pbr.ReportsParams.ReportsBinType, m = undefined): Promise {\n const params = new pbr.ReportsParams();\n params.setBeginDate(beginDateIndex);\n params.setEndDate(endDateIndex);\n params.setBinType(binType);\n const req = new pbr.ReportsRequest(); req.setParams(params);\n return grpcUnaryOpEx(null, this.reportsService, 'getMsgsReports', this.metadata, req, m) as Promise;\n }\n\n // Settings\n async getDefaultCampaign(m = undefined): Promise {\n const req = new EmptyRequest();\n return grpcUnaryOp(Campaign, this.settingsService, 'getDefaultCampaign', this.metadata, req, m);\n }\n\n async testDefaultCampaign(data: Campaign, m = undefined): Promise {\n const req = new pbs.CampaignRequest(); req.setCampaign(data.toGrpcModel());\n const res = grpcUnaryOpEx(null, this.settingsService, 'testDefaultCampaign', this.metadata, req, m) as Promise;\n return res;\n }\n\n async updateDefaultCampaign(data: Campaign, m = undefined): Promise {\n const req = new pbs.CampaignRequest(); req.setCampaign(data.toGrpcModel());\n return grpcUnaryOp(Campaign, this.settingsService, 'updateDefaultCampaign', this.metadata, req, m);\n }\n\n // History\n async getReservationHistory(reservationId: number, m = undefined): Promise<{ records: string[], messages: string[] }> {\n const req = new pbh.HistoryRequest(); req.setReservationid(reservationId);\n const response = await (grpcUnaryOpEx(null, this.historyService, 'getHistory', this.metadata, req, m) as Promise);\n const records = response.getRecordsList().map((hr) => hr.getJson());\n const messages = response.getMessagesList().map((hr) => hr.getJson());\n return { records, messages };\n }\n\n // Message\n async sendMessage(message: Message): Promise {\n const req = new pbm.SendMessageRequest(); req.setMessage(message.toGrpcModel());\n const res = grpcUnaryOpEx(null, this.messageService, 'sendMessage', this.metadata, req, undefined) as Promise;\n return res;\n }\n\n // Apps\n async getApp(appId: number): Promise {\n const app = new App({ appId });\n const req = new pba.AppRequest(); req.setApp(app.toGrpcModel());\n const res = grpcUnaryOp(App, this.appsService, 'getApp', this.metadata, req, undefined) as Promise;\n return res;\n }\n\n // async installApp(appId: number, isInstalled: boolean): Promise {\n // const app = new App({ appId, isInstalled });\n // const req = new pba.AppRequest(); req.setApp(app.toGrpcModel());\n // const res = grpcUnaryOp(App, this.appsService, 'installApp', this.metadata, req, undefined) as Promise;\n // return res;\n // }\n\n async updateApp(appId: number, isInstalled: boolean, params?: string): Promise {\n const app = new App({ appId, isInstalled });\n app.params = params || undefined;\n const req = new pba.AppRequest(); req.setApp(app.toGrpcModel());\n const res = grpcUnaryOp(App, this.appsService, 'updateApp', this.metadata, req, undefined) as Promise;\n return res;\n }\n\n // Service Manager\n async listReservationServices(onData: OnMultipleDataFnc, m: ReservationServiceMapping): Promise {\n const req = new EmptyRequest();\n return grpcStreamOp(ReservationService, this.serviceManagerService, 'listServices', this.metadata, req, m, onData, () => {}, { waitForEnd: true });\n }\n\n async reorderReservationServices(services: ReservationService[], onData: OnMultipleDataFnc, m: ReservationServiceMapping): Promise {\n const req = new ReorderRequest();\n services.forEach((s) => {\n const rentity = new ReorderEntity(); rentity.setId(s.id); rentity.setOrder(s.order);\n req.addEntities(rentity);\n });\n return grpcStreamOp(ReservationService, this.serviceManagerService, 'reorderServices', this.metadata, req, m, onData, () => {}, { waitForEnd: true });\n }\n\n async updateReservationService(service: ReservationService, onData: OnMultipleDataFnc, m: ReservationServiceMapping): Promise {\n const req = new pbsm.ReservationServiceRequest(); req.setService(service.toGrpcModel());\n return grpcStreamOp(ReservationService, this.serviceManagerService, 'updateService', this.metadata, req, m, onData, () => {}, { waitForEnd: true });\n }\n\n async listCurrencies(): Promise {\n const req = new EmptyRequest();\n return grpcStreamOpAll(Currency, this.settingsService, 'listCurrencies', this.metadata, req);\n }\n\n // giftcards\n async getGiftcardProduct(): Promise {\n const req = new EmptyRequest();\n return grpcUnaryOp(GiftcardProduct, this.giftcardsService, 'getProduct', this.metadata, req, {});\n }\n\n async updateGiftcardProduct(p: GiftcardProduct): Promise {\n const req = new pbgc.GiftcardsProductRequets(); req.setProduct(p.toGrpcModel());\n return grpcUnaryOp(GiftcardProduct, this.giftcardsService, 'updateProduct', this.metadata, req, {});\n }\n\n async listGiftcardTransactions(p: GiftcardTransactionListParams, onData: OnMultipleDataFnc) {\n const params = new pbgc.GiftcardsListTransactionsParams();\n if (p.beginDateIndex) params.setBeginDate(p.beginDateIndex);\n if (p.endDateIndex) params.setEndDate(p.endDateIndex);\n if (p.types) params.setTypesList(p.types);\n if (p.codes) params.setGiftcardCodesList(p.codes);\n if (p.code) params.setGiftcardCode(p.code);\n\n const req = new pbgc.GiftcardsListTransactionsRequest();\n req.setParams(params);\n\n return grpcStreamOp(GiftcardTransaction, this.giftcardsService, 'listTransactions', this.metadata, req, {}, onData, () => {}, { waitForEnd: true });\n }\n\n async getGiftcard(p: { id?: number, code?: string }, m: GiftcardMapping): Promise {\n const req = new pbgc.GiftcardsGetGiftcardRequest();\n if (p.id) req.setGiftcardId(p.id);\n if (p.code) req.setGiftcardCode(p.code);\n return grpcUnaryOp(Giftcard, this.giftcardsService, 'getGiftcard', this.metadata, req, m);\n }\n\n async redeemGiftcard(id: number, code: string, amount: number, balance: number, p: { idempotencyKey?: string}, m: GiftcardMapping): Promise {\n const req = new pbgc.GiftcardsRedeemGiftcardRequest();\n req.setGiftcardId(id);\n req.setGiftcardCode(code);\n req.setAmount(amount);\n req.setBalance(balance);\n if (p.idempotencyKey) req.setIdempotencyKey(p.idempotencyKey);\n\n return grpcUnaryOp(Giftcard, this.giftcardsService, 'redeemGiftcard', this.metadata, req, m);\n }\n\n // Feedback\n async listFeedbacks(beginDateIndex: number, endDateIndex: number, since: Date|undefined, onData: OnMultipleDataFnc, onError: OnErrorFnc, m: FeedbackMapping) {\n const params = new pbfb.FeedbackListFeedbacksParams();\n params.setBeginDate(beginDateIndex);\n params.setEndDate(endDateIndex);\n if (since) params.setSinceDtCreate(unixFromDate(since));\n const req = new pbfb.FeedbackListFeedbacksRequest(); req.setParams(params);\n return grpcStreamOp(Feedback, this.feedbackService, 'listFeedbacks', this.metadata, req, m, onData, onError);\n }\n\n async getFeedback(id: number, m: FeedbackMapping) {\n const req = new pbfb.FeedbackGetFeedbackRequest();\n req.setFeedbackId(id);\n return grpcUnaryOp(Feedback, this.feedbackService, 'getFeedback', this.metadata, req, m);\n }\n\n async getFeedbackReservation(id: number, m: ReservationMapping) {\n const req = new pbfb.FeedbackGetReservationRequest();\n req.setReservationId(id);\n return grpcUnaryOp(Reservation, this.feedbackService, 'getReservation', this.metadata, req, m);\n }\n\n async getFeedbackSettings(m: FeedbackSettingsMapping) {\n const req = new EmptyRequest();\n return grpcUnaryOp(FeedbackSettings, this.feedbackService, 'getSettings', this.metadata, req, m);\n }\n\n async setFeedbackSettings(settings: FeedbackSettings, m: FeedbackSettingsMapping) {\n const req = new pbfb.FeedbackSetSettingsRequest();\n req.setSettings(settings.toGrpcModel());\n return grpcUnaryOp(FeedbackSettings, this.feedbackService, 'setSettings', this.metadata, req, m);\n }\n\n // campaign manager\n async updateMarketingCampaign(campaign: MarketingCampaign, m: MarketingCampaignMapping) {\n const req = new pbmcm.MarketingCampaignRequest();\n req.setMarketingCampaign(campaign.toGrpcModel());\n return grpcUnaryOp(MarketingCampaign, this.marketingCampaignManagerService, 'updateCampaign', this.metadata, req, m);\n }\n\n async listMarketingCampaigns(p: MarketingCampaignListParams, onData: OnMultipleDataFnc, m: MarketingCampaignMapping) {\n const params = new pbmcm.ListCampaignsRequestParams();\n params.setBeginDate(p.beginDateIndex);\n params.setEndDate(p.endDateIndex);\n params.setShowArchived(p.showArchived);\n const req = new pbmcm.ListCampaignsRequest(); req.setParams(params);\n return grpcStreamOp(MarketingCampaign, this.marketingCampaignManagerService, 'listCampaigns', this.metadata, req, m, onData, () => {}, { waitForEnd: false, maxDataCount: 1 });\n }\n\n async listAllContactFilters(onData: OnMultipleDataFnc, m = undefined) {\n const req = new pbcm.ContactFilterListRequest();\n return grpcStreamOp(ContactFilter, this.contactFilterService, 'list', this.metadata, req, m, onData, () => {}, { waitForEnd: true });\n }\n\n async getMarketingCampaign(campaign: MarketingCampaign, m: MarketingCampaignMapping) {\n const req = new pbmcm.MarketingCampaignIdRequest();\n req.setId(campaign.id);\n return grpcUnaryOp(MarketingCampaign, this.marketingCampaignManagerService, 'getCampaign', this.metadata, req, m);\n }\n\n async sendMarketingCampaign(campaign: MarketingCampaign, omitCampaignCheck: boolean, m: MarketingCampaignMapping) {\n const req = new pbmcm.MarketingCampaignSendRequest();\n req.setId(campaign.id);\n if (omitCampaignCheck) req.setOmitCampaignCheck(omitCampaignCheck);\n return grpcUnaryOp(MarketingCampaign, this.marketingCampaignManagerService, 'sendCampaign', this.metadata, req, m);\n }\n\n async archiveMarketingCampaign(campaign: MarketingCampaign, m: MarketingCampaignMapping) {\n const req = new pbmcm.MarketingCampaignArchiveRequest();\n req.setId(campaign.id);\n req.setIsAchived(campaign.isArchived ?? false);\n return grpcUnaryOp(MarketingCampaign, this.marketingCampaignManagerService, 'archiveCampaign', this.metadata, req, m);\n }\n\n async deleteMarketingCampaign(campaign: MarketingCampaign, m: MarketingCampaignMapping) {\n const req = new pbmcm.MarketingCampaignIdRequest();\n req.setId(campaign.id);\n return grpcUnaryOp(MarketingCampaign, this.marketingCampaignManagerService, 'deleteCampaign', this.metadata, req, m);\n }\n\n async previewContactFilterForMarketingCampaign(contactFilter: ContactFilter) {\n const req = new pbmcm.MarketingCampaignPreviewContactFilterRequest();\n req.setContactFilterData(contactFilter.data ?? '');\n return grpcUnaryOpEx((resp: pbmcm.MarketingCampaignPreviewContactFilterResponse, params: any) => resp.getAudienceStats()?.toObject(), this.marketingCampaignManagerService, 'previewContactFilter', this.metadata, req, undefined) as Promise<{all: number, matching: number}>;\n }\n\n async testMarketingCampaign(campaign: MarketingCampaign, recipients: string[]) {\n const req = new pbmcm.MarketingCampaignTestRequest();\n req.setId(campaign.id);\n req.setRecipientsList(recipients);\n const res = grpcUnaryOpEx(null, this.marketingCampaignManagerService, 'testCampaign', this.metadata, req, undefined) as Promise;\n return res;\n }\n\n async getMarketingCampaignSettings(m = undefined) {\n const req = new EmptyRequest();\n return grpcUnaryOp(MarketingCampaignSettings, this.marketingCampaignManagerService, 'getSettings', this.metadata, req, m);\n }\n\n // HtmlTemplate\n async createHtmlTemplate(et: HtmlTemplate, m = undefined) {\n const req = new pbht.HtmlTemplateRequest(); req.setHtmltemplate(et.toGrpcModel());\n return grpcUnaryOp(HtmlTemplate, this.htmlTemplateService, 'create', this.metadata, req, m);\n }\n\n async getHtmlTemplate(et: HtmlTemplate, m = undefined) {\n const req = new pbht.HtmlTemplateIdRequest(); req.setId(et.id);\n return grpcUnaryOp(HtmlTemplate, this.htmlTemplateService, 'get', this.metadata, req, m);\n }\n\n async updateHtmlTemplate(et: HtmlTemplate, m = undefined) {\n const req = new pbht.HtmlTemplateRequest(); req.setHtmltemplate(et.toGrpcModel());\n return grpcUnaryOp(HtmlTemplate, this.htmlTemplateService, 'update', this.metadata, req, m);\n }\n\n async deleteHtmlTemplate(et: HtmlTemplate, m = undefined) {\n const req = new pbht.HtmlTemplateIdRequest(); req.setId(et.id);\n return grpcUnaryOp(HtmlTemplate, this.htmlTemplateService, 'delete', this.metadata, req, m);\n }\n\n async listHtmlTemplates(onData: OnMultipleDataFnc, onError: OnErrorFnc, m = undefined) {\n const req = new pbht.HtmlTemplateListRequest();\n return grpcStreamOp(HtmlTemplate, this.htmlTemplateService, 'list', this.metadata, req, m, onData, onError);\n }\n\n async listAllHtmlTemplates(onData: OnMultipleDataFnc, m = undefined) {\n const req = new pbht.HtmlTemplateListRequest();\n return grpcStreamOp(HtmlTemplate, this.htmlTemplateService, 'list', this.metadata, req, m, onData, () => {}, { waitForEnd: true });\n }\n}\nexport default new GrpcClient();\n","import * as pbm from '@/grpc-pb/contact_filter_pb';\nimport * as pbs from '@/grpc-pb/contact_manager_service_pb';\nimport i18n from '@/plugins/i18n';\nimport { Filter } from '@/services/filter/filter';\nimport { FilterConvert } from '@/services/filter/filter-convert';\nimport {\n FilterDescriptor, FilterRuleDescriptor,\n FilterBooleanRuleTypes, FilterDateRuleTypes, FilterNumberRuleTypes, FilterStringRuleTypes,\n FilterCathegoricalRuleTypes, FilterSpecialCategoryOperandType,\n} from '@/services/filter/filter-descriptor';\nimport { FilterFieldType, FilterRule, FilterRuleType } from '@/services/filter/filter-rule';\nimport { FilterDateOperand, FilterDateOperands } from '@/services/filter/filter-rule-date-operation';\n\nexport default class ContactFilter {\n id: number = 0;\n\n order: number = 0;\n\n name: string = '';\n\n data?: string;\n\n isDeleted?: boolean;\n\n get isDefault() { return this.order < 0; }\n\n get value() { return this.id; }\n\n get text() {\n if (this.name.startsWith('title.filter_contacts_')) {\n const text = i18n.tc(this.name);\n if (this.name !== text) return text;\n }\n return this.name;\n }\n\n constructor(o?: { id?: number, order?: number; name: string, data: string }) {\n this.id = o?.id ?? 0;\n this.order = o?.order ?? 0;\n this.name = o?.name ?? '';\n this.data = o?.data ?? '';\n }\n\n static compare(o1: ContactFilter, o2: ContactFilter): number {\n const res = o1.order - o2.order;\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n static fromGrpcResponse(r: pbs.ContactFilterListResponse): ContactFilter {\n const e = r.getContactfilter();\n return ContactFilter.fromGrpcModel(e);\n }\n\n static fromGrpcModel(o?: pbm.ContactFilter): ContactFilter {\n const e = new ContactFilter();\n\n e.id = o?.getId() ?? 0;\n e.order = o?.getOrder() ?? 0;\n e.name = o?.getName() || 'N/A';\n e.data = o?.getData() ?? '';\n e.isDeleted = o?.getIsdeleted();\n\n return e;\n }\n\n toGrpcModel(): pbm.ContactFilter {\n const o = new pbm.ContactFilter();\n\n o.setId(this.id);\n o.setOrder(this.order);\n o.setName(this.name);\n if (this.data) o.setData(this.data);\n if (this.isDeleted) o.setIsdeleted(this.isDeleted);\n\n return o;\n }\n\n static readonly FilterDescriptor = new FilterDescriptor([\n FilterRuleDescriptor.StringFilterRuleDescriptor('name', i18n.tc('label.name')),\n FilterRuleDescriptor.StringFilterRuleDescriptor('phone', i18n.tc('label.phone')),\n FilterRuleDescriptor.StringFilterRuleDescriptor('companyName', i18n.tc('label.company_name')),\n FilterRuleDescriptor.StringFilterRuleDescriptor('email', i18n.tc('label.email')),\n new FilterRuleDescriptor(\n 'visitCount',\n i18n.tc('label.visits'),\n FilterFieldType.Number,\n FilterNumberRuleTypes,\n [1, 5, 10, 20, 50, 100],\n ),\n FilterRuleDescriptor.BoolFilterRuleDescriptor('isVIP', i18n.tc('label.vip')),\n FilterRuleDescriptor.BoolFilterRuleDescriptor('newsletterSubscription', i18n.tc('label.newsletter_subscription')),\n FilterRuleDescriptor.DateFilterRuleDescriptor('lastVisit', i18n.tc('label.last_visit')),\n new FilterRuleDescriptor('dateOfBirth', i18n.tc('label.birthday'), FilterFieldType.DateNoYear, FilterDateRuleTypes),\n FilterRuleDescriptor.NumberFilterRuleDescriptor('reservationCount', i18n.tc('label.visits')),\n new FilterRuleDescriptor(\n 'preferredLanguage',\n i18n.tc('label.language'),\n FilterFieldType.String,\n FilterCathegoricalRuleTypes,\n FilterSpecialCategoryOperandType.Language,\n ),\n FilterRuleDescriptor.StringFilterRuleDescriptor('notes', i18n.tc('label.notes')),\n FilterRuleDescriptor.StringFilterRuleDescriptor('title', i18n.tc('label.title')),\n new FilterRuleDescriptor(\n 'country',\n i18n.tc('label.country'),\n FilterFieldType.String,\n FilterCathegoricalRuleTypes,\n FilterSpecialCategoryOperandType.Country,\n ),\n FilterRuleDescriptor.StringFilterRuleDescriptor('address', i18n.tc('label.address')),\n FilterRuleDescriptor.StringFilterRuleDescriptor('postalCode', i18n.tc('label.zip_code')),\n FilterRuleDescriptor.StringFilterRuleDescriptor('city', i18n.tc('label.city')),\n FilterRuleDescriptor.StringFilterRuleDescriptor('state', i18n.tc('label.state')),\n FilterRuleDescriptor.DateFilterRuleDescriptor('updated', i18n.tc('label.updated')),\n ]);\n\n static readonly AllContactFilter = new ContactFilter({\n id: -10,\n order: -10,\n name: 'title.filter_contacts_all',\n data: FilterConvert.toJson(\n Filter.newFilterFrom3Rules({\n defineRules: [\n // FilterRule.newFilterFieldRule(FilterRuleType.IsNotEmpty, 'name', FilterFieldType.String)!,\n // FilterRule.newFilterFieldRule(FilterRuleType.IsNotEmpty, 'phone', FilterFieldType.String)!,\n // FilterRule.newFilterFieldRule(FilterRuleType.IsNotEmpty, 'companyName', FilterFieldType.String)!,\n ],\n narrowRules: [\n ],\n excludeRules: [\n ],\n }),\n ),\n });\n\n static readonly EmptyContactFilter = new ContactFilter({\n id: -9,\n order: -9,\n name: 'title.filter_contacts_without_information',\n data: FilterConvert.toJson(\n Filter.newFilterFrom3Rules({\n defineRules: [],\n narrowRules: [\n FilterRule.newFilterFieldRule(FilterRuleType.IsEmpty, 'name', FilterFieldType.String)!,\n FilterRule.newFilterFieldRule(FilterRuleType.IsEmpty, 'phone', FilterFieldType.String)!,\n FilterRule.newFilterFieldRule(FilterRuleType.IsEmpty, 'email', FilterFieldType.String)!,\n FilterRule.newFilterFieldRule(FilterRuleType.IsEmpty, 'companyName', FilterFieldType.String)!,\n ],\n excludeRules: [],\n }),\n ),\n });\n\n static readonly RecentContactFilter = new ContactFilter({\n id: -8,\n order: -8,\n name: 'title.filter_contacts_recently_visited',\n data: FilterConvert.toJson(\n Filter.newFilterFrom3Rules({\n defineRules: [\n FilterRule.newFilterFieldRule(\n FilterRuleType.Equal,\n 'lastVisit',\n FilterFieldType.Date,\n FilterDateOperand.ThisMonth,\n )!,\n FilterRule.newFilterFieldRule(\n FilterRuleType.Equal,\n 'lastVisit',\n FilterFieldType.Date,\n FilterDateOperand.PreviousMonth,\n )!,\n ],\n narrowRules: [],\n excludeRules: [],\n }),\n ),\n });\n\n static readonly EmailNotEmptyContactFilter = new ContactFilter({\n id: -7,\n order: -7,\n name: 'title.filter_contacts_with_email',\n data: FilterConvert.toJson(\n Filter.newFilterFrom3Rules({\n defineRules: [\n FilterRule.newFilterFieldRule(FilterRuleType.IsNotEmpty, 'email', FilterFieldType.String)!,\n ],\n narrowRules: [],\n excludeRules: [],\n }),\n ),\n });\n\n static readonly DefaultFilters = [\n ContactFilter.AllContactFilter,\n ContactFilter.EmptyContactFilter,\n ContactFilter.RecentContactFilter,\n ContactFilter.EmailNotEmptyContactFilter,\n ];\n\n static readonly DefaultFilter = ContactFilter.AllContactFilter;\n}\n","import * as pbm from '@/grpc-pb/contact_pb';\nimport * as pbs from '@/grpc-pb/contact_manager_service_pb';\n\nimport ApiContact, { ContactMapping, ContactTitle } from '@/model/Contact';\nimport { strcmp } from '@/services/common';\nimport { dateFromDateString, dateFromDateTimeString, dateStringFromDate } from '@/services/time-utils';\n\n// eslint-disable-next-line no-use-before-define\nexport type ContactSortFncType = (o1: Contact, o2: Contact) => number;\n\nexport enum ContactSortType {\n Name = 'name',\n CompanyName = 'companyName',\n Email = 'email',\n Phone = 'phone',\n LastVisit = 'lastVisit',\n VisitCount = 'visitCount',\n}\n\nexport default class Contact extends ApiContact {\n lastVisit?: Date;\n\n visitCount?: number;\n\n isDeleted?: boolean;\n\n updated?: Date;\n\n static fromGrpcResponse(r: pbs.ContactListResponse, m?: ContactMapping): Contact {\n const c = r.getContact();\n return Contact.fromGrpcModel(c, m);\n }\n\n static fromGrpcModel(o?: pbm.Contact, m?: ContactMapping): Contact {\n const c = new Contact();\n\n c.id = o?.getId() ?? 0;\n c.name = o?.getName() ?? '';\n c.phone = o?.getPhone() ?? '';\n c.email = o?.getEmail();\n c.address = o?.getAddress();\n c.postalCode = o?.getPostalcode();\n c.city = o?.getCity();\n c.state = o?.getState();\n c.companyName = o?.getCompanyname();\n c.reservationCount = o?.getReservationcount();\n c.isVIP = o?.getIsvip();\n c.preferredLanguage = o?.getPreferredlanguage();\n c.dateOfBirth = dateFromDateString(o?.getBirthday()) ?? undefined;\n c.newsletterSubscription = o?.getNewslettersubscription();\n c.notes = o?.getNotes();\n c.title = o?.getTitle() as ContactTitle;\n c.lastVisit = dateFromDateTimeString(o?.getLastvisit()) ?? undefined;\n c.visitCount = o?.getVisitcount();\n c.isDeleted = o?.getIsdeleted();\n\n c.country = m?.countryByCode.get(o?.getCountry() ?? '');\n\n c.updated = o?.getDtupdate() ? new Date(o.getDtupdate() * 1000) : undefined;\n\n return c;\n }\n\n toGrpcModel(): pbm.Contact {\n const o = new pbm.Contact();\n\n o.setId(this.id);\n\n if (this.name) o.setName(this.name);\n if (this.phone) o.setPhone(this.phone);\n if (this.email) o.setEmail(this.email);\n if (this.address) o.setAddress(this.address);\n if (this.city) o.setCity(this.city);\n if (this.state) o.setState(this.state);\n if (this.companyName) o.setCompanyname(this.companyName);\n\n if (this.reservationCount) o.setReservationcount(this.reservationCount);\n if (this.isVIP) o.setIsvip(this.isVIP);\n if (this.preferredLanguage) o.setPreferredlanguage(this.preferredLanguage);\n\n if (this.dateOfBirth) o.setBirthday(parseInt(dateStringFromDate(this.dateOfBirth) ?? '', 10));\n if (this.newsletterSubscription) o.setNewslettersubscription(this.newsletterSubscription);\n if (this.notes) o.setNotes(this.notes);\n if (this.title) o.setTitle(this.title);\n if (this.country) o.setCountry(this.country.code);\n\n if (this.isDeleted) o.setIsdeleted(this.isDeleted);\n\n return o;\n }\n\n static compare(o1: Contact, o2: Contact): number {\n return Contact.compareName(o1, o2);\n }\n\n static compareName(o1: Contact, o2: Contact): number {\n const res = strcmp(o1.name ?? '', o2.name ?? '');\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n static compareCompany(o1: Contact, o2: Contact): number {\n const res = strcmp(o1.companyName ?? '', o2.companyName ?? '');\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n static compareEmail(o1: Contact, o2: Contact): number {\n const res = strcmp(o1.email ?? '', o2.email ?? '');\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n static comparePhone(o1: Contact, o2: Contact): number {\n const res = strcmp(o1.phone ?? '', o2.phone ?? '');\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n static compareLastVisit(o1: Contact, o2: Contact): number {\n const res = (o1.lastVisit ?? new Date(0)).getTime() - (o2.lastVisit ?? new Date(0)).getTime();\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n static compareVisitCount(o1: Contact, o2: Contact): number {\n const res = (o1.visitCount ?? 0) - (o2.visitCount ?? 0);\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n static compareFnc(type: ContactSortType): ContactSortFncType {\n switch (type) {\n case ContactSortType.Name: return Contact.compareName;\n case ContactSortType.CompanyName: return Contact.compareCompany;\n case ContactSortType.Email: return Contact.compareEmail;\n case ContactSortType.Phone: return Contact.comparePhone;\n case ContactSortType.LastVisit: return Contact.compareLastVisit;\n case ContactSortType.VisitCount: return Contact.compareVisitCount;\n default: return Contact.compareName;\n }\n }\n\n static compareFncDesc(type: ContactSortType): ContactSortFncType {\n const fnc = Contact.compareFnc(type);\n return (o1: Contact, o2: Contact) => -fnc(o1, o2);\n }\n\n normalizedEmail(): string {\n if (!this.email) return '';\n return this.email.toLowerCase();\n }\n\n normalizedPhone(dialCode: string): string {\n if (!this.phone || !dialCode) return '';\n let phone = this.phone.replace(/[^\\d+]/g, '');\n if (phone.length < 6 || phone.startsWith('+') || phone.startsWith('00')) return phone;\n if (phone.startsWith('0')) phone = phone.slice(2);\n return dialCode + phone;\n }\n}\n","/* eslint-disable brace-style */\nimport * as pbm from '@/grpc-pb/dashboard_pb';\nimport * as pbs from '@/grpc-pb/dashboard_service_pb';\nimport {\n dateFromDateAndTimeIndex, DAY_TIME_SLOTS_COUNT, minutesFromTimeString, MORNING_TIME_SLOTS_COUNT, slotFromMinutes,\n} from '@/services/time-utils';\n\ninterface PR { // party size result\n p: number; d: number; c: number; m?: number;\n xs: number; xe?:boolean; // xs - extra section id. xe - last pr\n}\ninterface TR { t: string; pr: PR[]; } // tab result\ninterface SR { s: number; tr: TR[]; } // slot result\n\nexport enum DashboardAvailabilityFlag {\n YES = 0,\n MIXED = 1,\n NO_LIMITED = 2,\n NO_ALLOCATIONS = 3,\n NO_CLOSED = 4,\n}\n\nexport enum DashboardLimitReason {\n None = 'none',\n Capacity = 'capacity',\n MaxGuestsDefault = 'max_guests_default',\n MaxReservationsDefault = 'max_reservations_default',\n MinPartySizeDefault = 'min_party_size_default',\n MaxPartySizeDefault = 'max_party_size_default',\n MaxGuestsOpeningHour = 'max_guests_opening_hour',\n MaxGuestsSpecialHour = 'max_guests_special_hour',\n MaxReservationsOpeningHour = 'max_reservations_opening_hour',\n MaxReservationsSpecialHour = 'max_reservations_special_hour',\n ClosedOpeningHour = 'closed_opening_hour',\n ClosedSpecialHour = 'closed_special_hour',\n MinPartySizeOpeningHour = 'min_party_size_opening_hour',\n MinPartySizeSpecialHour = 'min_party_size_special_hour',\n MaxPartySizeOpeningHour = 'max_party_size_opening_hour',\n MaxPartySizeSpecialHour = 'max_party_size_special_hour',\n}\n\nexport interface DashboardChartData {\n si: number, ps: number, flag: DashboardAvailabilityFlag, prs: PR[], lr: DashboardLimitReason, lrp?: number,\n}\n\nexport interface DashboardLimitData {\n // s: number, i: number, ri: number,\n // il: number, ril: number, sl: number,\n // ilr: DashboardLimitReason, rilr: DashboardLimitReason, slr: DashboardLimitReason,\n // imin: number, imax: number,\n // iminr: DashboardLimitReason, imaxr: DashboardLimitReason,\n s: number, // seated guests\n i: number, // incoming guests\n ri: number, // incoming reservations\n ts: number, // total seated guests (all sections)\n ti: number, // total incoming guests (all sections)\n tri: number, // total incoming reservations (all sections)\n sl: number, // seated limit\n il: number, // incoming limit\n ril: number, // incoming reservations limit\n slr: DashboardLimitReason.None,\n ilr: DashboardLimitReason.None,\n rilr: DashboardLimitReason.None,\n imin: number,\n imax: number,\n iminr: DashboardLimitReason.None,\n imaxr: DashboardLimitReason.None,\n}\n\nexport default class DashboardAvailability {\n date: Date | null = null;\n\n weekday: number = 0;\n\n isAvailable: boolean = false;\n\n data?: string;\n\n static fromGrpcResponse(r: pbs.DashboardAvailabilityResponse): DashboardAvailability {\n const a = r.getAvailability();\n return DashboardAvailability.fromGrpcModel(a);\n }\n\n static fromGrpcModel(o?: pbm.DashboardAvailability): DashboardAvailability {\n const a = new DashboardAvailability();\n\n a.date = dateFromDateAndTimeIndex(o?.getDate() ?? 0) ?? null;\n a.weekday = o?.getWeekday() ?? 0;\n a.isAvailable = o?.getIsavailable() ?? false;\n a.data = o?.getData() || undefined;\n\n return a;\n }\n\n toChartData(tabids: number[], slotLimits: DashboardLimitData[], lastps = 12): DashboardChartData[] {\n // lastps - last party size for special X+ row\n if (!this.data) return [];\n const json = JSON.parse(this.data);\n\n // create map with slot and party size key and section(s) availability results as value\n let maxps = lastps;\n const prmap = new Map();\n const srs: SR[] = json.sr ?? [];\n srs.forEach((sr) => {\n if (!tabids.includes(sr.s)) return;\n\n sr?.tr.forEach((tr) => {\n const si = slotFromMinutes(minutesFromTimeString(tr.t));\n tr.pr?.forEach((pr, i, prs) => {\n // add section id and last results flag\n // eslint-disable-next-line no-param-reassign\n pr.xs = sr.s; pr.xe = i === prs.length - 1 ? true : undefined;\n const key = pr.p * 100 + si;\n prmap.set(key, [...(prmap.get(key) ?? []), pr]);\n if (maxps < pr.p) maxps = pr.p;\n });\n });\n });\n\n // convert sections availability results to chart flag\n const chartFlag = (prs: PR[]) => {\n if (!prs || prs.length === 0) return DashboardAvailabilityFlag.NO_ALLOCATIONS;\n\n // ALL sections available for at least DEFAULT time duration\n // if (prs.every((pr) => pr.c >= pr.d)) return DashboardAvailabilityFlag.YES;\n\n // at least ONE section available for at least DEFAULT time duration\n if (prs.some((pr) => pr.c >= pr.d)) return DashboardAvailabilityFlag.YES;\n\n // at least ONE section available for at least MINIMUM time duration\n if (prs.some((pr) => pr.m && pr.c >= pr.m)) return DashboardAvailabilityFlag.MIXED;\n\n return DashboardAvailabilityFlag.NO_ALLOCATIONS;\n };\n\n // prepare slot availabilities\n const data = [] as DashboardChartData[];\n const daySlotCount = DAY_TIME_SLOTS_COUNT - MORNING_TIME_SLOTS_COUNT;\n [...new Array(daySlotCount)].forEach((_, si) => {\n const osa = new Map(); // old sections availabilities\n const results: { flag: DashboardAvailabilityFlag, lr: DashboardLimitReason, lrp: number, prs: PR[]}[] = [];\n results.push({ // dummy data for 0 partu size\n flag: DashboardAvailabilityFlag.NO_CLOSED, // flags for party sizes\n lr: DashboardLimitReason.None, // limit reasons for closed slots for party sizes\n lrp: 0, // limit reason param (limit as number)\n prs: [], // computed party size availability results\n });\n\n // get limit data for slot\n const ld = slotLimits[si + MORNING_TIME_SLOTS_COUNT];\n // if (ld.il !== 0) {\n // console.log('ld.il <> 0: ', ld);\n // }\n\n // calculate flags\n for (let ps = 1; ps <= maxps; ps += 1) {\n // compute availability flag and reason\n let flag = DashboardAvailabilityFlag.NO_CLOSED;\n let lr = DashboardLimitReason.None;\n let lrp = 0;\n\n // update sections availabilities with new party size data\n const nsa = prmap.get(ps * 100 + si + MORNING_TIME_SLOTS_COUNT); // retrieve current sections availabilities\n nsa?.forEach((pr) => osa.set(pr.xs, pr)); // merge into old sections availabilities\n const prs = [...osa.values()]; // all party size results\n nsa?.filter((pr) => pr.xe === true).forEach((pr) => osa.delete(pr.xs)); // remove flagged as last\n\n // show slot as closed incoming guests = 0, or min or max party size\n // check incoming guests limit = 0 -> closed slot\n if (ld.il === 0) { lr = ld.ilr; lrp = 0; }\n // check min or max slot party size\n else if (ps < ld.imin) { lr = ld.iminr; lrp = ld.imin; }\n else if (ps > ld.imax) { lr = ld.imaxr; lrp = ld.imax; }\n // not closed slot\n else {\n flag = DashboardAvailabilityFlag.NO_LIMITED;\n\n // check incoming guests limit\n if (ps > ld.il - ld.i) { lr = ld.ilr; lrp = ld.il; }\n // check incoming reservations limit\n else if (ld.ri >= ld.ril) { lr = ld.rilr; lrp = ld.ri; }\n // check seated guests limit\n else if (ld.sl && ld.s >= ld.sl) { lr = ld.slr; lrp = ld.sl; }\n // calculate from party size results\n else flag = chartFlag(prs);\n }\n\n results.push({\n flag, lr, lrp, prs,\n });\n }\n\n // fully shown party sizes - separate row per party size (below X+ row)\n for (let ps = 1; ps < lastps; ps += 1) {\n data.push({ si, ps, ...results[ps] });\n }\n\n // extra partry sizes - special X+ row\n let flag = DashboardAvailabilityFlag.NO_ALLOCATIONS;\n let lr = DashboardLimitReason.None;\n let lrp = 0;\n results.splice(0, lastps);\n\n // no result -> no availability\n if (results.length === 0) flag = DashboardAvailabilityFlag.NO_ALLOCATIONS;\n\n // all spots closed -> closed (and use the first spot limit reason)\n else if (results.every((r) => r.flag === DashboardAvailabilityFlag.NO_CLOSED)) {\n flag = DashboardAvailabilityFlag.NO_CLOSED; lr = results[0].lr; lrp = results[0].lrp;\n }\n\n // all spots limited -> limited (and use the first spot limit reason)\n else if (results.every((r) => r.flag === DashboardAvailabilityFlag.NO_LIMITED)) {\n flag = DashboardAvailabilityFlag.NO_LIMITED; lr = results[0].lr; lrp = results[0].lrp;\n }\n\n // some spot available -> available\n else if (results.some((r) => r.flag === DashboardAvailabilityFlag.YES)) {\n flag = DashboardAvailabilityFlag.YES;\n }\n\n // some spot mixed -> mixed\n else if (results.some((r) => r.flag === DashboardAvailabilityFlag.MIXED)) {\n flag = DashboardAvailabilityFlag.MIXED;\n }\n\n const prs = results.flatMap((r) => r.prs);\n data.push({\n si, ps: lastps, flag, lr, lrp, prs,\n });\n });\n\n return data;\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/feedback_settings_pb';\nimport * as pbs from '@/grpc-pb/feedback_service_pb';\n\nexport interface FeedbackSettingsMapping {\n}\n\nexport default class FeedbackSettings {\n id: number = 0;\n\n enabled: boolean = false;\n\n useBreakdown?: boolean;\n\n noRuleError: boolean = false;\n\n static fromGrpcResponse(r: pbs.FeedbackSettingsResponse, m?: FeedbackSettingsMapping): FeedbackSettings {\n const o = r.getSettings();\n return FeedbackSettings.fromGrpcModel(o, m);\n }\n\n static fromGrpcModel(o?: pbm.FeedbackSettings, m?: FeedbackSettingsMapping): FeedbackSettings {\n const p = new FeedbackSettings();\n\n p.enabled = o?.getEnabled() ?? false;\n p.noRuleError = o?.getNoRuleError() ?? false;\n\n if (o?.hasUseBreakdown()) p.useBreakdown = o?.getUseBreakdown();\n\n return p;\n }\n\n toGrpcModel(): pbm.FeedbackSettings {\n const o = new pbm.FeedbackSettings();\n\n o.setEnabled(this.enabled);\n if (this.useBreakdown) o.setUseBreakdown(this.useBreakdown);\n\n return o;\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/feedback_pb';\nimport * as pbs from '@/grpc-pb/feedback_service_pb';\nimport { dateFromDateString, dateFromDateTimeString, unixFromDate } from '@/services/time-utils';\nimport { strcmp } from '@/services/common';\nimport { ReservationMapping } from '@/model/Reservation';\nimport Reservation from './reservation';\n\n// eslint-disable-next-line no-use-before-define\nexport type FeedbackSortFncType = (o1: Feedback, o2: Feedback) => number;\n\nexport enum FeedbackSortType {\n Name = 'name',\n Food = 'foodRating',\n Service = 'serviceRating',\n Ambience = 'ambienceRating',\n Overall = 'overallRating',\n Created = 'created',\n Comments = 'comments',\n Replied = 'replied',\n Visited = 'visited',\n}\n\nexport interface FeedbackFilter {\n name: string;\n comments: string;\n\n foodRating: number[];\n serviceRating: number[];\n ambienceRating: number[];\n overallRating: number[];\n}\n\nexport interface FeedbackMapping extends ReservationMapping{\n}\n\nexport default class Feedback {\n id: number = 0;\n\n reservationId?: number;\n\n foodRating?: number;\n\n serviceRating?: number;\n\n ambienceRating?: number;\n\n overallRating?: number;\n\n comments?: string;\n\n created?: Date;\n\n isPublic?: boolean;\n\n reservationDtBegin?: Date;\n\n contactName?: string;\n\n contactReservationCount?: number;\n\n replied?: Date;\n\n reservation?: Reservation;\n\n static fromGrpcResponse(r: pbs.FeedbackFeedbackResponse, m?: FeedbackMapping): Feedback {\n const o = r.getFeedback();\n return Feedback.fromGrpcModel(o, m);\n }\n\n static fromGrpcModel(o?: pbm.Feedback, m?: FeedbackMapping): Feedback {\n const p = new Feedback();\n\n p.id = o?.getId() ?? 0;\n p.reservationId = o?.getReservationId();\n p.foodRating = o?.getFoodRating();\n p.serviceRating = o?.getServiceRating();\n p.ambienceRating = o?.getAmbienceRating();\n p.overallRating = o?.getOverallRating();\n p.comments = o?.getComments();\n p.created = o?.getDtCreate() ? new Date(o.getDtCreate() * 1000) : undefined;\n p.isPublic = o?.getIsPublic();\n\n p.reservationDtBegin = dateFromDateTimeString(o?.getReservationDtBegin()) ?? new Date();\n p.contactName = o?.getContactName();\n p.contactReservationCount = o?.getContactReservationCount();\n\n p.replied = o?.getDtRepliedAt() ? new Date(o.getDtRepliedAt() * 1000) : undefined;\n\n if (o?.getReservation()) {\n p.reservation = Reservation.fromGrpcModel(o?.getReservation(), m);\n }\n\n return p;\n }\n\n static compareFnc(type: FeedbackSortType): FeedbackSortFncType {\n const cmpnumf = (o1: Feedback, o2: Feedback, attrf: (o: Feedback) => number) => (attrf(o1) - attrf(o2) !== 0 ? attrf(o1) - attrf(o2) : o1.id - o2.id);\n const cmpstrf = (o1: Feedback, o2: Feedback, attrf: (o: Feedback) => string) => (strcmp(attrf(o1), attrf(o2)) !== 0 ? strcmp(attrf(o1), attrf(o2)) : o1.id - o2.id);\n\n switch (type) {\n case FeedbackSortType.Name: return (o1: Feedback, o2: Feedback) => cmpstrf(o1, o2, (o) => o.contactName ?? '');\n\n case FeedbackSortType.Food: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => o.foodRating ?? 0);\n case FeedbackSortType.Service: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => o.serviceRating ?? 0);\n case FeedbackSortType.Ambience: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => o.ambienceRating ?? 0);\n case FeedbackSortType.Overall: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => o.overallRating ?? 0);\n\n case FeedbackSortType.Created: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => (o.created ?? new Date(0)).getTime());\n case FeedbackSortType.Replied: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => (o.replied ?? new Date(0)).getTime());\n case FeedbackSortType.Visited: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => (o.reservationDtBegin ?? new Date(0)).getTime());\n\n case FeedbackSortType.Comments: return (o1: Feedback, o2: Feedback) => cmpstrf(o1, o2, (o) => o.comments ?? '');\n\n default: return (o1: Feedback, o2: Feedback) => cmpnumf(o1, o2, (o) => (o.created ?? new Date(0)).getTime());\n }\n }\n\n static compareFncDesc(type: FeedbackSortType): FeedbackSortFncType {\n const fnc = Feedback.compareFnc(type);\n return (o1: Feedback, o2: Feedback) => -fnc(o1, o2);\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/giftcard_product_pb';\nimport * as pbs from '@/grpc-pb/giftcards_service_pb';\nimport Currency from './currency';\n\nexport interface GiftcardProductMapping {\n}\n\nexport default class GiftcardProduct {\n id: number = 0;\n\n code?: string;\n\n title?: string;\n\n description?: string;\n\n bgUrl?: string;\n\n serviceId?: number;\n\n locale?: string;\n\n enabled?: boolean;\n\n bgColor?: string;\n\n expireMonths?: number;\n\n showLogo?: boolean;\n\n footerText?: string;\n\n amounts: number[] = [];\n\n currency?: string;\n\n stripeAccountExist?: boolean;\n\n stripeAccountActive?: boolean;\n\n static fromGrpcResponse(r: pbs.GiftcardsProductResponse, m?: GiftcardProductMapping): GiftcardProduct {\n const o = r.getProduct();\n return GiftcardProduct.fromGrpcModel(o, m);\n }\n\n static fromGrpcModel(o?: pbm.GiftcardProduct, m?: GiftcardProductMapping): GiftcardProduct {\n const p = new GiftcardProduct();\n\n p.id = o?.getId() ?? 0;\n p.code = o?.getCode();\n p.title = o?.getTitle();\n p.description = o?.getDescription();\n p.bgUrl = o?.getBackgroundImageUrl();\n p.serviceId = o?.getServiceId();\n p.locale = o?.getLocale();\n p.enabled = o?.getIsActive();\n p.bgColor = o?.getColor();\n p.expireMonths = o?.getExpirePeriodInMonths();\n p.showLogo = o?.getShowLogo();\n p.footerText = o?.getFooterText();\n p.amounts = o?.getPricesList() ?? [];\n p.currency = o?.getCurrency();\n p.stripeAccountExist = o?.getStripeAccountExist();\n p.stripeAccountActive = o?.getStripeAccountActive();\n\n return p;\n }\n\n toGrpcModel(): pbm.GiftcardProduct {\n const o = new pbm.GiftcardProduct();\n\n o.setId(this.id);\n\n if (this.code) o.setCode(this.code);\n if (this.title) o.setTitle(this.title);\n if (this.description) o.setDescription(this.description);\n if (this.bgUrl) o.setBackgroundImageUrl(this.bgUrl);\n if (this.serviceId) o.setServiceId(this.serviceId);\n if (this.locale) o.setLocale(this.locale);\n if (this.enabled) o.setIsActive(this.enabled);\n if (this.bgColor) o.setColor(this.bgColor);\n if (this.expireMonths) o.setExpirePeriodInMonths(this.expireMonths);\n if (this.showLogo) o.setShowLogo(this.showLogo);\n if (this.footerText) o.setFooterText(this.footerText);\n if (this.amounts) o.setPricesList(this.amounts);\n if (this.currency) o.setCurrency(this.currency);\n\n return o;\n }\n\n clone(): GiftcardProduct {\n const copy = new GiftcardProduct();\n Object.assign(copy, this);\n copy.amounts = Array.from(this.amounts);\n return copy;\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/giftcard_transaction_pb';\nimport * as pbs from '@/grpc-pb/giftcards_service_pb';\nimport { DateRange, DateRangePeriod, dateRangeFromPeriod } from '@/services/date-range';\n\nexport interface GiftcardTransactionMapping {\n}\n\nexport enum GiftcardTransactionType {\n None = 'none',\n Sale = 'sale',\n Fee = 'fee',\n Redeem = 'redeem',\n Expiration = 'expiration',\n}\n\nexport default class GiftcardTransaction {\n type: GiftcardTransactionType = GiftcardTransactionType.None;\n\n amount?: number;\n\n currency?: string;\n\n date?: Date;\n\n giftcardId?: number;\n\n giftcardCode?: string;\n\n giftcardIssuedByAccountId?: number;\n\n giftcardIssuedByAccountName?: string;\n\n executedByAccountId?: number;\n\n executedByAccountName?: string;\n\n static fromGrpcResponse(r: pbs.GiftcardsListTransactionsResponse, m?: GiftcardTransactionMapping): GiftcardTransaction {\n const o = r.getTransaction();\n return GiftcardTransaction.fromGrpcModel(o, m);\n }\n\n static fromGrpcModel(o?: pbm.GiftcardTransaction, m?: GiftcardTransactionMapping): GiftcardTransaction {\n const p = new GiftcardTransaction();\n\n switch (o?.getType() ?? 0) {\n case pbm.GiftcardTransaction.GiftcardTransactionType.NONE: p.type = GiftcardTransactionType.None; break;\n case pbm.GiftcardTransaction.GiftcardTransactionType.SALE: p.type = GiftcardTransactionType.Sale; break;\n case pbm.GiftcardTransaction.GiftcardTransactionType.FEE: p.type = GiftcardTransactionType.Fee; break;\n case pbm.GiftcardTransaction.GiftcardTransactionType.REDEEM: p.type = GiftcardTransactionType.Redeem; break;\n case pbm.GiftcardTransaction.GiftcardTransactionType.EXPIRATION: p.type = GiftcardTransactionType.Expiration; break;\n default: break;\n }\n\n p.amount = o?.getAmount();\n p.currency = o?.getCurrency();\n p.date = o?.getDate() ? new Date(o.getDate() * 1000) : undefined;\n p.giftcardId = o?.getGiftcardId();\n p.giftcardCode = o?.getGiftcardCode();\n\n p.giftcardIssuedByAccountId = o?.getGiftcardIssuedByAccountId() ?? 0;\n p.giftcardIssuedByAccountName = o?.getGiftcardIssuedByAccountName();\n p.executedByAccountId = o?.getExecutedByAccountId() ?? 0;\n p.executedByAccountName = o?.getExecutedByAccountName();\n\n return p;\n }\n}\nexport interface GiftcardTransactionListParams {\n beginDateIndex?: number,\n endDateIndex?: number,\n types?: GiftcardTransactionType[],\n codes?: string[],\n code?: string,\n}\n\nexport interface GiftcardTransactionFilter {\n dateRange: DateRange;\n\n types: GiftcardTransactionType[];\n\n codes: string[];\n\n code: string;\n}\n\nexport function defaultGiftcardTransactionFilter(): GiftcardTransactionFilter {\n return {\n dateRange: dateRangeFromPeriod(DateRangePeriod.Last90Days),\n types: [],\n codes: [],\n code: '',\n };\n}\n\nexport function areGiftcardTransactionFiltersSame(o1: GiftcardTransactionFilter, o2: GiftcardTransactionFilter): boolean {\n if (o1.dateRange.beginDate.getTime() !== o2.dateRange.beginDate.getTime()) return false;\n if (o1.dateRange.endDate.getTime() !== o2.dateRange.endDate.getTime()) return false;\n if (o1.code !== o2.code) return false;\n if (o1.types.join(',') !== o2.types.join(',')) return false;\n if (o1.codes.join(',') !== o2.codes.join(',')) return false;\n return true;\n}\n","import * as pbs from '@/grpc-pb/html_template_service_pb';\nimport { strcmp } from '@/services/common';\nimport * as pbm from '@/grpc-pb/html_template_pb';\n\nexport default class HtmlTemplate {\n id: number = 0;\n\n name: string = '';\n\n design?: string;\n\n html?: string;\n\n preview?: string;\n\n plaintext?: string;\n\n created: Date = new Date();\n\n updated: Date = new Date();\n\n isDeleted?: boolean;\n\n isDefault: boolean = false;\n\n get value() { return this.id; }\n\n get text() { return this.name; }\n\n static fromGrpcResponse(r: pbs.HtmlTemplateListResponse): HtmlTemplate {\n const e = r.getHtmltemplate();\n return HtmlTemplate.fromGrpcModel(e);\n }\n\n static compare(o1: HtmlTemplate, o2: HtmlTemplate): number {\n let res = (o1.isDefault ? 1 : -1) - (o2.isDefault ? 1 : -1);\n if (res !== 0) return -res;\n\n res = strcmp(o1.name ?? '', o2.name ?? '');\n if (res !== 0) return res;\n\n return o1.id - o2.id;\n }\n\n constructor(o?: { id?: number, name: string, design?: string, html?: string, plaintext?: string, preview?: string }) {\n this.id = o?.id ?? 0;\n this.name = o?.name ?? '';\n this.design = o?.design;\n this.html = o?.html;\n this.preview = o?.preview;\n this.plaintext = o?.plaintext;\n }\n\n static fromGrpcModel(o?: pbm.HtmlTemplate): HtmlTemplate {\n const e = new HtmlTemplate();\n\n e.id = o?.getId() ?? 0;\n e.name = o?.getName() || 'N/A';\n e.design = o?.getDesign();\n // e.html = o?.getHtml(); - no html from grpc\n // e.plaintext = o?.getPlaintext(); - no plaintext from grpc\n e.preview = o?.getPreview();\n e.created = o?.getDtCreate() ? new Date(o.getDtCreate() * 1000) : new Date();\n e.updated = o?.getDtUpdate() ? new Date(o.getDtUpdate() * 1000) : new Date();\n e.isDeleted = o?.getIsDeleted();\n e.isDefault = o?.getIsDefault() ?? false;\n\n return e;\n }\n\n toGrpcModel(): pbm.HtmlTemplate {\n const o = new pbm.HtmlTemplate();\n\n o.setId(this.id);\n o.setName(this.name);\n if (this.design) o.setDesign(this.design);\n if (this.html) o.setHtml(this.html);\n if (this.plaintext) o.setPlaintext(this.plaintext);\n // if (this.preview) o.setPreview(this.preview); - no preview to grpc\n if (this.isDeleted) o.setIsDeleted(this.isDeleted);\n\n return o;\n }\n}\n\nexport function areHtmlTemplatesSame(o1: HtmlTemplate, o2: HtmlTemplate): boolean {\n return o1.design === o2.design && o1.name === o2.name;\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/marketing_campaign_settings_pb';\nimport * as pbs from '@/grpc-pb/marketing_campaign_manager_service_pb';\n\nimport ContactFilter from './contact-filter';\n\nexport interface MarketingCampaignMapping {\n marketingCampaignManagerContactFilters: ContactFilter[];\n}\n\nexport default class MarketingCampaignSettings {\n allowedMessages: number = 0;\n\n createdMessages: number = 0;\n\n dateQuotaReset: Date = new Date();\n\n static fromGrpcModel(o?: pbm.MarketingCampaignSettings, m = undefined): MarketingCampaignSettings {\n const mcs = new MarketingCampaignSettings();\n\n mcs.allowedMessages = o?.getAllowedMessages() ?? 0;\n mcs.createdMessages = o?.getCreatedMessages() ?? 0;\n mcs.dateQuotaReset = o ? new Date(o.getDtQuotaReset() * 1000) : new Date();\n\n return mcs;\n }\n\n static fromGrpcResponse(r: pbs.MarketingCampaignSettingsResponse): MarketingCampaignSettings {\n const e = r.getSettings();\n return MarketingCampaignSettings.fromGrpcModel(e);\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n\nimport * as pbm from '@/grpc-pb/marketing_campaign_pb';\nimport * as pbs from '@/grpc-pb/marketing_campaign_manager_service_pb';\nimport { DateRange, dateRangeFromPeriod, DateRangePeriod } from '@/services/date-range';\nimport ContactFilter from './contact-filter';\n\nexport enum MarketingCampaignStatus {\n None = 'none',\n Draft = 'draft',\n Scheduled = 'scheduled',\n Processing = 'processing',\n Sent = 'sent',\n Abandoned = 'abandoned',\n Failure = 'failure'\n}\n\nexport interface MarketingCampaignMapping {\n marketingCampaignManagerContactFilters: ContactFilter[];\n}\n\nexport default class MarketingCampaign {\n id: number = 0;\n\n locale?: string | null;\n\n title?: string | null;\n\n subject?: string | null;\n\n previewText?: string | null;\n\n contactFilter: ContactFilter | null = null;\n\n templateName?: string | null;\n\n templateDesign?: string | null;\n\n templateHtml?: string | null;\n\n templatePlaintext?: string | null;\n\n templatePreview?: string | null;\n\n status?: MarketingCampaignStatus = MarketingCampaignStatus.Draft;\n\n dtCreate?: Date;\n\n dtUpdate?: Date;\n\n dtSend?: Date | null;\n\n dtProcessed?: Date | null;\n\n isArchived?: boolean;\n\n isDeleted?: boolean;\n\n audienceStats?: {\n matching?: number;\n all?: number;\n };\n\n publishStats?: {\n scheduled?: number;\n sent?: number;\n processing?: number;\n abandoned?: number;\n failure?: number;\n all?: number;\n };\n\n deliveryStats?: {\n processed? : number;\n dropped? : number;\n delivered? : number;\n deferred? : number;\n bounce? : number;\n blocked? : number;\n };\n\n engagementStats?: {\n open?: number;\n unique_open?: number;\n click?: number;\n unique_click?: number;\n spam?: number;\n unsubscribe?: number;\n group_unsubscribe?: number;\n group_resubscribe?: number;\n\n widget_open?: number;\n unique_widget_open?: number;\n widget_reservation?: number;\n unique_widget_reservation?: number;\n widget_unsubscribe?: number;\n\n };\n\n conversionStats?: {\n all?: number;\n imminent?: number;\n unique_all?: number;\n unique_imminent?: number;\n guests_all?: number;\n guests_imminent?: number;\n };\n\n get date(): Date { return this.dtSend ?? this.dtCreate!; }\n\n get canArchive(): boolean { return [MarketingCampaignStatus.Sent, MarketingCampaignStatus.Abandoned, MarketingCampaignStatus.Failure].includes(this.status!); }\n\n get canDelete(): boolean { return [MarketingCampaignStatus.Draft].includes(this.status!); }\n\n get recipientCount(): number | undefined { return [MarketingCampaignStatus.Draft].includes(this.status!) ? this.audienceStats?.matching : this.publishStats?.sent; }\n\n static fromGrpcResponse(r: pbs.MarketingCampaignResponse, m?: MarketingCampaignMapping): MarketingCampaign {\n const o = r.getMarketingCampaign();\n return MarketingCampaign.fromGrpcModel(o, m);\n }\n\n static fromGrpcModel(o?: pbm.MarketingCampaign, m?: MarketingCampaignMapping): MarketingCampaign {\n const statuses = [\n MarketingCampaignStatus.None,\n MarketingCampaignStatus.Draft,\n MarketingCampaignStatus.Scheduled,\n MarketingCampaignStatus.Processing,\n MarketingCampaignStatus.Sent,\n MarketingCampaignStatus.Abandoned,\n MarketingCampaignStatus.Failure,\n ];\n\n const mc = new MarketingCampaign();\n\n mc.id = o?.getId() ?? 0;\n mc.locale = o?.getLocale() ?? null;\n mc.status = statuses[o?.getStatus() ?? 0];\n mc.title = o?.getTitle() ?? null;\n mc.subject = o?.getSubject() ?? null;\n mc.previewText = o?.getPreviewText() ?? null;\n mc.contactFilter = m?.marketingCampaignManagerContactFilters.find((cf) => cf.id === o?.getContactFilterId()) ?? null;\n mc.templateName = o?.getTemplateName() ?? null;\n mc.templateDesign = o?.getTemplateDesign() ?? null;\n mc.templateHtml = o?.getTemplateHtml() ?? null;\n mc.templatePlaintext = o?.getTemplatePlaintext() ?? null;\n mc.templatePreview = o?.getTemplatePreview() ?? null;\n mc.dtCreate = o?.getDtCreate() ? new Date(o.getDtCreate() * 1000) : new Date();\n mc.dtUpdate = o?.getDtUpdate() ? new Date(o.getDtUpdate() * 1000) : new Date();\n mc.dtSend = o?.getDtSend() ? new Date(o.getDtSend() * 1000) : null;\n mc.dtProcessed = o?.getDtProcessed() ? new Date(o.getDtProcessed() * 1000) : null;\n mc.isArchived = o?.getIsArchived();\n mc.isDeleted = o?.getIsDeleted();\n\n const astats = o?.getAudienceStats();\n if (astats) {\n mc.audienceStats = {\n all: astats.getAll(),\n\n matching: astats.getMatching(),\n };\n }\n\n const pstats = o?.getPublishStats();\n if (pstats) {\n mc.publishStats = {\n all: pstats.getAll(),\n scheduled: pstats.getScheduled(),\n sent: pstats.getSent(),\n processing: pstats.getProcessing(),\n abandoned: pstats.getAbandoned(),\n failure: pstats.getFailure(),\n };\n }\n\n const dstats = o?.getDeliveryStats();\n if (dstats) {\n mc.deliveryStats = {\n processed: dstats.getProcessed(),\n dropped: dstats.getDropped(),\n delivered: dstats.getDelivered(),\n deferred: dstats.getDeferred(),\n bounce: dstats.getBounce(),\n blocked: dstats.getBlocked(),\n };\n }\n\n const estats = o?.getEngagementStats();\n if (estats) {\n mc.engagementStats = {\n open: estats.getOpen(),\n unique_open: estats.getUniqueOpen(),\n click: estats.getClick(),\n unique_click: estats.getUniqueClick(),\n spam: estats.getSpam(),\n unsubscribe: estats.getUnsubscribe(),\n group_unsubscribe: estats.getGroupUnsubscribe(),\n group_resubscribe: estats.getGroupResubscribe(),\n\n widget_open: estats.getWidgetOpen(),\n unique_widget_open: estats.getUniqueWidgetOpen(),\n widget_reservation: estats.getWidgetReservation(),\n unique_widget_reservation: estats.getUniqueWidgetReservation(),\n widget_unsubscribe: estats.getWidgetUnsubscribe(),\n };\n }\n\n const cstats = o?.getConversionStats();\n if (cstats) {\n mc.conversionStats = {\n all: cstats.getAll(),\n imminent: cstats.getImminent(),\n unique_all: cstats.getUniqueAll(),\n unique_imminent: cstats.getUniqueImminent(),\n guests_all: cstats.getGuestsAll(),\n guests_imminent: cstats.getGuestsImminent(),\n };\n }\n\n return mc;\n }\n\n toGrpcModel(): pbm.MarketingCampaign {\n const o = new pbm.MarketingCampaign();\n\n o.setId(this.id);\n if (this.locale) o.setLocale(this.locale);\n if (this.title) o.setTitle(this.title);\n if (this.subject) o.setSubject(this.subject);\n if (this.previewText) o.setPreviewText(this.previewText);\n if (this.contactFilter) {\n o.setContactFilterId(this.contactFilter.id);\n o.setContactFilterName(this.contactFilter.name);\n o.setContactFilterData(this.contactFilter.data ?? '');\n }\n if (this.templateName) o.setTemplateName(this.templateName);\n if (this.templateDesign) o.setTemplateDesign(this.templateDesign);\n if (this.templateHtml) o.setTemplateHtml(this.templateHtml);\n if (this.templatePlaintext) o.setTemplatePlaintext(this.templatePlaintext);\n\n return o;\n }\n\n static compare(o1: MarketingCampaign, o2: MarketingCampaign): number {\n const d1 = o1.dtSend ?? o1.dtCreate;\n const d2 = o2.dtSend ?? o2.dtCreate;\n\n const res = d2!.getTime() - d1!.getTime();\n if (res !== 0) return res;\n return o2.id - o1.id;\n }\n\n clone(): MarketingCampaign {\n const copy = new MarketingCampaign();\n Object.assign(copy, this);\n return copy;\n }\n}\n\nexport interface MarketingCampaignListParams {\n beginDateIndex: number,\n endDateIndex: number,\n showArchived: boolean,\n}\n\nexport interface MarketingCampaignFilter {\n dateRange: DateRange;\n\n showArchived: boolean\n}\n\nexport function defaultMarketingCampaignFilter(): MarketingCampaignFilter {\n return {\n dateRange: dateRangeFromPeriod(DateRangePeriod.Last90Days),\n showArchived: false,\n };\n}\n\nexport function areMarketingCampaignFiltersSame(o1: MarketingCampaignFilter, o2: MarketingCampaignFilter): boolean {\n if (o1.dateRange.beginDate.getTime() !== o2.dateRange.beginDate.getTime()) return false;\n if (o1.dateRange.endDate.getTime() !== o2.dateRange.endDate.getTime()) return false;\n if (o1.showArchived !== o2.showArchived) return false;\n return true;\n}\n","/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\nimport { toMapById } from '@/model/model-utils';\n\nexport interface IModel {\n new?(): IModel,\n id: number,\n isDeleted?: boolean,\n // compare(o: IModel): number,\n // fromGrpcResponse(r: PBR, m?: MAP): IModel,\n // fromGrpcModel(o?: PBT, m?: MAP): IModel,\n}\n\nfunction findIndex>(entities: T[], startIndex: number, predicate: (o: T) => boolean): number {\n for (let i = startIndex; i < entities.length; i += 1) { if (predicate(entities[i])) return i; }\n return -1;\n}\n\nfunction sortedIndex>(entities: T[], entity: T, startIndex: number, compare: (o1: T, o2: T) => number, equal = false): number {\n let low = startIndex;\n let high = entities.length;\n if (high === 0) return equal ? -1 : 0;\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n const res = compare(entities[mid], entity);\n if (res === 0) return mid;\n if (res < 0) low = mid + 1;\n else high = mid;\n }\n\n return equal ? -1 : high;\n}\n\nfunction testSortedModelEntities>(entities: T[], compare: (o1: T, o2: T) => number) {\n for (let i = 1; i < entities.length; i += 1) {\n if (compare(entities[i - 1], entities[i]) > 0) throw Error('entities in wrong order!');\n }\n}\n\n/*\nexport function pushToSortedModelEntities>(entities: T[], newEntities: T[], compare: (o1: T, o2: T) => number) {\n newEntities.sort(compare);\n\n let index = -1;\n newEntities.forEach((o) => {\n if (o.isDeleted === true) return;\n index = sortedIndex(entities, o, index + 1, compare);\n entities.splice(index, 0, o);\n });\n\n // debug test sorted\n if (process.env.NODE_ENV === 'development') testSortedModelEntities(entities, compare);\n}\n\nexport function mergeSortedModelEntity>(entities: T[], entity: T, compare: (o1: T, o2: T) => number) {\n // find as if unsorted, order of new entity migt be different\n const i = entities.findIndex((o) => o.id === entity.id);\n\n // existing entity -> remove\n if (i >= 0) entities.splice(i, 1);\n\n // nondeleted entity -> insert\n if (entity.isDeleted !== true) {\n const index = sortedIndex(entities, entity, 0, compare);\n entities.splice(index, 0, entity);\n }\n\n // debug test sorted\n if (process.env.NODE_ENV === 'development') testSortedModelEntities(entities, compare);\n}\n\nexport function deleteModelEntity>(entities: T[], entity: T, compare: (o1: T, o2: T) => number) {\n const i = entities.findIndex((o) => o.id === entity.id);\n if (i >= 0) entities.splice(i, 1);\n\n // debug test sorted\n if (process.env.NODE_ENV === 'development') testSortedModelEntities(entities, compare);\n}\n*/\n\nexport function mergeSortedModelEntities>(entities: T[], newEntities: T[], compare: (o1: T, o2: T) => number): T[] {\n const addedEntities = [] as T[];\n\n let index = -1;\n newEntities.forEach((o) => {\n if (o.isDeleted) return;\n index = sortedIndex(entities, o, index + 1, compare);\n entities.splice(index, 0, o);\n addedEntities.push(o);\n });\n\n // debug test sorted\n if (process.env.NODE_ENV === 'development') testSortedModelEntities(entities, compare);\n\n return addedEntities;\n}\n\nexport function deleteModelEntities>(entities: T[], deleteEntities: T[]) {\n // find as if unsorted, order of new entities might be different\n const newEntitiesById = toMapById(deleteEntities);\n const deletedEntities = [] as T[];\n\n let index = 0;\n for (;;) {\n index = findIndex(entities, index, (o) => newEntitiesById.has(o.id));\n if (index < 0) break;\n deletedEntities.push(...entities.splice(index, 1));\n }\n\n return deletedEntities;\n}\n\nexport function addToCountMap>(map: Map, entities: T[], keyf: (o: T)=>string) {\n entities.forEach((e) => {\n const key = keyf(e);\n if (key) map.set(key, (map.get(key) ?? 0) + 1);\n });\n}\n\nexport function removeFromCountMap>(map: Map, entities: T[], keyf: (o: T)=>string) {\n entities.forEach((e) => {\n const key = keyf(e);\n if (key) map.set(key, (map.get(key) ?? 1) - 1);\n });\n}\n","import * as pbm from '@/grpc-pb//reservation_service_pb';\nimport * as pbs from '@/grpc-pb/service_manager_service_pb';\n\nimport ApiService from '@/model/Service';\nimport Tab from '@/model/Tab';\nimport {\n dateFlooredToDate, localDateAsInUnixUTCYMD, unixFromDate, unixUTCAsInLocalDateYMD,\n} from '@/services/time-utils';\nimport Currency from './currency';\n\nexport interface ReservationServiceMapping {\n tabsById: Map,\n currenciesById: Map,\n}\n\nexport interface ReservationServiceBlackout {\n blackoutStartDate: Date;\n blackoutEndDate: Date;\n}\n\nexport default class ReservationService extends ApiService {\n description: string = '';\n\n tags: string[] = [];\n\n imageUrl: string = '';\n\n localStartDate?: Date;\n\n localEndDate?: Date;\n\n localStartTime?: string;\n\n localEndTime?: string;\n\n minPartySize?: number;\n\n maxPartySize?: number;\n\n weekDays: number[] = [];\n\n tab?: Tab;\n\n duration?: number;\n\n locale?: string;\n\n code?: string;\n\n price?: number;\n\n isPricePerPerson?: boolean;\n\n currency?: Currency;\n\n isPromoted: boolean = false;\n\n isRequired: boolean = false;\n\n minMinutesInAdvance?: number;\n\n minMinutesToModify?: number;\n\n // blackoutStartDate?: Date;\n\n // blackoutEndDate?: Date;\n\n maxParallelBookings?: number;\n\n isActive: boolean = true;\n\n isDeleted: boolean = false;\n\n isDeposit: boolean = true;\n\n blackouts: ReservationServiceBlackout[] = [];\n\n static fromGrpcResponse(r: pbs.ReservationServiceResponse, m?: ReservationServiceMapping): ReservationService {\n const s = r.getService();\n return ReservationService.fromGrpcModel(s, m);\n }\n\n static fromGrpcModel(o?: pbm.ReservationService, m?: ReservationServiceMapping): ReservationService {\n const s = new ReservationService();\n\n s.id = o?.getId() ?? 0;\n s.title = o?.getTitle() ?? '';\n s.description = o?.getDescription() ?? '';\n s.tags = o?.getTagsList() ?? [];\n s.imageUrl = o?.getImageUrl() ?? '';\n s.order = o?.getOrder() ?? 0;\n s.localStartDate = localDateAsInUnixUTCYMD(o?.getStartDate());\n s.localEndDate = localDateAsInUnixUTCYMD(o?.getEndDate());\n s.localStartTime = o?.getStartTime() || undefined;\n s.localEndTime = o?.getEndTime() || undefined;\n s.minPartySize = o?.getMinPartySize() || undefined;\n s.maxPartySize = o?.getMaxPartySize() || undefined;\n s.weekDays = o?.getWeekDayList() ?? [];\n s.duration = o?.getDuration() || undefined;\n s.locale = o?.getLocale() || undefined;\n s.code = o?.getCode() || undefined;\n s.price = o?.getPrice() || undefined;\n s.isPricePerPerson = o?.getIsPricePerPerson() || false;\n s.isPromoted = o?.getIsPromoted() ?? false;\n s.isRequired = o?.getIsRequired() ?? false;\n s.minMinutesInAdvance = o?.getMinMinutesInAdvance() || undefined;\n s.minMinutesToModify = o?.getMinMinutesToModify() || undefined;\n // s.blackoutStartDate = localDateAsInUnixUTCYMD(o?.getBlackoutStartDate());\n // s.blackoutEndDate = localDateAsInUnixUTCYMD(o?.getBlackoutEndDate());\n s.maxParallelBookings = o?.getMaxParallelBookings() || undefined;\n s.isActive = o?.getIsActive() ?? true;\n s.isDeleted = o?.getIsDeleted() ?? false;\n s.color = o?.getColor().toUpperCase() || '#FF3D94';\n s.isDeposit = o?.getIsDeposit() ?? false;\n\n s.tab = m?.tabsById.get(o?.getTabId() ?? NaN);\n s.currency = m?.currenciesById.get(o?.getCurrencyId() ?? NaN);\n\n s.weekDays.sort();\n\n s.blackouts = o?.getBlackoutsList()?.map((bo) => ({\n blackoutStartDate: localDateAsInUnixUTCYMD(bo?.getBlackoutStartDate()) ?? dateFlooredToDate(new Date()),\n blackoutEndDate: localDateAsInUnixUTCYMD(bo?.getBlackoutEndDate()) ?? dateFlooredToDate(new Date()),\n })) ?? [];\n\n return s;\n }\n\n toGrpcModel(): pbm.ReservationService {\n const o = new pbm.ReservationService();\n\n o.setId(this.id);\n\n if (this.id) o.setId(this.id);\n if (this.title) o.setTitle(this.title);\n if (this.description) o.setDescription(this.description);\n if (this.tags) o.setTagsList(this.tags);\n if (this.imageUrl) o.setImageUrl(this.imageUrl);\n if (this.order) o.setOrder(this.order);\n if (this.localStartDate) o.setStartDate(unixUTCAsInLocalDateYMD(this.localStartDate)!);\n if (this.localEndDate) o.setEndDate(unixUTCAsInLocalDateYMD(this.localEndDate)!);\n if (this.localStartTime) o.setStartTime(this.localStartTime);\n if (this.localEndTime) o.setEndTime(this.localEndTime);\n if (this.minPartySize) o.setMinPartySize(this.minPartySize);\n if (this.maxPartySize) o.setMaxPartySize(this.maxPartySize);\n if (this.weekDays) o.setWeekDayList(this.weekDays);\n if (this.tab) o.setTabId(this.tab.id);\n if (this.duration) o.setDuration(this.duration);\n if (this.locale) o.setLocale(this.locale);\n if (this.price) o.setPrice(this.price);\n if (this.isPricePerPerson) o.setIsPricePerPerson(this.isPricePerPerson);\n if (this.currency) o.setCurrencyId(this.currency.id);\n if (this.code) o.setCode(this.code);\n\n if (this.isPromoted) o.setIsPromoted(this.isPromoted);\n if (this.isRequired) o.setIsRequired(this.isRequired);\n if (this.minMinutesInAdvance) o.setMinMinutesInAdvance(this.minMinutesInAdvance);\n if (this.minMinutesToModify) o.setMinMinutesToModify(this.minMinutesToModify);\n // if (this.blackoutStartDate) o.setBlackoutStartDate(unixUTCAsInLocalDateYMD(this.blackoutStartDate)!);\n // if (this.blackoutEndDate) o.setBlackoutEndDate(unixUTCAsInLocalDateYMD(this.blackoutEndDate)!);\n if (this.maxParallelBookings) o.setMaxParallelBookings(this.maxParallelBookings);\n if (this.isActive) o.setIsActive(this.isActive);\n if (this.isDeleted) o.setIsDeleted(this.isDeleted);\n if (this.color) o.setColor(this.color);\n if (this.isDeposit) o.setIsDeposit(this.isDeposit);\n\n if (this.blackouts && this.blackouts.length >= 0) {\n o.setBlackoutsList(this.blackouts.map((b) => {\n const bo = new pbm.ReservationServiceBlackout();\n bo.setBlackoutStartDate(unixUTCAsInLocalDateYMD(b.blackoutStartDate)!);\n bo.setBlackoutEndDate(unixUTCAsInLocalDateYMD(b.blackoutEndDate)!);\n return bo;\n }));\n }\n\n return o;\n }\n\n static compare(o1: ReservationService, o2: ReservationService): number {\n const res = o1.order - o2.order;\n if (res !== 0) return res;\n return o1.id - o2.id;\n }\n\n clone(): ReservationService {\n const copy = new ReservationService();\n Object.assign(copy, this);\n copy.tags = Array.from(this.tags);\n copy.blackouts = Array.from(this.blackouts);\n return copy;\n }\n}\n","import ApiAttachment from '@/model/Attachment';\nimport * as pbm from '@/grpc-pb/reservation_pb';\n\nexport default class Attachment extends ApiAttachment {\n static fromGrpcModel(o?: pbm.ReservationAttachment): Attachment {\n const e = new Attachment();\n\n e.name = o?.getName() ?? '';\n e.url = o?.getUrl() ?? '';\n\n return e;\n }\n}\n","import * as pbm from '@/grpc-pb/reservation_pb';\nimport * as pbs from '@/grpc-pb/feedback_service_pb';\n\nimport ApiReservation, {\n ReservationMapping, ReservationSource, ReservationStatus, ReservationType,\n} from '@/model/Reservation';\nimport { dateFromDateTimeString } from '@/services/time-utils';\nimport { ContactMapping } from '@/model/Contact';\nimport Label from '@/model/Label';\nimport { fixedPaymentInfo } from '@/services/billing-utils';\nimport Contact from './contact';\nimport Attachment from './attachment';\n\nexport default class Reservation extends ApiReservation {\n static fromGrpcResponse(r: pbs.FeedbackReservationResponse, m?: ReservationMapping): Reservation {\n const c = r.getReservation();\n return Reservation.fromGrpcModel(c, m);\n }\n\n static fromGrpcModel(o?: pbm.Reservation, m?: ReservationMapping): Reservation {\n const reservationTypeValues = ['', ReservationSource.Online, ReservationSource.User];\n const reservationStatusValues = ['',\n ReservationStatus.Planned,\n ReservationStatus.Seated,\n ReservationStatus.CheckedIn,\n ReservationStatus.CheckedOut,\n ReservationStatus.Confirmed,\n ReservationStatus.NonConfirmed,\n ReservationStatus.WaitingList,\n ReservationStatus.Cancelled,\n ReservationStatus.NoShow,\n ReservationStatus.Spam,\n ReservationStatus.Deleted,\n 'pending',\n ];\n\n const r = new Reservation();\n\n r.id = o?.getId() ?? 0;\n r.partySize = o?.getPartySize() ?? 0;\n r.dateBegin = dateFromDateTimeString(o?.getDtBegin()) ?? new Date();\n r.dateEnd = dateFromDateTimeString(o?.getDtEnd()) ?? new Date();\n r.fixedEnding = o?.getEndFixed() ?? false;\n r.holdTabItems = o?.getHoldTabItems() ?? false;\n r.reservationType = reservationTypeValues[o?.getReservationType() ?? 0] as ReservationSource;\n r.code = o?.getReservationCode() ?? null;\n r.status = reservationStatusValues[o?.getReservationStatus() ?? 0] as ReservationStatus;\n r.isStarred = o?.getIsStarred() ?? false;\n r.isFlagged = o?.getIsFlagged() ?? false;\n r.isUnread = o?.getIsUnread() ?? false;\n r.dateCreated = o ? new Date(o.getDtCreate() * 1000) : new Date();\n r.dateEdited = o ? new Date(o.getDtUpdate() * 1000) : new Date();\n\n r.tab = m?.tabsById.get(o?.getTabId() ?? NaN) ?? null;\n r.service = m?.servicesById.get(o?.getServiceId() ?? NaN) ?? null;\n r.employeeCreated = m?.employeesById.get(o?.getEmployeeIdCreate() ?? NaN) ?? null;\n r.employeeEdited = m?.employeesById.get(o?.getEmployeeIdLastEdit() ?? NaN) ?? null;\n r.reservationCampaign = o?.getReservationCampaign() ?? null;\n\n r.label = o?.getReservationLabel()\n ? m?.labelsByText.get(o?.getReservationLabel()) ?? new Label({ labelText: o?.getReservationLabel() })\n : null;\n\n const reservedTabItems = o?.getTabItemsIdsList() ?? [];\n r.tabItems = reservedTabItems.flatMap((ti) => m?.tabItemsById?.get(ti) ?? []);\n r.tabItems.sort((o1, o2) => o1.order - o2.order);\n\n r.contact = Contact.fromGrpcModel(o?.getContact(), m as ContactMapping);\n\n r.notes = o?.getNoteText() || null;\n r.paymentInfo = o?.getPaymentInfo() ? fixedPaymentInfo(o.getPaymentInfo()) : undefined;\n r.attachments = (o?.getAttachmentsList() ?? []).map((a) => Attachment.fromGrpcModel(a));\n\n r.rating = o?.getRating() ?? null;\n\n r.bookingType = ReservationType.Reservation;\n r.updateBookingType();\n r.updateSlotsAndTimes();\n\n return r;\n }\n}\n","/* eslint-disable vue/max-len, max-len */\nimport httpClient from '@/api/http-client';\nimport debounce from 'lodash.debounce';\n\n// const validEmailAddressRegex = /^[a-zA-Z0-9!#$%&'*+/=?^_` + \"`\" + `{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_` + \"`\" + `{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/;\nconst validEmailAddressRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nlet requestEmailAddress = '';\nlet requestResolvers = [] as ((value: boolean) => void)[];\n\nconst validateEmailAddressDebounced = debounce(\n async (emailAddress: string) => {\n let valid = false;\n try {\n valid = await httpClient.validateEmailAddress(emailAddress);\n } catch (e) {\n console.log('validateEmailAddress error:', e);\n }\n if (requestEmailAddress === emailAddress) { requestResolvers.forEach((rr) => rr(valid)); requestResolvers = []; }\n },\n 300,\n { leading: false, trailing: true },\n);\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function validateEmailAddress(emailAddress: string): Promise {\n if (!emailAddress.match(validEmailAddressRegex)) return false;\n\n return new Promise((resolve) => {\n requestEmailAddress = emailAddress;\n requestResolvers.push(resolve);\n validateEmailAddressDebounced(emailAddress);\n });\n}\n","/* eslint-disable vue/max-len */\n/* eslint-disable camelcase */\nimport {\n required, max, min, email, alpha_num, min_value, max_value, integer, numeric,\n} from 'vee-validate/dist/rules';\nimport { extend } from 'vee-validate';\nimport VueI18n from 'vue-i18n';\nimport { FilterDescriptor } from '@/services/filter/filter-descriptor';\nimport { FilterFieldRule, FilterRuleType } from '@/services/filter/filter-rule';\n// eslint-disable-next-line import/extensions\nimport { CountryCode, isValidPhoneNumber } from 'libphonenumber-js/max';\nimport { validateEmailAddress } from '@/services/email-validation';\nimport VueLocalizedFormatter from './vue-localized-formatter/src/formatter';\n\nexport default (i18n: VueI18n, localized: VueLocalizedFormatter) => {\n extend('min', {\n ...min,\n message: (_, values) => i18n.tc('error.min_length_is_x', undefined, values),\n });\n extend('max', {\n ...max,\n message: (_, values) => i18n.tc('error.max_length_is_x', undefined, values),\n });\n extend('min_value', {\n ...min_value,\n message: (_, values) => i18n.tc('error.min_value_is_x', undefined, values),\n });\n extend('max_value', {\n ...max_value,\n message: (_, values) => i18n.tc('error.max_value_is_x', undefined, values),\n });\n extend('email', {\n ...email,\n message: (_, values) => i18n.tc('error.field_not_valid_email', undefined, values),\n });\n extend('email', email);\n extend('alpha_num', {\n ...alpha_num,\n message: (_, values) => i18n.tc('error.field_not_valid_alphanum', undefined, values),\n });\n extend('integer', {\n ...integer,\n message: (_, values) => i18n.tc('error.field_integer_value', undefined, values),\n });\n\n extend('required', {\n ...required,\n message: (_, values) => i18n.tc('error.required_field', undefined, values),\n });\n\n extend('numeric', {\n ...numeric,\n message: (_, values) => i18n.tc('error.field_numeric_value', undefined, values),\n });\n\n extend('password', {\n params: ['target'],\n validate(value, params) {\n const { target } = params as Record;\n return value === target;\n },\n message: (_, values) => i18n.tc('error.password_confirmation_doesnt_match', undefined, values),\n });\n\n extend('goodpassword', {\n validate(value, _) {\n if (value === undefined) return false;\n const goodPasswordRx = /^(?=.*?[A-Za-z])(?=.*?[0-9]).{6,}$/;\n return (value.match(goodPasswordRx));\n },\n message: (_, values) => i18n.tc('label.weak_password', undefined, values),\n });\n\n extend('gteq', {\n params: ['target'],\n validate(value, params) {\n const { target } = params as Record;\n if (target === undefined || target === null) {\n return true;\n }\n return value >= target;\n },\n message: (_, values) => i18n.tc('error.field_larger_or_equal_field', undefined, values),\n });\n\n extend('lteq', {\n params: ['target'],\n validate(value, params) {\n const { target } = params as Record;\n if (target === undefined || target === null) {\n return true;\n }\n return value <= target;\n },\n message: (_, values) => i18n.tc('error.field_less_or_equal_field', undefined, values),\n });\n\n extend('gteqTime', {\n params: ['target'],\n validate(value, params) {\n const { target } = params as Record;\n if (target === undefined || target === null) {\n return true;\n }\n return value >= target;\n },\n message: (_, values) => {\n // eslint-disable-next-line no-underscore-dangle\n const formattedTgt = localized.hourMinTextFrom24hr(values._target_);\n const vals = { _target_: formattedTgt };\n return i18n.tc('error.field_larger_or_equal_field', undefined, vals);\n },\n });\n\n extend('lteqTime', {\n params: ['target'],\n validate(value, params) {\n const { target } = params as Record;\n if (target === undefined || target === null) {\n return true;\n }\n return value <= target;\n },\n message: (_, values) => {\n // eslint-disable-next-line no-underscore-dangle\n const formattedTgt = localized.hourMinTextFrom24hr(values._target_);\n const vals = { _target_: formattedTgt };\n return i18n.tc('error.field_less_or_equal_field', undefined, vals);\n },\n });\n\n extend('gteqDate', {\n params: ['target'],\n validate(value, params) {\n const { target } = params as Record;\n if (target === undefined || target === null) {\n return true;\n }\n return value >= target;\n },\n message: (_, values) => {\n // eslint-disable-next-line no-underscore-dangle\n const formattedTgt = localized.fullDateText(values._target_);\n const vals = { _target_: formattedTgt };\n return i18n.tc('error.field_larger_or_equal_field', undefined, vals);\n },\n });\n\n extend('lteqDate', {\n params: ['target'],\n validate(value, params) {\n const { target } = params as Record;\n if (target === undefined || target === null) {\n return true;\n }\n return value <= target;\n },\n message: (_, values) => {\n // eslint-disable-next-line no-underscore-dangle\n const formattedTgt = localized.fullDateText(values._target_);\n const vals = { _target_: formattedTgt };\n return i18n.tc('error.field_less_or_equal_field', undefined, vals);\n },\n });\n\n extend('cfrownoop', {\n params: ['descriptor'],\n validate(value, params) {\n const { descriptor } = params as Record;\n const filterDescriptor = descriptor as FilterDescriptor;\n const rule = value as FilterFieldRule;\n if (!filterDescriptor) return false;\n if (rule.field === '') return true;\n if (rule.type === FilterRuleType.None) return true;\n return filterDescriptor.validateRule(rule, false)?.toString() ?? true;\n },\n // message: (_, values) => {\n // // eslint-disable-next-line no-underscore-dangle\n // const formattedTgt = localized.hourMinTextFrom24hr(values._target_);\n // const vals = { _target_: formattedTgt };\n // return i18n.tc('error.field_less_or_equal_field', undefined, vals);\n // },\n });\n\n extend('cfrow', {\n params: ['descriptor'],\n validate(value, params) {\n const { descriptor } = params as Record;\n const filterDescriptor = descriptor as FilterDescriptor;\n const rule = value as FilterFieldRule;\n if (!filterDescriptor) return false;\n if (rule.field === '') return true;\n if (rule.type === FilterRuleType.None) return true;\n return filterDescriptor.validateRule(rule)?.toString() ?? true;\n },\n // message: (_, values) => {\n // // eslint-disable-next-line no-underscore-dangle\n // const formattedTgt = localized.hourMinTextFrom24hr(values._target_);\n // const vals = { _target_: formattedTgt };\n // return i18n.tc('error.field_less_or_equal_field', undefined, vals);\n // },\n });\n\n extend('validPhone', {\n params: ['cc'],\n validate(value, params) {\n const { cc } = params as Record;\n return isValidPhoneNumber(value, cc as CountryCode);\n },\n message: (_, values) => i18n.t('error.phone_number_invalid') as string,\n });\n\n extend('validEmail', {\n validate(value) { return validateEmailAddress(value); },\n message: (_, values) => i18n.t('error.field_not_valid_email') as string,\n });\n\n // extend('filterrow',\n // (value, params) => {\n // const { descriptor } = params as Record;\n // const filterDescriptor = descriptor as FilterDescriptor;\n // const rule = value as FilterFieldRule;\n // if (!filterDescriptor) return false;\n // return filterDescriptor.validateRule(rule) ?? true;\n // });\n\n // extend('intlPhone', {\n // validate(value, _) {\n // if (value === undefined) return false;\n // const phoneRegex = /^\\+[1-9]?[0-9]{7,14}$/;\n // const stripRegex = /[ ().[\\]-{}/\\\\|<>#]+/g;\n // const stripped = value.replace(stripRegex, '');\n // return (stripped.match(phoneRegex));\n // },\n // message: (_, values) => i18n.tc('error.field_incorrect_phone_number_format', undefined, values),\n // });\n\n extend('phone', {\n validate(value, _) {\n if (value === undefined) return false;\n const phoneRegex = /^(\\+[1-9]{0,3})?[0-9]{4,15}$/;\n const stripRegex = /[ ()\\\\.-]+/g;\n const stripped = value.replace(stripRegex, '');\n return (stripped.match(phoneRegex));\n },\n message: (_, values) => i18n.tc('error.phone_number_invalid', undefined, values),\n });\n\n extend('url', {\n validate(value, _) {\n try {\n // eslint-disable-next-line no-new\n new URL(value as string);\n } catch {\n return false;\n }\n return true;\n },\n message: (_, values) => i18n.tc('error.invalid_url', undefined, values),\n });\n\n extend('amount', {\n validate(value, _) {\n if (!value) return true;\n return value.match(/^\\d+[\\\\.,]?\\d?\\d?$/);\n },\n message: (_, values) => i18n.tc('error.invalid_amount', undefined, values),\n });\n\n extend('giftcardNumber', {\n validate(value, _) {\n return value.match(/^([a-zA-Z0-9]{4}-){3}[a-zA-Z0-9]{4}$/);\n },\n message: (_, values) => i18n.tc('error.invalid_giftcard_format', undefined, values),\n });\n\n extend('minMaxAmount', {\n params: ['minVal', 'maxVal', 'curr', 'div'],\n validate(value, params) {\n if (!value) return true;\n\n const conv = (num: string|number) => (typeof num === 'string' ? parseFloat(num.replaceAll(',', '.')) : num);\n\n const {\n minVal, maxVal, div, curr,\n } = params as Record;\n const predMin = (num: string|number) => minVal === undefined || conv(num) >= conv(minVal);\n const predMax = (num: string|number) => maxVal === undefined || conv(num) <= conv(maxVal);\n\n const vals = {\n max: localized.currencyString(maxVal / div, curr),\n min: localized.currencyString(minVal / div, curr),\n };\n\n if (Array.isArray(value)) {\n if (value.find((num) => !predMin(num))) return i18n.tc('error.min_value_is_x', undefined, vals);\n if (value.find((num) => !predMax(num))) return i18n.tc('error.max_value_is_x', undefined, vals);\n } else {\n if (!predMin(value)) return i18n.tc('error.min_value_is_x', undefined, vals);\n if (!predMax(value)) return i18n.tc('error.max_value_is_x', undefined, vals);\n }\n\n return true;\n },\n });\n};\n","import Sortable from 'sortablejs';\nimport { DirectiveFunction } from 'vue';\n\ninterface ReorderTable extends DirectiveFunction {}\n\nconst ReorderTable = {\n bind(el: any, _: any, vnode: any) {\n const options = {\n handle: '.reorder-handle',\n animation: 150,\n onUpdate(event: any) {\n vnode.child.$emit('sorted', event);\n },\n };\n Sortable.create(el.getElementsByTagName('tbody')[0], options);\n },\n};\n\nexport default ReorderTable;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-app',{class:[_setup.browserhackClass]},[_c('v-overlay',{staticStyle:{\"z-index\":\"1000000\"},attrs:{\"value\":_setup.overlay}},[_c('v-progress-circular',{attrs:{\"indeterminate\":\"\",\"size\":\"64\"}})],1),_c('v-snackbar',{attrs:{\"color\":_setup.snackbarColor,\"timeout\":_setup.snackbarTimeout,\"top\":\"\"},model:{value:(_setup.snackbar),callback:function ($$v) {_setup.snackbar=$$v},expression:\"snackbar\"}},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('v-icon',{staticClass:\"pr-3 mb-1\",attrs:{\"color\":_setup.snackbarTextColor}},[_vm._v(\" \"+_vm._s(_setup.snackbarIcon)+\" \")]),_c('span',{class:`${_setup.snackbarTextColor}--text text-body-1 font-weight-medium text-center`},[_vm._v(_vm._s(_setup.snackbarText))])],1)]),(_vm.$route.meta?.public === true || _vm.$route.meta?.single === true)?_c('router-view'):_c('main-view'),(_setup.updateAvailable)?_c('v-snackbar',{staticStyle:{\"z-index\":\"100001\"},attrs:{\"value\":_setup.updateAvailable,\"bottom\":\"\",\"dark\":\"\",\"timeout\":-1},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"blue\",\"elevation\":\"0\",\"small\":\"\"},on:{\"click\":_setup.refreshApp}},[_vm._v(\" \"+_vm._s(_vm.$t('button.update_now'))+\" \")])]},proxy:true}],null,false,3302143381)},[_vm._v(\" \"+_vm._s(_vm.$t('label.app_update_available'))+\" \")]):_vm._e(),(_setup.applyBrowserhackScrollbar)?_c(_setup.BrowserhackScrollbar):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Ref, computed, ref } from 'vue';\n\nexport interface BeforeInstallPromptEvent extends Event {\n readonly platforms: Array\n readonly userChoice: Promise<{\n outcome: 'accepted' | 'dismissed'\n platform: string\n }>\n prompt(): Promise\n}\n\ntype PwaInstallInstance = {\n isInstallable: Ref;\n installPrompt: () => void;\n};\n\nexport default (() => {\n const deferredEvent = ref(undefined as undefined | BeforeInstallPromptEvent);\n\n window.addEventListener('beforeinstallprompt', (e: Event) => {\n // console.log('Captured beforeinstall event:');\n // console.log(e);\n e.preventDefault();\n if (!navigator.userAgent.toLowerCase().includes('android')) { return; }\n\n deferredEvent.value = e as BeforeInstallPromptEvent;\n });\n\n const installPrompt = async () => {\n if (!deferredEvent.value) { return; }\n\n deferredEvent.value.prompt();\n const { outcome } = await deferredEvent.value.userChoice;\n\n // The deferredPrompt can only be used once.\n deferredEvent.value = undefined;\n\n // Act on the user's choice\n if (outcome === 'accepted') {\n console.log('User accepted the install prompt.');\n } else if (outcome === 'dismissed') {\n console.log('User dismissed the install prompt');\n }\n };\n\n const isInstallable = computed(() => deferredEvent.value !== undefined);\n\n const instance: PwaInstallInstance = {\n isInstallable, installPrompt,\n };\n\n return () => instance;\n})();\n","import Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class CampaignFilterApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.campaign-filter', {\n categories: [GstplnAppCategory.Extensions],\n hasMenuItem: true,\n routeConfig:\n [{ route: '', f: () => import('@/components/apps/campaign-filter/CampaignFilter.vue') }],\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport i18n from '@/plugins/i18n';\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class ExportApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.export', {\n categories: [GstplnAppCategory.Extensions],\n hasMenuItem: true,\n routeConfig:\n [{ route: '', f: () => import('@/components/apps/export/Export.vue') }],\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport i18n from '@/plugins/i18n';\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class StripeApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.stripe', {\n categories: [GstplnAppCategory.Payments],\n configComponentImportFnc: () => import('@/components/apps/stripe/SettingsDialog.vue'),\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport i18n from '@/plugins/i18n';\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class StripeConnectApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.stripe-connect', {\n categories: [GstplnAppCategory.Payments],\n configComponentImportFnc: () => import('@/components/apps/stripe-connect/SettingsDialog.vue'),\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class DyflexisApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.dyflexis', {\n categories: [GstplnAppCategory.Integrations],\n allowedCountries: ['NL'],\n hasMenuItem: false,\n configComponentImportFnc: () => import('@/components/apps/dyflexis/SettingsDialog.vue'),\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class DyflexisApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.booq-planner', {\n categories: [GstplnAppCategory.Integrations],\n hasMenuItem: false,\n configComponentImportFnc: () => import('@/components/apps/booq-planner/SettingsDialog.vue'),\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport i18n from '@/plugins/i18n';\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class SimpleCampaignApp extends GstplnApp {\n constructor(vue: Vue, id: string, p?: { categories?: GstplnAppCategory[], allowedCountries?: string[]}) {\n super(vue, id, {\n categories: p?.categories,\n allowedCountries: p?.allowedCountries,\n configComponentImportFnc: () => import('@/components/apps/simpleCampaignApp/SettingsDialog.vue'),\n configBeforeInstall: false,\n });\n }\n}\n","import Vue from 'vue';\nimport i18n from '@/plugins/i18n';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class GiftcardsApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.giftcards', {\n categories: [GstplnAppCategory.Extensions],\n hasMenuItem: true,\n appConfigRoute: 'giftcards/settings',\n routeConfig:\n [\n {\n title: i18n.tc('app.giftcards.label.redeem'),\n titleKey: 'app.giftcards.label.redeem',\n route: 'redeem',\n f: () => import('@/components/apps/giftcards/GiftcardRedeemView.vue'),\n },\n {\n route: '/giftcard/:code',\n f: () => import('@/components/apps/giftcards/GiftcardRedeemView.vue'),\n },\n {\n title: i18n.tc('app.giftcards.label.transactions'),\n titleKey: 'app.giftcards.label.transactions',\n route: 'cards',\n f: () => import('@/components/apps/giftcards/GiftcardTxListView.vue'),\n },\n {\n title: i18n.tc('menu.settings'),\n titleKey: 'menu.settings',\n route: 'settings',\n f: () => import('@/components/apps/giftcards/GiftcardSettingsView.vue'),\n },\n ],\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class AnnoncerApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.annoncer', {\n categories: [GstplnAppCategory.Integrations],\n configComponentImportFnc: () => import('@/components/apps/annoncer/SettingsDialog.vue'),\n });\n }\n}\n","/* eslint-disable class-methods-use-this */\nimport Vue from 'vue';\nimport GstplnApp, { GstplnAppCategory } from '../app';\n\nexport default class BookDinnersApp extends GstplnApp {\n constructor(vue: Vue) {\n super(vue, 'app.bookdinners', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL'],\n configComponentImportFnc: () => import('@/components/apps/bookdinners/SettingsDialog.vue'),\n });\n }\n}\n","/* eslint-disable no-param-reassign */\nimport { GstplnAppCategory } from '@/components/apps/app';\nimport Vue from 'vue';\n\nimport CampaignFilterApp from '@/components/apps/campaign-filter/campaign-filter';\nimport ExportApp from '@/components/apps/export/export';\nimport StripeApp from '@/components/apps/stripe/stripe';\nimport StripeConnectApp from '@/components/apps/stripe-connect/stripe-connect';\nimport DyflexisApp from '@/components/apps/dyflexis/dyflexis';\nimport BooqPlannerApp from '@/components/apps/booq-planner/booq-planner';\nimport SimpleCampaignApp from '@/components/apps/simpleCampaignApp/simpleCampaignApp';\nimport GiftcardsApp from '@/components/apps/giftcards/giftcards';\nimport AnnoncerApp from '@/components/apps/annoncer/annoncer';\nimport BookDinnersApp from '@/components/apps/bookdinners/bookdinners';\nimport { initializeApps } from './apps';\n\nexport default function createApps(vue: Vue) {\n const apps = [\n new CampaignFilterApp(vue),\n new ExportApp(vue),\n\n new SimpleCampaignApp(vue, 'app.actievandedag', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL'],\n }),\n\n new SimpleCampaignApp(vue, 'app.diningcity', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL'],\n }),\n\n new SimpleCampaignApp(vue, 'app.heerlijk', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL'],\n }),\n\n new SimpleCampaignApp(vue, 'app.socialdeal', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL'],\n }),\n\n new SimpleCampaignApp(vue, 'app.hightea', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL'],\n }),\n new SimpleCampaignApp(vue, 'app.gault-millau', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL', 'BE', 'FR'],\n }),\n new SimpleCampaignApp(vue, 'app.unbookables', {\n categories: [GstplnAppCategory.BookingPartners],\n allowedCountries: ['NL'],\n }),\n new AnnoncerApp(vue),\n new BookDinnersApp(vue),\n new SimpleCampaignApp(vue, 'app.breeze-social', { categories: [GstplnAppCategory.BookingPartners] }),\n new SimpleCampaignApp(vue, 'app.nappkin', { categories: [GstplnAppCategory.BookingPartners] }),\n new SimpleCampaignApp(vue, 'app.my-lucky-table', { categories: [GstplnAppCategory.BookingPartners] }),\n\n new SimpleCampaignApp(vue, 'app.shiftbase', { categories: [GstplnAppCategory.Integrations] }),\n new SimpleCampaignApp(vue, 'app.workfeed', { categories: [GstplnAppCategory.Integrations] }),\n new SimpleCampaignApp(vue, 'app.mice', { categories: [GstplnAppCategory.Integrations] }),\n\n new StripeApp(vue),\n new StripeConnectApp(vue),\n new DyflexisApp(vue),\n new BooqPlannerApp(vue),\n new GiftcardsApp(vue),\n ];\n\n initializeApps(apps);\n}\n","import activityIndicator from '@/plugins/activity-indicator-plugin/activity-indicator';\nimport { computed, getCurrentInstance, ref } from 'vue';\n\nconst activityCounter = ref(0);\n\nexport default function useActivityIndicator() {\n const showActivity = (on: boolean) => {\n if (on) { activityCounter.value += 1; } else if (!on && activityCounter.value > 0) activityCounter.value -= 1;\n console.log(`Activity Counter: ${activityCounter.value}`);\n };\n\n const overlay = computed(() => activityCounter.value > 0);\n\n activityIndicator.show = () => showActivity(true);\n activityIndicator.hide = () => showActivity(false);\n getCurrentInstance()?.proxy.$root.$on('activity-indicator', showActivity);\n\n return { overlay, showActivity };\n}\n","import { isSafariOS } from '@/util/common';\nimport { computed, ref } from 'vue';\n\nexport default function useBrowserHacks() {\n // Microsoft Edge Scrollbar fix\n const applyBrowserhackScrollbar = ref(false);\n\n const scrollDiv = document.createElement('div');\n scrollDiv.className = 'scrollbar-measure';\n document.body.appendChild(scrollDiv);\n\n const scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n if (scrollbarWidth > 0) {\n document.documentElement.classList.add('ms-fixed-scrollbar');\n applyBrowserhackScrollbar.value = true;\n }\n\n document.body.removeChild(scrollDiv);\n\n // Apply scroll bar fix on ios\n const browserhackClass = computed(() => (isSafariOS() ? 'gp-app-wrap-iosfix' : ''));\n\n return { applyBrowserhackScrollbar, browserhackClass };\n}\n","import toast from '@/plugins/toast-plugin/toast';\nimport { getCurrentInstance, ref } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\nexport default function useToastInit() {\n // snackbar\n const snackbar = ref(false);\n const snackbarText = ref('' as string | TranslateResult);\n const snackbarIcon = ref('');\n const snackbarColor = ref('');\n const snackbarTextColor = ref('');\n const snackbarTimeout = ref(2000);\n\n const showSuccess = (messge: string | TranslateResult) => {\n snackbarColor.value = 'success';\n snackbarText.value = messge;\n snackbarTimeout.value = 2000;\n snackbarIcon.value = 'mdi-check';\n snackbarTextColor.value = 'white';\n snackbar.value = true;\n };\n\n const showError = (messge: string | TranslateResult) => {\n snackbarColor.value = 'error';\n snackbarText.value = messge;\n snackbarTimeout.value = 5000;\n snackbarIcon.value = 'mdi-alert';\n snackbarTextColor.value = 'white';\n snackbar.value = true;\n };\n\n const showSuccessDelayed = (messge: string | TranslateResult) => {\n snackbarColor.value = 'warning';\n snackbarText.value = messge;\n snackbarTimeout.value = 5000;\n snackbarIcon.value = 'mdi-clock-time-three-outline';\n snackbarTextColor.value = 'black';\n snackbar.value = true;\n };\n\n toast.success = showSuccess;\n toast.error = showError;\n toast.successDelayed = showSuccessDelayed;\n\n getCurrentInstance()?.proxy.$root.$on('alert-success', showSuccess);\n getCurrentInstance()?.proxy.$root.$on('alert-error', showError);\n getCurrentInstance()?.proxy.$root.$on('alert-delayed', showSuccessDelayed);\n\n return {\n snackbar, snackbarText, snackbarIcon, snackbarColor, snackbarTextColor, snackbarTimeout,\n };\n}\n","import { ref } from 'vue';\nimport useActivityIndicator from './activity-indicator';\n\nexport default function usePwaUpdate() {\n const { showActivity } = useActivityIndicator();\n\n const refreshing = ref(false);\n const registration = ref(null as null | ServiceWorkerRegistration);\n const updateAvailable = ref(false);\n\n // Called when the user accepts the update\n const refreshApp = () => {\n updateAvailable.value = false;\n // Make sure we only send a 'skip waiting' message if the SW is waiting\n if (!registration.value || !registration.value.waiting) return;\n // send message to SW to skip the waiting and activate the new SW\n registration.value.waiting.postMessage({ type: 'SKIP_WAITING' });\n window.location.reload();\n };\n\n // Listen for SW update notification\n const updateBecameAvailable = (event: any) => {\n registration.value = event.detail;\n updateAvailable.value = true;\n };\n\n // Prevent multiple refreshes\n if (navigator.serviceWorker) {\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n if (refreshing.value) return;\n refreshing.value = true;\n showActivity(true);\n // Here the actual reload of the page occurs\n window.location.reload();\n });\n }\n\n document.addEventListener('swUpdated', updateBecameAvailable, { once: true });\n\n // Force Check for update every app activation\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'visible') {\n console.log('Checking for updates...');\n navigator.serviceWorker.getRegistration().then(\n (r) => (r ? r.update() : console.log('Service Worker Not Found!')),\n );\n }\n });\n\n return { updateAvailable, refreshApp };\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport {\n computed, defineAsyncComponent, getCurrentInstance, onMounted, ref, watch,\n} from 'vue';\nimport usePwaInstall from '@/composables/pwa-install';\nimport createApps from './util/create-apps';\nimport setLanguage from './plugins/i18n-locale';\nimport TimeZone from './model/TimeZone';\nimport { useVuetify } from './components/helpers/vue2-helpers';\nimport i18n from './plugins/i18n';\nimport store from './store/store';\nimport useActivityIndicator from './composables/activity-indicator';\nimport useBrowserHacks from './components/browserhacks/browserhacks';\nimport useToastInit from './composables/toast-init';\nimport usePwaUpdate from './composables/pwa-update';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'App',\n setup(__props) {\n\nusePwaInstall();\n\nconst BrowserhackScrollbar = defineAsyncComponent(() => import('@/components/browserhacks/BrowserhackScrollbar.vue'));\nconst { applyBrowserhackScrollbar, browserhackClass } = useBrowserHacks();\nconst vuetify = useVuetify();\nconst { overlay } = useActivityIndicator();\n\nconst {\n snackbar, snackbarText, snackbarIcon, snackbarColor, snackbarTextColor, snackbarTimeout,\n} = useToastInit();\n\nconst { updateAvailable, refreshApp } = usePwaUpdate();\n\n// Handle Locale Change\nconst timeZoneCountry = computed(() => {\n const tzid = store.getters.timeZoneId;\n console.log(`[LOCALE] tzid: ${tzid}`);\n if (tzid === undefined) { return 'en-US'; }\n const cc = store.getters.sortedTimezones.find((tz: TimeZone) => tz.id === tzid)?.countryCode || 'US';\n console.log(`[LOCALE] ${cc}`);\n return cc;\n});\n\nwatch(timeZoneCountry, () => {\n console.log(`[LOCALE] changed country: ${timeZoneCountry.value}`);\n setLanguage(i18n.locale.split('-')[0], timeZoneCountry.value ?? '');\n});\n\n// Add lang tag to document when locale changes\nconst locale = computed(() => i18n.locale);\n\nconst updateDocumentLanguage = () => { document.documentElement.lang = locale.value; };\n\nwatch(locale, () => {\n setLanguage(i18n.locale.split('-')[0], timeZoneCountry.value ?? '');\n updateDocumentLanguage();\n});\n\n//\n\n// Add Root theme--dark class when theme is switched\nconst dark = computed(() => vuetify.theme.dark);\n\nconst updateDocumentTheme = () => {\n if (dark.value) {\n document.documentElement.classList.add('theme--dark');\n } else {\n document.documentElement.classList.remove('theme--dark');\n }\n};\n\nwatch(dark, () => updateDocumentTheme());\n//\n\n// Update title of page with account name\nconst accountName = computed(() => store.state.settings.account.accountName);\n\nconst updatePageTitle = () => {\n const appTitle = process.env.VUE_APP_TITLE || '';\n document.title = accountName.value ? `${appTitle} - ${accountName.value}` : appTitle;\n};\n\nwatch(accountName, () => updatePageTitle());\n\n// Init language from default\nsetLanguage(i18n.locale.split('-')[0], timeZoneCountry.value ?? '');\n\nonMounted(() => {\n // Insert App Version into Document Code as Comment\n const version = `${process.env.VUE_APP_TITLE} (${process.env.VUE_APP_VERSION})`;\n document.documentElement.appendChild(document.createComment(version));\n\n updateDocumentTheme();\n updateDocumentLanguage();\n updatePageTitle();\n createApps(getCurrentInstance()!.proxy);\n});\n\n\nreturn { __sfc: true,BrowserhackScrollbar, applyBrowserhackScrollbar, browserhackClass, vuetify, overlay, snackbar, snackbarText, snackbarIcon, snackbarColor, snackbarTextColor, snackbarTimeout, updateAvailable, refreshApp, timeZoneCountry, locale, updateDocumentLanguage, dark, updateDocumentTheme, accountName, updatePageTitle }\n}\n\n})","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=23cf0be8&\"\nimport script from \"./App.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=23cf0be8&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-app',{attrs:{\"id\":\"keep\"}},[(_vm.billingDialogVisible)?_c('billing-dialog',{attrs:{\"visible\":_vm.billingDialogVisible},on:{\"close\":function($event){_vm.billingDialogClosed = true; _vm.billingDialogOpened = false},\"logout\":function($event){_vm.logoutConfirmation=true},\"open\":function($event){_vm.billingDialogOpened = true}}}):_vm._e(),(_vm.welcomeVisible)?_c('welcome',{attrs:{\"visible\":_vm.welcomeVisible},on:{\"close\":function($event){_vm.welcomeClosed = true; _vm.welcomeOpened = false},\"open\":function($event){_vm.welcomeOpened = true}}}):_vm._e(),(_vm.isBillingWarning)?_c('billing-warning-bar',{attrs:{\"sub-warning-bar-info\":_vm.subWarningBarInfo,\"sms-warning-bar-info\":_vm.smsWarningBarInfo,\"payment-warning-bar-info\":_vm.paymentWarningBarInfo}}):_vm._e(),(_vm.languagePrompt !== undefined)?_c('language-switch-dialog',{attrs:{\"lang\":_vm.languagePrompt},on:{\"close\":function($event){_vm.languagePrompt = undefined}}}):_vm._e(),_c('v-app-bar',{attrs:{\"app\":\"\",\"clipped-left\":\"\",\"clipped-right\":\"\",\"color\":\"brand\"}},[(_vm.$vuetify.breakpoint.smAndDown)?_c('v-badge',{staticStyle:{\"margin-left\":\"-12px!important\"},attrs:{\"overlap\":\"\",\"offset-x\":\"20\",\"dot\":\"\",\"offset-y\":\"21\",\"value\":_vm.unreadReservationsCount !== 0 && _vm.$vuetify.breakpoint.smAndDown,\"content\":_vm.unreadReservationsCount,\"color\":\"red\"}},[_c('v-app-bar-nav-icon',{attrs:{\"dark\":\"\"},on:{\"click\":function($event){_vm.drawer = !_vm.drawer}}})],1):_vm._e(),_c('div',{staticClass:\"d-none d-md-block appbar-gp-logo\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.reload}},[_c('img',{staticClass:\"appbar-logo-img\",attrs:{\"src\":\"/assets/logo-white.svg\",\"contain\":\"\"}})])]),_c('v-spacer'),(_vm.routeMeta.hasDatePicker)?[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.previousDay}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-left \")])],1),_c('v-toolbar-title',{staticClass:\"white--text text-center\",staticStyle:{\"width\":\"240px\",\"max-width\":\"100%\"}},[_vm._v(\" \"+_vm._s(_vm.dateText)+\" \")]),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.nextDay}},[_c('v-icon',{attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-chevron-right \")])],1)]:_c('v-toolbar-title',{staticClass:\"white--text\"},[_vm._v(\" \"+_vm._s(_vm.$i18n.t(_vm.routeMeta.titleKey))+\" \")]),_c('v-spacer'),(_vm.$vuetify.breakpoint.mdAndUp)?[_c('v-divider',{staticClass:\"ml-5 mr-5\",attrs:{\"vertical\":\"\"}}),_c('v-btn',{ref:\"searchButton\",attrs:{\"dark\":\"\",\"icon\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-magnify\")])],1),_c('v-divider',{staticClass:\"ml-5 mr-5\",attrs:{\"vertical\":\"\"}}),_c('v-btn',{ref:\"unreadReservationsButton\",attrs:{\"icon\":\"\",\"dark\":\"\",\"disabled\":_vm.unreadReservationsCount === 0}},[_c('v-badge',{attrs:{\"overlap\":\"\",\"value\":_vm.unreadReservationsCount !== 0,\"content\":_vm.unreadReservationsCount,\"color\":\"red\"}},[_c('v-icon',[_vm._v(\"mdi-email-open-outline\")])],1)],1),_c('v-divider',{staticClass:\"ml-5\",attrs:{\"vertical\":\"\"}})]:_vm._e(),_c('v-btn',{staticClass:\"ml-md-5 mr-md-1\",attrs:{\"icon\":\"\",\"dark\":\"\"},on:{\"click\":_vm.toggleCalendar}},[_c('v-icon',[_vm._v(\"mdi-calendar-month\")])],1)],2),_c('v-navigation-drawer',{staticClass:\"main-menu-drawer\",attrs:{\"height\":\"100%\",\"permanent\":_vm.$vuetify.breakpoint.mdAndUp,\"temporary\":_vm.$vuetify.breakpoint.smAndDown,\"mini-variant\":_vm.miniMenu,\"mobile-breakpoint\":\"960\",\"width\":\"267\",\"touchless\":_vm.$vuetify.breakpoint.mdAndUp,\"app\":\"\",\"clipped\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c('main-menu',{attrs:{\"collapsable\":_vm.$vuetify.breakpoint.mdAndUp,\"mini-variant\":_vm.miniMenu},on:{\"logout\":function($event){_vm.logoutConfirmation=true},\"dark-mode\":_vm.toggleDarkMode,\"menu-collapse\":function($event){_vm.miniMenu = true},\"menu-expand\":function($event){_vm.miniMenu = false}}})],1),_c('v-navigation-drawer',{attrs:{\"height\":\"100%\",\"width\":\"400\",\"right\":\"\",\"fixed\":\"\",\"stateless\":!_vm.reservationDrawerDismissAllowed || _vm.isChangedReservation,\"temporary\":_vm.$vuetify.breakpoint.mdAndDown,\"app\":\"\"},on:{\"transitionend\":_vm.reservationDrawerTransitionEnd,\"input\":_vm.reservationDrawerStateChanged},model:{value:(_vm.reservationDrawer),callback:function ($$v) {_vm.reservationDrawer=$$v},expression:\"reservationDrawer\"}},[_c('reservation-view',{attrs:{\"is-visible\":_vm.reservationDrawer}})],1),_c('privacy-screen-view',{attrs:{\"top\":\"64px\",\"left\":_vm.privacyLeftOffset}}),_c('v-main',{ref:\"main\"},[(!(_vm.billingDialogVisible &&!_vm.billingCanClose))?_c('router-view'):_vm._e()],1),(_vm.showFooter)?_c('main-footer'):_vm._e(),(_vm.$vuetify.breakpoint.mdAndUp)?_c('v-menu',{attrs:{\"offset-y\":\"\",\"activator\":_vm.$refs.searchButton,\"close-on-content-click\":false,\"min-width\":\"400\",\"max-width\":\"400\",\"max-height\":\"80%\"},model:{value:(_vm.searchMenu),callback:function ($$v) {_vm.searchMenu=$$v},expression:\"searchMenu\"}},[_c('search-list',{on:{\"close\":function($event){_vm.searchMenu = false}}})],1):_vm._e(),(_vm.$vuetify.breakpoint.mdAndUp)?_c('v-menu',{attrs:{\"activator\":_vm.$refs.unreadReservationsButton,\"offset-y\":\"\",\"offset-x\":\"\",\"min-width\":\"400\",\"max-width\":\"400\",\"max-height\":\"80%\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"text-h5 text-center font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t('title.unread_reservations'))+\" \")]),_c('v-divider'),_c('guest-results-list',{attrs:{\"reservations\":_vm.unreadReservations,\"show-unread\":\"\"}})],1)],1):_vm._e(),_c('confirmation-dialog',{attrs:{\"visible\":_vm.logoutConfirmation,\"title\":_vm.$t('button.logout'),\"message\":_vm.$t('message.confirm_logout')},on:{\"confirm\":_vm.logout,\"close\":function($event){_vm.logoutConfirmation = false}}}),_c('v-navigation-drawer',{style:(_vm.$vuetify.breakpoint.mdAndDown ? '' : 'transition-duration: 0s'),attrs:{\"disable-resize-watcher\":_vm.routeMeta.hasDatePicker !== true,\"width\":_vm.reservationEditorActive ? 0 : 267,\"height\":\"100%\",\"app\":\"\",\"clipped\":\"\",\"right\":\"\"},model:{value:(_vm.calendarDrawer),callback:function ($$v) {_vm.calendarDrawer=$$v},expression:\"calendarDrawer\"}},[_c('calendar-view',{attrs:{\"tabindex\":\"-1\"},on:{\"change\":_vm.calendarDateSelected}})],1),(_vm.routeMeta.fab && !_vm.reservationEditorActive)?_c('main-floating-button',{attrs:{\"fab-type\":_vm.routeMeta.fab},on:{\"new-reservation\":_vm.editReservation,\"new-walkin\":_vm.createWalkin,\"help\":_vm.showHelp}}):_vm._e(),(_vm.welcomeFabVisible)?_c('onboarding-steps',{attrs:{\"fab-visible\":_vm.welcomeFabVisible},on:{\"hide-fab\":function($event){_vm.welcomeFabClosed=false}}}):_vm._e(),(!_vm.welcomeVisible && !_vm.billingDialogVisible)?_c('pwa-install-bar'):_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 (_vm.fabType === 'reservation')?_c('div',{staticClass:\"d-flex flex-column\",staticStyle:{\"z-index\":\"100000\"}},[(!_setup.isTouchDevice && _setup.isSameDay)?_c('v-speed-dial',{attrs:{\"bottom\":\"\",\"right\":\"\",\"fixed\":\"\",\"open-on-hover\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-btn',{staticClass:\"white--text\",attrs:{\"fab\":\"\",\"color\":\"brand\",\"disabled\":!_setup.isLoaded},on:{\"click\":function($event){return _setup.newReservation(false)}}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1)]},proxy:true}],null,false,2621404614),model:{value:(_setup.fab),callback:function ($$v) {_setup.fab=$$v},expression:\"fab\"}},[(_setup.isSameDay)?_c('v-btn',{staticClass:\"white--text\",attrs:{\"fab\":\"\",\"small\":\"\",\"color\":\"green\",\"disabled\":!_setup.isLoaded},on:{\"click\":function($event){return _setup.newReservation(true)}}},[_c('v-icon',[_vm._v(\"$vuetify.icons.walk-outline\")])],1):_vm._e()],1):[(_setup.isSameDay)?_c('v-btn',{staticClass:\"white--text green\",staticStyle:{\"right\":\"28px\",\"bottom\":\"88px\"},attrs:{\"fixed\":\"\",\"fab\":\"\",\"bottom\":\"\",\"right\":\"\",\"x-small\":\"\",\"disabled\":!_setup.isLoaded},on:{\"click\":function($event){return _setup.newReservation(true)}}},[_c('v-icon',[_vm._v(\"$vuetify.icons.walk-outline\")])],1):_vm._e(),_c('v-btn',{staticClass:\"white--text\",attrs:{\"fixed\":\"\",\"fab\":\"\",\"bottom\":\"\",\"right\":\"\",\"color\":\"brand\",\"disabled\":!_setup.isLoaded},on:{\"click\":function($event){return _setup.newReservation(false)}}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1)]],2):(_setup.inlineHelpAllowed && _vm.fabType === 'help')?_c('v-btn',{staticClass:\"white--text\",attrs:{\"fixed\":\"\",\"fab\":\"\",\"bottom\":\"\",\"right\":\"\",\"color\":\"grey\"},on:{\"click\":function($event){return _vm.$emit('help')}}},[_c('v-icon',[_vm._v(\"mdi-help\")])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { isDateSameIgnoringTime } from '@/services/time-utils';\nimport store from '@/store/store';\nimport { computed, ref } from 'vue';\nimport { useRouter } from 'vue-router/composables';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MainFloatingButton',\n props: { fabType: { type: String, required: true } },\n emits: ['new-walkin', 'new-reservation', 'help'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\nconst router = useRouter();\nconst inlineHelpAllowed = process.env.VUE_APP_INLINE_DOCS === 'true';\n\n\n\n\nconst fab = ref(false);\n\nconst isTouchDevice = window.matchMedia('(pointer: coarse)').matches;\n\nconst isLoaded = computed(() => store.getters.isLoaded);\nconst isSameDay = computed(() => isDateSameIgnoringTime(new Date(), store.state.update.date));\n\nconst newReservation = (walkin: boolean) => {\n // if newReservation is invoked on other screen than Guests or Tables\n // push the Guests screen to router\n // & if date is different than today, adjust to today.\n if (router.currentRoute.meta?.fab !== 'reservation') {\n if (!isSameDay.value) {\n store.dispatch('changeToDate', new Date());\n }\n router.push('/guests');\n }\n if (walkin) { emit('new-walkin'); } else { emit('new-reservation'); }\n};\n\nreturn { __sfc: true,router, inlineHelpAllowed, props, emit, fab, isTouchDevice, isLoaded, isSameDay, newReservation }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainFloatingButton.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainFloatingButton.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./MainFloatingButton.vue?vue&type=template&id=154dc30f&\"\nimport script from \"./MainFloatingButton.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./MainFloatingButton.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-list',{staticClass:\"d-menu py-0\",attrs:{\"max-width\":\"267\"}},[(_setup.mobileVariant)?_c('v-list-item',[_c('v-list-item-content',{staticClass:\"text-center\"},[_c('a',{staticClass:\"d-block\",attrs:{\"href\":\"#\"},on:{\"click\":_setup.reload}},[_c('img',{attrs:{\"contain\":\"\",\"max-height\":\"31\",\"max-width\":\"150\",\"src\":_vm.$vuetify.theme.dark ? '/assets/logo-white.svg' : '/assets/logo-blue.svg'}})])])],1):_vm._e(),_c(_setup.AccountSwitcher,{attrs:{\"mini-variant\":_vm.miniVariant,\"collapsable\":_vm.collapsable}}),_c('v-divider',{staticClass:\"mb-2\"}),(_setup.mobileVariant)?[_c(_setup.GMenuItem,{attrs:{\"title\":_vm.$t('title.search'),\"icon\":\"mdi-magnify\",\"to\":\"/search\",\"link\":\"\"}}),_c(_setup.GMenuItem,{attrs:{\"title\":_vm.$t('title.unread_reservations'),\"icon\":\"mdi-email-open-outline\",\"to\":\"/unread-reservations\",\"badge\":_setup.unreadReservationsBadge,\"link\":\"\"}}),_c('v-divider',{staticClass:\"my-2\"})]:_vm._e(),_c(_setup.GMenuItem,{attrs:{\"title\":_vm.$t('title.dashboard'),\"icon\":\"mdi-view-dashboard-outline\",\"filled-icon\":\"mdi-view-dashboard\",\"to\":\"/dashboard\",\"tooltip\":_vm.miniVariant}}),_vm._l((_setup.reservationMenuItems()),function(item,i){return _c(_setup.GMenuItem,{key:`menu_reservationItems_${i}`,attrs:{\"title\":item.text,\"icon\":item.icon,\"filled-icon\":item.filledIcon,\"to\":item.link,\"label-badge\":item.labelBadge,\"disabled\":!item.link,\"tooltip\":_vm.miniVariant,\"link\":\"\"}})}),_c('v-divider',{staticClass:\"my-2\"}),_c(_setup.GMenuItem,{attrs:{\"title\":_vm.$t('title.contacts'),\"icon\":\"mdi-contacts-outline\",\"filled-icon\":\"mdi-contacts\",\"to\":\"/contacts\",\"tooltip\":_vm.miniVariant,\"link\":\"\"}}),_c('v-divider',{staticClass:\"my-2\"}),_c(_setup.MainMenuGroup,{attrs:{\"title\":_vm.$t('title.newsletters'),\"icon\":\"mdi-email-multiple-outline\",\"filled-icon\":\"mdi-email-multiple\",\"menu-items\":_setup.newsletterMenuItems()},on:{\"menu-expand\":function($event){return _vm.$emit('menu-expand')}}}),_c('v-divider',{staticClass:\"my-2\"}),_c(_setup.MainMenuGroup,{attrs:{\"title\":_vm.$t('title.reports'),\"icon\":\"mdi-chart-timeline-variant-shimmer\",\"menu-items\":_setup.reportsItems},on:{\"menu-expand\":function($event){return _vm.$emit('menu-expand')}}}),_c('v-divider',{staticClass:\"my-2\"}),_c(_setup.GMenuItem,{attrs:{\"title\":_vm.$t('title.feedback'),\"icon\":\"mdi-message-star-outline\",\"filled-icon\":\"mdi-message-star\",\"to\":\"/feedback\",\"tooltip\":_vm.miniVariant,\"link\":\"\"}}),_c('v-divider',{staticClass:\"my-2\"}),_c('v-tooltip',{attrs:{\"right\":\"\",\"disabled\":!_vm.miniVariant,\"open-delay\":\"270\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-group',_vm._g(_vm._b({staticClass:\"d-menu\",attrs:{\"no-action\":\"\"},on:{\"click\":_setup.settingsClicked},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-action',{on:{\"click\":_setup.settingsClicked}},[_c('v-icon',[_vm._v(_vm._s(_setup.settingsGroup ? 'mdi-cog' : 'mdi-cog-outline'))])],1),_c('v-list-item-content',{on:{\"click\":_setup.settingsClicked}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('menu.settings')))])],1)]},proxy:true}],null,true),model:{value:(_setup.settingsGroup),callback:function ($$v) {_setup.settingsGroup=$$v},expression:\"settingsGroup\"}},'v-list-group',attrs,false),on),[_vm._l((_setup.settingItems),function(item,i){return [(item.subitems === undefined)?_c(_setup.GMenuItem,{key:`menu_settings_${i}`,attrs:{\"title\":item.text,\"to\":item.link,\"disabled\":!item.link,\"label-badge\":item.labelBadge,\"link\":\"\"}}):_c('v-list-group',{key:`menu_settings_b_${i}`,attrs:{\"no-action\":\"\",\"sub-group\":\"\",\"link\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [(!item.link)?_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1):_c('v-list-item-content',{on:{\"click\":function($event){return _vm.$router.push('/settings/apps')}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1)]},proxy:true}],null,true)},_vm._l((item.subitems),function(subitem,j){return _c(_setup.GMenuItem,{key:`menu_settings_${i}_${j}`,attrs:{\"to\":subitem.link,\"title\":subitem.text,\"disabled\":!subitem.link || subitem.disabled,\"label-badge\":subitem.labelBadge,\"link\":\"\"}})}),1)]})],2)]}}])},[_c('span',[_vm._v(_vm._s(_vm.$t('menu.settings')))])]),(_setup.appsMenuItems.length > 0)?_c('v-tooltip',{attrs:{\"right\":\"\",\"disabled\":!_vm.miniVariant,\"open-delay\":\"270\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-group',_vm._g(_vm._b({staticClass:\"d-menu\",attrs:{\"no-action\":\"\"},on:{\"click\":_setup.appsClicked},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-action',{on:{\"click\":_setup.appsClicked}},[_c('v-icon',[_vm._v(\"mdi-apps\")])],1),_c('v-list-item-content',{on:{\"click\":_setup.appsClicked}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('title.apps')))])],1)]},proxy:true}],null,true),model:{value:(_setup.appsGroup),callback:function ($$v) {_setup.appsGroup=$$v},expression:\"appsGroup\"}},'v-list-group',attrs,false),on),[_vm._l((_setup.appsMenuItems),function(item,i){return [(item.subitems === undefined)?_c(_setup.GMenuItem,{key:`menu_apps_${i}`,attrs:{\"title\":item.text,\"to\":item.link,\"disabled\":!item.link,\"label-badge\":item.labelBadge,\"link\":\"\"}}):_c('v-list-group',{key:`menu_apps_sub_${i}`,attrs:{\"no-action\":\"\",\"sub-group\":\"\",\"link\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [(!item.link)?_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1):_c('v-list-item-content',{on:{\"click\":function($event){return _vm.$router.push('/apps/')}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1)]},proxy:true}],null,true)},_vm._l((item.subitems),function(subitem,j){return _c(_setup.GMenuItem,{key:`menu_apps_${i}_${j}`,attrs:{\"to\":subitem.link,\"title\":subitem.text,\"disabled\":!subitem.link || subitem.disabled,\"label-badge\":subitem.labelBadge,\"link\":\"\"}})}),1),(i===0 && _setup.appsMenuItems.length > 1)?_c('v-divider',{key:`menu_apps_${i}_div`,staticClass:\"my-2\"}):_vm._e()]})],2)]}}],null,false,3413203834)},[_c('span',[_vm._v(_vm._s(_vm.$t('title.apps')))])]):_vm._e(),(_setup.inlineHelpAllowed)?[_c('v-divider',{staticClass:\"my-2\"}),_c(_setup.GMenuItem,{attrs:{\"title\":_vm.$t('button.help'),\"icon\":\"mdi-help-circle-outline\",\"href\":\"https://docs.guestplan.com/\",\"target\":\"_blank\",\"link\":\"\"}})]:_vm._e(),(_setup.pwaDebug)?[_c('v-divider',{staticClass:\"my-2\"}),_c(_setup.GMenuItem,{attrs:{\"title\":\"PWA Info\",\"to\":\"/pwa-info\",\"icon\":\"mdi-cellphone-cog\",\"link\":\"\"}})]:_vm._e(),(_setup.isInstallable)?[_c('v-divider',{staticClass:\"my-2\"}),_c(_setup.GMenuItem,{attrs:{\"title\":_vm.$t('menu.install_app'),\"icon\":\"mdi-cellphone-arrow-down\",\"link\":\"\"},on:{\"click\":_setup.installPrompt}})]:_vm._e(),_c('v-divider',{staticClass:\"my-2\",staticStyle:{\"padding-bottom\":\"112px\"}}),_c('v-sheet',{staticClass:\"main-menu-footer pl-0 pr-0 pb-0\",attrs:{\"bottom\":\"\"}},[_c('v-divider',{staticClass:\"pa-0\"}),(_vm.collapsable && _vm.miniVariant)?_c(_setup.GMenuItem,{staticClass:\"pb-1\",attrs:{\"tooltip\":\"\",\"title\":_vm.$t('label.expand_menu'),\"icon\":\"mdi-chevron-double-right\"},on:{\"click\":function($event){return _vm.$emit('menu-expand')}}}):_vm._e(),(!_vm.miniVariant)?_c('div',{staticClass:\"d-flex justify-space-between main-menu-iconbar\"},[_c('tooltip-icon-button',{attrs:{\"button-class\":\"pl-0 ml-1 mr-4\",\"tooltip-title\":_vm.$t('button.logout')},on:{\"click\":function($event){return _vm.$emit('logout')}}},[_c('v-icon',[_vm._v(\" mdi-logout \")])],1),_c('tooltip-icon-button',{attrs:{\"button-class\":\"mx-4\",\"tooltip-title\":_vm.$vuetify.theme.dark ? _vm.$t('menu.light_mode') : _vm.$t('menu.night_mode')},on:{\"click\":function($event){return _vm.$emit('dark-mode', true)}}},[_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.$vuetify.theme.dark ? 'mdi-weather-sunny' : 'mdi-weather-night')+\" \")])],1),_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticClass:\"pl-1 mx-0 px-0\",attrs:{\"text\":\"\",\"color\":_vm.$vuetify.theme.dark ? 'primary' : '#757575'}},'v-btn',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.$i18n.locale.split('-')[0].toUpperCase())+\" \"),_c('v-icon',{staticClass:\"px-0 mx-0\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-chevron-down \")])],1)]}}],null,false,327759963)},[_c('v-list',{staticClass:\"py-0\"},[_c('v-subheader',{staticClass:\"py-0\",staticStyle:{\"height\":\"28px\"}},[_vm._v(\" \"+_vm._s(_vm.$tc('label.language').toUpperCase())+\" \")]),_c('v-divider'),_vm._l((_setup.supportedLanguages),function(l){return _c('v-list-item',{key:l.value,staticClass:\"pl-2\",attrs:{\"dense\":\"\"},on:{\"click\":function($event){return _setup.changeLanguage(l.value)}}},[_c('v-list-item-icon',{staticClass:\"mr-0\"},[(_vm.$i18n.locale.split('-')[0] === l.value)?_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"primary\"}},[_vm._v(\" mdi-check \")]):_vm._e()],1),_c('v-list-item-title',[_vm._v(_vm._s(l.text))])],1)})],2)],1),(!_setup.mobileVariant)?_c('v-btn',{staticClass:\"ml-4 mr-1\",attrs:{\"icon\":\"\"},on:{\"mousedown\":function($event){$event.stopPropagation();},\"click\":function($event){$event.stopPropagation();return _setup.collapseMenu.apply(null, arguments)}},nativeOn:{\"touchstart\":function($event){$event.stopPropagation();}}},[_c('v-icon',[_vm._v(\"mdi-chevron-double-left\")])],1):_vm._e()],1):_vm._e()],1)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.menuItems.length > 0)?_c('v-tooltip',{attrs:{\"right\":\"\",\"disabled\":!_vm.miniVariant,\"open-delay\":\"270\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-group',_vm._g(_vm._b({staticClass:\"d-menu\",attrs:{\"no-action\":\"\"},on:{\"click\":_setup.clicked},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-action',{on:{\"click\":_setup.clicked}},[_c('v-icon',[_vm._v(_vm._s(_setup.group && _vm.filledIcon ? _vm.filledIcon : _vm.icon))])],1),_c('v-list-item-content',{on:{\"click\":_setup.clicked}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.title))])],1)]},proxy:true}],null,true),model:{value:(_setup.group),callback:function ($$v) {_setup.group=$$v},expression:\"group\"}},'v-list-group',attrs,false),on),[_vm._l((_vm.menuItems),function(item,i){return [_c(_setup.GMenuItem,{key:`menu_group_${i}`,attrs:{\"title\":item.text,\"to\":item.link,\"disabled\":!item.link,\"label-badge\":item.labelBadge,\"link\":\"\"}})]})],2)]}}],null,false,2182264969)},[_c('span',[_vm._v(_vm._s(_vm.title))])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-tooltip',{attrs:{\"right\":\"\",\"open-delay\":\"270\",\"disabled\":!_vm.tooltip},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-list-item',_vm._g(_vm._b({attrs:{\"to\":_vm.to,\"link\":_vm.link,\"href\":_vm.href,\"target\":_vm.target,\"disabled\":_vm.disabled,\"input-value\":_vm.value},on:{\"click\":_vm.onClick}},'v-list-item',attrs,false),on),[(_vm.icon !== null && _vm.badge === null)?_c('v-list-item-action',[_c('v-icon',{attrs:{\"color\":_vm.colorForIcon}},[_vm._v(\" \"+_vm._s(_vm.value && _vm.filledIcon ? _vm.filledIcon : _vm.icon)+\" \")])],1):_vm._e(),(_vm.icon !== null && _vm.badge !== null)?_c('v-list-item-action',[_c('v-badge',{attrs:{\"overlap\":\"\",\"content\":_vm.badge,\"color\":\"red\"}},[_c('v-icon',{attrs:{\"color\":_vm.colorForIcon}},[_vm._v(\" \"+_vm._s(_vm.icon)+\" \")])],1)],1):_vm._e(),_c('v-list-item-content',[(_vm.labelBadge === null)?_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]):_c('v-list-item-title',[_c('v-badge',{staticClass:\"pa-0 ma-0\",attrs:{\"color\":\"success\",\"content\":_vm.labelBadge,\"inline\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])],1)],1)],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.title))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport { Route } from 'vue-router';\n\nexport default Vue.extend({\n name: 'MenuItem',\n props: {\n icon: { type: String, required: false, default: null },\n badge: { type: String, required: false, default: null },\n labelBadge: { type: String, required: false, default: null },\n title: { type: String, required: false, default: '' },\n to: { type: String, required: false, default: null },\n href: { type: String, required: false, default: null },\n target: { type: String, required: false, default: null },\n link: { type: Boolean, required: false, default: false },\n disabled: { type: Boolean, required: false, default: false },\n tooltip: { type: Boolean, required: false, default: false },\n filledIcon: { type: String, required: false, default: null },\n },\n data() {\n return {\n value: this.$router.currentRoute.path === this.to,\n };\n },\n computed: {\n colorForIcon(): string {\n if (this.$vuetify.theme.dark && this.disabled) {\n return 'primary darken-3';\n }\n if (this.disabled) {\n return 'grey lighten-2';\n }\n return '';\n },\n },\n watch: {\n $route(to: Route, from: Route) {\n this.value = to.path === this.to;\n },\n },\n methods: {\n onClick() {\n this.$emit('click', true);\n },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MenuItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MenuItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MenuItem.vue?vue&type=template&id=2ef7eae8&\"\nimport script from \"./MenuItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./MenuItem.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, ref } from 'vue';\nimport { MenuItem } from '@/util/menu';\nimport GMenuItem from '@/components/util/MenuItem.vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MainMenuGroup',\n props: {\n miniVariant: { type: Boolean, required: false, default: false },\n menuItems: { type: Array as PropType>, required: false, default: () => [] },\n title: { type: [String, Object] as PropType, required: true },\n icon: { type: String, required: true },\n filledIcon: { type: String, required: false, default: undefined },\n},\n emits: ['menu-expand'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst group = ref(false);\n\nconst clicked = () => emit('menu-expand');\n\n\nreturn { __sfc: true,props, emit, group, clicked, GMenuItem }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainMenuGroup.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainMenuGroup.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./MainMenuGroup.vue?vue&type=template&id=79043205&\"\nimport script from \"./MainMenuGroup.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./MainMenuGroup.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport AccountSwitcher from '@/components/views/main/AccountSwitcher.vue';\nimport MainMenuGroup from '@/components/views/main/MainMenuGroup.vue';\nimport GMenuItem from '@/components/util/MenuItem.vue';\nimport i18n, { supportedLanguages } from '@/plugins/i18n';\n\nimport { computed, ref } from 'vue';\nimport {\n MenuItem, reservationMenuItems, settingsMenuItems, reportsMenuItems, newsletterMenuItems,\n} from '@/util/menu';\n\nimport { performAction } from '@/services/vue-utils';\nimport GstplnApp from '@/components/apps/app';\nimport setLanguage from '@/plugins/i18n-locale';\nimport { tryCloseEditReservation } from '@/services/reservation-edit-utils';\nimport { useToast, useVuetify } from '@/components/helpers/vue2-helpers';\nimport store from '@/store/store';\nimport usePwaInstall from '@/composables/pwa-install';\nimport useActivityIndicator from '@/composables/activity-indicator';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'MainMenu',\n props: {\n miniVariant: { type: Boolean, required: false, default: false },\n collapsable: { type: Boolean, required: false, default: false },\n},\n emits: ['menu-collapse', 'menu-expand', 'logout', 'dark-mode'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst inlineHelpAllowed = process.env.VUE_APP_INLINE_DOCS === 'true';\nconst pwaDebug = process.env.NODE_ENV !== 'production';\n\nconst vuetify = useVuetify();\n\n\n\n\nconst { showActivity } = useActivityIndicator();\n\nconst mobileVariant = computed(() => vuetify.breakpoint.smAndDown);\n\nconst unreadReservationsBadge = computed(() => {\n const unread = store.getters.unreadReservationsCount;\n return unread > 0 ? `${unread}` : null;\n});\n\nconst settingItems = computed(() => {\n const billingPageAllowed = store.getters.isBillingPageAllowed;\n return settingsMenuItems({ billingPageAllowed });\n});\n\nconst reportsItems = computed(() => reportsMenuItems());\n\nconst appsMenuItems = computed(() => {\n const gstplnApps = store.getters.gstplnApps as GstplnApp[];\n // no apps -> no apps menu\n if (gstplnApps.length === 0) return [];\n\n const menuApps = gstplnApps.filter((ai) => ai.installed && ai.hasMenuItem);\n const appMenuItems: MenuItem[] = menuApps.map((ai) => {\n const subitems = (ai.routeConfig?.length ?? 0) > 1\n ? ai.routeConfig?.filter((rc) => rc.title !== undefined)\n .map((rc) => ({ text: rc.title, link: `${ai.url}/${rc.route}` } as MenuItem))\n : undefined;\n return {\n text: ai.title(), link: subitems ? undefined : ai.url, icon: ai.icon, subitems,\n };\n });\n return [\n { text: i18n.t('title.manage_apps'), link: '/apps/manage' }, ...appMenuItems,\n ];\n});\n\n// Menu Collapse/Decollapse\nconst settingsGroup = ref(false);\nconst appsGroup = ref(false);\n\nconst collapseMenu = () => {\n appsGroup.value = false;\n settingsGroup.value = false;\n emit('menu-collapse');\n};\n\nconst settingsClicked = () => { emit('menu-expand'); };\nconst appsClicked = () => { emit('menu-expand'); };\n\n//\n\nconst reload = async () => {\n await performAction(\n null,\n i18n.tc('error.load_data'),\n async () => store.dispatch('update'),\n );\n};\n\nconst changeLanguage = async (lang: string) => {\n if (!await tryCloseEditReservation()) { return; }\n\n showActivity(true);\n const cc = store.state.settings.account.countryCode || '';\n setLanguage(lang, cc);\n // eslint-disable-next-line no-restricted-globals\n location.reload();\n};\n\n// PWA\nconst { isInstallable, installPrompt } = usePwaInstall();\n\n\nreturn { __sfc: true,inlineHelpAllowed, pwaDebug, vuetify, emit, props, showActivity, mobileVariant, unreadReservationsBadge, settingItems, reportsItems, appsMenuItems, settingsGroup, appsGroup, collapseMenu, settingsClicked, appsClicked, reload, changeLanguage, isInstallable, installPrompt, AccountSwitcher, MainMenuGroup, GMenuItem, supportedLanguages, reservationMenuItems, newsletterMenuItems }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainMenu.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainMenu.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./MainMenu.vue?vue&type=template&id=4d3d0fe7&scoped=true&\"\nimport script from \"./MainMenu.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./MainMenu.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./MainMenu.vue?vue&type=style&index=0&id=4d3d0fe7&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d3d0fe7\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\n/* eslint-disable no-use-before-define */\nimport store from '@/store/store';\nimport { ExponentialBackoff, Websocket, WebsocketBuilder } from 'websocket-ts/lib';\nimport Timer from '@/services/timer';\nimport debounce from 'lodash.debounce';\nimport { dateByAddingSeconds, dateDiff, dateFromUTCDateTimeSecondsString } from './time-utils';\n\nconst wsURL = process.env.VUE_APP_ENDPOINT_WS!;\n\nconst HeartBeatInterval = 4 * 60; // 4 min heartbeat\nconst WatchDogInterval = 9 * 60; // 9 min watchdog\nconst MinHeartBeatInterval = 0; // no minimum heartbeat interval\n\nlet websocket: Websocket | null = null;\n\n// watchdog and heartbeat\nconst heartBeatTimer = new Timer(() => { sendHeardBeat(); });\nlet lastHeartBeat: Date | null = null;\n\nconst watchDogTimer = new Timer(() => { reconnect(); });\nlet lastWatchDog: Date | null = null;\n\nif (MinHeartBeatInterval && MinHeartBeatInterval < HeartBeatInterval) {\n store.watch((state) => state.session.unixTimestamp, (value, oldValue) => { if (store.getters.isLoggedIn) sendHeardBeat(); });\n}\n\n// pushupdate request\nstore.watch((state, rootGetters) => rootGetters.pushUpdateRequestTimestamp, (value, oldValue) => {\n if (value && value !== oldValue) debouncedUpdate();\n});\n\n// debounced update\nconst debouncedUpdate = debounce(async () => {\n try {\n await store.dispatch('performPushUpdate');\n } catch (e) {\n console.log('ws update error: ', e);\n }\n}, 500, { leading: true, trailing: true, maxWait: 5000 });\n\n// delayd start, immediate end\nconst debouncedConnect = debounce(() => { connect(); }, 2000);\nstore.watch((state, getters) => getters.token, (value, oldValue) => {\n if (!value || (value !== oldValue && oldValue)) disconnect(); // no token or changed token\n if (value && value !== oldValue) debouncedConnect();\n}, { immediate: true });\n\nasync function connect(): Promise {\n // check logged in (token !== NULL => logged in)\n const { token } = store.state.session;\n if (!token) return Promise.resolve(false);\n\n console.log('ws connect');\n disconnect();\n\n const ws = new WebsocketBuilder(wsURL)\n .withProtocols(token)\n .withBackoff(new ExponentialBackoff(1000, 4))\n .onOpen((i, ev) => { console.log('ws opened'); wsOpen(); })\n .onClose((i, ev) => { console.log('ws closed'); wsClose(); })\n .onError((i, ev) => { console.log('ws error: ', ev); })\n .onMessage(async (i, ev) => { console.log('ws message: ', ev.data); await wsMessage(ev.data as string); })\n .onRetry((i, ev) => { console.log('ws retry'); if (!store.state.session.token) disconnect(); })\n .build();\n\n websocket = ws;\n\n return Promise.resolve(true);\n}\n\nasync function reconnect() {\n if (!websocket || !store.state.session.token) { disconnect(); return; }\n\n console.log('ws reconnect');\n (websocket as any).reconnect();\n}\n\nfunction disconnect() {\n console.log('ws disconnect');\n\n if (websocket) websocket.close();\n websocket = null;\n\n watchDogTimer.schedule(null);\n heartBeatTimer.schedule(null);\n}\n\nfunction isWebsocketOpened(): boolean {\n if (!websocket || !websocket.underlyingWebsocket) return false;\n return websocket.underlyingWebsocket.readyState === websocket.underlyingWebsocket.OPEN;\n}\n\nfunction wsOpen() {\n // heart beat\n heartBeatTimer.schedule(dateByAddingSeconds(new Date(), HeartBeatInterval));\n\n // watchdog\n watchDogTimer.schedule(dateByAddingSeconds(new Date(), WatchDogInterval));\n}\n\nfunction wsClose() {\n watchDogTimer.schedule(null);\n heartBeatTimer.schedule(null);\n}\n\nasync function wsMessage(data: string) {\n // reset watch dog\n lastWatchDog = new Date();\n watchDogTimer.schedule(dateByAddingSeconds(lastWatchDog, WatchDogInterval));\n\n // parse json data\n const notification = JSON.parse(data) as { a: number, t: string, u: number };\n const timestamp = notification.u;\n\n // set timestamp\n store.dispatch('setPushUpdateTimestamp', { timestamp });\n}\n\nfunction sendHeardBeat() {\n if (!isWebsocketOpened()) return;\n\n const now = new Date();\n\n // check last heartbeat, wait 60s at least\n if (lastHeartBeat) {\n const diff = dateDiff(now, lastHeartBeat) / 1000;\n if (diff < MinHeartBeatInterval) {\n const next = dateByAddingSeconds(now, MinHeartBeatInterval - Math.ceil(diff));\n heartBeatTimer.schedule(next);\n return;\n }\n }\n\n // send last update timestamp data\n const u = Number(store.state.session.unixTimestamp ?? 0);\n const json = JSON.stringify({ u });\n\n console.log('ws send: ', json);\n websocket!.send(json);\n\n // schedule next heartbeat\n lastHeartBeat = new Date();\n const next = dateByAddingSeconds(lastHeartBeat, HeartBeatInterval);\n heartBeatTimer.schedule(next);\n}\n","\n\nimport Account from '@/model/Account';\nimport AccountSetting from '@/model/AccountSettings';\nimport DateAndTime from '@/model/DateAndTime';\nimport OpeningHour from '@/model/OpeningHour';\nimport Tab from '@/model/Tab';\nimport { minutesFromTimeString, slotFromMinutes, weekdayNumberFromDateDay } from '@/services/time-utils';\nimport { isOnlySimpleHours } from '@/services/hours-utils';\nimport Vue from 'vue';\n\nenum StepType {\n CONTACT_INFO,\n TABLES,\n FLOORPLAN,\n ONLINE_RESERVATION,\n BRAND,\n OPENING_HOURS,\n}\n\nexport default Vue.extend({\n name: 'OnboardingSteps',\n props: {\n fabVisible: { type: Boolean, required: true },\n },\n data() {\n return {\n menuExpanded: false,\n steps: [\n { type: StepType.CONTACT_INFO, text: this.$i18n.t('label.onboarding_contact_info'), value: false },\n { type: StepType.TABLES, text: this.$i18n.t('label.onboarding_add_tables'), value: false },\n { type: StepType.OPENING_HOURS, text: this.$i18n.t('label.onboarding_opening_hours'), value: false },\n // { type: StepType.FLOORPLAN, text: 'Set Up Floorplan', value: false },\n // { type: StepType.ONLINE_RESERVATION, text: 'Make Online Reservation', value: false },\n { type: StepType.BRAND, text: this.$i18n.t('label.onboarding_add_branding'), value: false },\n ],\n };\n },\n\n computed: {\n tabs(): Tab[] {\n const { tabs } = this.$tstore.state.settings;\n return tabs.sort((a, b) => a.order - b.order);\n },\n hostedFormUrl(): string {\n return this.$tstore.getters.hostedWidgetURL ?? 'N/A';\n },\n /*\n accountSettings(): AccountSetting | null {\n return this.$tstore.state.settings.accountSettings;\n },\n isContactInfo(): boolean {\n const a = this.$tstore.state.settings.account;\n const fields: (keyof Account)[] = [\n 'accountName', 'streetAddress', 'city', 'postalCode', 'countryCode', 'countryState', 'locale', 'timeZoneId'];\n return fields.every((f) => a[f] !== undefined && a[f] !== '' && a[f] !== 0);\n },\n isFloorplan(): boolean {\n const { tabs } = this.$tstore.state.settings;\n return tabs.some((t) => t.tabItems.some((ti) => ti.posX && ti.posY));\n },\n isTables(): boolean {\n if (this.isFloorplan) return true;\n\n const { tabs } = this.$tstore.state.settings;\n if (tabs.length === 0) return false; // no tab\n if (tabs.length !== 2) return true; // not 2 tabs\n\n const tab = tabs[0];\n if (tabs[0].tabItems.length === 0 && tabs[1].tabItems.length === 0) return false; // no tab item\n if (tabs[0].tabItems.length !== 10) return true; // not 4 tab items\n if (tabs[1].tabItems.length !== 5) return true; // not 4 tab items\n if (tabs[0].tabItems.reduce((sum, ti) => sum + ti.seats, 0) !== 4 * 2 + 1 * 5 + 2 * 4 + 3 * 3) return true;\n if (tabs[1].tabItems.reduce((sum, ti) => sum + ti.seats, 0) !== 5 * 2) return true;\n\n return false;\n },\n isOnlineReservation(): boolean {\n const reservations = Object.values(this.$tstore.state.reservations.reservationsById) as Reservation[];\n return reservations.some((r) => r.type === ReservationType.Online);\n },\n isBrand(): boolean {\n const a = this.$tstore.state.settings.account;\n return Boolean(a.logoLink && a.color && a.color !== '#3355FF');\n },\n isOpeningHours(): boolean {\n // any special hour?\n const datesAndTimes = this.$tstore.getters.datesAndTimes as DateAndTime[];\n if (datesAndTimes.length > 0) return true;\n\n // changed opening hour? (18:00 - 21:30, every 30 min)\n const hourMaps = this.$tstore.getters.openingHoursInWeekdaysByTimeIndex as Map[];\n const bs = slotFromMinutes(minutesFromTimeString('18:00'));\n const es = slotFromMinutes(minutesFromTimeString('22:00'));\n\n return this.$localized.weekdays().some((day) => {\n const weekdayNumber = weekdayNumberFromDateDay(day.value);\n const hourMap = hourMaps[weekdayNumber];\n const hours = Array.from(hourMaps[weekdayNumber].values()).sort((o1, o2) => o1.timeIndex - o2.timeIndex);\n\n if (hours.length !== (es - bs) / 2) return true;\n\n for (let si = bs, i = 0; si < es; si += 2, i += 1) {\n if (hours[i].slot !== si) return true;\n }\n\n return false;\n });\n },\n */\n isStep(): Map {\n const { accountSettings } = this.$tstore.state.settings;\n\n const map = new Map();\n map.set(StepType.CONTACT_INFO, accountSettings.useSetupContact !== true);\n // map.set(StepType.FLOORPLAN, this.isFloorplan);\n map.set(StepType.TABLES, accountSettings.useSetupTables !== true);\n // map.set(StepType.ONLINE_RESERVATION, this.isOnlineReservation);\n map.set(StepType.BRAND, accountSettings.useSetupBranding !== true);\n map.set(StepType.OPENING_HOURS, accountSettings.useSetupHours !== true);\n\n return map;\n },\n unfinishedSteps(): number {\n return this.steps.map((s) => (s.value ? 0 : 1) as number).reduce((acc, cur) => acc + cur);\n },\n },\n watch: {\n fabVisible() {\n if (this.fabVisible) {\n this.menuExpanded = true;\n }\n },\n isStep: {\n immediate: true,\n handler(map: Map) {\n this.steps.forEach((s) => {\n // Vue.set(s, 'value', map.get(s.type) ?? false);\n // eslint-disable-next-line no-param-reassign\n s.value = map.get(s.type) ?? false;\n });\n },\n },\n unfinishedSteps() {\n if (this.unfinishedSteps === 0) {\n this.$emit('hide-fab');\n }\n },\n },\n mounted() {\n this.$nextTick(() => {\n if (this.unfinishedSteps === 0) {\n this.$emit('hide-fab');\n }\n });\n },\n methods: {\n doStepAction(type: StepType) {\n switch (type) {\n case StepType.CONTACT_INFO:\n case StepType.BRAND:\n this.$router.push('/settings/general');\n break;\n case StepType.OPENING_HOURS:\n this.$router.push(isOnlySimpleHours(\n this.$tstore.getters.openingHoursInWeekdaysByTimeIndex,\n ) ? '/settings/simple-hours' : '/settings/hours');\n break;\n case StepType.FLOORPLAN:\n this.$router.push(`/settings/sections/${this.tabs[0].id}/?floorplan=true`);\n break;\n case StepType.TABLES:\n this.$router.push(`/settings/sections/${this.tabs[0].id}/?tables=true`);\n break;\n case StepType.ONLINE_RESERVATION:\n window.open(this.hostedFormUrl, 'windowName');\n break;\n default:\n }\n },\n toggleMenu() {\n this.menuExpanded = !this.menuExpanded;\n this.$emit('expand', this.menuExpanded);\n },\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-inline\"},[_c('v-fade-transition',[(_vm.fabVisible)?_c('v-btn',{staticClass:\"onboarding-fab\",staticStyle:{\"z-index\":\"4\"},attrs:{\"fixed\":\"\",\"bottom\":\"\",\"elevation\":\"13\",\"rounded\":\"\",\"right\":\"\",\"color\":\"success\"},on:{\"click\":_vm.toggleMenu}},[_vm._v(\" \"+_vm._s(_vm.$t('button.setup_your_account'))+\" \"),_c('v-badge',{staticClass:\"ml-2\",attrs:{\"inline\":\"\",\"color\":\"white green--text\",\"content\":_vm.unfinishedSteps}})],1):_vm._e()],1),_c('v-scale-transition',{attrs:{\"origin\":\"bottom right 0\"}},[(_vm.menuExpanded)?_c('v-sheet',{class:['onboarding-menu-sheet', {'compact': _vm.$vuetify.breakpoint.xsOnly}],attrs:{\"rounded\":\"lg\",\"elevation\":\"15\"}},[_vm._l((_vm.steps),function(step,i){return [(step.value === true)?_c('v-list-item',{key:`step_${i}`},[_c('v-list-item-avatar',[_c('v-icon',{attrs:{\"color\":\"success\"}},[_vm._v(\" mdi-check-circle \")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{staticClass:\"ob-item-complete text--secondary\"},[_vm._v(_vm._s(step.text))])])],1)],1):_c('v-list-item',{key:`step_${i}`,on:{\"click\":function($event){return _vm.doStepAction(step.type)}}},[_c('v-list-item-avatar',[_c('v-icon',{attrs:{\"color\":\"grey\"}},[_vm._v(\" mdi-check-circle \")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_c('span',{staticClass:\"ob-item-incomplete\"},[_vm._v(_vm._s(step.text))])])],1)],1),(i !== _vm.steps.length - 1)?_c('v-divider',{key:`divider_${i}`}):_vm._e()]})],2):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnboardingSteps.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnboardingSteps.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OnboardingSteps.vue?vue&type=template&id=920a0666&scoped=true&\"\nimport script from \"./OnboardingSteps.vue?vue&type=script&lang=ts&\"\nexport * from \"./OnboardingSteps.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OnboardingSteps.vue?vue&type=style&index=0&id=920a0666&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"920a0666\",\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('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"max-width\":\"600\",\"container-class\":\"pa-0 ma-0\",\"card-class\":\"pa-0 ma-0\",\"fullscreen\":_vm.$vuetify.breakpoint.smAndDown,\"persistent\":\"\",\"scrollable\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.skipSteps[_vm.step])?_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\"},on:{\"click\":_vm.skip}},[_vm._v(\" \"+_vm._s(_vm.$t('button.skip'))+\" \")]):_vm._e(),_c('v-spacer'),(_vm.step !== _vm.steps)?_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('button.continue'))+\" \")]):_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.nextStep}},[_vm._v(\" \"+_vm._s(_vm.$t('button.start_using_guestplan'))+\" \")])]},proxy:true}])},[(_vm.step===0)?_c('welcome-step-welcome',{ref:\"step_0\",on:{\"advance\":function($event){return _vm.finishStep(0)}}}):_c('v-stepper',{staticClass:\"elevation-0\",attrs:{\"non-linear\":\"\",\"alt-labels\":\"\"},on:{\"change\":_vm.stepChanged},model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:\"step\"}},[_c('v-stepper-header',{staticClass:\"elevation-0\",attrs:{\"flat\":\"\"}},[_vm._l((_vm.steps),function(n){return [_c('v-stepper-step',{key:`${n}-step`,attrs:{\"color\":\"blue\",\"complete\":_vm.completedSteps[n],\"step\":n,\"edit-icon\":\"$complete\",\"editable\":_vm.editable}},[_vm._v(\" \"+_vm._s(_vm.stepLabels[n])+\" \")]),(n !== _vm.steps)?_c('v-divider',{key:n}):_vm._e()]})],2),_c('v-divider'),_c('v-stepper-items',[_c('v-stepper-content',{attrs:{\"step\":1}},[_c('welcome-step-account',{ref:\"step_1\",on:{\"advance\":function($event){return _vm.finishStep(1)}}})],1),_c('v-stepper-content',{attrs:{\"step\":2}},[_c('welcome-step-tables',{ref:\"step_2\",on:{\"advance\":function($event){return _vm.finishStep(2)}}})],1),_c('v-stepper-content',{attrs:{\"step\":\"3\"}},[_c('welcome-step-hours',{ref:\"step_3\",on:{\"advance\":function($event){return _vm.finishStep(3)}}})],1),_c('v-stepper-content',{attrs:{\"step\":\"4\"}},[_c('welcome-step-online-alt',{ref:\"step_4\"})],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('v-container',{staticClass:\"text--primary pt-5 mt-5\",staticStyle:{\"min-height\":\"590px\"},attrs:{\"fluid\":\"\"}},[_c('h1',{staticClass:\"text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.hello_welcome_to_guestplan'))+\" \")]),_c('v-img',{staticClass:\"my-5 text-center\",staticStyle:{\"margin-left\":\"auto\",\"margin-right\":\"auto\"},attrs:{\"max-width\":\"450\",\"src\":\"/assets/onboarding-hero.svg\"}}),_c('p',{staticClass:\"text-center pt-0 text-h6\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.onboarding_welcome_message'))+\" \")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'WelcomeStepWelcome',\n components: { },\n props: { },\n data() {\n return { };\n },\n computed: { },\n methods: {\n // eslint-disable-next-line vue/no-unused-properties\n submit() {\n this.$emit('advance');\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepWelcome.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepWelcome.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WelcomeStepWelcome.vue?vue&type=template&id=86165056&\"\nimport script from \"./WelcomeStepWelcome.vue?vue&type=script&lang=ts&\"\nexport * from \"./WelcomeStepWelcome.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"text--primary\",staticStyle:{\"min-height\":\"590px\"},attrs:{\"fluid\":\"\"}},[_c('validation-observer',{ref:\"observer\"},[_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('h2',{staticClass:\"pb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.contact_details'))+\" \")]),_c('i18n',{staticClass:\"body-2 pb-2\",attrs:{\"path\":\"help.onboarding.account\",\"tag\":\"p\"}},[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.settings'))+\"→\"+_vm._s(_vm.$t('title.account')))])])],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"label\":_vm.$t('label.restaurant_name'),\"error-messages\":_vm.errors,\"required\":\"\"},model:{value:(_vm.a.accountName),callback:function ($$v) {_vm.$set(_vm.a, \"accountName\", $$v)},expression:\"a.accountName\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:2|max:255\",\"label\":_vm.$t('label.street')},model:{value:(_vm.a.streetAddress),callback:function ($$v) {_vm.$set(_vm.a, \"streetAddress\", $$v)},expression:\"a.streetAddress\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"8\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:2|max:255\",\"label\":_vm.$t('label.city')},model:{value:(_vm.a.city),callback:function ($$v) {_vm.$set(_vm.a, \"city\", $$v)},expression:\"a.city\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:2|max:50\",\"label\":_vm.$t('label.zipcode')},model:{value:(_vm.a.postalCode),callback:function ($$v) {_vm.$set(_vm.a, \"postalCode\", $$v)},expression:\"a.postalCode\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"8\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.country'),\"error-messages\":errors,\"items\":_vm.countries},model:{value:(_vm.a.countryCode),callback:function ($$v) {_vm.$set(_vm.a, \"countryCode\", $$v)},expression:\"a.countryCode\"}})]}}])})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"4\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:2|max:50\",\"label\":_vm.$t('label.state')},model:{value:(_vm.a.countryState),callback:function ($$v) {_vm.$set(_vm.a, \"countryState\", $$v)},expression:\"a.countryState\"}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('validated-text-field',{attrs:{\"rules\":`max:50|validPhone:${_vm.defaultCC}`,\"label\":_vm.$t('label.phone')},model:{value:(_vm.a.phone),callback:function ($$v) {_vm.$set(_vm.a, \"phone\", $$v)},expression:\"a.phone\"}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('validated-text-field',{attrs:{\"rules\":\"max:255\",\"label\":_vm.$t('label.website')},model:{value:(_vm.a.website),callback:function ($$v) {_vm.$set(_vm.a, \"website\", $$v)},expression:\"a.website\"}})],1),_c('row-form-divider',{staticClass:\"py-5\"}),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.language'),\"items\":_vm.locales,\"error-messages\":errors},model:{value:(_vm.a.locale),callback:function ($$v) {_vm.$set(_vm.a, \"locale\", $$v)},expression:\"a.locale\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.time_zone'),\"items\":_vm.timezones,\"error-messages\":errors},model:{value:(_vm.a.timeZoneId),callback:function ($$v) {_vm.$set(_vm.a, \"timeZoneId\", $$v)},expression:\"a.timeZoneId\"}})]}}])})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport httpClient from '@/api/http-client';\nimport ValidatedTextField from '@/components/forms/ValidatedTextField.vue';\nimport Account from '@/model/Account';\nimport Country from '@/model/Country';\nimport Locale from '@/model/Locale';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport TimeZone from '@/model/TimeZone';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { ValidationObserver } from 'vee-validate';\nimport Vue from 'vue';\nimport toast from '@/plugins/toast-plugin/toast';\n\nexport default Vue.extend({\n name: 'WelcomeStepAccount',\n components: { ValidatedTextField },\n props: {\n\n },\n data() {\n return {\n a: new Account(),\n olda: new Account(),\n unwatch: Function as (() => void),\n };\n },\n computed: {\n isChanged(): boolean {\n return !isModelEqualToModel(this.a, this.olda);\n },\n countries(): Country[] {\n return this.$tstore.getters.sortedCountries;\n },\n locales(): Locale[] {\n return this.$tstore.getters.sortedLocales;\n },\n timezones(): TimeZone[] {\n return this.$tstore.getters.sortedTimezones;\n },\n defaultCC(): string {\n return this.a.countryCode || '';\n },\n },\n mounted() {\n this.reset();\n },\n created() {\n this.unwatch = this.$tstore.watch((state, getters) => getters.isLoaded, (newValue, oldValue) => { this.reset(); });\n },\n beforeDestroy() {\n this.unwatch();\n },\n methods: {\n reset() {\n const a = this.$tstore.state.settings.account;\n this.a = cloneModel(a);\n this.olda = a;\n\n if (!this.a.countryCode) this.autofillCountry();\n },\n async autofillCountry() {\n try {\n const countryCode = await httpClient.getCountryCode();\n if (!countryCode || this.a.countryCode) return; // no country code detected or no need to update it any more\n Vue.set(this.a, 'countryCode', countryCode); // autofill country code\n } catch (e) {\n console.log('Autofill country code error: ', e);\n }\n },\n // eslint-disable-next-line vue/no-unused-properties\n async submit() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) {\n toast.error(this.$i18n.tc('error.validation_failed'));\n return;\n }\n\n if (!this.isChanged) {\n this.$emit('advance');\n return;\n }\n\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.$tstore.dispatch('sendAccount', { entity: this.a }),\n );\n if (ok) {\n this.reset();\n this.$emit('advance');\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepAccount.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepAccount.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WelcomeStepAccount.vue?vue&type=template&id=20ba9a43&\"\nimport script from \"./WelcomeStepAccount.vue?vue&type=script&lang=ts&\"\nexport * from \"./WelcomeStepAccount.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"text--primary\",staticStyle:{\"min-height\":\"590px\"},attrs:{\"fluid\":\"\"}},[_c('h2',[_vm._v(_vm._s(_vm.$t('label.sections')))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('help.onboarding.sections_1'))+\" \")]),_c('p',[_c('i18n',{attrs:{\"path\":\"help.onboarding.sections_2\",\"tag\":\"p\"}},[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.settings'))+\"→\"+_vm._s(_vm.$t('title.sections')))]),_vm._v(\". \")])],1),_c('h2',[_vm._v(_vm._s(_vm.$t('label.tables')))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('help.onboarding.tables'))+\" \")]),_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},_vm._l((_vm.tabs),function(t,i){return _c('v-row',{key:i},[(i > 0)?_c('v-col',{staticClass:\"pt-5 pb-0\",attrs:{\"cols\":\"12\"}},[_c('v-divider')],1):_vm._e(),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\",\"sm\":\"4\"}},[_c('validation-provider',{attrs:{\"rules\":\"required|min:2|max:255\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-text-field',{attrs:{\"label\":_vm.$t('label.section_name'),\"error-messages\":errors},model:{value:(t.name),callback:function ($$v) {_vm.$set(t, \"name\", $$v)},expression:\"t.name\"}})]}}],null,true)})],1),_c('v-col',{staticClass:\"text-center mt-0 pb-0 mt-sm-3 px-1\",attrs:{\"cols\":\"12\",\"sm\":\"4\"}},[_c('v-btn',{attrs:{\"block\":_vm.$vuetify.breakpoint.smAndDown,\"disabled\":t === null,\"outlined\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setupTables(t)}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.setup_tables'))+\" \")])],1),_c('v-col',{staticClass:\"text-center mt-0 pb-0 mt-sm-3 px-1\",attrs:{\"cols\":\"12\",\"sm\":\"4\"}},[_c('v-btn',{attrs:{\"disabled\":t === null,\"block\":_vm.$vuetify.breakpoint.smAndDown,\"outlined\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.setupFloorplan(t)}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.floorplan'))+\" \")])],1)],1)}),1)],1),_c('tables-dialog',{attrs:{\"visible\":_vm.tabItemsDialog,\"tab\":_vm.tab},on:{\"close\":function($event){return _vm.closeDialogs()}}}),_c('floorplan-edit-dialog',{attrs:{\"visible\":_vm.floorplanDialog,\"tab\":_vm.tab},on:{\"close\":function($event){return _vm.closeDialogs()}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport TablesDialog from '@/components/views/settings/TablesDialog.vue';\nimport FloorplanEditDialog from '@/components/views/settings/FloorplanEditDialog.vue';\nimport Tab from '@/model/Tab';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\n\nexport default Vue.extend({\n name: 'WelcomeStepTables',\n components: { TablesDialog, FloorplanEditDialog },\n props: { },\n data() {\n return {\n tabItemsDialog: false,\n floorplanDialog: false,\n tab: null as Tab | null,\n tabs: [] as Tab[],\n oldTabs: [] as Tab[],\n unwatch: Function as (() => void),\n\n };\n },\n computed: {\n isChanged(): boolean {\n return !isModelEqualToModel(this.tabs, this.oldTabs);\n },\n },\n watch: { },\n mounted() {\n this.reset();\n },\n created() {\n this.unwatch = this.$tstore.watch((state, getters) => getters.isLoaded, (newValue, oldValue) => { this.reset(); });\n },\n beforeDestroy() {\n this.unwatch();\n },\n\n methods: {\n setupTables(tab: Tab) {\n this.tab = tab;\n this.tabItemsDialog = true;\n },\n setupFloorplan(tab: Tab) {\n this.tab = tab;\n this.floorplanDialog = true;\n },\n closeDialogs() {\n this.tabItemsDialog = false;\n this.floorplanDialog = false;\n },\n // eslint-disable-next-line vue/no-unused-properties\n async submit() {\n if (!this.isChanged) {\n this.$emit('advance');\n return;\n }\n\n const entities = this.tabs;\n const ok = await performSaveAction(\n undefined,\n async () => this.$tstore.dispatch('sendTabs', { entities }),\n );\n if (!ok) return;\n\n this.reset();\n this.$emit('advance');\n },\n reset() {\n const { tabs } = this.$tstore.state.settings;\n this.tabs = tabs.map((o) => cloneModel(o));\n this.oldTabs = tabs;\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepTables.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepTables.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WelcomeStepTables.vue?vue&type=template&id=4f7636be&\"\nimport script from \"./WelcomeStepTables.vue?vue&type=script&lang=ts&\"\nexport * from \"./WelcomeStepTables.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"text--primary\",staticStyle:{\"min-height\":\"590px\"},attrs:{\"fluid\":\"\"}},[_c('input-dialog',{attrs:{\"label-title\":_vm.$t('label.booking_url'),\"visible\":_vm.urlEditorVisible,\"message\":_vm.$t('message.enter_booking_form_url'),\"confirm-title\":\"save\",\"max-width\":\"400\",\"textfield-suffix\":_vm.widgetDomain,\"rules\":\"alpha_num|min:3|max:50|unique_widget_url\",\"no-auto-close\":\"\",\"debounce-validation\":\"300\"},on:{\"confirm\":_vm.saveURLEditor,\"cancel\":_vm.closeURLEditor},model:{value:(_vm.widgetSubdomain),callback:function ($$v) {_vm.widgetSubdomain=$$v},expression:\"widgetSubdomain\"}}),_c('h1',[_vm._v(_vm._s(_vm.$t('label.congratulations'))+\" 🎉\")]),_c('p',{staticClass:\"py-2 text-subtitle-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.setup_finished'))+\" \")]),_c('v-row',[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('title.online_reservations'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.hint_booking_page'))+\" \")]),_c('v-col',{staticClass:\"ma-0 pa-0\",attrs:{\"cols\":\"12\"}},[_c('v-col',{staticClass:\"pt-0 mt-0\",attrs:{\"cols\":\"12\"}},[_c('v-sheet',{staticClass:\"pt-1 text-center text-body-1\",attrs:{\"color\":_vm.$vuetify.theme.dark ? 'secondary lighten-2' : 'grey lighten-3'}},[_c('a',{attrs:{\"href\":_vm.hostedFormUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.hostedFormUrl))]),_c('v-icon',{staticClass:\"pl-1 pb-1\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-open-in-new \")]),_c('div',[_c('v-btn',{staticClass:\"mt-2 mb-3 blue white--text\",attrs:{\"x-small\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.openURLEditor}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-pencil \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.change_url_address'))+\" \")],1)],1)],1)],1)],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"mb-2 pt-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.bookings_from_your_website'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.hint_bookings_from_website'))+\" \")]),_c('v-col',{staticClass:\"my-0 pt-0 pb-5\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"target\":\"_blank\",\"block\":\"\",\"color\":\"primary\",\"href\":_vm.widgetDocumentationURL}},[_vm._v(\" \"+_vm._s(_vm.$t('button.discover_widget'))+\" \")])],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('h3',{staticClass:\"mb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.learn_more_about_guestplan'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.hint_learn_more_about_guestplan'))+\" \")]),_c('v-col',{staticClass:\"my-0 pt-0 pb-3\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"block\":\"\",\"outlined\":\"\",\"color\":\"primary\",\"href\":\"https://docs.guestplan.com\",\"target\":\"_blank\"}},[_c('v-icon',[_vm._v(\"mdi-book\")]),_vm._v(_vm._s(_vm.$t('button.guestplan_manual'))+\" \")],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { hostedWidgetURL, WIDGET_DOMAIN } from '@/services/configuration';\nimport Campaign from '@/grpc-api/model/campaign';\nimport Vue from 'vue';\nimport { performAction } from '@/services/vue-utils';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport InputDialog from '@/components/dialogs/InputDialog.vue';\nimport { cloneModel } from '@/model/model-utils';\nimport { extend } from 'vee-validate';\nimport { ApiErrorCode } from '@/api/api-error';\n\nexport default Vue.extend({\n name: 'WelcomeStepOnline',\n components: { InputDialog },\n props: { },\n data() {\n return {\n widgetSubdomain: null as string | null,\n campaign: null as Campaign | null,\n urlEditorVisible: false,\n };\n },\n computed: {\n widgetDomain(): string {\n return `.${WIDGET_DOMAIN}`;\n },\n hostedFormUrl(): string {\n const subdomain = this.campaign?.subdomain;\n return subdomain ? hostedWidgetURL({ subdomain }) : this.$tstore.getters.hostedWidgetURL ?? 'N/A';\n },\n widgetDocumentationURL(): string {\n return this.$tstore.state.settings.account.widgetDocumentationURL || '';\n },\n },\n watch: { },\n mounted() {\n extend('unique_widget_url', {\n validate: async (value, _) => {\n if (this.campaign === null || value === undefined) return true;\n const nc = cloneModel(this.campaign);\n nc.subdomain = value;\n return this.testCampaign(nc);\n },\n lazy: true,\n });\n\n // this.reset();\n },\n methods: {\n // eslint-disable-next-line vue/no-unused-properties\n async reset() {\n this.campaign = null;\n this.widgetSubdomain = null;\n if (!this.$tstore.getters.isLoaded) return;\n\n await this.loadCampaign();\n },\n\n async openURLEditor() {\n const ok = await this.loadCampaign();\n if (ok) this.urlEditorVisible = true;\n },\n closeURLEditor() {\n this.urlEditorVisible = false;\n },\n async saveURLEditor() {\n if (!this.campaign) { this.urlEditorVisible = false; return; }\n\n const nc = cloneModel(this.campaign);\n nc.subdomain = this.widgetSubdomain ?? undefined;\n\n const ok = await this.updateCampaign(nc);\n if (ok) this.urlEditorVisible = false;\n },\n async loadCampaign(): Promise {\n const ok = await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => {\n this.campaign = await grpcClient.getDefaultCampaign();\n this.widgetSubdomain = this.campaign.subdomain ?? null;\n },\n );\n return ok;\n },\n async testCampaign(c: Campaign): Promise {\n try {\n await grpcClient.testDefaultCampaign(c);\n } catch (e: any) {\n if (e.code === ApiErrorCode.already_exists || e.code === ApiErrorCode.subdomain_already_exists) {\n return this.$i18n.tc('error.url_already_taken');\n }\n if (e.code === ApiErrorCode.invalid_argument || e.code === ApiErrorCode.subdomain_invalid) {\n return this.$i18n.tc('error.url_not_allowed');\n }\n return true;\n }\n return true;\n },\n async updateCampaign(c: Campaign): Promise {\n const ok = await performAction(\n null,\n this.$i18n.tc('error.save_data'),\n async () => {\n this.campaign = await grpcClient.updateDefaultCampaign(c);\n },\n );\n return ok;\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepOnline.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepOnline.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WelcomeStepOnline.vue?vue&type=template&id=3371a638&\"\nimport script from \"./WelcomeStepOnline.vue?vue&type=script&lang=ts&\"\nexport * from \"./WelcomeStepOnline.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"text--primary\",staticStyle:{\"min-height\":\"590px\"},attrs:{\"fluid\":\"\"}},[_c('h2',[_vm._v(_vm._s(_vm.$t('title.opening_hours')))]),_c('p',[_vm._v(\" \"+_vm._s(_vm.$t('help.onboarding.opening_hours'))+\" \")]),_c('v-alert',{staticClass:\"text-body-2\",attrs:{\"dense\":\"\",\"outlined\":\"\",\"dark\":false,\"border\":\"left\",\"color\":\"primary\",\"type\":\"info\"}},[_c('i18n',{attrs:{\"path\":\"help.onboarding.opening_hours_gaps\",\"tag\":\"span\"}},[_c('span',{staticClass:\"text-weight-medium\"},[_vm._v(_vm._s(_vm.$t('title.settings'))+\"→\"+_vm._s(_vm.$t('title.opening_hours')))]),_vm._v(\". \")])],1),_c('v-divider',{staticClass:\"py-5\"}),_vm._l((_vm.days),function(day,i){return [_c('div',{key:`day_${i}`,staticClass:\"row py-0 d-flex pb-2\"},[_c('v-col',{staticClass:\"pa-0 d-flex align-center flex-grow-0 pl-5\"},[_c('v-checkbox',{staticClass:\"pa-0 ma-0\",attrs:{\"input-value\":_vm.open[day.value],\"hide-details\":\"\"},on:{\"change\":(open) => _vm.changeOpen(day.value, open)}})],1),_c('v-col',{class:['py-0 py-0 d-flex align-center', `${_vm.open[day.value] ? 'text--primary' : 'text--secondary'}`],attrs:{\"cols\":\"1\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(day.text))])]),_c('v-col',{staticClass:\"py-0 py-0 flex-grow-1\"},[_c('v-range-slider',{attrs:{\"value\":_vm.slots[day.value],\"disabled\":!_vm.open[day.value],\"min\":24,\"max\":96,\"step\":_vm.slotStep,\"track-color\":\"grey lighten-1\",\"hide-details\":\"\"},on:{\"input\":(bounds) => _vm.changeSlot(day.value, bounds)}})],1),_c('v-col',{class:['pa-0 ma-0 d-flex align-center', `${_vm.open[day.value] ? 'text--primary' : 'text--secondary'}`],staticStyle:{\"min-width\":\"120px\"},attrs:{\"cols\":\"2\"}},[(_vm.open[day.value])?[_vm._v(\" \"+_vm._s(_vm.timeFromSlot(_vm.slots[day.value][0]))+\" - \"+_vm._s(_vm.timeFromSlot(_vm.slots[day.value][1]))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t('label.closed'))+\" \")]],2)],1)]}),_c('v-divider',{staticClass:\"mt-5 mb-4\"}),_c('v-select',{attrs:{\"items\":_vm.bookingIntervals,\"label\":_vm.$t('label.booking_interval')},on:{\"input\":_vm.bookingIntervalChanged},model:{value:(_vm.bookingInterval),callback:function ($$v) {_vm.bookingInterval=$$v},expression:\"bookingInterval\"}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport OpeningHour from '@/model/OpeningHour';\nimport { niceTimeTextFromSlot, weekdayNumberFromDateDay } from '@/services/time-utils';\nimport { performSaveAction } from '@/services/vue-utils';\nimport Vue from 'vue';\nimport {\n guessIntervalFromHoursInWeekdays,\n hoursFromSimpleHoursInWeekdays, openingHoursToSimpleHoursInWeekdays, roundedSimpleHoursInWeekdays, SimpleHour,\n} from '@/services/hours-utils';\nimport { isModelEqualToModel } from '@/model/model-utils';\n\nexport default Vue.extend({\n name: 'WelcomeStepHours',\n components: { },\n props: { },\n data() {\n return {\n oldHours: [] as OpeningHour[],\n bookingInterval: 15,\n bookingIntervals: [\n { text: this.$i18n.t('label.15_minutes'), value: 15 },\n { text: this.$i18n.t('label.30_minutes'), value: 30 },\n ],\n simpleHoursInWeekdays: [] as SimpleHour[], // in weekdays - starting from 1 (Mon === 1, Tue === 2, ....)\n unwatch: Function as (() => void),\n };\n },\n computed: {\n days(): {value: number, text: string}[] {\n return this.$localized.weekdays();\n },\n isChanged(): boolean {\n return !isModelEqualToModel(this.hours, this.oldHours);\n },\n is30minInterval(): boolean {\n return this.bookingInterval === 30;\n },\n slotStep(): number {\n return this.bookingInterval === 30 ? 2 : 1;\n },\n open(): boolean[] {\n return Array.from({ length: this.days.length }, (x, day) => {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber] ?? new SimpleHour();\n return sh.isOpen;\n });\n },\n slots(): number[][] {\n return Array.from({ length: this.days.length }, (x, day) => {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber] ?? new SimpleHour();\n return [sh.beginSlot, sh.endSlot];\n });\n },\n hours(): OpeningHour[] {\n return hoursFromSimpleHoursInWeekdays(this.simpleHoursInWeekdays, this.is30minInterval);\n },\n },\n watch: { },\n mounted() {\n this.reset();\n },\n created() {\n this.reset();\n this.unwatch = this.$tstore.watch((state, getters) => getters.isLoaded, (newValue, oldValue) => { this.reset(); });\n },\n beforeDestroy() {\n this.unwatch();\n },\n\n methods: {\n reset() {\n this.oldHours = this.$tstore.state.settings.openingHours;\n const hourMaps = this.$tstore.getters.openingHoursInWeekdaysByTimeIndex as Map[];\n\n const simpleHoursInWeekdays = openingHoursToSimpleHoursInWeekdays(hourMaps, this.is30minInterval);\n this.simpleHoursInWeekdays = simpleHoursInWeekdays;\n\n const bookingInterval = guessIntervalFromHoursInWeekdays(hourMaps);\n this.bookingInterval = bookingInterval;\n },\n changeSlot(day: number, slots: number[]) {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber];\n [sh.beginSlot, sh.endSlot] = [...slots];\n },\n changeOpen(day: number, open: boolean) {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber];\n sh.isOpen = open;\n },\n bookingIntervalChanged(interval: number) {\n if (!this.is30minInterval) return;\n this.simpleHoursInWeekdays = roundedSimpleHoursInWeekdays(this.simpleHoursInWeekdays);\n },\n // eslint-disable-next-line vue/no-unused-properties\n async submit() {\n if (!this.isChanged) {\n this.$emit('advance');\n return;\n }\n\n const entities = this.hours;\n\n const ok = await performSaveAction(\n undefined,\n async () => this.$tstore.dispatch('sendOpeningHours', { entities }),\n );\n if (ok) {\n this.reset();\n this.$emit('advance');\n }\n },\n timeFromSlot(slot: number): string {\n return this.$localized.hourMinTextFrom24hr(niceTimeTextFromSlot(slot)) || '';\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepHours.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WelcomeStepHours.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WelcomeStepHours.vue?vue&type=template&id=05415a1b&\"\nimport script from \"./WelcomeStepHours.vue?vue&type=script&lang=ts&\"\nexport * from \"./WelcomeStepHours.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport WelcomeStepWelcome from '@/components/views/onboarding/WelcomeStepWelcome.vue';\nimport WelcomeStepAccount from '@/components/views/onboarding/WelcomeStepAccount.vue';\nimport WelcomeStepTables from '@/components/views/onboarding/WelcomeStepTables.vue';\nimport WelcomeStepOnlineAlt from '@/components/views/onboarding/WelcomeStepOnline.vue';\nimport WelcomeStepHours from '@/components/views/onboarding/WelcomeStepHours.vue';\nimport DialogClosable from '@/mixins/dialog-closable';\n\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'Welcome',\n components: {\n WelcomeStepWelcome,\n WelcomeStepAccount,\n WelcomeStepTables,\n WelcomeStepOnlineAlt,\n WelcomeStepHours,\n },\n mixins: [DialogClosable],\n props: { },\n data() {\n return {\n step: 0,\n steps: 4,\n editable: true,\n completedSteps: [false, false, false, false, false],\n skipSteps: [false, true, false, false, false],\n stepLabels: ['',\n this.$i18n.t('title.account'),\n this.$i18n.t('title.tables'),\n this.$i18n.t('title.opening_hours'),\n this.$i18n.t('title.finished')],\n };\n },\n computed: { },\n watch: {\n visible: {\n immediate: true,\n handler(value) {\n if (value) this.$emit('open');\n },\n },\n },\n methods: {\n finishStep(s: number) {\n this.completedSteps[s] = true;\n this.nextStep();\n },\n skip() {\n this.nextStep();\n },\n submit() {\n const stepComponent = this.$refs[`step_${this.step}`] as any;\n stepComponent.submit();\n },\n nextStep() {\n if (this.step === this.steps) {\n this.$emit('close');\n return;\n }\n this.step += 1;\n this.stepChanged(this.step);\n },\n stepChanged(step: number) {\n if (step !== 4) return;\n const stepComponent = this.$refs[`step_${this.step}`] as any;\n stepComponent.reset();\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Welcome.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Welcome.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Welcome.vue?vue&type=template&id=0af7fe53&\"\nimport script from \"./Welcome.vue?vue&type=script&lang=ts&\"\nexport * from \"./Welcome.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.warningBarInfo)?_c('v-system-bar',{attrs:{\"app\":\"\",\"height\":\"28\",\"color\":\"warning\"}},[_c('v-icon',{attrs:{\"color\":\"black\"}},[_vm._v(\" mdi-alert-octagon \")]),_c('span',{staticClass:\"black--text ellipsize\"},[_vm._v(\" \"+_vm._s(_vm.$t(_setup.warningBarInfo.infoKey, [_setup.warningBarInfo.extraText]))+\" \")]),_c('i18n',{staticClass:\"black--text d-none d-md-inline pl-1\",attrs:{\"path\":_setup.warningBarInfo.navKey,\"tag\":\"span\"}},[_c('router-link',{staticClass:\"blue--text\",attrs:{\"to\":\"/settings/billing\"}},[_vm._v(\" \"+_vm._s(_vm.$t(_setup.warningBarInfo.navLinkKey))+\" \")])],1),_c('v-spacer'),(_setup.warningBarInfo.buttonKey)?_c('v-btn',{staticClass:\"white--text\",attrs:{\"elevation\":\"0\",\"depressed\":\"\",\"x-small\":\"\",\"color\":\"black\",\"to\":\"/settings/billing\"}},[_vm._v(\" \"+_vm._s(_vm.$t(_setup.warningBarInfo.buttonKey))+\" \")]):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { WarningBarInfo } from '@/services/billing-utils';\nimport { PropType, computed } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'BillingWarningBar',\n props: {\n subWarningBarInfo: { type: Object as PropType, required: false, default: null },\n smsWarningBarInfo: { type: Object as PropType, required: false, default: null },\n paymentWarningBarInfo: { type: Object as PropType, required: false, default: null },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\nconst warningBarInfo = computed(\n () => props.subWarningBarInfo ?? props.paymentWarningBarInfo ?? props.smsWarningBarInfo,\n);\n\n\nreturn { __sfc: true,props, warningBarInfo }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BillingWarningBar.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./BillingWarningBar.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./BillingWarningBar.vue?vue&type=template&id=3d9cacd8&\"\nimport script from \"./BillingWarningBar.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./BillingWarningBar.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"700\"},model:{value:(_setup.dialog),callback:function ($$v) {_setup.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"text-h3 pt-6 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.hello', _vm.lang))+\" \")]),_c('v-card-text',[_c('span',{staticClass:\"text-h6 my-5 text-center d-block black--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.message_geustplan_available_in_local_lang', _vm.lang))+\" \")])]),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_setup.switchToNewLanguage}},[_vm._v(\" \"+_vm._s(_vm.$t('button.yes', _vm.lang))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":function($event){return _setup.emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel', _vm.lang))+\" \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport i18n from '@/plugins/i18n';\nimport storage from '@/services/local-storage';\nimport { ref } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'LanguageSwitchDialog',\n props: {\n lang: { type: String, required: true },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\nconst dialog = ref(true);\n\nconst switchToNewLanguage = () => {\n i18n.locale = props.lang;\n storage.setLanguage(props.lang);\n};\n\nstorage.setLanguagePromptDisplayed(true);\n\n\nreturn { __sfc: true,props, emit, dialog, switchToNewLanguage }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LanguageSwitchDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LanguageSwitchDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./LanguageSwitchDialog.vue?vue&type=template&id=629d0587&\"\nimport script from \"./LanguageSwitchDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./LanguageSwitchDialog.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:['d-none d-sm-block privacy-screen privacy-screen-backdrop', {'privacy-backdrop-active': _setup.screenActive}]},[(_setup.screenActive)?_c('div',{staticClass:\"pa-0 ma-0 d-flex h-100 justify-center align-center privacy-screen\"},[_c('v-chip',{staticClass:\"privacy-screen-chip\",attrs:{\"label\":\"\",\"outlined\":\"\",\"x-large\":\"\",\"color\":\"primary px-6\"}},[_c('v-icon',{staticClass:\"mr-4\"},[_vm._v(\" mdi-eye-lock-outline \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.privacy_screen_active'))+\" \")],1)],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { useCssVars as _useCssVars, defineComponent as _defineComponent } from 'vue'\nimport store from '@/store/store';\nimport {\n ref, onBeforeUnmount, onMounted, computed, watch,\n} from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PrivacyScreenView',\n props: {\n top: { type: String, required: false, default: '0px' },\n left: { type: String, required: false, default: '0px' },\n maxWidth: { type: String, required: false, default: '100%' },\n},\n setup(__props) {\n\nconst props = __props;\n\n_useCssVars((_vm, _setup) => ({\n \"23b7c928\": (_vm.top),\n \"533d9294\": (_vm.left),\n \"2fe23acf\": (_vm.maxWidth)\n}))\n\n\n\n\nconst screenActive = ref(false);\nconst timeout = computed(() => (store.getters.activeUser?.privacyScreenTimeout || 0) * 1000);\nlet timer = undefined as number | undefined;\n\nconst activityHandler = () => {\n if (timeout.value === 0) { return; }\n\n screenActive.value = false;\n if (timer !== undefined) { window.clearTimeout(timer); }\n timer = window.setTimeout(() => {\n screenActive.value = true;\n }, timeout.value);\n};\n\nwatch(timeout, () => {\n if (timeout.value === 0) {\n screenActive.value = false;\n if (timer !== undefined) { window.clearTimeout(timer); }\n } else {\n activityHandler();\n }\n});\n\nconst events = ['mousemove', 'keydown', 'wheel', 'click'];\nevents.forEach((e) => window.addEventListener(e, activityHandler));\n\nonMounted(() => activityHandler());\nonBeforeUnmount(() => {\n events.forEach((e) => window.removeEventListener(e, activityHandler));\n});\n\n\nreturn { __sfc: true,props, screenActive, timeout, timer, activityHandler, events }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrivacyScreenView.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PrivacyScreenView.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PrivacyScreenView.vue?vue&type=template&id=67d68628&scoped=true&\"\nimport script from \"./PrivacyScreenView.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PrivacyScreenView.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./PrivacyScreenView.vue?vue&type=style&index=0&id=67d68628&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"67d68628\",\n null\n \n)\n\nexport default component.exports","const firebaseAppCfg = {\n apiKey: 'AIzaSyBp2ANRnwSw1CbMeDfRPAO55KU6GV5_VWI',\n authDomain: 'guestplan-ba361.firebaseapp.com',\n projectId: 'guestplan-ba361',\n storageBucket: 'guestplan-ba361.appspot.com',\n messagingSenderId: '625683205123',\n appId: '1:625683205123:web:60ddfc80d7c6a838ee9236',\n};\n\nconst fcmVapidKey = 'BPOhXN63pZIduWifWu44N67G4RtFSmqOfnAMjBzSis8hz-3qS1cSG3QXYZZ_m-5l9LrdxAott3fUINt2AV_6yUw';\nexport { firebaseAppCfg, fcmVapidKey };\n","import { initializeApp } from 'firebase/app';\nimport { getMessaging, getToken } from 'firebase/messaging';\nimport store from '@/store/store';\nimport { firebaseAppCfg, fcmVapidKey } from '@/services/fcm-app-cfg';\n\nexport default function requestFcmNotificationPermission() {\n const firebase = initializeApp(firebaseAppCfg);\n const messaging = getMessaging(firebase);\n navigator.serviceWorker.getRegistration().then((r) => {\n getToken(\n messaging,\n {\n vapidKey: fcmVapidKey,\n serviceWorkerRegistration: r,\n },\n ).then((currentToken: string) => {\n if (currentToken) {\n store.commit('SET_FCM_TOKEN', currentToken);\n } else {\n console.log('No registration token available. Request permission to generate one.');\n }\n }).catch((err: Error) => {\n console.log('An error occurred while retrieving token. ', err);\n });\n });\n}\n","/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\n/* eslint-disable camelcase */\n/* eslint-disable no-use-before-define */\n\nimport Reservation, { ReservationSource, ReservationType } from '@/model/Reservation';\nimport i18n from '@/plugins/i18n';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport Diff from 'text-diff';\nimport {\n EmailMessageTypes, MessageLogStatus, SmsMessageTypes, MessageType,\n} from './messages';\nimport { dateFromDateTimeString, timeStringFromDate, unixFromDate } from './time-utils';\n\nexport interface History {\n records: HistoryRecord[]\n messages: HistoryMessage[]\n}\n\nexport interface HistoryAttachment {\n attachment_name: string\n attachment_url: string\n}\nexport interface HistoryRecord {\n reservation_id?: number\n contact_id?: number\n contact_name?: string\n contact_email?: string\n contact_phone?: string\n tab_id?: number\n tab_name?: string\n service_id?: number\n service_name?: string\n dt_begin?: number\n dt_end?: number\n end_fixed?: boolean\n party_size?: number\n hold_tab_items?: boolean\n reservation_note?: string\n reservation_status?: string\n reservation_label?: string\n campaign_id?: number\n campaign_name?: string\n reservation_campaign?: string\n dt_pre_reserved?: number\n is_starred?: boolean\n is_flagged?: boolean\n employee_edit_id?: number\n employee_edit?: string\n dt_create?: number\n dt_update?: number\n reserved_tab_item_ids?: number[],\n reserved_tab_items?: string[],\n reservation_attachments?: HistoryAttachment[],\n booking_type?: string\n}\n\nexport interface HistoryMessage {\n recipient?: string\n status?: string\n is_undeliverable?: boolean\n message_type?: string\n event_type?: string\n event_name?: string\n dt_create?: number\n dt_update?: number\n}\n\ntype HistoryRecordKey = keyof HistoryRecord\n\nexport enum HistoryItemType {\n Record = 'record',\n Message = 'message',\n}\n\nexport enum HistoryItemSubtype {\n Other = 'other',\n Created = 'created',\n Modified = 'modified',\n Email = 'email',\n SMS = 'sms',\n}\n\nexport enum HistoryItemFlag {\n None = 0,\n\n StatusSend = 0x0100,\n StatusBlocked = 0x0200,\n StatusBounced = 0x0400,\n StatusFailure = 0x0800,\n StatusInvalid = 0x1000,\n StatusUndeliverable = 0x2000,\n StatusDelivered = 0x4000,\n\n TypeOnline = 0x100000\n}\n\nexport interface HistoryItemChange {\n field: string\n fieldKey: string\n textKey?: string\n textParams?: {\n value?: string\n htmlValue?: string\n newValue?: string\n oldValue?: string\n }\n excludeFields?: string[]\n}\n\nexport interface HistorySubItem {\n textKey?: string\n textParams?: {}\n}\nexport interface HistoryItem {\n type: HistoryItemType\n subtype: HistoryItemSubtype\n flags: HistoryItemFlag\n date: string\n originator?: string\n textKey: string\n textParams?: {\n eventName?: string\n recipient?: string\n status?: string\n }\n changes?: HistoryItemChange[]\n subItems?: HistorySubItem[]\n timeIndex: number\n hidden?: boolean\n}\n\nfunction valueText(field: HistoryRecordKey, value: any, hr?: HistoryRecord): string {\n switch (field) {\n case 'dt_begin':\n case 'dt_end':\n case 'dt_pre_reserved':\n {\n const date = dateFromDateTimeString(value);\n return timeStringFromDate(date) ?? 'N/A';\n }\n\n case 'reservation_status': return i18n.tc(`code.status.${value}`);\n case 'reservation_note': return `\"${value}\"`;\n case 'reserved_tab_items': return value.join(', ');\n case 'booking_type': return i18n.tc(`code.booking_type.${value}`);\n\n default:\n break;\n }\n return String(value);\n}\n\nfunction simpleCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord, p?: { key?: string, pkey?: string, ivals?: any[] }): HistoryItemChange[] {\n const newValue = hr[field] ? valueText(field, hr[field], hr) : undefined;\n const oldValue = phr[field] ? valueText(field, phr[field], phr) : undefined;\n let fieldKey = `code.history_field.${p?.key ?? field}`;\n let textKey = 'N/A';\n\n // ignore values\n if (p?.ivals && (p?.ivals.includes(newValue) || p?.ivals.includes(oldValue))) return [];\n\n // plural, value assumed to be array\n if (p?.pkey && (((hr[field] as any)?.length ?? 0) >= 2 || ((phr[field] as any)?.length ?? 0) >= 2)) {\n fieldKey = `code.history_field.${p?.pkey}`;\n }\n\n if (!newValue && oldValue) textKey = 'message.history_item_change_removed_value';\n else if (newValue && !oldValue) textKey = 'message.history_item_change_added_value';\n else if (newValue !== oldValue) textKey = 'message.history_item_change_modified_values';\n else return [];\n\n return [{\n field, fieldKey, textKey, textParams: { newValue, oldValue, value: newValue ?? oldValue },\n }];\n}\n\nfunction bookingTypeCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord): HistoryItemChange[] {\n const defaultBookingType = (r: HistoryRecord) => (r?.party_size === 0 ? ReservationType.Block : ReservationType.Reservation);\n\n const newValue = valueText(field, hr[field] ?? defaultBookingType(hr));\n const oldValue = valueText(field, phr[field] ?? defaultBookingType(phr));\n const fieldKey = `code.history_field.${field}`;\n let textKey = 'N/A';\n\n if (newValue !== oldValue) textKey = 'message.history_item_change_modified_values';\n else return [];\n\n return [{\n field, fieldKey, textKey, textParams: { newValue, oldValue, value: newValue ?? oldValue },\n }];\n}\n\nfunction idCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord, key: string, excludeFields: string[]): HistoryItemChange[] {\n const fieldKey = `code.history_field.${key}`;\n let textKey = 'N/A';\n\n if (!hr[field] && phr[field]) textKey = 'message.history_item_change_removed';\n else if (hr[field] && !phr[field]) textKey = 'message.history_item_change_added';\n else if (hr[field] !== phr[field]) textKey = 'message.history_item_change_modified';\n else return [];\n\n return [{\n field, fieldKey, textKey, excludeFields,\n }];\n}\n\nfunction boolCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord): HistoryItemChange[] {\n const fieldKey = `code.history_field.${field}`;\n let textKey = 'N/A';\n\n if (!hr[field] && phr[field]) textKey = 'message.history_item_change_unset';\n else if (hr[field] && !phr[field]) textKey = 'message.history_item_change_set';\n else return [];\n\n return [{ field, fieldKey, textKey }];\n}\n\nfunction tabItemsCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord): HistoryItemChange[] {\n // added and removed tab ritems\n const old = new Set();\n phr.reserved_tab_items?.forEach((ti) => old.add(ti));\n const added: string[] = [];\n hr.reserved_tab_items?.forEach((ti) => (old.has(ti) ? old.delete(ti) : added.push(ti)));\n const removed = Array.from(old.values());\n\n // populate changes\n const changes: HistoryItemChange[] = [];\n\n if (added.length > 0) {\n const fieldKey = added.length === 1 ? 'code.history_field.reserved_tab_item' : 'code.history_field.reserved_tab_items';\n const textKey = 'message.history_item_change_added_value';\n const value = added.join(', ');\n changes.push({\n field, fieldKey, textKey, textParams: { value },\n });\n }\n\n if (removed.length > 0) {\n const fieldKey = removed.length === 1 ? 'code.history_field.reserved_tab_item' : 'code.history_field.reserved_tab_items';\n const textKey = 'message.history_item_change_removed_value';\n const value = removed.join(', ');\n changes.push({\n field, fieldKey, textKey, textParams: { value },\n });\n }\n\n return changes;\n}\n\nfunction tabItemsIdCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord): HistoryItemChange[] {\n // added and removed tab item ids\n const old = new Set();\n phr.reserved_tab_item_ids?.forEach((tid) => old.add(tid));\n const added: number[] = [];\n hr.reserved_tab_item_ids?.forEach((tid) => (old.has(tid) ? old.delete(tid) : added.push(tid)));\n const removed = Array.from(old.values());\n\n // return change\n if (added.length > 0 || removed.length > 0) {\n const fieldKey = (added.length + removed.length) === 1 ? 'code.history_field.reserved_tab_item' : 'code.history_field.reserved_tab_items';\n const textKey = 'message.history_item_change_modified';\n const excludeFields = ['reserved_tab_items'];\n return [{\n field, fieldKey, textKey, excludeFields,\n }];\n }\n\n return [];\n}\n\nfunction attachmentCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord): HistoryItemChange[] {\n // added and removed attachments\n const old = new Map();\n phr.reservation_attachments?.forEach((att) => old.set(att.attachment_url, att));\n\n const added: HistoryAttachment[] = [];\n hr.reservation_attachments?.forEach((att) => (old.has(att.attachment_url) ? old.delete(att.attachment_url) : added.push(att)));\n\n // modified attachments\n const removed = new Set();\n old.forEach((att) => removed.add(att.attachment_name));\n\n const modifiedNames: string[] = [];\n const addedNames: string[] = [];\n added.forEach((att) => (removed.has(att.attachment_name)\n ? (removed.delete(att.attachment_name), modifiedNames.push(att.attachment_name))\n : addedNames.push(att.attachment_name)));\n const removedNames = Array.from(removed.values());\n\n // populate changes\n const changes: HistoryItemChange[] = [];\n\n if (addedNames.length > 0) {\n const fieldKey = addedNames.length === 1 ? 'code.history_field.reservation_attachment' : 'code.history_field.reservation_attachments';\n const textKey = 'message.history_item_change_added_value';\n const value = addedNames.join(', ');\n changes.push({\n field, fieldKey, textKey, textParams: { value },\n });\n }\n\n if (modifiedNames.length > 0) {\n const fieldKey = modifiedNames.length === 1 ? 'code.history_field.reservation_attachment' : 'code.history_field.reservation_attachments';\n const textKey = 'message.history_item_change_modified_value';\n const value = modifiedNames.join(', ');\n changes.push({\n field, fieldKey, textKey, textParams: { value },\n });\n }\n\n if (removedNames.length > 0) {\n const fieldKey = removedNames.length === 1 ? 'code.history_field.reservation_attachment' : 'code.history_field.reservation_attachments';\n const textKey = 'message.history_item_change_removed_value';\n const value = removedNames.join(', ');\n changes.push({\n field, fieldKey, textKey, textParams: { value },\n });\n }\n\n return changes;\n}\n\nfunction dateCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord, key?: string): HistoryItemChange[] {\n const dateValueText = (value: any): string => {\n const date = dateFromDateTimeString(value);\n return localized.dateText(date) ?? 'N/A';\n };\n\n const newValue = hr[field] ? dateValueText(hr[field]) : undefined;\n const oldValue = phr[field] ? dateValueText(phr[field]) : undefined;\n const fieldKey = `code.history_field.${key ?? field}`;\n let textKey = 'N/A';\n\n if (!newValue && oldValue) textKey = 'message.history_item_change_removed_value';\n else if (newValue && !oldValue) textKey = 'message.history_item_change_added_value';\n else if (newValue !== oldValue) textKey = 'message.history_item_change_modified_values';\n else return [];\n\n return [{\n field, fieldKey, textKey, textParams: { newValue, oldValue, value: newValue ?? oldValue },\n }];\n}\n\nfunction diffCheck(field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord, key?: string): HistoryItemChange[] {\n let newValue = (hr[field] ?? undefined) as string | undefined;\n let oldValue = (phr[field] ?? undefined) as string | undefined;\n const fieldKey = `code.history_field.${key ?? field}`;\n let textKey = 'N/A';\n\n if (!newValue && oldValue) textKey = 'message.history_item_change_removed_value';\n else if (newValue && !oldValue) textKey = 'message.history_item_change_added_value';\n else if (newValue !== oldValue) textKey = 'message.history_item_change_modified_value';\n else return [];\n\n // html diff\n newValue = (newValue ?? '').replaceAll('\\\\n', '\\n');\n oldValue = (oldValue ?? '').replaceAll('\\\\n', '\\n');\n\n const d = new Diff();\n const diffs = d.main(oldValue, newValue);\n d.cleanupSemantic(diffs);\n const htmlValue = d.prettyHtml(diffs);\n\n return [{\n field,\n fieldKey,\n textKey,\n textParams: {\n newValue, oldValue, value: newValue ?? oldValue, htmlValue,\n },\n }];\n}\n\ntype changeCheckFnc = (field: HistoryRecordKey, hr: HistoryRecord, phr: HistoryRecord) => HistoryItemChange[];\nconst changeChecks = new Map(Object.entries({\n // 'reservation_id': simpleCheck,\n contact_id: (field, hr, phr) => idCheck(field, hr, phr, 'contact', ['contact_name', 'contact_email', 'contact_phone']),\n contact_name: simpleCheck,\n contact_email: simpleCheck,\n contact_phone: simpleCheck,\n tab_id: (field, hr, phr) => idCheck(field, hr, phr, 'tab', ['tab_name']),\n tab_name: simpleCheck,\n service_id: (field, hr, phr) => idCheck(field, hr, phr, 'service', ['service_name']),\n service_name: simpleCheck,\n dt_begin: (field, hr, phr) => [...dateCheck(field, hr, phr, 'reservation_date'), ...simpleCheck(field, hr, phr)],\n dt_end: simpleCheck,\n end_fixed: boolCheck,\n party_size: simpleCheck,\n hold_tab_items: boolCheck,\n reservation_note: diffCheck,\n reservation_status: (field, hr, phr) => simpleCheck(field, hr, phr, { ivals: [valueText('reservation_status', 'PENDING')] }),\n reservation_label: simpleCheck,\n campaign_id: (field, hr, phr) => idCheck(field, hr, phr, 'campaign', ['campaign_id']),\n reservation_campaign: simpleCheck,\n // dt_pre_reserved: simpleCheck,\n is_starred: boolCheck,\n is_flagged: boolCheck,\n // 'employee_edit_id': simpleCheck,\n // 'employee_edit': simpleCheck,\n // 'dt_create': simpleCheck,\n // 'dt_update': simpleCheck,\n reserved_tab_item_ids: tabItemsIdCheck,\n reserved_tab_items: (field, hr, phr) => simpleCheck(field, hr, phr, { key: 'reserved_tab_item', pkey: 'reserved_tab_items' }), // simpleCheck, // tabItemsCheck,\n reservation_attachments: attachmentCheck,\n booking_type: bookingTypeCheck,\n}));\n\nfunction historyRecordToItem(hr: HistoryRecord, phr?: HistoryRecord): HistoryItem {\n // changes\n let changes = [] as HistoryItemChange[];\n if (phr) {\n changeChecks.forEach((chf, f) => changes.push(...chf(f as HistoryRecordKey, hr, phr)));\n }\n\n // remove changes if their exclude fields are present\n const fields = new Set();\n changes.forEach((ch) => fields.add(ch.field));\n changes = changes.filter((ch) => !ch.excludeFields || !ch.excludeFields.some((ef) => fields.has(ef)));\n\n const isCreated = hr.dt_update === hr.dt_create;\n const subtype = isCreated ? HistoryItemSubtype.Created : HistoryItemSubtype.Modified;\n const textKey = isCreated ? 'message.history_item_created' : 'message.history_item_modified';\n const originator = isCreated ? hr.employee_edit ?? hr.campaign_name : hr.employee_edit;\n\n return {\n type: HistoryItemType.Record,\n subtype,\n flags: HistoryItemFlag.None,\n date: localized.shortDateTimeText(new Date((hr.dt_update ?? 0) * 1000)) ?? 'N/A',\n originator,\n textKey,\n changes,\n timeIndex: hr.dt_update ?? 0,\n hidden: changes.length === 0,\n };\n}\n\nfunction historyMessageToItem(mr: HistoryMessage): HistoryItem {\n let textKey = 'message.history_item_message';\n let hidden = false;\n let subtype = HistoryItemSubtype.Other;\n if (SmsMessageTypes.has(mr.message_type as MessageType)) {\n subtype = HistoryItemSubtype.SMS;\n textKey = 'message.history_item_message_sms';\n } else if (EmailMessageTypes.has(mr.message_type as MessageType)) {\n subtype = HistoryItemSubtype.Email;\n textKey = 'message.history_item_message_email';\n } else hidden = true;\n\n let subTextKey = '';\n if (mr.is_undeliverable) {\n subTextKey = mr.status && mr.status !== MessageLogStatus.Send && mr.status !== MessageLogStatus.SendX\n ? 'message.history_item_message_undeliverable_status'\n : 'message.history_item_message_undeliverable';\n }\n\n // subitems\n const subItems = [] as HistorySubItem[];\n\n // event name\n const eventNameKey = mr.event_type ? `code.message_event.${mr.event_type}` : 'message.history_item_message_event_manual_message';\n const eventNameText = i18n.tc(eventNameKey);\n const eventName = eventNameKey !== eventNameText ? eventNameText : mr.event_name; // undefined if no event_type\n\n // recipient\n const { recipient } = mr;\n if (recipient) subItems.push({ textKey: 'message.history_item_message_recipient' });\n\n // status\n let status = undefined as string | undefined;\n\n /* eslint-disable no-bitwise */\n let flags = HistoryItemFlag.None;\n switch (mr.status) {\n case MessageLogStatus.Send: flags |= HistoryItemFlag.StatusSend; break;\n case MessageLogStatus.SendX: flags |= HistoryItemFlag.StatusSend; break;\n case MessageLogStatus.Blocked: flags |= HistoryItemFlag.StatusBlocked; break;\n case MessageLogStatus.Bounce: flags |= HistoryItemFlag.StatusBlocked; break;\n case MessageLogStatus.Failure: flags |= HistoryItemFlag.StatusFailure; break;\n case MessageLogStatus.Invalid: flags |= HistoryItemFlag.StatusInvalid; break;\n case MessageLogStatus.Delivered: flags |= HistoryItemFlag.StatusDelivered; break;\n default:\n }\n\n if (mr.is_undeliverable) flags |= HistoryItemFlag.StatusUndeliverable;\n /* eslint-enable no-bitwise */\n\n if (mr.status && ![MessageLogStatus.Send, MessageLogStatus.SendX].includes(mr.status as MessageLogStatus)) {\n subItems.push({ textKey: 'message.history_item_message_status' });\n\n const statusKey = `code.message_log_status.${mr.status.toLowerCase()}`;\n const statusText = i18n.tc(statusKey);\n status = statusKey !== statusText ? statusText : undefined;\n }\n\n if (mr.is_undeliverable && !status) {\n subItems.push({ textKey: 'message.history_item_message_status' });\n status = i18n.tc('code.message_log_status.undeliverable');\n }\n\n return {\n type: HistoryItemType.Message,\n subtype,\n flags,\n date: localized.shortDateTimeText(new Date((mr.dt_update ?? 0) * 1000)) ?? 'N/A',\n textKey,\n textParams: { eventName, recipient, status },\n subItems: subItems.length > 0 ? subItems : undefined,\n timeIndex: mr.dt_update ?? 0,\n hidden,\n };\n}\n\nexport function historyToItems(reservation: Reservation, history: History): HistoryItem[] {\n // record items\n const historyRecords = history.records.sort((a, b) => a.dt_update! - b.dt_update!);\n let keepItems = 1; // always keep the first item (do not hide create item)\n let campaignName = undefined as string | undefined;\n\n // fix missing create item\n if (reservation.dateCreated) { // reservation has date created (always true)\n const dt_create = unixFromDate(reservation.dateCreated);\n\n if (historyRecords.length > 0) {\n // records start with update item\n const diff = historyRecords[0].dt_create! - historyRecords[0].dt_update!;\n if (Math.abs(diff) < 2) {\n // only 2s difference -> ensure dt_crate === dt_update\n historyRecords[0].dt_update = historyRecords[0].dt_create;\n } else {\n // no create item -> create one from copy\n historyRecords.splice(0, 0, {\n ...historyRecords[0], dt_create, dt_update: dt_create, employee_edit: undefined, employee_edit_id: undefined,\n });\n keepItems += 1; // keep the second update item (do not hide)\n campaignName = historyRecords[1].campaign_name;\n }\n } else {\n // no records -> insert record\n historyRecords.push({ dt_create, dt_update: dt_create });\n }\n }\n\n let ritems = historyRecords.map((_, i, records) => historyRecordToItem(records[i], records[i - 1]));\n ritems = ritems.filter((hi, i) => hi.hidden !== true || i < keepItems);\n\n // fix create item\n if (ritems.length > 0 && ritems[0].subtype === HistoryItemSubtype.Created) {\n if (reservation.reservationType === ReservationSource.Online) {\n // eslint-disable-next-line no-bitwise\n ritems[0].flags |= HistoryItemFlag.TypeOnline;\n if (!ritems[0].originator) ritems[0].originator = campaignName;\n }\n }\n\n // message items\n const historyMessages = history.messages.sort((a, b) => a.dt_update! - b.dt_update!);\n let mitems = historyMessages.map((m) => historyMessageToItem(m));\n mitems = mitems.filter((mi) => mi.hidden !== true);\n\n // sort items by time and item type\n const iorder = new Map([[HistoryItemType.Record, 0], [HistoryItemType.Message, 1]]);\n const siorder = new Map([[HistoryItemSubtype.Email, 0], [HistoryItemSubtype.SMS, 1]]);\n const items = [...ritems, ...mitems].sort((i1, i2) => {\n let diff = i1.timeIndex - i2.timeIndex;\n if (!diff) diff = iorder.get(i1.type)! - iorder.get(i2.type)!;\n if (!diff) diff = siorder.get(i1.subtype)! - siorder.get(i2.subtype)!;\n return -diff;\n });\n\n return items;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-snackbar',{staticStyle:{\"z-index\":\"100001\"},attrs:{\"vertical\":\"\",\"bottom\":\"\",\"dark\":\"\",\"timeout\":-1},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"blue\",\"elevation\":\"0\",\"small\":\"\"},on:{\"click\":_setup.installPrompt}},[_vm._v(\" \"+_vm._s(_vm.$t('button.install_app'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"white\",\"outlined\":\"\",\"elevation\":\"0\",\"small\":\"\"},on:{\"click\":_setup.dismissBar}},[_vm._v(\" \"+_vm._s(_vm.$t('button.upgrade_later'))+\" \")])]},proxy:true}]),model:{value:(_setup.installBar),callback:function ($$v) {_setup.installBar=$$v},expression:\"installBar\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.app_install_promo'))+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { ref, watch } from 'vue';\n\nimport storage from '@/services/local-storage';\nimport usePwaInstall from '@/composables/pwa-install';\n\n// PWA Promo Bar\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PwaInstallBar',\n setup(__props) {\n\nconst { isInstallable, installPrompt } = usePwaInstall();\n\nconst installBar = ref(false);\n\nwatch(isInstallable, () => {\n if (storage.getPwaBarDismissCount() >= 3) {\n console.log(`PWA Bar dismissed ${storage.getPwaBarDismissCount()} times, not showing again.`);\n installBar.value = false;\n return;\n }\n installBar.value = isInstallable.value;\n});\n\nconst dismissBar = () => {\n installBar.value = false;\n storage.setPwaBarDismissCount(storage.getPwaBarDismissCount() + 1);\n};\n\n\nreturn { __sfc: true,isInstallable, installPrompt, installBar, dismissBar }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PwaInstallBar.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PwaInstallBar.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PwaInstallBar.vue?vue&type=template&id=36ddb905&\"\nimport script from \"./PwaInstallBar.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PwaInstallBar.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport { performAction } from '@/services/vue-utils';\nimport Reservation, { ReservationStatus, ReservationType } from '@/model/Reservation';\nimport GuestResultsList from '@/components/views/guests/GuestResultsList.vue';\nimport SearchList from '@/components/views/main/SearchList.vue';\nimport MainFloatingButton from '@/components/views/main/MainFloatingButton.vue';\nimport MainMenu from '@/components/views/main/MainMenu.vue';\nimport { tryEditReservation, tryCloseEditReservation } from '@/services/reservation-edit-utils';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport { isSafariOS } from '@/util/common';\nimport { startAutoUpdates } from '@/services/autoupdater';\nimport { startTodayUpdatesAsync } from '@/services/now-updater';\nimport '@/services/push-updater';\nimport { ApiError } from '@/api/api-error';\nimport OnboardingSteps from '@/components/views/onboarding/OnboardingSteps.vue';\nimport Welcome from '@/components/views/onboarding/Welcome.vue';\nimport BillingWarningBar from '@/components/views/settings/billing/BillingWarningBar.vue';\nimport LanguageSwitchDialog from '@/components/views/main/LanguageSwitchDialog.vue';\nimport {\n paymentWarningBarInfo, smsWarningBarInfo, subWarningBarInfo, WarningBarInfo,\n} from '@/services/billing-utils';\nimport storage from '@/services/local-storage';\nimport { extraDocsLocales, supportedLanguages } from '@/plugins/i18n';\nimport PrivacyScreenView from '@/components/common/PrivacyScreenView.vue';\nimport requestFcmNotificationPermission from '@/services/fcm';\nimport PwaInstallBar from '@/components/util/PwaInstallBar.vue';\nimport { RouteMeta } from 'vue-router';\n\nexport default Vue.extend({\n name: 'MainView',\n components: {\n GuestResultsList,\n SearchList,\n MainFloatingButton,\n MainMenu,\n ConfirmationDialog,\n Welcome,\n OnboardingSteps,\n BillingWarningBar,\n LanguageSwitchDialog,\n PrivacyScreenView,\n PwaInstallBar,\n MainFooter: () => import('@/components/views/main/MainFooter.vue'),\n BillingDialog: () => import('@/components/views/settings/billing/BillingDialog.vue'),\n },\n props: {},\n data() {\n return {\n drawer: this.$vuetify.breakpoint.mdAndUp,\n calendarDrawer: this.$vuetify.breakpoint.lgAndUp && this.$router.currentRoute.meta?.hasDatePicker === true,\n reservationDrawer: false,\n // this flag allows drawer to be dismissed by clicking onto overlay (stateless)\n // only after transition has completed (the drawer was presented)\n reservationDrawerDismissAllowed: false,\n manualCalendarState: true,\n searchMenu: false,\n miniMenu: this.$vuetify.breakpoint.mdAndUp,\n logoutConfirmation: false,\n showFooter: process.env.VUE_APP_SHOW_FOOTER === 'true',\n\n welcomeOpened: false,\n welcomeClosed: false,\n billingDialogOpened: false,\n billingDialogClosed: false,\n welcomeFabClosed: false,\n\n languagePrompt: undefined as string | undefined,\n };\n },\n computed: {\n routeMeta(): RouteMeta {\n return this.$route.meta!;\n },\n privacyLeftOffset(): string {\n if (this.miniMenu && this.miniMenuAllowed) {\n return '56px';\n } if (!this.miniMenu && this.miniMenuAllowed) {\n return '267px';\n }\n return '0px';\n },\n billingSettingsVisible(): boolean {\n return this.$route.name === 'billing';\n },\n billingDialogVisible(): boolean {\n if (this.billingDialogOpened) return true;\n const isBillingLanding = this.$tstore.getters.isBillingLanding as boolean;\n const { isLoaded } = this.$tstore.state.update;\n return isLoaded && isBillingLanding && (!this.billingDialogClosed || !this.billingCanClose)\n && !this.welcomeVisible && !this.billingSettingsVisible;\n },\n billingCanClose(): boolean {\n const isBillingAppAccess = this.$tstore.getters.isBillingAppAccess as boolean;\n return isBillingAppAccess;\n },\n welcomeVisible(): boolean {\n if (this.welcomeOpened) return true;\n\n const { accountSettings } = this.$tstore.state.settings;\n const { isLoaded } = this.$tstore.state.update;\n return isLoaded && accountSettings.useSetupWelcome === true && !this.welcomeClosed && !this.billingDialogClosed;\n },\n welcomeFabVisible(): boolean {\n const { accountSettings } = this.$tstore.state.settings;\n const { isLoaded } = this.$tstore.state.update;\n return isLoaded && !this.welcomeVisible && !this.welcomeFabClosed\n && (\n accountSettings.useSetupContact === true\n || accountSettings.useSetupTables === true\n || accountSettings.useSetupHours === true\n || accountSettings.useSetupBranding === true\n );\n },\n isChangedReservation(): boolean {\n return this.$tstore.getters.isChangedEditReservation;\n },\n reservationEditorActive(): boolean {\n return this.$tstore.getters.isEditReservation;\n },\n dateText(): string | null {\n if (this.$tstore.getters.isToday) { return this.$i18n.tc('label.today'); }\n if (this.$tstore.getters.isThisYear) {\n return this.$vuetify.breakpoint.mdAndUp\n ? this.$localized.dayMonthText(this.$tstore.state.update.date)\n : this.$localized.shortDayMonthText(this.$tstore.state.update.date);\n }\n return this.$localized.shortWeekdayYearText(this.$tstore.state.update.date);\n },\n unreadReservations(): Map {\n return this.$tstore.getters.unreadReservationsByDate;\n },\n unreadReservationsCount(): number {\n return this.$tstore.getters.unreadReservationsCount;\n },\n miniMenuAllowed(): boolean {\n return this.$vuetify.breakpoint.mdAndUp;\n },\n updateError(): Error | null {\n return this.$tstore.state.update.updateError;\n },\n isLoaded(): boolean {\n return this.$tstore.getters.isLoaded;\n },\n isRegistered(): boolean {\n return this.$tstore.getters.isRegistered;\n },\n // warning bar\n isBillingWarning(): boolean {\n return this.$tstore.getters.isBillingSubWarning\n || this.$tstore.getters.isBillingSMSWarning\n || this.$tstore.getters.isBillingPaymentWarning;\n },\n subWarningBarInfo(): WarningBarInfo | null {\n return subWarningBarInfo(\n this.$store.getters.billingInfo,\n this.$tstore.getters.isBillingAllowed,\n this.$vuetify.breakpoint.xsOnly,\n );\n },\n smsWarningBarInfo(): WarningBarInfo | null {\n return smsWarningBarInfo(\n this.$store.getters.billingInfo,\n this.$tstore.getters.isBillingAllowed,\n\n this.$vuetify.breakpoint.xsOnly,\n );\n },\n paymentWarningBarInfo(): WarningBarInfo | null {\n return paymentWarningBarInfo(\n this.$store.getters.billingInfo,\n this.$tstore.getters.isBillingAllowed,\n\n this.$vuetify.breakpoint.xsOnly,\n );\n },\n },\n watch: {\n $route(to, from) {\n this.calendarDrawer = (this.manualCalendarState && this.$vuetify.breakpoint.lgAndUp)\n && to.meta.hasDatePicker === true;\n\n if (to.name === 'floorplan' && this.miniMenuAllowed) {\n this.miniMenu = true;\n }\n },\n async updateError(error: Error | ApiError | null) {\n if (error && (error as ApiError).isLogoutError) {\n console.log('Forced logout');\n try {\n await this.$tstore.dispatch('logout');\n } catch (e) {\n console.log('Logout error: ', e);\n }\n this.$vuetify.theme.dark = false;\n this.$router.push('/login');\n }\n },\n isLoaded(value: boolean) {\n if (!value) return;\n\n const authRequired = !this.$route.meta?.public;\n if (!authRequired) return;\n\n if (!this.isRegistered) {\n this.$vuetify.theme.dark = false;\n this.$router.push('/login');\n }\n },\n miniMenuAllowed() {\n this.miniMenu = this.miniMenuAllowed;\n },\n reservationEditorActive() {\n // console.log(`reservationEditorActive: ${this.reservationEditorActive}`);\n this.reservationDrawer = this.reservationEditorActive;\n\n // This is a Terrible Fix™️ for awful safari keyboard behavior\n // Safari will offset-shift all content upwards when there is a soft keyboard popup event\n // ref: https://github.com/vuetifyjs/vuetify/issues/3875\n\n if (!isSafariOS()) {\n return;\n }\n if (this.reservationEditorActive) {\n document.body.style.top = `-${window.scrollY}px`;\n document.body.style.position = 'fixed';\n document.body.style.maxWidth = '100vw';\n } else {\n const scrollY = document.body.style.top;\n document.body.style.position = '';\n document.body.style.top = '';\n document.body.style.maxWidth = '';\n window.scrollTo({ top: parseInt(scrollY || '0', 10) * -1 });\n }\n },\n },\n created() {\n this.initialLoad();\n\n if (storage.getLanguagePromptDisplayed()) { return; }\n const browserLang = (navigator.languages[0] || '').split('-')[0];\n const otherLangs = supportedLanguages.map((l) => l.value).filter((l) => l !== 'en');\n if (storage.getLanguage()?.startsWith('en') && otherLangs.includes(browserLang)) {\n this.languagePrompt = browserLang;\n }\n\n if (window.matchMedia('(display-mode: standalone)').matches) {\n requestFcmNotificationPermission();\n }\n },\n methods: {\n async reservationDrawerStateChanged(val: boolean) {\n // console.log(`reservationDrawerStateChanged: ${val}`);\n if (val) { return; }\n this.reservationDrawerDismissAllowed = false;\n await tryCloseEditReservation();\n },\n reservationDrawerTransitionEnd(obj: any) {\n // set flag accordingly - allow empty dismiss only after the dialog was fully shown\n this.reservationDrawerDismissAllowed = this.reservationEditorActive;\n },\n toggleCalendar() {\n this.calendarDrawer = !this.calendarDrawer;\n this.manualCalendarState = this.calendarDrawer;\n },\n calendarDateSelected() {\n // dismiss on calendar selection when drawer presented as temporary\n if (this.$vuetify.breakpoint.smAndDown) {\n this.calendarDrawer = false;\n }\n },\n async logout() {\n await performAction(\n null,\n this.$i18n.tc('error.logout'),\n async () => this.$tstore.dispatch('logout'),\n );\n this.$vuetify.theme.dark = false;\n this.$router.push('/login');\n },\n async nextDay() {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('changeToNextDate'),\n );\n },\n async previousDay() {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('changeToPreviousDate'),\n );\n },\n async initialLoad() {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => { await startTodayUpdatesAsync(); await startAutoUpdates(); },\n );\n },\n async reload() {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('update'),\n );\n },\n toggleDarkMode() {\n this.$vuetify.theme.dark = !this.$vuetify.theme.dark;\n },\n showHelp() {\n if (this.$route.meta?.helpUrl === undefined) { return; }\n const docsLocale = extraDocsLocales.find((l) => this.$localized.locale.startsWith(l)) || '';\n const l = docsLocale === '' ? '' : `${docsLocale}/`;\n const newWin = window.open(\n `https://docs.guestplan.com/#/${l}${this.$route.meta.helpUrl}`,\n 'helpWindow',\n 'height=600,width=600',\n );\n newWin!.document.close();\n newWin!.focus();\n },\n async editReservation() {\n await tryEditReservation(this.$router, undefined, { bookingType: ReservationType.Reservation });\n },\n async createWalkin() {\n await tryEditReservation(\n this.$router,\n undefined,\n { bookingType: ReservationType.Walkin, status: ReservationStatus.Seated },\n );\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MainView.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MainView.vue?vue&type=template&id=1d34790e&scoped=true&\"\nimport script from \"./MainView.vue?vue&type=script&lang=ts&\"\nexport * from \"./MainView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MainView.vue?vue&type=style&index=0&id=1d34790e&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1d34790e\",\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('v-card',{staticClass:\"pa-0 overflow-hidden h-100\"},[(_vm.showHistoryDialogVisible && _vm.history)?_c('reservation-history-dialog',{attrs:{\"reservation\":_vm.r,\"history\":_vm.history},on:{\"close\":function($event){_vm.showHistoryDialogVisible = false}}}):_vm._e(),(_vm.reservationResultsDialog)?_c('reservation-results-dialog',{attrs:{\"visible\":_vm.reservationResultsDialog,\"title\":_vm.$t('title.all_reservations_from_x', [_vm.contactWithReservations?.name ?? '']),\"reservations\":_vm.contactReservations},on:{\"close\":function($event){_vm.reservationResultsDialog = false}}}):_vm._e(),(_vm.fileUploadDialog)?_c('file-upload-dialog',{attrs:{\"visible\":_vm.fileUploadDialog},on:{\"close\":function($event){_vm.fileUploadDialog = false},\"input\":_vm.attachmentsUploaded}}):_vm._e(),(_vm.contactDialogVisible)?_c('contact-details-dialog',{attrs:{\"visible\":_vm.contactDialogVisible},on:{\"close\":function($event){_vm.contactDialogVisible = false}},model:{value:(_vm.r.contact),callback:function ($$v) {_vm.$set(_vm.r, \"contact\", $$v)},expression:\"r.contact\"}}):_vm._e(),(_vm.employeeDialogVisible)?_c('employee-dialog',{attrs:{\"visible\":_vm.employeeDialogVisible},on:{\"close\":function($event){_vm.employeeDialogVisible=false},\"selected\":_vm.submit}}):_vm._e(),(_vm.contactMessageDialog)?_c('contact-message-dialog',{attrs:{\"visible\":_vm.contactMessageDialog,\"reservation\":_vm.r},on:{\"close\":function($event){_vm.contactMessageDialog = false}}}):_vm._e(),(_vm.unsavedChangesDialogVisible)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.unsavedChangesDialogVisible,\"message\":_vm.$t('message.confirm_leave_without_saving')},on:{\"confirm\":_vm.discardChanges,\"cancel\":_vm.dismissChanges}}):_vm._e(),(_vm.warningsDialogVisible)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.warningsDialogVisible,\"message\":_vm.$t('message.alert_reservation_details_warning'),\"confirm-title\":_vm.$t('button.continue')},on:{\"confirm\":_vm.submit,\"close\":function($event){_vm.warningsDialogVisible=false}}},_vm._l((_vm.confirmationMessage.split('\\n')),function(text,index){return _c('p',{key:index,class:['py-0 my-0', {'pt-2': index === 0}]},[_vm._v(\" ∙ \"+_vm._s(text)+\" \")])}),0):_vm._e(),(_vm.cancelBookingConfirmationVisible)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.cancelBookingConfirmationVisible,\"message\":_vm.$t('message.confirm_cancel_booking')},on:{\"confirm\":_vm.submit,\"close\":function($event){_vm.cancelBookingConfirmationVisible=false}}}):_vm._e(),(_vm.clearContactConfirmationVisible)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.clearContactConfirmationVisible,\"message\":_vm.$t('message.confirm_clear_contact_existing'),\"title\":_vm.$t('label.edit_reservation')},on:{\"confirm\":_vm.clearContact,\"close\":function($event){_vm.clearContactConfirmationVisible=false}}}):_vm._e(),(_vm.duplicateBookingDialogVisible)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.duplicateBookingDialogVisible,\"message\":_vm.$t('message.copy_booking_to'),\"confirm-title\":_vm.$t('button.copy')},on:{\"confirm\":_vm.submitSaveOrDuplicate,\"cancel\":_vm.duplicateBookingCanceled,\"close\":function($event){_vm.duplicateBookingDialogVisible=false}}},[_c('date-picker-field',{attrs:{\"content-class\":\"pt-0\",\"value\":_vm.duplicateBookingDate,\"hide-details\":\"\",\"format-fn\":_vm.formatReservationDate},on:{\"input\":_vm.duplicateBookingDateChanged}})],1):_vm._e(),_c('v-app-bar',{attrs:{\"fixed\":\"\",\"elevate-on-scroll\":\"\",\"scroll-target\":\"#reservation-scroller\"}},[_c('v-btn',{attrs:{\"text\":\"\",\"outlined\":\"\"},on:{\"click\":_vm.close}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),_c('v-spacer'),_c('v-select',{staticClass:\"w-100 mr-2 ml-2 reservation-type-picker\",attrs:{\"value\":_vm.r.bookingType,\"outlined\":\"\",\"items\":_vm.reservationTypeItems,\"menu-props\":{offsetY: true},\"hide-details\":\"\",\"dense\":\"\"},on:{\"input\":_vm.reservationTypeChanged}}),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":(!_vm.isChanged && !_vm.isNew && !_vm.isUnread) || _vm.isErrors},on:{\"click\":_vm.saveBooking}},[_c('v-icon',[_vm._v(\"mdi-check\")])],1)],1),_c('v-sheet',{attrs:{\"id\":\"reservation-scroller\",\"max-height\":\"100%\"}},[_c('v-form',{attrs:{\"aria-autocomplete\":\"off\",\"autocomplete\":\"off\"}},[_c('validation-observer',{ref:\"observer\"},[_c('v-container',{staticClass:\"reservation-container\"},[_c('div',{staticClass:\"res-chip-wrapper\"},[_c('reservation-chips',{staticClass:\"pa-0 ma-0 mt-2\",attrs:{\"no-attachments\":\"\",\"no-service\":\"\",\"reservation\":_vm.r}})],1),_c('v-row',{attrs:{\"align\":\"center\"}},[(!_vm.r.isBlock)?[_c('v-col',{staticClass:\"pb-1\",attrs:{\"cols\":\"12\"}},[_c('party-size-picker',{staticClass:\"warning-hint-capable\",attrs:{\"value\":_vm.r.partySize,\"label\":_vm.$t('label.party_size'),\"hint\":[..._vm.errorMessages('partySize', true)].find(Boolean)},on:{\"input\":_vm.partySizeChanged}})],1),_c('row-form-divider')]:_vm._e(),(!_vm.r.isWalkin)?_c('v-col',{key:\"startDate\",staticClass:\"pb-0\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"vid\":\"date\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('date-picker-field',{attrs:{\"value\":_vm.r.dateBegin,\"label\":_vm.$t('label.reservation_date'),\"hide-details\":\"\",\"error-messages\":[...errors, ..._vm.errorMessages('date')],\"hint\":[..._vm.errorMessages('date', true)].find(Boolean),\"format-fn\":_vm.formatReservationDate},on:{\"input\":_vm.dateChanged}})]}}],null,false,983431590)})],1):_vm._e(),_c('v-col',{key:\"startTime\",staticClass:\"pb-0\",attrs:{\"cols\":!_vm.r.isWalkin ? 3 : 6}},[_c('validation-provider',{attrs:{\"vid\":\"timeBegin\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('time-picker-field',{attrs:{\"disabled\":_vm.r.isWalkin,\"value\":_vm.timeBegin,\"hide-details\":\"\",\"label\":_vm.$t('label.reservation_starting_time'),\"error-messages\":[...errors, ..._vm.errorMessages('timeBegin')],\"hint\":[..._vm.errorMessages('timeBegin', true)].find(Boolean)},on:{\"input\":_vm.timeBeginChanged}})]}}])})],1),_c('v-col',{key:\"endTime\",staticClass:\"pb-0\",attrs:{\"cols\":!_vm.r.isWalkin ? 3 : 6}},[_c('validation-provider',{attrs:{\"vid\":\"timeEnd\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('time-picker-field',{attrs:{\"value\":_vm.timeEnd,\"hide-details\":\"\",\"label\":_vm.$t('label.reservation_ending_time'),\"error-messages\":[...errors, ..._vm.errorMessages('timeEnd')],\"hint\":[..._vm.errorMessages('timeEnd'), true].find(Boolean)},on:{\"input\":_vm.timeEndChanged}},[_c('div',{staticClass:\"justify-center d-flex w-100\"},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.fixed_ending_time')},model:{value:(_vm.r.fixedEnding),callback:function ($$v) {_vm.$set(_vm.r, \"fixedEnding\", $$v)},expression:\"r.fixedEnding\"}})],1)])]}}])})],1),_c('v-col',{staticClass:\"py-0 pb-1\",attrs:{\"cols\":\"12\"}},[_c('v-input',{staticClass:\"warning-hint-capable\",attrs:{\"persistent-hint\":\"\",\"error-messages\":[..._vm.errorMessages('date'),\n ..._vm.errorMessages('timeBegin'),\n ..._vm.errorMessages('timeEnd')],\"hint\":[..._vm.errorMessages('date', true),\n ..._vm.errorMessages('timeBegin', true),\n ..._vm.errorMessages('timeEnd'), true].find(Boolean)}})],1),_c('row-form-divider'),_c('v-col',{key:\"section\",staticClass:\"pb-1\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"vid\":\"tab\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"warning-hint-capable\",attrs:{\"persistent-hint\":\"\",\"value\":_vm.r.tab,\"items\":_vm.tabs,\"item-value\":\"id\",\"item-text\":\"name\",\"return-object\":\"\",\"label\":_vm.$t('label.section'),\"error-messages\":[...errors, ..._vm.errorMessages('tab')],\"hint\":[..._vm.errorMessages('tab', true)].find(Boolean)},on:{\"input\":_vm.tabChanged}})]}}])})],1),_c('v-col',{key:\"table\",staticClass:\"pb-1\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"vid\":\"tabItems\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('tab-item-menu',{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-text-field',_vm._g({staticClass:\"warning-hint-capable\",attrs:{\"persistent-hint\":\"\",\"value\":_vm.tabItemsText,\"label\":_vm.$t('label.reservation_table'),\"readonly\":\"\",\"error-messages\":[...errors, ..._vm.errorMessages('tabItems')],\"hint\":[..._vm.errorMessages('tabItems', true)].find(Boolean),\"loading\":_vm.isSuggestingTabItems}},on))]}}],null,true)})]}}])})],1),(!_vm.r.isWalkin && !_vm.r.isBlock)?[_c('row-form-divider'),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('contact-autocomplete',{attrs:{\"contact\":_vm.r.contact,\"focus-name\":_vm.isNew && _vm.$vuetify.breakpoint.mdAndUp},on:{\"update-contact\":_vm.updateContact,\"update-name\":_vm.updateName,\"update-email\":_vm.updateEmail,\"update-phone\":_vm.updatePhone,\"clear\":_vm.clearContactClicked}}),(_vm.r.contact.notes)?_c('v-sheet',{staticClass:\"text-caption ellipsize-2 mb-0\",staticStyle:{\"max-height\":\"80px\"}},[_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.$t('label.contact_note'))+\": \")]),_vm._v(\" \"+_vm._s(_vm.r.contact.notes)+\" \")]):_vm._e()],1),_c('v-col',{staticClass:\"pt-2 text-right\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{staticClass:\"mr-1\",attrs:{\"color\":\"primary\",\"outlined\":\"\",\"x-small\":\"\",\"disabled\":!_vm.contactMessageDialogEnabled},on:{\"click\":function($event){_vm.contactMessageDialog = true}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-email-fast-outline \")])],1),(_vm.r?.contact?.reservationCount !== undefined && _vm.r?.contact?.reservationCount > 0)?_c('v-btn',{staticClass:\"mr-1\",attrs:{\"outlined\":\"\",\"x-small\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.showContactReservations}},[_vm._v(\" \"+_vm._s(_vm.$t('label.show_all_reservations_x', [_vm.r?.contact?.reservationCount]))+\" \")]):_vm._e(),_c('v-btn',{attrs:{\"outlined\":\"\",\"color\":\"primary\",\"x-small\":\"\"},on:{\"click\":function($event){_vm.contactDialogVisible = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('label.contact_details'))+\" \")])],1)]:_vm._e(),_c('row-form-divider'),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"max:3999\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-textarea',{ref:\"note\",attrs:{\"error-messages\":errors,\"hide-details\":!errors || errors.length === 0,\"label\":_vm.$t('label.notes'),\"rows\":\"3\"},model:{value:(_vm.r.notes),callback:function ($$v) {_vm.$set(_vm.r, \"notes\", $$v)},expression:\"r.notes\"}})]}}])})],1),_c('v-col',{staticClass:\"pt-2 text-right\",attrs:{\"cols\":\"12\"}},[_c('tag-note-menu',{on:{\"selected\":_vm.addTagNote},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"outlined\":\"\",\"color\":\"primary\",\"x-small\":\"\"}},on),[_vm._v(\" \"+_vm._s(_vm.$t('button.insert_tag'))+\" \")])]}}])})],1),(!_vm.r.isBlock)?[_c('row-form-divider'),_c('v-col',{staticClass:\"pb-2\",attrs:{\"cols\":\"6\"}},[_c('reservation-status-select',{model:{value:(_vm.r.status),callback:function ($$v) {_vm.$set(_vm.r, \"status\", $$v)},expression:\"r.status\"}})],1),_c('v-col',{staticClass:\"pb-2\",attrs:{\"cols\":\"6\"}},[_c('reservation-item-select',{attrs:{\"items\":_vm.labels,\"label\":_vm.$t('label.label')},model:{value:(_vm.r.label),callback:function ($$v) {_vm.$set(_vm.r, \"label\", $$v)},expression:\"r.label\"}})],1),_c('v-col',{staticClass:\"pt-0 pb-0\",attrs:{\"cols\":\"12\"}},[_c('reservation-item-select',{attrs:{\"items\":_vm.services,\"label\":_vm.$t('label.service')},model:{value:(_vm.r.service),callback:function ($$v) {_vm.$set(_vm.r, \"service\", $$v)},expression:\"r.service\"}})],1),_c('v-col',{staticClass:\"pt-1 pb-0\",attrs:{\"cols\":\"6\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('label.flagged')},model:{value:(_vm.r.isFlagged),callback:function ($$v) {_vm.$set(_vm.r, \"isFlagged\", $$v)},expression:\"r.isFlagged\"}})],1),_c('v-col',{staticClass:\"pt-1 pb-0\",attrs:{\"cols\":\"6\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('label.starred')},model:{value:(_vm.r.isStarred),callback:function ($$v) {_vm.$set(_vm.r, \"isStarred\", $$v)},expression:\"r.isStarred\"}})],1)]:_vm._e(),_c('row-form-divider'),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[(_vm.r.attachments.length > 0)?_c('v-expansion-panels',{attrs:{\"flat\":\"\"},model:{value:(_vm.attachmentsPanels),callback:function ($$v) {_vm.attachmentsPanels=$$v},expression:\"attachmentsPanels\"}},[_c('v-expansion-panel',{staticClass:\"elevation-0\"},[_c('v-expansion-panel-header',{staticClass:\"pa-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.attachments'))+\" (\"+_vm._s(_vm.r.attachments.length)+\") \")]),_c('v-expansion-panel-content',_vm._l((_vm.r.attachments),function(attachment,index){return _c('div',{key:index,staticClass:\"d-flex align-baseline\"},[_c('a',{staticClass:\"d-block\",attrs:{\"href\":attachment.url,\"target\":\"_blank\"}},[_vm._v(_vm._s(attachment.name))]),_c('v-spacer'),_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.deleteAttachment(index)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],1)],1)}),0)],1)],1):_vm._e(),_c('v-btn',{staticClass:\"mt-3\",attrs:{\"outlined\":\"\",\"block\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.fileUploadDialog = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.add_attachment'))+\" \")])],1),_c('row-form-divider'),(!_vm.isNew)?_c('v-col',{staticClass:\"pt-3 pb-0\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"block\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.duplicateBooking}},[_vm._v(\" \"+_vm._s(_vm.$t('label.save_as_copy'))+\" \")])],1):_vm._e(),(!_vm.isNew)?_c('v-col',{staticClass:\"pt-3 pb-0\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"block\":\"\",\"small\":\"\",\"color\":\"red\"},on:{\"click\":_vm.cancelBooking}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel_this_booking'))+\" \")])],1):_vm._e(),_c('v-col',{staticClass:\"pt-2 pb-0\",attrs:{\"cols\":\"12\"}},[(_vm.dateCreated)?_c('p',{staticClass:\"text--secondary text-center text-caption ma-0 pb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.created'))+\" \"),_c('b',[_vm._v(_vm._s(_vm.dateCreated)+\" \"+_vm._s(_vm.employeeCreated))])]):_vm._e(),(_vm.dateEdited)?_c('p',{staticClass:\"text--secondary text-center text-caption ma-0 pt-0 pb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.last_edit'))+\" \"),_c('b',[_vm._v(_vm._s(_vm.dateEdited)+\" \"+_vm._s(_vm.employeeEdited))])]):_vm._e(),(!_vm.isNew)?_c('p',{staticClass:\"text--secondary text-center text-caption ma-0 pt-0 pb-0\"},[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":_vm.showHistory}},[_vm._v(_vm._s(_vm.$t('label.show_history')))])]):_vm._e(),(_vm.r.code)?_c('p',{staticClass:\"text--secondary text-center text-caption ma-0 pt-0 pb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.code'))+\" \"),_c('b',[_vm._v(_vm._s(`#${_vm.r.code}`))])]):_vm._e()])],2)],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('modal-dialog',{attrs:{\"visible\":\"\",\"container-class\":\"ma-0 pa-0\",\"content-class\":\"ma-0 pa-0\",\"card-class\":\"ma-0 pa-0\",\"scrollable\":\"\",\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly,\"max-width\":\"700\",\"title\":_vm.$t('label.reservation_history')},on:{\"close\":function($event){return _setup.emit('close')}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _setup.emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('v-container',[(_setup.historyIncomplete)?_c('v-alert',{staticClass:\"mb-0 mb-5 mx-8\",attrs:{\"dense\":\"\",\"outlined\":\"\",\"border\":\"left\",\"color\":\"primary\",\"type\":\"info\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.reservation_history_incomplete'))+\" \")]):_vm._e(),_c('v-timeline',{attrs:{\"dense\":\"\",\"clipped\":\"\"}},_vm._l((_setup.items),function(item){return _c('v-timeline-item',{key:item.date,staticClass:\"history-bullet-small\",attrs:{\"color\":_setup.colorForItem(item),\"icon\":_setup.iconForItem(item),\"fill-dot\":\"\",\"small\":\"\"}},[_c('v-card',{staticClass:\"mr-8 elevation-3\",attrs:{\"color\":_vm.$vuetify.theme.dark ? 'light-bluegrey' : ''}},[_c('v-card-text',{class:[{'light-bluegrey': _vm.$vuetify.theme.dark}, 'pt-0 pb-2 px-0']},[_c('div',{staticClass:\"text-subtitle-2 px-3 py-1\"},[_c('span',{staticClass:\"mr-1 d-inline\"},[_vm._v(_vm._s(item.date))]),(item.originator)?_c('span',[_vm._v(\"|\")]):_vm._e(),(item.originator)?_c('span',{staticClass:\"ml-1 d-inline\"},[_vm._v(_vm._s(item.originator))]):_vm._e()]),_c('v-divider'),_c('i18n',{staticClass:\"text-subtitle-1 text--primary px-3 pt-1 py-0 ma-0\",attrs:{\"tag\":\"p\",\"path\":item.textKey},scopedSlots:_vm._u([{key:\"event\",fn:function(){return [_vm._v(\" \"+_vm._s(item.textParams?.eventName)+\" \")]},proxy:true},{key:\"recipient\",fn:function(){return [_vm._v(\" \"+_vm._s(item.textParams?.recipient)+\" \")]},proxy:true},{key:\"status\",fn:function(){return [_vm._v(\" \"+_vm._s(item.textParams?.status)+\" \")]},proxy:true}],null,true)}),_c('div',{staticClass:\"text-caption px-3\"},[_vm._l((item.subItems),function(sitem,si){return _c('ul',{key:si},[_c('i18n',{attrs:{\"tag\":\"li\",\"path\":sitem.textKey},scopedSlots:_vm._u([{key:\"recipient\",fn:function(){return [_vm._v(\" \"+_vm._s(item.textParams?.recipient)+\" \")]},proxy:true},{key:\"status\",fn:function(){return [_vm._v(\" \"+_vm._s(item.textParams?.status)+\" \")]},proxy:true}],null,true)})],1)}),_vm._l((item.changes),function(change,chi){return _c('ul',{key:chi},[_c('i18n',{attrs:{\"tag\":\"li\",\"path\":change.textKey},scopedSlots:_vm._u([{key:\"field\",fn:function(){return [_c('span',{class:[{'font-weight-medium':\n change.textParams === undefined || change.textParams.value === undefined}]},[_vm._v(\" \"+_vm._s(_vm.$t(change.fieldKey)))])]},proxy:true},{key:\"value\",fn:function(){return [(change.textParams?.htmlValue)?_c('div',{staticClass:\"history-diff px-2 py-1\",domProps:{\"innerHTML\":_vm._s(change.textParams?.htmlValue)}}):_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(change.textParams?.value))])]},proxy:true},{key:\"newvalue\",fn:function(){return [_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(change.textParams?.newValue))])]},proxy:true},{key:\"oldvalue\",fn:function(){return [_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(change.textParams?.oldValue))])]},proxy:true},{key:\"htmlvalue\",fn:function(){return undefined},proxy:true}],null,true)})],1)})],2)],1)],1)],1)}),1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport Reservation from '@/model/Reservation';\nimport {\n computed, PropType,\n} from 'vue';\nimport {\n History, HistoryItem, HistoryItemType, HistoryItemSubtype, HistoryItemFlag, historyToItems,\n} from '@/services/reservation-history';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ReservationHistoryDialog',\n props: {\n reservation: { type: Object as PropType, required: true },\n history: { type: Object as PropType, required: true },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst items = computed(() => historyToItems(props.reservation, props.history));\n\nconst historyIncomplete = computed(() => (props.reservation.dateCreated || new Date()) < new Date(2022, 7, 24));\n\nfunction iconForItem(item: HistoryItem): string {\n switch (item.subtype) {\n case HistoryItemSubtype.Created:\n // eslint-disable-next-line no-bitwise\n if (item.flags & HistoryItemFlag.TypeOnline) { return 'mdi-earth-plus'; }\n return 'mdi-file-document-plus-outline';\n case HistoryItemSubtype.Modified: return 'mdi-file-document-edit-outline';\n case HistoryItemSubtype.Email:\n /* eslint-disable no-bitwise */\n if (item.flags & HistoryItemFlag.StatusDelivered) { return 'mdi-email-fast-outline'; }\n if (item.flags & HistoryItemFlag.StatusBounced) { return 'mdi-email-alert-outline'; }\n if (item.flags & HistoryItemFlag.StatusUndeliverable) { return 'mdi-email-alert-outline'; }\n if (item.flags & HistoryItemFlag.StatusSend) { return 'mdi-email-fast-outline'; }\n return 'mdi-email-alert-outline';\n /* eslint-enable no-bitwise */\n case HistoryItemSubtype.SMS:\n /* eslint-disable no-bitwise */\n if (item.flags & HistoryItemFlag.StatusDelivered) { return 'mdi-message-fast-outline'; }\n if (item.flags & HistoryItemFlag.StatusUndeliverable) { return 'mdi-message-alert-outline'; }\n if (item.flags & HistoryItemFlag.StatusSend) { return 'mdi-message-fast-outline'; }\n return 'mdi-message-alert-outline';\n /* eslint-enable no-bitwise */\n default: return '';\n }\n}\n\nfunction colorForItem(item: HistoryItem): string {\n switch (item.type) {\n case HistoryItemType.Record: return 'blue';\n case HistoryItemType.Message: {\n /* eslint-disable no-bitwise */\n if (item.flags & HistoryItemFlag.StatusDelivered) { return 'green'; }\n if (item.flags & HistoryItemFlag.StatusBounced) { return 'red'; }\n if (item.flags & HistoryItemFlag.StatusUndeliverable) { return 'red'; }\n if (item.flags & HistoryItemFlag.StatusSend) { return 'green'; }\n return 'red';\n /* eslint-enable no-bitwise */\n }\n default: return 'blue';\n }\n}\n\nreturn { __sfc: true,props, emit, items, historyIncomplete, iconForItem, colorForItem }\n}\n\n})","\nimport Vue from 'vue';\nimport Reservation, { ReservationSource, ReservationType } from '@/model/Reservation';\nimport Tab from '@/model/Tab';\nimport TabItem from '@/model/TabItem';\nimport ContactMessageDialog from '@/components/views/reservation/ContactMessageDialog.vue';\nimport ReservationHistoryDialog from '@/components/views/reservation/ReservationHistoryDialog.vue';\nimport EmployeeDialog from '@/components/views/reservation/EmployeeDialog.vue';\nimport ContactDetailsDialog from '@/components/views/reservation/ContactDetailsDialog.vue';\nimport FileUploadDialog from '@/components/views/reservation/FileUploadDialog.vue';\nimport ReservationResultsDialog from '@/components/views/reservation/ReservationResultsDialog.vue';\nimport ContactAutocomplete from '@/components/views/reservation/ContactAutocomplete.vue';\nimport PartySizePicker from '@/components/pickers/PartySizePicker.vue';\nimport TabItemMenu from '@/components/views/reservation/TabItemMenu.vue';\nimport TagNoteMenu from '@/components/views/reservation/TagNoteMenu.vue';\nimport TagNote from '@/model/TagNote';\nimport { mapActions } from 'vuex';\nimport { performDispatchAction, performSaveAction } from '@/services/vue-utils';\nimport unsavedGuard from '@/mixins/unsaved-guard';\nimport Contact from '@/model/Contact';\nimport { tryCloseEditReservation } from '@/services/reservation-edit-utils';\nimport {\n ReservationError, reservationErrorTexts, isReservationErrors, Warnings, ReservationErrorType,\n DateBeginErrors, DateEndErrors, TabErrors, TabItemsErrors, DateErrors,\n NameErrors, PhoneErrors, PartySizeErrors, EmailErrors,\n} from '@/services/reservation-validation';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport Service from '@/model/Service';\nimport { isDateSameIgnoringTime, isDateToday, timeStringFromDate } from '@/services/time-utils';\nimport Attachment from '@/model/Attachment';\nimport { History } from '@/services/reservation-history';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\nimport Label from '@/model/Label';\nimport ReservationStatusSelect from './ReservationStatusSelect.vue';\nimport ReservationItemSelect from './ReservationItemSelect.vue';\nimport ReservationChips from '../guests/ReservationChips.vue';\n\nenum SubmitBookingType {\n none,\n save,\n cancel,\n duplicate,\n}\n\nexport default Vue.extend({\n name: 'Reservation',\n components: {\n ReservationChips,\n EmployeeDialog,\n PartySizePicker,\n TabItemMenu,\n ContactDetailsDialog,\n TagNoteMenu,\n ConfirmationDialog,\n ContactAutocomplete,\n FileUploadDialog,\n ReservationResultsDialog,\n ReservationHistoryDialog,\n ReservationStatusSelect,\n ReservationItemSelect,\n ContactMessageDialog,\n },\n mixins: [unsavedGuard],\n props: {\n isVisible: { type: Boolean, required: false, default: false },\n },\n data() {\n return {\n contactMessageDialog: false,\n employeeDialogVisible: false,\n contactDialogVisible: false,\n warningsDialogVisible: false,\n cancelBookingConfirmationVisible: false,\n clearContactConfirmationVisible: false,\n duplicateBookingDialogVisible: false,\n duplicateBookingDate: new Date(),\n confirmationMessage: '',\n\n submitBookingType: SubmitBookingType.none,\n attachmentsPanels: undefined as number | undefined,\n fileUploadDialog: false,\n\n history: null as History | null,\n showHistoryDialogVisible: false,\n\n contactWithReservations: null as Contact | null,\n contactReservations: null as Reservation[] | null,\n reservationResultsDialog: false,\n\n extraErrorMessages: new Map(),\n\n reservationTypes: [\n { text: this.$i18n.tc('code.booking_type.reservation'), value: ReservationType.Reservation },\n { text: this.$i18n.tc('code.booking_type.walkin'), value: ReservationType.Walkin },\n { text: this.$i18n.tc('code.booking_type.waitlist'), value: ReservationType.Waitlist },\n { text: this.$i18n.tc('code.booking_type.block'), value: ReservationType.Block },\n ],\n };\n },\n computed: {\n r(): Reservation {\n return this.$tstore.getters.editReservation ?? Reservation.emptyReservation();\n },\n oldr(): Reservation {\n return this.$tstore.getters.originalReservation ?? Reservation.emptyReservation();\n },\n isChanged(): boolean {\n return this.$tstore.getters.isChangedEditReservation || this.isSuggestedTabItems;\n },\n isNew(): boolean {\n return this.r.isNew;\n },\n isUnread(): boolean {\n return this.r.isUnread;\n },\n isErrors(): boolean {\n return isReservationErrors(this.validationErrors);\n },\n tabs(): Tab[] { return this.$tstore.state.settings.tabs; },\n suggestedTabItems(): TabItem[] | null {\n return this.$tstore.getters.suggestedTabItems;\n },\n isSuggestedTabItems(): boolean {\n return this.suggestedTabItems !== null && this.suggestedTabItems.length > 0;\n },\n isSuggestingTabItems(): boolean {\n return this.$tstore.getters.isSuggestingTabItems;\n },\n tabItemsText(): string {\n if (this.r.tabItems.length !== 0) {\n return this.r.tabItems.map((t) => t.no).join(', ');\n }\n if (this.suggestedTabItems !== null && this.suggestedTabItems.length > 0) {\n return this.suggestedTabItems.map((t) => t.no).join(', ');\n }\n if (!this.tableAllocationDisabled && !this.r.isBlock) return this.$i18n.tc('label.automatic');\n return '';\n },\n timeBegin(): string {\n return timeStringFromDate(this.r.dateBegin) ?? '';\n },\n timeEnd(): string {\n return timeStringFromDate(this.r.dateEnd) ?? '';\n },\n employeeNameIsNeeded(): boolean {\n return this.$tstore.getters.employeeNameIsNeeded;\n },\n tableAllocationDisabled(): boolean {\n return !(this.$tstore.state.settings.accountSettings.tableAllocation ?? false);\n },\n dateCreated(): string | null {\n if (!this.r.dateCreated) return null;\n return this.$localized.smartDateText(this.r.dateCreated);\n },\n dateEdited(): string | null {\n if (!this.r.dateEdited) return null;\n return this.$localized.smartDateText(this.r.dateEdited);\n },\n employeeCreated(): string | null {\n if (this.r.reservationType === ReservationSource.Online) {\n return `(${this.r.reservationCampaign || this.$i18n.tc('code.reservation_source.online')})`;\n }\n if (!this.r.employeeCreated) return null;\n return `(${this.r.employeeCreated?.name})`;\n },\n employeeEdited(): string | null {\n if (!this.r.employeeEdited) return null;\n return `(${this.r.employeeEdited?.name})`;\n },\n validationErrors(): ReservationError[] {\n const errors: ReservationError[] = [];\n errors.push(...this.$tstore.getters.reservationValidationErrors);\n errors.push(...this.$tstore.getters.reservationAvailabilityValidationErrors);\n if (this.overbookedTabItems.length > 0) {\n errors.push({ type: ReservationErrorType.TabItemsOverbooked });\n }\n if (this.suggestedTabItems !== null && this.suggestedTabItems.length === 0) {\n errors.push({ type: ReservationErrorType.AvailabilityNoAllocation });\n }\n if (this.tableAllocationDisabled && this.r.tabItems.length === 0) {\n errors.push({ type: ReservationErrorType.TabItemsMissing });\n }\n return errors;\n },\n overbookedTabItems(): TabItem[] {\n return this.$tstore.getters.reservationOverbookedTabItems;\n },\n unsavedChangesDialogVisible(): boolean {\n return this.$tstore.getters.isConfirmCloseEditReservation;\n },\n contactMessageDialogEnabled(): boolean {\n return this.$tstore.getters.isReservationMessageAllowed;\n },\n services(): Service[] {\n return this.$tstore.state.settings.services;\n },\n labels(): Label[] {\n const { labels } = this.$tstore.state.settings;\n const oldl = this.oldr.label;\n if (!this.oldr.label) return labels;\n return labels.find((l) => l.id === oldl?.id) ? labels : [oldl!, ...labels];\n },\n reservationTypeItems() {\n if (this.r.bookingType === ReservationType.Walkin) { return this.reservationTypes; }\n return this.reservationTypes.filter((ri) => !(ri.value === ReservationType.Walkin\n && !isDateSameIgnoringTime(new Date(), this.$tstore.state.update.date)));\n },\n storeDate() {\n return this.$tstore.state.update.date;\n },\n },\n watch: {\n storeDate() {\n if (this.r.bookingType === ReservationType.Walkin\n && !isDateSameIgnoringTime(new Date(), this.storeDate)) {\n this.r.bookingType = ReservationType.Reservation;\n this.reservationTypeChanged(ReservationType.Reservation);\n }\n },\n },\n mounted() {\n window.addEventListener('keydown', this.keyDown);\n },\n beforeDestroy() {\n window.addEventListener('keydown', this.keyDown);\n },\n methods: {\n ...mapActions([\n 'sendEditReservation', 'confirmCloseEditReservation', 'closeEditReservation']),\n keyDown(evt: KeyboardEvent) {\n if (!this.isVisible || evt.target !== document.body) { return; }\n switch (evt.keyCode) {\n case 13:\n this.saveBooking();\n break;\n case 27:\n this.close();\n break;\n default:\n break;\n }\n },\n dateChanged(date: Date) {\n this.$tstore.dispatch('setReservationDate', date);\n this.$tstore.dispatch('keepReservationChangeToDate', date);\n },\n timeBeginChanged(time: string) {\n this.$tstore.dispatch('setReservationTimeBegin', time);\n },\n timeEndChanged(time: string) {\n this.$tstore.dispatch('setReservationTimeEnd', time);\n },\n tabChanged(tab: Tab) {\n this.$tstore.dispatch('setReservationTab', tab);\n },\n partySizeChanged(partySize: number) {\n this.$tstore.dispatch('setReservationPartySize', partySize);\n },\n reservationTypeChanged(reservationType: ReservationType) {\n this.$tstore.dispatch('setReservationType', reservationType);\n },\n clearContact() {\n this.$tstore.dispatch('setReservationContact', new Contact());\n this.clearContactConfirmationVisible = false;\n },\n errorMessages(key: string, warning: boolean = false) {\n const errors = this.validationErrors.filter((e) => (\n warning ? Warnings.includes(e.type) : !Warnings.includes(e.type)));\n\n let messages: string[] = [];\n\n switch (key) {\n case 'partySize': messages = reservationErrorTexts(PartySizeErrors, errors); break; // not needed\n case 'date': messages = reservationErrorTexts(DateErrors, errors); break;// not needed\n case 'tab': messages = reservationErrorTexts(TabErrors, errors); break;\n case 'tabItems': messages = reservationErrorTexts(TabItemsErrors, errors); break;\n case 'timeBegin': messages = reservationErrorTexts(DateBeginErrors, errors); break;\n case 'timeEnd': messages = reservationErrorTexts(DateEndErrors, errors); break;\n case 'name': messages = reservationErrorTexts(NameErrors, errors); break; // not needed\n case 'phone': messages = reservationErrorTexts(PhoneErrors, errors); break; // not needed\n case 'email': messages = reservationErrorTexts(EmailErrors, errors); break; // not needed\n default:\n }\n\n const extraMessages = this.extraErrorMessages.get(key) ?? [];\n return [...extraMessages, ...messages];\n },\n async cancelBooking() {\n this.submitBookingType = SubmitBookingType.cancel;\n this.cancelBookingConfirmationVisible = true;\n },\n async duplicateBooking() {\n this.submitBookingType = SubmitBookingType.duplicate;\n this.duplicateBookingDate = this.r.dateBegin;\n this.duplicateBookingDialogVisible = true;\n },\n async saveBooking() {\n this.submitBookingType = SubmitBookingType.save;\n this.submitSaveOrDuplicate();\n },\n async submitSaveOrDuplicate() {\n this.duplicateBookingDialogVisible = false;\n\n if (isReservationErrors(this.validationErrors)) {\n return;\n }\n\n // show confirmation for warnings\n const warninigs = reservationErrorTexts(Warnings, this.validationErrors);\n if (warninigs.length) {\n this.confirmationMessage = warninigs.join('\\n');\n this.warningsDialogVisible = true;\n return;\n }\n\n this.submit();\n },\n async submit() {\n this.cancelBookingConfirmationVisible = false;\n this.warningsDialogVisible = false;\n\n // show employee dialog\n if (!this.employeeDialogVisible && this.employeeNameIsNeeded) {\n this.employeeDialogVisible = true;\n return;\n }\n this.employeeDialogVisible = false;\n\n // save\n let ok = false;\n const p = {\n cancel: false,\n duplicate: false,\n dateBegin: this.duplicateBookingDate,\n suggestedTabItems: this.suggestedTabItems,\n };\n\n if (this.submitBookingType === SubmitBookingType.cancel) p.cancel = true;\n if (this.submitBookingType === SubmitBookingType.duplicate) p.duplicate = true;\n\n ok = await performSaveAction(\n this.$refs.observer,\n async () => this.sendEditReservation(p),\n );\n if (ok) this.closeEditReservation();\n else {\n // for duplicate booking\n this.$tstore.dispatch('keepReservationChangeToDate', this.r.dateBegin);\n }\n },\n async close() {\n await tryCloseEditReservation();\n },\n discardChanges() {\n this.confirmCloseEditReservation(true);\n },\n dismissChanges() {\n this.confirmCloseEditReservation(false);\n },\n addTagNote(tag: TagNote) {\n const fieldVue = this.$refs.note as Vue;\n const field = fieldVue.$refs.input as HTMLTextAreaElement;\n\n const tagValue = ` ${tag.dotText} `;\n\n // FIXME: Check this on IE Browser\n if (field.selectionStart || field.selectionStart === 0) {\n const startPos = field.selectionStart;\n const endPos = field.selectionEnd;\n const text = this.r.notes || '';\n\n this.r.notes = text.substring(0, startPos)\n + tagValue\n + text.substring(endPos, text.length);\n }\n },\n formatReservationDate(d: Date): string | null {\n return this.$localized.dayMonthText(d);\n },\n duplicateBookingDateChanged(date: Date) {\n this.duplicateBookingDate = date;\n this.$tstore.dispatch('keepReservationChangeToDate', date);\n },\n duplicateBookingCanceled() {\n this.$tstore.dispatch('keepReservationChangeToDate', this.r.dateBegin);\n },\n deleteAttachment(index: number) {\n showConfirmationDialog(\n this.$i18n.tc('label.attachments'),\n this.$i18n.tc('message.confirm_delete_attachment'),\n {\n title: this.$i18n.tc('button.yes'),\n action: () => {\n const attachments = [...this.r.attachments];\n attachments.splice(index, 1);\n this.$tstore.dispatch('setReservationAttachments', attachments);\n },\n },\n { title: this.$i18n.tc('button.cancel') },\n );\n },\n attachmentsUploaded(uploads: { name: string, url: string }[]) {\n console.log('attachmentsUploaded: ', uploads);\n\n const attachments = [...this.r.attachments];\n\n uploads.forEach((f) => {\n const a = new Attachment();\n a.name = f.name;\n a.url = f.url;\n attachments.push(a);\n });\n this.$tstore.dispatch('setReservationAttachments', attachments);\n\n this.attachmentsPanels = 0;\n },\n async showContactReservations() {\n const reservations = await performDispatchAction('getContactReservations', undefined);\n if (!reservations) return;\n this.contactWithReservations = this.r.contact;\n this.contactReservations = reservations;\n this.reservationResultsDialog = true;\n },\n async showHistory() {\n const history = await performDispatchAction('getReservationHistory', undefined);\n if (!history) return;\n this.history = history;\n this.showHistoryDialogVisible = true;\n },\n\n // Autocomplete\n updateName(val: string) {\n this.r.contact.name = val;\n },\n updateEmail(val: string) {\n this.r.contact.email = val;\n },\n updatePhone(val: string) {\n this.r.contact.phone = val;\n },\n updateContact(contact: Contact) {\n this.$tstore.dispatch('setReservationContact', contact);\n },\n clearContactClicked() {\n if (this.isNew) {\n this.clearContact();\n } else {\n this.clearContactConfirmationVisible = true;\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationHistoryDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationHistoryDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ReservationHistoryDialog.vue?vue&type=template&id=108b6c08&scoped=true&\"\nimport script from \"./ReservationHistoryDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ReservationHistoryDialog.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./ReservationHistoryDialog.vue?vue&type=style&index=0&id=108b6c08&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"108b6c08\",\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('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"max-width\":\"600px\",\"title\":_vm.$t('title.add_attachment')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.upload}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\" mdi-cloud-upload \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.start_upload' ))+\" \")],1),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel' ))+\" \")])]},proxy:true}])},[_c('v-form',{ref:\"form\"},[_c('VueFileAgent',{ref:\"vueFileAgent\",attrs:{\"theme\":\"list\",\"multiple\":\"\",\"deletable\":\"\",\"meta\":\"\",\"max-size\":\"2MB\",\"max-files\":5,\"help-text\":_vm.$t('placeholder.file_upload'),\"error-text\":{\n size: _vm.$t('error.upload_file_size_exceeded_maximum_x', ['2MB']),\n }},on:{\"beforedelete\":_vm.onBeforeDelete},model:{value:(_vm.fileRecords),callback:function ($$v) {_vm.fileRecords=$$v},expression:\"fileRecords\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport httpClient from '@/api/http-client';\nimport { performSaveAction } from '@/services/vue-utils';\n\ninterface UploadedFile {\n file: File;\n}\n\nexport default Vue.extend({\n name: 'FileUploadDialog',\n mixins: [DialogClosable],\n props: { },\n data() {\n return {\n fileRecords: [] as UploadedFile[],\n };\n },\n computed: { },\n watch: {\n visible(value: boolean) {\n if (value) { this.reset(); }\n },\n fileRecords() {\n if (!this.fileRecords || this.fileRecords.length === 0) {\n return;\n }\n console.log(this.fileRecords);\n },\n },\n methods: {\n onBeforeDelete(fileRecord: UploadedFile) {\n const i = this.fileRecords.indexOf(fileRecord);\n this.fileRecords.splice(i, 1);\n const k = this.fileRecords.indexOf(fileRecord);\n if (k !== -1) this.fileRecords.splice(k, 1);\n },\n reset() {\n this.fileRecords = [];\n },\n close() {\n this.$emit('close');\n this.reset();\n },\n async upload() {\n if (!this.fileRecords || this.fileRecords.length === 0) {\n return;\n }\n\n let filenames: string[] = [];\n let urls: string[] = [];\n\n const ok = await performSaveAction(\n undefined,\n async () => {\n filenames = this.fileRecords.map((fr) => fr.file.name);\n const key = this.$tstore.state.settings.account.serviceManagerAccessKey ?? '';\n const futureUrls = this.fileRecords.map((fr) => httpClient.uploadAttachmentFile(fr.file, key));\n urls = await Promise.all(futureUrls);\n },\n );\n\n if (!ok) return;\n\n const uploads: { name: string, url: string }[] = [];\n for (let i = 0; i < this.fileRecords.length; i += 1) {\n uploads.push({ name: filenames[i], url: urls[i] });\n }\n this.close();\n this.$emit('input', uploads);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FileUploadDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FileUploadDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FileUploadDialog.vue?vue&type=template&id=2f67330f&\"\nimport script from \"./FileUploadDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./FileUploadDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./FileUploadDialog.vue?vue&type=style&index=0&id=2f67330f&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',[_c('validation-provider',{ref:\"nameValidationProvider\",attrs:{\"detect-input\":false,\"rules\":\"max:49\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-autocomplete',{class:['mr-0', {'hint-right': errors.length === 0}, {'has-vip-icon': _vm.contact.isVIP} ],attrs:{\"id\":\"acContact\",\"append-icon\":null,\"autofocus\":_vm.focusName,\"items\":_vm.nameContacts,\"label\":_vm.$t('label.name'),\"search-input\":_vm.searchName,\"prepend-inner-icon\":_vm.contact.isVIP ? 'mdi-crown' : null,\"persistent-hint\":\"\",\"hint\":_vm.totalVisitsText,\"error-messages\":errors,\"hide-no-data\":\"\",\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\",\"return-object\":\"\",\"item-value\":\"id\",\"item-text\":\"name\",\"hide-selected\":\"\",\"filter\":(obj) => { obj.id !== 0 },\"menu-props\":{ class: 'contact-autocomplete', contentClass: 'contact-autocomplete'},\"loading\":_vm.isSearchingForName,\"attach\":\"#acnAttachPoint\"},on:{\"update:searchInput\":function($event){_vm.searchName=$event},\"update:search-input\":function($event){_vm.searchName=$event},\"input\":_vm.contactChanged,\"xblur\":_vm.contactBlur,\"xclick\":_vm.contactBlur},scopedSlots:_vm._u([{key:\"item\",fn:function({item}){return [_c('contact-autocomplete-row',{attrs:{\"item\":item}})]}},{key:\"append-outer\",fn:function(){return [(_vm.hasContact)?_c('v-btn',{attrs:{\"icon\":\"\",\"small\":\"\"},on:{\"click\":function($event){return _vm.$emit('clear')}}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1):_vm._e(),_c('div',{attrs:{\"id\":\"acnAttachPoint\"}})]},proxy:true}],null,true),model:{value:(_vm.contactName),callback:function ($$v) {_vm.contactName=$$v},expression:\"contactName\"}})]}}])}),_c('validation-provider',{ref:\"phoneValidationProvider\",attrs:{\"detect-input\":false,\"rules\":`max:19|validPhone:${_vm.defaultCC}`},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-autocomplete',{attrs:{\"append-icon\":null,\"items\":_vm.phoneContacts,\"label\":_vm.$t('label.phone_number'),\"error-messages\":errors,\"hide-no-data\":\"\",\"return-object\":\"\",\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\",\"item-value\":\"id\",\"item-text\":\"phone\",\"search-input\":_vm.searchPhone,\"filter\":(obj) => { obj.id !== 0 },\"hide-selected\":\"\",\"menu-props\":{ class: 'contact-autocomplete', contentClass: 'contact-autocomplete' },\"loading\":_vm.isSearchingForPhone,\"attach\":\"#acpAttachPoint\"},on:{\"update:searchInput\":function($event){_vm.searchPhone=$event},\"update:search-input\":function($event){_vm.searchPhone=$event},\"input\":_vm.contactChanged,\"blur\":_vm.contactBlur,\"click\":_vm.contactBlur},scopedSlots:_vm._u([{key:\"append-outer\",fn:function(){return [_c('div',{attrs:{\"id\":\"acpAttachPoint\"}})]},proxy:true},{key:\"item\",fn:function({item}){return [_c('contact-autocomplete-row',{attrs:{\"item\":item}})]}}],null,true),model:{value:(_vm.contactPhone),callback:function ($$v) {_vm.contactPhone=$$v},expression:\"contactPhone\"}})]}}])}),_c('validation-provider',{ref:\"emailValidationProvider\",attrs:{\"detect-input\":false,\"rules\":\"max:254|validEmail\"},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('v-autocomplete',{attrs:{\"append-icon\":null,\"items\":_vm.emailContacts,\"label\":_vm.$t('label.email'),\"error-messages\":errors,\"hide-details\":errors.length === 0,\"hide-no-data\":\"\",\"return-object\":\"\",\"autocomplete\":\"off\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\",\"item-value\":\"id\",\"item-text\":\"email\",\"search-input\":_vm.searchEmail,\"filter\":(obj) => { obj.id !== 0 },\"hide-selected\":\"\",\"menu-props\":{ class: 'contact-autocomplete', contentClass: 'contact-autocomplete' },\"loading\":_vm.isSearchingForEmail,\"attach\":\"#aceAttachPoint\"},on:{\"update:searchInput\":function($event){_vm.searchEmail=$event},\"update:search-input\":function($event){_vm.searchEmail=$event},\"input\":_vm.contactChanged,\"blur\":_vm.contactBlur,\"click\":_vm.contactBlur},scopedSlots:_vm._u([{key:\"append-outer\",fn:function(){return [_c('div',{attrs:{\"id\":\"aceAttachPoint\"}})]},proxy:true},{key:\"item\",fn:function({item}){return [_c('contact-autocomplete-row',{attrs:{\"item\":item}})]}}],null,true),model:{value:(_vm.contactEmail),callback:function ($$v) {_vm.contactEmail=$$v},expression:\"contactEmail\"}})]}}])})],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:\"autocomplete-row w-100 d-flex flex-column justify-center\"},[_c('div',{staticClass:\"autocomplete-name-row\"},[_c('span',{staticClass:\"font-weight-medium text-h7\"},[(_vm.item.isVIP)?_c('v-icon',{staticClass:\"mr-1 text--primary\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-crown \")]):_vm._e(),_vm._v(_vm._s(_vm.item.name)+\" \")],1),((_vm.item?.reservationCount || 0) > 0)?_c('sup',{staticClass:\"ml-1\"},[_vm._v(_vm._s(_vm.item.reservationCount))]):_vm._e()]),(_vm.item.phone || _vm.item.email)?_c('div',{staticClass:\"autocomplete-row-subtitle text-caption text--secondary d-flex flex-wrap\"},[(_vm.item.phone)?_c('div',{staticClass:\"flex-grow-1 text-no-wrap\"},[_c('span',{staticClass:\"text--secondary\"},[_vm._v(_vm._s(_vm.$t('label.phone'))+\": \")]),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.item.phone))])]):_vm._e(),(_vm.item.email)?_c('div',{staticClass:\"flex-grow-1 text-no-wrap\"},[_c('span',{staticClass:\"text--secondary\"},[_vm._v(_vm._s(_vm.$t('label.email'))+\": \")]),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(_vm.item.email))])]):_vm._e()]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport Contact from '@/model/Contact';\nimport { PropType } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ContactAutocompleteRow',\n props: {\n item: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\n\n\n\nreturn { __sfc: true, }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactAutocompleteRow.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactAutocompleteRow.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ContactAutocompleteRow.vue?vue&type=template&id=72c7d685&scoped=true&\"\nimport script from \"./ContactAutocompleteRow.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ContactAutocompleteRow.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./ContactAutocompleteRow.vue?vue&type=style&index=0&id=72c7d685&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72c7d685\",\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport ContactAutocompleteRow from '@/components/views/reservation/ContactAutocompleteRow.vue';\nimport { mapActions } from 'vuex';\nimport Contact from '@/model/Contact';\nimport { isModelEqualToModel } from '@/model/model-utils';\nimport { SearchType } from '@/services/search';\nimport { removeInvisibleUnicodeCharacters } from '@/util/common';\n\nexport default Vue.extend({\n name: 'ContactAutocomplete',\n components: { ContactAutocompleteRow },\n props: {\n focusName: { type: Boolean, required: false, default: false },\n contact: { type: Object as PropType, required: true },\n },\n data() {\n return {\n searchName: null as string | null,\n searchPhone: null as string | null,\n searchEmail: null as string | null,\n contactName: null as Contact | null,\n contactPhone: null as Contact | null,\n contactEmail: null as Contact | null,\n searchContactChanged: false,\n };\n },\n computed: {\n defaultCC(): string {\n const { account } = this.$tstore.state.settings;\n return this.contact.country?.code || account.countryCode || '';\n },\n totalVisitsText(): string {\n return this.contact.reservationCount && this.contact.reservationCount > 0\n ? this.$i18n.t('label.total_visits_x', [this.contact.reservationCount]) as string\n : '';\n },\n hasContact(): boolean {\n return !isModelEqualToModel(this.contact, new Contact());\n },\n nameContacts(): Contact[] {\n const isNameSearch = this.searchContactChanged\n && this.$tstore.state.nameSearch.type === SearchType.ContactName;\n const contacts: Contact[] = isNameSearch ? this.$tstore.getters['nameSearch/searchContacts'] : [];\n return (this.contact.name === undefined || this.contact.name === '')\n ? contacts.filter((o) => o.id !== this.contact!.id)\n : [this.contact, ...contacts.filter((o) => o.id !== this.contact!.id)];\n },\n phoneContacts(): Contact[] {\n const isPhoneSearch = this.searchContactChanged\n && this.$tstore.state.phoneSearch.type === SearchType.ContactPhone;\n const contacts: Contact[] = isPhoneSearch ? this.$tstore.getters['phoneSearch/searchContacts'] : [];\n return (this.contact.phone === undefined || this.contact.phone === '')\n ? contacts.filter((o) => o.id !== this.contact!.id)\n : [this.contact, ...contacts.filter((o) => o.id !== this.contact!.id)];\n },\n emailContacts(): Contact[] {\n const isEmailSearch = this.searchContactChanged\n && this.$tstore.state.emailSearch.type === SearchType.ContactPhone;\n const contacts: Contact[] = isEmailSearch ? this.$tstore.getters['emailSearch/searchContacts'] : [];\n return (this.contact.email === undefined || this.contact.email === '')\n ? contacts.filter((o) => o.id !== this.contact!.id)\n : [this.contact, ...contacts.filter((o) => o.id !== this.contact!.id)];\n },\n isSearchingForName(): boolean {\n return this.$tstore.getters['nameSearch/isSearching'];\n },\n isSearchingForPhone(): boolean {\n return this.$tstore.getters['phoneSearch/isSearching'];\n },\n isSearchingForEmail(): boolean {\n return this.$tstore.getters['emailSearch/isSearching'];\n },\n },\n watch: {\n async searchName(newValue: string, oldValue: string) {\n const searchNameWasEmpty = !oldValue;\n if (newValue === this.contact.name) { return; }\n\n if (searchNameWasEmpty && this.searchName?.length === 1) {\n this.searchName = this.searchName.toUpperCase();\n }\n (this.$refs.nameValidationProvider as any).syncValue(this.searchName);\n (this.$refs.nameValidationProvider as any).validate();\n\n setTimeout(() => this.searchContactNameChanged(this.searchName || ''), 100);\n },\n async searchPhone(newValue: string, oldValue: string) {\n if (newValue === this.contact.phone) { return; }\n\n this.searchPhone = this.removeInvisibleUnicodeCharacters(this.searchPhone || '');\n (this.$refs.phoneValidationProvider as any).syncValue(this.searchPhone);\n (this.$refs.phoneValidationProvider as any).validate();\n\n setTimeout(() => this.searchContactPhoneChanged(this.searchPhone || ''), 100);\n },\n async searchEmail(newValue: string, oldValue: string) {\n if (newValue === this.contact.email) { return; }\n\n this.searchEmail = this.removeInvisibleUnicodeCharacters(this.searchEmail || '');\n (this.$refs.emailValidationProvider as any).syncValue(this.searchEmail);\n (this.$refs.emailValidationProvider as any).validate();\n\n setTimeout(() => this.searchContactEmailChanged(this.searchEmail || ''), 100);\n },\n contact: {\n deep: true,\n handler() {\n this.syncContactWithFields();\n },\n },\n },\n mounted() {\n this.syncContactWithFields();\n },\n methods: {\n ...mapActions([\n 'sendEditReservation', 'confirmCloseEditReservation', 'closeEditReservation']),\n removeInvisibleUnicodeCharacters(input: string): string {\n return removeInvisibleUnicodeCharacters(input).trim();\n },\n contactBlur(event: FocusEvent) {\n console.log('contactBlur: ', event);\n this.searchContactChanged = false;\n },\n contactChanged(contact: Contact | null) {\n // this was causing error in the store, so hopefully nothing will break\n if (contact === null) {\n return;\n }\n this.$emit('update-contact', contact);\n },\n searchContactNameChanged(text: string) {\n console.log('searchContactNameChanged: ', text);\n this.searchContactChanged = true;\n this.$tstore.dispatch('nameSearch/search', { query: text ?? '', type: SearchType.ContactName });\n this.$emit('update-name', text);\n },\n searchContactPhoneChanged(text: string) {\n console.log('searchContactPhoneChanged: ', text);\n this.searchContactChanged = true;\n this.$tstore.dispatch('phoneSearch/search', { query: text ?? '', type: SearchType.ContactPhone });\n this.$emit('update-phone', text);\n },\n searchContactEmailChanged(text: string) {\n console.log('searchContactEmailChanged: ', text);\n this.searchContactChanged = true;\n this.$tstore.dispatch('emailSearch/search', { query: text ?? '', type: SearchType.ContactPhone });\n this.$emit('update-email', text);\n },\n syncContactWithFields() {\n if (this.contact.name !== null && this.contact.name !== '') {\n this.contactName = this.contact;\n } else {\n this.contactName = null;\n }\n if (this.contact.phone !== null && this.contact.phone !== '') {\n this.contactPhone = this.contact;\n } else {\n this.contactPhone = null;\n }\n if (this.contact.email !== null && this.contact.email !== '') {\n this.contactEmail = this.contact;\n } else {\n this.contactEmail = null;\n }\n (this.$refs.nameValidationProvider as any).syncValue(this.contact.name);\n (this.$refs.nameValidationProvider as any).validate();\n (this.$refs.phoneValidationProvider as any).syncValue(this.contact.phone);\n (this.$refs.phoneValidationProvider as any).validate();\n (this.$refs.emailValidationProvider as any).syncValue(this.contact.email);\n (this.$refs.emailValidationProvider as any).validate();\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactAutocomplete.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactAutocomplete.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactAutocomplete.vue?vue&type=template&id=b9a7fbe2&scoped=true&\"\nimport script from \"./ContactAutocomplete.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactAutocomplete.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactAutocomplete.vue?vue&type=style&index=0&id=b9a7fbe2&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b9a7fbe2\",\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('label',{class:`v-label v-label--active ${_vm.$vuetify.theme.dark ? 'theme--dark' : 'theme--light'}`,staticStyle:{\"font-size\":\"12px\"}},[_vm._v(_vm._s(_vm.label))]),_c('v-input',{class:[{'pb-2': _vm.hint===null}],attrs:{\"hint\":_vm.hint,\"hide-details\":_vm.hint===null,\"persistent-hint\":\"\"}},[_c('div',{staticClass:\"w-100 d-flex mt-1 justify-space-between\"},[_vm._l((5),function(i){return [_c('v-btn',{key:i,staticClass:\"party-size-button\",class:`${_vm.$vuetify.theme.dark ? 'black--text' : 'white--text'}`,attrs:{\"color\":\"primary\",\"depressed\":i === _vm.partySize,\"outlined\":i !== _vm.partySize,\"small\":\"\"},on:{\"click\":function($event){_vm.partySize = i}}},[_vm._v(\" \"+_vm._s(i)+\" \")])]}),_c('v-select',{staticClass:\"buttonized-select\",attrs:{\"items\":_vm.partySizes,\"append-icon\":null,\"hide-details\":\"\",\"menu-props\":{ maxHeight: '500px', offsetY: true, contentClass: 'buttonized-select-menu' },\"height\":\"28\"},scopedSlots:_vm._u([{key:\"selection\",fn:function(){return [_c('v-btn',{attrs:{\"small\":\"\",\"block\":\"\",\"depressed\":_vm.partySize > 5,\"outlined\":_vm.partySize <= 5,\"color\":\"primary\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.more'))+_vm._s(_vm.otherPartySizeButtonText)+\" \")])]},proxy:true}]),model:{value:(_vm.partySize),callback:function ($$v) {_vm.partySize=$$v},expression:\"partySize\"}})],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'PartySizePicker',\n props: {\n value: { type: Number, required: true },\n label: { type: String, required: false, default: '' },\n hint: { type: String, required: false, default: null },\n },\n data() {\n return {\n partySize: this.value,\n partySizes: [...new Array(501)].map((e, i) => (\n { value: i, text: this.$i18n.t('label.x_persons', [i]), disabled: i <= 5 })),\n };\n },\n computed: {\n otherPartySizeButtonText(): string {\n return this.partySize > 5 ? `: ${this.partySize}` : '';\n },\n },\n watch: {\n value() {\n this.partySize = this.value;\n },\n partySize() {\n if (this.partySize === this.value) return;\n this.$emit('input', this.partySize);\n },\n },\n methods: { },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PartySizePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PartySizePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PartySizePicker.vue?vue&type=template&id=68a4d06c&scoped=true&\"\nimport script from \"./PartySizePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./PartySizePicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./PartySizePicker.vue?vue&type=style&index=0&id=68a4d06c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68a4d06c\",\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('v-menu',{attrs:{\"absolute\":\"\",\"offset-y\":\"\",\"min-width\":\"250\",\"max-height\":\"85%\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function(slotData){return [_vm._t(\"activator\",null,null,slotData)]}}],null,true),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-list',{staticClass:\"pt-2\"},[_c('v-list-item-group',[(_vm.holdTabItemsVisible)?[_c('v-list-item',{staticClass:\"mb-2\",attrs:{\"inactive\":\"\"},on:{\"click\":_vm.holdTabItemsChanged}},[_c('v-list-item-action',{staticClass:\"mr-3\"},[_c('v-switch',{attrs:{\"input-value\":_vm.holdTabItems},on:{\"changed\":_vm.holdTabItemsChanged}})],1),_c('v-list-item-content',[_vm._v(\" \"+_vm._s(_vm.$t('label.hold_table'))+\" \")])],1),_c('v-divider')]:_vm._e(),(_vm.autoTabItemsVisible)?_c('v-list-item',{attrs:{\"inactive\":\"\",\"disabled\":_vm.autoTabItemsDisabled},on:{\"click\":_vm.autoTabItemsChanged}},[_c('v-list-item-action',{staticClass:\"mr-3\"},[_c('v-checkbox',{attrs:{\"disabled\":_vm.autoTabItemsDisabled},on:{\"click\":function($event){$event.stopPropagation();return _vm.autoTabItemsChanged.apply(null, arguments)}},model:{value:(_vm.autoTabItems),callback:function ($$v) {_vm.autoTabItems=$$v},expression:\"autoTabItems\"}})],1),_c('v-list-item-content',[_c('v-input',{staticClass:\"automatic-table-checkbox\",attrs:{\"persistent-hint\":_vm.tableAllocationDisabled,\"hide-details\":!_vm.tableAllocationDisabled,\"hint\":_vm.tableAllocationDisabled ? _vm.$t('label.table_allocation_disabled') : null}},[_c('span',{class:{'text--secondary': _vm.tableAllocationDisabled}},[_vm._v(_vm._s(_vm.$t('label.automatic')))])])],1)],1):_vm._e(),(_vm.autoTabItemsVisible)?_c('v-divider'):_vm._e(),_vm._l((_vm.tabItems),function(item,i){return [_c('v-list-item',{key:i,attrs:{\"inactive\":\"\",\"disabled\":_vm.tabItemsDisabled},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleCheckbox(item)}}},[_c('v-list-item-action',{staticClass:\"mr-3\"},[_c('v-checkbox',{attrs:{\"value\":item,\"disabled\":_vm.tabItemsDisabled,\"value-comparator\":_vm.checkboxComparator,\"error\":_vm.isUnavailable(item)},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleCheckbox(item)}},model:{value:(_vm.selectedTabItems),callback:function ($$v) {_vm.selectedTabItems=$$v},expression:\"selectedTabItems\"}})],1),_c('v-list-item-title',[_c('span',{class:[_vm.isUnavailable(item) ? 'error--text' : '']},[_vm._v(\" \"+_vm._s(item.no)+\" \")]),_c('span',{class:[_vm.isUnavailable(item) ? 'error--text' : 'grey--text'],staticStyle:{\"float\":\"right\"}},[_vm._v(\" \"+_vm._s(item.seats === 1 ? _vm.$t('label.x_seat', [item.seats]) : _vm.$t('label.x_seats', [item.seats])))])])],1)]}),_c('v-divider'),_c('v-list-item',{attrs:{\"inactive\":\"\",\"disabled\":_vm.holdTabItems && _vm.holdTabItemsVisible},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectAll.apply(null, arguments)}}},[_c('v-list-item-action',{staticClass:\"mr-3\"},[_c('v-checkbox',{attrs:{\"disabled\":_vm.holdTabItems && _vm.holdTabItemsVisible},on:{\"click\":function($event){$event.stopPropagation();return _vm.selectAll.apply(null, arguments)}},model:{value:(_vm.selectAllChecked),callback:function ($$v) {_vm.selectAllChecked=$$v},expression:\"selectAllChecked\"}})],1),_c('v-list-item-title',[_c('span',[_vm._v(_vm._s(_vm.$t('label.select_all')))])])],1)],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport Reservation, { ReservationType } from '@/model/Reservation';\nimport TabItem from '@/model/TabItem';\n\nexport default Vue.extend({\n name: 'TabItemMenu',\n components: { },\n props: { },\n data() {\n return {\n menu: false,\n lastTabItems: [] as TabItem[],\n autoTabItems: false,\n };\n },\n computed: {\n r(): Reservation {\n return this.$tstore.getters.editReservation ?? new Reservation();\n },\n tabItems(): TabItem[] {\n return this.r.tab?.tabItems ?? [];\n },\n reservationTabItems(): TabItem[] {\n return this.r.tabItems ?? [];\n },\n selectedTabItems(): TabItem[] {\n return this.r.tabItems;\n },\n unavailableTabItems(): TabItem[] {\n return this.$tstore.getters.reservationUnavailableTabItems;\n },\n holdTabItems(): boolean {\n return this.r.holdTabItems;\n },\n holdTabItemsVisible(): boolean {\n return !this.r.isBlock;\n },\n selectAllChecked(): boolean {\n return this.r.tabItems.length === this.tabItems.length;\n },\n tableAllocationDisabled(): boolean {\n return !(this.$tstore.state.settings.accountSettings.tableAllocation ?? false);\n },\n autoTabItemsVisible(): boolean {\n return !this.r.isBlock;\n },\n autoTabItemsDisabled(): boolean {\n return this.holdTabItems || this.tableAllocationDisabled || this.r.isBlock;\n },\n tabItemsDisabled(): boolean {\n return this.holdTabItems && !this.r.isBlock;\n },\n },\n watch: {\n menu(value: boolean) {\n if (value) this.reset();\n },\n tableAllocationDisabled() {\n this.updateAutoTabItems();\n },\n reservationTabItems() {\n this.updateAutoTabItems();\n },\n },\n methods: {\n updateAutoTabItems() {\n this.autoTabItems = this.r.tabItems.length === 0\n && !this.tableAllocationDisabled\n && !this.r.isBlock;\n },\n selectAll() {\n if (this.selectAllChecked) {\n this.$tstore.dispatch('setReservationTabItems', []);\n } else {\n this.$tstore.dispatch('setReservationTabItems', this.tabItems);\n }\n },\n reset() {\n this.lastTabItems = [];\n this.updateAutoTabItems();\n },\n checkboxComparator(lhs: TabItem, rhs: TabItem):boolean {\n return lhs.id === rhs.id;\n },\n isUnavailable(tabItem: TabItem) {\n return this.unavailableTabItems.find((o) => o.id === tabItem.id);\n },\n toggleCheckbox(tabItem: TabItem) {\n const tabItems = Array.from(this.r.tabItems);\n const index = tabItems.findIndex((ti) => ti.id === tabItem.id);\n if (index >= 0) tabItems.splice(index, 1);\n else tabItems.push(tabItem);\n this.$tstore.dispatch('setReservationTabItems', tabItems);\n },\n holdTabItemsChanged() {\n console.log('XXX holdTabChanged');\n this.$tstore.dispatch('setReservationHoldTabItems', !this.holdTabItems);\n },\n autoTabItemsChanged() {\n if (this.autoTabItems) {\n this.lastTabItems = Array.from(this.r.tabItems);\n this.$tstore.dispatch('setReservationTabItems', []);\n } else {\n this.$tstore.dispatch('setReservationTabItems', this.lastTabItems);\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabItemMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabItemMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TabItemMenu.vue?vue&type=template&id=52bc0eb7&scoped=true&\"\nimport script from \"./TabItemMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./TabItemMenu.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TabItemMenu.vue?vue&type=style&index=0&id=52bc0eb7&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"52bc0eb7\",\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('v-menu',{attrs:{\"absolute\":\"\",\"max-height\":\"75%\",\"offset-y\":\"\",\"min-width\":\"250\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(slotData){return [_vm._t(\"activator\",null,null,slotData)]}}],null,true)},[_c('v-list',[_c('v-list-item-group',{attrs:{\"active-class\":\"primary--text\"}},[_vm._l((_vm.tagNotes),function(item,i){return [_c('v-list-item',{key:i,attrs:{\"value\":item.text},on:{\"click\":function($event){return _vm.selected(item)}}},[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.text)+\" \")])],1)]})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport TagNote from '@/model/TagNote';\n\nexport default Vue.extend({\n name: 'TagNoteMenu',\n components: { },\n props: { },\n data() {\n return { };\n },\n computed: {\n tagNotes(): TagNote[] { return this.$tstore.state.settings.tagNotes; },\n },\n methods: {\n selected(t: TagNote) {\n this.$emit('selected', t);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagNoteMenu.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagNoteMenu.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TagNoteMenu.vue?vue&type=template&id=f5aef166&\"\nimport script from \"./TagNoteMenu.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagNoteMenu.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-select',{attrs:{\"value\":_vm.value,\"items\":_setup.items,\"label\":_vm.$t('label.status'),\"hide-details\":\"\",\"menu-props\":{ 'min-width': '250px' }},on:{\"input\":_setup.updateStatus},scopedSlots:_vm._u([{key:\"item\",fn:function({item}){return [_c('span',{staticClass:\"d-block w-100\"},[_vm._v(_vm._s(item.text))]),_c('div',{staticClass:\"text-right\"},[_c('v-icon',{attrs:{\"small\":\"\",\"color\":_setup.colorForStatus(item.value)}},[_vm._v(\" mdi-circle \")])],1)]}},{key:\"append\",fn:function(){return [_c('v-icon',{staticClass:\"mt-1\",attrs:{\"small\":\"\",\"color\":_setup.colorForStatus(_vm.value)}},[_vm._v(\" mdi-circle \")])]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { ReservationStatus } from '@/model/Reservation';\nimport { PropType } from 'vue';\nimport { colorForStatus } from '@/components/helpers/colors';\nimport { reservationStatusItems } from '@/util/status';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ReservationStatusSelect',\n props: {\n value: { type: Object as PropType, required: true },\n},\n emits: ['input'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst items = reservationStatusItems();\n\n\n\nconst updateStatus = (s: ReservationStatus) => {\n emit('input', s);\n};\n\n\nreturn { __sfc: true,props, items, emit, updateStatus, colorForStatus }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationStatusSelect.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationStatusSelect.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ReservationStatusSelect.vue?vue&type=template&id=1a1db3c6&\"\nimport script from \"./ReservationStatusSelect.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ReservationStatusSelect.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-select',{attrs:{\"value\":_vm.value,\"items\":_vm.items,\"label\":_vm.label,\"append-outer-icon\":_vm.value ? 'mdi-close' : null,\"return-object\":\"\",\"hide-details\":\"\",\"menu-props\":{ 'min-width': '250px' }},on:{\"click:append-outer\":function($event){return _setup.emit('input', null)},\"input\":_setup.updateValue},scopedSlots:_vm._u([{key:\"item\",fn:function({item}){return [_c('p',{staticClass:\"w-100 my-auto\"},[_vm._v(\" \"+_vm._s(item.text)+\" \")]),_c('div',{staticClass:\"text-right\"},[_c('v-icon',{attrs:{\"small\":\"\",\"color\":item.color}},[_vm._v(\" mdi-circle \")])],1)]}},(_vm.value)?{key:\"append\",fn:function(){return [_c('v-icon',{staticClass:\"mt-1\",attrs:{\"small\":\"\",\"color\":_vm.value.color}},[_vm._v(\" mdi-circle \")])]},proxy:true}:null],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ReservationItemSelect',\n props: {\n value: { type: Object as PropType, required: true },\n label: { type: [String, Object] as PropType, required: false, default: '' },\n items: { type: Object as PropType>, required: true },\n},\n emits: ['input'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst updateValue = (s: Object) => {\n emit('input', s);\n};\n\n\nreturn { __sfc: true,props, emit, updateValue }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationItemSelect.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationItemSelect.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ReservationItemSelect.vue?vue&type=template&id=81076a78&\"\nimport script from \"./ReservationItemSelect.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ReservationItemSelect.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Reservation.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Reservation.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Reservation.vue?vue&type=template&id=0c8ede64&scoped=true&\"\nimport script from \"./Reservation.vue?vue&type=script&lang=ts&\"\nexport * from \"./Reservation.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Reservation.vue?vue&type=style&index=0&id=0c8ede64&prod&lang=scss&\"\nimport style1 from \"./Reservation.vue?vue&type=style&index=1&id=0c8ede64&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0c8ede64\",\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('v-container',{staticClass:\"pa-0 ma-0\",attrs:{\"tabindex\":\"-1\"}},[_c('div',{staticClass:\"calendar-sidebar-header pt-3 pb-2 px-4\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"icon\":\"\"},on:{\"click\":_vm.previousMonths}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),_c('v-btn',{attrs:{\"color\":\"primary\",\"width\":\"160\",\"outlined\":\"\",\"small\":\"\"},on:{\"click\":_vm.goToToday}},[_vm._v(\" \"+_vm._s(_vm.$t('label.today'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"primary\",\"icon\":\"\"},on:{\"click\":_vm.nextMonths}},[_c('v-icon',[_vm._v(\"mdi-chevron-right\")])],1)],1),_c('vc-date-picker',{ref:\"picker\",attrs:{\"tabindex\":\"-1\",\"is-inline\":\"\",\"is-required\":\"\",\"first-day-of-week\":_vm.$localized.firstDayOfWeek() + 1,\"locale\":_vm.$i18n.locale,\"color\":\"blue\",\"attributes\":_vm.attributes,\"rows\":3,\"theme\":_vm.theme,\"is-dark\":_vm.$vuetify.theme.dark,\"is-expanded\":\"\"},on:{\"dayclick\":_vm.dayclick,\"update:from-page\":_vm.updateFromPage},model:{value:(_vm.date),callback:function ($$v) {_vm.date=$$v},expression:\"date\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport VCalendar from 'v-calendar';\nimport { performAction } from '@/services/vue-utils';\nimport {\n dateByAddingDays, dateByAddingMonths, dateIndexFromDate, isDateBeforeDate,\n} from '@/services/time-utils';\nimport DateSlot from '@/model/DateSlot';\nimport { isOpenFromHours } from '@/services/timestlot-utils';\n\nVue.use(VCalendar, {\n componentPrefix: 'vc',\n});\n\nexport default Vue.extend({\n name: 'Calendar',\n props: { },\n data() {\n return {\n date: this.$tstore.state.update.date,\n theme: {\n container: {\n light: 'light-theme',\n dark: 'vc-text-white vc-rounded',\n },\n weekdays: {\n light: 'vc-text-xs text--secondary',\n dark: 'vc-text-xs text--secondary',\n },\n },\n fromPage: { month: 0, year: 0 } as { month: number, year: number },\n };\n },\n computed: {\n currentDate(): Date {\n return this.$tstore.state.update.date;\n },\n dates(): Date[] {\n const dates: Date[] = [];\n\n let startDate = new Date(this.fromPage.year, this.fromPage.month - 1, 1);\n const endDate = dateByAddingMonths(startDate, 3);\n\n const nowDate = this.$tstore.getters.nowDate as Date;\n if (isDateBeforeDate(startDate, nowDate)) startDate = nowDate;\n\n for (let date = startDate; isDateBeforeDate(date, endDate); date = dateByAddingDays(date, 1)) {\n dates.push(date);\n }\n return dates;\n },\n dateSlots(): DateSlot[] {\n const { dateSlotsByDateIndex } = this.$tstore.state.reservations;\n return this.dates.flatMap((d) => dateSlotsByDateIndex[dateIndexFromDate(d)] ?? []);\n },\n attributes(): any[] {\n const now = this.$tstore.getters.nowDate as Date;\n const confirmedDates = this.dateSlots.flatMap((ds) => (ds.confirmedCount > 0 ? ds.date : []));\n const nonConfirmedDates = this.dateSlots.flatMap((ds) => (ds.nonConfirmedCount > 0 ? ds.date : []));\n const closedDates = this.dates.flatMap((d) => (!isOpenFromHours(\n d,\n this.$tstore.getters.openingHoursInWeekdaysByTimeIndex,\n\n this.$tstore.getters.datesAndTimesById,\n ) ? d : []));\n\n return [\n { // confirmed + planned\n dot: {\n color: 'blue',\n },\n dates: confirmedDates,\n },\n { // unconfirmed\n dot: {\n color: 'purple',\n },\n dates: nonConfirmedDates,\n },\n { // closed\n highlight: {\n contentClass: 'closed-day',\n },\n dates: closedDates,\n order: 1,\n },\n { // today\n highlight: {\n color: 'primary',\n fillMode: 'none',\n class: 'highlight--today',\n contentClass: 'today',\n },\n dates: [\n now,\n ],\n },\n ];\n },\n },\n watch: {\n currentDate() {\n this.date = this.$tstore.state.update.date;\n const calendar = (this.$refs.picker as Vue).$refs.calendar as any;\n calendar.move(this.$tstore.state.update.date);\n },\n },\n methods: {\n async goToDate(date: Date) {\n // ensure calendar-friendly view is pushed when selecting a date from\n // other places like settings, etc.\n if (this.$router.currentRoute.meta?.hasDatePicker !== true) {\n this.$router.push('/guests');\n }\n\n this.$emit('change', date);\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('changeToDate', date),\n );\n },\n async dayclick(event: { date: Date }) {\n (document.activeElement as HTMLElement | null)?.blur();\n this.goToDate(event.date);\n },\n goToToday() {\n this.goToDate(new Date());\n const calendar = (this.$refs.picker as Vue).$refs.calendar as any;\n calendar.move(new Date(), { position: 1 });\n },\n previousMonths() {\n const calendar = (this.$refs.picker as Vue).$refs.calendar as any;\n calendar.move(-1);\n },\n nextMonths() {\n const calendar = (this.$refs.picker as Vue).$refs.calendar as any;\n calendar.move(1);\n },\n updateFromPage(page: { month: number, year: number }) {\n this.fromPage = page;\n },\n },\n});\n","var render, staticRenderFns\nimport script from \"./RowFormDivider.vue?vue&type=script&lang=ts&\"\nexport * from \"./RowFormDivider.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Calendar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Calendar.vue?vue&type=template&id=26a6f555&\"\nimport script from \"./Calendar.vue?vue&type=script&lang=ts&\"\nexport * from \"./Calendar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Calendar.vue?vue&type=style&index=0&id=26a6f555&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{ref:\"menu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"transition\":\"scale-transition\",\"offset-y\":\"\",\"min-width\":\"290px\"},on:{\"input\":_vm.updateValue},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-text-field',_vm._g({attrs:{\"dense\":_vm.dense,\"hide-details\":_vm.hideDetails,\"error-messages\":_vm.errorMessages,\"outlined\":_vm.outlined,\"disabled\":_vm.disabled,\"label\":_vm.label,\"append-outer-icon\":_vm.appendOuterIcon,\"readonly\":\"\"},on:{\"click:append-outer\":function($event){return _vm.$emit('click-append-outer')},\"click:clear\":_vm.clear,\"keydown\":_vm.keydown},model:{value:(_vm.displayTime),callback:function ($$v) {_vm.displayTime=$$v},expression:\"displayTime\"}},on))]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_c('v-time-picker',{ref:\"picker\",attrs:{\"format\":_vm.$localized.getTimeFormat(),\"color\":\"brand\",\"ampm-in-title\":\"\",\"allowed-minutes\":_vm.allowedMinutes},on:{\"click:minute\":function($event){return _vm.$refs.menu.save(_vm.time)}},model:{value:(_vm.time),callback:function ($$v) {_vm.time=$$v},expression:\"time\"}},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'TimePickerField',\n props: {\n value: { type: String, required: true },\n allowedMinutes: { type: Array, required: false, default: () => [0, 15, 30, 45] as Array },\n disabled: { type: Boolean, required: false, default: false },\n label: { type: String, required: false, default: '' },\n dense: { type: Boolean, required: false, default: false },\n hideDetails: { type: Boolean, required: false, default: false },\n outlined: { type: Boolean, required: false, default: false },\n appendOuterIcon: { type: String, required: false, default: null },\n errorMessages: { type: Array, required: false, default: null },\n },\n data() {\n return {\n time: this.value,\n menu: false,\n typedTime: '',\n };\n },\n computed: {\n displayTime(): string | null {\n if (!this.value) return null;\n return this.$localized.hourMinTextFrom24hr(this.value);\n },\n enteringHours(): boolean {\n return this.typedTime.length <= 2 && this.typedTime.indexOf(':') < 0;\n },\n },\n watch: {\n value() {\n this.time = this.value;\n },\n menu() {\n this.typedTime = '';\n },\n typedTime() {\n if (this.typedTime === '') { return; }\n\n if (this.enteringHours) {\n const minutes = this.time.split(':')[1];\n this.time = `${this.typedTime}:${minutes}`;\n } else {\n const hours = this.typedTime.indexOf(':') < 0 ? this.typedTime.substring(0, 2) : this.typedTime.split(':')[0];\n const typedMin = this.typedTime.indexOf(':') < 0 ? this.typedTime.substring(2) : this.typedTime.split(':')[1];\n const minutes = typedMin.length > 0 ? typedMin : this.time.split(':')[1];\n console.log(`${hours} - ${minutes}`);\n this.time = `${hours}:${minutes}`;\n }\n\n if ((this.typedTime.length === 4 && this.typedTime.indexOf(':') < 0) || this.typedTime.length === 5) {\n this.typedTime = '';\n }\n },\n },\n methods: {\n normalizeMinutesToAllowed() {\n if (this.allowedMinutes.length === 4) {\n const [hr, min] = this.time.split(':');\n this.time = `${hr}:${String(this.round15(parseInt(min, 10))).padStart(2, '0')}`;\n }\n },\n round15(x: number) {\n return (Math.round(x / 15) * 15) % 60;\n },\n clear() {\n this.time = '';\n this.typedTime = '';\n this.updateValue();\n },\n updateValue() {\n if (this.$refs.picker) {\n (this.$refs.picker as Vue & {selectingHour: boolean}).selectingHour = true;\n }\n this.normalizeMinutesToAllowed();\n this.$emit('input', this.time);\n },\n keydown(evt: KeyboardEvent) {\n if (evt.key === 'Enter') {\n this.normalizeMinutesToAllowed();\n (this.$refs.menu as any).save(this.time);\n } else if (evt.key === 'p' && (this.$refs.picker as any).period === 'am') {\n (this.$refs.picker as any).setPeriod('pm');\n } else if (evt.key === 'a' && (this.$refs.picker as any).period === 'pm') {\n (this.$refs.picker as any).setPeriod('am');\n } else if (['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ':'].includes(evt.key)) {\n if (evt.key === ':' && this.typedTime.length === 0) {\n return;\n }\n this.typedTime += evt.key;\n }\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimePickerField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimePickerField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimePickerField.vue?vue&type=template&id=a853e1f4&\"\nimport script from \"./TimePickerField.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimePickerField.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"persistent\":_vm.persistent,\"max-width\":_vm.maxWidth,\"scrollable\":_vm.scrollable,\"content-class\":_vm.contentClass,\"fullscreen\":_vm.fullscreen,\"container-class\":_vm.containerClass},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',{attrs:{\"height\":_vm.cardHeight,\"max-height\":_vm.cardMaxHeight}},[_c('v-card-title',{staticClass:\"pa-0 ma-0\"},[(_vm.title !== '')?_c('span',{staticClass:\"px-5 py-2\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]):_vm._e(),_vm._t(\"title\")],2),_c('v-divider'),_c('v-card-text',{ref:\"scrollContent\",class:_vm.cardClass},[_c('v-container',{class:_vm.containerClass,attrs:{\"fluid\":_vm.fluid}},[_vm._t(\"default\")],2)],1),_c('v-card-actions',[_vm._t(\"actions\")],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\n\nexport default Vue.extend({\n name: 'ModalDialog',\n mixins: [DialogClosable],\n props: {\n title: { type: String, required: false, default: '' },\n maxWidth: { type: Number, required: false, default: 600 },\n persistent: { type: Boolean, required: false, default: false },\n cardClass: { type: String, required: false, default: null },\n cardHeight: { type: Number, required: false, default: null },\n cardMaxHeight: { type: String, required: false, default: null },\n scrollable: { type: Boolean, required: false, default: false },\n contentClass: { type: String, required: false, default: null },\n containerClass: { type: String, required: false, default: 'pa-md-5 pa-0' },\n fluid: { type: Boolean, required: false, default: false },\n fullscreen: { type: Boolean, required: false, default: false },\n },\n data() {\n return { };\n },\n watch: { },\n methods: {\n // eslint-disable-next-line vue/no-unused-properties\n scrollToBottom() {\n const scrollDiv = this.$refs.scrollContent as HTMLElement;\n scrollDiv.scrollTop = scrollDiv.scrollHeight + 60;\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ModalDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ModalDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ModalDialog.vue?vue&type=template&id=b0f8d852&\"\nimport script from \"./ModalDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ModalDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\nimport { h } from 'vue';\nimport { VDivider, VCol } from 'vuetify/lib';\n\nexport default {\n setup() {\n return () => h(VCol, { attrs: { cols: '12' }, class: 'py-0' }, [\n h(VDivider),\n ]);\n },\n};\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RowFormDivider.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RowFormDivider.vue?vue&type=script&lang=ts&\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-inline-block\"},[_c('v-tooltip',{attrs:{\"right\":\"\",\"disabled\":_vm.tooltip===undefined},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g(_vm._b({class:[{'primary': _vm.filled}],attrs:{\"outlined\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('click')}}},'v-btn',_vm.$attrs,false),on),[(_vm.icon !== '')?_c('v-icon',{attrs:{\"color\":_vm.filled ? (_vm.$vuetify.theme.dark ? 'black' : 'white') : 'primary'}},[_vm._v(\" \"+_vm._s(_vm.icon)+\" \")]):_vm._e()],1)]}}])},[_c('span',[_vm._v(_vm._s(_vm.tooltip))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FilledButton',\n props: {\n icon: { type: String, required: false, default: '' },\n filled: { type: Boolean, required: false, default: false },\n tooltip: { type: String, required: false, default: undefined },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\n\nreturn { __sfc: true,props }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilledButton.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FilledButton.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./FilledButton.vue?vue&type=template&id=46258861&\"\nimport script from \"./FilledButton.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./FilledButton.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{class:[\n 'pa-0 ma-0 h-100 toolbar-container',\n {'compact': _vm.$vuetify.breakpoint.smAndDown},\n {'has-bottom-bar' : _setup.hasBottomBar},\n ],attrs:{\"fluid\":\"\"}},[_c('div',{staticClass:\"toolbar-content\"},[_vm._t(\"toolbar\")],2),_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ToolbarContainer',\n setup(__props) {\n\n\nconst hasBottomBar = process.env.VUE_APP_SHOW_FOOTER === 'true';\n\n\nreturn { __sfc: true,hasBottomBar }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ToolbarContainer.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ToolbarContainer.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ToolbarContainer.vue?vue&type=template&id=469e7edb&\"\nimport script from \"./ToolbarContainer.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ToolbarContainer.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./ToolbarContainer.vue?vue&type=style&index=0&id=469e7edb&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-tooltip',{attrs:{\"bottom\":\"\",\"open-delay\":\"1200\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on}){return [_c('v-btn',_vm._g(_vm._b({class:_vm.buttonClass,attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.$emit('click')}}},'v-btn',_vm.$attrs,false),on),[_vm._t(\"default\")],2)]}}],null,true)},[_c('span',[_vm._v(_vm._s(_vm.tooltipTitle))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TooltipIconButton',\n props: {\n tooltipTitle: { type: String, required: false, default: '' },\n buttonClass: { type: String, required: false, default: '' },\n},\n setup(__props) {\n\n\n\nreturn { __sfc: true, }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TooltipIconButton.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TooltipIconButton.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./TooltipIconButton.vue?vue&type=template&id=71d965d8&\"\nimport script from \"./TooltipIconButton.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./TooltipIconButton.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { PluginObject, VueConstructor } from 'vue';\nimport { VueLocalizedFormatterOptions } from './options';\nimport VueLocalizedFormatter from './localized';\n\ndeclare global {\n interface Window {\n Vue: VueConstructor;\n }\n}\n\nconst version = '1.0.0';\n\nconst plugin: PluginObject = {\n install: (Vue, options: VueLocalizedFormatterOptions | undefined): void => {\n if (plugin.installed) {\n return;\n }\n plugin.installed = true;\n\n const localized = VueLocalizedFormatter;\n\n // eslint-disable-next-line no-param-reassign\n Vue.prototype.$localized = localized;\n\n Object.defineProperties(Vue.prototype, {\n $localized: {\n get() {\n return localized;\n },\n },\n });\n },\n version,\n};\n\nexport default plugin;\n","import { PluginObject, VueConstructor } from 'vue';\nimport ActivityIndicatorPlugin from './activity-indicator';\n\ninterface IActivityIndicatorPluginOptions {}\n\ndeclare global {\n interface Window {\n Vue: VueConstructor;\n }\n}\n\nconst version = '1.0.0';\n\nconst plugin: PluginObject = {\n install: (Vue): void => {\n if (plugin.installed) {\n return;\n }\n plugin.installed = true;\n\n let activity = ActivityIndicatorPlugin;\n\n // eslint-disable-next-line no-param-reassign\n Vue.prototype.$activity = activity;\n\n Object.defineProperties(Vue.prototype, {\n $activity: {\n get() {\n return activity;\n },\n set(a: typeof ActivityIndicatorPlugin) {\n activity = a;\n },\n },\n });\n },\n version,\n};\n\nexport default plugin;\n","import { PluginObject, VueConstructor } from 'vue';\nimport ToastPlugin from './toast';\n\ninterface IToastPluginOptions {}\n\ndeclare global {\n interface Window {\n Vue: VueConstructor;\n }\n}\n\nconst version = '1.0.0';\n\nconst plugin: PluginObject = {\n install: (Vue): void => {\n if (plugin.installed) {\n return;\n }\n plugin.installed = true;\n\n let toast = ToastPlugin;\n\n // eslint-disable-next-line no-param-reassign\n Vue.prototype.$toast = toast;\n\n Object.defineProperties(Vue.prototype, {\n $toast: {\n get() {\n return toast;\n },\n set(t: typeof ToastPlugin) {\n toast = t;\n },\n },\n });\n },\n version,\n};\n\nexport default plugin;\n","/* eslint-disable no-console */\nimport { register } from 'register-service-worker';\n\nif (process.env.NODE_ENV === 'production') {\n if (!window.matchMedia('(display-mode: standalone)').matches || process.env.VUE_APP_BRAND !== 'guestplan') {\n console.log('[sw] Not running in PWA or not Guestplan brand context, exiting');\n } else {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log(\n '[sw] App is being served from cache by a service worker.',\n );\n },\n registered(r: ServiceWorkerRegistration) {\n console.log('[sw] Service worker has been registered.');\n },\n cached() {\n console.log('[sw] Content has been cached for offline use.');\n },\n updatefound() {\n console.log('[sw] New content is downloading.');\n },\n updated(r: ServiceWorkerRegistration) {\n console.log('[sw] New content is available; please refresh.');\n document.dispatchEvent(\n new CustomEvent('swUpdated', { detail: r }),\n );\n },\n offline() {\n console.log('[sw] No internet connection found. App is running in offline mode.');\n },\n error(error) {\n console.error('[sw] Error during service worker registration:', error);\n },\n });\n }\n}\n","import Vue from 'vue';\nimport {\n ValidationProvider, ValidationObserver,\n} from 'vee-validate';\n\nimport VueFileAgent from 'vue-file-agent';\nimport setupValidation from '@/plugins/validation';\n\nimport ReorderTable from '@/plugins/reorder-table';\nimport App from '@/App.vue';\nimport router from '@/router';\nimport store from '@/store/store';\nimport vuetify from '@/plugins/vuetify';\n\nimport MainView from '@/components/views/MainView.vue';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport ReservationView from '@/components/views/reservation/Reservation.vue';\nimport CalendarView from '@/components/views/calendar/Calendar.vue';\nimport TimePickerField from '@/components/pickers/TimePickerField.vue';\nimport DatePickerField from '@/components/pickers/DatePickerField.vue';\nimport ColorPickerField from '@/components/pickers/ColorPickerField.vue';\nimport MenuItem from '@/components/util/MenuItem.vue';\nimport ModalDialog from '@/components/dialogs/ModalDialog.vue';\nimport SectionHeader from '@/components/forms/SectionHeader.vue';\nimport RowFormDivider from '@/components/layouts/RowFormDivider.vue';\nimport ValidatedTextField from '@/components/forms/ValidatedTextField.vue';\nimport FilledButton from '@/components/buttons/FilledButton.vue';\nimport ToolbarContainer from '@/components/layouts/ToolbarContainer.vue';\nimport TooltipIconButton from '@/components/buttons/TooltipIconButton.vue';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\n\nimport '@/services/autodarkmode';\n\nimport 'vue-file-agent/dist/vue-file-agent.css';\n\nimport i18n from '@/plugins/i18n';\nimport VueLocalizedFormatterPlugin from '@/plugins/vue-localized-formatter/src/plugin';\nimport ActivityIndicatorPlugin from '@/plugins/activity-indicator-plugin/plugin';\nimport ToastPlugin from '@/plugins/toast-plugin/plugin';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\n\nimport './registerServiceWorker';\n\nVue.config.productionTip = false;\nVue.component('MainView', MainView);\nVue.component('ReservationView', ReservationView);\nVue.component('CalendarView', CalendarView);\nVue.component('ValidationProvider', ValidationProvider);\nVue.component('ValidationObserver', ValidationObserver);\nVue.component('TimePickerField', TimePickerField);\nVue.component('DatePickerField', DatePickerField);\nVue.component('ColorPickerField', ColorPickerField);\nVue.component('MenuItem', MenuItem);\nVue.component('ModalDialog', ModalDialog);\nVue.component('SectionHeader', SectionHeader);\nVue.component('ConfirmationDialog', ConfirmationDialog);\nVue.component('RowFormDivider', RowFormDivider);\nVue.component('ValidatedTextField', ValidatedTextField);\nVue.component('FilledButton', FilledButton);\nVue.component('ToolbarContainer', ToolbarContainer);\nVue.component('TooltipIconButton', TooltipIconButton);\nVue.component('SettingsForm', SettingsForm);\nVue.component('SettingsGroup', SettingsGroup);\n\nVue.use(VueFileAgent);\n\nVue.directive('reorder-table', ReorderTable);\n\nVue.use(VueLocalizedFormatterPlugin);\nVue.use(ToastPlugin);\nVue.use(ActivityIndicatorPlugin);\n\nObject.defineProperty(Vue.prototype, '$tstore', {\n get() { return this.$store; },\n});\n\nsetupValidation(i18n, localized);\n\nnew Vue({\n components: {\n ValidationProvider,\n },\n router,\n store,\n vuetify,\n i18n,\n render: (h) => h(App),\n}).$mount('#app');\n","import { defineComponent, PropType } from 'vue';\n\nexport default defineComponent({\n props: {\n visible: { type: Boolean as PropType, required: true },\n },\n data() {\n return {\n dialog: this.visible,\n };\n },\n watch: {\n visible() {\n this.dialog = this.visible;\n },\n dialog() {\n if (this.dialog === false) { this.$emit('close'); }\n },\n },\n mounted() {\n this.dialog = this.visible;\n },\n});\n","import { defineComponent } from 'vue';\nimport i18n from '@/plugins/i18n';\nimport { useRouter } from 'vue-router/composables';\nimport { TranslateResult } from 'vue-i18n';\n\nexport function useSettingsBreadcrumbs(currentPageTitle: string | TranslateResult | undefined = undefined) {\n const router = useRouter();\n\n const breadcrumbs = [];\n const pieces = router.currentRoute.path.split('/');\n\n let resolved = '';\n pieces.forEach((part, i) => {\n if (i === pieces.length - 1) { return; }\n if (part === '') { return; }\n resolved = `${resolved}/${part}`;\n const r = router.resolve(resolved);\n\n breadcrumbs.push({\n text: i18n.t(r.route.meta?.titleKey) || '',\n exact: true,\n to: { name: r.route.name },\n });\n });\n\n breadcrumbs.push({\n text: currentPageTitle || i18n.t(router.currentRoute.meta?.titleKey) || '',\n disabled: true,\n });\n\n return breadcrumbs;\n}\n\nexport default defineComponent({\n props: { },\n data() {\n return {\n breadcrumbs: [] as any[],\n };\n },\n created() {\n this.breadcrumbs = useSettingsBreadcrumbs();\n },\n});\n","import { defineComponent } from 'vue';\n\nexport default defineComponent({\n beforeRouteLeave(to, from, next) {\n if (this.isChanged) {\n // eslint-disable-next-line no-alert\n if (!window.confirm(this.$i18n.tc('message.confirm_leave_without_saving'))) {\n return;\n }\n }\n next();\n },\n computed: {\n isChanged() {\n return false;\n },\n },\n beforeMount() {\n window.addEventListener('beforeunload', this.preventNav, false);\n this.$once('hook:beforeDestroy', () => {\n window.removeEventListener('beforeunload', this.preventNav, false);\n });\n },\n mounted() {},\n methods: {\n preventNav(event: Event) {\n if (this.isChanged) {\n event.preventDefault();\n // eslint-disable-next-line no-param-reassign\n event.returnValue = false;\n }\n },\n },\n});\n","/* eslint-disable no-use-before-define */\nimport { IAccount } from '@/api/api-update';\nimport { dateFromUTCDateTimeSecondsString } from '@/services/time-utils';\nimport { boolFromValue, numberFromValue } from '@/api/api-utils';\n\nexport interface IDTOAccount extends IAccount {\n isDeleted?: string | boolean, // dummy field to satisfy IApi\n}\n\nexport enum BillingInfoSubscriptionStatus {\n None = 'none',\n VIP = 'vip',\n TrialActive = 'trialActive',\n SubActive = 'subActive',\n TrialWillExpire = 'trialWillExpire',\n TrialExpired = 'trialExpired',\n SubWillExpire = 'subWillExpire',\n SubWillExpirePayment = 'subWillExpirePayment',\n SubExpired = 'subExpired',\n SubExpiredPayment = 'subExpiredPayment',\n}\n\nexport enum BillingInfoSMSStatus {\n None = 'none',\n VIP = 'vip',\n Active = 'active',\n LowBalance = 'lowBalance',\n ZeroBalance = 'zeroBalance',\n PaymentError = 'paymentError',\n}\n\nexport interface BillingInfo {\n subStatus: BillingInfoSubscriptionStatus;\n data?: string;\n trialExpDate?: Date;\n subExpDate?: Date;\n smsStatus: BillingInfoSMSStatus;\n smsBalance: number;\n}\n\nexport default class Account {\n id: number;\n\n accountName?: string;\n\n streetAddress?: string;\n\n postalCode?: string;\n\n city?: string;\n\n countryState?: string;\n\n // countryName?: string;\n\n countryCode?: string;\n\n phone?: string;\n\n email?: string;\n\n website?: string;\n\n facebook?: string;\n\n instagram?: string;\n\n yelp?: string;\n\n x?: string;\n\n youtube?: string;\n\n tripadvisor?: string;\n\n tiktok?: string;\n\n locale?: string;\n\n timeZoneId?: number;\n\n // firstDayOfWeek?: number;\n\n // is12HourClock?: boolean;\n\n // timeZone?: string;\n\n employeeNameIsNeeded?: boolean;\n\n userId?: number;\n\n username?: string;\n\n isRegistered?: boolean;\n\n isPremium?: boolean;\n\n subscriptionExpirationDate?: Date;\n\n upgradeIsNeeded?: boolean;\n\n color?: string;\n\n widgetDocumentationURL?: string;\n\n defaultAccessKey?: string;\n\n logoLink: string;\n\n serviceManagerAccessKey?: string;\n\n proSubscriptionExpirationDate?: Date;\n\n proTrialExpirationDate?: Date;\n\n proStatus?: BillingInfoSubscriptionStatus;\n\n smsStatus?: BillingInfoSMSStatus;\n\n smsBalance?: number;\n\n proData?: string;\n\n features?: string[];\n\n apps?: string[];\n\n stripeDepositFee?: number;\n\n constructor(o?: IAccount) {\n this.id = o?.accountId ?? 0;\n this.accountName = o?.accountName;\n this.streetAddress = o?.streetAddress;\n this.postalCode = o?.postalCode;\n this.city = o?.city;\n this.countryState = o?.countryState;\n // this.countryName = o?.country;\n this.countryCode = o?.countryCode;\n this.phone = o?.phone;\n this.email = o?.email;\n this.website = o?.website;\n this.facebook = o?.facebook;\n this.instagram = o?.instagram;\n this.yelp = o?.yelp;\n this.x = o?.x;\n this.youtube = o?.youtube;\n this.tripadvisor = o?.tripadvisor;\n this.tiktok = o?.tiktok;\n this.locale = o?.locale;\n this.timeZoneId = numberFromValue(o?.timeZoneId);\n // this.timeZone = o?.timeZone;\n // this.firstDayOfWeek = o?.firstDayOfWeek;\n // this.is12HourClock = boolFromValue(o?.is12HourClock);\n this.employeeNameIsNeeded = boolFromValue(o?.employeeNameIsNeeded);\n this.userId = numberFromValue(o?.userId, 0);\n this.username = o?.username ?? '';\n this.isRegistered = boolFromValue(o?.isRegistered);\n this.isPremium = boolFromValue(o?.isPremium);\n this.upgradeIsNeeded = boolFromValue(o?.upgradeIsNeeded);\n this.color = o?.color?.toUpperCase() ?? '#3355FF';\n\n this.widgetDocumentationURL = o?.widgetDocumentationURL;\n this.defaultAccessKey = o?.defaultAccessKey;\n this.serviceManagerAccessKey = o?.serviceManagerAccessKey;\n this.logoLink = o?.logoLink ?? ''; // empty string - no image\n\n this.proSubscriptionExpirationDate = dateFromUTCDateTimeSecondsString(\n o?.bProSubscriptionExpirationDate,\n ) ?? undefined;\n this.proTrialExpirationDate = dateFromUTCDateTimeSecondsString(o?.bProTrialExpirationDate) ?? undefined;\n this.proStatus = o?.bSubscriptionInfo as BillingInfoSubscriptionStatus;\n this.smsStatus = BillingInfoSMSStatus.None as BillingInfoSMSStatus; // TODO: finish api\n this.smsBalance = 10; // TODO: finish api\n\n this.features = o?.features ?? [];\n this.apps = o?.apps ?? [];\n this.stripeDepositFee = o?.stripeDepositFee;\n }\n\n toDto(): IDTOAccount {\n const dto: IDTOAccount = {\n ...this,\n accountId: this.id,\n id: undefined,\n subscriptionExpirationDate: undefined,\n proSubscriptionExpirationDate: undefined,\n proTrialExpirationDate: undefined,\n proStatus: undefined,\n proData: undefined,\n smsStatus: undefined,\n };\n return dto;\n }\n\n static fromData(data: Pick): Account {\n const copy = new Account();\n Object.assign(copy, data);\n\n copy.subscriptionExpirationDate = fixDate(copy.subscriptionExpirationDate);\n copy.proSubscriptionExpirationDate = fixDate(copy.proSubscriptionExpirationDate);\n copy.proTrialExpirationDate = fixDate(copy.proTrialExpirationDate);\n\n return copy;\n }\n}\n\nfunction fixDate(date: Date | string | undefined): Date | undefined {\n if (typeof date === 'string') return new Date(date);\n return date;\n}\n","/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\nimport { IAccountSetting } from '@/api/api-update';\nimport { boolFromValue, numberFromValue } from '@/api/api-utils';\n\nconst DefaultSplitLunchDinnerTime = '14:00';\nconst DefaultSendThankYouAtSpecificTime = '12:00';\nconst DefaultSendReminderAtSpecificTime = '12:00';\nconst DefaultDefaultMaxPartySize = 10;\nconst DefaultDefaultMinPartySize = 1;\nconst DefaultMinMinutesInAdvance = 1;\nconst DefaultMinMinutesToModify = 60;\nconst DefaultMaxTimeForToday = '23:45';\nconst DefaultMaxDaysInAdvance = 90;\nconst DefaultAllocateWithEmptySeats = 3;\nconst DefaultMaxGuestsPerTime = 0;\nconst DefaultMaxReservationsPerTime = 0;\n\nexport interface IDTOAccountSetting extends IAccountSetting {\n isDeleted?: string | boolean, // dummy field to satisfy IApi\n}\n\nexport default class AccountSetting {\n id: number;\n\n allocateWithEmptySeats?: number;\n\n autoDarkMode?: boolean;\n\n autoDarkModeEnd?: string;\n\n autoDarkModeStart?: string;\n\n defaultMaxPartySize?: number;\n\n defaultMinPartySize?: number;\n\n employeeNameIsNeeded?: boolean;\n\n markAlwaysAsRead?: boolean;\n\n markCancelledAsRead?: boolean;\n\n maxDaysInAdvance?: number;\n\n defaultMaxGuestsPerTime?: number;\n\n defaultMaxReservationsPerTime?: number;\n\n maxTimeForToday?: string;\n\n minMinutesInAdvance?: number;\n\n minMinutesToModify?: number;\n\n sendReminderAtSpecificTime: string;\n\n sendReminderDaysInAdvance?: number;\n\n sendThankYouAtSpecificTime: string;\n\n sendThankYouDaysAfter?: number;\n\n showLunchDinner?: boolean;\n\n splitLunchDinnerTime: string;\n\n tableAllocation?: boolean;\n\n reserveWithGoogle?: boolean;\n\n useSetupBranding?: boolean;\n\n useSetupHours?: boolean;\n\n useSetupTables?: boolean;\n\n useSetupContact?: boolean;\n\n useSetupWelcome?: boolean;\n\n enableFeedback?: boolean;\n\n widgetUseFeedbackBreakdown?: boolean;\n\n enableWaitlist?: boolean;\n\n enableReconfirmation?: boolean;\n\n get order(): number { return this.id; } // dummy field to satisfy IListModel\n\n constructor(o?: IAccountSetting) {\n this.id = o?.accountSettingsId ?? 0;\n this.allocateWithEmptySeats = numberFromValue(o?.allocateWithEmptySeats) ?? DefaultAllocateWithEmptySeats;\n this.autoDarkMode = boolFromValue(o?.autoDarkMode);\n this.autoDarkModeEnd = o?.autoDarkModeEnd;\n this.autoDarkModeStart = o?.autoDarkModeStart;\n this.defaultMaxPartySize = numberFromValue(o?.defaultMaxPartySize) ?? DefaultDefaultMaxPartySize;\n this.defaultMinPartySize = numberFromValue(o?.defaultMinPartySize) ?? DefaultDefaultMinPartySize;\n this.employeeNameIsNeeded = boolFromValue(o?.employeeNameIsNeeded);\n this.markAlwaysAsRead = boolFromValue(o?.markAlwaysAsRead);\n this.markCancelledAsRead = boolFromValue(o?.markCancelledAsRead);\n this.maxDaysInAdvance = numberFromValue(o?.maxDaysInAdvance) ?? DefaultMaxDaysInAdvance;\n this.defaultMaxGuestsPerTime = numberFromValue(o?.defaultMaxGuestsPerTime) ?? DefaultMaxGuestsPerTime;\n this.defaultMaxReservationsPerTime = numberFromValue(o?.defaultMaxReservationsPerTime) ?? DefaultMaxReservationsPerTime;\n this.maxTimeForToday = o?.maxTimeForToday ?? DefaultMaxTimeForToday;\n this.minMinutesInAdvance = numberFromValue(o?.minMinutesInAdvance) ?? DefaultMinMinutesInAdvance;\n this.minMinutesToModify = numberFromValue(o?.minMinutesToModify) ?? DefaultMinMinutesToModify;\n this.sendReminderAtSpecificTime = o?.sendReminderAtSpecificTime ?? DefaultSendReminderAtSpecificTime;\n this.sendReminderDaysInAdvance = numberFromValue(o?.sendReminderDaysInAdvance);\n this.sendThankYouAtSpecificTime = o?.sendThankYouAtSpecificTime ?? DefaultSendThankYouAtSpecificTime;\n this.sendThankYouDaysAfter = numberFromValue(o?.sendThankYouDaysAfter);\n this.showLunchDinner = boolFromValue(o?.showLunchDinner);\n this.splitLunchDinnerTime = o?.splitLunchDinnerTime ?? DefaultSplitLunchDinnerTime;\n this.tableAllocation = boolFromValue(o?.tableAllocation);\n this.reserveWithGoogle = boolFromValue(o?.reserveWithGoogle);\n\n this.useSetupBranding = boolFromValue(o?.useSetupBranding);\n this.useSetupHours = boolFromValue(o?.useSetupHours);\n this.useSetupTables = boolFromValue(o?.useSetupTables);\n this.useSetupContact = boolFromValue(o?.useSetupContact);\n this.useSetupWelcome = boolFromValue(o?.useSetupWelcome);\n\n this.enableFeedback = boolFromValue(o?.enableFeedback);\n this.widgetUseFeedbackBreakdown = boolFromValue(o?.widgetUseFeedbackBreakdown);\n\n this.enableWaitlist = boolFromValue(o?.enableWaitlist);\n this.enableReconfirmation = boolFromValue(o?.enableReconfirmation);\n }\n\n toDto(): IDTOAccountSetting {\n const dto: IDTOAccountSetting = {\n ...this,\n accountSettingsId: this.id,\n id: undefined,\n };\n return dto;\n }\n\n static fromData(data: Pick): AccountSetting {\n const copy = new AccountSetting();\n Object.assign(copy, data);\n return copy;\n }\n}\n","import { IDTOAllocation } from '@/api/api-allocations';\nimport Tab from './Tab';\nimport TabItem from './TabItem';\n\nexport interface IDTOSendAllocation {\n allocationId: number;\n allocationOrder: number;\n allocatedTabItems: string;\n isForbidden: boolean;\n}\n\nexport interface AllocationMapping {\n tabsById: Map;\n tabItemsById: Map;\n}\n\nexport default class Allocation {\n id: number;\n\n tab: Tab;\n\n partySize: number = 0;\n\n order: number = 0;\n\n tabItems: TabItem[] = [];\n\n isForbidden: boolean;\n\n constructor(o?: IDTOAllocation, m?: AllocationMapping) {\n this.id = o?.allocationId ?? 0;\n this.partySize = o?.partySize ?? 0;\n this.order = o?.allocationOrder ?? 0;\n this.isForbidden = o?.isForbidden ?? false;\n this.tab = m?.tabsById?.get(o?.tabId ?? NaN) ?? new Tab();\n\n const allocatedTabItems = o?.allocatedTabItems ?? [];\n this.tabItems = allocatedTabItems.flatMap((ti) => m?.tabItemsById?.get(ti) ?? []);\n this.tabItems.sort((o1, o2) => o1.order - o2.order);\n }\n\n toDto(): IDTOSendAllocation {\n const dto: IDTOSendAllocation = {\n allocationId: this.id > 0 ? this.id : 0,\n allocationOrder: this.order,\n allocatedTabItems: this.tableIdsString,\n isForbidden: this.isForbidden,\n };\n return dto;\n }\n\n clone(): Allocation {\n const copy = new Allocation();\n Object.assign(copy, this);\n copy.tabItems = Array.from(this.tabItems);\n return copy;\n }\n\n get seats(): number {\n return this.tabItems.map((o) => o.seats).reduce((a, b) => a + b, 0);\n }\n\n get isError(): boolean {\n return this.seats === 0 || this.seats < this.partySize;\n }\n\n get tableNos(): string[] {\n return this.tabItems.map((o) => o.no);\n }\n\n get tableIdsString(): string {\n return this.tabItems.map((o) => o.id).join(',');\n }\n}\n","import { IApp } from '@/api/api-update';\nimport { boolFromValue } from '@/api/api-utils';\n\nexport interface IDTOApp extends IApp {\n isDeleted?: string | boolean;\n}\n\nexport default class AppStoreApp {\n id: number;\n\n name: string;\n\n showAsMenuItem: boolean;\n\n isInstalled: boolean;\n\n constructor(o?: IApp) {\n this.id = o?.appId ?? 0;\n this.name = o?.appName ?? '';\n this.showAsMenuItem = boolFromValue(o?.showAsMenuItem) ?? false;\n this.isInstalled = boolFromValue(o?.isInstalled) ?? false;\n }\n\n toDto(): IDTOApp {\n const dto: IDTOApp = {\n appId: this.id,\n isInstalled: this.isInstalled,\n };\n return dto;\n }\n}\n","import { IAttachment } from '@/api/api-update';\n\nexport interface IDTOAttachment extends IAttachment { }\n\nexport default class Attachment {\n name: string;\n\n url: string;\n\n constructor(o?: IAttachment) {\n this.name = o?.attachmentName ?? 'N/A';\n this.url = o?.attachmentUrl ?? 'N/A';\n }\n\n toDto(): IDTOAttachment {\n const dto: IDTOAttachment = {\n attachmentName: this.name,\n attachmentUrl: this.url,\n };\n return dto;\n }\n}\n","interface IDTOCampaign {\n campaignId: number;\n description?: string;\n}\n\nexport default class Campaign {\n id: number;\n\n description: string;\n\n constructor(o: IDTOCampaign) {\n this.id = o.campaignId;\n this.description = o.description ?? '';\n }\n\n get value() { return this.id; }\n\n get text() { return this.description; }\n}\n","import { IDTOCampaignFilter } from '@/api/api-campaign-filter';\nimport { strcmp } from '@/services/common';\nimport { dateFromDateTimeString, dateTimeStringFromDate } from '@/services/time-utils';\nimport Campaign from './Campaign';\n\nexport interface CampaignFilterMapping {\n campaignsById: Map;\n}\n\nexport default class CampaignFilter {\n id: number;\n\n campaign?: Campaign | null;\n\n dateFrom: Date;\n\n dateTo: Date;\n\n get order(): number { return this.dateFrom.getTime(); }\n\n get stringOrder(): string { return dateTimeStringFromDate(this.dateFrom)! + dateTimeStringFromDate(this.dateTo)!; }\n\n constructor(o?: IDTOCampaignFilter, m?: CampaignFilterMapping) {\n this.id = o?.filterId ?? 0;\n this.dateFrom = dateFromDateTimeString(o?.dtFrom) ?? new Date();\n this.dateTo = dateFromDateTimeString(o?.dtTo) ?? new Date();\n\n this.campaign = m?.campaignsById.get(o?.campaignId ?? NaN) ?? null;\n }\n\n toDto(): IDTOCampaignFilter {\n const dto: IDTOCampaignFilter = {\n filterId: this.id,\n campaignId: this.campaign?.id,\n dtFrom: Number(dateTimeStringFromDate(this.dateFrom)) ?? undefined,\n dtTo: Number(dateTimeStringFromDate(this.dateTo)) ?? undefined,\n };\n return dto;\n }\n}\n\nexport function compareCampaignFilter(o1: CampaignFilter, o2:CampaignFilter): number {\n let res = o1.dateFrom.getTime() - o2.dateFrom.getTime();\n if (res !== 0) return res;\n res = o1.dateTo.getTime() - o2.dateTo.getTime();\n return res;\n}\n","import { boolFromValue } from '@/api/api-utils';\nimport { IContact } from '@/api/api-update';\nimport { dateFromDateString } from '@/services/time-utils';\nimport Country from './Country';\n\nexport enum ContactTitle {\n Mr = 'MR',\n Ms = 'MS',\n Fam = 'FAM',\n}\n\nexport interface ContactMapping {\n countryByCode: Map;\n}\n\nexport default class Contact {\n id: number;\n\n name: string | null;\n\n phone: string | null;\n\n email?: string;\n\n address?: string;\n\n postalCode?: string;\n\n city?: string;\n\n state?: string;\n\n country?: Country;\n\n companyName?: string;\n\n reservationCount?: number;\n\n isVIP?: boolean;\n\n preferredLanguage?: string;\n\n dateOfBirth?: Date;\n\n newsletterSubscription?: boolean;\n\n notes?: string;\n\n title?: string;\n\n constructor(o?: IContact, m?: ContactMapping) {\n this.id = o?.contactId ?? 0;\n this.name = o?.name ?? '';\n this.phone = o?.phone ?? '';\n this.email = o?.email;\n this.address = o?.address;\n this.postalCode = o?.postalCode ?? '';\n this.city = o?.city;\n this.state = o?.state;\n this.companyName = o?.companyName;\n this.reservationCount = o?.reservationCount;\n this.isVIP = boolFromValue(o?.isVIP);\n this.preferredLanguage = o?.preferredLanguage;\n this.dateOfBirth = dateFromDateString(o?.dateOfBirth) ?? undefined;\n this.newsletterSubscription = boolFromValue(o?.newsletterSubscription);\n this.notes = o?.contactNotes;\n this.title = o?.title as ContactTitle;\n\n this.country = m?.countryByCode.get(o?.country ?? '');\n }\n\n refresh(m?: ContactMapping) {\n this.country = m?.countryByCode.get(this.country?.code ?? '');\n }\n}\n","interface ICountry {\n code: string;\n\n name: string;\n}\nexport default class Country {\n code: string;\n\n name: string;\n\n get value() { return this.code; }\n\n get text() { return this.name; }\n\n constructor(o: ICountry) {\n this.code = o.code ?? '';\n this.name = o.name ?? '';\n }\n}\n\nexport const countries: Country[] = [\n { code: 'AF', name: 'Afghanistan' },\n { code: 'AX', name: 'Åland Islands' },\n { code: 'AL', name: 'Albania' },\n { code: 'DZ', name: 'Algeria' },\n { code: 'AS', name: 'American Samoa' },\n { code: 'AD', name: 'Andorra' },\n { code: 'AO', name: 'Angola' },\n { code: 'AI', name: 'Anguilla' },\n { code: 'AQ', name: 'Antarctica' },\n { code: 'AG', name: 'Antigua and Barbuda' },\n { code: 'AR', name: 'Argentina' },\n { code: 'AM', name: 'Armenia' },\n { code: 'AW', name: 'Aruba' },\n { code: 'AU', name: 'Australia' },\n { code: 'AT', name: 'Austria' },\n { code: 'AZ', name: 'Azerbaijan' },\n { code: 'BS', name: 'Bahamas' },\n { code: 'BH', name: 'Bahrain' },\n { code: 'BD', name: 'Bangladesh' },\n { code: 'BB', name: 'Barbados' },\n { code: 'BY', name: 'Belarus' },\n { code: 'BE', name: 'Belgium' },\n { code: 'BZ', name: 'Belize' },\n { code: 'BJ', name: 'Benin' },\n { code: 'BM', name: 'Bermuda' },\n { code: 'BT', name: 'Bhutan' },\n { code: 'BO', name: 'Bolivia' },\n { code: 'BQ', name: 'Bonaire, Sint Eustatius and Saba' },\n { code: 'BA', name: 'Bosnia and Herzegovina' },\n { code: 'BW', name: 'Botswana' },\n { code: 'BV', name: 'Bouvet Island' },\n { code: 'BR', name: 'Brazil' },\n { code: 'IO', name: 'British Indian Ocean Territory' },\n { code: 'BN', name: 'Brunei Darussalam' },\n { code: 'BG', name: 'Bulgaria' },\n { code: 'BF', name: 'Burkina Faso' },\n { code: 'BI', name: 'Burundi' },\n { code: 'CV', name: 'Cabo Verde' },\n { code: 'KH', name: 'Cambodia' },\n { code: 'CM', name: 'Cameroon' },\n { code: 'CA', name: 'Canada' },\n { code: 'KY', name: 'Cayman Islands' },\n { code: 'CF', name: 'Central African Republic' },\n { code: 'TD', name: 'Chad' },\n { code: 'CL', name: 'Chile' },\n { code: 'CN', name: 'China' },\n { code: 'CX', name: 'Christmas Island' },\n { code: 'CC', name: 'Cocos (Keeling) Islands' },\n { code: 'CO', name: 'Colombia' },\n { code: 'KM', name: 'Comoros' },\n { code: 'CG', name: 'Congo' },\n { code: 'CD', name: 'Congo, The Democratic Republic of the' },\n { code: 'CK', name: 'Cook Islands' },\n { code: 'CR', name: 'Costa Rica' },\n { code: 'CI', name: \"Cote D'Ivoire\" },\n { code: 'HR', name: 'Croatia' },\n { code: 'CU', name: 'Cuba' },\n { code: 'CW', name: 'Curaçao' },\n { code: 'CY', name: 'Cyprus' },\n { code: 'CZ', name: 'Czechia' },\n { code: 'DK', name: 'Denmark' },\n { code: 'DJ', name: 'Djibouti' },\n { code: 'DM', name: 'Dominica' },\n { code: 'DO', name: 'Dominican Republic' },\n { code: 'EC', name: 'Ecuador' },\n { code: 'EG', name: 'Egypt' },\n { code: 'SV', name: 'El Salvador' },\n { code: 'GQ', name: 'Equatorial Guinea' },\n { code: 'ER', name: 'Eritrea' },\n { code: 'EE', name: 'Estonia' },\n { code: 'SZ', name: 'Eswatini' },\n { code: 'ET', name: 'Ethiopia' },\n { code: 'FK', name: 'Falkland Islands (Malvinas)' },\n { code: 'FO', name: 'Faroe Islands' },\n { code: 'FJ', name: 'Fiji' },\n { code: 'FI', name: 'Finland' },\n { code: 'FR', name: 'France' },\n { code: 'GF', name: 'French Guiana' },\n { code: 'PF', name: 'French Polynesia' },\n { code: 'TF', name: 'French Southern Territories' },\n { code: 'GA', name: 'Gabon' },\n { code: 'GM', name: 'Gambia' },\n { code: 'GE', name: 'Georgia' },\n { code: 'DE', name: 'Germany' },\n { code: 'GH', name: 'Ghana' },\n { code: 'GI', name: 'Gibraltar' },\n { code: 'GR', name: 'Greece' },\n { code: 'GL', name: 'Greenland' },\n { code: 'GD', name: 'Grenada' },\n { code: 'GP', name: 'Guadeloupe' },\n { code: 'GU', name: 'Guam' },\n { code: 'GT', name: 'Guatemala' },\n { code: 'GG', name: 'Guernsey' },\n { code: 'GN', name: 'Guinea' },\n { code: 'GW', name: 'Guinea-Bissau' },\n { code: 'GY', name: 'Guyana' },\n { code: 'HT', name: 'Haiti' },\n { code: 'HM', name: 'Heard Island and Mcdonald Islands' },\n { code: 'VA', name: 'Holy See (Vatican City State)' },\n { code: 'HN', name: 'Honduras' },\n { code: 'HK', name: 'Hong Kong' },\n { code: 'HU', name: 'Hungary' },\n { code: 'IS', name: 'Iceland' },\n { code: 'IN', name: 'India' },\n { code: 'ID', name: 'Indonesia' },\n { code: 'IR', name: 'Iran, Islamic Republic Of' },\n { code: 'IQ', name: 'Iraq' },\n { code: 'IE', name: 'Ireland' },\n { code: 'IM', name: 'Isle of Man' },\n { code: 'IL', name: 'Israel' },\n { code: 'IT', name: 'Italy' },\n { code: 'JM', name: 'Jamaica' },\n { code: 'JP', name: 'Japan' },\n { code: 'JE', name: 'Jersey' },\n { code: 'JO', name: 'Jordan' },\n { code: 'KZ', name: 'Kazakhstan' },\n { code: 'KE', name: 'Kenya' },\n { code: 'KI', name: 'Kiribati' },\n { code: 'KP', name: \"Korea, Democratic People's Republic of\" },\n { code: 'KR', name: 'Korea, Republic of' },\n { code: 'KW', name: 'Kuwait' },\n { code: 'KG', name: 'Kyrgyzstan' },\n { code: 'LA', name: \"Lao People's Democratic Republic\" },\n { code: 'LV', name: 'Latvia' },\n { code: 'LB', name: 'Lebanon' },\n { code: 'LS', name: 'Lesotho' },\n { code: 'LR', name: 'Liberia' },\n { code: 'LY', name: 'Libya' },\n { code: 'LI', name: 'Liechtenstein' },\n { code: 'LT', name: 'Lithuania' },\n { code: 'LU', name: 'Luxembourg' },\n { code: 'MO', name: 'Macao' },\n { code: 'MK', name: 'North Macedonia' },\n { code: 'MG', name: 'Madagascar' },\n { code: 'MW', name: 'Malawi' },\n { code: 'MY', name: 'Malaysia' },\n { code: 'MV', name: 'Maldives' },\n { code: 'ML', name: 'Mali' },\n { code: 'MT', name: 'Malta' },\n { code: 'MH', name: 'Marshall Islands' },\n { code: 'MQ', name: 'Martinique' },\n { code: 'MR', name: 'Mauritania' },\n { code: 'MU', name: 'Mauritius' },\n { code: 'YT', name: 'Mayotte' },\n { code: 'MX', name: 'Mexico' },\n { code: 'FM', name: 'Micronesia' },\n { code: 'MD', name: 'Moldova, Republic of' },\n { code: 'MC', name: 'Monaco' },\n { code: 'MN', name: 'Mongolia' },\n { code: 'ME', name: 'Montenegro' },\n { code: 'MS', name: 'Montserrat' },\n { code: 'MA', name: 'Morocco' },\n { code: 'MZ', name: 'Mozambique' },\n { code: 'MM', name: 'Myanmar' },\n { code: 'NA', name: 'Namibia' },\n { code: 'NR', name: 'Nauru' },\n { code: 'NP', name: 'Nepal' },\n { code: 'NL', name: 'Netherlands' },\n { code: 'NC', name: 'New Caledonia' },\n { code: 'NZ', name: 'New Zealand' },\n { code: 'NI', name: 'Nicaragua' },\n { code: 'NE', name: 'Niger' },\n { code: 'NG', name: 'Nigeria' },\n { code: 'NU', name: 'Niue' },\n { code: 'NF', name: 'Norfolk Island' },\n { code: 'MP', name: 'Northern Mariana Islands' },\n { code: 'NO', name: 'Norway' },\n { code: 'OM', name: 'Oman' },\n { code: 'PK', name: 'Pakistan' },\n { code: 'PW', name: 'Palau' },\n { code: 'PS', name: 'Palestine, State of' },\n { code: 'PA', name: 'Panama' },\n { code: 'PG', name: 'Papua New Guinea' },\n { code: 'PY', name: 'Paraguay' },\n { code: 'PE', name: 'Peru' },\n { code: 'PH', name: 'Philippines' },\n { code: 'PN', name: 'Pitcairn' },\n { code: 'PL', name: 'Poland' },\n { code: 'PT', name: 'Portugal' },\n { code: 'PR', name: 'Puerto Rico' },\n { code: 'QA', name: 'Qatar' },\n { code: 'RE', name: 'Réunion' },\n { code: 'RO', name: 'Romania' },\n { code: 'RU', name: 'Russian Federation' },\n { code: 'RW', name: 'Rwanda' },\n { code: 'BL', name: 'Saint Barthélemy' },\n { code: 'SH', name: 'Saint Helena, Ascension and Tristan da Cunha' },\n { code: 'KN', name: 'Saint Kitts and Nevis' },\n { code: 'LC', name: 'Saint Lucia' },\n { code: 'MF', name: 'Saint Martin (French part)' },\n { code: 'PM', name: 'Saint Pierre and Miquelon' },\n { code: 'VC', name: 'Saint Vincent and the Grenadines' },\n { code: 'WS', name: 'Samoa' },\n { code: 'SM', name: 'San Marino' },\n { code: 'ST', name: 'Sao Tome and Principe' },\n { code: 'SA', name: 'Saudi Arabia' },\n { code: 'SN', name: 'Senegal' },\n { code: 'RS', name: 'Serbia' },\n { code: 'SC', name: 'Seychelles' },\n { code: 'SL', name: 'Sierra Leone' },\n { code: 'SG', name: 'Singapore' },\n { code: 'SX', name: 'Sint Maarten (Dutch part)' },\n { code: 'SK', name: 'Slovakia' },\n { code: 'SI', name: 'Slovenia' },\n { code: 'SB', name: 'Solomon Islands' },\n { code: 'SO', name: 'Somalia' },\n { code: 'ZA', name: 'South Africa' },\n { code: 'GS', name: 'South Georgia and the South Sandwich Islands' },\n { code: 'SS', name: 'South Sudan' },\n { code: 'ES', name: 'Spain' },\n { code: 'LK', name: 'Sri Lanka' },\n { code: 'SD', name: 'Sudan' },\n { code: 'SR', name: 'Suriname' },\n { code: 'SJ', name: 'Svalbard and Jan Mayen' },\n { code: 'SE', name: 'Sweden' },\n { code: 'CH', name: 'Switzerland' },\n { code: 'SY', name: 'Syrian Arab Republic' },\n { code: 'TW', name: 'Taiwan' },\n { code: 'TJ', name: 'Tajikistan' },\n { code: 'TZ', name: 'Tanzania, United Republic of' },\n { code: 'TH', name: 'Thailand' },\n { code: 'TL', name: 'Timor-Leste' },\n { code: 'TG', name: 'Togo' },\n { code: 'TK', name: 'Tokelau' },\n { code: 'TO', name: 'Tonga' },\n { code: 'TT', name: 'Trinidad and Tobago' },\n { code: 'TN', name: 'Tunisia' },\n { code: 'TR', name: 'Turkey' },\n { code: 'TM', name: 'Turkmenistan' },\n { code: 'TC', name: 'Turks and Caicos Islands' },\n { code: 'TV', name: 'Tuvalu' },\n { code: 'UG', name: 'Uganda' },\n { code: 'UA', name: 'Ukraine' },\n { code: 'AE', name: 'United Arab Emirates' },\n { code: 'GB', name: 'United Kingdom' },\n { code: 'US', name: 'United States of America' },\n { code: 'UM', name: 'United States Minor Outlying Islands' },\n { code: 'UY', name: 'Uruguay' },\n { code: 'UZ', name: 'Uzbekistan' },\n { code: 'VU', name: 'Vanuatu' },\n { code: 'VE', name: 'Venezuela' },\n { code: 'VN', name: 'Viet Nam' },\n { code: 'VG', name: 'Virgin Islands, British' },\n { code: 'VI', name: 'Virgin Islands, U.S.' },\n { code: 'WF', name: 'Wallis and Futuna' },\n { code: 'EH', name: 'Western Sahara' },\n { code: 'YE', name: 'Yemen' },\n { code: 'ZM', name: 'Zambia' },\n { code: 'ZW', name: 'Zimbabwe' },\n].map((o) => new Country(o));\n\nexport const dialCodeByCountry = new Map([\n { dial_code: '+93', code: 'AF' },\n { dial_code: '+358', code: 'AX' },\n { dial_code: '+355', code: 'AL' },\n { dial_code: '+213', code: 'DZ' },\n { dial_code: '+1684', code: 'AS' },\n { dial_code: '+376', code: 'AD' },\n { dial_code: '+244', code: 'AO' },\n { dial_code: '+1264', code: 'AI' },\n { dial_code: '+672', code: 'AQ' },\n { dial_code: '+1268', code: 'AG' },\n { dial_code: '+54', code: 'AR' },\n { dial_code: '+374', code: 'AM' },\n { dial_code: '+297', code: 'AW' },\n { dial_code: '+61', code: 'AU' },\n { dial_code: '+43', code: 'AT' },\n { dial_code: '+994', code: 'AZ' },\n { dial_code: '+1242', code: 'BS' },\n { dial_code: '+973', code: 'BH' },\n { dial_code: '+880', code: 'BD' },\n { dial_code: '+1246', code: 'BB' },\n { dial_code: '+375', code: 'BY' },\n { dial_code: '+32', code: 'BE' },\n { dial_code: '+501', code: 'BZ' },\n { dial_code: '+229', code: 'BJ' },\n { dial_code: '+1441', code: 'BM' },\n { dial_code: '+975', code: 'BT' },\n { dial_code: '+591', code: 'BO' },\n { dial_code: '+387', code: 'BA' },\n { dial_code: '+267', code: 'BW' },\n { dial_code: '+55', code: 'BR' },\n { dial_code: '+246', code: 'IO' },\n { dial_code: '+673', code: 'BN' },\n { dial_code: '+359', code: 'BG' },\n { dial_code: '+226', code: 'BF' },\n { dial_code: '+257', code: 'BI' },\n { dial_code: '+855', code: 'KH' },\n { dial_code: '+237', code: 'CM' },\n { dial_code: '+1', code: 'CA' },\n { dial_code: '+238', code: 'CV' },\n { dial_code: '+ 345', code: 'KY' },\n { dial_code: '+236', code: 'CF' },\n { dial_code: '+235', code: 'TD' },\n { dial_code: '+56', code: 'CL' },\n { dial_code: '+86', code: 'CN' },\n { dial_code: '+61', code: 'CX' },\n { dial_code: '+61', code: 'CC' },\n { dial_code: '+57', code: 'CO' },\n { dial_code: '+269', code: 'KM' },\n { dial_code: '+242', code: 'CG' },\n { dial_code: '+243', code: 'CD' },\n { dial_code: '+682', code: 'CK' },\n { dial_code: '+506', code: 'CR' },\n { dial_code: '+225', code: 'CI' },\n { dial_code: '+385', code: 'HR' },\n { dial_code: '+53', code: 'CU' },\n { dial_code: '+357', code: 'CY' },\n { dial_code: '+420', code: 'CZ' },\n { dial_code: '+45', code: 'DK' },\n { dial_code: '+253', code: 'DJ' },\n { dial_code: '+1767', code: 'DM' },\n { dial_code: '+1849', code: 'DO' },\n { dial_code: '+593', code: 'EC' },\n { dial_code: '+20', code: 'EG' },\n { dial_code: '+503', code: 'SV' },\n { dial_code: '+240', code: 'GQ' },\n { dial_code: '+291', code: 'ER' },\n { dial_code: '+372', code: 'EE' },\n { dial_code: '+251', code: 'ET' },\n { dial_code: '+500', code: 'FK' },\n { dial_code: '+298', code: 'FO' },\n { dial_code: '+679', code: 'FJ' },\n { dial_code: '+358', code: 'FI' },\n { dial_code: '+33', code: 'FR' },\n { dial_code: '+594', code: 'GF' },\n { dial_code: '+689', code: 'PF' },\n { dial_code: '+241', code: 'GA' },\n { dial_code: '+220', code: 'GM' },\n { dial_code: '+995', code: 'GE' },\n { dial_code: '+49', code: 'DE' },\n { dial_code: '+233', code: 'GH' },\n { dial_code: '+350', code: 'GI' },\n { dial_code: '+30', code: 'GR' },\n { dial_code: '+299', code: 'GL' },\n { dial_code: '+1473', code: 'GD' },\n { dial_code: '+590', code: 'GP' },\n { dial_code: '+1671', code: 'GU' },\n { dial_code: '+502', code: 'GT' },\n { dial_code: '+44', code: 'GG' },\n { dial_code: '+224', code: 'GN' },\n { dial_code: '+245', code: 'GW' },\n { dial_code: '+595', code: 'GY' },\n { dial_code: '+509', code: 'HT' },\n { dial_code: '+379', code: 'VA' },\n { dial_code: '+504', code: 'HN' },\n { dial_code: '+852', code: 'HK' },\n { dial_code: '+36', code: 'HU' },\n { dial_code: '+354', code: 'IS' },\n { dial_code: '+91', code: 'IN' },\n { dial_code: '+62', code: 'ID' },\n { dial_code: '+98', code: 'IR' },\n { dial_code: '+964', code: 'IQ' },\n { dial_code: '+353', code: 'IE' },\n { dial_code: '+44', code: 'IM' },\n { dial_code: '+972', code: 'IL' },\n { dial_code: '+39', code: 'IT' },\n { dial_code: '+1876', code: 'JM' },\n { dial_code: '+81', code: 'JP' },\n { dial_code: '+44', code: 'JE' },\n { dial_code: '+962', code: 'JO' },\n { dial_code: '+77', code: 'KZ' },\n { dial_code: '+254', code: 'KE' },\n { dial_code: '+686', code: 'KI' },\n { dial_code: '+850', code: 'KP' },\n { dial_code: '+82', code: 'KR' },\n { dial_code: '+965', code: 'KW' },\n { dial_code: '+996', code: 'KG' },\n { dial_code: '+856', code: 'LA' },\n { dial_code: '+371', code: 'LV' },\n { dial_code: '+961', code: 'LB' },\n { dial_code: '+266', code: 'LS' },\n { dial_code: '+231', code: 'LR' },\n { dial_code: '+218', code: 'LY' },\n { dial_code: '+423', code: 'LI' },\n { dial_code: '+370', code: 'LT' },\n { dial_code: '+352', code: 'LU' },\n { dial_code: '+853', code: 'MO' },\n { dial_code: '+389', code: 'MK' },\n { dial_code: '+261', code: 'MG' },\n { dial_code: '+265', code: 'MW' },\n { dial_code: '+60', code: 'MY' },\n { dial_code: '+960', code: 'MV' },\n { dial_code: '+223', code: 'ML' },\n { dial_code: '+356', code: 'MT' },\n { dial_code: '+692', code: 'MH' },\n { dial_code: '+596', code: 'MQ' },\n { dial_code: '+222', code: 'MR' },\n { dial_code: '+230', code: 'MU' },\n { dial_code: '+262', code: 'YT' },\n { dial_code: '+52', code: 'MX' },\n { dial_code: '+691', code: 'FM' },\n { dial_code: '+373', code: 'MD' },\n { dial_code: '+377', code: 'MC' },\n { dial_code: '+976', code: 'MN' },\n { dial_code: '+382', code: 'ME' },\n { dial_code: '+1664', code: 'MS' },\n { dial_code: '+212', code: 'MA' },\n { dial_code: '+258', code: 'MZ' },\n { dial_code: '+95', code: 'MM' },\n { dial_code: '+264', code: 'NA' },\n { dial_code: '+674', code: 'NR' },\n { dial_code: '+977', code: 'NP' },\n { dial_code: '+31', code: 'NL' },\n { dial_code: '+599', code: 'BQ' },\n { dial_code: '+599', code: 'CW' },\n { dial_code: '+721', code: 'SX' },\n { dial_code: '+687', code: 'NC' },\n { dial_code: '+64', code: 'NZ' },\n { dial_code: '+505', code: 'NI' },\n { dial_code: '+227', code: 'NE' },\n { dial_code: '+234', code: 'NG' },\n { dial_code: '+683', code: 'NU' },\n { dial_code: '+672', code: 'NF' },\n { dial_code: '+1670', code: 'MP' },\n { dial_code: '+47', code: 'NO' },\n { dial_code: '+968', code: 'OM' },\n { dial_code: '+92', code: 'PK' },\n { dial_code: '+680', code: 'PW' },\n { dial_code: '+970', code: 'PS' },\n { dial_code: '+507', code: 'PA' },\n { dial_code: '+675', code: 'PG' },\n { dial_code: '+595', code: 'PY' },\n { dial_code: '+51', code: 'PE' },\n { dial_code: '+63', code: 'PH' },\n { dial_code: '+872', code: 'PN' },\n { dial_code: '+48', code: 'PL' },\n { dial_code: '+351', code: 'PT' },\n { dial_code: '+1939', code: 'PR' },\n { dial_code: '+974', code: 'QA' },\n { dial_code: '+40', code: 'RO' },\n { dial_code: '+7', code: 'RU' },\n { dial_code: '+250', code: 'RW' },\n { dial_code: '+262', code: 'RE' },\n { dial_code: '+590', code: 'BL' },\n { dial_code: '+290', code: 'SH' },\n { dial_code: '+1869', code: 'KN' },\n { dial_code: '+1758', code: 'LC' },\n { dial_code: '+590', code: 'MF' },\n { dial_code: '+508', code: 'PM' },\n { dial_code: '+1784', code: 'VC' },\n { dial_code: '+685', code: 'WS' },\n { dial_code: '+378', code: 'SM' },\n { dial_code: '+239', code: 'ST' },\n { dial_code: '+966', code: 'SA' },\n { dial_code: '+221', code: 'SN' },\n { dial_code: '+381', code: 'RS' },\n { dial_code: '+248', code: 'SC' },\n { dial_code: '+232', code: 'SL' },\n { dial_code: '+65', code: 'SG' },\n { dial_code: '+421', code: 'SK' },\n { dial_code: '+386', code: 'SI' },\n { dial_code: '+677', code: 'SB' },\n { dial_code: '+252', code: 'SO' },\n { dial_code: '+27', code: 'ZA' },\n { dial_code: '+211', code: 'SS' },\n { dial_code: '+500', code: 'GS' },\n { dial_code: '+34', code: 'ES' },\n { dial_code: '+94', code: 'LK' },\n { dial_code: '+249', code: 'SD' },\n { dial_code: '+597', code: 'SR' },\n { dial_code: '+47', code: 'SJ' },\n { dial_code: '+268', code: 'SZ' },\n { dial_code: '+46', code: 'SE' },\n { dial_code: '+41', code: 'CH' },\n { dial_code: '+963', code: 'SY' },\n { dial_code: '+886', code: 'TW' },\n { dial_code: '+992', code: 'TJ' },\n { dial_code: '+255', code: 'TZ' },\n { dial_code: '+66', code: 'TH' },\n { dial_code: '+670', code: 'TL' },\n { dial_code: '+228', code: 'TG' },\n { dial_code: '+690', code: 'TK' },\n { dial_code: '+676', code: 'TO' },\n { dial_code: '+1868', code: 'TT' },\n { dial_code: '+216', code: 'TN' },\n { dial_code: '+90', code: 'TR' },\n { dial_code: '+993', code: 'TM' },\n { dial_code: '+1649', code: 'TC' },\n { dial_code: '+688', code: 'TV' },\n { dial_code: '+256', code: 'UG' },\n { dial_code: '+380', code: 'UA' },\n { dial_code: '+971', code: 'AE' },\n { dial_code: '+44', code: 'GB' },\n { dial_code: '+1', code: 'US' },\n { dial_code: '+598', code: 'UY' },\n { dial_code: '+998', code: 'UZ' },\n { dial_code: '+678', code: 'VU' },\n { dial_code: '+58', code: 'VE' },\n { dial_code: '+84', code: 'VN' },\n { dial_code: '+1284', code: 'VG' },\n { dial_code: '+1340', code: 'VI' },\n { dial_code: '+681', code: 'WF' },\n { dial_code: '+967', code: 'YE' },\n { dial_code: '+260', code: 'ZM' },\n { dial_code: '+263', code: 'ZW' },\n].map((o) => [o.code, o.dial_code]));\n","import { IDateAndTime } from '@/api/api-update';\nimport { boolFromValue } from '@/api/api-utils';\nimport {\n dateIndexFromDate, dateTimeIndexFromDateAndTimeIndex, timeIndexFromSlot, timeStringFromDateTimeIndex,\n} from '@/services/time-utils';\nimport HourSlot from './HourSlot';\n\nexport interface IDTODateAndTime extends IDateAndTime { }\n\nexport default class DateAndTime extends HourSlot {\n id: number;\n\n iIsOpen?: boolean;\n\n isDeleted: boolean;\n\n constructor(o?: IDateAndTime) {\n super(o);\n this.id = Number(o?.dateAndTimeId) ?? 0;\n this.iIsOpen = boolFromValue(o?.isOpen);\n\n // this.dateTimeIndex = this.id;\n\n this.isDeleted = boolFromValue(o?.isDeleted) ?? false;\n }\n\n toDto(): IDTODateAndTime {\n const dto: IDTODateAndTime = {\n dateAndTimeId: this.id,\n isOpen: this.iIsOpen,\n minimumPartySize: this.minimumPartySize,\n maximumPartySize: this.maximumPartySize,\n maximumGuests: this.maximumGuests,\n maximumReservations: this.maximumReservations,\n fixedEndingInMinutes: this.fixedEndingInMinutes,\n };\n return dto;\n }\n\n static fromDateAndSlot(date: Date, slot: number) {\n const dt = new DateAndTime();\n const dateIndex = dateIndexFromDate(date);\n const timeIndex = timeIndexFromSlot(slot);\n dt.id = dateTimeIndexFromDateAndTimeIndex(dateIndex, timeIndex);\n return dt;\n }\n\n get dateTimeIndex(): number { return this.id; }\n\n get dateIndex(): number { return Math.floor(this.id / 10000); }\n\n get time(): string { return timeStringFromDateTimeIndex(this.id); }\n\n get timeIndex(): number { return Math.floor(this.id % 10000); }\n\n get isOpen(): boolean { return this.iIsOpen ?? false; }\n\n set isOpen(value: boolean) { this.iIsOpen = value; }\n}\n","import { IDayNote } from '@/api/api-update';\nimport { dateStringFromDate, dateFromDateString } from '@/services/time-utils';\n\nexport interface IDTODayNote extends IDayNote { }\n\nexport default class DayNote {\n id: number;\n\n date?: Date;\n\n text?: string;\n\n color?: string;\n\n dateIndex: number;\n\n dateTimeIndex: number;\n\n isDeleted: boolean = false; // never deleted, to satisfy IWithDateTimeIndex\n\n dtLastEdit?: number;\n\n dtCreate?: number;\n\n constructor(o?: IDTODayNote) {\n this.id = o?.dayNoteId ?? 0;\n this.date = dateFromDateString(o?.dayNoteDate) ?? undefined;\n this.text = o?.dayNoteText;\n this.color = o?.dayNoteColor;\n this.dtLastEdit = o?.dtLastEdit;\n this.dtCreate = o?.dtCreate;\n\n this.dateIndex = Number(o?.dayNoteDate);\n this.dateTimeIndex = this.dateIndex * 10000;\n }\n\n toDto(): IDTODayNote {\n const dto: IDTODayNote = {\n dayNoteId: this.id,\n dayNoteDate: dateStringFromDate(this.date) ?? undefined,\n dayNoteText: this.text,\n dayNoteColor: this.color,\n };\n return dto;\n }\n\n get order(): number {\n return this.dtCreate ? this.dtCreate : 0;\n }\n}\n","import { IDurationRule } from '@/api/api-update';\nimport { timeNumberFromText } from '@/services/time-utils';\n\nexport interface IDTODurationRule extends IDurationRule {}\n\nexport default class DurationRule {\n id: number;\n\n tabId: number;\n\n partySizeFrom: number = 0;\n\n partySizeTo: number = 0;\n\n timeFrom?: string;\n\n timeTo?: string;\n\n additionalDuration: number = 0;\n\n timeNumberFrom: number;\n\n timeNumberTo: number;\n\n get order(): number { return this.id; }\n\n constructor(o?: IDurationRule) {\n this.id = o?.durationRuleId ?? 0;\n\n this.tabId = o?.tabId ?? 0;\n\n this.partySizeFrom = o?.partySizeFrom ?? 0;\n\n this.partySizeTo = o?.partySizeTo ?? 0;\n\n this.timeFrom = o?.timeFrom;\n\n this.timeTo = o?.timeTo;\n\n this.additionalDuration = o?.additionalDuration ?? 0;\n\n this.timeNumberFrom = timeNumberFromText(o?.timeFrom);\n\n this.timeNumberTo = timeNumberFromText(o?.timeTo);\n }\n\n toDto(): IDTODurationRule {\n const dto: IDTODurationRule = {\n durationRuleId: this.id,\n tabId: this.tabId,\n partySizeFrom: this.partySizeFrom,\n partySizeTo: this.partySizeTo,\n timeFrom: this.timeFrom,\n timeTo: this.timeTo,\n additionalDuration: this.additionalDuration,\n };\n return dto;\n }\n}\n","import { IEmployee } from '@/api/api-update';\n\nexport interface IDTOEmployee extends IEmployee { }\n\nexport default class Employee {\n id: number;\n\n name: string;\n\n order: number;\n\n active: boolean = true; // TODO: not used yet\n\n constructor(o?: IEmployee) {\n this.id = o?.employeeId ?? 0;\n this.name = o?.employeeName ?? '';\n this.order = o?.employeeOrder ?? 0;\n }\n\n toDto(): IDTOEmployee {\n const dto: IDTOEmployee = {\n employeeId: this.id,\n employeeName: this.name,\n employeeOrder: this.order,\n };\n return dto;\n }\n}\n","import { IDateAndTime, IOpeningHour } from '@/api/api-update';\nimport { sprintf } from 'sprintf-js';\n\nexport default class HourSlot {\n minimumPartySize?: number;\n\n maximumPartySize?: number;\n\n maximumGuests?: number;\n\n maximumReservations?: number;\n\n fixedEndingInMinutes?: number;\n\n // eslint-disable-next-line class-methods-use-this\n get isSpecial(): boolean { return false; }\n\n // eslint-disable-next-line class-methods-use-this\n get isOpen(): boolean { return false; }\n\n // eslint-disable-next-line class-methods-use-this\n // get timeIndex(): number { return 0; }\n\n // profile id\n get profileId(): number {\n const text = sprintf(\n '%03d%03d%03d%03d%03d',\n this.minimumPartySize ?? 0,\n this.maximumPartySize ?? 0,\n this.maximumGuests ?? 0,\n this.maximumReservations ?? 0,\n this.fixedEndingInMinutes ?? 0,\n );\n return Number(text);\n }\n\n constructor(o?: IOpeningHour | IDateAndTime) {\n this.minimumPartySize = o?.minimumPartySize;\n this.maximumPartySize = o?.maximumPartySize;\n this.maximumGuests = o?.maximumGuests;\n this.maximumReservations = o?.maximumReservations;\n this.fixedEndingInMinutes = o?.fixedEndingInMinutes;\n }\n\n get isCustom(): boolean {\n return Boolean(\n this.minimumPartySize ?? this.maximumPartySize\n ?? this.maximumGuests ?? this.maximumReservations\n ?? this.fixedEndingInMinutes,\n );\n }\n\n clearParams() {\n delete this.minimumPartySize;\n delete this.maximumPartySize;\n delete this.maximumGuests;\n delete this.maximumReservations;\n delete this.fixedEndingInMinutes;\n }\n\n setParams(p: {\n minimumPartySize?: number, maximumPartySize?: number, maximumGuests?: number, maximumReservations?: number,\n fixedEndingInMinutes?: number\n }) {\n this.minimumPartySize = p.minimumPartySize;\n this.maximumPartySize = p.maximumPartySize;\n this.maximumGuests = p.maximumGuests;\n this.maximumReservations = p.maximumReservations;\n this.fixedEndingInMinutes = p.fixedEndingInMinutes;\n }\n}\n","import { ILabel } from '@/api/api-update';\n\nexport interface IDTOLabel extends ILabel { }\n\nexport default class Label {\n id: number;\n\n text: string;\n\n order: number;\n\n color: string;\n\n get value() { return this.id; }\n\n constructor(o?: ILabel) {\n this.id = o?.labelId ?? 0;\n this.text = o?.labelText ?? '';\n this.order = o?.labelOrder ?? 0;\n this.color = o?.labelColor?.toUpperCase() ?? '#FFC24E';\n }\n\n toDto(): IDTOLabel {\n const dto: IDTOLabel = {\n labelId: this.id,\n labelText: this.text,\n labelOrder: this.order,\n labelColor: this.color,\n };\n return dto;\n }\n}\n","import { IDTOMessageRule } from '@/api/api-messenger';\nimport MessageTemplate from './MessageTemplate';\nimport Campaign from './Campaign';\nimport Tab from './Tab';\nimport Service from './Service';\nimport MessageType from './MessageType';\nimport MessageEventType from './MessageEventType';\nimport { toModelEntities, cloneModel } from './model-utils';\nimport MessageHandlebar from './MessageHandlebar';\n\nexport interface MessageRuleMapping {\n eventTypesById: Map;\n campaignsById: Map ;\n handlebarsById: Map,\n messageTypesById: Map,\n servicesById: Map,\n tabsById: Map,\n}\n\nexport default class MessageRule {\n id: number;\n\n sendBcc: boolean;\n\n isDefault: boolean;\n\n isInactive: boolean;\n\n isDeleted: boolean;\n\n sendAtSpecificTime?: string;\n\n sendDaysInAdvance?: number;\n\n sendDaysAfter?: number;\n\n templates: MessageTemplate[];\n\n campaign?: Campaign | null = null;\n\n service?: Service | null = null;\n\n tab?: Tab | null = null;\n\n eventType?: MessageEventType;\n\n messageType?: MessageType;\n\n isDisabled?: boolean; // cannot be edited, displayed as inactive\n\n constructor(o?: IDTOMessageRule, m?: MessageRuleMapping) {\n this.id = o?.messageRuleId ?? 0;\n this.sendBcc = o?.sendBcc ?? false;\n this.isDefault = o?.isDefault ?? false;\n this.isInactive = o?.isInactive ?? o?.isDeleted ?? false;\n this.isDeleted = o?.isDeleted ?? false;\n this.sendAtSpecificTime = o?.sendAtSpecificTime || '12:00';\n this.sendDaysInAdvance = o?.sendDaysInAdvance;\n this.sendDaysAfter = o?.sendDaysAfter;\n\n this.campaign = m?.campaignsById.get(o?.campaignId ?? NaN) ?? null;\n this.service = m?.servicesById.get(o?.serviceId ?? NaN) ?? null;\n this.eventType = m?.eventTypesById.get(o?.eventTypeId ?? NaN);\n this.messageType = m?.messageTypesById.get(o?.messageTypeId ?? NaN);\n this.tab = m?.tabsById.get(o?.tabId ?? NaN) ?? null;\n\n this.templates = toModelEntities(MessageTemplate, o?.messageTemplates, { stringOrderField: 'locale' });\n }\n\n toDto(): IDTOMessageRule {\n const dto: IDTOMessageRule = {\n messageRuleId: this.id > 0 ? this.id : 0,\n campaignId: this.campaign?.id,\n serviceId: this.service?.id,\n tabId: this.tab?.id,\n eventTypeId: this.eventType?.id,\n messageTypeId: this.messageType?.id,\n sendBcc: this.sendBcc,\n isDefault: this.isDefault,\n isInactive: this.isInactive,\n messageTemplates: this.templates.map((o) => o.toDto()),\n sendAtSpecificTime: this.sendAtSpecificTime,\n sendDaysInAdvance: this.sendDaysInAdvance,\n sendDaysAfter: this.sendDaysAfter,\n isDeleted: this.isDeleted,\n };\n return dto;\n }\n\n clone(): MessageRule {\n const copy = new MessageRule();\n Object.assign(copy, this);\n copy.templates = this.templates.map((o) => cloneModel(o));\n return copy;\n }\n}\n","import { IDTOMessageTemplate } from '@/api/api-messenger';\n\nexport default class MessageTemplate {\n id: number;\n\n messageTypeId?: number;\n\n messageLayoutId?: number;\n\n messageDescription?: string;\n\n locale?: string;\n\n subject?: string;\n\n body?: string;\n\n isDefault: boolean;\n\n isDeleted: boolean;\n\n constructor(o?: IDTOMessageTemplate) {\n this.id = o?.messageTemplateId ?? 0;\n this.messageTypeId = o?.messageTypeId;\n this.messageLayoutId = o?.messageLayoutId;\n this.messageDescription = o?.messageDescription;\n this.locale = o?.locale;\n this.subject = o?.subject;\n this.body = o?.body;\n this.isDefault = o?.isDefault ?? false;\n this.isDeleted = o?.isDeleted ?? false;\n }\n\n toDto(): IDTOMessageTemplate {\n const dto: IDTOMessageTemplate = {\n messageTemplateId: this.id > 0 ? this.id : 0,\n messageTypeId: this.messageTypeId,\n messageLayoutId: this.messageLayoutId,\n messageDescription: this.messageDescription,\n locale: this.locale,\n subject: this.subject,\n body: this.body,\n isDefault: this.isDefault,\n isDeleted: this.isDeleted,\n };\n return dto;\n }\n}\n","import { IDTOMessageType } from '@/api/api-messenger';\nimport i18n from '@/plugins/i18n';\n\nexport enum MessageTypeChannel {\n SMS = 'sms',\n EMAIL = 'email',\n OTHER = 'other',\n}\nexport default class MessageType {\n id: number;\n\n messageType: string;\n\n constructor(o: IDTOMessageType) {\n this.id = o.messageTypeId;\n this.messageType = o.messageType;\n }\n\n get channel(): MessageTypeChannel {\n switch (this.messageType) {\n case 'SendGrid': return MessageTypeChannel.EMAIL;\n case 'MessageBird': return MessageTypeChannel.SMS;\n default: return MessageTypeChannel.OTHER;\n }\n }\n\n get text() {\n const key = `code.message_type.${this.channel}`;\n const text = i18n.t(key);\n return key !== text ? text : this.channel;\n }\n\n get isBuiltinRuleDefault() {\n return this.messageType === 'SendGrid';\n }\n}\n","import { sprintf } from 'sprintf-js';\nimport moment from 'moment';\nimport { IOpeningHour } from '@/api/api-update';\nimport {\n timeNumberFromText, timeIndexFromTime, timeIndexFromSlot, timeStringFromDateTimeIndex, minutesFromTimeIndex,\n slotFromMinutes,\n} from '@/services/time-utils';\nimport HourSlot from './HourSlot';\n\nconst date = '2019-07-01';\nconst offset = 5;\nconst duration = 15;\n\nexport interface IDTOOpeningHour extends IOpeningHour { }\n\nexport default class OpeningHour extends HourSlot {\n weekdayNumber: number;\n\n time: string;\n\n timeIndex: number = 0;\n\n constructor(o?: IOpeningHour) {\n super(o);\n\n this.weekdayNumber = o?.weekdayNumber ?? 0;\n this.time = o?.time || '';\n this.minimumPartySize = o?.minimumPartySize;\n this.maximumPartySize = o?.maximumPartySize;\n this.maximumGuests = o?.maximumGuests;\n this.maximumReservations = o?.maximumReservations;\n this.fixedEndingInMinutes = o?.fixedEndingInMinutes;\n this.timeIndex = timeIndexFromTime(this.time);\n }\n\n toDto(): IDTOOpeningHour {\n const dto: IDTOOpeningHour = {\n weekdayNumber: this.weekdayNumber,\n time: this.time,\n minimumPartySize: this.minimumPartySize,\n maximumPartySize: this.maximumPartySize,\n maximumGuests: this.maximumGuests,\n maximumReservations: this.maximumReservations,\n fixedEndingInMinutes: this.fixedEndingInMinutes,\n };\n return dto;\n }\n\n static fromDateString(timeString: string) {\n const m = moment(timeString, 'YYYY-MM-DD HH:mm');\n const day = (m.day() % 7) + 1;\n\n const h = new OpeningHour();\n h.weekdayNumber = day;\n h.time = timeString.substr(11);\n h.timeIndex = timeIndexFromTime(h.time);\n\n return h;\n }\n\n static fromWeekdayAndSlot(weekday: number, slot: number) {\n const h = new OpeningHour();\n h.weekdayNumber = weekday;\n h.timeIndex = timeIndexFromSlot(slot);\n h.time = timeStringFromDateTimeIndex(h.timeIndex);\n return h;\n }\n\n // IModel entity\n get id() {\n if (this.time.length !== 5) return 0;\n return (100000 * this.weekdayNumber + timeNumberFromText(this.time)) || 0;\n }\n\n get order(): number {\n return this.id;\n }\n\n set order(number) {\n // eslint-disable-next-line no-unused-expressions\n this;\n }\n\n // calendar event\n get start(): string {\n const wd = (this.weekdayNumber + offset) % 7;\n const day = moment(date).add(wd, 'days').format('YYYY-MM-DD');\n return `${day} ${this.time}`;\n }\n\n get end(): string {\n return moment(this.start).add(duration, 'minutes').format('YYYY-MM-DD HH:mm');\n }\n\n // eslint-disable-next-line class-methods-use-this\n get isOpen(): boolean { return true; }\n\n get slot(): number {\n return slotFromMinutes(minutesFromTimeIndex(this.timeIndex));\n }\n}\n","import IDTOReservation from '@/api/api-reservations-dto';\nimport { IReservation } from '@/api/api-update';\nimport {\n dateFromDateTimeString, dateTimeStringFromDate, dateStringFromDate, dateFromUTCDateTimeSecondsString,\n minutesFromDate, slotFromMinutes, getDateHoursMinutes, setDateHoursMinutes, dateByAddingDays,\n timeIndexFromMinutes, dateTimeIndexFromDateAndTimeIndex, dateIndexFromDate, dateByAddingMinutes,\n timeStringFromDate,\n} from '@/services/time-utils';\nimport { boolFromValue } from '@/api/api-utils';\nimport { endDateForCheckedOut, endDateForReservation } from '@/services/reservation-utils';\nimport { fixedPaymentInfo } from '@/services/billing-utils';\nimport Tab from './Tab';\nimport TabItem from './TabItem';\nimport Contact, { ContactMapping } from './Contact';\nimport { cloneModel, toModelEntities } from './model-utils';\nimport Service from './Service';\nimport Label from './Label';\nimport Employee from './Employee';\nimport Country from './Country';\nimport DurationRule from './DurationRule';\nimport Attachment from './Attachment';\n\nexport enum ReservationSource {\n User = 'user',\n Online = 'online',\n}\n\nexport enum ReservationType {\n Reservation = 'reservation',\n Walkin = 'walkin',\n Block = 'block',\n Waitlist = 'waitlist',\n}\n\nexport enum ReservationStatus {\n Planned = 'PLANNED',\n Seated = 'SEATED',\n CheckedIn = 'CHECKED_IN',\n CheckedOut = 'CHECKED_OUT',\n Confirmed = 'CONFIRMED',\n NonConfirmed = 'NON_CONFIRMED',\n WaitingList = 'WAITING_LIST',\n Cancelled = 'CANCELLED',\n NoShow = 'NO_SHOW',\n Spam = 'SPAM',\n Deleted = 'DELETED',\n\n Separator = 'SEPARATOR',\n All = 'ALL',\n Valid = 'VALID',\n}\n\nexport interface ReservationMapping {\n tabsById: Map;\n tabItemsById: Map;\n servicesById: Map;\n employeesById: Map;\n labelsByText: Map;\n countryByCode: Map;\n}\n\nexport default class Reservation {\n id: number;\n\n tab: Tab | null;\n\n partySize: number;\n\n // dateAnte: Date | null;\n\n dateBegin: Date;\n\n dateEnd: Date;\n\n capDateEnd: Date;\n\n fixedEnding: boolean;\n\n holdTabItems: boolean = false;\n\n contact: Contact;\n\n reservationType: ReservationSource;\n\n bookingType: ReservationType;\n\n code: string | null;\n\n status: ReservationStatus;\n\n label: Label | null;\n\n service: Service | null;\n\n isStarred: boolean;\n\n isFlagged: boolean;\n\n isUnread: boolean;\n\n employeeCreated: Employee | null;\n\n employeeEdited: Employee | null;\n\n dateCreated: Date | null;\n\n dateEdited: Date | null;\n\n notes: string | null;\n\n tabItems: TabItem[];\n\n paymentInfo?: string;\n\n dateIndex: number = 0;\n\n timeBegin: number = 0;\n\n timeEnd: number = 0;\n\n capTimeEnd: number = 0;\n\n slotBegin: number = 0;\n\n slotEnd: number = 0;\n\n capSlotEnd: number = 0;\n\n reservationCampaign: string | null;\n\n isDeleted: boolean = false; // never deleted, to satisfy IWithDateTimeIndex\n\n attachments: Attachment[] = [];\n\n rating: number | null;\n\n waitlistFlexibleBefore: number | null;\n\n waitlistFlexibleAfter: number | null;\n\n constructor(o?: IReservation, m?: ReservationMapping) {\n this.id = o?.reservationId ?? 0;\n this.partySize = o?.partySize ?? 0;\n // this.dateAnte = dateFromDateTimeString(o?.dtAnte);\n this.dateBegin = dateFromDateTimeString(o?.dtBegin) ?? new Date();\n this.dateEnd = dateFromDateTimeString(o?.dtEnd) ?? new Date();\n this.capDateEnd = this.dateEnd;\n this.fixedEnding = boolFromValue(o?.fixedEnding) ?? false;\n this.holdTabItems = boolFromValue(o?.holdTabItems) ?? false;\n this.fixedEnding = boolFromValue(o?.fixedEnding) ?? false;\n this.reservationType = o?.reservationType as ReservationSource;\n // this.bookingType = o?.bookingType as ReservationType;\n this.code = o?.reservationCode ?? null;\n this.status = o?.reservationStatus as ReservationStatus ?? ReservationStatus.Planned;\n this.notes = o?.notes ?? null;\n this.isStarred = boolFromValue(o?.isStarred) ?? false;\n this.isFlagged = boolFromValue(o?.isFlagged) ?? false;\n this.isUnread = boolFromValue(o?.isUnread) ?? false;\n this.dateCreated = dateFromUTCDateTimeSecondsString(o?.dtCreate) ?? null;\n this.dateEdited = dateFromUTCDateTimeSecondsString(o?.dtEdit) ?? null;\n this.paymentInfo = o?.paymentInfo ? fixedPaymentInfo(o.paymentInfo) : undefined;\n\n this.tab = m?.tabsById.get(o?.tabId ?? NaN) ?? null;\n this.service = m?.servicesById.get(o?.serviceId ?? NaN) ?? null;\n this.employeeCreated = m?.employeesById.get(o?.employeeIdCreate ?? NaN) ?? null;\n this.employeeEdited = m?.employeesById.get(o?.employeeIdEdit ?? NaN) ?? null;\n this.reservationCampaign = o?.reservationCampaign ?? null;\n\n this.label = o?.reservationLabel\n ? m?.labelsByText.get(o?.reservationLabel) ?? new Label({ labelText: o?.reservationLabel })\n : null;\n\n const reservedTabItems = Array.isArray(o?.reservedTabItems) ? o?.reservedTabItems ?? [] : [];\n this.tabItems = reservedTabItems.flatMap((ti) => m?.tabItemsById?.get(ti) ?? []);\n this.tabItems.sort((o1, o2) => o1.order - o2.order);\n\n this.contact = new Contact(o?.contact, m as ContactMapping);\n this.attachments = (o?.attachments ?? [])?.map((a) => new Attachment(a));\n\n this.rating = o?.rating ?? null;\n\n this.waitlistFlexibleBefore = o?.waitlistFlexibleBefore ?? null;\n\n this.waitlistFlexibleAfter = o?.waitlistFlexibleAfter ?? null;\n\n this.bookingType = ReservationType.Reservation;\n this.updateBookingType();\n\n this.updateSlotsAndTimes();\n }\n\n static emptyReservation(): Reservation {\n const r = new Reservation();\n r.bookingType = ReservationType.Reservation;\n r.partySize = 2;\n return r;\n }\n\n refresh(m?: ReservationMapping) {\n this.tab = m?.tabsById.get(this.tab?.id ?? NaN) ?? null;\n this.service = m?.servicesById.get(this.service?.id ?? NaN) ?? null;\n this.employeeCreated = m?.employeesById.get(this.employeeCreated?.id ?? NaN) ?? null;\n this.employeeEdited = m?.employeesById.get(this.employeeEdited?.id ?? NaN) ?? null;\n\n this.label = m?.labelsByText.get(this.label?.text ?? '') ?? this.label;\n\n this.tabItems = this.tabItems.flatMap((ti) => m?.tabItemsById?.get(ti.id) ?? []);\n this.tabItems.sort((o1, o2) => o1.order - o2.order);\n\n this.contact.refresh(m);\n\n this.updateSlotsAndTimes();\n }\n\n updateBookingType() {\n const zstr = (s: string|undefined|null) => !s || s === '';\n\n if (this.partySize === 0) {\n this.bookingType = ReservationType.Block;\n } else if (zstr(this.contact.name) && zstr(this.contact.phone) && zstr(this.contact.email)) {\n this.bookingType = ReservationType.Walkin;\n } else if (this.status === ReservationStatus.WaitingList) {\n this.bookingType = ReservationType.Waitlist;\n } else {\n this.bookingType = ReservationType.Reservation;\n }\n }\n\n updateSlotsAndTimes() {\n this.dateIndex = dateIndexFromDate(this.dateBegin);\n this.timeBegin = minutesFromDate(this.dateBegin);\n this.timeEnd = minutesFromDate(this.dateEnd);\n this.slotBegin = slotFromMinutes(this.timeBegin);\n this.slotEnd = slotFromMinutes(this.timeEnd - 1);\n\n const bookingCap = this.partySize === 0 ? 0 : this.tab?.bookingCap ?? 0;\n this.capDateEnd = dateByAddingMinutes(this.dateEnd, bookingCap);\n this.capTimeEnd = minutesFromDate(this.capDateEnd);\n this.capSlotEnd = slotFromMinutes(this.capTimeEnd - 1);\n }\n\n updateEndDateForReservation(durationRules: DurationRule[]) {\n this.dateEnd = endDateForReservation(this.dateBegin, this.tab, this.partySize, durationRules);\n this.updateSlotsAndTimes();\n }\n\n // getters\n get nameText() { return this.contact && this.contact.name; }\n\n get notesText() { return this.notes; }\n\n get partySizeText() { return (this.partySize && `${String(this.partySize)}`) || ''; }\n\n get statusText() { return this.status; }\n\n get tabText() { return this.tab && this.tab.name; }\n\n get tablesText() {\n if (this.tabItems.length === 0) return undefined;\n return this.tabItems.map((ti) => ti.no).join(',');\n }\n\n get waitlistFlexibleStartText() {\n if (this.status !== ReservationStatus.WaitingList\n || (!this.waitlistFlexibleBefore && !this.waitlistFlexibleAfter)) return undefined;\n\n const from = dateByAddingMinutes(this.dateBegin, -(this.waitlistFlexibleBefore ?? 0));\n const to = dateByAddingMinutes(this.dateBegin, this.waitlistFlexibleAfter ?? 0);\n\n return `${timeStringFromDate(from)} ~ ${timeStringFromDate(to)}`;\n }\n\n get seats(): number {\n return this.tabItems.map((o) => o.seats).reduce((a, b) => a + b, 0);\n }\n\n get isBlock(): boolean {\n return this.bookingType === ReservationType.Block || this.partySize === 0;\n }\n\n get isWalkin(): boolean {\n return this.bookingType === ReservationType.Walkin;\n }\n\n get isNew(): boolean {\n return this.id <= 0;\n }\n\n get dateTimeIndex(): number {\n return dateTimeIndexFromDateAndTimeIndex(this.dateIndex, timeIndexFromMinutes(this.timeBegin));\n }\n\n get slot(): number {\n return this.slotBegin;\n }\n\n toDto(): IDTOReservation {\n const dto: IDTOReservation = {\n reservationId: this.id,\n tabId: this.tab?.id,\n partySize: this.partySize,\n dtBegin: dateTimeStringFromDate(this.dateBegin) ?? undefined,\n dtEnd: dateTimeStringFromDate(this.dateEnd) ?? undefined,\n fixedEnding: this.fixedEnding,\n holdTabItems: this.holdTabItems,\n reservationCode: this.code ?? undefined,\n reservationStatus: this.status,\n reservationLabel: this.label?.text,\n // bookingType: this.bookingType,\n serviceId: this.service?.id,\n isStarred: this.isStarred,\n isFlagged: this.isFlagged,\n isUnread: this.isUnread,\n notes: this.notes ?? undefined,\n reservedTabItems: this.tabItems.map((o) => o.id).join(','),\n reservationCampaign: this.reservationCampaign ?? undefined,\n\n // reservation unrelated\n employeeId: undefined,\n employeeName: undefined,\n forgetTabItems: undefined,\n\n // contact\n contactId: this.contact?.id || undefined,\n name: this.contact?.name ?? undefined,\n phone: this.contact?.phone ?? undefined,\n email: this.contact?.email,\n address: this.contact?.address,\n postalCode: this.contact?.postalCode,\n city: this.contact?.city,\n state: this.contact?.state,\n country: this.contact?.country?.code,\n companyName: this.contact?.companyName,\n isVIP: this.contact?.isVIP,\n preferredLanguage: this.contact?.preferredLanguage,\n dateOfBirth: dateStringFromDate(this.contact?.dateOfBirth) ?? undefined,\n newsletterSubscription: this.contact?.newsletterSubscription,\n contactNotes: this.contact?.notes,\n title: this.contact?.title,\n\n // attachments\n attachments: this.attachments.map((o) => o.toDto()),\n };\n return dto;\n }\n\n clone(): Reservation {\n const copy = new Reservation();\n Object.assign(copy, this);\n copy.tabItems = this.tabItems.map((o) => cloneModel(o));\n copy.contact = cloneModel(this.contact);\n return copy;\n }\n\n hasTabItem(tabItem: TabItem) {\n return this.tabItems.find((ti) => ti.id === tabItem.id) !== undefined;\n }\n\n addTabItem(tabItem: TabItem) {\n console.log('addTabItem');\n if (!this.tab || !this.tab.tabItems.find((ti) => ti.id === tabItem.id)) return;\n if (this.tabItems.find((ti) => ti.id === tabItem.id)) return;\n this.tabItems.push(tabItem);\n this.tabItems.sort((o1, o2) => o1.order - o2.order);\n }\n\n removeTabItem(tabItem: TabItem) {\n console.log('removeTabItem');\n const index = this.tabItems.findIndex((ti) => ti.id === tabItem.id);\n if (index >= 0) this.tabItems.splice(index, 1);\n }\n\n setTabItems(tabItems: TabItem[]) {\n console.log('setTabItems');\n if (!this.tab) return;\n this.tabItems = tabItems.filter((ti) => this.tab!.tabItems.find((tti) => tti.id === ti.id) !== undefined);\n this.tabItems.sort((o1, o2) => o1.order - o2.order);\n }\n\n setDate(date: Date) {\n const { h: bh, m: bm } = getDateHoursMinutes(this.dateBegin);\n const dateBegin = setDateHoursMinutes(date, bh, bm);\n this.dateBegin = dateBegin;\n\n const { h: eh, m: em } = getDateHoursMinutes(this.dateEnd);\n let dateEnd = setDateHoursMinutes(date, eh, em);\n if (eh < 6) dateEnd = dateByAddingDays(dateEnd, +1);\n this.dateEnd = dateEnd;\n }\n\n setStatus(status: ReservationStatus) {\n if (this.status !== ReservationStatus.CheckedOut && status === ReservationStatus.CheckedOut) {\n this.dateEnd = endDateForCheckedOut(this) ?? this.dateEnd;\n this.fixedEnding = false;\n }\n this.status = status;\n }\n}\n","import { IService } from '@/api/api-update';\nimport {\n dateFromDateString, dateFromDateString8601, dateStringFromDate, dateStringFromDate8601,\n} from '@/services/time-utils';\n\nexport interface IDTOService extends IService { }\n\nexport default class Service {\n id: number;\n\n title: string;\n\n order: number;\n\n color: string;\n\n constructor(o?: IService) {\n this.id = o?.serviceId ?? 0;\n this.title = o?.title ?? '';\n this.order = o?.serviceOrder ?? 0;\n this.color = o?.color?.toUpperCase() ?? '#FF3D94';\n }\n\n toDto(): IDTOService {\n const dto: IDTOService = {\n serviceId: this.id,\n title: this.title,\n serviceOrder: this.order,\n color: this.color,\n };\n return dto;\n }\n\n get value() { return this.id; }\n\n get text() { return this.title; }\n\n set text(text: string | null) { this.title = text ?? ''; }\n}\n","import { ITab } from '@/api/api-update';\nimport { boolFromValue } from '@/api/api-utils';\nimport { toModelEntities } from './model-utils';\nimport TabItem from './TabItem';\nimport DurationRule from './DurationRule';\n\nexport interface IDTOTab extends ITab { }\n\nexport default class Tab {\n id: number;\n\n order: number;\n\n name: string;\n\n duration?: number;\n\n minDuration: number;\n\n capacity: number;\n\n tabItems: TabItem[];\n\n usingWeekdaysAndTimes?: boolean;\n\n bookingCap: number;\n\n constructor(o?: ITab) {\n this.id = o?.tabId ?? 0;\n this.order = o?.tabOrder ?? 0;\n this.name = o?.tabName ?? '';\n this.duration = o?.tabDuration;\n this.minDuration = o?.tabDurationMinimum ?? 0;\n this.capacity = o?.tabCapacity ?? 0;\n this.usingWeekdaysAndTimes = boolFromValue(o?.usingWeekdaysAndTimes);\n this.tabItems = toModelEntities(TabItem, o?.tabItems);\n this.bookingCap = o?.bookingCap ?? 0;\n }\n\n toDto(): IDTOTab {\n const dto: IDTOTab = {\n tabId: this.id,\n tabOrder: this.order,\n tabName: this.name,\n tabDuration: this.duration ?? undefined,\n tabDurationMinimum: this.minDuration ?? undefined,\n tabCapacity: this.capacity,\n usingWeekdaysAndTimes: this.usingWeekdaysAndTimes,\n // tabItems: this.tabItems?.map((o) => o.toDto()),\n bookingCap: this.bookingCap ?? undefined,\n };\n return dto;\n }\n\n get value() { return this.id; }\n\n get text() { return this.name; }\n}\n","import { ITabItem } from '@/api/api-update';\nimport { numberFromValue } from '@/api/api-utils';\nimport { uniqueMinId } from './model-utils';\n\nexport const TAB_ITEM_DUMMY_ID = 0; // dummy tab items has id <= 0\n\nexport interface IDTOTabItem extends ITabItem { }\n\nexport default class TabItem {\n id: number;\n\n order: number;\n\n no: string;\n\n seats: number;\n\n shape?: string;\n\n posX?: number;\n\n posY?: number;\n\n rotation?: number;\n\n constructor(o?: ITabItem) {\n this.id = o?.itemId ?? 0;\n this.order = o?.itemOrder ?? 0;\n this.no = o?.itemNo ?? '';\n this.seats = o?.seats ?? 0;\n this.shape = o?.shape;\n this.posX = numberFromValue(o?.posX);\n this.posY = numberFromValue(o?.posY);\n this.rotation = numberFromValue(o?.rotation);\n }\n\n toDto(): IDTOTabItem {\n const dto: IDTOTabItem = {\n itemId: this.id,\n itemOrder: this.order,\n itemNo: this.no,\n seats: this.seats,\n shape: this.shape,\n posX: this.posX,\n posY: this.posY,\n rotation: this.rotation,\n };\n return dto;\n }\n\n get isDummy() { return this.id <= TAB_ITEM_DUMMY_ID; }\n}\n\nexport function suggestedTabItem(tabItems: TabItem[]): TabItem {\n const lastNo = tabItems.slice(-1)[0]?.no ?? '0';\n const nextNo = parseInt(lastNo, 10) + 1;\n return new TabItem({\n itemId: uniqueMinId(tabItems),\n itemNo: nextNo ? String(nextNo) : '1',\n seats: tabItems.slice(-1)[0]?.seats ?? 4,\n });\n}\n","import { ITagNote } from '@/api/api-update';\n\nexport interface IDTOTagNote extends ITagNote { }\n\nexport default class TagNote {\n id: number;\n\n text: string;\n\n order: number;\n\n constructor(o?: ITagNote) {\n this.id = o?.tagNoteId ?? 0;\n this.text = o?.tagNoteText ?? '';\n this.order = o?.tagNoteOrder ?? 0;\n }\n\n toDto(): IDTOTagNote {\n const dto: IDTOTagNote = {\n tagNoteId: this.id,\n tagNoteText: this.text,\n tagNoteOrder: this.order,\n };\n return dto;\n }\n\n get dotText(): string {\n return `• ${this.text}`;\n }\n}\n","import { niceTimeTextFromSlot, timeIndexFromSlot } from '@/services/time-utils';\nimport DateAndTime from './DateAndTime';\nimport OpeningHour from './OpeningHour';\nimport HourSlot from './HourSlot';\n\nexport default class TimeSlot extends HourSlot {\n dateAndTimeIndex: number;\n\n slot: number;\n\n dateAndTime?: DateAndTime;\n\n openingHour?: OpeningHour;\n\n constructor(slot: number, dateAndTimeIndex: number, dateAndTime?: DateAndTime, openingHour?: OpeningHour) {\n super({});\n this.slot = slot;\n this.dateAndTimeIndex = dateAndTimeIndex;\n this.dateAndTime = dateAndTime;\n this.openingHour = openingHour;\n\n this.updateHourSlots();\n }\n\n get time(): string { return niceTimeTextFromSlot(this.slot); }\n\n get timeIndex(): number { return timeIndexFromSlot(this.slot); }\n\n // get isOpen(): boolean {\n // return this.dateAndTime?.isOpen\n // || (this.openingHour !== undefined && this.dateAndTime?.isOpen !== false);\n // }\n\n get isSpecial(): boolean {\n if (this.dateAndTime === undefined) return false;\n\n const ohOpen = this.openingHour !== undefined;\n const shOpen = this.dateAndTime.isOpen !== false;\n return ohOpen !== shOpen;\n }\n\n get hour(): HourSlot|undefined { return this.dateAndTime ?? this.openingHour; }\n\n get isOpen(): boolean {\n if (this.dateAndTime) return this.dateAndTime.isOpen === true;\n return this.openingHour !== undefined;\n }\n\n updateHourSlots() {\n this.minimumPartySize = this.hour?.minimumPartySize;\n this.maximumPartySize = this.hour?.maximumPartySize;\n this.maximumGuests = this.hour?.maximumGuests;\n this.maximumReservations = this.hour?.maximumReservations;\n this.fixedEndingInMinutes = this.hour?.fixedEndingInMinutes;\n }\n}\n","import { IUser } from '@/api/api-update';\nimport { dateFromUTCDateTimeSecondsString } from '@/services/time-utils';\nimport { boolFromValue, numberFromValue } from '@/api/api-utils';\n\nexport interface IDTOUser extends IUser { }\n\nexport default class User {\n id: number;\n\n username: string;\n\n name?: string;\n\n email?: string;\n\n isRegistered?: boolean;\n\n allowSignIn?: boolean;\n\n allowReservations?: boolean;\n\n allowAvailability?: boolean;\n\n allowDayNotes?: boolean;\n\n allowSettings?: boolean;\n\n allowBilling?: boolean;\n\n sharedUser?: boolean;\n\n newsletterSubscription?: boolean;\n\n privacyScreenTimeout: number;\n\n dtLastEdit?: Date;\n\n constructor(o?: IUser) {\n this.id = o?.userId ?? 0;\n this.name = o?.name;\n this.username = o?.username ?? 'N/A';\n this.email = o?.email;\n this.isRegistered = boolFromValue(o?.isRegistered);\n this.allowSignIn = boolFromValue(o?.allowSignIn);\n this.allowReservations = boolFromValue(o?.allowReservations);\n this.allowAvailability = boolFromValue(o?.allowAvailability);\n this.allowDayNotes = boolFromValue(o?.allowDayNotes);\n this.allowSettings = boolFromValue(o?.allowSettings);\n this.allowBilling = boolFromValue(o?.allowBilling);\n this.sharedUser = boolFromValue(o?.sharedUser);\n this.newsletterSubscription = boolFromValue(o?.newsletterSubscription);\n this.privacyScreenTimeout = numberFromValue(o?.privacyScreenTimeout) ?? 0;\n this.dtLastEdit = dateFromUTCDateTimeSecondsString(o?.dtLastEdit) ?? undefined;\n }\n\n toDto(): IDTOUser {\n const dto: IDTOUser = {\n ...this,\n userId: this.id,\n id: undefined,\n dtLastEdit: undefined,\n };\n return dto;\n }\n}\n","import { strcmp } from '@/services/common';\nimport { isFunction } from 'util';\n\ninterface IWithId { id: number }\n\nexport interface IApi {\n isDeleted?: string | boolean;\n [field: string]: any,\n}\n\nexport interface IModel {\n new?(): IModel,\n id: number,\n [field: string]: any,\n}\n\nexport interface ISingleModel {\n id: number,\n toDto(): A,\n}\n\nexport interface IListModel {\n id: number,\n order: number,\n toDto(): A,\n}\n\nexport function toMapById(items: M[]): Map {\n const map = new Map();\n items.forEach((o) => { map.set(o.id, o); });\n return map;\n}\n\nexport function toMapByField(items: M[], field: string): Map {\n const map = new Map();\n items.forEach((o: any) => { map.set(o[field], o); });\n return map;\n}\n\nexport function toMapByFieldFirst(items: M[], field: string): Map {\n const map = new Map();\n items.forEach((o: any) => { if (!map.has(o[field])) map.set(o[field], o); });\n return map;\n}\n\nexport function groupByField(items: M[], field: string): Map {\n return items.reduce(\n (map, o: any) => map.set(o[field], [...(map.get(o[field]) ?? []), o]),\n new Map(),\n );\n}\n\nexport function uniqueMinId(items: M[]): number {\n return items.reduce((min, o) => (min >= o.id ? o.id - 1 : min), -1);\n}\n\nexport function mergeModelEntities(oldEntities: T[], newEntities: T[]): T[] {\n const newEntitiesById = toMapById(newEntities);\n const mergedEntities = oldEntities.filter((o) => !newEntitiesById.has(o.id));\n mergedEntities.push(...newEntities);\n return mergedEntities;\n}\n\nexport function toModelEntities(\n ModelType: (new (iapi: T, mapping?: MAP) => G),\n apiEntities?: T[],\n p?: { idField?: string, stringOrderField?: string, compareFn?: (o1: G, o2: G) => number, mapping?: MAP},\n): G[] {\n // console.log('apiEntities:', apiEntities);\n const undeletedApiEntities = (apiEntities ?? []).filter((o) => o.isDeleted !== 'True' && o.isDeleted !== true);\n // console.log('undeletedApiEntities:', undeletedApiEntities);\n const modelEntities = undeletedApiEntities.map((o) => new ModelType(o, p?.mapping));\n // console.log('modelEntities:', modelEntities);\n const validEntities = modelEntities.filter((o) => o[p?.idField ?? 'id']);\n // console.log('validEntities:', validEntities);\n\n // console.log('p?.stringOrderField:', p?.stringOrderField);\n let compareFn = p?.compareFn;\n if (!compareFn && p?.stringOrderField) {\n compareFn = (o1: G, o2: G) => strcmp(o1[p?.stringOrderField!], o2[p?.stringOrderField!]);\n }\n if (!compareFn) {\n compareFn = (o1: G, o2: G) => o1.order - o2.order;\n }\n const orderedEntities = validEntities.sort(compareFn);\n // console.log('orderedEntities:', orderedEntities);\n return orderedEntities;\n}\n\nexport function mergeToModelEntities(\n ModelType: (new (iapi: A, mapping?: MAP) => M),\n oldEntities?: M[],\n apiEntities?: A[],\n p?: { idField?: string, stringOrderField?: string, compareFn?: (o1: M, o2: M) => number, mapping?: MAP },\n): M[] {\n if (!apiEntities) return oldEntities ?? [];\n // console.log('oldEntities:', oldEntities);\n // console.log('apiEntities:', apiEntities);\n\n const newValidEntities: M[] = [];\n const newEntitiesById = new Map();\n (apiEntities ?? []).forEach((o) => {\n const m = new ModelType(o, p?.mapping);\n if (!m.id) return;\n newEntitiesById.set(m.id, m);\n if (o.isDeleted !== 'True' && o.isDeleted !== true) newValidEntities.push(m);\n });\n // console.log('newEntitiesById:', newValidEntities);\n // console.log('newValidEntities:', newValidEntities);\n\n const mergedEntities = (oldEntities ?? []).filter((o) => !newEntitiesById.has(o.id));\n mergedEntities.push(...newValidEntities);\n // console.log('mergedEntities:', mergedEntities);\n\n let compareFn = p?.compareFn;\n if (!compareFn && p?.stringOrderField) {\n compareFn = (o1: M, o2: M) => strcmp(o1[p?.stringOrderField!], o2[p?.stringOrderField!]);\n }\n if (!compareFn) {\n compareFn = (o1: M, o2: M) => o1.order - o2.order;\n }\n const orderedEntities = mergedEntities.sort(compareFn);\n // console.log('orderedEntities:', orderedEntities);\n return orderedEntities;\n}\n\nexport function cloneModel(instance: M): M {\n if (typeof instance.clone === 'function') return instance.clone();\n const copy = new (instance.constructor as { new(): M })();\n Object.assign(copy, instance);\n return copy;\n}\n\nexport function isModelEqualToModel(o1: M, o2: M): boolean {\n // console.log('isModelEqualToModel');\n // console.log('1: ', JSON.stringify(o1));\n // console.log('2: ', JSON.stringify(o2));\n const result = JSON.stringify(o1) === JSON.stringify(o2);\n // console.log('r: ', result);\n return result;\n}\n\nexport function toSaveModelItems>(newItems: M[], oldItems: M[]): A[] {\n // console.log('newItems:', newItems);\n // console.log('oldItems:', oldItems);\n // set order for items\n for (let i = 1; i < newItems.length; i += 1) {\n // eslint-disable-next-line no-param-reassign\n if (newItems[i].order < newItems[i - 1].order) newItems[i].order = newItems[i - 1].order;\n }\n\n // identity items to delete\n const newById = toMapById(newItems);\n // console.log('newById:', newById);\n const deleteItems = oldItems.filter((o) => !newById.has(o.id));\n // console.log('deleteItems:', deleteItems);\n\n // identity modyfied items\n const oldById = toMapById(oldItems);\n // console.log('oldById:', oldById);\n const modifyItems = newItems.filter((o) => !oldById.has(o.id) || !isModelEqualToModel(o, oldById.get(o.id)!));\n // console.log('modifyItems:', modifyItems);\n\n // create dtos\n const deletedDtos = deleteItems.map((o) => { const dto = o.toDto(); dto.isDeleted = true; return dto; });\n const modifiedDtos = modifyItems.map((o) => o.toDto());\n\n return [...deletedDtos, ...modifiedDtos];\n}\n","/* eslint-disable class-methods-use-this */\nexport interface IActivityIndicatorPlugin {\n\n show(): void;\n hide(): void;\n\n}\n\nclass ActivityIndicatorPlugin {\n show: () => void = () => {};\n\n hide: () => void = () => {};\n}\n\nexport default new ActivityIndicatorPlugin();\n","import storage from '@/services/local-storage';\nimport moment from 'moment';\nimport i18n, { engLocales, supportedLocales } from './i18n';\nimport localized from './vue-localized-formatter/src/localized';\n\nconst countryLocaleMap = {\n AD: 'ca',\n AE: 'ar-AE',\n AF: 'fa-AF',\n AG: 'en-AG',\n AI: 'en-AI',\n AL: 'sq',\n AM: 'hy',\n AO: 'pt-AO',\n AR: 'es-AR',\n AS: 'en-AS',\n AT: 'de-AT',\n AU: 'en-AU',\n AW: 'nl-AW',\n AX: 'sv-AX',\n AZ: 'az',\n BA: 'bs',\n BB: 'en-BB',\n BD: 'bn-BD',\n BE: 'nl-BE',\n BF: 'fr-BF',\n BG: 'bg',\n BH: 'ar-BH',\n BI: 'fr-BI',\n BJ: 'fr-BJ',\n BL: 'fr',\n BM: 'en-BM',\n BN: 'ms-BN',\n BO: 'es-BO',\n BQ: 'nl',\n BR: 'pt-BR',\n BS: 'en-BS',\n BT: 'dz',\n BW: 'en-BW',\n BY: 'be',\n BZ: 'en-BZ',\n CA: 'en-CA',\n CC: 'ms-CC',\n CD: 'fr-CD',\n CF: 'fr-CF',\n CG: 'fr-CG',\n CH: 'de-CH',\n CI: 'fr-CI',\n CK: 'en-CK',\n CL: 'es-CL',\n CM: 'en-CM',\n CN: 'zh-CN',\n CO: 'es-CO',\n CR: 'es-CR',\n CU: 'es-CU',\n CV: 'pt-CV',\n CW: 'nl',\n CX: 'en',\n CY: 'el-CY',\n CZ: 'cs',\n DE: 'de',\n DJ: 'fr-DJ',\n DK: 'da-DK',\n DM: 'en-DM',\n DO: 'es-DO',\n DZ: 'ar-DZ',\n EC: 'es-EC',\n EE: 'et',\n EG: 'ar-EG',\n EH: 'ar',\n ER: 'aa-ER',\n ES: 'es-ES',\n ET: 'am',\n FI: 'fi-FI',\n FJ: 'en-FJ',\n FK: 'en-FK',\n FM: 'en-FM',\n FO: 'fo',\n FR: 'fr-FR',\n GA: 'fr-GA',\n GB: 'en-GB',\n GD: 'en-GD',\n GE: 'ka',\n GF: 'fr-GF',\n GG: 'en',\n GH: 'en-GH',\n GI: 'en-GI',\n GL: 'kl',\n GM: 'en-GM',\n GN: 'fr-GN',\n GP: 'fr-GP',\n GQ: 'es-GQ',\n GR: 'el-GR',\n GS: 'en',\n GT: 'es-GT',\n GU: 'en-GU',\n GW: 'pt-GW',\n GY: 'en-GY',\n HK: 'zh-HK',\n HN: 'es-HN',\n HR: 'hr-HR',\n HT: 'ht',\n HU: 'hu-HU',\n ID: 'id',\n IE: 'en-IE',\n IL: 'he',\n IM: 'en',\n IN: 'en-IN',\n IO: 'en-IO',\n IQ: 'ar-IQ',\n IR: 'fa-IR',\n IS: 'is',\n IT: 'it-IT',\n JE: 'en',\n JM: 'en-JM',\n JO: 'ar-JO',\n JP: 'ja',\n KE: 'en-KE',\n KG: 'ky',\n KH: 'km',\n KI: 'en-KI',\n KM: 'ar',\n KN: 'en-KN',\n KP: 'ko-KP',\n KR: 'ko-KR',\n XK: 'sq',\n KW: 'ar-KW',\n KY: 'en-KY',\n KZ: 'kk',\n LA: 'lo',\n LB: 'ar-LB',\n LC: 'en-LC',\n LI: 'de-LI',\n LK: 'si',\n LR: 'en-LR',\n LS: 'en-LS',\n LT: 'lt',\n LU: 'lb',\n LV: 'lv',\n LY: 'ar-LY',\n MA: 'ar-MA',\n MC: 'fr-MC',\n MD: 'ro',\n ME: 'sr',\n MF: 'fr',\n MG: 'fr-MG',\n MH: 'mh',\n MK: 'mk',\n ML: 'fr-ML',\n MM: 'my',\n MN: 'mn',\n MO: 'zh',\n MP: 'fil',\n MQ: 'fr-MQ',\n MR: 'ar-MR',\n MS: 'en-MS',\n MT: 'mt',\n MU: 'en-MU',\n MV: 'dv',\n MW: 'ny',\n MX: 'es-MX',\n MY: 'ms-MY',\n MZ: 'pt-MZ',\n NA: 'en-NA',\n NC: 'fr-NC',\n NE: 'fr-NE',\n NF: 'en-NF',\n NG: 'en-NG',\n NI: 'es-NI',\n NL: 'nl-NL',\n NO: 'no',\n NP: 'ne',\n NR: 'na',\n NU: 'niu',\n NZ: 'en-NZ',\n OM: 'ar-OM',\n PA: 'es-PA',\n PE: 'es-PE',\n PF: 'fr-PF',\n PG: 'en-PG',\n PH: 'tl',\n PK: 'ur-PK',\n PL: 'pl',\n PM: 'fr-PM',\n PN: 'en-PN',\n PR: 'en-PR',\n PS: 'ar-PS',\n PT: 'pt-PT',\n PW: 'pau',\n PY: 'es-PY',\n QA: 'ar-QA',\n RE: 'fr-RE',\n RO: 'ro',\n RS: 'sr',\n RU: 'ru',\n RW: 'rw',\n SA: 'ar-SA',\n SB: 'en-SB',\n SC: 'en-SC',\n SD: 'ar-SD',\n SS: 'en',\n SE: 'sv-SE',\n SG: 'cmn',\n SH: 'en-SH',\n SI: 'sl',\n SJ: 'no',\n SK: 'sk',\n SL: 'en-SL',\n SM: 'it-SM',\n SN: 'fr-SN',\n SO: 'so-SO',\n SR: 'nl-SR',\n ST: 'pt-ST',\n SV: 'es-SV',\n SX: 'nl',\n SY: 'ar-SY',\n SZ: 'en-SZ',\n TC: 'en-TC',\n TD: 'fr-TD',\n TF: 'fr',\n TG: 'fr-TG',\n TH: 'th',\n TJ: 'tg',\n TK: 'tkl',\n TL: 'tet',\n TM: 'tk',\n TN: 'ar-TN',\n TO: 'to',\n TR: 'tr-TR',\n TT: 'en-TT',\n TV: 'tvl',\n TW: 'zh-TW',\n TZ: 'sw-TZ',\n UA: 'uk',\n UG: 'en-UG',\n UM: 'en-UM',\n US: 'en-US',\n UY: 'es-UY',\n UZ: 'uz',\n VA: 'la',\n VC: 'en-VC',\n VE: 'es-VE',\n VG: 'en-VG',\n VI: 'en-VI',\n VN: 'vi',\n VU: 'bi',\n WF: 'wls',\n WS: 'sm',\n YE: 'ar-YE',\n YT: 'fr-YT',\n ZA: 'zu',\n ZM: 'en-ZM',\n ZW: 'en-ZW',\n CS: 'cu',\n AN: 'nl-AN',\n} as Record;\n\nfunction getLocaleTraits(localeName: string) {\n console.log(`[LOCALE] =========== ${localeName}=========`);\n\n const loc = moment(new Date('2022-12-30T16:00:00'));\n loc.locale(localeName);\n\n const fdow = loc.localeData().firstDayOfWeek();\n\n const formattedTime = loc.format('LT');\n console.log(`[LOCALE] LT ${formattedTime}`);\n const hc = formattedTime.indexOf('16') > -1 ? 'h24' : 'h12';\n\n const formattedDate = loc.format('L');\n console.log(`[LOCALE] L ${formattedDate}`);\n\n let df = '';\n if (formattedDate.startsWith('30')) {\n df = 'dmy';\n } else if (formattedDate.startsWith('12')) {\n df = 'mdy';\n } else {\n df = 'ymd';\n }\n\n console.log(`[LOCALE] fdow: ${fdow}`);\n console.log(`[LOCALE] hc: ${hc}`);\n console.log(`[LOCALE] df: ${df}`);\n console.log('[LOCALE] =====================');\n\n return {\n fdow,\n hc,\n df,\n };\n}\n\nfunction updateLangauge(lang: string) {\n console.log(`[LOCALE] resolved to ${lang}`);\n\n i18n.locale = lang;\n localized.setLocale(lang);\n storage.setLanguage(lang);\n}\n\nexport default function setLanguage(lang: string, country: string) {\n console.log(`[LOCALE] set lang: ${lang} cc: ${country}`);\n\n const constructedLocale = `${lang}-${country}`;\n\n if (country === '') {\n // Only language, unknown country => set both right away\n updateLangauge(lang);\n } else if (supportedLocales.includes(constructedLocale)) {\n // supported combination\n updateLangauge(constructedLocale);\n } else if (lang === 'en') {\n // unsupported combination, english in foreign country\n\n const localeForCountry = countryLocaleMap[country] ?? 'en-US';\n const traits = getLocaleTraits(localeForCountry);\n const closestEngLocale = engLocales.find(\n (l) => JSON.stringify(getLocaleTraits(l)) === JSON.stringify(traits),\n ) || 'en-GB';\n console.log(`[LOCALE] closest locale to ${country} is deemed ${closestEngLocale}`);\n updateLangauge(closestEngLocale);\n } else {\n // fallback\n updateLangauge(lang);\n }\n}\n","import storage from '@/services/local-storage';\nimport Vue from 'vue';\nimport VueI18n, { LocaleMessages } from 'vue-i18n';\n\nVue.use(VueI18n);\n\nexport const supportedLanguages = [\n { value: 'en', text: 'English' },\n { value: 'nl', text: 'Nederlands' },\n { value: 'de', text: 'Deutsch' },\n { value: 'it', text: 'Italiano' },\n { value: 'fr', text: 'Français' },\n { value: 'cs', text: 'Čeština' },\n { value: 'sk', text: 'Slovenčina' },\n];\nexport const extraDocsLocales = ['nl'];\nexport const engLocales = ['en-AU', 'en-CA', 'en-GB', 'en-IE', 'en-IL', 'en-IN', 'en-NZ', 'en-SG', 'en-US'];\nexport const supportedLocales = [\n ...engLocales,\n 'nl-NL', 'nl-BE',\n 'it-IT',\n 'de-DE',\n 'fr-FR', 'fr-BE', 'fr-CA', 'fr-CH', 'fr-LU', 'fr-MC',\n 'cs-CZ',\n 'sk-SK',\n];\nexport const extraLocales = ['xx'];\n\nconst langsAndLocales = [...supportedLanguages.map((l) => l.value), ...supportedLocales];\n\nfunction loadLocaleMessages(): LocaleMessages {\n const locales = require.context('@/locales', true, /[A-Za-z0-9-_,\\s]+\\.json$/i);\n const messages: LocaleMessages = {};\n\n const supported = [...supportedLanguages.map((l) => l.value), ...extraLocales];\n\n locales.keys().forEach((key) => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i);\n const locale = matched && matched.length > 1 && matched[1];\n if (locale && supported.includes(locale)) {\n messages[locale] = locales(key);\n }\n });\n return messages;\n}\n\nfunction preferredLanguage(): string | null {\n const supported = supportedLanguages.map((l) => l.value);\n\n // prefer language from local storage if the key exists\n const savedLanguage = storage.getLanguage();\n if (savedLanguage !== null && langsAndLocales.includes(savedLanguage)) {\n return savedLanguage;\n }\n\n const lang = (navigator.languages[0] || '').split('-')[0] || null;\n if (lang !== null && supported.includes(lang)) {\n return lang;\n }\n return 'en';\n}\n\nconst defaultDateFormats = {\n // date\n full: {\n weekday: 'long', day: 'numeric', month: 'long', year: 'numeric',\n },\n long: {\n day: 'numeric', month: 'long', year: 'numeric',\n },\n 'long-no-year': {\n weekday: 'long', day: 'numeric', month: 'long',\n },\n short: {\n weekday: 'short', day: 'numeric', month: 'short', year: 'numeric',\n },\n shorter: {\n day: 'numeric', month: 'short', year: 'numeric',\n },\n 'short-no-year': {\n weekday: 'short', day: 'numeric', month: 'short',\n },\n 'short-weekday-year': {\n weekday: 'short', day: 'numeric', month: 'short', year: 'numeric',\n },\n 'short-no-weekday-no-year': { day: 'numeric', month: 'short' },\n 'month-year': { month: 'long', year: 'numeric' },\n // singles\n weekday: { weekday: 'long' },\n month: { month: 'long' },\n // date + time\n 'long-datetime': {\n weekday: 'long',\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n 'short-datetime': {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n 'compact-datetime': {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: 'numeric',\n },\n};\n\nexport const dateTimeFormats = langsAndLocales.reduce((a, val) => ({ ...a, [val]: defaultDateFormats }), {});\n\nexport default new VueI18n({\n pluralizationRules: {\n /**\n * @param choice {number} a choice index given by the input to $tc: `$tc('path.to.rule', choiceIndex)`\n * @param choicesLength {number} an overall amount of available choices\n * @returns a final choice index to select plural word by\n */\n sk: (choice, choicesLength) => {\n if (choice <= 1) { return choice; }\n if (choice > 1 && choice < 5) { return 2; }\n return 0;\n },\n cs: (choice, choicesLength) => {\n if (choice <= 1) { return choice; }\n if (choice > 1 && choice < 5) { return 2; }\n return 0;\n },\n },\n locale: preferredLanguage() || process.env.VUE_APP_I18N_LOCALE || 'en',\n fallbackLocale: [process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en', 'xx'],\n messages: loadLocaleMessages(),\n dateTimeFormats,\n numberFormats: {\n en: {\n currency: {\n style: 'currency',\n currency: 'USD',\n },\n },\n sk: {\n currency: {\n style: 'currency',\n currency: 'EUR',\n },\n },\n },\n silentTranslationWarn: true,\n silentFallbackWarn: true,\n});\n","import { TranslateResult } from 'vue-i18n';\n\n/* eslint-disable class-methods-use-this */\nexport interface IToastPlugin {\n\n success(message: string | TranslateResult): void;\n successDelayed(message: string | TranslateResult): void;\n error(message: string | TranslateResult): void;\n\n}\n\nclass ToastPlugin {\n success: (message: string | TranslateResult) => void = (s: string | TranslateResult) => {};\n\n successDelayed: (message: string | TranslateResult) => void = (s: string | TranslateResult) => {};\n\n error: (message: string | TranslateResult) => void = (s: string | TranslateResult) => {};\n}\n\nexport default new ToastPlugin();\n","import { daysBetweenDates, isDateToday } from '@/services/time-utils';\nimport { capitalize } from '@/util/common';\nimport moment from 'moment';\nimport VueI18n from 'vue-i18n';\n\nimport { VueLocalizedFormatterOptions } from './options';\n\nexport default class VueLocalizedFormatter {\n locale : string;\n\n private m : moment.Moment;\n\n private i18n : VueI18n;\n\n private timeFormat = '24hr'; // 'ampm'\n\n //\n private hourMinFormat = 'HH:mm';\n\n private hourMinSecFormat = 'HH:mm:ss';\n\n constructor(opts: VueLocalizedFormatterOptions) {\n this.locale = opts.locale;\n this.i18n = opts.i18n;\n\n this.m = moment();\n this.m.locale(this.locale);\n }\n\n public setLocale(locale: string) {\n this.locale = locale;\n this.m = moment('2022-01-30T16:00:00');\n this.m.locale(locale);\n\n const formatted = this.m.format('LLLL');\n this.set24HrFormat(formatted.indexOf('16') > -1);\n }\n\n public getLocale(): string {\n return this.m.locale();\n }\n\n public set24HrFormat(is24hr: boolean) {\n this.timeFormat = is24hr ? '24hr' : 'ampm';\n this.hourMinFormat = is24hr ? 'HH:mm' : 'h:mm A';\n this.hourMinSecFormat = is24hr ? 'HH:mm:ss' : 'h:mm:ss A';\n }\n\n public weekdays(): {value: number, text:string}[] {\n this.m.locale(this.locale);\n const firstDayWk = this.firstDayOfWeek();\n const wkDays = this.m.localeData().weekdaysShort().map((d, i) => ({ value: i, text: capitalize(d) }));\n return wkDays.slice(firstDayWk, wkDays.length).concat(wkDays.slice(0, firstDayWk));\n }\n\n public weekday(d: number): string {\n return capitalize(this.m.localeData().weekdaysShort()[d]);\n }\n\n public longWeekdays(): {value: number, text:string}[] {\n const firstDayWk = this.firstDayOfWeek();\n const wkDays = this.m.localeData().weekdays().map((d, i) => ({ value: i, text: capitalize(d) }));\n return wkDays.slice(firstDayWk, wkDays.length).concat(wkDays.slice(0, firstDayWk));\n }\n\n private stringFromDate(format: string, value?: Date | null): string | null {\n if (!value) return null;\n const m = moment(value);\n m.locale(this.locale);\n if (!m.isValid) return null;\n return m.format(format);\n }\n\n public hourMinTextFrom24hr(time: string): string | null {\n const d = new Date();\n const timeParts = time.split(':');\n d.setHours(parseInt(timeParts[0], 10));\n d.setMinutes(parseInt(timeParts[1], 10));\n return this.hourMinText(d);\n }\n\n // Time Formatting from time-utils.ts\n public fullDateText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'full'));\n }\n\n public dateText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'long'));\n }\n\n public shortDateText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'short'));\n }\n\n public veryShortDateText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'shorter'));\n }\n\n public dayMonthText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'long-no-year'));\n }\n\n public shortWeekdayYearText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'short-weekday-year'));\n }\n\n public shortDayMonthText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'short-no-year'));\n }\n\n public veryShortDayMonthText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'short-no-weekday-no-year'));\n }\n\n public dateTimeText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'long-datetime'));\n }\n\n public numericDateTimeText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'compact-datetime'));\n }\n\n public shortDateTimeText(date?: Date | null | undefined): string | null | undefined {\n if (!date) { return date; }\n return capitalize(this.i18n.d(date, 'short-datetime'));\n }\n\n public monthText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'month'));\n }\n\n public monthYearText(date?: Date | null): string | null {\n if (!date) { return null; }\n return capitalize(this.i18n.d(date, 'month-year'));\n }\n\n public hourMinSecText(date: Date | null): string | null {\n return this.stringFromDate(this.hourMinSecFormat, date);\n }\n\n public hourMinText(date: Date | null): string | null {\n return this.stringFromDate(this.hourMinFormat, date);\n }\n\n public durationFromSeconds(seconds: number): string {\n if (seconds === 0) {\n return this.i18n.t('label.x_min', [0]) as string;\n }\n const duration = moment.duration(seconds, 's');\n moment.locale(this.locale);\n const min = duration.get('m');\n const minStr = min !== 0 ? this.i18n.t('label.x_min', [duration.get('m')]) : '';\n\n let hourStr = '';\n const hour = duration.get('h');\n if (hour !== 0) {\n hourStr = this.i18n.tc('label.x_hours', hour);\n }\n\n let dayStr = '';\n const day = duration.get('d');\n if (day !== 0) {\n dayStr = this.i18n.tc('label.x_days', day);\n }\n\n return `${dayStr} ${hourStr} ${minStr}`.trim();\n }\n\n public firstDayOfWeek(): number {\n return this.m.localeData().firstDayOfWeek();\n }\n\n public getHourMinFormat(): string {\n return this.hourMinFormat;\n }\n\n public getTimeFormat(): string {\n return this.timeFormat;\n }\n\n public smartDateText(date?: Date | null): string | null {\n if (!date) { return null; }\n\n const minutes = this.hourMinText(date);\n const daysBetween = daysBetweenDates(new Date(), date);\n if (daysBetween === 0) { return `${this.i18n.t('label.today')}, ${minutes}`; }\n if (daysBetween === 1) { return `${this.i18n.t('label.yesterday')}, ${minutes}`; }\n if (daysBetween > 1 && daysBetween < 5) {\n const wkday = this.i18n.d(date, 'weekday');\n return capitalize(`${wkday}, ${minutes}`);\n }\n\n return capitalize(this.i18n.d(date, 'compact-datetime'));\n }\n\n public currencyString(amt: number, curr: string, hideDecimal: boolean = false): string {\n const currency = curr.toUpperCase();\n return new Intl.NumberFormat(this.getLocale(), {\n style: 'currency',\n currency,\n minimumFractionDigits: hideDecimal ? 0 : undefined,\n maximumFractionDigits: hideDecimal ? 0 : undefined,\n }).format(amt);\n }\n\n public currencySymbolInfo(curr: string): {symbol: string, prefix: boolean} {\n const currency = curr.toUpperCase();\n const parts = new Intl.NumberFormat(this.getLocale(), { style: 'currency', currency }).formatToParts(1);\n const currencyIdx = parts.findIndex((part) => part.type === 'currency');\n const integerIdx = parts.findIndex((part) => part.type === 'integer');\n const prefix = currencyIdx < integerIdx;\n const symbol = parts[currencyIdx].value;\n return { symbol, prefix };\n }\n // ??? unused\n // export function extraShortDateText(date?: Date | null): string | null {\n// return stringFromDate('DD-MMM-YYYY', date);\n// }\n}\n","import i18n from '@/plugins/i18n';\nimport VueLocalizedFormatter from './formatter';\n\nexport default new VueLocalizedFormatter({ locale: i18n.locale, i18n });\n","export default {\n guestplan: {\n themes: {\n light: {\n primary: '#3355FF',\n secondary: '#1C1A27',\n accent: '#FF8262',\n brand: '#3355FF',\n error: '#FF002B',\n info: '#3355FF',\n success: '#00A26F',\n warning: '#FFC24E',\n },\n dark: {\n primary: '#fff',\n secondary: '#1C1A27',\n accent: '#FF8262',\n brand: '#3355FF',\n error: '#FF002B',\n info: '#3355FF',\n success: '#00A26F',\n warning: '#FFC24E',\n },\n },\n },\n booq: {\n themes: {\n light: {\n primary: '#3355FF',\n secondary: '#1C1A27',\n accent: '#FFC863',\n brand: '#EC6A38',\n error: '#FF002B',\n info: '#3355FF',\n success: '#00A26F',\n warning: '#FFC24E',\n },\n dark: {\n primary: '#fff',\n secondary: '#1C1A27',\n accent: '#FFC863',\n brand: '#EC6A38',\n error: '#FF002B',\n info: '#3355FF',\n success: '#00A26F',\n warning: '#FFC24E',\n },\n },\n },\n} as any;\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('svg',{staticClass:\"icon-guestplan\",attrs:{\"width\":\"128\",\"height\":\"128\",\"viewBox\":\"0 0 128 128\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\"}},[_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"d\":\"M112 98H117.431C124.183 87.9793 128 75.9253 128 63C128 50.0747 124.037 38.0207 117.431 28H112V98Z\"}}),_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"d\":\"M30 16H98V10.5688C88.2656 3.81651 76.556 0 64 0C51.444 0 39.7344 3.9633 30 10.5688V16Z\"}}),_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"d\":\"M98 112H30V117.431C39.7344 124.183 51.444 128 64 128C76.556 128 88.2656 124.037 98 117.431V112Z\"}}),_c('path',{attrs:{\"fill-rule\":\"evenodd\",\"clip-rule\":\"evenodd\",\"d\":\"M16 98V28H10.5688C3.81651 38.0207 0 50.0747 0 63C0 75.9253 3.9633 87.9793 10.5688 98H16Z\"}}),_c('rect',{attrs:{\"x\":\"30\",\"y\":\"28\",\"width\":\"68\",\"height\":\"70\"}})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconGuestplan.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconGuestplan.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconGuestplan.vue?vue&type=template&id=95646a7e&\"\nimport script from \"./IconGuestplan.vue?vue&type=script&lang=js&\"\nexport * from \"./IconGuestplan.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconGuestplan.vue?vue&type=style&index=0&id=95646a7e&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('svg',{staticClass:\"icon-walk-outline\",attrs:{\"version\":\"1.1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:xlink\":\"http://www.w3.org/1999/xlink\",\"x\":\"0px\",\"y\":\"0px\",\"width\":\"128px\",\"height\":\"128px\",\"viewBox\":\"0 0 128 128\",\"enable-background\":\"new 0 0 128 128\",\"xml:space\":\"preserve\"}},[_c('g',[_c('path',{attrs:{\"d\":\"M77.256,20.274c-3.105,7.176-11.423,10.463-18.601,7.377C51.5,24.56,48.212,16.242,51.307,9.086\\n c3.094-7.167,11.399-10.462,18.557-7.368C77.052,4.804,80.338,13.118,77.256,20.274L77.256,20.274z\"}}),_c('path',{attrs:{\"d\":\"M59.569,32.603c-1.322,0-2.605,0.428-3.653,1.212L39.742,45.827c-1.233,0.917-2.078,2.271-2.373,3.79\\n l-5.232,19.685c-1.548,8.03,10.513,10.343,12.053,2.3l4.783-17.333l4.255-3.165v19.614c0,1.606,0.561,3.165,1.548,4.426L73.21,98.68\\n l3.604,21.885c1.149,9.974,16.254,7.502,14.169-2.331l-3.867-23.718c-0.204-1.19-0.691-2.321-1.435-3.268L71.664,73.403l0.08-18.288\\n l4.815,6.886c0.491,0.685,1.11,1.265,1.834,1.702l13.185,8.062c6.98,4.275,13.383-6.198,6.4-10.462l-12.094-7.391L72.823,35.222\\n c-1.149-1.638-3.023-2.615-5.026-2.615L59.569,32.603z\"}}),_c('path',{attrs:{\"d\":\"M54.22,81.269l-3.045,11.39l-15.318,22.719c-6.055,8.062,6.708,16.661,11.91,8.021l16.013-23.696\\n c0.903-1.343,1.539-2.394,1.539-4.257L54.22,81.269z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconWalkOutline.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./IconWalkOutline.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./IconWalkOutline.vue?vue&type=template&id=73920b93&\"\nimport script from \"./IconWalkOutline.vue?vue&type=script&lang=js&\"\nexport * from \"./IconWalkOutline.vue?vue&type=script&lang=js&\"\nimport style0 from \"./IconWalkOutline.vue?vue&type=style&index=0&id=73920b93&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport Vuetify from 'vuetify/lib';\nimport theme from '@/theme/theme';\n\nimport IconGuestplan from '@/components/icons/IconGuestplan.vue';\nimport IconWalkOutline from '@/components/icons/IconWalkOutline.vue';\nimport '@mdi/font/css/materialdesignicons.css';\n\nimport en from 'vuetify/src/locale/en';\nimport nl from 'vuetify/src/locale/nl';\nimport de from 'vuetify/src/locale/de';\nimport it from 'vuetify/src/locale/it';\nimport cs from 'vuetify/src/locale/cs';\nimport sk from 'vuetify/src/locale/sk';\nimport fr from 'vuetify/src/locale/fr';\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n lang: {\n locales: {\n en, nl, de, it, cs, sk, fr,\n },\n current: 'en',\n },\n theme: theme[process.env.VUE_APP_BRAND!],\n icons: {\n iconfont: 'mdi',\n values: {\n guestplan: {\n component: IconGuestplan,\n props: {\n name: 'icon-guestplan',\n },\n },\n 'walk-outline': {\n component: IconWalkOutline,\n props: {\n name: 'icon-walk-outline',\n },\n },\n },\n },\n});\n","\nimport Vue from 'vue';\nimport Reservation, { ReservationStatus } from '@/model/Reservation';\nimport GuestList from '@/components/views/guests/GuestList.vue';\nimport GuestFilter from '@/components/views/guests/GuestFilter.vue';\nimport GuestFilterCompactBar from '@/components/views/guests/GuestFilterCompactBar.vue';\nimport ReservationsToolbar from '@/components/views/main/ReservationsToolbar.vue';\nimport KeyboardControl from '@/mixins/keyboard-control';\nimport GuestListPlaceholder from '@/components/views/guests/GuestListPlaceholder.vue';\n\nenum PlaceholderType { NONE, NOT_LOADED, NO_RESERVATION, NOT_OPEN, CLEAR_FILTER, ALL_FILTER }\n\nexport default Vue.extend({\n name: 'Guests',\n components: {\n GuestList,\n ReservationsToolbar,\n GuestFilter,\n GuestFilterCompactBar,\n GuestListPlaceholder,\n },\n mixins: [KeyboardControl],\n data() {\n return {\n filterVisible: false,\n };\n },\n\n computed: {\n reservations(): Reservation[] {\n return this.$tstore.getters.filteredReservationsNoBlocks;\n },\n reservationsByTime(): Map {\n return this.$tstore.getters.filteredReservationsNoBlocksByTimeText;\n },\n hasFilter(): boolean {\n return this.$tstore.getters.isFilter;\n },\n stats() {\n return this.$tstore.getters.dayStats;\n },\n showLunchDinnerStats() {\n return this.$tstore.state.settings.accountSettings.showLunchDinner ?? false;\n },\n showNotOpen(): boolean { return this.placeholderType === PlaceholderType.NOT_OPEN; },\n showNoReservation(): boolean { return this.placeholderType === PlaceholderType.NO_RESERVATION; },\n showClearFilter(): boolean { return this.placeholderType === PlaceholderType.CLEAR_FILTER; },\n showAllFilter(): boolean { return this.placeholderType === PlaceholderType.ALL_FILTER; },\n placeholderType() {\n const {\n isDateLoaded, isDayOpen,\n isDayReservationNoBlock, isDayValidForTodayReservationNoBlock, isDayFilteredReservationNoBlock,\n } = this.$tstore.getters;\n\n if (!isDateLoaded) return PlaceholderType.NOT_LOADED; // day reservation not loaded -> not loaded placehoder\n if (isDayFilteredReservationNoBlock) return PlaceholderType.NONE; // some reservations passed filter -> no p.\n if (isDayValidForTodayReservationNoBlock) return PlaceholderType.CLEAR_FILTER; // some valid res. -> clear f. p.\n if (isDayReservationNoBlock) return PlaceholderType.ALL_FILTER; // some invalid reservations -> all filter p.\n if (!isDayOpen) return PlaceholderType.NOT_OPEN; // not open -> not open placehoder\n return PlaceholderType.NO_RESERVATION; // is open but no reservation -> no reservation placeholder\n },\n },\n watch: {\n hasFilter() {\n if (this.hasFilter) { return; }\n this.filterVisible = false;\n },\n },\n methods: {\n filterBtnClicked() {\n if (this.hasFilter && this.$vuetify.breakpoint.smAndUp) {\n this.$tstore.dispatch('resetFilter');\n } else {\n this.filterVisible = !this.filterVisible;\n }\n },\n clearFilter() {\n this.$tstore.dispatch('resetFilter');\n },\n applyAllFilter() {\n this.$tstore.dispatch('applyAllFilter');\n },\n applyWaitlistFilter() {\n this.$tstore.dispatch('applyFilter', { status: ReservationStatus.WaitingList });\n },\n },\n});\n\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reservations-toolbar',{attrs:{\"reservations\":_vm.reservations},on:{\"click:waitlist\":_vm.applyWaitlistFilter},scopedSlots:_vm._u([{key:\"buttons\",fn:function(){return [_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.filterBtnClicked}},[_c('v-icon',[_vm._v(\" \"+_vm._s(_vm.hasFilter ? 'mdi-filter' : 'mdi-filter-outline')+\" \")])],1)]},proxy:true}])},[_c('div',[_c('div',{staticClass:\"text-body-2 align-left pl-0 pl-md-1 text--secondary\"},[(!(_vm.$vuetify.breakpoint.xsOnly && _vm.showLunchDinnerStats))?[_c('span',{staticClass:\"d-block d-sm-inline\"},[_vm._v(_vm._s(_vm.$t('label.reservations'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.stats.reservations))]),(_vm.$vuetify.breakpoint.smAndUp)?_c('span',[_vm._v(\" / \")]):_vm._e()]),(_vm.$vuetify.breakpoint.smAndUp)?_c('span',[_vm._v(_vm._s(_vm.$t('label.tables'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.stats.tables))]),(_vm.$vuetify.breakpoint.smAndUp)?_c('span',[_vm._v(\" / \")]):_vm._e()]):_vm._e(),_c('span',{staticClass:\"d-block d-sm-inline\"},[_vm._v(_vm._s(_vm.$t('label.guests'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.stats.guests))])])]:_vm._e()],2),(_vm.showLunchDinnerStats)?_c('div',{staticClass:\"text-body-2 align-left pl-0 pl-md-1 text--secondary pb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.lunch_dinner'))+\" \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.stats.lunch))]),_vm._v(\" / \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.stats.dinner))])]):_vm._e()])])]},proxy:true}])},[(_vm.filterVisible || _vm.hasFilter)?[_c('guest-filter',{attrs:{\"compact\":_vm.$vuetify.breakpoint.xsOnly,\"visible\":_vm.filterVisible},on:{\"close\":function($event){_vm.filterVisible = false}}})]:_vm._e(),(_vm.$vuetify.breakpoint.xsOnly && _vm.hasFilter)?[_c('guest-filter-compact-bar'),_c('v-divider')]:_vm._e(),(_vm.showNotOpen)?_c('guest-list-placeholder',{attrs:{\"title\":_vm.$t('placeholder.no_availability')}}):(_vm.showNoReservation)?_c('guest-list-placeholder',{attrs:{\"title\":_vm.$t('placeholder.no_reservations')}}):(_vm.showClearFilter)?_c('guest-list-placeholder',{attrs:{\"title\":_vm.$t('placeholder.no_matching_reservations'),\"button-title\":_vm.$t('button.clear_filter')},on:{\"click\":_vm.clearFilter}}):(_vm.showAllFilter)?_c('guest-list-placeholder',{attrs:{\"title\":_vm.$t('placeholder.no_planned_reservations'),\"button-title\":_vm.$t('button.show_all')},on:{\"click\":_vm.applyAllFilter}}):_c('guest-list',{attrs:{\"reservations-by-time\":_vm.reservationsByTime}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-list',{staticClass:\"py-0\"},[_c('v-list-item-group',{attrs:{\"value\":_vm.selected,\"active-class\":\"primary--text\"},on:{\"change\":_vm.selectedChange}},[_vm._l((_vm.reservationsByTime.entries()),function([slot, reservationsForSlot]){return [_c('guest-list-header-row',{key:slot,attrs:{\"title\":_vm.$localized.hourMinTextFrom24hr(slot)}}),_c('div',{key:`grp-${slot}`,staticClass:\"gp-guest-list-group\"},[_vm._l((reservationsForSlot),function(reservation,i){return [_c('guest-list-row',{key:reservation.id,staticClass:\"gp-guest-list\",attrs:{\"reservation\":reservation,\"waitlist-list-order\":_vm.waitingListOrderForReservation.get(reservation.id),\"overbooked-tab-items\":_vm.overbookedTabItemsForReservation.get(reservation.id),\"unread-reservations\":\"\",\"compact\":_vm.$vuetify.breakpoint.xsOnly}}),_c('v-divider',{key:`${slot}_${i}`})]})],2)]})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue, { PropType } from 'vue';\nimport Reservation from '@/model/Reservation';\nimport { mapActions } from 'vuex';\nimport { tryEditReservation, tryCloseEditReservation } from '@/services/reservation-edit-utils';\nimport { isOngoingReservation } from '@/services/reservation-utils';\nimport GuestListRow from './GuestListRow.vue';\nimport GuestListHeaderRow from './GuestListHeaderRow.vue';\n\nexport default Vue.extend({\n name: 'GuestList',\n components: { GuestListRow, GuestListHeaderRow },\n props: {\n reservationsByTime: { type: Map as PropType>, required: true },\n },\n data: () => ({\n selected: undefined as undefined | number,\n }),\n computed: {\n edited(): number | undefined {\n return this.$tstore.getters.editReservation?.id;\n },\n waitingListOrderForReservation(): Map {\n const orderForWaitingReservation = this.$tstore.getters.orderForWaitingReservation as Map;\n return orderForWaitingReservation;\n },\n overbookedTabItemsForReservation(): Map|undefined> {\n return this.$tstore.getters.dayOverbookedTabItemsForReservationId;\n },\n },\n watch: {\n edited() {\n this.selected = this.edited;\n },\n },\n mounted() {\n this.selected = this.$tstore.getters.editReservation?.id;\n },\n methods: {\n async selectedChange(reservationId: number | undefined) {\n this.selected = reservationId;\n\n const { reservationsById } = this.$tstore.state.reservations;\n const reservation = reservationId ? reservationsById[reservationId] : undefined;\n if (reservation === undefined) await tryCloseEditReservation();\n else {\n await tryEditReservation(this.$router, reservation);\n }\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestList.vue?vue&type=template&id=24f03719&\"\nimport script from \"./GuestList.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestList.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GuestList.vue?vue&type=style&index=0&id=24f03719&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.compact)?[_c('modal-dialog',{attrs:{\"visible\":_vm.visible,\"persistent\":\"\",\"max-width\":\"290\",\"title\":_vm.$t('title.filter')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.ok'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.resetFilter}},[_vm._v(\" \"+_vm._s(_vm.$t('button.clear_filter'))+\" \")])]},proxy:true}],null,false,1541524278)},[_c('v-row',{staticClass:\"mt-2\"},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('time-picker-field',{staticClass:\"pa-0 ma-0\",attrs:{\"value\":_vm.filterTimeFrom,\"hide-details\":\"\",\"label\":_vm.$t('label.filter_time_from'),\"append-outer-icon\":_vm.filterTimeFromDirty ? 'mdi-close' : null},on:{\"click-append-outer\":function($event){return _vm.changeFilterTimeFrom(null)},\"input\":_vm.changeFilterTimeFrom}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('time-picker-field',{staticClass:\"pa-0 ma-0\",attrs:{\"value\":_vm.filterTimeTo,\"hide-details\":\"\",\"label\":_vm.$t('label.filter_time_until'),\"append-outer-icon\":_vm.filterTimeToDirty ? 'mdi-close' : null},on:{\"click-append-outer\":function($event){return _vm.changeFilterTimeTo(null)},\"input\":_vm.changeFilterTimeTo}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"value\":_vm.filterSection,\"hide-details\":\"\",\"items\":_vm.filterSectionItems,\"append-outer-icon\":_vm.filterSectionDirty ? 'mdi-close' : null,\"label\":_vm.$t('label.section')},on:{\"click-append-outer\":function($event){return _vm.changeFilterSection(null)},\"input\":_vm.changeFilterSection}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"value\":_vm.filterStatus,\"hide-details\":\"\",\"items\":_vm.filterStatusItems,\"append-outer-icon\":_vm.filterStatusDirty ? 'mdi-close' : null,\"label\":_vm.$t('label.status')},on:{\"click-append-outer\":function($event){return _vm.changeFilterStatus(null)},\"input\":_vm.changeFilterStatus}})],1)],1)],1)]:[_c('v-row',{staticClass:\"d-flex pt-0 ma-0 pl-2 pr-2\"},[_c('v-col',{staticClass:\"d-flex pa-0 pl-2 pr-1 ma-0 align-center\"},[_c('div',{staticStyle:{\"width\":\"80px\"}},[_c('time-picker-field',{staticClass:\"pa-0 ma-0\",attrs:{\"dense\":\"\",\"hide-details\":\"\",\"label\":_vm.$t('label.filter_time_from'),\"append-outer-icon\":_vm.filterTimeFromDirty ? 'mdi-close' : null},on:{\"click-append-outer\":function($event){return _vm.changeFilterTimeFrom(null)},\"input\":_vm.changeFilterTimeFrom},model:{value:(_vm.filterTimeFrom),callback:function ($$v) {_vm.filterTimeFrom=$$v},expression:\"filterTimeFrom\"}})],1),_c('div',{staticClass:\"pa-5\"},[_vm._v(\" - \")]),_c('div',{staticStyle:{\"width\":\"80px\"}},[_c('time-picker-field',{staticClass:\"pa-0 ma-0\",attrs:{\"dense\":\"\",\"hide-details\":\"\",\"label\":_vm.$t('label.filter_time_until'),\"append-outer-icon\":_vm.filterTimeToDirty ? 'mdi-close' : null},on:{\"click-append-outer\":function($event){return _vm.changeFilterTimeTo(null)},\"input\":_vm.changeFilterTimeTo},model:{value:(_vm.filterTimeTo),callback:function ($$v) {_vm.filterTimeTo=$$v},expression:\"filterTimeTo\"}})],1)]),_c('v-col',{staticClass:\"flex-shrink-1 pa-0 ma-0\"}),_c('v-col',{staticClass:\"pa-0 ma-0 d-flex align-center\",staticStyle:{\"max-width\":\"270px\"}},[_c('v-select',{staticClass:\"pl=5 pr-5\",attrs:{\"dense\":\"\",\"height\":\"26\",\"hide-details\":\"\",\"items\":_vm.filterSectionItems,\"label\":_vm.$t('label.section'),\"append-outer-icon\":_vm.filterSectionDirty ? 'mdi-close' : null},on:{\"click:append-outer\":function($event){return _vm.changeFilterSection(null)},\"input\":_vm.changeFilterSection},model:{value:(_vm.filterSection),callback:function ($$v) {_vm.filterSection=$$v},expression:\"filterSection\"}})],1),_c('div',{staticClass:\"pr-2 pa-0 ma-0 d-flex align-center\"},[_c('v-select',{staticClass:\"filter-status-select\",staticStyle:{\"width\":\"180px\"},attrs:{\"value\":_vm.filterStatus,\"dense\":\"\",\"hide-details\":\"\",\"items\":_vm.filterStatusItems,\"label\":_vm.$t('label.status'),\"append-outer-icon\":_vm.filterStatusDirty ? 'mdi-close' : null},on:{\"click:append-outer\":function($event){return _vm.changeFilterStatus(null)},\"input\":_vm.changeFilterStatus},scopedSlots:_vm._u([{key:\"item\",fn:function({item}){return [_c('span',{staticClass:\"d-block w-100\"},[_vm._v(_vm._s(item.text))]),(_vm.colorForStatus(item.value))?_c('div',{staticClass:\"text-right\"},[_c('v-icon',{attrs:{\"x-small\":\"\",\"color\":_vm.colorForStatus(item.value)}},[_vm._v(\" mdi-circle \")])],1):_vm._e()]}},{key:\"append\",fn:function(){return [(_vm.colorForStatus(_vm.filterStatus))?_c('v-icon',{staticStyle:{\"padding-top\":\"7px\"},attrs:{\"x-small\":\"\",\"color\":_vm.colorForStatus(_vm.filterStatus)}},[_vm._v(\" mdi-circle \")]):_vm._e()]},proxy:true}])})],1)],1)]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue, { PropType } from 'vue';\nimport { ReservationStatus } from '@/model/Reservation';\nimport { reservationStatusAllItems, reservationStatusItems } from '@/util/status';\nimport ClosableDialog from '@/mixins/dialog-closable';\nimport Tab from '@/model/Tab';\nimport { colorForStatus } from '@/components/helpers/colors';\n\nexport default Vue.extend({\n name: 'GuestFilter',\n components: { },\n mixins: [ClosableDialog],\n props: {\n compact: { type: Boolean, required: false, default: true },\n },\n data() {\n return {\n filterStatusItems: reservationStatusAllItems(),\n statusItems: reservationStatusItems(),\n };\n },\n computed: {\n filterTimeTo(): string { return this.$tstore.state.filter.to; },\n filterTimeFrom(): string { return this.$tstore.state.filter.from; },\n filterStatus(): ReservationStatus { return this.$tstore.state.filter.status; },\n filterSection(): Tab | null { return this.$tstore.state.filter.tab; },\n filterSectionItems() {\n return [\n { text: this.$i18n.t('label.all_sections'), value: null },\n { divider: true },\n ...this.$tstore.state.settings.tabs,\n ];\n },\n filterTimeFromDirty(): boolean { return this.$tstore.getters.isFilterFrom; },\n filterTimeToDirty(): boolean { return this.$tstore.getters.isFilterTo; },\n filterStatusDirty(): boolean { return this.$tstore.getters.isFilterStatus; },\n filterSectionDirty(): boolean { return this.$tstore.getters.isFilterTab; },\n },\n methods: {\n resetFilter() {\n this.$tstore.dispatch('resetFilter');\n this.$emit('close', false);\n },\n applyFilter(p: { from?: string | null, to?: string | null, status?: ReservationStatus | null, tab?: Tab | null }) {\n this.$tstore.dispatch('applyFilter', p);\n },\n changeFilterTimeFrom(value: string | null) { this.applyFilter({ from: value }); },\n changeFilterTimeTo(value: string | null) { this.applyFilter({ to: value }); },\n changeFilterSection(value: number | null) {\n const tab = this.$tstore.state.settings.tabs.find((t) => t.id === value) ?? null;\n this.applyFilter({ tab });\n },\n changeFilterStatus(value: ReservationStatus | null) { this.applyFilter({ status: value }); },\n close() {\n this.$emit('close', false);\n },\n colorForStatus(status: ReservationStatus) {\n if (!this.isStatus(status)) return undefined;\n return colorForStatus(status);\n },\n isStatus(status: ReservationStatus) {\n return this.statusItems.find((si) => si.value === status);\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestFilter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestFilter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestFilter.vue?vue&type=template&id=06f245e1&scoped=true&\"\nimport script from \"./GuestFilter.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestFilter.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GuestFilter.vue?vue&type=style&index=0&id=06f245e1&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"06f245e1\",\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',{class:_vm.dark ? 'black' : 'white'},[_c('v-row',{staticClass:\"pa-0 ma-0 d-flex align-center\"},[_c('v-col',{staticClass:\"flex-grow-1 pl-4 pt-1 pb-1\",staticStyle:{\"line-height\":\"1\"}},[_vm._l((_vm.filterText),function(r,i){return [_c('span',{key:i+'_title',staticClass:\"text-body-2 text--secondary mt-0 mb-0 pt-0 pb-0\"},[_vm._v(_vm._s(r.title))]),_c('span',{key:i+'_val',staticClass:\"text-body-2 pl-1 mr-1 font-weight-medium text--secondary\"},[_vm._v(_vm._s(r.val)+\" \")])]})],2),_c('v-col',{staticClass:\"mr-2 pa-0 ma-0 align-center\",staticStyle:{\"min-width\":\"36px\"},attrs:{\"cols\":\"1\"}},[_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.resetFilter}},[_c('v-icon',[_vm._v(\" mdi-close \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue, { PropType } from 'vue';\nimport { ReservationStatus } from '@/model/Reservation';\n\nexport default Vue.extend({\n name: 'GuestFilterCompactBar',\n components: { },\n props: { },\n data() {\n return { };\n },\n computed: {\n dark(): boolean {\n return this.$vuetify.theme.dark;\n },\n filterText(): Record[] {\n const ret = [];\n\n if (this.$tstore.state.filter.from !== '06:00') {\n ret.push({\n title: `${this.$i18n.tc('label.filter_time_from')}:`,\n val: this.$tstore.state.filter.from,\n });\n }\n\n if (this.$tstore.state.filter.to !== '24:00') {\n ret.push({\n title: `${this.$i18n.tc('label.filter_time_until')}:`,\n val: this.$tstore.state.filter.to,\n });\n }\n\n if (this.$tstore.state.filter.tab !== null) {\n ret.push({\n title: `${this.$i18n.tc('label.section')}:`,\n val: this.$tstore.state.filter.tab.name.replace(/ /g, '\\u00a0'),\n });\n }\n\n if (this.$tstore.state.filter.status !== ReservationStatus.Valid) {\n ret.push({\n title: `${this.$i18n.tc('label.status')}:`,\n val: this.$i18n.tc(`code.status.${this.$tstore.state.filter.status}`),\n });\n }\n\n return ret;\n },\n },\n methods: {\n resetFilter() {\n this.$tstore.dispatch('resetFilter');\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestFilterCompactBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestFilterCompactBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestFilterCompactBar.vue?vue&type=template&id=86884934&\"\nimport script from \"./GuestFilterCompactBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestFilterCompactBar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_setup.waitlistDialog)?_c(_setup.ReservationResultsDialog,{attrs:{\"visible\":\"\",\"title\":_vm.$t('title.reservations_on_wait_list'),\"reservations\":_setup.waitlistReservations},on:{\"close\":function($event){_setup.waitlistDialog = false}}}):_vm._e(),(_vm.daynoteVisible)?_c(_setup.DayNoteBar,{attrs:{\"compact\":_vm.$vuetify.breakpoint.mdAndDown,\"on-delete\":_setup.removeDayNote,\"on-edit\":_setup.editDayNote}}):_vm._e(),(_setup.dayNoteDialog)?_c(_setup.DayNoteEditDialog,{attrs:{\"day-note\":_setup.selectedDayNote,\"visible\":_setup.dayNoteDialog},on:{\"confirm\":_setup.saveSelectedDayNote,\"close\":_setup.closeDayNoteDialog}}):_vm._e(),(_setup.deleteDayNoteConfirmation)?_c(_setup.ConfirmationDialog,{attrs:{\"visible\":_setup.deleteDayNoteConfirmation,\"message\":_vm.$t('message.confirm_delete_daynote')},on:{\"confirm\":_setup.removeSelectedDayNote,\"close\":function($event){_setup.deleteDayNoteConfirmation=false}}}):_vm._e(),_c(_setup.MainToolbar,{scopedSlots:_vm._u([{key:\"buttons.prepend\",fn:function(){return [_vm._t(\"buttons.prepend\"),(_setup.waitlistReservations.length > 0)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_setup.waitlistClicked}},[_c('v-badge',{attrs:{\"content\":_setup.waitlistReservations.length,\"color\":\"purple darken-3\",\"overlap\":\"\",\"small\":\"\"}},[_c('v-icon',[_vm._v(\"mdi-account-clock-outline\")])],1)],1):_vm._e(),_vm._t(\"buttons\"),(_vm.printVisible)?_c('v-btn',{staticClass:\"pr-0\",attrs:{\"icon\":\"\"},on:{\"click\":_setup.print}},[_c('v-icon',[_vm._v(\"mdi-printer-outline\")])],1):_vm._e(),(_vm.daynoteVisible)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _setup.addDayNote()}}},[_c('v-icon',[_vm._v(\"mdi-message-outline\")])],1):_vm._e()]},proxy:true},{key:\"buttons.append\",fn:function(){return [_vm._t(\"buttons.append\")]},proxy:true}],null,true)},[_vm._t(\"default\"),(_vm.daynoteVisible || _vm.printVisible)?_c('v-spacer'):_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.dayNotes.length>0)?_c('v-container',{class:['daynote-bar text-center pa-0 ma-0', {'pa-2': !_vm.compact}, {'theme--dark': _vm.$vuetify.theme.dark}],attrs:{\"fluid\":\"\"}},[_vm._l((_vm.dayNotes),function(dn,i){return [_c('v-sheet',{key:i,class:['ma-0 pa-0', {'pa-1': _vm.compact}, {'mb-2': !_vm.compact && i !== _vm.dayNotes.length - 1}],attrs:{\"elevation\":_vm.compact ? 0 : 2,\"color\":_vm.barColor(dn),\"text\":\"\"}},[_c('v-row',{staticClass:\"d-flex align-center pa-0 ma-0\",on:{\"click\":function($event){return _vm.onEdit(dn)}}},[_c('v-col',{staticClass:\"cursor-pointer flex-grow-1 pa-0 ma-0\"},[_c('span',{style:(`color: ${_vm.textColor(dn)}`)},[_vm._v(_vm._s(dn.text))])]),_c('v-col',{staticClass:\"pa-0 ma-0 mr-1\",staticStyle:{\"min-width\":\"26px\",\"max-width\":\"26px\"},attrs:{\"cols\":\"1\"}},[_c('v-btn',{staticClass:\"pa-0 ma-0\",staticStyle:{\"opacity\":\"0.85\"},attrs:{\"icon\":\"\",\"small\":\"\",\"color\":_vm.textColor(dn)},on:{\"click\":function($event){$event.stopPropagation();return _vm.onDelete(dn)}}},[_c('v-icon',[_vm._v(\" mdi-close-box \")])],1)],1)],1)],1)]})],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue, { PropType } from 'vue';\nimport DayNote from '@/model/DayNote';\nimport { contrastForColor } from '@/services/color-utils';\n\nexport default Vue.extend({\n name: 'DayNoteBar',\n components: { },\n props: {\n compact: { type: Boolean, required: false, default: false },\n onDelete: { type: Function as PropType<((dayNote: DayNote) => void)>, required: true },\n onEdit: { type: Function as PropType<((dayNote: DayNote) => void)>, required: true },\n },\n data() {\n return { };\n },\n computed: {\n dayNotes(): DayNote[] {\n return this.$tstore.getters.dayDayNotes;\n },\n },\n methods: {\n barColor(dn: DayNote): string {\n if (!dn.color) return this.$vuetify.theme.dark ? '#000000' : '#eeeeee';\n return dn.color;\n },\n textColor(dn: DayNote): string {\n return contrastForColor(this.barColor(dn));\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DayNoteBar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DayNoteBar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DayNoteBar.vue?vue&type=template&id=d01bbeb4&scoped=true&\"\nimport script from \"./DayNoteBar.vue?vue&type=script&lang=ts&\"\nexport * from \"./DayNoteBar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./DayNoteBar.vue?vue&type=style&index=0&id=d01bbeb4&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d01bbeb4\",\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('v-dialog',{attrs:{\"persistent\":\"\",\"max-width\":\"500\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-card-title',{staticClass:\"text-h5\"}),_c('v-card-text',[_c('v-form',{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.onClickOk.apply(null, arguments)}}},[_c('validation-observer',{ref:\"observer\"},[_c('validation-provider',{scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-text-field',{ref:\"inputField\",attrs:{\"label\":_vm.$t('title.day_note'),\"error-messages\":errors,\"autocomplete\":\"off\",\"autofocus\":\"\",\"aria-autocomplete\":\"off\",\"name\":\"notASearchField\",\"role\":\"presentation\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onClickOk.apply(null, arguments)}},model:{value:(_vm.text),callback:function ($$v) {_vm.text=$$v},expression:\"text\"}})]}}])})],1),_c('v-color-picker',{staticClass:\"mx-auto no-slider\",attrs:{\"type\":\"hex\",\"mode\":\"hexa\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches\":_vm.swatches,\"width\":\"334\",\"swatches-max-height\":\"300\",\"flat\":\"\"},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}})],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":function($event){return _vm.onClickOk()}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.ok'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":function($event){return _vm.onClickCancel()}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { ValidationObserver } from 'vee-validate';\nimport DayNote from '@/model/DayNote';\nimport { cloneModel } from '@/model/model-utils';\n\nexport default Vue.extend({\n mixins: [DialogClosable],\n props: {\n dayNote: { type: Object as PropType, required: true },\n },\n data: () => ({\n text: '',\n color: '#ffffff00',\n swatches: [\n ['#ffffff00', '#0011A3ff', '#8599ffff'],\n ['#4c000dff', '#ff002bff', '#ff99aaff'],\n ['#664e1fff', '#ffc24eff', '#ffe1a7ff'],\n ['#003121ff', '#00A26Fff', '#99dac5ff'],\n ['#663427ff', '#FF8262ff', '#ffcdc0ff'],\n ['#440d3eff', '#E42DD0ff', '#f7c0f1ff'],\n ],\n }),\n watch: {\n // value() {\n // this.dayNote = this.value;\n // },\n // hack to ensure input field is focused & keyboard visible even on iOS\n visible(val) {\n if (!val) {\n return;\n }\n setTimeout(() => {\n const tfElm = ((this.$refs.inputField as Vue).$refs.input as HTMLInputElement);\n tfElm.focus();\n }, 250);\n },\n },\n created() {\n this.text = this.dayNote.text ?? '';\n let color = this.dayNote.color ? this.dayNote.color?.toLowerCase() : '#ffffff00';\n if (color.length === 7) color += 'ff';\n this.color = color;\n },\n methods: {\n close() {\n this.$emit('close', true);\n },\n async onClickOk() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) return;\n\n const value = cloneModel(this.dayNote);\n value.text = this.text;\n value.color = this.color.toLowerCase().startsWith('#ffffff') ? undefined : this.color.toLowerCase().slice(0, 7);\n this.$emit('confirm', value);\n },\n async onClickCancel() {\n this.close();\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DayNoteEditDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DayNoteEditDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DayNoteEditDialog.vue?vue&type=template&id=28593653&\"\nimport script from \"./DayNoteEditDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./DayNoteEditDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default \"\\n \\n \\n \\n \\n \\n \\n \\n

\\n
\\n
\\n \\n
\\n

{{accountName}}

\\n
\\n
\\n
\\n {{reportDate}}\\n
\\n
\\n
\\n
\\n {{{stats}}}
\\n\\n {{#showDayStats}}\\n {{{dayStats}}}\\n {{/showDayStats}}\\n
\\n
\\n {{#dayNotes}}\\n
„{{text}}“
\\n {{/dayNotes}}\\n {{#filterText.length}}\\n
\\n
\\n
\\n {{{filterText}}}\\n
\\n
\\n {{/filterText.length}}\\n\\n {{^reservations.length}}\\n
\\n
{{i18n.noReservations}}
\\n
\\n {{/reservations.length}}\\n \\n {{#reservationsByTime}}\\n
\\n
\\n
{{label}}
\\n
\\n \\n {{#reservations}}\\n \\n
\\n {{#isFlagged}}\\n
\\n \\n
\\n {{/isFlagged}}\\n \\n
\\n {{partySize}}p.\\n
\\n\\n {{#isStarred}}\\n
\\n ★\\n
\\n {{/isStarred}}\\n\\n
\\n \\n
\\n {{#contact.isVIP}}\\n
\\n \\n
\\n {{/contact.isVIP}}\\n {{#contact.name}}\\n {{contact.name}}\\n {{/contact.name}}\\n {{^contact.name}}\\n {{i18n.noName}}\\n {{/contact.name}}\\n\\n {{contact.reservationCount}}\\n
\\n {{#contact.companyName}}\\n
{{contact.companyName}}
\\n {{/contact.companyName}}\\n
\\n
\\n\\n {{#paymentInfo}}\\n
{{paymentInfo}}
\\n {{/paymentInfo}}\\n\\n {{#service}}\\n
{{service}}
\\n {{/service}}\\n\\n {{#fixedEnding}}\\n
{{i18n.ends}}: {{dateEndText}}
\\n {{/fixedEnding}}\\n\\n {{#label}}\\n
\\n {{label}}\\n
\\n {{/label}}\\n\\n
\\n
\\n
{{tabItems}}
\\n
{{tab}}
\\n
\\n
\\n {{status}}\\n
\\n
\\n {{#notes.length}}\\n
\\n
{{notes}}
\\n
\\n {{/notes.length}}\\n
\\n\\n
\\n {{/reservations}}\\n
\\n {{/reservationsByTime}}\\n\\n
\\n
\\n {{i18n.printedOn}}: {{printDate}}\\n
\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n
\\n
\\n\\n\\n\\n \\n \\n\";","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, PropType, ref } from 'vue';\nimport DayNoteBar from '@/components/views/main/DayNoteBar.vue';\nimport DayNoteEditDialog from '@/components/views/main/DayNoteEditDialog.vue';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport DayNote from '@/model/DayNote';\nimport { performSaveAction, performAction } from '@/services/vue-utils';\nimport { cloneModel } from '@/model/model-utils';\nimport Mustache from 'mustache';\nimport templateGuests from '@/../static/guests.mustache';\nimport Reservation, { ReservationStatus } from '@/model/Reservation';\nimport store from '@/store/store';\nimport i18n from '@/plugins/i18n';\nimport Contact from '@/model/Contact';\nimport { mapBySlotToMapByTimeText, toSortedMapBySlot } from '@/services/reservations-utils';\nimport { useLocalized } from '@/components/helpers/vue2-helpers';\nimport ReservationResultsDialog from '@/components/views/reservation/ReservationResultsDialog.vue';\nimport MainToolbar from './MainToolbar.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ReservationsToolbar',\n props: {\n printVisible: { type: Boolean as PropType, required: false, default: true },\n daynoteVisible: { type: Boolean as PropType, required: false, default: true },\n reservations: { type: Array as PropType>, required: false, default: () => [] },\n waitlistPopout: { type: Boolean as PropType, required: false, default: false },\n},\n emits: ['click:waitlist'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst localized = useLocalized();\n\n\n\n\n\n// Waitlist popout\nconst waitlistDialog = ref(false);\n\nconst waitlistReservations = computed(() => store.getters.dayReservations\n .filter((r: Reservation) => r.status === ReservationStatus.WaitingList));\n\nconst waitlistClicked = () => {\n if (props.waitlistPopout) {\n waitlistDialog.value = true;\n return;\n }\n emit('click:waitlist');\n};\n\n// Day Note\nconst dayNoteDialog = ref(false);\nconst deleteDayNoteConfirmation = ref(false);\nconst selectedDayNote = ref(new DayNote());\n\nconst removeDayNote = (dayNote: DayNote) => {\n selectedDayNote.value = cloneModel(dayNote);\n delete selectedDayNote.value.text;\n deleteDayNoteConfirmation.value = true;\n};\n\nconst editDayNote = (dayNote: DayNote) => {\n selectedDayNote.value = cloneModel(dayNote);\n dayNoteDialog.value = true;\n};\n\nconst addDayNote = () => {\n selectedDayNote.value = new DayNote();\n selectedDayNote.value.date = store.state.update.date;\n dayNoteDialog.value = true;\n};\n\nconst closeDayNoteDialog = () => { dayNoteDialog.value = false; };\n\nconst saveSelectedDayNote = async (dayNote: DayNote) => {\n const ok = await performSaveAction(\n undefined,\n async () => store.dispatch('sendDayNote', { entity: dayNote }),\n );\n if (ok) closeDayNoteDialog();\n};\n\nconst removeSelectedDayNote = async (dayNote: DayNote) => {\n if (!selectedDayNote.value) return;\n\n const ok = await performAction(\n i18n.tc('message.success_daynote_deleted'),\n i18n.tc('error.deleting_day_note'),\n async () => store.dispatch('sendDayNote', { entity: selectedDayNote.value }),\n );\n};\n\n// Print\n\nclass ReservationForExport {\n tab?: string | null;\n\n partySize: number;\n\n dateEndText: string | null;\n\n fixedEnding: boolean;\n\n contact: Contact;\n\n status: string;\n\n label?: string | null;\n\n service?: string | null;\n\n isStarred: boolean;\n\n isFlagged: boolean;\n\n notes: string | null;\n\n tabItems: string | null;\n\n paymentInfo?: string;\n\n constructor(r: Reservation) {\n this.tab = r.tab?.name;\n this.partySize = r.partySize;\n this.dateEndText = localized.hourMinText(r.dateEnd);\n this.fixedEnding = r.fixedEnding || false;\n this.contact = r.contact;\n this.status = i18n.tc(`code.status.${r.statusText}`);\n this.label = r.label?.text;\n this.service = r.service?.text;\n this.isStarred = r.isStarred || false;\n this.isFlagged = r.isFlagged || false;\n this.notes = '';\n if (r.contact.phone) {\n this.notes = `✆ ${r.contact.phone}`;\n }\n if (r.notes) {\n this.notes = `${this.notes} ${this.notes.length > 0 ? ' | ' : ''}${i18n.t('label.note')}: ${r.notes}`;\n }\n this.tabItems = r.tabItems.map((t) => t.no).join(', ');\n this.paymentInfo = r.paymentInfo;\n }\n}\n\nconst dayNotes = computed(() => store.getters.dayDayNotes);\nconst accountName = computed(() => store.state.settings.account.accountName ?? 'N/A');\nconst dayStats = computed(() => store.getters.dayStats);\nconst showDayStats = computed(() => store.state.settings.accountSettings.showLunchDinner ?? true);\nconst filterText = computed(() => {\n const { filter } = store.state;\n let ret = '';\n if (filter.from !== '06:00') {\n ret = `${i18n.tc('label.filter_time_from')}:${localized.hourMinTextFrom24hr(filter.from.toString())}`;\n }\n if (filter.to !== '24:00') {\n ret = `${ret} ${i18n.tc('label.filter_time_until')}:${localized.hourMinTextFrom24hr(filter.to.toString())}`;\n }\n if (filter.tab !== null) {\n ret = `${ret} ${i18n.tc('label.section')}:${filter.tab.name.replace(/ /g, '\\u00a0')}`;\n }\n if (filter.status !== ReservationStatus.Valid) {\n ret = `${ret} ${i18n.tc('label.status')}: ${filter.status}`;\n }\n return ret;\n});\n\nconst reservationsByTime = computed(() => {\n if (props.reservations.length === 0) {\n return [];\n }\n\n const reservationsBySlot = toSortedMapBySlot(props.reservations);\n const reservationsByTimeMap = mapBySlotToMapByTimeText(reservationsBySlot);\n\n const ret = [] as any;\n reservationsByTimeMap.forEach((value: Reservation[], key: string) => {\n const r = [] as any;\n value.forEach((reservation) => {\n r.push(new ReservationForExport(reservation));\n });\n ret.push({ label: localized.hourMinTextFrom24hr(key), reservations: r });\n });\n return ret;\n});\n\nconst print = () => {\n const totalGuests = props.reservations.reduce((s, r) => s + r.partySize, 0);\n const tabItems = new Set(props.reservations.flatMap((r) => r.tabItems).map((ti) => ti.id));\n\n const rendered = Mustache.render(templateGuests, {\n i18n: {\n noReservations: i18n.tc('placeholder.no_reservations'),\n note: i18n.tc('label.note'),\n printedOn: i18n.tc('label.printed_on'),\n noName: i18n.tc('placeholder.no_name'),\n ends: i18n.tc('label.reservation_ending_time'),\n print: i18n.tc('button.print'),\n close: i18n.tc('button.close'),\n },\n printDebug: process.env.VUE_APP_DEBUG_EXPORT_PRINT_DIALOG === 'true',\n reservations: props.reservations,\n reservationsByTime: reservationsByTime.value,\n reportDate: localized.dateText(store.state.update.date),\n printDate: localized.dateTimeText(new Date()),\n filterText: filterText.value,\n accountName: accountName.value,\n stats: i18n.t('label.reservations_x_tables_x_guests_x', [props.reservations.length, tabItems.size, totalGuests]),\n showDayStats: showDayStats.value,\n dayStats: `${i18n.t('label.lunch_dinner')} ${dayStats.value.lunch} / ${dayStats.value.dinner}`,\n dayNotes: dayNotes.value,\n });\n\n const newWin = window.open('', 'windowName', 'height=924,width=810');\n newWin!.document.write(rendered);\n newWin!.document.close();\n newWin!.focus();\n};\n\n\nreturn { __sfc: true,localized, props, emit, waitlistDialog, waitlistReservations, waitlistClicked, dayNoteDialog, deleteDayNoteConfirmation, selectedDayNote, removeDayNote, editDayNote, addDayNote, closeDayNoteDialog, saveSelectedDayNote, removeSelectedDayNote, ReservationForExport, dayNotes, accountName, dayStats, showDayStats, filterText, reservationsByTime, print, DayNoteBar, DayNoteEditDialog, ConfirmationDialog, ReservationResultsDialog, MainToolbar }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationsToolbar.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReservationsToolbar.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ReservationsToolbar.vue?vue&type=template&id=86584618&\"\nimport script from \"./ReservationsToolbar.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ReservationsToolbar.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable @typescript-eslint/indent */\nimport Vue, { defineComponent } from 'vue';\nimport { performAction } from '@/services/vue-utils';\nimport { tryEditReservation } from '@/services/reservation-edit-utils';\nimport debounce from 'lodash.debounce';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport { DebouncedFunc } from 'lodash';\n\nexport default defineComponent({\n data() {\n return {\n debouncePreviousDay: undefined as undefined | DebouncedFunc <() => Promise>,\n debounceNextDay: undefined as undefined | DebouncedFunc <() => Promise>,\n };\n },\n mounted() {\n window.addEventListener('keydown', this.keyDown);\n this.debouncePreviousDay = debounce(this.previousDay, 100, { leading: true, trailing: false });\n this.debounceNextDay = debounce(this.nextDay, 100, { leading: true, trailing: false });\n },\n beforeDestroy() {\n window.removeEventListener('keydown', this.keyDown);\n },\n methods: {\n keyDown(evt: KeyboardEvent) {\n if (evt.target !== document.body) { return; }\n // GIP: Do not allow keyboard navigation when editor is active\n if (this.$tstore.getters.isEditReservation) { return; }\n switch (evt.keyCode) {\n case 37:\n this.debouncePreviousDay!();\n break;\n case 39:\n this.debounceNextDay!();\n break;\n case 32:\n this.createNewReservation();\n break;\n default:\n break;\n }\n },\n async nextDay() {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('changeToNextDate'),\n );\n },\n async previousDay() {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('changeToPreviousDate'),\n );\n },\n async createNewReservation() {\n await tryEditReservation(this.$router);\n },\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{staticClass:\"mx-0 text-center text--secondary d-flex justify-center align-center align-content-center placeholder\"},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"d-block\"},[_vm._v(_vm._s(_vm.title))])]),(_vm.buttonTitle)?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.$emit('click')}}},[_vm._v(\" \"+_vm._s(_vm.buttonTitle)+\" \")])],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'GuestListPlaceholder',\n props: {\n title: { type: String, required: false, default: '' },\n buttonTitle: { type: String, required: false, default: null },\n },\n data() {\n return { };\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestListPlaceholder.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestListPlaceholder.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestListPlaceholder.vue?vue&type=template&id=5f36bd52&scoped=true&\"\nimport script from \"./GuestListPlaceholder.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestListPlaceholder.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./GuestListPlaceholder.vue?vue&type=style&index=0&id=5f36bd52&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5f36bd52\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Guests.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Guests.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Guests.vue?vue&type=template&id=6672b52c&\"\nimport script from \"./Guests.vue?vue&type=script&lang=ts&\"\nexport * from \"./Guests.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"pa-0 ma-0 tables-grid-container\",style:(`${_vm.heightOverrideForFooter} ${_vm.heightForAppBar} ${_vm.applySafariFix}`),attrs:{\"fluid\":\"\"}},[_c('reservations-toolbar',{attrs:{\"reservations\":_vm.reservations,\"waitlist-popout\":\"\"},scopedSlots:_vm._u([{key:\"buttons.prepend\",fn:function(){return [_c('v-select',{style:(`min-width:${_vm.$vuetify.breakpoint.xsOnly ? 42 : 78 }px!important;max-width:${_vm.$vuetify.breakpoint.xsOnly ? 42 : 78 }px!important`),attrs:{\"append-icon\":\"\",\"prepend-inner-icon\":_vm.$vuetify.breakpoint.xsOnly ? '' : 'mdi-magnify-plus-outline',\"hide-details\":\"\",\"items\":_vm.zoomLevels},model:{value:(_vm.zoom),callback:function ($$v) {_vm.zoom=$$v},expression:\"zoom\"}}),(_vm.filterVisible && _vm.$vuetify.breakpoint.smAndUp)?_c('v-select',{staticClass:\"pl-5\",staticStyle:{\"max-width\":\"250px !important\"},attrs:{\"value\":_vm.tabFilter,\"prepend-icon\":_vm.hasFilter ? 'mdi-filter': 'mdi-filter-outline',\"hide-details\":\"\",\"autofocus\":\"\",\"items\":_vm.filterSectionItems,\"append-outer-icon\":\"mdi-close\",\"return-object\":\"\"},on:{\"click:append-outer\":_vm.clearFilter,\"change\":_vm.tabFilterChanged}}):_vm._e()]},proxy:true},{key:\"buttons\",fn:function(){return [(!_vm.filterVisible || _vm.filterVisible && _vm.$vuetify.breakpoint.xsOnly)?_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":_vm.filterBtnClicked}},[_c('v-icon',[_vm._v(_vm._s(_vm.hasFilter ? 'mdi-filter': 'mdi-filter-outline'))])],1):_vm._e()]},proxy:true}])},[_c('v-btn',{attrs:{\"icon\":\"\",\"disabled\":!_vm.isToday},on:{\"click\":_vm.scrollToNow}},[_c('v-icon',{staticClass:\"pl-1\",staticStyle:{\"transform\":\"rotate(90deg)\"}},[_vm._v(\" mdi-ray-start \")])],1),(_vm.$vuetify.breakpoint.xsOnly)?_c('v-select',{staticClass:\"pl-0\",staticStyle:{\"max-width\":\"178px!important\"},attrs:{\"hide-details\":\"\",\"placeholder\":_vm.$t('placeholder.jump_to'),\"items\":_vm.dayParts},on:{\"change\":_vm.updateGotoDayPart},model:{value:(_vm.dayPart),callback:function ($$v) {_vm.dayPart=$$v},expression:\"dayPart\"}}):_c('v-btn-toggle',{attrs:{\"dense\":\"\",\"borderless\":\"\",\"mandatory\":\"\",\"color\":\"primary\"},model:{value:(_vm.dayPart),callback:function ($$v) {_vm.dayPart=$$v},expression:\"dayPart\"}},_vm._l((_vm.dayParts),function(d){return _c('v-btn',{key:d.value,attrs:{\"borderless\":\"\",\"value\":d.value},on:{\"click\":function($event){return _vm.updateGotoDayPart(d.value)}}},[_vm._v(\" \"+_vm._s(d.text)+\" \")])}),1)],1),_c('table-allocation-CTA'),(_vm.filterVisible && _vm.$vuetify.breakpoint.xsOnly)?[_c('v-toolbar',{staticClass:\"pa-0\",attrs:{\"height\":\"38\",\"flat\":\"\"}},[_c('v-select',{staticClass:\"pl-0\",attrs:{\"value\":_vm.tabFilter,\"hide-details\":\"\",\"dense\":\"\",\"autofocus\":\"\",\"items\":_vm.filterSectionItems,\"return-object\":\"\",\"append-outer-icon\":\"mdi-close\"},on:{\"click:append-outer\":_vm.clearFilter,\"change\":_vm.tabFilterChanged}})],1),_c('v-divider')]:_vm._e(),_c('time-table-grid',{staticStyle:{\"z-index\":\"1\"},attrs:{\"tabs\":_vm.timetableEntities.tabs,\"reservations\":_vm.timetableEntities.reservations,\"closed-slots\":_vm.closedSlots,\"time-slots\":_vm.timeSlots,\"date\":_vm.$tstore.state.update.date,\"timeline-start\":_vm.timelineStart,\"timeline-end\":_vm.timelineEnd,\"day-part\":_vm.dayPart,\"goto-day-part\":_vm.gotoDayPart,\"zoom\":_vm.zoom},on:{\"update:dayPart\":function($event){_vm.dayPart=$event},\"update:day-part\":function($event){_vm.dayPart=$event},\"update:gotoDayPart\":function($event){_vm.gotoDayPart=$event},\"update:goto-day-part\":function($event){_vm.gotoDayPart=$event},\"relocate-reservations\":function($event){return _vm.showRelocateConfirmation($event)}}}),_c('confirmation-dialog',{attrs:{\"visible\":_vm.relocateConfirmation,\"message\":_vm.relocateConfirmationMessage},on:{\"confirm\":_vm.relocateReservations,\"close\":function($event){_vm.relocateConfirmation = false}}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/* eslint-disable import/prefer-default-export */\n/* eslint-disable no-param-reassign */\nimport Tab from '@/model/Tab';\nimport Reservation from '@/model/Reservation';\nimport { groupByField, cloneModel } from '@/model/model-utils';\nimport TabItem from '@/model/TabItem';\n\nfunction allocateNoTabItemsReservations(reservations: Reservation[]): TabItem[] {\n const rss: Reservation[][] = []; // array of arrays of non overlapping reservations\n const tis: TabItem[] = []; // dummy tab items for no-tab-item reservations\n\n // for all no-tab-item reservations\n reservations.forEach((r) => {\n // find array to add reservation\n for (let i = 0; i < rss.length; i += 1) {\n // get last reservation from array and check end time\n const lastr = rss[i][rss[i].length - 1];\n if (lastr.timeEnd <= r.timeBegin) {\n r.tabItems = [lastr.tabItems[0]]; // add dummy tab item\n rss[i].push(r); // add reservation\n break; // continue with the next reservation\n }\n }\n\n // no array to add reservation found\n if (r.tabItems.length === 0) {\n // new dummy tab item\n const nti = new TabItem();\n nti.id = -(rss.length + 1);\n nti.order = nti.id;\n tis.push(nti);\n r.tabItems = [nti]; // add dummy tab item\n rss.push([r]); // add new array with this reservation\n }\n });\n\n return tis;\n}\n\nexport function timetableEntities(tabs: Tab[], reservations: Reservation[]):\n{ tabs: Tab[], reservations: Reservation[] } {\n const tmReservations: Reservation[] = []; // timetable reservations\n const notiReservations: Reservation[] = []; // clones of no-tab-item reservations\n\n // get timetable reservations and clones\n reservations.forEach((r) => {\n if (r.tabItems.length > 0) { tmReservations.push(r); return; }\n const cr = cloneModel(r);\n tmReservations.push(cr);\n notiReservations.push(cr);\n });\n\n // group no-tab-item reservations by tab\n const notiReservationsByTabs = groupByField(notiReservations, 'tab') as Map;\n\n // process tabs\n const tmTabs: Tab[] = []; // timetable tabs\n tabs.forEach((tab) => {\n // get no-tab-item reservations for tab\n const nrs = notiReservationsByTabs.get(tab);\n\n // no no-tab-item reservations\n if (!nrs) {\n // no need to change tab\n if (tab.tabItems.length > 0) tmTabs.push(tab);\n\n // empty tab, just add one tab item\n else {\n const nti = new TabItem();\n nti.id = -1;\n nti.order = nti.id;\n const ctab = cloneModel(tab);\n ctab.tabItems = [nti];\n tmTabs.push(ctab);\n }\n return;\n }\n\n // allocate no-tab-item reservations\n const ctab = cloneModel(tab);\n ctab.tabItems = [...allocateNoTabItemsReservations(nrs), ...tab.tabItems];\n tmTabs.push(ctab);\n });\n\n // unique tab item id\n let tiid = -1;\n tmTabs.forEach((t) => t.tabItems.forEach((ti) => {\n if (ti.id > 0) return;\n ti.id = tiid;\n tiid -= 1;\n }));\n\n return {\n tabs: tmTabs,\n reservations: tmReservations,\n };\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{ref:\"scrollableContainer\",class:[{'theme--dark':_vm.$vuetify.theme.dark}, 'h-100', 'pa-0'],staticStyle:{\"overflow-x\":\"scroll\",\"z-index\":\"1\"},attrs:{\"id\":\"tt-scrollable-container\",\"fluid\":\"\"}},[(_vm.contextMenu.visible)?_c('status-context-menu',{attrs:{\"x\":_vm.contextMenu.x,\"y\":_vm.contextMenu.y,\"reservation\":_vm.contextMenu.reservation,\"visible\":_vm.contextMenu.visible},on:{\"close\":function($event){_vm.contextMenu.visible = false}}}):_vm._e(),_c('div',{class:[{'condensed': _vm.zoom < 1}, 'tt-container'],style:(`--tt-slot-width: ${_vm.slotWidth}px`)},[_c('div',{class:[\n {'is--grabbing': _vm.headerDragScrollOrigin !== undefined},\n {'zoom-50': _vm.zoom < 0.75},\n 'tt-header'\n ],on:{\"mousemove\":_vm.headerMouseover,\"mouseup\":_vm.headerMouseup,\"mousedown\":_vm.headerMousedown}},[_c('div',{staticClass:\"tt-dummy-slot\"}),_vm._l((_vm.timeSlots),function(timeSlot,i){return _c('div',{key:`header_${i}`,staticClass:\"tt-slot\"},[(i % 2 === 0)?_c('span',{staticClass:\"tt-slot-text\"},[_vm._v(_vm._s(_vm.$localized.hourMinTextFrom24hr(timeSlot.time)))]):_vm._e()])}),_c('time-table-indicator',{attrs:{\"slot-width\":_vm.slotWidth,\"aside-width\":_vm.asideWidth,\"timeline-start\":_vm.timelineStart,\"timeline-end\":_vm.timelineEnd}})],2),_c('div',{staticClass:\"tt-aside\"},[_vm._l((_vm.tabs),function(tab,i){return [_c('div',{key:`aside_heading_grp_${i}`},[_c('div',{key:`aside_heading_${i}`,staticClass:\"tt-heading\"},[_vm._v(\"   \")]),_vm._l((tab.tabItems),function(tabItem,j){return _c('div',{key:`aside_row_${i}_${j}`,staticClass:\"tt-row\"},[_c('div',{staticClass:\"tt-row-tabitem\"},[_vm._v(\" \"+_vm._s(tabItem.no)+\" \")]),(!tabItem.isDummy)?_c('div',{staticClass:\"tt-row-seats\"},[_c('sup',[_vm._v(_vm._s(tabItem.seats))])]):_vm._e()])})],2)]})],2),_c('div',{staticClass:\"tt-content\"},[_vm._l((_vm.tabs),function(tab,i){return [_c('div',{key:`content_header_${i}`,staticClass:\"tt-inline-header\"},[_c('div',{staticClass:\"tt-inline-header--inner\"},[_vm._v(\" \"+_vm._s(tab.name)+\" \")])]),_c('div',{key:`content_tabitemgrp_${i}`},_vm._l((tab.tabItems),function(tabItem,j){return _c('div',{key:`content_time_${i}_${j}`,staticClass:\"tt-time-row\",attrs:{\"data-tabitemid\":tabItem.id,\"data-tabid\":tab.id},on:{\"mousedown\":_vm.rowMouseDown,\"mousemove\":_vm.rowMouseMoved,\"mouseup\":_vm.rowMouseUp,\"mouseleave\":_vm.mouseLeave,\"touchstart\":_vm.touchStart,\"touchmove\":_vm.touchMoved,\"touchend\":_vm.touchEnd}},[(tabItem === tab.tabItems[0])?_vm._l((_vm.closedSlots),function(closedSlot){return _c('time-table-closed-slot',{key:`closed_slot_${tab.id}_${closedSlot.id}`,attrs:{\"begin\":closedSlot.begin,\"end\":closedSlot.end,\"row-span\":tab.tabItems.length,\"timeline-start\":_vm.timelineStart,\"row-height\":_vm.rowHeight,\"slot-width\":_vm.slotWidth}})}):_vm._e(),_vm._l((_vm.reservationsByTabItem.get(tabItem.id)),function(r){return [_c('time-table-tooltip',{key:`content_res_tooltip_${r.id}`,attrs:{\"reservation\":r},scopedSlots:_vm._u([{key:\"activator\",fn:function({createPopover, hidePopover}){return [_c('time-table-event',{key:`content_res_${r.id}`,attrs:{\"reservation\":r,\"data-resid\":r.id,\"row-height\":_vm.rowHeight,\"slot-width\":_vm.slotWidth,\"row-span\":_vm.rowSpanForEvent(r, tabItem),\"timeline-start\":_vm.timelineStart,\"selected\":_vm.selected(r.id),\"overbooked\":_vm.overbooked.get(r.id)},on:{\"context-menu\":_vm.showContextMenu,\"click-event\":_vm.eventClicked,\"show-tooltip\":createPopover,\"hide-tooltip\":hidePopover}})]}}],null,true)})]}),(tabItem === tab.tabItems[0])?_c('time-table-closed-slot',{attrs:{\"begin\":_vm.timelineEnd,\"row-span\":tab.tabItems.length,\"timeline-start\":_vm.timelineStart,\"row-height\":_vm.rowHeight,\"slot-width\":_vm.slotWidth}}):_vm._e()],2)}),0)]})],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent, PropType } from 'vue';\nimport Reservation from '@/model/Reservation';\nimport { performSaveAction } from '@/services/vue-utils';\nimport toast from '@/plugins/toast-plugin/toast';\n\nimport interact from 'interactjs';\n\nexport default defineComponent({\n props: {\n reservations: { type: Array as PropType>, required: true },\n // tabs: { type: Array as PropType>, required: true },\n },\n mounted() {\n function moveEventElement(x: number, y: number, scroll: number, target: HTMLElement) {\n // eslint-disable-next-line no-param-reassign\n target.style.webkitTransform = `translate(${x}px, ${y + scroll}px)`;\n // eslint-disable-next-line no-param-reassign\n target.style.transform = `translate(${x}px, ${y + scroll}px)`;\n\n // update the posiion attributes\n target.setAttribute('data-x', `${x}`);\n target.setAttribute('data-y', `${y}`);\n }\n\n function resetEventElement(target: HTMLElement) {\n moveEventElement(0, 0, 0, target);\n const linkedReservations = document.querySelectorAll(\n `[data-resid='${target.dataset.resid}']`,\n );\n linkedReservations.forEach((elm) => {\n elm.classList.remove('linked-event');\n });\n }\n\n function dragMoveListener(this: any, evt: any) {\n evt.preventDefault();\n\n const { target } = evt;\n if (target.classList.contains('blocked')) return;\n\n // keep track of scroll offset so we can correctly compensate the move\n const { scrollTop } = document.getElementById('tt-scrollable-container')!;\n const originalScroll = parseFloat(target.dataset.scroll || '0');\n const scroll = (scrollTop - originalScroll);\n\n // keep the dragged position in the data-x/data-y attributes\n const x = (parseFloat(target.getAttribute('data-x')) || 0) + evt.dx;\n const y = (parseFloat(target.getAttribute('data-y')) || 0) + evt.dy;\n moveEventElement(x, y, scroll, target);\n\n // update editor\n // console.log('Target:');\n // console.log(target);\n // console.log('-=-=-=-=-=-=-=-=-=-=-=-');\n\n // const elementsAtPoint = document.elementsFromPoint(evt.client.x, evt.client.y);\n const rect = target.getClientRects()[0];\n const elementsAtPoint = document.elementsFromPoint(rect.x + 15, rect.y + 15);\n const timeRow = elementsAtPoint.find((elm) => elm.classList.contains('tt-time-row')) as HTMLElement;\n // console.log(timeRow);\n\n if (!timeRow) {\n // resetEventElement(target);\n return;\n }\n\n const reservationId = parseInt(target.dataset.resid, 10);\n const tabId = parseInt(timeRow.dataset.tabid!, 10);\n const tabItemId = parseInt(timeRow.dataset.tabitemid!, 10);\n\n // console.log(`Reservation: ${reservationId}`);\n // console.log(`Tab: ${tabId}`);\n // console.log(`TabItem: ${tabItemId}`);\n\n this.moveDrag(reservationId, tabId, tabItemId);\n }\n\n async function dragEndListener(this: any, evt: any) {\n // console.log('### Drag End');\n // console.log(evt);\n\n const { target } = evt;\n // delayed removal of the flag that disallows the click listener\n // on tt-event to open the edit reservation window\n setTimeout(() => { target.dataset.dnd = '0'; }, 500);\n\n const linkedReservations = document.querySelectorAll(\n `[data-resid='${target.dataset.resid}']`,\n );\n linkedReservations.forEach((elm) => {\n elm.classList.remove('linked-event');\n });\n\n target.classList.remove('linked-event');\n target.classList.remove('is-dragging');\n // console.log('Target:');\n // console.log(target);\n // console.log('-=-=-=-=-=-=-=-=-=-=-=-');\n\n // const elementsAtPoint = document.elementsFromPoint(evt.client.x, evt.client.y);\n const rect = target.getClientRects()[0];\n const elementsAtPoint = document.elementsFromPoint(rect.x + 15, rect.y + 15);\n const timeRow = elementsAtPoint.find((elm) => elm.classList.contains('tt-time-row')) as HTMLElement;\n // console.log(timeRow);\n\n const reservationId = parseInt(target.dataset.resid, 10);\n\n if (!timeRow) {\n resetEventElement(target);\n this.cancelDrag();\n return;\n }\n\n const tabId = parseInt(timeRow.dataset.tabid!, 10);\n const tabItemId = parseInt(timeRow.dataset.tabitemid!, 10);\n const parentTabItemId = parseInt(target.parentElement.dataset.tabitemid!, 10);\n\n if (tabItemId === parentTabItemId) {\n // console.log('No change, just reset');\n resetEventElement(target);\n this.cancelDrag();\n return;\n }\n\n // console.log(`Reservation: ${reservationId}`);\n // console.log(`Tab: ${tabId}`);\n // console.log(`TabItem: ${tabItemId}`);\n\n // Snap element into grid before reservation is redrawn by API\n const x = (parseFloat(target.getAttribute('data-x')) || 0);\n const parentY = target.parentElement.getBoundingClientRect().top;\n\n moveEventElement(x, timeRow.getBoundingClientRect().top - parentY, 0, target);\n\n await this.endDrag(reservationId, tabId, tabItemId);\n\n resetEventElement(target);\n }\n\n interact('.tt-event')\n .on('hold', (evt: any) => {\n // console.log('### Hold');\n // console.log(evt);\n // console.log(evt.target);\n // console.log(evt.currentTarget);\n\n if (evt.buttons !== 1) return;\n\n const { target, currentTarget } = evt;\n const resId = parseInt(currentTarget.dataset.resid, 10);\n\n if (!this.canDrag(resId, false)) return;\n // this flag tells tt-event to not open reservation\n // editor in it's own click handler. This is b/c click handler\n // is already registered and we can nor remove or change it's order.\n currentTarget.setAttribute('data-dnd', '1');\n\n currentTarget.classList.add('is-dragging');\n currentTarget.setAttribute('data-scroll', document.getElementById('tt-scrollable-container')!.scrollTop);\n\n const linkedReservations = document.querySelectorAll(\n `[data-resid='${resId}']`,\n );\n // console.log('Hiding the following linked reservations:');\n // console.log(linkedReservations);\n linkedReservations.forEach((elm) => {\n elm.classList.add('linked-event');\n });\n // console.log('=-=-=-=-=-=-=-=-=-=-=-=');\n })\n .origin('body')\n .pointerEvents({\n holdDuration: 230,\n })\n .styleCursor(false)\n .draggable({\n hold: 250,\n autoScroll: {\n container: document.getElementById('tt-scrollable-container'),\n margin: 100,\n distance: 10,\n interval: 10,\n speed: 150,\n },\n lockAxis: 'y',\n modifiers: [\n interact.modifiers.restrictRect({\n restriction: (x, y, elm) => {\n const contentElm = document.getElementsByClassName('tt-content')[0]!;\n const { top } = contentElm.getClientRects()[0];\n const { bottom, right } = contentElm.getBoundingClientRect();\n return {\n top, left: 0, bottom, right,\n };\n },\n }),\n ],\n listeners: {\n move: dragMoveListener.bind(this),\n end: dragEndListener.bind(this),\n },\n });\n },\n destroyed() {\n interact('.tt-event').unset();\n },\n methods: {\n canDrag(reservationId: number, hideErrors: boolean = false): boolean {\n const reservation = this.reservations.find((o) => o.id === reservationId);\n if (!reservation) return false;\n\n if (reservation.holdTabItems === true) {\n if (!hideErrors) toast.error(this.$i18n.tc('error.reservation_cannot_move_reservation'));\n return false;\n }\n if (reservation.partySize === 0) {\n if (!hideErrors) toast.error(this.$i18n.tc('error.reservation_cannot_move_block'));\n return false;\n }\n return true;\n },\n moveDrag(reservationId: number, tabId: number, tabItemId: number) {\n if (!this.$tstore.getters.isDragDrop) {\n const reservation = this.reservations.find((o: Reservation) => o.id === reservationId);\n this.startDragDrop(reservation);\n }\n\n this.moveDragDrop({ reservationId, tabId, tabItemId });\n },\n async endDrag(reservationId: number, tabId: number, tabItemId: number): Promise {\n this.moveDragDrop({ reservationId, tabId, tabItemId });\n\n const { isDragDropValid } = this.$tstore.getters;\n const ok = isDragDropValid && await performSaveAction(\n undefined,\n async () => this.sendReservation({ reservation: this.$tstore.getters.dragDropReservation }),\n );\n\n const crs: Reservation[] = this.$tstore.getters.dragDropConflictReservations;\n const fcrs = crs.filter((r) => r.holdTabItems !== true);\n if (ok && fcrs.length > 0) {\n this.$emit('relocate-reservations', fcrs);\n }\n\n this.endDragDrop(ok);\n\n return ok;\n },\n cancelDrag(tabId: number, tabItemId: number) {\n this.endDragDrop(false);\n },\n // store actions\n startDragDrop(r: Reservation | undefined) {\n this.$store.dispatch('startDragDrop', r);\n },\n moveDragDrop(val: { reservationId: number, tabId: number, tabItemId: number }) {\n this.$store.dispatch('moveDragDrop', val);\n },\n endDragDrop(ok: boolean) {\n this.$store.dispatch('endDragDrop', ok);\n },\n sendReservation(val: {reservation: Reservation}) {\n this.$store.dispatch('sendReservation', val);\n },\n\n },\n});\n","/* eslint-disable vue/no-unused-properties */\nimport { defineComponent, PropType } from 'vue';\nimport Reservation, { ReservationStatus, ReservationType } from '@/model/Reservation';\nimport Tab from '@/model/Tab';\nimport TabItem, { TAB_ITEM_DUMMY_ID } from '@/model/TabItem';\nimport { mapActions } from 'vuex';\nimport {\n setDateHoursMinutes, hourMinFromSlot, dateByAddingDays,\n} from '@/services/time-utils';\nimport TimeSlot from '@/model/TimeSlot';\nimport { isWalkInReservation, endDateForReservation } from '@/services/reservation-utils';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { cloneModel } from '@/model/model-utils';\nimport { tryEditReservation } from '@/services/reservation-edit-utils';\n\n// decision time between start of dragging to create new reservation and start of pan\nconst minTouchHoldDuration = 300;\n\n// time during which mouse movement is ignored after the reservation is created\n// this removes jitter / contraction of new reservation straight after being created\nconst minStartDragTimeout = 200;\n\nconst asideWidth = 70;\nconst headerHeight = 57;\nconst scrollLockZoneSize = 60;\n\nconst temporaryReservationId = -1000;\n\nexport default defineComponent({\n props: {\n date: { type: Object as PropType, required: true },\n // reservations: { type: Array as PropType>, required: true },\n tabs: { type: Array as PropType>, required: true },\n timeSlots: { type: Array as PropType>, required: true },\n slotWidth: { type: Number, required: true },\n },\n data() {\n return {\n unwatchEditReservation: null as (() => void) | null,\n temporaryReservation: null as Reservation | null,\n longTouchCb: null as number | null,\n temporaryCtx: {\n lastSlot: 0,\n originTabItemId: 0,\n originTabId: 0,\n originTimeSlot: 0,\n currentTabItemId: 0,\n currentTimeSlot: 0,\n created: 0,\n },\n scrollLock: false,\n };\n },\n computed: {\n tabItemIndexById(): Map {\n const map = new Map();\n this.tabItems.forEach((o, i) => map.set(o.id, i));\n return map;\n },\n tabItems(): TabItem[] {\n return this.tabs.flatMap((tab) => tab.tabItems);\n },\n },\n watch: {\n temporaryCtx: {\n deep: true,\n handler() {\n this.updateTemporaryHandler();\n },\n },\n },\n beforeDestroy() {\n if (this.unwatchEditReservation) this.unwatchEditReservation();\n },\n mounted() {\n this.unwatchEditReservation = this.$tstore.watch(\n (state, getters) => getters.editReservation,\n (newValue: Reservation | null, oldValue: Reservation | null) => {\n if (!newValue && oldValue) { this.cancelEdit(); }\n if (newValue && this.temporaryReservation && this.temporaryReservation.id !== newValue.id) {\n this.cancelEdit();\n }\n },\n );\n },\n methods: {\n ...mapActions(['editReservation', 'sendReservation']),\n forceScroll(direction: string) {\n setTimeout(() => {\n if (!this.scrollLock) { return; }\n const scrollableElm = document.getElementById('tt-scrollable-container')!;\n if (direction === 'left') {\n scrollableElm.scrollLeft -= 1;\n } else if (direction === 'right') {\n scrollableElm.scrollLeft += 1;\n } else if (direction === 'top') {\n scrollableElm.scrollTop -= 1;\n } else if (direction === 'down') {\n scrollableElm.scrollTop += 1;\n }\n this.forceScroll(direction);\n }, 100);\n },\n updateTemporaryHandler() {\n // no tab? clear temporary reservation\n const tab = this.tabs.find((o) => o.id === this.temporaryCtx.originTabId);\n if (!tab) {\n this.clearTemporaryReservation();\n return;\n }\n\n let beginIndex = this.tabItemIndexById.get(this.temporaryCtx.originTabItemId) ?? -1;\n const endIndex = this.tabItemIndexById.get(this.temporaryCtx.currentTabItemId) ?? beginIndex;\n\n const tabItems = [] as TabItem[];\n let tabItemIndex = tab.tabItems.findIndex((o: TabItem) => o.id === this.temporaryCtx.originTabItemId);\n let tabItem = tab.tabItems[tabItemIndex];\n if (tabItem) tabItems.push(tabItem);\n\n while (beginIndex !== endIndex && tabItem) {\n const incr = beginIndex <= endIndex ? 1 : -1;\n beginIndex += incr;\n tabItemIndex += incr;\n tabItem = tab.tabItems[tabItemIndex];\n if (tabItem) tabItems.push(tabItem);\n }\n // find slots\n const beginSlot = this.temporaryCtx.originTimeSlot;\n const endSlot = this.temporaryCtx.currentTimeSlot || null;\n\n this.updateTemporaryReservation(tab, tabItems, beginSlot, endSlot);\n },\n // onStart(x: number, tabId: number, tabItemId: number) {\n // onStart(target: HTMLElement, timeSlot: number) {\n onStart(clientX: number, clientY: number) {\n const target = document.elementsFromPoint(clientX, clientY).find(\n (e) => e.classList.contains('tt-time-row'),\n ) as HTMLElement;\n if (target === null) { return; }\n\n const rect = target.getBoundingClientRect();\n const timeSlot = this.slotForPosition(clientX - rect.left);\n\n const tabItemId = parseInt(target.dataset.tabitemid || '-1', 10);\n const tabId = parseInt(target.dataset.tabid || '-1', 10);\n if (tabItemId <= TAB_ITEM_DUMMY_ID || tabId <= 0) { return; } // dummy tab items or parse error\n\n // console.log(`[drag-drop] -=-=- Started: timeSlot:${timeSlot} TabId: ${tabId} TabItemId: ${tabItemId} =-=-`);\n\n this.temporaryCtx.originTabItemId = tabItemId;\n this.temporaryCtx.originTabId = tabId;\n this.temporaryCtx.originTimeSlot = timeSlot;\n this.temporaryCtx.currentTabItemId = 0;\n this.temporaryCtx.currentTimeSlot = 0;\n this.temporaryCtx.created = new Date().getTime();\n },\n onDrag(x: number, y: number) {\n // console.log(`[drag-drop] -=-=-=- Drag to: ${x}; ${y} =-=-=-`);\n this.scrollLock = false;\n\n // exit if we do not have any new reservation\n // or too soon after initial click\n if (!this.isTemporaryReservation()\n || new Date().getTime() - this.temporaryCtx.created < minStartDragTimeout) return;\n\n // HANDLE VERTICAL DRAG\n // get the row under cursor\n // tabItemId from the row\n const overElem = document.elementsFromPoint(x, y).find(\n (elm) => elm.classList.contains('tt-time-row'),\n );\n if (overElem === undefined) { return; }\n const tabItemId = parseInt((overElem as HTMLElement).dataset.tabitemid!, 10);\n\n // HANDLE HORIZONTAL DRAG\n // get true X position\n const { left, top } = document.getElementsByClassName('tt-content')[0].getBoundingClientRect();\n\n const scrollElm = document.getElementById('tt-scrollable-container')!;\n const { width, height } = scrollElm.getBoundingClientRect();\n const xOffset = x - left - scrollElm.scrollLeft;\n const yOffset = y - top - scrollElm.scrollTop;\n\n if (xOffset < scrollLockZoneSize) {\n this.scrollLock = true;\n this.forceScroll('left');\n return;\n }\n if (xOffset + asideWidth > width - scrollLockZoneSize) {\n this.scrollLock = true;\n this.forceScroll('right');\n return;\n }\n if (yOffset < scrollLockZoneSize) {\n this.scrollLock = true;\n this.forceScroll('top');\n return;\n }\n console.log(`Yo: ${yOffset} height: ${height}`);\n if (yOffset + headerHeight > height - scrollLockZoneSize) {\n this.scrollLock = true;\n this.forceScroll('down');\n return;\n }\n\n const timeSlot = this.slotForPosition(x - left);\n\n if (tabItemId > TAB_ITEM_DUMMY_ID) this.temporaryCtx.currentTabItemId = tabItemId;\n this.temporaryCtx.currentTimeSlot = timeSlot;\n },\n async onEnd() {\n this.scrollLock = false;\n await this.editTemporaryReservation();\n },\n slotForPosition(x: number): number {\n const i = Math.floor(x / this.slotWidth);\n const { slot } = this.timeSlots[i];\n // console.log(`[drag-drop] Clicked slot: ${slot}`);\n\n return slot;\n },\n cancelEdit() {\n // console.log('[drag-drop] cancelEdit');\n this.clearTemporaryReservation();\n },\n // MOUSE EVENTS\n rowMouseDown(evt: MouseEvent) {\n // console.log('[drag-drop] MOUSE DOWN', evt);\n if (evt.buttons !== 1) { return; }\n\n // prevent conflict with drag and drop, don't fire if event started on tt-event\n let elm = evt.target as HTMLElement;\n while (elm.parentElement !== null) {\n if (elm.classList.contains('tt-event')) {\n return;\n }\n elm = elm.parentElement;\n }\n\n this.onStart(evt.clientX, evt.clientY);\n },\n rowMouseMoved(evt: MouseEvent) {\n // console.log('[drag-drop] -=-=MOUSE MOVE-=-=-', evt);\n\n if (evt.buttons !== 1) return;\n evt.preventDefault();\n this.onDrag(evt.clientX, evt.clientY);\n },\n rowMouseUp(evt: MouseEvent) {\n // console.log('[drag-drop] RowMouseUp: ', evt);\n this.onEnd();\n },\n mouseLeave(evt: MouseEvent) {\n // console.log('[drag-drop] mouseLeave: ', evt);\n this.scrollLock = false;\n },\n // TOUCH EVENTS\n touchStart(evt: TouchEvent) {\n // console.log('[drag-drop] -=-=TOUCH START-=-=-', evt);\n // prevent conflict with drag and drop, don't fire if event started on tt-event\n let elm = evt.target as HTMLElement;\n while (elm.parentElement !== null) {\n if (elm.classList.contains('tt-event')) {\n return;\n }\n elm = elm.parentElement;\n }\n\n this.longTouchCb = window.setTimeout(() => {\n this.longTouchCb = null;\n evt.preventDefault();\n\n const { clientX, clientY } = evt.targetTouches[0];\n this.onStart(clientX, clientY);\n }, minTouchHoldDuration);\n },\n touchMoved(evt: any) {\n // console.log('[drag-drop] -=-=TOUCH MOVED-=-=-', evt);\n\n const rect = evt.target.getClientRects()[0];\n const elementsAtPoint = document.elementsFromPoint(rect.x, rect.y);\n const timeRow = elementsAtPoint.find((elm) => elm.classList.contains('is-dragging')) as HTMLElement;\n if (timeRow !== undefined) {\n evt.preventDefault();\n return;\n }\n\n if (this.longTouchCb !== null) {\n window.clearTimeout(this.longTouchCb);\n this.longTouchCb = null;\n }\n if (!this.isTemporaryReservation()) {\n return;\n }\n evt.preventDefault();\n\n // console.log('[drag-drop] -=-=TOUCH MOVE-=-=-', evt);\n const { clientX, clientY } = evt.targetTouches[0];\n this.onDrag(clientX, clientY);\n },\n touchEnd(evt: TouchEvent) {\n // console.log('[drag-drop] -=-=TOUCH END-=-=-', evt);\n\n // In case the click lasted shorther than the wait period\n // we need to ensure there is temporaryReservation\n // before we invoke onEnd\n if (this.temporaryReservation === null && this.longTouchCb !== null) {\n clearTimeout(this.longTouchCb);\n this.longTouchCb = null;\n const { clientX, clientY } = evt.changedTouches[0];\n this.onStart(clientX, clientY);\n this.updateTemporaryHandler();\n }\n this.onEnd();\n },\n // temorary reservation\n isTemporaryReservation() {\n return this.temporaryReservation !== null;\n },\n clearTemporaryReservation() {\n this.temporaryReservation = null;\n },\n updateTemporaryReservation(tab: Tab, tabItems: TabItem[], beginSlot: number, endSlot: number | null) {\n const r = this.temporaryReservation ?? new Reservation();\n r.id = temporaryReservationId;\n\n tabItems.sort((o1, o2) => o1.order - o2.order);\n r.tabItems = tabItems;\n r.partySize = r.tabItems.map((t) => t.seats).reduce((p, c) => p + c, 0);\n r.tab = tab;\n\n // is end slot defined? (mouse move detected)\n if (endSlot && beginSlot !== endSlot) {\n // eslint-disable-next-line no-param-reassign\n if (beginSlot > endSlot) [beginSlot, endSlot] = [endSlot, beginSlot]; endSlot += 2;\n\n const { h: bh, m: bm } = hourMinFromSlot(beginSlot);\n let date = setDateHoursMinutes(this.date, bh % 24, bm);\n if (bh > 24) date = dateByAddingDays(date, 1);\n r.dateBegin = date;\n\n const { h: eh, m: em } = hourMinFromSlot(endSlot);\n date = setDateHoursMinutes(this.date, eh % 24, em);\n if (eh > 24) date = dateByAddingDays(date, 1);\n r.dateEnd = date;\n } else {\n const { h: bh, m: bm } = hourMinFromSlot(beginSlot);\n let date = setDateHoursMinutes(this.date, bh % 24, bm);\n if (bh > 24) date = dateByAddingDays(date, 1);\n r.dateBegin = date;\n\n const rules = this.$tstore.state.settings.durationRules;\n r.dateEnd = endDateForReservation(r.dateBegin, tab, r.partySize, rules);\n }\n\n // recompute time slots and minutes\n r.updateSlotsAndTimes();\n\n // check walkin\n const isWalkIn = isWalkInReservation(r);\n r.status = isWalkIn ? ReservationStatus.Seated : ReservationStatus.Planned;\n r.bookingType = isWalkIn ? ReservationType.Walkin : ReservationType.Reservation;\n // console.log('!!!!!!!!!');\n // console.log(this.temporaryReservation);\n this.temporaryReservation = r;\n\n // don't open and sync reservation dialog when compact view\n if (!this.$vuetify.breakpoint.mdAndDown) {\n // open and sync reservation dialog only if no changes were made or tmp. res is edited\n if (this.$tstore.getters.editReservation?.id === temporaryReservationId) {\n this.editReservation(this.temporaryReservation);\n }\n }\n },\n async editTemporaryReservation() {\n if (this.temporaryReservation === null) return;\n\n if (isWalkInReservation(this.temporaryReservation)) {\n const reservation = cloneModel(this.temporaryReservation);\n const ok = await performSaveAction(\n undefined,\n async () => this.sendReservation({ reservation }),\n );\n this.temporaryReservation = null;\n } else {\n const ok = await tryEditReservation(this.$router, this.temporaryReservation);\n if (!ok) this.clearTemporaryReservation();\n }\n },\n // store actions\n sendReservation(val: {reservation: Reservation}) {\n this.$store.dispatch('sendReservation', val);\n },\n editReservation(reservation: Reservation) {\n this.$store.dispatch('editReservation', reservation);\n },\n },\n});\n","import { defineComponent } from 'vue';\nimport moment from 'moment';\nimport storage from '@/services/local-storage';\n\nexport default defineComponent({\n props: {\n zoom: { type: Number, required: false, default: 1 },\n // eslint-disable-next-line vue/no-unused-properties\n dayPart: { type: Number || null, required: true },\n gotoDayPart: { type: Number || null, required: true },\n slotWidth: { type: Number, required: true },\n timelineStart: { type: Date, required: true },\n },\n data() {\n return {\n isScrolling: 0,\n currentScrollOffset: 0,\n };\n },\n computed: {\n asideWidth(): number {\n return this.zoom < 1 ? 60 : 70;\n },\n },\n watch: {\n gotoDayPart() {\n if (this.gotoDayPart === null) { return; }\n const scrollElm = (this.$refs.scrollableContainer as HTMLElement);\n if (this.gotoDayPart === -1) {\n // 6 being the scrollbar + half of the line width\n this.scrollTo(this.currentTimeOffset() - ((scrollElm.offsetWidth - this.asideWidth) / 2) + 6, 220);\n return;\n }\n this.$emit('update:goto-day-part', null);\n this.scrollTo(this.offsetForDayPart(), 220);\n },\n },\n mounted() {\n const scrollElm = (this.$refs.scrollableContainer as HTMLElement);\n const position = storage.getTimetablePosition();\n\n this.$nextTick(() => {\n if (position === null) {\n scrollElm.scrollLeft = this.currentTimeOffset() - ((scrollElm.offsetWidth - this.asideWidth) / 2) + 6;\n } else {\n scrollElm.scrollLeft = position;\n }\n });\n\n scrollElm.addEventListener('scroll', this.scrollListener);\n },\n beforeDestroy() {\n const scrollElm = (this.$refs.scrollableContainer as HTMLElement);\n scrollElm.removeEventListener('scroll', this.scrollListener);\n storage.setTimetablePosition(this.currentScrollOffset);\n },\n methods: {\n currentTimeOffset(): number {\n const diff = moment().diff(this.timelineStart, 'minutes');\n return diff * (this.slotWidth / 30.0);\n },\n scrollTo(to:number, duration: number) {\n const element = document.getElementById('tt-scrollable-container')!;\n const start = element.scrollLeft;\n const change = to - start;\n const increment = 20;\n let currentTime = 0;\n\n const easeInOutQuad = (time:number, b:number, c:number, d:number) => {\n let t = time / (d / 2);\n if (t < 1) return (c / 2) * t * t + b;\n t -= 1;\n return (-c / 2) * (t * (t - 2) - 1) + b;\n };\n\n const animateScroll = () => {\n currentTime += increment;\n const val = easeInOutQuad(currentTime, start, change, duration);\n element.scrollLeft = val;\n if (currentTime < duration) {\n window.setTimeout(animateScroll, increment);\n }\n };\n animateScroll();\n },\n offsetForDayPart(): number {\n const hourOffset = this.gotoDayPart - moment(this.timelineStart).get('hour');\n return hourOffset * (this.slotWidth * 2) + 2;\n },\n dayPartForOffset(o: number):number {\n const currentHour = o / (this.slotWidth * 2) + moment(this.timelineStart).get('hour');\n if (currentHour < 12) { return 6; } // morning\n if (currentHour < 18) { return 12; } // afternoon\n return 18; // evening\n },\n scrollListener(evt: any) {\n window.clearTimeout(this.isScrolling);\n\n this.isScrolling = window.setTimeout(() => {\n const scrollElm = (this.$refs.scrollableContainer as HTMLElement);\n this.currentScrollOffset = scrollElm.scrollLeft;\n const dPart = this.dayPartForOffset(this.currentScrollOffset);\n this.$emit('update:day-part', dPart);\n }, 100);\n },\n },\n});\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"root\",class:[{'blocked': _setup.isMovementBlocked}, 'tt-event'],style:(`left: ${_setup.left}px; width: ${_setup.width + _setup.reservationGap}px; height: ${_setup.height}px;`),on:{\"contextmenu\":function($event){$event.preventDefault();return _setup.onRightClick.apply(null, arguments)},\"click\":function($event){$event.stopPropagation();return _setup.onClick.apply(null, arguments)},\"mouseenter\":_setup.mouseEnter,\"mousemove\":_setup.mouseMove,\"mouseleave\":_setup.mouseLeave}},[(!_setup.isNarrowWidth)?_c('div',{staticClass:\"tt-event--inner\"},[(_setup.isBlock)?_c('svg',{attrs:{\"width\":\"100%\",\"height\":\"100%\"}},[_c('rect',{attrs:{\"x\":\"2\",\"y\":\"2\",\"width\":_setup.width-4,\"height\":_setup.height-4,\"stroke\":_setup.strokeColor,\"fill\":_setup.fill,\"stroke-width\":\"1\",\"rx\":\"2\"}})]):_c('svg',{attrs:{\"width\":\"100%\",\"height\":\"100%\"}},[(_vm.reservation.fixedEnding)?[(_setup.reservationGap > 0)?_c('rect',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"x\":\"2\",\"y\":\"2\",\"width\":_setup.width-4 + _setup.reservationGap,\"height\":_setup.height-5,\"stroke\":_setup.gapBorderColor,\"fill\":_setup.gapColor,\"opacity\":_setup.gapOpacity,\"stroke-width\":\"1\",\"rx\":\"2\"}}):_vm._e(),_c('rect',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"x\":\"2\",\"y\":\"2\",\"width\":_setup.width-4,\"height\":_setup.height-5,\"stroke\":_setup.strokeColor,\"fill\":_setup.fill,\"fill-opacity\":_setup.bgOpacity,\"stroke-width\":\"1\",\"rx\":\"2\"}})]:_vm._e(),(!_vm.reservation.fixedEnding)?[(_setup.reservationGap > 0)?_c('path',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"d\":_setup.bgPathGap,\"stroke\":_setup.gapBorderColor,\"fill\":_setup.gapColor,\"opacity\":_setup.gapOpacity,\"stroke-width\":\"1\"}}):_vm._e(),(!_vm.reservation.fixedEnding)?_c('path',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"d\":_setup.bgPath,\"stroke\":_setup.strokeColor,\"fill\":_setup.fill,\"opacity\":_setup.bgOpacity,\"stroke-width\":\"1\"}}):_vm._e()]:_vm._e(),_c('path',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"d\":_setup.partysizeBgPath,\"stroke\":_setup.strokeColor,\"fill\":_setup.strokeColor,\"stroke-width\":\"1\"}})],2),_c('div',{staticClass:\"d-flex align-center\",style:(`position: absolute; width: calc(${_setup.width}px * 0.95)`)},[(!_setup.isBlock)?_c('div',{staticClass:\"text-center font-weight-bold flex-shrink-0 flex-grow-0 tt-reservation-partysize\"},[_vm._v(\" \"+_vm._s(_vm.reservation.partySize)+\" \")]):_vm._e(),(_vm.reservation.isFlagged)?_c('div',{staticClass:\"text-center flex-shrink-0 flex-grow-0\",staticStyle:{\"width\":\"16px\"}},[_c('v-icon',{staticClass:\"tt-event-icon\",attrs:{\"size\":\"8px\",\"color\":\"yellow\"}},[_vm._v(\" mdi-circle \")])],1):_vm._e(),(_vm.reservation.isStarred)?_c('div',{staticClass:\"text-center flex-shrink-0 flex-grow-0\",staticStyle:{\"width\":\"20px\"}},[_c('v-icon',{staticClass:\"tt-event-icon\",attrs:{\"size\":\"16px\",\"color\":\"white\"}},[_vm._v(\" mdi-star \")])],1):_vm._e(),_c('div',{staticClass:\"pl-1 text-body-1 tt-reservation-name mr-1\"},[(_vm.reservation.contact.isVIP)?_c('v-icon',{staticClass:\"white--text\",staticStyle:{\"margin-bottom\":\"2px\"},attrs:{\"small\":\"\"}},[_vm._v(\" mdi-crown \")]):_vm._e(),_vm._v(\" \"+_vm._s(_vm.reservation.contact.name)+\" \"),(_vm.reservation.contact.reservationCount || 0 > 0)?_c('sup',[_vm._v(\" \"+_vm._s(_vm.reservation.contact.reservationCount)+\" \")]):_vm._e()],1),(_vm.reservation.service)?_c('div',{staticClass:\"tt-reservation-service\"},[_c('v-chip',{staticClass:\"tt-event-icon ml-1 py-0 px-1\",attrs:{\"label\":\"\",\"color\":_vm.reservation.service.color,\"text-color\":_setup.contrastForColor(_vm.reservation.service.color),\"x-small\":\"\"}},[_c('span',{staticClass:\"overflow-hidden\"},[_vm._v(\" \"+_vm._s(_vm.reservation.service.title)+\" \")])])],1):_vm._e(),_vm._m(0),(_vm.reservation.label)?_c('v-icon',{staticStyle:{\"font-size\":\"27px\"},attrs:{\"color\":_setup.colorForLabel}},[_vm._v(\" \"+_vm._s(_setup.colorForLabel === '#FFFFFF' ? 'mdi-label-outline' : 'mdi-label')+\" \")]):_vm._e(),(_vm.reservation.paymentInfo)?_c('v-chip',{staticClass:\"tt-chip-compact ml-1\",attrs:{\"label\":\"\",\"color\":\"yellow\",\"text-color\":\"yellow darken-4\",\"x-small\":\"\"}},[_c('div',{staticClass:\"inner-content\"},[_vm._v(\" $ \")])]):_vm._e(),_c('div',{class:['ml-1 text-caption tt-reservation-note', {'tt-block': _setup.isBlock}]},[_c('span',[_vm._v(_vm._s(_vm.reservation.notes))])])],1)]):_c('div',{staticClass:\"tt-event--inner\"},[_c('svg',{attrs:{\"width\":\"100%\",\"height\":\"100%\"}},[(_vm.reservation.fixedEnding)?[(_setup.reservationGap > 0)?_c('rect',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"x\":\"2\",\"y\":\"2\",\"width\":_setup.width-4 + _setup.reservationGap,\"height\":_setup.height-5,\"stroke\":_setup.gapBorderColor,\"fill\":_setup.gapColor,\"opacity\":_setup.gapOpacity,\"stroke-width\":\"1\",\"rx\":\"2\"}}):_vm._e(),_c('rect',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"x\":\"2\",\"y\":\"2\",\"width\":_setup.width-4,\"height\":_setup.height-5,\"stroke\":_setup.strokeColor,\"fill\":_setup.fill,\"fill-opacity\":_setup.bgOpacity,\"stroke-width\":\"1\",\"rx\":\"2\"}})]:_vm._e(),(!_vm.reservation.fixedEnding)?[(_setup.reservationGap > 0)?_c('path',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"d\":_setup.bgPathGap,\"stroke\":_setup.gapBorderColor,\"fill\":_setup.gapColor,\"opacity\":_setup.gapOpacity,\"stroke-width\":\"1\"}}):_vm._e(),(!_vm.reservation.fixedEnding)?_c('path',{attrs:{\"transform\":\"translate(0.5,0.5)\",\"d\":_setup.bgPath,\"stroke\":_setup.strokeColor,\"fill\":_setup.fill,\"opacity\":_setup.bgOpacity,\"stroke-width\":\"1\"}}):_vm._e()]:_vm._e()],2),_c('div',{staticClass:\"d-flex align-center w-100\",style:(`position: absolute; width: ${_setup.width}px`)},[(!_setup.isBlock)?_c('div',{staticClass:\"text-center font-weight-bold flex-shrink-0 flex-grow-1 tt-reservation-partysize-compact\"},[_vm._v(\" \"+_vm._s(_vm.reservation.partySize)+\" \")]):_vm._e()])]),(_setup.isMovementBlocked)?_c(_setup.TimeTableStripedFill,{attrs:{\"pattern-id\":`tt-pattern-stripe-${_vm.reservation.id}`,\"fill-light\":_setup.fillColor,\"fill-dark\":_setup.darkenColor(_setup.fillColor, _setup.isBlock ? 30 : 15)}}):_vm._e()],1)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-block\"},[_c('span',{staticStyle:{\"opacity\":\"0\"}},[_vm._v(\".\")])])\n}]\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport Reservation, { ReservationStatus } from '@/model/Reservation';\nimport {\n computed, onBeforeUnmount, PropType, Ref, ref,\n} from 'vue';\nimport moment from 'moment';\nimport { contrastForColor, darkenColor } from '@/services/color-utils';\nimport { useVuetify } from '@/components/helpers/vue2-helpers';\nimport TimeTableStripedFill from './TimeTableStripedFill.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimeTableEvent',\n props: {\n reservation: { type: Object as PropType, required: true },\n slotWidth: { type: Number, required: true },\n rowHeight: { type: Number, required: true },\n rowSpan: { type: Number, required: false, default: 1 },\n timelineStart: { type: Date, required: true },\n selected: { type: Boolean, required: false, default: false },\n overbooked: { type: Boolean, required: false, default: false },\n},\n emits: ['show-tooltip', 'hide-tooltip', 'context-menu', 'click-event'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst $vuetify = useVuetify();\n\n\nconst root = ref(null) as Ref;\n\n\nconst gapColor = '#D6D6D8';\nconst gapBorderColor = '#858593';\nconst gapOpacity = '0.6';\n\nonBeforeUnmount(() => ((root.value as HTMLElement).classList.remove('tt-event')));\n\nconst hoverTimeout = ref(undefined) as Ref;\n\n// relative pos from left, difference between timeline and res. start\nconst left = computed(() => {\n const startTime = moment(props.reservation.dateBegin);\n const minutesFromStart = moment.duration(startTime.diff(props.timelineStart)).asMinutes();\n const offsetFromStart = (minutesFromStart / 30) * props.slotWidth;\n return offsetFromStart;\n});\n\n// + 1 is compensation for border, the divs are aligned over the border lines\nconst height = computed(() => props.rowHeight * props.rowSpan + 1);\n\nconst width = computed(() => {\n const startTime = moment(props.reservation.dateBegin);\n const endTime = moment(props.reservation.dateEnd);\n const duration = moment.duration(endTime.diff(startTime)).asMinutes();\n return (duration / 30) * props.slotWidth;\n});\n\n// gap between reservations, no gap shown for block\nconst reservationGap = computed(\n () => (props.reservation.isBlock ? 0 : ((props.reservation.tab?.bookingCap || 0) / 30) * props.slotWidth),\n);\n\nconst isNarrowWidth = computed(() => width.value <= 100);\nconst isMovementBlocked = computed(() => props.reservation.partySize === 0 || props.reservation.holdTabItems);\nconst isBlock = computed(() => props.reservation.isBlock);\nconst hasTabItems = computed(() => props.reservation.tabItems.find((o) => o.isDummy) === undefined);\n\n// Colors\nconst fillColor = computed(() => {\n if (isBlock.value) {\n return $vuetify.theme.dark ? '#666668' : '#C6C6C8';\n }\n\n if (props.overbooked || !hasTabItems.value) {\n return props.selected ? darkenColor('#FF002B', 51) : '#FF002B'; // error\n }\n\n let color = '#3355FF';\n switch (props.reservation.status) {\n case ReservationStatus.CheckedIn: color = '#FF8262'; break;// 'orange';\n case ReservationStatus.Seated: color = '#00A26F'; break; // 'green';\n case ReservationStatus.NonConfirmed: color = '#E42DD0'; break; // 'purple';\n case ReservationStatus.CheckedOut: color = '#858593'; break; // gray-50\n default: break;\n }\n return props.selected ? darkenColor(color, 51) : color;\n});\n\nconst strokeColor = computed(() => (isBlock.value ? '#3F3F49' : darkenColor(fillColor.value, 51)));\n\nconst bgOpacity = computed(() => (props.overbooked ? 0.8 : 1));\n\nconst fill = computed(\n () => (isMovementBlocked.value ? `url(#tt-pattern-stripe-${props.reservation.id})` : fillColor.value),\n);\n\n// Chips\nconst colorForLabel = computed(() => {\n if (props.reservation.label?.color === fillColor.value) return '#FFFFFF';\n return props.reservation.label?.color;\n});\n\n// paths to draw the event\nconst partysizeBgPath = computed(() => {\n const p = 2; const r = 4; const w = 24;\n const h = height.value - p * 2 - 1;\n return `M${r + p} ${p}\n h${w - r / 2}\n v${h}\n h-${w - r / 2}\n a${r},${r} 0,0,1 -${r},-${r}\n v-${h - r * 2}\n a${r},${r} 0,0,1 ${r},-${r}`;\n});\n\nconst bgPath = computed(() => {\n const p = 2;\n const r = isNarrowWidth.value ? 2 : 4;\n const capLimit = Math.max(9, Math.min(15 * props.rowSpan, (width.value / 5)));\n const cp = isNarrowWidth.value ? 4 : 7; // control point for quadcurve\n const h = height.value - p * 2 - 1;\n const w = width.value - 1;\n\n return `M${r + p} ${p} H${w - capLimit}\n q${cp},0 ${capLimit} ${h / 2}\n q-${capLimit - cp},${h / 2} -${capLimit} ${h / 2}\n h-${w - r - capLimit - p}\n a${r},${r} 0,0,1 -${r},-${r}\n v-${h - r * 2}\n a${r},${r} 0,0,1 ${r},-${r}`;\n});\n\nconst bgPathGap = computed(() => {\n const p = 2;\n const r = isNarrowWidth.value ? 2 : 4;\n const capLimit = Math.max(9, Math.min(15 * props.rowSpan, (width.value / 5)));\n const cp = isNarrowWidth.value ? 4 : 7; // control point for quadcurve\n const h = height.value - p * 2 - 1;\n const w = width.value + reservationGap.value - 1;\n\n return `M${r + p} ${p} H${w - capLimit}\n q${cp},0 ${capLimit} ${h / 2}\n q-${capLimit - cp},${h / 2} -${capLimit} ${h / 2}\n h-${w - r - capLimit - p}\n a${r},${r} 0,0,1 -${r},-${r}\n v-${h - r * 2}\n a${r},${r} 0,0,1 ${r},-${r}`;\n});\n\n// Mouse Handlers\nfunction mouseEnter(evt: MouseEvent) {\n if (evt.buttons !== 0) { return; }\n window.clearTimeout(hoverTimeout.value);\n hoverTimeout.value = window.setTimeout(() => {\n emit('show-tooltip', root.value);\n }, 700);\n}\nfunction mouseMove(evt: MouseEvent) {\n if (evt.buttons !== 0) { return; }\n mouseEnter(evt);\n}\nfunction mouseLeave() {\n emit('hide-tooltip');\n window.clearTimeout(hoverTimeout.value);\n}\nfunction onRightClick(e: MouseEvent) {\n // do not trigger right click if it originated on touch device (long touch == right click)\n // as this will interfere with drag and drop\n if (e.buttons === 0) { return; }\n emit('context-menu', props.reservation, e);\n}\nfunction onClick(e: any) {\n // see drag and drop mixin for explanation of this\n const element = root.value as HTMLElement;\n if (element.dataset.dnd === '1') {\n element.dataset.dnd = '0';\n return;\n }\n\n emit('click-event', props.reservation, e);\n}\n\n\nreturn { __sfc: true,$vuetify, props, root, emit, gapColor, gapBorderColor, gapOpacity, hoverTimeout, left, height, width, reservationGap, isNarrowWidth, isMovementBlocked, isBlock, hasTabItems, fillColor, strokeColor, bgOpacity, fill, colorForLabel, partysizeBgPath, bgPath, bgPathGap, mouseEnter, mouseMove, mouseLeave, onRightClick, onClick, contrastForColor, darkenColor, TimeTableStripedFill }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableEvent.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableEvent.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./TimeTableEvent.vue?vue&type=template&id=0549a61f&\"\nimport script from \"./TimeTableEvent.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./TimeTableEvent.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"tt-closed-slot\",style:(`left: ${_vm.left}px; width: ${_vm.width}; height: ${_vm.height}px`)},[_vm._v(\"   \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport moment from 'moment';\n\nexport default Vue.extend({\n name: 'TimeTableClosedSlot',\n props: {\n begin: { type: Date, required: true },\n end: { type: Date || null, required: false, default: null },\n slotWidth: { type: Number, required: true },\n rowHeight: { type: Number, required: true },\n rowSpan: { type: Number, required: false, default: 1 },\n timelineStart: { type: Date, required: true },\n },\n data() { return {}; },\n computed: {\n left(): number {\n // relative pos from left, difference between timeline and res. start\n const startTime = moment(this.begin);\n const minutesFromStart = moment.duration(startTime.diff(this.timelineStart)).asMinutes();\n const offsetFromStart = (minutesFromStart / 30) * this.slotWidth;\n return offsetFromStart;\n },\n width(): string {\n const startTime = moment(this.begin);\n if (this.end === null) { return `calc(100% - ${this.left}px`; }\n\n const endTime = moment(this.end);\n const duration = moment.duration(endTime.diff(startTime)).asMinutes();\n return `${(duration / 30) * this.slotWidth}px`;\n },\n height(): number {\n return (this.rowSpan * this.rowHeight) - 1;\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableClosedSlot.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableClosedSlot.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeTableClosedSlot.vue?vue&type=template&id=244fb690&\"\nimport script from \"./TimeTableClosedSlot.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeTableClosedSlot.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"tt-time-indicator\",style:(`left: ${_vm.left}px; ${_vm.hideIndicator}`)},[_vm._v(\"   \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport moment from 'moment';\n\nexport default Vue.extend({\n name: 'TimeTableIndicator',\n props: {\n slotWidth: { type: Number, required: true },\n asideWidth: { type: Number, required: true },\n timelineStart: { type: Object as PropType, required: true },\n timelineEnd: { type: Object as PropType, required: true },\n },\n data() {\n return {\n left: this.asideWidth,\n refreshInterval: 0 as number,\n initialRefreshTimeout: 0 as number,\n hide: false,\n };\n },\n computed: {\n date(): Date {\n return this.$tstore.state.update.date;\n },\n hideIndicator(): string {\n return this.hide ? 'display: none;' : '';\n },\n },\n watch: {\n slotWidth() {\n this.updatePosition();\n },\n date() {\n this.updatePosition();\n },\n },\n beforeDestroy() {\n document.getElementById('tt-scrollable-container')?.removeEventListener('scroll', this.scrollListener);\n\n window.clearInterval(this.refreshInterval);\n window.clearTimeout(this.initialRefreshTimeout);\n },\n mounted() {\n this.updatePosition();\n\n document.getElementById('tt-scrollable-container')!.addEventListener('scroll', this.scrollListener);\n\n this.refreshInterval = window.setInterval(() => {\n this.updatePosition();\n }, 10000);\n\n this.initialRefreshTimeout = window.setTimeout(() => {\n this.updatePosition();\n }, 2000);\n },\n methods: {\n updatePosition() {\n if (this.timelineEnd.getTime() < new Date().getTime()) {\n this.left = -100;\n return;\n }\n const diff = moment().diff(this.timelineStart, 'minutes');\n this.left = diff * (this.slotWidth / 30.0) + this.asideWidth;\n this.scrollListener();\n },\n scrollListener() {\n const { scrollLeft } = document.getElementById('tt-scrollable-container')!;\n this.hide = (scrollLeft + (this.asideWidth - 2)) > this.left;\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableIndicator.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableIndicator.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeTableIndicator.vue?vue&type=template&id=8fafaa74&\"\nimport script from \"./TimeTableIndicator.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeTableIndicator.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._t(\"activator\",null,{\"hidePopover\":_setup.scheduleHidePopover,\"createPopover\":_setup.createPopover}),(_setup.mouseIsOver)?_c('div',{ref:\"tooltip\",class:[{'theme--dark': _vm.$vuetify.theme.dark}],attrs:{\"id\":\"tt-tooltip\",\"role\":\"tooltip\"},on:{\"mouseenter\":_setup.mouseInsidePopover,\"mouseleave\":_setup.hidePopover}},[_c('div',[_vm._v(_vm._s(_vm.$t('label.table', [_setup.tabItems])))]),_c('div',[_vm._v(_vm._s(_vm.reservation.contact.name || _vm.$t('placeholder.no_name'))+\" | \"+_vm._s(_vm.reservation.partySize)+\" p.\")]),_c('div',[_vm._v(\" \"+_vm._s(_vm.$localized.hourMinText(_vm.reservation.dateBegin))+\" - \"+_vm._s(_vm.$localized.hourMinText(_vm.reservation.dateEnd))+\" \")]),(_setup.hasExtraInfo)?[_c('hr',{staticClass:\"my-1\"}),_c('div',{staticClass:\"font-weight-regular text-pre-wrap\"},[_vm._v(\" \"+_vm._s(_vm.reservation.notes)+\" \")]),_c(_setup.ReservationChips,{attrs:{\"reservation\":_vm.reservation}})]:_vm._e(),_c('div',{attrs:{\"id\":\"tt-arrow\",\"data-popper-arrow\":\"\"}})],2):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport Reservation from '@/model/Reservation';\nimport ReservationChips from '@/components/views/guests/ReservationChips.vue';\nimport { createPopper } from '@popperjs/core';\nimport {\n ref, PropType, computed, Ref, nextTick,\n} from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TimeTableTooltip',\n props: {\n reservation: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\nconst mouseIsOver = ref(false);\nconst hideTimeout = ref(undefined as undefined | number);\n\nconst hasExtraInfo = computed(() => (props.reservation.notes !== null && props.reservation.notes.length > 0)\n || props.reservation.paymentInfo !== undefined\n || props.reservation.service !== null\n || props.reservation.fixedEnding\n || props.reservation.label !== null\n || props.reservation.attachments.length > 0);\n\nconst tabItems = computed(() => props.reservation.tabItems.map((t) => t.no).join(', '));\n\nconst mouseInsidePopover = () => {\n window.clearTimeout(hideTimeout.value);\n};\n\nconst hidePopover = () => { mouseIsOver.value = false; };\nconst scheduleHidePopover = () => {\n window.clearTimeout(hideTimeout.value);\n hideTimeout.value = window.setTimeout(() => { hidePopover(); }, 100);\n};\n\nconst tooltip = ref(null) as Ref;\nconst createPopover = (el: any) => {\n if (mouseIsOver.value) { return; }\n mouseIsOver.value = true;\n const boundary = document.getElementById('tt-scrollable-container');\n\n nextTick(() => {\n const tt = (tooltip.value as HTMLElement);\n // console.log(`p: ${el} t: ${tooltip} b: ${boundary}`);\n\n createPopper(el, tt, {\n placement: 'auto',\n strategy: 'fixed',\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n boundary,\n padding: 8,\n altAxis: true,\n },\n },\n ],\n });\n });\n};\n\n\nreturn { __sfc: true,props, mouseIsOver, hideTimeout, hasExtraInfo, tabItems, mouseInsidePopover, hidePopover, scheduleHidePopover, tooltip, createPopover, ReservationChips }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableTooltip.vue?vue&type=script&lang=ts&setup=true&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableTooltip.vue?vue&type=script&lang=ts&setup=true&\"","import { render, staticRenderFns } from \"./TimeTableTooltip.vue?vue&type=template&id=01492f10&\"\nimport script from \"./TimeTableTooltip.vue?vue&type=script&lang=ts&setup=true&\"\nexport * from \"./TimeTableTooltip.vue?vue&type=script&lang=ts&setup=true&\"\nimport style0 from \"./TimeTableTooltip.vue?vue&type=style&index=0&id=01492f10&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport Tab from '@/model/Tab';\nimport Reservation from '@/model/Reservation';\nimport TabItem from '@/model/TabItem';\nimport { mapActions } from 'vuex';\nimport DragDrop from '@/components/views/tables/mixins/drag-drop';\nimport DragNewReservation from '@/components/views/tables/mixins/drag-new-reservation';\nimport DayPartMixin from '@/components/views/tables/mixins/day-part';\nimport { tryCloseEditReservation, tryEditReservation } from '@/services/reservation-edit-utils';\nimport TimeSlot from '@/model/TimeSlot';\nimport { isOngoingReservation } from '@/services/reservation-utils';\nimport StatusContextMenu from '@/components/reservation/StatusContextMenu.vue';\nimport TimeTableEvent from '@/components/views/tables/TimeTableEvent.vue';\nimport TimeTableClosedSlot from '@/components/views/tables/TimeTableClosedSlot.vue';\nimport TimeTableIndicator from '@/components/views/tables/TimeTableIndicator.vue';\nimport TimeTableTooltip from '@/components/views/tables/TimeTableTooltip.vue';\n\nconst baseSlotWidth = 60;\n\nexport default Vue.extend({\n name: 'TimeTableGrid',\n components: {\n TimeTableEvent, TimeTableClosedSlot, TimeTableIndicator, StatusContextMenu, TimeTableTooltip,\n },\n mixins: [DayPartMixin, DragDrop, DragNewReservation],\n props: {\n zoom: { type: Number, required: false, default: 1 },\n tabs: { type: Array as PropType>, required: true },\n reservations: { type: Array as PropType>, required: true },\n timeSlots: { type: Array as PropType>, required: true },\n timelineStart: { type: Date, required: true },\n timelineEnd: { type: Date, required: true },\n closedSlots: { type: Array as PropType>, required: true },\n },\n data() {\n return {\n headerDragX: 0,\n headerDragScrollOrigin: undefined as number | undefined,\n contextMenu: {\n reservation: null as null | Reservation,\n visible: false,\n x: 0,\n y: 0,\n },\n };\n },\n computed: {\n rowHeight(): number {\n return this.zoom < 1 ? 28 : 36;\n },\n slotWidth(): number {\n const width = Math.floor(this.zoom * baseSlotWidth);\n return width % 2 === 0 ? width : width + 1;\n },\n asideWidth(): number {\n return this.zoom < 1 ? 60 : 70;\n },\n reservationsInt(): Reservation[] {\n return this.$data.temporaryReservation !== null\n ? [...this.reservations, this.$data.temporaryReservation] : [...this.reservations];\n },\n reservationsByTabItem(): Map {\n const map = new Map();\n\n this.reservationsInt.forEach((r) => {\n for (let i = 0; i < r.tabItems.length; i += 1) {\n const ti = r.tabItems[i];\n if (i > 0 && r.tab !== null) {\n const tidx = r.tab.tabItems.indexOf(ti);\n if (tidx < 0 || r.tabItems[i - 1] !== r.tab.tabItems[tidx - 1]) {\n map.set(ti.id, (map.get(ti.id) ?? []).concat(r));\n }\n } else {\n map.set(ti.id, (map.get(ti.id) ?? []).concat(r));\n }\n }\n });\n\n return map;\n },\n overbooked(): Map {\n const dayOverbookedFlagsMap = this.$tstore.getters.dayOverbookedFlagsForReservationId as Map;\n return dayOverbookedFlagsMap;\n },\n },\n watch: {\n zoom(current: number, prev: number) {\n // console.log(`zoomOut: ${current < prev}, slotWidth: ${this.slotWidth}, c: ${current}, p: ${prev}`);\n const scrollValue = document.getElementById('tt-scrollable-container')!.scrollLeft;\n const prevSlot = scrollValue / (prev * baseSlotWidth);\n document.getElementById('tt-scrollable-container')!.scrollLeft = prevSlot * this.slotWidth;\n },\n },\n methods: {\n ...mapActions(['editReservation', 'sendReservation', 'setReservationFromContextStatusChange']),\n selected(rid: number): boolean {\n return rid === 0 || this.$tstore.getters.editReservation?.id === rid;\n },\n async eventClicked(r: Reservation, evt: any) {\n if (r.id !== 0 && this.$tstore.getters.editReservation?.id === r.id) {\n await tryCloseEditReservation();\n return;\n }\n\n const isOngoing = isOngoingReservation(r);\n if (isOngoing) {\n this.showContextMenu(r, evt);\n } else {\n await tryEditReservation(this.$router, r);\n }\n },\n showContextMenu(r: Reservation, evt: MouseEvent) {\n this.contextMenu.x = evt.clientX;\n this.contextMenu.y = evt.clientY;\n this.contextMenu.reservation = r;\n this.contextMenu.visible = true;\n },\n rowSpanForEvent(r: Reservation, tabItem: TabItem): number {\n if (!r.tab) return 1;\n\n const startIndex = r.tabItems.findIndex((ti) => ti.id === tabItem.id);\n const tStartIndex = r.tab.tabItems.findIndex((ti) => ti.id === tabItem.id);\n\n let rowSpan = 1;\n for (let i = startIndex + 1; i < r.tabItems.length; i += 1) {\n if (r.tabItems[i] !== r.tab.tabItems[tStartIndex + i - startIndex]) break;\n rowSpan += 1;\n }\n\n return rowSpan;\n },\n headerMouseup(evt: MouseEvent) {\n this.headerDragScrollOrigin = undefined;\n },\n headerMousedown(evt: MouseEvent) {\n const scrollElm = (this.$refs.scrollableContainer as HTMLElement);\n this.headerDragX = evt.screenX;\n this.headerDragScrollOrigin = scrollElm.scrollLeft;\n },\n headerMouseover(evt: MouseEvent) {\n if (evt.buttons === 0 || this.headerDragScrollOrigin === undefined) { return; }\n const scrollElm = (this.$refs.scrollableContainer as HTMLElement);\n scrollElm.scrollLeft = this.headerDragScrollOrigin + (this.headerDragX - evt.screenX);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableGrid.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TimeTableGrid.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TimeTableGrid.vue?vue&type=template&id=007bf0d5&\"\nimport script from \"./TimeTableGrid.vue?vue&type=script&lang=ts&\"\nexport * from \"./TimeTableGrid.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TimeTableGrid.vue?vue&type=style&index=0&id=007bf0d5&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (!_vm.tableAllocationCTAVisible)?_c('v-system-bar',{staticStyle:{\"max-height\":\"28px\",\"min-height\":\"28px\"},attrs:{\"height\":\"28\",\"color\":\"warning\"}},[_c('confirmation-dialog',{attrs:{\"message\":_vm.$t('message.settings_change_not_allowed'),\"hide-cancel\":\"\",\"confirm-title\":_vm.$t('button.ok'),\"visible\":_vm.dialogVisible,\"cancel-title\":undefined},on:{\"close\":function($event){_vm.dialogVisible = false}}}),(_vm.$vuetify.breakpoint.smAndUp)?[_c('v-icon',{attrs:{\"color\":\"black\"}},[_vm._v(\" mdi-alert \")]),_c('span',{staticClass:\"font-weight-medium black--text mr-1\"},[_vm._v(_vm._s(_vm.$t('label.tip'))+\":\")])]:_vm._e(),_c('i18n',{staticClass:\"black--text ellipsize\",attrs:{\"path\":\"label.cta_table_allocation\",\"tag\":\"span\"}},[(_vm.userSettingsAllowed)?_c('router-link',{staticClass:\"blue--text\",attrs:{\"to\":\"/settings/advanced\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.cta_table_allocation_turn_on'))+\" \")]):_c('a',{staticClass:\"blue--text\",attrs:{\"href\":\"#\"},on:{\"click\":function($event){_vm.dialogVisible=true}}},[_vm._v(_vm._s(_vm.$t('label.cta_table_allocation_turn_on')))])],1)],2):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport User from '@/model/User';\n\nexport default Vue.extend({\n name: 'TableAllocationCTA',\n components: { ConfirmationDialog },\n props: { },\n data() {\n return { dialogVisible: false };\n },\n computed: {\n tableAllocationCTAVisible(): boolean {\n const { tableAllocation } = this.$tstore.state.settings.accountSettings;\n return tableAllocation === true || tableAllocation === undefined;\n },\n userSettingsAllowed(): boolean {\n const activeUser = this.$tstore.getters.activeUser as User | undefined;\n return activeUser?.allowSettings || false;\n },\n },\n methods: { },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TableAllocationCTA.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TableAllocationCTA.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TableAllocationCTA.vue?vue&type=template&id=65657358&\"\nimport script from \"./TableAllocationCTA.vue?vue&type=script&lang=ts&\"\nexport * from \"./TableAllocationCTA.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport Tab from '@/model/Tab';\nimport Reservation from '@/model/Reservation';\nimport {\n slotFromMinutes, minutesFromTimeString, timeIndexFromSlot, dateFromDateAndTimeIndex, TIME_SLOTS_COUNT,\n} from '@/services/time-utils';\nimport storage from '@/services/local-storage';\nimport { DEFAULT_TIMETABLE_START_TIME, DEFAULT_TIMETABLE_END_TIME } from '@/services/configuration';\nimport { findLastIndex, clamp } from '@/services/common';\nimport TimeSlot from '@/model/TimeSlot';\nimport { timetableEntities } from '@/util/timetable-entities';\nimport { performAction, performSaveAction } from '@/services/vue-utils';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport { mapActions } from 'vuex';\nimport { isSafari } from '@/util/common';\nimport KeyboardControl from '@/mixins/keyboard-control';\nimport ReservationsToolbar from '@/components/views/main/ReservationsToolbar.vue';\nimport TimeTableGrid from '@/components/views/tables/TimeTableGrid.vue';\nimport TableAllocationCTA from '@/components/util/TableAllocationCTA.vue';\n\nexport default Vue.extend({\n name: 'Tables',\n components: {\n TimeTableGrid, ReservationsToolbar, ConfirmationDialog, TableAllocationCTA,\n },\n mixins: [KeyboardControl],\n props: { },\n data() {\n return {\n zoom: 1,\n zoomLevels: [\n { value: 0.51, text: '50%' },\n { value: 0.75, text: '75%' },\n { value: 1, text: '100%' },\n { value: 1.25, text: '125%' },\n { value: 1.50, text: '150%' },\n { value: 1.75, text: '175%' }],\n dayPart: null as null | number,\n gotoDayPart: null as null | number,\n dayParts: [\n { text: this.$i18n.t('label.morning'), value: 6 },\n { text: this.$i18n.t('label.afternoon'), value: 12 },\n { text: this.$i18n.t('label.evening'), value: 18 }],\n filterVisibleReq: false,\n relocateConfirmation: false,\n relocateConfirmationMessage: '',\n reservationsToRelocate: [] as Reservation[],\n // This is to account the case when the debug footer is shown\n heightOverrideForFooter: process.env.VUE_APP_SHOW_FOOTER === 'true'\n ? 'height: calc(100vh - 64px - 36px); margin-bottom: -36px !important;'\n : '',\n };\n },\n computed: {\n hasFilter(): boolean {\n return this.$tstore.state.filter.tablesTab !== null;\n },\n isToday(): boolean {\n return this.$tstore.getters.isToday;\n },\n heightForAppBar(): string {\n return this.$vuetify.breakpoint.smAndDown ? 'height: calc(100vh - 56px);' : '';\n },\n timetableEntities(): { tabs: Tab[], reservations: Reservation[] } {\n return timetableEntities(this.tabs, this.reservations);\n },\n tabFilter(): Tab | null {\n return this.$tstore.state.filter.tablesTab;\n },\n filterVisible(): boolean {\n return this.tabFilter !== null || this.filterVisibleReq;\n },\n // null as Tab | null | { id?: number },\n tabs(): Tab[] {\n if (this.tabFilter?.id !== undefined) return [this.tabFilter as Tab];\n return this.$tstore.state.settings.tabs;\n },\n reservations(): Reservation[] {\n const dayValidReservationsAndBlocks = this.$tstore.getters.dayValidReservationsAndBlocks as Reservation[];\n return dayValidReservationsAndBlocks.filter((r) => !this.tabFilter?.id || r.tab?.id === this.tabFilter.id);\n },\n closedSlots(): {id: number, begin: Date, end: Date}[] {\n const closed: {id: number, begin: Date, end: Date}[] = [];\n\n const { dateIndex } = this.$tstore.state.update;\n\n let bci: number | null = null;\n let eci: number | null = null;\n\n for (let i = 0; i < this.slots.length + 1; i += 1) {\n let isOpen = i < this.slots.length ? this.slots[i].isOpen : true; // last dummy open slot\n const index = this.slots[0].slot + i;\n\n // quarter slot (:15, :45)\n if (index % 2 === 1 && i > 0) isOpen = isOpen || this.slots[i - 1].isOpen;\n\n if (!isOpen && !bci) bci = index; // begin slot index\n if (isOpen && bci) eci = index; // end slot index\n\n // closed space found\n if (bci && eci) {\n closed.push({\n id: closed.length,\n begin: dateFromDateAndTimeIndex(dateIndex, timeIndexFromSlot(bci))!,\n end: dateFromDateAndTimeIndex(dateIndex, timeIndexFromSlot(eci))!,\n });\n bci = null;\n eci = null;\n }\n }\n\n return closed;\n },\n filterSectionItems(): any {\n return [\n { text: this.$i18n.t('label.all_sections'), value: null },\n { divider: true },\n ...this.$tstore.state.settings.tabs,\n ];\n },\n // timetable\n slots(): TimeSlot[] {\n const margin = 2; // minimum 30 min margin\n\n // find first and last available slot\n const timeSlots = this.$tstore.getters.dayTimeSlots as TimeSlot[];\n let firstSlot = timeSlots.findIndex((o) => o.isOpen);\n let lastSlot = findLastIndex(timeSlots, (o: TimeSlot) => o.isOpen);\n\n // fallback to defaults\n if (firstSlot === -1) firstSlot = slotFromMinutes(minutesFromTimeString(DEFAULT_TIMETABLE_START_TIME));\n else firstSlot -= margin;\n if (lastSlot === -1) lastSlot = slotFromMinutes(minutesFromTimeString(DEFAULT_TIMETABLE_END_TIME));\n else lastSlot += margin;\n\n // check reservations\n this.reservations.forEach((o: Reservation) => {\n if (firstSlot > o.slotBegin - margin) firstSlot = o.slotBegin - margin;\n if (lastSlot < o.slotEnd + margin) lastSlot = o.slotEnd + margin;\n });\n\n // truncate slot to 60 min\n firstSlot -= firstSlot % 4;\n lastSlot += lastSlot % 4;\n lastSlot += 1; // extra ending 15min slot\n\n firstSlot = clamp(firstSlot, 0, TIME_SLOTS_COUNT - 1);\n lastSlot = clamp(lastSlot, 0, TIME_SLOTS_COUNT - 1);\n return timeSlots.slice(firstSlot, lastSlot);\n },\n timeSlots(): TimeSlot[] {\n const timeSlots: TimeSlot[] = [];\n this.slots.forEach((o, i) => { if (i % 2 === 0) timeSlots.push(o); });\n return timeSlots;\n },\n timelineStart(): Date | null {\n const { dateIndex } = this.$tstore.state.update;\n const timeIndex = timeIndexFromSlot(this.timeSlots[0].slot);\n const date = dateFromDateAndTimeIndex(dateIndex, timeIndex);\n return date;\n },\n timelineEnd(): Date | null {\n const { dateIndex } = this.$tstore.state.update;\n const timeIndex = timeIndexFromSlot(this.timeSlots[this.timeSlots.length - 1].slot + 1);\n const date = dateFromDateAndTimeIndex(dateIndex, timeIndex);\n return date;\n },\n },\n watch: {\n zoom() {\n this.dayPart = null;\n storage.setTimetableZoom(this.zoom);\n },\n },\n mounted() {\n const zoom = storage.getTimetableZoom();\n if (zoom) this.zoom = zoom;\n },\n methods: {\n ...mapActions(['sendReservation']),\n applySafariFix(): string {\n return isSafari() ? 'height: -webkit-fill-available' : '';\n },\n showRelocateConfirmation(reservations: Reservation[]) {\n this.relocateConfirmationMessage = reservations.length > 1\n ? this.$i18n.tc('message.confirm_move_other_reservations')\n : this.$i18n.tc('message.confirm_move_other_reservation');\n\n this.relocateConfirmation = true;\n this.reservationsToRelocate = reservations;\n },\n async relocateReservations() {\n console.log('relocateReservations:', this.reservationsToRelocate);\n const ok = await performSaveAction(\n undefined,\n async () => {\n for (let ri = 0; ri < this.reservationsToRelocate.length; ri += 1) {\n const reservation = this.reservationsToRelocate[ri];\n // eslint-disable-next-line no-await-in-loop\n await this.sendReservation({ reservation, relocate: true });\n }\n },\n );\n this.reservationsToRelocate = [];\n },\n tabFilterChanged(tab: Tab | null) {\n this.$tstore.dispatch('applyFilter', { tablesTab: tab });\n },\n filterBtnClicked() {\n this.filterVisibleReq = !this.filterVisibleReq;\n this.$tstore.dispatch('applyFilter', { tablesTab: null });\n },\n clearFilter() {\n this.filterVisibleReq = false;\n this.$tstore.dispatch('applyFilter', { tablesTab: null });\n },\n async scrollToNow() {\n if (!this.isToday) {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('changeToDate', new Date()),\n );\n }\n this.gotoDayPart = -1;\n },\n updateGotoDayPart(val: number) {\n this.gotoDayPart = val;\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tables.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Tables.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Tables.vue?vue&type=template&id=1f5f8cc5&scoped=true&\"\nimport script from \"./Tables.vue?vue&type=script&lang=ts&\"\nexport * from \"./Tables.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Tables.vue?vue&type=style&index=0&id=1f5f8cc5&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1f5f8cc5\",\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('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reservations-toolbar',{attrs:{\"daynote-visible\":_vm.compact && _vm.canvasMaximized || !_vm.compact,\"print-visible\":_vm.compact && _vm.canvasMaximized || !_vm.compact,\"reservations\":_vm.reservations,\"waitlist-popout\":\"\"}},[(!_vm.canvasMaximized)?[_c('v-select',{class:['fp-tab-select pl-0 pr-2', {'compact': _vm.compact }],attrs:{\"value\":_vm.tab,\"hide-details\":\"\",\"return-object\":\"\",\"dense\":_vm.compact,\"items\":_vm.tabs},on:{\"input\":_vm.tabChanged}}),(_vm.compact && !_vm.canvasMaximized)?_c('v-spacer'):_vm._e(),_c('v-btn',{staticClass:\"mr-0 pr-0 ml-5\",attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){_vm.canvasMaximized = true}}},[_c('v-icon',[_vm._v(\" mdi-chevron-left \")])],1)]:[_c('v-btn',{staticClass:\"mr-0 pr-0\",attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){_vm.canvasMaximized = false}}},[_c('v-icon',[_vm._v(\" mdi-chevron-right \")])],1)],(_vm.compact && _vm.canvasMaximized || !_vm.compact)?_c('v-slider',{staticClass:\"px-2 mt-1\",staticStyle:{\"width\":\"100%\"},attrs:{\"hide-details\":\"\",\"max\":_vm.timeSlotMax,\"min\":_vm.timeSlotMin},on:{\"input\":_vm.timeSlotChanged},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [_c('v-btn',{attrs:{\"id\":\"time-tracking-btn\",\"small\":\"\",\"depressed\":_vm.timeTracking,\"elevation\":\"0\",\"outlined\":!_vm.timeTracking,\"color\":\"primary\",\"disabled\":!_vm.isToday},on:{\"click\":_vm.timeTrackingClick}},[_vm._v(\" \"+_vm._s(_vm.$localized.hourMinTextFrom24hr(_vm.timeSlotText))+\" \")]),_c('v-select',{staticClass:\"ml-5\",style:(`min-width:${_vm.$vuetify.breakpoint.xsOnly ? 42 : 78 }px!important;\n max-width:${_vm.$vuetify.breakpoint.xsOnly ? 42 : 78 }px!important`),attrs:{\"append-icon\":\"\",\"prepend-inner-icon\":_vm.$vuetify.breakpoint.xsOnly ? '' : 'mdi-magnify-plus-outline',\"hide-details\":\"\",\"items\":_vm.zoomLevels},model:{value:(_vm.zoom),callback:function ($$v) {_vm.zoom=$$v},expression:\"zoom\"}})]},proxy:true}],null,false,991867916),model:{value:(_vm.timeSlot),callback:function ($$v) {_vm.timeSlot=$$v},expression:\"timeSlot\"}}):_vm._e()],2)]},proxy:true}])},[_c('table-allocation-CTA'),_c('div',{staticClass:\"fp-wrapper d-flex h-100\"},[(!_vm.canvasMaximized)?[_c('floorplan-view-sidebar',{class:['fp-view-sidebar', {'compact': _vm.compact }],attrs:{\"reservations-by-time\":_vm.reservationsByTime,\"selected-res-id\":_vm.selectedResId,\"is-loaded\":_vm.isLoaded},on:{\"selected\":_vm.reservationSelected}}),_c('v-divider',{staticStyle:{\"z-index\":\"0\"},attrs:{\"vertical\":\"\"}})]:_vm._e(),_c('floorplan-canvas',{attrs:{\"tab-items\":_vm.tabItems,\"ongoing-reservations\":_vm.ongoingReservationsForTabItem,\"upcoming-reservations\":_vm.upcomingReservationsForTabItem,\"selected-tab-item-ids\":_vm.selectedTabItemIds,\"overbooked-tab-item-ids\":_vm.overbookedTabItemIds,\"zoom\":_vm.zoom,\"is-loaded\":_vm.isLoaded},on:{\"selected\":_vm.tabItemSelected,\"setup-floorplan\":_vm.setupFloorplan}})],2)],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',[(!_vm.isLoaded)?_c('div'):(_vm.reservationsByTime.size > 0)?_c('v-list',{staticClass:\"pt-0\",attrs:{\"two-line\":\"\"}},[_c('v-list-item-group',{on:{\"change\":_vm.selectedChange},model:{value:(_vm.selected),callback:function ($$v) {_vm.selected=$$v},expression:\"selected\"}},[_vm._l((_vm.reservationsByTime.entries()),function([group, value]){return [_c('guest-list-header-row',{key:group,attrs:{\"title\":_vm.$localized.hourMinTextFrom24hr(group)}}),_vm._l((value),function(reservation,i){return [_c('guest-list-row',{key:`fp_g_${group}_r_${i}`,attrs:{\"reservation\":reservation,\"overbooked-tab-items\":_vm.overbookedTabItemsForReservation.get(reservation.id),\"unread-reservations\":\"\",\"compact\":\"\"}}),(i + 1 < value.length)?_c('v-divider',{key:`${group}_${i}`}):_vm._e()]})]})],2)],1):[_c('div',{staticClass:\"d-flex h-100 flex-column justify-center align-center\"},[_c('div',[_vm._v(_vm._s(_vm.$t('placeholder.no_reservations')))])])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport Reservation from '@/model/Reservation';\nimport GuestListRow from '@/components/views/guests/GuestListRow.vue';\nimport GuestListHeaderRow from '@/components/views/guests/GuestListHeaderRow.vue';\n\nexport default Vue.extend({\n name: 'FloorplanViewSidebar',\n components: {\n GuestListRow, GuestListHeaderRow,\n },\n props: {\n reservationsByTime: { type: Object as PropType>, required: true },\n selectedResId: { type: Number, required: false, default: undefined },\n isLoaded: { type: Boolean, required: false, default: true },\n },\n data() {\n return {\n selected: this.selectedResId,\n };\n },\n computed: {\n overbookedTabItemsForReservation(): Map|undefined> {\n return this.$tstore.getters.dayOverbookedTabItemsForReservationId;\n },\n },\n watch: {\n selectedResId() {\n this.selected = this.selectedResId;\n },\n },\n methods: {\n selectedChange(reservationId: number) {\n this.$emit('selected', reservationId);\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanViewSidebar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FloorplanViewSidebar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./FloorplanViewSidebar.vue?vue&type=template&id=cb4deaa2&\"\nimport script from \"./FloorplanViewSidebar.vue?vue&type=script&lang=ts&\"\nexport * from \"./FloorplanViewSidebar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\nimport Vue from 'vue';\nimport ReservationsToolbar from '@/components/views/main/ReservationsToolbar.vue';\nimport FloorplanCanvas from '@/components/views/floorplan/FloorplanCanvas.vue';\nimport FloorplanViewSidebar from '@/components/views/floorplan/FloorplanViewSidebar.vue';\nimport TabItem from '@/model/TabItem';\nimport Reservation from '@/model/Reservation';\nimport Tab from '@/model/Tab';\nimport { mapBySlotToMapByTimeText, toSortedMapBySlot } from '@/services/reservations-utils';\nimport {\n DAY_TIME_SLOTS_COUNT, MORNING_TIME_SLOTS_COUNT,\n minutesFromDate, minutesFromSlot, slotFromMinutes, niceTimeTextFromSlot,\n} from '@/services/time-utils';\nimport { tryCloseEditReservation, tryEditReservation } from '@/services/reservation-edit-utils';\nimport storage from '@/services/local-storage';\nimport { clamp } from '@/services/common';\nimport KeyboardControl from '@/mixins/keyboard-control';\nimport { durationForReservation } from '@/services/reservation-utils';\nimport TableAllocationCTA from '@/components/util/TableAllocationCTA.vue';\n\nexport default Vue.extend({\n name: 'Floor',\n components: {\n FloorplanCanvas,\n FloorplanViewSidebar,\n ReservationsToolbar,\n TableAllocationCTA,\n },\n mixins: [KeyboardControl],\n data() {\n const isToday = this.$tstore.getters.isToday as boolean;\n return {\n zoom: 1,\n zoomLevels: [\n { value: 0.25, text: '25%' },\n { value: 0.5, text: '50%' },\n { value: 0.75, text: '75%' },\n { value: 1, text: '100%' },\n { value: 1.25, text: '125%' },\n { value: 1.50, text: '150%' },\n { value: 1.75, text: '175%' }],\n timeSlot: MORNING_TIME_SLOTS_COUNT,\n selectedTabItemIds: undefined as number[] | undefined,\n selectedResId: undefined as number | undefined,\n canvasMaximized: false,\n timeTracking: isToday, // should be false if not today\n timeTrackingInterval: 0 as number,\n };\n },\n computed: {\n editedReservationId(): number | undefined {\n return this.$tstore.getters.editReservation?.id;\n },\n isLoaded(): boolean {\n return this.$tstore.getters.isLoaded;\n },\n tabs(): Tab[] {\n return this.$tstore.state.settings.tabs;\n },\n tab(): Tab | null {\n return this.$tstore.state.filter.floorplanTab ?? this.tabs.find(Boolean) ?? null;\n },\n tabItems(): TabItem[] {\n return this.tab?.tabItems ?? [];\n },\n reservations(): Reservation[] {\n const all = this.$tstore.getters.dayValidReservationsAndBlocks as Reservation[];\n console.log('reservations: ', all.filter((o) => o.tab === this.tab));\n return all.filter((o) => o.tab === this.tab);\n },\n reservationsByTime(): Map {\n const reservationsBySlot = toSortedMapBySlot(this.reservations);\n const reservationsByTime = mapBySlotToMapByTimeText(reservationsBySlot);\n return reservationsByTime;\n },\n ongoingReservationsForTabItem(): Map {\n const map = new Map>();\n this.reservations.forEach((r) => {\n if (r.slotBegin > this.timeSlot || r.slotEnd < this.timeSlot) return; // not ongoing\n r.tabItems.forEach((ti) => {\n map.set(ti.id, (map.get(ti.id) ?? []).concat(r));\n });\n });\n return map;\n },\n upcomingReservationsForTabItem(): Map {\n const duration = durationForReservation([], this.tab ?? undefined);\n\n const map = new Map>();\n this.reservations.forEach((r) => {\n if (r.slotBegin <= this.timeSlot) return; // past or ongoing\n if (minutesFromSlot(r.slotBegin - this.timeSlot) >= duration) return; // far enough\n\n r.tabItems.forEach((ti) => {\n map.set(ti.id, (map.get(ti.id) ?? []).concat(r));\n });\n });\n return map;\n },\n overbookedTabItemIds(): number[] {\n const ovebooked = new Set();\n this.ongoingReservationsForTabItem.forEach((rs, tid) => { if (rs && rs.length > 1) ovebooked.add(tid); });\n return Array.from(ovebooked.values());\n },\n timeSlotText(): string {\n return niceTimeTextFromSlot(this.timeSlot);\n },\n timeSlotMin(): number {\n return MORNING_TIME_SLOTS_COUNT;\n },\n timeSlotMax(): number {\n return DAY_TIME_SLOTS_COUNT - 1;\n },\n compact(): boolean {\n return this.$vuetify.breakpoint.xsOnly;\n },\n date(): Date {\n return this.$tstore.state.update.date;\n },\n isToday(): boolean {\n return this.$tstore.getters.isToday;\n },\n },\n watch: {\n timeTracking() {\n this.timeTrackerUpdate(this.timeTracking);\n },\n reservations: {\n deep: true,\n handler() {\n this.timeSlot = this.isToday ? this.nowSlot() : this.slotForFirstReservation();\n },\n },\n date() {\n console.log('watch: date update');\n this.timeTracking = this.$tstore.getters.isToday;\n this.timeSlot = this.isToday ? this.nowSlot() : this.slotForFirstReservation();\n },\n zoom() {\n storage.setFloorplanZoom(this.zoom);\n },\n editedReservationId() {\n // deselect table when reseditor has been closed\n if (this.editedReservationId === undefined) {\n this.selectedTabItemIds = [];\n }\n },\n },\n beforeDestroy() {\n this.timeTrackerUpdate(false);\n },\n mounted() {\n this.tab = this.tabs[0] ?? null;\n this.timeSlot = this.isToday ? this.nowSlot() : this.slotForFirstReservation();\n this.timeTrackerUpdate(this.timeTracking);\n this.canvasMaximized = this.compact;\n\n const zoom = storage.getFloorplanZoom();\n if (zoom) this.zoom = zoom;\n },\n methods: {\n async tabItemSelected(tabItemId?: number, reservations?: Reservation[]) {\n const reservation = reservations?.find(Boolean);\n this.selectedResId = reservation?.id;\n\n if (reservation) {\n this.selectedTabItemIds = reservation.tabItems.map((t) => t.id);\n if (this.$tstore.getters.editReservation?.id === reservation?.id) {\n await tryCloseEditReservation();\n } else {\n await tryEditReservation(this.$router, reservation);\n }\n } else if (tabItemId !== undefined) {\n const tabItems = this.tabItems.filter((t) => t.id === tabItemId);\n const partySize = tabItems.map((ti) => ti.seats).reduce((prev, next) => prev + next);\n const res = await tryEditReservation(this.$router, undefined, {\n tab: this.tab ?? undefined,\n tabItems,\n timeSlot: this.timeSlot,\n partySize,\n });\n if (res) {\n this.selectedTabItemIds = [tabItemId];\n }\n } else if (await tryCloseEditReservation()) {\n this.selectedTabItemIds = [];\n }\n },\n async reservationSelected(reservationId: number) {\n this.selectedResId = reservationId;\n const reservation = this.reservations.find((r) => r.id === reservationId);\n\n if (reservation === undefined || reservation.tabItems.length === 0) {\n this.selectedTabItemIds = [];\n } else {\n this.selectedTabItemIds = reservation.tabItems.map((t) => t.id);\n this.timeSlot = reservation.slotBegin;\n this.timeTracking = false;\n }\n\n await tryCloseEditReservation();\n },\n timeSlotChanged(timeSlot: number) {\n this.timeTracking = false;\n this.selectedResId = undefined;\n this.selectedTabItemIds = [];\n },\n tabChanged(tab: Tab) {\n this.$tstore.dispatch('applyFilter', { floorplanTab: tab });\n },\n setupFloorplan() {\n this.$router.push(`/settings/sections/${this.tab!.id}?floorplan=true`);\n },\n nowSlot() {\n const date = new Date();\n const time = minutesFromDate(date);\n const slot = slotFromMinutes(time);\n return clamp(slot, this.timeSlotMin, this.timeSlotMax);\n },\n timeTrackingClick() {\n this.timeTracking = !this.timeTracking;\n if (this.timeTracking && this.isToday) {\n this.timeSlot = this.nowSlot();\n }\n },\n timeTrackerUpdate(start: boolean) {\n if (start) {\n this.timeTrackingInterval = window.setInterval(() => {\n this.handleTimeTracker();\n }, 10000);\n } else {\n window.clearInterval(this.timeTrackingInterval);\n }\n },\n handleTimeTracker() {\n if (this.timeTracking && this.isToday) {\n this.timeSlot = this.nowSlot();\n }\n },\n slotForFirstReservation(): number {\n if (this.reservations.length === 0) {\n return MORNING_TIME_SLOTS_COUNT;\n }\n const sorted = toSortedMapBySlot(this.reservations);\n const firstSlot = sorted.keys().next().value;\n return firstSlot;\n },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Floor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Floor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Floor.vue?vue&type=template&id=9119a8e8&scoped=true&\"\nimport script from \"./Floor.vue?vue&type=script&lang=ts&\"\nexport * from \"./Floor.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Floor.vue?vue&type=style&index=0&id=9119a8e8&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9119a8e8\",\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('v-main',{staticClass:\"login-bg-main\"},[(_vm.brand === 'guestplan')?_c('login-guestplan',{attrs:{\"username\":_vm.username,\"password\":_vm.password},on:{\"update:username\":function($event){_vm.username=$event},\"update:password\":function($event){_vm.password=$event},\"login\":_vm.login,\"create-account\":function($event){_vm.createAccount=true},\"reset-password\":function($event){_vm.resetPassword=true}},scopedSlots:_vm._u([{key:\"language-selector\",fn:function(){return [_c('v-select',{staticStyle:{\"max-width\":\"160px\"},attrs:{\"hide-details\":\"\",\"dark\":\"\",\"color\":\"white\",\"dense\":\"\",\"prepend-icon\":\"mdi-translate\",\"items\":_vm.languages},model:{value:(_vm.language),callback:function ($$v) {_vm.language=$$v},expression:\"language\"}})]},proxy:true}],null,false,1959520562)}):(_vm.brand === 'booq')?_c('login-booq',{attrs:{\"username\":_vm.username,\"password\":_vm.password},on:{\"update:username\":function($event){_vm.username=$event},\"update:password\":function($event){_vm.password=$event},\"login\":_vm.login,\"reset-password\":function($event){_vm.resetPassword=true}},scopedSlots:_vm._u([{key:\"language-selector\",fn:function(){return [_c('v-select',{staticStyle:{\"max-width\":\"160px\"},attrs:{\"hide-details\":\"\",\"dark\":\"\",\"color\":\"white\",\"dense\":\"\",\"prepend-icon\":\"mdi-translate\",\"items\":_vm.languages},model:{value:(_vm.language),callback:function ($$v) {_vm.language=$$v},expression:\"language\"}})]},proxy:true}])}):_vm._e(),_c('reset-password-dialog',{attrs:{\"visible\":_vm.resetPassword},on:{\"close\":function($event){_vm.resetPassword = false}}}),_c('create-account-dialog',{attrs:{\"visible\":_vm.createAccountVisible},on:{\"close\":function($event){_vm.createAccount = false}}}),_c('confirmation-dialog',{attrs:{\"visible\":_vm.resetPasswordHint,\"title\":_vm.$t('title.incorrect_password'),\"message\":_vm.$t('message.prompt_forgotten_password'),\"confirm-title\":_vm.$t('button.reset_password'),\"cancel-title\":_vm.$t('button.not_now')},on:{\"confirm\":_vm.resetPasswordHintConfirmed,\"close\":function($event){_vm.resetPasswordHint = false}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"width\":\"500\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-form',{ref:\"form\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.resetPassword.apply(null, arguments)},\"submit\":function($event){$event.preventDefault();}}},[_c('v-card',[_c('v-card-title',{staticClass:\"text-h5\"},[_vm._v(\" \"+_vm._s(_vm.$t('title.reset_password'))+\" \")]),_c('v-divider'),_c('v-card-text',{staticClass:\"pa-5 pb-0\"},[_c('validation-observer',{ref:\"observer\"},[_c('v-row',{staticClass:\"pa-md-5 pa-2 pt-0\"},[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"pa-0 ma-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.email_reset_instructions'))+\" \")]),_c('validation-provider',{attrs:{\"rules\":\"required|max:254|email\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-text-field',{attrs:{\"label\":_vm.$t('label.email'),\"error-messages\":errors,\"name\":\"login\",\"prepend-icon\":\"mdi-account\",\"type\":\"email\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.resetPassword.apply(null, arguments)}},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})]}}])})],1)],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.resetPassword}},[_vm._v(\" \"+_vm._s(_vm.$t('button.continue'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport { ValidationObserver } from 'vee-validate';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { performAction } from '@/services/vue-utils';\nimport toast from '@/plugins/toast-plugin/toast';\n\nexport default Vue.extend({\n name: 'ResetPasswordDialog',\n mixins: [DialogClosable],\n data() {\n return {\n email: '',\n dialog: false,\n };\n },\n computed: {\n\n },\n watch: {\n dialog(value, oldValue) {\n\n },\n },\n methods: {\n reset() {\n (this.$refs.form as Vue & { reset: () => void }).reset();\n (this.$refs.observer as InstanceType).reset();\n },\n cancel() {\n this.reset();\n this.dialog = false;\n },\n async resetPassword() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) {\n toast.error(this.$i18n.tc('error.validation_failed'));\n return;\n }\n\n const ok = await performAction(\n this.$i18n.tc('message.success_new_password_sent'),\n this.$i18n.tc('error.changing_password'),\n async () => this.$tstore.dispatch('resetPassword', { username: this.email }),\n );\n\n if (ok) {\n this.reset();\n this.dialog = false;\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ResetPasswordDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ResetPasswordDialog.vue?vue&type=template&id=3a0f0223&\"\nimport script from \"./ResetPasswordDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ResetPasswordDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"width\":\"500\",\"persistent\":\"\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c('v-card',[_c('v-window',{attrs:{\"touchless\":\"\"},model:{value:(_vm.step),callback:function ($$v) {_vm.step=$$v},expression:\"step\"}},[_c('v-window-item',{attrs:{\"value\":\"register\"}},[_c('register-account-step',{on:{\"account-created\":function($event){_vm.step='verify'},\"close\":_vm.close}})],1),_c('v-window-item',{attrs:{\"value\":\"verify\"}},[_c('verify-account-step',{on:{\"close\":_vm.close}})],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('v-form',{ref:\"form\",attrs:{\"aria-autocomplete\":\"off\",\"autocomplete\":\"off\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.submit.apply(null, arguments)},\"submit\":function($event){$event.preventDefault();}}},[(_vm.showPromoAlert)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.showPromoAlert,\"message\":_vm.promoAlertMessage,\"cancel-title\":_vm.$t('message.promo_code_proceed_without'),\"confirm-title\":_vm.$t('message.promo_code_reenter'),\"disable-esc\":\"\"},on:{\"cancel\":function($event){_vm.promoCode = ''; _vm.submit();},\"close\":function($event){_vm.showPromoAlert=false}}}):_vm._e(),_c('v-card-title',{staticClass:\"text-h5\"},[_vm._v(\" \"+_vm._s(_vm.$t('title.register_start_using_guestplan'))+\" \")]),_c('v-divider'),_c('v-card-text',{staticClass:\"pa-5 pb-0\"},[_c('validation-observer',{ref:\"observer\"},[_c('v-row',{staticClass:\"pa-md-5 pa-2 pt-0\"},[_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:1|max:255\",\"autocomplete\":\"new-password\",\"aria-autocomplete\":\"off\",\"role\":\"presentation\",\"autofocus\":\"\",\"label\":_vm.$t('label.your_full_name')},model:{value:(_vm.fullName),callback:function ($$v) {_vm.fullName=$$v},expression:\"fullName\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|min:1|max:255\",\"autocomplete\":\"new-password\",\"aria-autocomplete\":\"off\",\"role\":\"presentation\",\"label\":_vm.$t('label.name_of_your_business')},model:{value:(_vm.businessName),callback:function ($$v) {_vm.businessName=$$v},expression:\"businessName\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|max:254|email\",\"autocomplete\":\"new-password\",\"aria-autocomplete\":\"off\",\"role\":\"presentation\",\"label\":_vm.$t('label.email'),\"type\":\"email\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"rules\":\"max:50|phone\",\"label\":_vm.$t('label.phone_number')},model:{value:(_vm.phone),callback:function ($$v) {_vm.phone=$$v},expression:\"phone\"}})],1),_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\"}},[_c('password-text-field',{attrs:{\"label\":_vm.$t('label.password')},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1),(_vm.showPromo)?_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"max:128\",\"label\":_vm.$t('label.promo_code')},model:{value:(_vm.promoCode),callback:function ($$v) {_vm.promoCode=$$v},expression:\"promoCode\"}})],1):_vm._e(),_c('v-col',{staticClass:\"pt-5\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"color\":\"success\",\"block\":\"\",\"large\":\"\"},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('button.create_free_account'))+\" \")]),_c('i18n',{staticClass:\"pa-0 ma-0 text-center pt-2\",attrs:{\"path\":\"label.register_tos_acklowledge\",\"tag\":\"p\"}},[_c('a',{attrs:{\"href\":\"https://www.guestplan.com/tos\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('label.tos')))]),_c('a',{attrs:{\"href\":\"https://www.guestplan.com/privacy\",\"target\":\"_blank\"}},[_vm._v(_vm._s(_vm.$t('label.privacy_policy')))])])],1)],1)],1)],1),_c('v-card-actions',[_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])],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('validation-provider',{attrs:{\"name\":\"newPassword\",\"rules\":\"required|min:6|max:50|goodpassword\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-text-field',{staticClass:\"pt-0\",attrs:{\"type\":\"password\",\"error-messages\":errors,\"label\":_vm.label,\"loading\":_vm.passwordLength > 0,\"persistent-hint\":\"\",\"hint\":_vm.passwordLength > 1 ? _vm.passwordStrength : ''},scopedSlots:_vm._u([{key:\"progress\",fn:function(){return [_c('v-progress-linear',{attrs:{\"value\":_vm.passwordStrengthScore * 10,\"color\":_vm.indicatorColor,\"absolute\":\"\",\"height\":\"7\"}})]},proxy:true}],null,true),model:{value:(_vm.val),callback:function ($$v) {_vm.val=$$v},expression:\"val\"}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'PasswordTextField',\n props: {\n value: { type: String as PropType, required: true },\n label: { type: String as PropType, required: true },\n },\n data() {\n return {\n passwordStrengthScore: 0,\n val: this.value,\n };\n },\n computed: {\n passwordLength(): number {\n return (this.val || '').length;\n },\n strengthIndex(): number {\n const strength = this.passwordStrengthScore;\n if (strength <= 5) {\n return 0;\n }\n if (strength <= 7) {\n return 1;\n }\n return 2;\n },\n indicatorColor(): string {\n const colors = ['red', 'orange', 'success'];\n return colors[this.strengthIndex];\n },\n passwordStrength(): string {\n const strengths = [\n this.$i18n.tc('label.weak_password'),\n this.$i18n.tc('label.good_password'),\n this.$i18n.tc('label.secure_password'),\n ];\n return strengths[this.strengthIndex];\n },\n },\n watch: {\n value(value: string) {\n this.val = value;\n },\n val() {\n const password = this.val || '';\n const { length } = password;\n\n let strength = Math.min(length, 5);\n\n // 6 letters, one letter, one number\n const goodPasswordRx = /^(?=.*?[A-Za-z])(?=.*?[0-9]).{6,}$/;\n if (password.match(goodPasswordRx)) {\n strength += 2;\n }\n\n // 8 letters, one uppercase, one lowercase, one number, one special char.\n const securePasswordRx = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\\d\\w]).{8,}$/;\n if (password.match(securePasswordRx)) {\n strength = 10;\n }\n\n this.passwordStrengthScore = strength;\n this.$emit('input', this.val);\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PasswordTextField.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PasswordTextField.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./PasswordTextField.vue?vue&type=template&id=bcfe2c2a&\"\nimport script from \"./PasswordTextField.vue?vue&type=script&lang=ts&\"\nexport * from \"./PasswordTextField.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport { ValidationObserver } from 'vee-validate';\nimport { performAction } from '@/services/vue-utils';\nimport PasswordTextField from '@/components/forms/PasswordTextField.vue';\nimport { startAutoUpdates } from '@/services/autoupdater';\nimport { ApiError, ApiErrorCode } from '@/api/api-error';\nimport toast from '@/plugins/toast-plugin/toast';\n\nexport default Vue.extend({\n name: 'RegisterAccountStep',\n components: { PasswordTextField },\n props: { },\n data() {\n return {\n state: 'enter-details',\n fullName: '',\n businessName: '',\n email: '',\n password: '',\n phone: '',\n promoCode: this.$route.params.code,\n showPromoAlert: false,\n promoAlertMessage: '',\n };\n },\n computed: {\n showPromo(): boolean {\n return this.$route.name === 'promo';\n },\n },\n watch: {\n dialog(value, oldValue) {\n\n },\n },\n methods: {\n reset() {\n this.fullName = '';\n this.businessName = '';\n this.email = '';\n this.password = '';\n this.phone = '';\n this.state = 'enter-details';\n\n (this.$refs.form as HTMLFormElement).reset();\n (this.$refs.observer as InstanceType).reset();\n },\n async close() {\n this.reset();\n this.$emit('close');\n },\n async submit() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) {\n toast.error(this.$i18n.tc('error.validation_failed'));\n return;\n }\n\n const { locale } = this.$i18n;\n\n let promoOk = true;\n const success = this.$i18n.tc('message.registration_code_sent_to_x_please_enter_code', undefined, [this.email]);\n const ok = await performAction(\n '',\n this.$i18n.tc('error.registration_failed'),\n async () => {\n try {\n await this.$tstore.dispatch('openAccount', {\n username: this.email,\n password: this.password,\n firstname: this.fullName,\n companyName: this.businessName,\n phone: this.phone,\n locale,\n promoCode: this.promoCode || undefined,\n });\n await startAutoUpdates();\n toast.success(success);\n } catch (e) {\n const ae = e as ApiError;\n if ([ApiErrorCode.promo_code_not_valid, ApiErrorCode.promo_code_already_exists].includes(ae.code)) {\n promoOk = false;\n this.promoAlertMessage = this.$i18n.tc('message.promo_code_not_valid');\n if (ae.code === ApiErrorCode.promo_code_already_exists) {\n this.promoAlertMessage = this.$i18n.tc('message.promo_code_already_exists');\n }\n this.showPromoAlert = true;\n } else {\n throw e;\n }\n }\n },\n );\n if (ok && promoOk) {\n this.$emit('account-created');\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterAccountStep.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RegisterAccountStep.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RegisterAccountStep.vue?vue&type=template&id=599580cf&\"\nimport script from \"./RegisterAccountStep.vue?vue&type=script&lang=ts&\"\nexport * from \"./RegisterAccountStep.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-form',{ref:\"form\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.submit.apply(null, arguments)},\"submit\":function($event){$event.preventDefault();}}},[_c('validation-observer',{ref:\"observer\"},[_c('v-card-title',{staticClass:\"text-h5\"},[_vm._v(\" \"+_vm._s(_vm.$t('title.verify_your_account'))+\" \")]),_c('v-divider'),_c('v-card-text',{staticClass:\"pa-5 pb-0\"},[_c('p',{staticClass:\"text-subtitle-1 text-center\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.enter_activation_code'))+\" \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_vm.username))])]),_c('validation-provider',{attrs:{\"rules\":\"required|min:4|max:4\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-otp-input',{ref:\"activationCode\",staticClass:\"pb-0 mx-16\",attrs:{\"length\":\"4\",\"name\":\"activationCode\",\"label\":_vm.$t('label.activation_code'),\"error-messages\":errors},on:{\"finish\":_vm.submit,\"input\":_vm.input},model:{value:(_vm.activationCode),callback:function ($$v) {_vm.activationCode=$$v},expression:\"activationCode\"}})]}}])}),_c('v-btn',{staticClass:\"mb-5\",attrs:{\"color\":\"success\",\"block\":\"\",\"large\":\"\",\"disabled\":_vm.activationCode && _vm.activationCode.length !== 4},on:{\"click\":_vm.submit}},[_vm._v(\" \"+_vm._s(_vm.$t('button.verify'))+\" \")])],1),_c('v-card-actions',{class:['flex-wrap', {'justify-center': _vm.$vuetify.breakpoint.xsOnly}]},[_c('v-btn',{attrs:{\"color\":\"primary\",\"large\":\"\",\"text\":\"\"},on:{\"click\":_vm.resend}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\" mdi-email \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.resend_activation_email'))+\" \")],1),(_vm.$vuetify.breakpoint.smAndUp)?_c('v-spacer'):_vm._e(),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.logout}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport { ValidationObserver } from 'vee-validate';\nimport { performAction } from '@/services/vue-utils';\nimport toast from '@/plugins/toast-plugin/toast';\n\nexport default Vue.extend({\n name: 'VerifyAccountStep',\n data() {\n return {\n activationCode: '',\n };\n },\n computed: {\n username(): string {\n return this.$tstore.getters.username ?? 'N/A';\n },\n },\n watch: { },\n mounted() {\n this.$nextTick(() => {\n setTimeout(() => {\n this.focusOtp();\n }, 300);\n });\n },\n methods: {\n focusOtp() {\n (this.$refs.activationCode as any)?.focus();\n },\n input() {\n this.activationCode = this.activationCode?.toUpperCase();\n },\n reset() {\n this.activationCode = '';\n (this.$refs.form as HTMLFormElement).reset();\n (this.$refs.observer as InstanceType).reset();\n this.focusOtp();\n },\n async logout() {\n this.close();\n try {\n await this.$tstore.dispatch('logout');\n } catch (e) {\n console.log('Logout error: ', e);\n }\n this.$vuetify.theme.dark = false;\n },\n async close() {\n this.reset();\n this.$emit('close');\n },\n async submit() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) {\n toast.error(this.$i18n.tc('error.validation_failed'));\n return;\n }\n\n const ok = await performAction(\n this.$i18n.tc('message.registration_successful', undefined, [this.username]),\n this.$i18n.tc('error.registration_failed'),\n async () => {\n await this.$tstore.dispatch('register', { username: this.username, code: this.activationCode.toUpperCase() });\n await this.$tstore.dispatch('update');\n },\n );\n\n if (!ok) {\n this.reset();\n }\n },\n async resend() {\n const ok = await performAction(\n this.$i18n.tc('message.registration_code_sent_to_x_please_enter_code', undefined, [this.username]),\n this.$i18n.tc('error.registration_failed'),\n async () => this.$tstore.dispatch('register', { username: this.username }),\n );\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerifyAccountStep.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./VerifyAccountStep.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./VerifyAccountStep.vue?vue&type=template&id=5dbe012b&\"\nimport script from \"./VerifyAccountStep.vue?vue&type=script&lang=ts&\"\nexport * from \"./VerifyAccountStep.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport RegisterAccountStep from '@/components/views/login/RegisterAccountStep.vue';\nimport VerifyAccountStep from '@/components/views/login/VerifyAccountStep.vue';\n\nexport default Vue.extend({\n name: 'CreateAccountDialog',\n components: { RegisterAccountStep, VerifyAccountStep },\n mixins: [DialogClosable],\n data() {\n return {\n dialog: false,\n };\n },\n computed: {\n isRegistered(): boolean {\n return this.$tstore.getters.isRegistered;\n },\n isLoggedIn(): boolean {\n return this.$tstore.getters.isLoggedIn;\n },\n isSignup(): boolean {\n return this.$route.query.signup !== undefined;\n },\n step(): string {\n console.log('step isLoggedIn isRegistered: ', this.$tstore.getters.isLoggedIn, this.$tstore.getters.isRegistered);\n if (!this.isLoggedIn || this.isSignup) return 'register';\n if (!this.isRegistered) return 'verify';\n return 'verify';\n },\n },\n methods: {\n close() {\n this.dialog = false;\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAccountDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CreateAccountDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./CreateAccountDialog.vue?vue&type=template&id=708696cc&\"\nimport script from \"./CreateAccountDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./CreateAccountDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport { performAction } from '@/services/vue-utils';\nimport { supportedLanguages } from '@/plugins/i18n';\nimport ResetPasswordDialog from '@/components/views/login/ResetPasswordDialog.vue';\nimport CreateAccountDialog from '@/components/views/login/CreateAccountDialog.vue';\nimport storage from '@/services/local-storage';\nimport { ApiErrorCode } from '@/api/api-error';\nimport { setDarkAllowed } from '@/services/autodarkmode';\nimport setLanguage from '@/plugins/i18n-locale';\n\nexport default Vue.extend({\n name: 'Login',\n components: {\n ResetPasswordDialog,\n CreateAccountDialog,\n LoginGuestplan: () => import('@/components/views/login/LoginGuestplan.vue'),\n LoginBooq: () => import('@/components/views/login/LoginBooq.vue'),\n },\n props: {},\n data() {\n return {\n languages: supportedLanguages,\n language: this.$i18n.locale.split('-')[0],\n username: process.env.NODE_ENV === 'development' ? 'user1' : null,\n password: process.env.NODE_ENV === 'development' ? 'pass1' : null,\n failedAttempts: 0,\n resetPassword: false,\n createAccount: false,\n resetPasswordHint: false,\n };\n },\n computed: {\n brand(): string | undefined {\n return process.env.VUE_APP_BRAND;\n },\n isRegistered(): boolean {\n return this.$tstore.getters.isRegistered;\n },\n isLoggedIn(): boolean {\n return this.$tstore.getters.isLoggedIn;\n },\n isSignup(): boolean {\n return this.$route.name === 'signup' || this.$route.name === 'promo';\n },\n createAccountVisible(): boolean {\n return this.createAccount || this.isLoggedIn;\n },\n },\n watch: {\n language() {\n setLanguage(this.language, '');\n },\n username() {\n this.failedAttempts = 0;\n },\n isRegistered(newValue: boolean) {\n // registration changed while on login screen -> go to home route\n if (!newValue) return;\n if (this.$route.meta?.public !== true) return;\n\n this.$router.push('/');\n storage.setLanguage(this.$i18n.locale);\n setDarkAllowed(true);\n },\n\n },\n async mounted() {\n setDarkAllowed(false);\n if (this.isSignup) {\n this.createAccount = true;\n }\n if (typeof this.$route.query.username === 'string' && this.$route.query.username !== '') {\n this.username = this.$route.query.username;\n }\n },\n methods: {\n async login() {\n let ok = true;\n try {\n await performAction(\n this.$i18n.tc('message.success_sign_in'),\n this.$i18n.tc('error.login'),\n async () => this.$tstore.dispatch('login', { username: this.username, password: this.password }),\n false,\n true,\n );\n } catch (e: any) {\n ok = false;\n if (e.code === ApiErrorCode.user_not_found) {\n this.failedAttempts += 1;\n this.resetPasswordHint = (this.failedAttempts % 3) === 0;\n }\n }\n\n if (ok) {\n this.failedAttempts = 0;\n\n this.$router.push('/');\n storage.setLanguage(this.$i18n.locale);\n setDarkAllowed(true);\n }\n },\n resetPasswordHintConfirmed() {\n this.resetPassword = true;\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=cfaf60f6&\"\nimport script from \"./Login.vue?vue&type=script&lang=ts&\"\nexport * from \"./Login.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.SettingsForm,{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs()},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_setup.isChanged},on:{\"click\":_setup.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(_vm._s(_vm.$t('button.save_changes'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [(_setup.uploadDialog)?_c(_setup.ImageUploadDialog,{attrs:{\"title\":_vm.$t('title.your_restaurant_logo'),\"image-src\":_setup.a.logoLink,\"filename-prefix\":\"logo\",\"help-label\":_vm.$t('placeholder.logo_upload'),\"delete-confirmation-label\":_vm.$t('message.confirm_delete_logo'),\"max-width\":500},on:{\"close\":function($event){_setup.uploadDialog = false},\"change\":_setup.updateLogoLink}}):_vm._e(),(_setup.deleteAccountDialog)?_c(_setup.DeleteAccountDialog,{on:{\"close\":function($event){_setup.deleteAccountDialog=false}}}):_vm._e(),_c(_setup.ValidationObserver,{ref:\"observerRef\"},[_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"}},[_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('settings.service_manager.appearance_title'),\"subtitle\":_vm.$t('settings.account.appearance_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('color-picker-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.brand_color')},model:{value:(_setup.a.color),callback:function ($$v) {_vm.$set(_setup.a, \"color\", $$v)},expression:\"a.color\"}})],1),_c('v-col',{style:(_vm.$vuetify.breakpoint.xsOnly ? 'display: flex; place-content: center;' : ''),attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_setup.a.logoLink),expression:\"a.logoLink\"}],attrs:{\"type\":\"hidden\"},domProps:{\"value\":(_setup.a.logoLink)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_setup.a, \"logoLink\", $event.target.value)}}}),_c(_setup.ImagePreviewField,{staticClass:\"pl-0 pl-md-8\",attrs:{\"image-url\":_setup.a.logoLink,\"title\":_vm.$t('title.logo'),\"placeholder\":_vm.$t('placeholder.upload_logo'),\"errors\":errors},on:{\"upload:click\":function($event){_setup.uploadDialog = true}}})]}}])})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.general_settings'),\"subtitle\":_vm.$t('settings.account.general_subtitle'),\"gutter\":\"\"}},[_c('v-col',{staticClass:\"d-flex flex-row\",attrs:{\"cols\":\"12\"}},[_c('v-text-field',{staticClass:\"pt-0 readonly--disabled\",attrs:{\"label\":_vm.$t('label.account_id'),\"readonly\":\"\"},model:{value:(_setup.a.id),callback:function ($$v) {_vm.$set(_setup.a, \"id\", $$v)},expression:\"a.id\"}}),_c('v-btn',{attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":_setup.copyAccountId}},[_c('v-icon',[_vm._v(\"mdi-content-copy\")])],1)],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.time_zone'),\"items\":_setup.timezoneItems,\"error-messages\":errors},model:{value:(_setup.a.timeZoneId),callback:function ($$v) {_vm.$set(_setup.a, \"timeZoneId\", $$v)},expression:\"a.timeZoneId\"}})]}}])})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.language'),\"items\":_setup.locales,\"error-messages\":errors},model:{value:(_setup.a.locale),callback:function ($$v) {_vm.$set(_setup.a, \"locale\", $$v)},expression:\"a.locale\"}})]}}])})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.address'),\"subtitle\":_vm.$t('settings.account.address_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"rules\":\"required|min:2|max:255\",\"label\":_vm.$t('label.restaurant_name'),\"required\":\"\"},model:{value:(_setup.a.accountName),callback:function ($$v) {_vm.$set(_setup.a, \"accountName\", $$v)},expression:\"a.accountName\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.street'),\"rules\":\"required|min:2|max:255\",\"required\":\"\"},model:{value:(_setup.a.streetAddress),callback:function ($$v) {_vm.$set(_setup.a, \"streetAddress\", $$v)},expression:\"a.streetAddress\"}})],1),_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.city'),\"rules\":\"required|min:2|max:255\",\"required\":\"\"},model:{value:(_setup.a.city),callback:function ($$v) {_vm.$set(_setup.a, \"city\", $$v)},expression:\"a.city\"}})],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.zipcode'),\"rules\":\"required|min:2|max:50\",\"required\":\"\"},model:{value:(_setup.a.postalCode),callback:function ($$v) {_vm.$set(_setup.a, \"postalCode\", $$v)},expression:\"a.postalCode\"}})],1),_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.country'),\"error-messages\":errors,\"items\":_setup.countries},model:{value:(_setup.a.countryCode),callback:function ($$v) {_vm.$set(_setup.a, \"countryCode\", $$v)},expression:\"a.countryCode\"}})]}}])})],1),_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.state'),\"rules\":\"required|min:2|max:50\"},model:{value:(_setup.a.countryState),callback:function ($$v) {_vm.$set(_setup.a, \"countryState\", $$v)},expression:\"a.countryState\"}})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.contact_details'),\"subtitle\":_vm.$t('settings.account.contact_details_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.phone_number'),\"rules\":`max:50|validPhone:${_setup.defaultCC}`},model:{value:(_setup.a.phone),callback:function ($$v) {_vm.$set(_setup.a, \"phone\", $$v)},expression:\"a.phone\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.email'),\"rules\":\"required|max:254|validEmail\",\"required\":\"\"},model:{value:(_setup.a.email),callback:function ($$v) {_vm.$set(_setup.a, \"email\", $$v)},expression:\"a.email\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":_vm.$t('label.website'),\"rules\":\"max:255\"},model:{value:(_setup.a.website),callback:function ($$v) {_vm.$set(_setup.a, \"website\", $$v)},expression:\"a.website\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"Facebook\",\"placeholder\":\"https://www.facebook.com/...\",\"persistent-placeholder\":\"\",\"rules\":\"max:255\"},model:{value:(_setup.a.facebook),callback:function ($$v) {_vm.$set(_setup.a, \"facebook\", $$v)},expression:\"a.facebook\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"Instagram\",\"placeholder\":\"https://www.instagram.com/...\",\"persistent-placeholder\":\"\",\"rules\":\"max:255\"},model:{value:(_setup.a.instagram),callback:function ($$v) {_vm.$set(_setup.a, \"instagram\", $$v)},expression:\"a.instagram\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"TikTok\",\"placeholder\":\"https://www.tiktok.com/...\",\"persistent-placeholder\":\"\",\"rules\":\"max:255\"},model:{value:(_setup.a.tiktok),callback:function ($$v) {_vm.$set(_setup.a, \"tiktok\", $$v)},expression:\"a.tiktok\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"Tripadvisor\",\"placeholder\":\"https://www.tripadvisor.com/...\",\"persistent-placeholder\":\"\",\"rules\":\"max:255\"},model:{value:(_setup.a.tripadvisor),callback:function ($$v) {_vm.$set(_setup.a, \"tripadvisor\", $$v)},expression:\"a.tripadvisor\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"X\",\"placeholder\":\"https://x.com/...\",\"persistent-placeholder\":\"\",\"rules\":\"max:255\"},model:{value:(_setup.a.x),callback:function ($$v) {_vm.$set(_setup.a, \"x\", $$v)},expression:\"a.x\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"Yelp\",\"placeholder\":\"https://www.yelp.ie/biz/...\",\"persistent-placeholder\":\"\",\"rules\":\"max:255\"},model:{value:(_setup.a.yelp),callback:function ($$v) {_vm.$set(_setup.a, \"yelp\", $$v)},expression:\"a.yelp\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"label\":\"Youtube\",\"placeholder\":\"https://www.youtube.com/channel/...\",\"persistent-placeholder\":\"\",\"rules\":\"max:255\"},model:{value:(_setup.a.youtube),callback:function ($$v) {_vm.$set(_setup.a, \"youtube\", $$v)},expression:\"a.youtube\"}})],1)],1),_c('v-row',{staticClass:\"center d-flex flex-column\"},[_c('v-btn',{attrs:{\"text\":\"\",\"x-small\":\"\",\"color\":\"red\"},on:{\"click\":function($event){_setup.deleteAccountDialog=true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.permanently_delete_account'))+\" \")])],1)],1)],1)]},proxy:true}])})\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',[_c('p',{class:['subheading v-label mb-2',{'error--text': _vm.errors.length > 0}]},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('div',{class:['image-upload-frame pa-2', {'image-upload-frame__error': _vm.errors.length > 0}],on:{\"click\":function($event){return _setup.emit('upload:click')}}},[(_vm.imageUrl && _vm.imageUrl !== '')?_c('v-img',{attrs:{\"src\":_vm.imageUrl,\"contain\":\"\",\"max-width\":\"320\",\"max-height\":\"240\"}}):_c('div',{staticClass:\"d-flex flex-column align-center justify-center text-center image-upload-placeholder\"},[_c('v-icon',{staticClass:\"mb-2\",attrs:{\"x-large\":\"\"}},[_vm._v(\" mdi-image-plus-outline \")]),_c('span',{class:{'primary--text': _vm.$vuetify.theme.dark}},[_vm._v(\" \"+_vm._s(_vm.placeholder)+\" \")])],1)],1),_c('p',{staticClass:\"py-0 my-0 mt-1 field-error-message\"},[_vm._v(\" \"+_vm._s(_vm.errors.join(' '))+\"  \")])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ImagePreviewField',\n props: {\n imageUrl: { type: String, required: false, default: '' },\n title: { type: [String, Object] as PropType, required: false, default: '' },\n placeholder: { type: [String, Object] as PropType, required: false, default: '' },\n errors: { type: Array, required: true },\n},\n emits: ['upload:click'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\nreturn { __sfc: true,props, emit }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImagePreviewField.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ImagePreviewField.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ImagePreviewField.vue?vue&type=template&id=fbaa0884&scoped=true&\"\nimport script from \"./ImagePreviewField.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ImagePreviewField.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./ImagePreviewField.vue?vue&type=style&index=0&id=fbaa0884&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fbaa0884\",\n null\n \n)\n\nexport default component.exports","import store from '@/store/store';\nimport { onBeforeUnmount, onMounted } from 'vue';\n\nexport default function useStoreWatch(resetCb: () => void, immediate: boolean = false) {\n const unwatch = store.watch((_, getters) => getters.isLoaded, (_, __) => { resetCb(); }, { immediate });\n\n onBeforeUnmount(() => unwatch());\n\n onMounted(() => resetCb());\n}\n","import i18n from '@/plugins/i18n';\nimport { onBeforeMount, onBeforeUnmount, Ref } from 'vue';\nimport { onBeforeRouteLeave } from 'vue-router/composables';\n\nexport default function useUnsavedGuard(isChanged: Ref) {\n const preventNav = (event: Event) => {\n if (isChanged.value) {\n event.preventDefault();\n // eslint-disable-next-line no-param-reassign\n event.returnValue = false;\n }\n };\n\n onBeforeRouteLeave((to, from, next) => {\n if (isChanged.value) {\n // eslint-disable-next-line no-alert\n if (!window.confirm(i18n.tc('message.confirm_leave_without_saving'))) {\n return;\n }\n }\n next();\n });\n\n onBeforeMount(() => {\n window.addEventListener('beforeunload', preventNav, false);\n });\n\n onBeforeUnmount(() => {\n window.removeEventListener('beforeunload', preventNav, false);\n });\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport Vue, { computed, ref } from 'vue';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport ImageUploadDialog from '@/components/dialogs/ImageUploadDialog.vue';\nimport Account from '@/model/Account';\nimport Locale from '@/model/Locale';\nimport TimeZone from '@/model/TimeZone';\nimport Country from '@/model/Country';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport { performSaveAction } from '@/services/vue-utils';\nimport DeleteAccountDialog from '@/components/views/settings/DeleteAccountDialog.vue';\nimport httpClient from '@/api/http-client';\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\nimport ImagePreviewField from '@/components/forms/ImagePreviewField.vue';\nimport copy from 'copy-to-clipboard';\nimport useStoreWatch from '@/composables/store-watch';\nimport store from '@/store/store';\nimport { ValidationObserver } from 'vee-validate';\nimport i18n from '@/plugins/i18n';\nimport useUnsavedGuard from '@/composables/unsaved-guard';\nimport { useToast } from '../helpers/vue2-helpers';\n\ninterface TimezoneMenuItem {\n text?: string; value?: number; header?:string; divider?:boolean;\n}\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Account',\n setup(__props) {\n\n// Removed i18n:\n// label.regional_settings\n\nconst toast = useToast();\n\nconst observerRef = ref(null as null | InstanceType);\n\nconst a = ref(new Account());\nconst olda = ref(new Account());\n\nconst uploadDialog = ref(false);\nconst deleteAccountDialog = ref(false);\n\nconst timezones = ref([] as TimeZone[]);\nconst locales = ref([] as Locale[]);\nconst countries = ref([] as Country[]);\n\nconst isChanged = computed(() => !isModelEqualToModel(a.value, olda.value));\nuseUnsavedGuard(isChanged);\n\nconst timezoneItems = computed(() => {\n const tzItems = [] as TimezoneMenuItem[];\n let prevKey = '';\n timezones.value.forEach((tz) => {\n const key = tz.name.split('/')[0].trim();\n if (key !== prevKey) {\n if (tzItems.length > 0) { tzItems.push({ divider: true }); }\n tzItems.push({ header: key });\n prevKey = key;\n }\n tzItems.push({ text: tz.name.replace(`${key} / `, '').trim(), value: tz.id });\n });\n return tzItems;\n});\n\nconst autofillCountry = async () => {\n try {\n const countryCode = await httpClient.getCountryCode();\n if (!countryCode || a.value.countryCode) return; // no country code detected or no need to update it any more\n Vue.set(a.value, 'countryCode', countryCode); // autofill country code\n } catch (e) {\n console.log('Autofill country code error: ', e);\n }\n};\n\nconst reset = async () => {\n const acctSettings = store.state.settings.account;\n a.value = cloneModel(acctSettings);\n olda.value = acctSettings;\n\n locales.value = store.getters.sortedLocales;\n countries.value = store.getters.sortedCountries;\n timezones.value = store.getters.sortedTimezones;\n\n if (!a.value.countryCode) autofillCountry();\n};\nuseStoreWatch(reset);\n\nconst save = async () => {\n const ok = await performSaveAction(\n observerRef.value,\n async () => store.dispatch('sendAccount', { entity: a.value }),\n );\n if (ok) {\n reset();\n }\n};\n\nconst updateLogoLink = async (image: File | null) => {\n const ok = await performSaveAction(\n undefined,\n async () => {\n let imageUrl = '';\n\n // save image and get url, if undefined, image is being removed\n if (image !== null) {\n const key = store.state.settings.account.serviceManagerAccessKey ?? '';\n imageUrl = await httpClient.uploadImageFile(image, key);\n }\n\n // save account\n olda.value.logoLink = imageUrl;\n a.value.logoLink = imageUrl;\n await store.dispatch('sendAccount', { entity: olda.value });\n },\n );\n\n if (ok) {\n uploadDialog.value = false;\n }\n};\n\nconst copyAccountId = () => {\n copy(`${a.value.id}`);\n toast.success(i18n.t('message.account_id_copied'));\n};\n\nconst defaultCC = computed(() => a.value.countryCode);\n\n\nreturn { __sfc: true,toast, observerRef, a, olda, uploadDialog, deleteAccountDialog, timezones, locales, countries, isChanged, timezoneItems, autofillCountry, reset, save, updateLogoLink, copyAccountId, defaultCC, useSettingsBreadcrumbs, SettingsForm, ImageUploadDialog, DeleteAccountDialog, SettingsGroup, ImagePreviewField, ValidationObserver }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Account.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Account.vue?vue&type=template&id=db6286da&\"\nimport script from \"./Account.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Account.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./Account.vue?vue&type=style&index=0&id=db6286da&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.SettingsForm,{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs()},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_setup.isChanged},on:{\"click\":_setup.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(_vm._s(_vm.$t('button.save_changes'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c(_setup.ValidationObserver,{ref:\"observerRef\"},[_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"}},[_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('title.table_allocation_settings'),\"subtitle\":_vm.$t('label.description_table_allocations'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.table_allocation')},model:{value:(_setup.a.tableAllocation),callback:function ($$v) {_vm.$set(_setup.a, \"tableAllocation\", $$v)},expression:\"a.tableAllocation\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_setup.seatItems,\"label\":_vm.$t('label.allow_empty_seats')},model:{value:(_setup.a.allocateWithEmptySeats),callback:function ($$v) {_vm.$set(_setup.a, \"allocateWithEmptySeats\", $$v)},expression:\"a.allocateWithEmptySeats\"}})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.general_options'),\"subtitle\":_vm.$t('settings.advanced.general_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.employee_name_needed')},model:{value:(_setup.a.employeeNameIsNeeded),callback:function ($$v) {_vm.$set(_setup.a, \"employeeNameIsNeeded\", $$v)},expression:\"a.employeeNameIsNeeded\"}})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.unread_reservation_options'),\"subtitle\":_vm.$t('settings.advanced.unread_options_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.mark_cancelled_reservations_as_read')},model:{value:(_setup.a.markCancelledAsRead),callback:function ($$v) {_vm.$set(_setup.a, \"markCancelledAsRead\", $$v)},expression:\"a.markCancelledAsRead\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.mark_all_reservations_as_read')},model:{value:(_setup.a.markAlwaysAsRead),callback:function ($$v) {_vm.$set(_setup.a, \"markAlwaysAsRead\", $$v)},expression:\"a.markAlwaysAsRead\"}})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.lunch_dinner_options'),\"subtitle\":_vm.$t('settings.advanced.lunch_dinner_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.show_lunch_dinner_counter')},model:{value:(_setup.a.showLunchDinner),callback:function ($$v) {_vm.$set(_setup.a, \"showLunchDinner\", $$v)},expression:\"a.showLunchDinner\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('time-picker-field',{attrs:{\"disabled\":!_setup.a.showLunchDinner,\"label\":_vm.$t('label.cutoff_between_lunch_dinner')},model:{value:(_setup.a.splitLunchDinnerTime),callback:function ($$v) {_vm.$set(_setup.a, \"splitLunchDinnerTime\", $$v)},expression:\"a.splitLunchDinnerTime\"}})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.dark_mode_options'),\"subtitle\":_vm.$t('settings.advanced.dark_mode_subtitle'),\"gutter\":\"\",\"hide-divider\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-switch',{attrs:{\"label\":_vm.$t('label.show_app_in_dark_mode')},model:{value:(_setup.a.autoDarkMode),callback:function ($$v) {_vm.$set(_setup.a, \"autoDarkMode\", $$v)},expression:\"a.autoDarkMode\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('time-picker-field',{attrs:{\"disabled\":!_setup.a.autoDarkMode,\"label\":_vm.$t('label.switch_light_mode_at_specific_time')},model:{value:(_setup.a.autoDarkModeEnd),callback:function ($$v) {_vm.$set(_setup.a, \"autoDarkModeEnd\", $$v)},expression:\"a.autoDarkModeEnd\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('time-picker-field',{attrs:{\"disabled\":!_setup.a.autoDarkMode,\"label\":_vm.$t('label.switch_dark_mode_at_specific_time')},model:{value:(_setup.a.autoDarkModeStart),callback:function ($$v) {_vm.$set(_setup.a, \"autoDarkModeStart\", $$v)},expression:\"a.autoDarkModeStart\"}})],1)],1)],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import i18n from '@/plugins/i18n';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport store from '@/store/store';\nimport { computed, ref } from 'vue';\n\nexport function useMinutesInAdvanceItems() {\n return ref([...new Array(1440)].map((e, i) => (\n { value: i + 1, text: i18n.t('label.x_min', [i + 1]) }\n )));\n}\nexport function useSeatingTimeItems() {\n return ref([...new Array(24)].map((e, i) => ({\n value: (i + 1) * 15,\n text: (localized.durationFromSeconds((i + 1) * 15 * 60)),\n })));\n}\n\nexport function useTimeInAdvanceItems() {\n return ref([\n ...[0, 1, 5, 10, 15, 20, 30, 45, 60, 90], // 0-90min\n ...[...new Array(23)].map((e, i) => ((i + 1) * 60)), // 2-23 hours\n ...[...new Array(10)].map((e, i) => ((i + 1) * 60 * 24)), // 1-10 days\n ].map((e, i) => ({ value: e, text: localized.durationFromSeconds(e * 60) })));\n}\n\nexport function partysizes() {\n return [...new Array(500)].map((e, i) => i + 1);\n}\n\nexport function useBookingCaps() {\n return [0, 15, 30, 45, 60, 90, 120].map((t) => ({\n value: t,\n text: (localized.durationFromSeconds(t * 60)),\n }));\n}\n\nexport function useOnlineTabs() {\n return computed(() => store.state.settings.tabs.filter((s) => s.usingWeekdaysAndTimes));\n}\n\nexport function useLanguages() {\n return computed(() => store.state.codes.locales);\n}\n\nexport function emptySeatItems() {\n return [...new Array(11)].map((e, i) => (i));\n}\n\nexport function useDaysInAdvanceItems() {\n return [...new Array(730)].map((e, i) => ({\n value: i + 1, text: i18n.tc('label.x_days', (i + 1)),\n }));\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\nimport { computed, ref } from 'vue';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport { performSaveAction } from '@/services/vue-utils';\nimport AccountSettings from '@/model/AccountSettings';\nimport store from '@/store/store';\nimport useUnsavedGuard from '@/composables/unsaved-guard';\nimport useStoreWatch from '@/composables/store-watch';\nimport { ValidationObserver } from 'vee-validate';\nimport { emptySeatItems } from '@/components/views/settings/helpers/settings-values';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AdvancedSettings',\n setup(__props) {\n\nconst observerRef = ref(null as null | InstanceType);\n\nconst a = ref(new AccountSettings());\nconst olda = ref(new AccountSettings());\nconst seatItems = emptySeatItems();\n\n//\nconst reset = () => {\n const acctSettings = store.state.settings.accountSettings;\n a.value = cloneModel(acctSettings);\n olda.value = acctSettings;\n};\nuseStoreWatch(reset);\n\n//\nconst isChanged = computed(() => !isModelEqualToModel(a.value, olda.value));\nuseUnsavedGuard(isChanged);\n\n//\nconst save = async () => {\n const ok = await performSaveAction(\n observerRef.value,\n async () => store.dispatch('sendAccountSettings', { entity: a.value }),\n );\n\n if (ok) {\n reset();\n }\n};\n\n\nreturn { __sfc: true,observerRef, a, olda, seatItems, reset, isChanged, save, SettingsGroup, useSettingsBreadcrumbs, SettingsForm, ValidationObserver }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdvancedSettings.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AdvancedSettings.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./AdvancedSettings.vue?vue&type=template&id=5c7721c2&\"\nimport script from \"./AdvancedSettings.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./AdvancedSettings.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\"},on:{\"click\":_vm.add}},[_c('v-icon',[_vm._v(\"mdi-plus\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.add_new_user'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('v-data-table',{staticClass:\"clickable-table\",attrs:{\"headers\":_vm.computedHeaders,\"items\":_vm.users,\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"mobile-breakpoint\":\"0\"},on:{\"click:row\":_vm.edit},scopedSlots:_vm._u([{key:\"item.name\",fn:function({ item }){return [_c('span',{class:[{'font-weight-bold': _vm.isActive(item)}]},[_vm._v(_vm._s(item.name))])]}},{key:\"item.username\",fn:function({ item }){return [_c('span',{class:[{'font-weight-bold': _vm.isActive(item)}]},[_vm._v(_vm._s(item.username))])]}},{key:\"item.email\",fn:function({ item }){return [_c('span',{class:[{'font-weight-bold': _vm.isActive(item)}]},[_vm._v(_vm._s(item.email))])]}}])})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport User from '@/model/User';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\n\nexport default Vue.extend({\n name: 'Users',\n components: { SettingsForm },\n mixins: [SettingsBreadcrumbs],\n data() {\n return {\n headers: [\n {\n text: this.$i18n.t('label.first_name'),\n value: 'name',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.username'),\n value: 'username',\n align: 'start',\n sortable: false,\n mdAndUp: true,\n },\n {\n text: this.$i18n.t('label.email'),\n value: 'email',\n align: 'start',\n sortable: false,\n },\n ],\n breadcrumbs: [],\n };\n },\n computed: {\n computedHeaders(): any[] {\n return this.headers.filter((e) => (!e.mdAndUp || (e.mdAndUp && this.$vuetify.breakpoint.mdAndUp)));\n },\n users(): User[] {\n const { users } = this.$tstore.state.settings;\n const activeUser = this.$tstore.getters.activeUser as User | undefined;\n if (activeUser) return [activeUser, ...users.filter((u) => u.id !== activeUser.id)];\n return users;\n },\n },\n\n methods: {\n edit(o: User, prop: any) {\n this.$router.push(`/settings/users/${o.id}`);\n },\n add() {\n this.$router.push('/settings/users/new');\n },\n isActive(o: User) {\n const activeUser = this.$tstore.getters.activeUser as User | undefined;\n return o.id === activeUser?.id;\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Users.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Users.vue?vue&type=template&id=d1f2435e&\"\nimport script from \"./Users.vue?vue&type=script&lang=ts&\"\nexport * from \"./Users.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"error\",\"disabled\":_vm.isNew || _vm.isActive},on:{\"click\":function($event){_vm.deleteConfirmation = true}}},[_c('v-icon',[_vm._v(\"mdi-delete\")]),_c('span',{staticClass:\"d-none d-lg-block\"},[_vm._v(_vm._s(_vm.$t('button.delete_user')))])],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('confirmation-dialog',{attrs:{\"visible\":_vm.deleteConfirmation,\"message\":_vm.$t('message.confirm_delete_user')},on:{\"confirm\":_vm.remove,\"close\":function($event){_vm.deleteConfirmation = false}}}),_c('change-password-dialog',{attrs:{\"visible\":_vm.changePasswordDialog,\"username\":_vm.u.username},on:{\"close\":function($event){_vm.changePasswordDialog = false}}}),_c('validation-observer',{ref:\"observer\"},[_c('settings-group',{attrs:{\"title\":_vm.$t('label.general_settings'),\"subtitle\":_vm.$t('settings.user.general_settings_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|max:254|validEmail\",\"label\":_vm.$t('label.email'),\"disabled\":!_vm.isNew,\"required\":\"\"},model:{value:(_vm.u.email),callback:function ($$v) {_vm.$set(_vm.u, \"email\", $$v)},expression:\"u.email\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('validated-text-field',{staticClass:\"pt-0\",attrs:{\"rules\":\"required|min:2|max:255\",\"label\":_vm.$t('label.first_name')},model:{value:(_vm.u.name),callback:function ($$v) {_vm.$set(_vm.u, \"name\", $$v)},expression:\"u.name\"}})],1),(_vm.isActive)?_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"color\":\"primary\",\"disabled\":_vm.isNew},on:{\"click\":function($event){_vm.changePasswordDialog = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.update_password'))+\" \")])],1):_vm._e()],1),_c('settings-group',{attrs:{\"title\":_vm.$t('settings.user.permissions_title'),\"subtitle\":_vm.$t('settings.user.permissions_subtitle')}},_vm._l((_vm.userOptions),function(o,i){return _c('v-col',{key:`user_option_${i}`,staticClass:\"py-2\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"pt-0 mt-0\",attrs:{\"hide-details\":\"\",\"label\":o.title},model:{value:(_vm.u[o.value]),callback:function ($$v) {_vm.$set(_vm.u, o.value, $$v)},expression:\"u[o.value]\"}}),_c('p',{staticClass:\"pt-0 mt-1 ml-12\"},[_vm._v(\" \"+_vm._s(o.subtitle)+\" \")])],1)}),1),_c('settings-group',{attrs:{\"title\":_vm.$t('settings.user.privacy_screen_title'),\"subtitle\":_vm.$t('settings.user.privacy_screen_subtitle')}},[_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"items\":_vm.privacyItems,\"label\":_vm.$t('label.show_privacy_screen_after')},model:{value:(_vm.u.privacyScreenTimeout),callback:function ($$v) {_vm.$set(_vm.u, \"privacyScreenTimeout\", $$v)},expression:\"u.privacyScreenTimeout\"}})],1)],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"600px\",\"title\":_vm.$t('title.update_password')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('confirmation-dialog',{attrs:{\"visible\":_vm.resetConfirmation,\"message\":_vm.$t('message.confirm_change_password')},on:{\"confirm\":_vm.resetPassword,\"close\":function($event){_vm.resetConfirmation = false}}}),_c('v-form',{ref:\"form\"},[_c('validation-observer',{ref:\"observer\"},[_c('v-row',[_c('v-col',{staticClass:\"pb-0 mb-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"required|min:6|max:50\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-text-field',{staticClass:\"pb-0 mb-0\",attrs:{\"type\":\"password\",\"error-messages\":errors,\"label\":_vm.$t('label.current_password')},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})]}}])})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"pt-0 mt-0\"},[_c('div',{staticClass:\"pt-0 text-center\"},[_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.resetConfirmation=true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.forgot_password'))+\" \")])],1)])],1),_c('validation-observer',[_c('v-row',[_c('v-col',{staticClass:\"pt-5\",attrs:{\"cols\":\"12\"}},[_c('password-text-field',{attrs:{\"label\":_vm.$t('label.new_password')},model:{value:(_vm.newPassword),callback:function ($$v) {_vm.newPassword=$$v},expression:\"newPassword\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"name\":\"confirm\",\"rules\":\"required|max:50|password:@newPassword\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-text-field',{staticClass:\"pt-2\",attrs:{\"type\":\"password\",\"error-messages\":errors,\"label\":_vm.$t('label.retype_password')},model:{value:(_vm.confirmPassword),callback:function ($$v) {_vm.confirmPassword=$$v},expression:\"confirmPassword\"}})]}}])})],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport PasswordTextField from '@/components/forms/PasswordTextField.vue';\nimport { performAction } from '@/services/vue-utils';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { ValidationObserver } from 'vee-validate';\nimport toast from '@/plugins/toast-plugin/toast';\n\nexport default Vue.extend({\n name: 'ChangePasswordDialog',\n components: { ConfirmationDialog, PasswordTextField },\n mixins: [DialogClosable],\n props: {\n username: { type: String as PropType, required: true },\n },\n data() {\n return {\n password: '',\n newPassword: '',\n confirmPassword: '',\n resetConfirmation: false,\n };\n },\n computed: { },\n watch: { },\n methods: {\n reset() {\n (this.$refs.form as Vue & { reset: () => void }).reset();\n (this.$refs.observer as InstanceType).reset();\n },\n async save() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) {\n toast.error(this.$i18n.tc('error.validation_failed'));\n return;\n }\n\n const ok = await performAction(\n this.$i18n.tc('message.your_password_has_been_updated'),\n this.$i18n.tc('error.changing_password'),\n async () => this.$tstore.dispatch('changePassword', {\n username: this.username,\n password: this.password,\n newPassword: this.newPassword,\n }),\n );\n if (ok) {\n this.reset();\n this.$emit('close');\n }\n },\n cancel() {\n this.reset();\n this.$emit('close');\n },\n async resetPassword() {\n const ok = await performAction(\n this.$i18n.tc('message.success_new_password_sent'),\n this.$i18n.tc('error.changing_password'),\n async () => this.$tstore.dispatch('resetPassword', {\n username: this.username,\n password: this.password,\n newPassword: this.newPassword,\n }),\n );\n\n if (ok) {\n this.resetConfirmation = false;\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChangePasswordDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChangePasswordDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChangePasswordDialog.vue?vue&type=template&id=d080d82e&\"\nimport script from \"./ChangePasswordDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChangePasswordDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport ChangePasswordDialog from '@/components/views/settings/ChangePasswordDialog.vue';\nimport User from '@/model/User';\nimport { performAction, performSaveAction } from '@/services/vue-utils';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\n\nexport default Vue.extend({\n name: 'User',\n components: {\n ConfirmationDialog, ChangePasswordDialog, SettingsForm, SettingsGroup,\n },\n mixins: [UnsavedGuard, SettingsBreadcrumbs],\n data() {\n return {\n deleteConfirmation: false,\n changePasswordDialog: false,\n u: new User(),\n oldu: new User(),\n unwatch: Function as (() => void),\n privacyItems: [\n { text: this.$t('label.privacy_screen_duration_never'), value: 0 },\n ...[1, 5, 10, 30, 60].map((n) => ({ text: this.$tc('label.x_seconds', n), value: n })),\n ],\n userOptions: [\n {\n title: this.$t('label.allow_signin'),\n subtitle: this.$t('settings.user.allow_signin_help'),\n value: 'allowSignIn',\n },\n {\n title: this.$t('label.allow_reservations'),\n value: 'allowReservations',\n subtitle: this.$t('settings.user.allow_reservations_help'),\n },\n {\n title: this.$i18n.t('label.allow_day_notes'),\n value: 'allowDayNotes',\n subtitle: this.$t('settings.user.allow_day_notes_help'),\n },\n {\n title: this.$i18n.t('label.allow_settings'),\n value: 'allowSettings',\n subtitle: this.$t('settings.user.allow_settings_help'),\n },\n {\n title: this.$i18n.t('label.allow_billing'),\n value: 'allowBilling',\n subtitle: this.$t('settings.user.allow_billing_help'),\n },\n {\n title: this.$i18n.t('label.shared_user'),\n value: 'sharedUser',\n subtitle: this.$t('settings.user.shared_user_help'),\n },\n {\n title: this.$i18n.t('label.user_newsletter_subscription'),\n value: 'newsletterSubscription',\n subtitle: this.$t('settings.user.newsletter_subscription_help'),\n },\n ],\n breadcrumbs: [] as any[],\n };\n },\n computed: {\n isNew(): boolean {\n return !this.u.id;\n },\n isChanged(): boolean {\n return !isModelEqualToModel(this.u, this.oldu);\n },\n isActive(): boolean {\n const activeUser = this.$tstore.getters.activeUser as User | undefined;\n return this.u.id === activeUser?.id;\n },\n },\n created() {\n this.unwatch = this.$tstore.watch((state, getters) => getters.isLoaded, (newValue, oldValue) => { this.reset(); });\n },\n beforeDestroy() {\n this.unwatch();\n },\n mounted() {\n this.reset();\n },\n methods: {\n async save() {\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.$tstore.dispatch('sendUser', { entity: this.u }),\n );\n\n if (ok) {\n this.reset();\n this.$router.back();\n }\n },\n reset() {\n this.changePasswordDialog = false;\n\n const id = Number(this.$route.params.id) || 0;\n const u = this.$tstore.state.settings.users.find((o: User) => o.id === id) ?? new User();\n if (!u.id) {\n this.userOptions.forEach((o) => { (u as any)[o.value] = true; });\n }\n this.u = cloneModel(u);\n this.oldu = u;\n\n this.breadcrumbs[2].text = this.u.name ?? this.$i18n.t('button.add_new_user');\n },\n async remove() {\n const ok = await performAction(\n this.$tc('message.success_user_deleted'),\n this.$tc('error.deleting_user'),\n async () => this.$tstore.dispatch('sendUser', { entity: this.u, delete: true }),\n );\n if (ok) {\n this.reset();\n this.$router.back();\n }\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./User.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./User.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./User.vue?vue&type=template&id=4e9da348&\"\nimport script from \"./User.vue?vue&type=script&lang=ts&\"\nexport * from \"./User.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('main-toolbar',{scopedSlots:_vm._u([{key:\"buttons.prepend\",fn:function(){return [_c('v-spacer'),_c('tooltip-icon-button',{attrs:{\"tooltip-title\":\"Filter Contacts\"},on:{\"click\":function($event){_vm.filterFieldExpanded=!_vm.filterFieldExpanded}}},[_c('v-icon',[_vm._v(_vm._s(_vm.isDefaultFilter ? 'mdi-filter-outline' : 'mdi-filter'))])],1),(_vm.filterFieldExpanded)?[_c('contact-filter-select',{staticStyle:{\"max-width\":\"300px\"},attrs:{\"filters\":_vm.contactFilters,\"allow-edit\":_vm.isSettingsAllowed,\"hide-details\":\"\"},on:{\"add-filter\":_vm.addFilter,\"duplicate-filter\":_vm.duplicateFilter,\"edit-filter\":_vm.editFilter,\"input\":_vm.selectFilter},model:{value:(_vm.contactFilter),callback:function ($$v) {_vm.contactFilter=$$v},expression:\"contactFilter\"}})]:_vm._e(),_c('tooltip-icon-button',{attrs:{\"tooltip-title\":_vm.$t('label.mark_duplicated_values')},on:{\"click\":function($event){_vm.markDuplicities = !_vm.markDuplicities}}},[_c('v-icon',[_vm._v(_vm._s(_vm.markDuplicities ? 'mdi-flag' : 'mdi-flag-outline'))])],1),_c('tooltip-icon-button',{attrs:{\"tooltip-title\":_vm.$t('label.create_new_contact'),\"disabled\":!_vm.isReservationsAllowed},on:{\"click\":_vm.createContact}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('tooltip-icon-button',{attrs:{\"disabled\":!_vm.isReservationsAllowed || (_vm.selectedContacts.length < 2 || _vm.selectedContacts.length > 8),\"tooltip-title\":_vm.$t('label.merge_selected_contacts')},on:{\"click\":_vm.showMergeContacts}},[_c('v-icon',[_vm._v(\"mdi-merge\")])],1),_c('tooltip-icon-button',{attrs:{\"disabled\":!_vm.isReservationsAllowed || _vm.selectedContacts.length===0,\"tooltip-title\":_vm.$t('label.delete_selected_contacts')},on:{\"click\":_vm.showDeleteContactsConfirmation}},[_c('v-icon',[_vm._v(\"mdi-delete-outline\")])],1)]},proxy:true}])},[_c('v-text-field',{staticStyle:{\"max-width\":\"350px\"},attrs:{\"value\":_vm.searchTerm,\"prepend-icon\":\"mdi-magnify\",\"append-icon\":_vm.searchTerm !== '' ? 'mdi-close' : null,\"hide-details\":\"\"},on:{\"click:append\":function($event){return _vm.updateSearchTerm('')},\"input\":_vm.updateSearchTerm}})],1)]},proxy:true}])},[(_vm.employeeDialogVisible)?_c('employee-dialog',{attrs:{\"visible\":_vm.employeeDialogVisible},on:{\"close\":function($event){_vm.employeeDialogVisible=false},\"selected\":function($event){_vm.employeeDialogVisible=false; if(_vm.employeeDialogSubmitAction) _vm.employeeDialogSubmitAction()}}}):_vm._e(),(_vm.contactDialogVisible)?_c('contact-details-dialog',{attrs:{\"contact\":_vm.editedContact,\"visible\":_vm.contactDialogVisible},on:{\"close\":function($event){_vm.contactDialogVisible = false},\"save\":_vm.saveContact}}):_vm._e(),(_vm.mergeDialogVisible)?_c('contacts-merge-dialog',{attrs:{\"visible\":_vm.mergeDialogVisible,\"contacts\":_vm.selectedContacts},on:{\"close\":function($event){_vm.mergeDialogVisible = false},\"merge\":_vm.mergeContacts}}):_vm._e(),(_vm.filterDialogVisible)?_c('contacts-filter-dialog',{attrs:{\"contact-filter\":_vm.editedContactFilter,\"visible\":_vm.filterDialogVisible,\"match-contact-count\":_vm.matchContactCount},on:{\"close\":function($event){_vm.filterDialogVisible = false},\"save\":_vm.saveContactFilter,\"changed\":_vm.changedContactFilter,\"delete\":_vm.deleteContactFilter}}):_vm._e(),(_vm.reservationsByContactDialog)?_c('reservation-results-dialog',{attrs:{\"visible\":_vm.reservationsByContactDialog,\"title\":_vm.$t('title.all_reservations_from_x', [_vm.editedContact?.name ?? '']),\"reservations\":_vm.contactReservations},on:{\"close\":function($event){_vm.editedContact = null; _vm.contactReservations=[]; _vm.reservationsByContactDialog = false}}}):_vm._e(),_c('v-data-table',{staticClass:\"contacts-table clickable-table\",attrs:{\"show-select\":_vm.isReservationsAllowed,\"must-sort\":\"\",\"dense\":\"\",\"headers\":_vm.headers,\"items-per-page\":25,\"items\":_vm.contacts,\"footer-props\":{ itemsPerPageOptions: [25,50,75,100] },\"sort-by\":_vm.sortBy,\"sort-desc\":_vm.sortDesc,\"search\":_vm.searchTerm,\"server-items-length\":_vm.itemCount,\"custom-sort\":_vm.noSort,\"custom-filter\":\"true\"},on:{\"update:sortBy\":function($event){_vm.sortBy=$event},\"update:sort-by\":[function($event){_vm.sortBy=$event},_vm.updateSortBy],\"update:sortDesc\":function($event){_vm.sortDesc=$event},\"update:sort-desc\":[function($event){_vm.sortDesc=$event},_vm.updateSortDesc],\"click:row\":_vm.editContact,\"update:page\":_vm.resetSelection,\"pagination\":_vm.pagination,\"update:options\":_vm.updatePage},scopedSlots:_vm._u([{key:\"item.name\",fn:function({item}){return [(item.isVIP)?_c('v-icon',{staticStyle:{\"margin-bottom\":\"2px\"},attrs:{\"small\":\"\"}},[_vm._v(\" mdi-crown \")]):_vm._e(),_vm._v(\" \"+_vm._s(item.name)+\" \")]}},{key:\"item.lastVisit\",fn:function({ item }){return [(item.lastVisit)?_c('span',[_vm._v(_vm._s(_vm.$localized.shortDateText(item.lastVisit)))]):_vm._e()]}},{key:\"item.actions\",fn:function({item}){return [_c('tooltip-icon-button',{attrs:{\"button-class\":\"mr-0 mr-sm-2\",\"tooltip-title\":_vm.$t('button.new_reservation'),\"x-small\":_vm.$vuetify.breakpoint.smAndUp,\"small\":_vm.$vuetify.breakpoint.xsOnly,\"disabled\":!_vm.isReservationsAllowed},on:{\"click\":function($event){return _vm.newContactReservation(item)}}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1),_c('tooltip-icon-button',{attrs:{\"tooltip-title\":_vm.$t('label.show_all_reservations_from_contact'),\"x-small\":_vm.$vuetify.breakpoint.smAndUp,\"small\":_vm.$vuetify.breakpoint.xsOnly},on:{\"click\":function($event){return _vm.listContactReservations(item)}}},[_c('v-icon',[_vm._v(\"mdi-magnify\")])],1)]}},{key:\"header.data-table-select\",fn:function({on, props}){return [_c('v-checkbox',{staticClass:\"pa-0 ma-0\",attrs:{\"dense\":\"\",\"hide-details\":\"\",\"value\":props.value,\"indeterminate\":props.indeterminate},on:{\"click\":function($event){$event.stopPropagation();return on.input(!props.value)}}})]}},{key:\"item.data-table-select\",fn:function({isSelected, select}){return [_c('v-checkbox',{staticClass:\"pa-0 ma-0\",attrs:{\"input-value\":isSelected,\"dense\":\"\",\"hide-details\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return select(!isSelected)}}})]}},{key:\"item.phone\",fn:function(props){return [_c('div',{staticClass:\"dt-colored-cell\",style:(_vm.markDuplicities ? `background-color: ${_vm.contactPhoneColors.get(props.item.id)}` : '')},[_vm._v(\" \"+_vm._s(props.item.phone)+\" \")])]}},{key:\"item.email\",fn:function(props){return [_c('div',{staticClass:\"dt-colored-cell\",style:(_vm.markDuplicities ? `background-color: ${_vm.contactEmailColors.get(props.item.id)}` : '')},[_vm._v(\" \"+_vm._s(props.item.email)+\" \")])]}}]),model:{value:(_vm.selectedContacts),callback:function ($$v) {_vm.selectedContacts=$$v},expression:\"selectedContacts\"}})],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('validation-observer',{ref:\"observer\"},[(_vm.deleteFilterConfirmation)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.deleteFilterConfirmation,\"message\":_vm.$t('message.confirm_delete_filter')},on:{\"confirm\":_vm.deleteFilter,\"close\":function($event){_vm.deleteFilterConfirmation = false}}}):_vm._e(),_c('modal-dialog',{attrs:{\"visible\":true,\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"800px\",\"card-class\":\"pa-5\",\"content-class\":\"dialog-height-80\",\"container-class\":\"pa-0\",\"title\":_vm.$t('label.contacts_filter')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(!_vm.isNewFilter)?_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.deleteFilterConfirmation=true}}},[_c('v-icon',[_vm._v(\"mdi-delete\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.delete_filter'))+\" \")],1):_vm._e(),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('v-row',[_c('v-col',{staticClass:\"pt-4 pb-0\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"autofocus\":\"\",\"rules\":\"required|min:2|max:254\",\"label\":_vm.$t('label.contact_filter_name')},model:{value:(_vm.cf.name),callback:function ($$v) {_vm.$set(_vm.cf, \"name\", $$v)},expression:\"cf.name\"}})],1),_c('row-form-divider',{staticClass:\"py-1\"}),_c('v-col',{staticClass:\"pb-5\",attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"text-subtitle-2 text--primary font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.filter_define_selection'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.filter_define_selection_hint'))+\": \")]),_vm._t(\"define-rules\"),_vm._l((_vm.defineRules),function(rule,i){return _c('v-col',{key:`define_${rule.id}`,staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":_vm.editValidation ? ({cfrownoop: { descriptor: _vm.descriptor }}) : ({cfrow: { descriptor: _vm.descriptor }})},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('contacts-filter-value-row',{attrs:{\"descriptor\":_vm.descriptor,\"last-row\":i===_vm.defineRules.length-1,\"error-messages\":errors},on:{\"add\":function($event){return _vm.addRule(i, _vm.defineRules)},\"remove\":function($event){return _vm.removeRule(i, _vm.defineRules)},\"input\":_vm.ruleModified},model:{value:(_vm.defineRules[i]),callback:function ($$v) {_vm.$set(_vm.defineRules, i, $$v)},expression:\"defineRules[i]\"}})]}}],null,true)})],1)}),(_vm.hasAdvancedRule || _vm.advancedVisibleToggle)?[_c('row-form-divider',{staticClass:\"pt-5 pb-2\"}),_c('v-col',{staticClass:\"pb-5\",attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"text-subtitle-2 text--primary font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.filter_narrow_down_selection'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.filter_narrow_down_selection_hint'))+\": \")]),_vm._t(\"narrow-rules\"),_vm._l((_vm.narrowRules),function(rule,i){return _c('v-col',{key:`narrow_${rule.id}`,staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":_vm.editValidation ? ({cfrownoop: { descriptor: _vm.descriptor }}) : ({cfrow: { descriptor: _vm.descriptor }})},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('contacts-filter-value-row',{attrs:{\"descriptor\":_vm.descriptor,\"last-row\":i===_vm.narrowRules.length-1,\"error-messages\":errors},on:{\"add\":function($event){return _vm.addRule(i, _vm.narrowRules)},\"remove\":function($event){return _vm.removeRule(i, _vm.narrowRules)},\"input\":_vm.ruleModified},model:{value:(_vm.narrowRules[i]),callback:function ($$v) {_vm.$set(_vm.narrowRules, i, $$v)},expression:\"narrowRules[i]\"}})]}}],null,true)})],1)}),_c('row-form-divider',{staticClass:\"pt-5 pb-2\"}),_c('v-col',{staticClass:\"pb-5\",attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"text-subtitle-2 text--primary font-weight-bold\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.filter_exclude_from_selection'))+\" \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.filter_exclude_from_selection_hint'))+\": \")]),_vm._l((_vm.excludeRules),function(rule,i){return _c('v-col',{key:`exclude_${rule.id}`,staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":_vm.editValidation ? ({cfrownoop: { descriptor: _vm.descriptor }}) : ({cfrow: { descriptor: _vm.descriptor }})},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('contacts-filter-value-row',{attrs:{\"descriptor\":_vm.descriptor,\"last-row\":i===_vm.excludeRules.length-1,\"error-messages\":errors},on:{\"add\":function($event){return _vm.addRule(i, _vm.excludeRules)},\"remove\":function($event){return _vm.removeRule(i, _vm.excludeRules)},\"input\":_vm.ruleModified},model:{value:(_vm.excludeRules[i]),callback:function ($$v) {_vm.$set(_vm.excludeRules, i, $$v)},expression:\"excludeRules[i]\"}})]}}],null,true)})],1)})]:_vm._e(),_c('v-col',{staticClass:\"d-flex flex-row py-0 my-0 pt-4\",attrs:{\"cols\":\"12\"}},[_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"outlined\":\"\",\"small\":\"\",\"disabled\":_vm.hasAdvancedRule},on:{\"click\":function($event){_vm.advancedVisibleToggle=!_vm.advancedVisibleToggle}}},[_vm._v(\" \"+_vm._s(_vm.advancedVisibleToggle ? _vm.$t('button.hide_advanced_options') : _vm.$t('button.show_advanced_options'))+\" \"),_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.advancedVisibleToggle ? 'mdi-chevron-up' : 'mdi-chevron-down')+\" \")])],1),_c('v-spacer')],1),_c('row-form-divider',{staticClass:\"pt-5 pb-2\"}),_c('v-col',{attrs:{\"cols\":\"12\"}},[_vm._t(\"footer\",null,{\"count\":_vm.matchContactCount}),(!_vm.$scopedSlots.footer && _vm.matchContactCount !== null)?_c('span',{staticClass:\"text-subtitle-2\"},[_vm._v(_vm._s(_vm.$t('label.filter_matches_x_guests', [_vm.matchContactCount])))]):_vm._e()],2)],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{staticClass:\"pb-2\"},[_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"4\"}},[_c('v-select',{attrs:{\"label\":_vm.$t('label.contact_filter_property'),\"items\":_vm.ruleFieldsInfo,\"error-messages\":_vm.errorMessages,\"disabled\":_vm.disabled,\"append-outer-icon\":_vm.ruleField !== '' && _vm.lastRow ? 'mdi-close' : ''},on:{\"click:append-outer\":function($event){_vm.ruleField = null; _vm.ruleFieldChanged()},\"input\":_vm.ruleFieldChanged},model:{value:(_vm.ruleField),callback:function ($$v) {_vm.ruleField=$$v},expression:\"ruleField\"}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"3\"}},[_c('v-select',{attrs:{\"disabled\":_vm.disabled || _vm.ruleTypesInfo.length < 1,\"items\":_vm.ruleTypesInfo},on:{\"input\":_vm.ruleTypeChanged},model:{value:(_vm.ruleType),callback:function ($$v) {_vm.ruleType=$$v},expression:\"ruleType\"}})],1),_c('v-col',{staticClass:\"d-flex justify-center py-0\",attrs:{\"cols\":\"5\"}},[(_vm.isOperand)?_c('div',{staticClass:\"w-100\"},[(_vm.ruleOperandsInfo.length > 0)?_c('v-select',{attrs:{\"disabled\":_vm.disabled,\"label\":_vm.$t('label.contact_filter_property_value'),\"items\":_vm.ruleOperandsInfo},on:{\"input\":_vm.ruleOperandChanged},model:{value:(_vm.ruleOperand),callback:function ($$v) {_vm.ruleOperand=$$v},expression:\"ruleOperand\"}}):(_vm.ruleOperandType === 'number')?_c('v-text-field',{attrs:{\"disabled\":_vm.disabled,\"label\":_vm.$t('label.contact_filter_property_value'),\"type\":\"number\"},on:{\"change\":_vm.ruleOperandChanged},model:{value:(_vm.ruleOperand),callback:function ($$v) {_vm.ruleOperand=_vm._n($$v)},expression:\"ruleOperand\"}}):_c('v-text-field',{attrs:{\"disabled\":_vm.disabled,\"label\":_vm.$t('label.contact_filter_property_value')},on:{\"change\":_vm.ruleOperandChanged},model:{value:(_vm.ruleOperand),callback:function ($$v) {_vm.ruleOperand=$$v},expression:\"ruleOperand\"}})],1):_vm._e(),_c('v-spacer'),(!_vm.disabled)?[(_vm.lastRow)?_c('v-btn',{staticClass:\"align-self-center\",attrs:{\"icon\":\"\",\"disabled\":_vm.ruleField === ''},on:{\"click\":_vm.add}},[_c('v-icon',[_vm._v(\"mdi-plus\")])],1):_c('v-btn',{staticClass:\"align-self-center\",attrs:{\"icon\":\"\",\"disabled\":_vm.disabled},on:{\"click\":_vm.remove}},[_c('v-icon',[_vm._v(\"mdi-delete\")])],1)]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {} from '@/services/filter/filter';\nimport {\n FilterDescriptor, FilterRuleDescriptor, FilterSpecialCategoryOperandType, ListInfo,\n} from '@/services/filter/filter-descriptor';\nimport {\n FilterFieldRule, FilterFieldType, FilterRule, FilterRuleType,\n} from '@/services/filter/filter-rule';\nimport { FilterOperandType } from '@/services/filter/filter-rule-operation';\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'ContactsFilterValueRow',\n components: { },\n mixins: [],\n props: {\n value: { type: Object as PropType, required: true },\n descriptor: { type: Object as PropType, required: true },\n lastRow: { type: Boolean, required: true, default: false },\n errorMessages: { type: Array as PropType>, required: false, default: () => [] },\n disabled: { type: Boolean as PropType, required: false, default: false },\n },\n data() {\n return {\n ruleField: null as string | null,\n ruleType: null as FilterRuleType | null,\n ruleOperand: null as FilterOperandType | null,\n ruleDescriptor: null as FilterRuleDescriptor | null,\n };\n },\n computed: {\n ruleFieldsInfo(): ListInfo {\n return this.descriptor.allowedFieldsInfo();\n },\n ruleTypesInfo(): ListInfo {\n return this.ruleDescriptor?.allowedRuleTypesInfo() ?? [];\n },\n isOperand(): boolean {\n return !FilterRule.isFilterFieldNoOperandType(this.value.type);\n },\n ruleOperandsInfo(): ListInfo {\n const type = this.ruleDescriptor?.specialCategoryOperandsType() ?? 'none';\n switch (type) {\n case FilterSpecialCategoryOperandType.Country: return this.$tstore.getters.sortedCountries;\n case FilterSpecialCategoryOperandType.Language: return this.$tstore.getters.sortedLocales;\n default:\n }\n\n return this.ruleDescriptor?.allowedOperandsInfo() ?? [];\n },\n ruleOperandType(): string {\n if (this.ruleDescriptor?.fieldtype === FilterFieldType.Number) return 'number';\n return 'string';\n },\n rule(): FilterFieldRule {\n const rule = new FilterFieldRule();\n rule.id = this.value.id;\n rule.field = this.ruleDescriptor?.field ?? '';\n rule.fieldType = this.ruleDescriptor?.fieldtype ?? FilterFieldType.None;\n rule.type = this.ruleType ?? FilterRuleType.None;\n rule.operand = this.ruleOperand ?? null;\n return rule;\n },\n },\n watch: {\n value(value: FilterRule) {\n this.reset();\n },\n },\n mounted() {\n this.reset();\n this.ruleFieldChanged();\n },\n methods: {\n reset() {\n this.ruleField = this.value.field;\n this.ruleType = this.value.type;\n this.ruleOperand = this.value.operand;\n },\n add() {\n this.$emit('add');\n },\n remove() {\n this.$emit('remove');\n },\n ruleFieldChanged() {\n this.ruleDescriptor = this.descriptor.ruleDescriptors.find((rd) => rd.field === this.ruleField) ?? null;\n if (!this.ruleDescriptor?.allowedRuleTypes.includes(this.value.type)) {\n this.ruleType = this.ruleDescriptor?.allowedRuleTypes.find(Boolean) ?? null;\n }\n if (this.ruleOperand && this.ruleDescriptor?.validateOperand(this.rule) !== null) {\n this.ruleOperand = null;\n }\n this.$emit('input', this.rule);\n },\n ruleTypeChanged() {\n if (this.ruleOperand && this.ruleDescriptor?.validateOperand(this.rule) !== null) {\n this.ruleOperand = null;\n }\n this.$emit('input', this.rule);\n },\n ruleOperandChanged() {\n this.$emit('input', this.rule);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsFilterValueRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsFilterValueRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactsFilterValueRow.vue?vue&type=template&id=12434029&scoped=true&\"\nimport script from \"./ContactsFilterValueRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactsFilterValueRow.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"12434029\",\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport ContactFilter from '@/grpc-api/model/contact-filter';\nimport { Filter } from '@/services/filter/filter';\nimport { cloneModel } from '@/model/model-utils';\nimport { FilterDescriptor } from '@/services/filter/filter-descriptor';\nimport { FilterConvert } from '@/services/filter/filter-convert';\nimport { FilterFieldRule, FilterRule } from '@/services/filter/filter-rule';\nimport { ValidationObserver } from 'vee-validate';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport ContactsFilterValueRow from './ContactsFilterValueRow.vue';\n\nexport default Vue.extend({\n name: 'ContactsFilterDialog',\n components: { ContactsFilterValueRow, ConfirmationDialog },\n mixins: [DialogClosable],\n props: {\n contactFilter: { type: Object as PropType, required: false, default: null },\n matchContactCount: { type: Number as PropType, required: false, default: null },\n },\n data() {\n return {\n cf: new ContactFilter(),\n defineRules: [] as FilterFieldRule[],\n narrowRules: [] as FilterFieldRule[],\n excludeRules: [] as FilterFieldRule[],\n lastid: 0,\n // matchContactCount: null as number | null,\n deleteFilterConfirmation: false,\n editValidation: true,\n advancedVisibleToggle: false,\n };\n },\n computed: {\n hasAdvancedRule(): boolean {\n return this.narrowRules.filter((r) => r.fieldType !== 'none').length > 0\n || this.excludeRules.filter((r) => r.fieldType !== 'none').length > 0;\n },\n descriptor(): FilterDescriptor {\n return ContactFilter.FilterDescriptor;\n },\n filter(): Filter | null {\n const trim = (rs: FilterFieldRule[]) => rs.filter((r) => this.descriptor.validateRule(r) === null);\n\n const defineRules = trim(this.defineRules);\n const narrowRules = trim(this.narrowRules);\n const excludeRules = trim(this.excludeRules);\n const filter = Filter.newFilterFrom3Rules({ defineRules, narrowRules, excludeRules });\n return filter;\n },\n isNewFilter(): boolean {\n return this.cf.id === 0;\n },\n },\n watch: {\n filter(filter: Filter) {\n this.changed();\n // console.log('changed: ', this.filter, this.matchContactCount);\n },\n },\n mounted() {\n this.cf = this.contactFilter ? cloneModel(this.contactFilter) : new ContactFilter();\n\n let f = new Filter();\n if (this.cf.data) {\n try {\n f = FilterConvert.fromJson(this.cf.data);\n } catch (e) {\n console.log('Error loading filter: ', e);\n }\n }\n const rules = f.get3Rules();\n\n this.defineRules = [...rules.defineRules as FilterFieldRule[], new FilterFieldRule()];\n this.narrowRules = [...rules.narrowRules as FilterFieldRule[], new FilterFieldRule()];\n this.excludeRules = [...rules.excludeRules as FilterFieldRule[], new FilterFieldRule()];\n\n [...this.defineRules, ...this.narrowRules, ...this.excludeRules].forEach(\n // eslint-disable-next-line no-param-reassign\n (r) => { this.lastid += 1; r.id = this.lastid; },\n );\n\n this.advancedVisibleToggle = this.hasAdvancedRule;\n },\n methods: {\n close() {\n this.$emit('close');\n },\n addRule(index: number, rules: FilterRule[]) {\n const r = new FilterFieldRule();\n this.lastid += 1; r.id = this.lastid;\n rules.push(r);\n },\n removeRule(index: number, rules: FilterRule[]) {\n rules.splice(index, 1);\n },\n async save() {\n // enforce operand chek when save\n this.editValidation = false;\n await this.$nextTick();\n\n const observer = this.$refs.observer as InstanceType;\n const isValid = await observer.validate();\n\n // back to edit mode with no operand check\n // await this.$nextTick();\n // this.editValidation = true;\n\n if (!isValid) return;\n\n if (!this.filter) return;\n\n this.cf.data = FilterConvert.toJson(this.filter);\n\n this.$emit('save', this.cf);\n },\n changed() {\n if (!this.filter) return;\n\n this.cf.data = FilterConvert.toJson(this.filter);\n\n this.$emit('changed', this.cf);\n },\n async deleteFilter() {\n this.$emit('delete', this.cf);\n },\n ruleModified() {\n // back to edit mode with no operand check\n this.editValidation = true;\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsFilterDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsFilterDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactsFilterDialog.vue?vue&type=template&id=5eea4dd0&\"\nimport script from \"./ContactsFilterDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactsFilterDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{ref:\"dialog\",attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":_vm.contacts.length === 2 ? '60%' : '95%',\"max-height\":\"60%\",\"container-class\":\"pa-4\",\"title\":_vm.$t('title.merge_contacts'),\"fluid\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":!_vm.allOptionsMerged && !_vm.allOptionsSame && _vm.contacts.length > 1,\"color\":\"success\"},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('v-row',[(_vm.allOptionsSame)?_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(_vm.$t('message.merge_contact_all_values_same'))+\" \")]):_c('v-col',{staticClass:\"text-center\",attrs:{\"cols\":\"12\"}},[_vm._v(\" \"+_vm._s(_vm.$t('message.merge_contacts_values_different'))+\" \")]),_vm._l((_vm.contacts),function(c,i){return _c('v-col',{key:i,staticClass:\"text-center\"},[_c('span',{staticClass:\"text-subtitle-1\"},[_vm._v(_vm._s(_vm.$t('label.contact'))+\" \"+_vm._s(i+1))])])})],2),_vm._l((_vm.displayedFieldDescriptors.filter((fd) => !fd.readOnly)),function(fd){return _c('contacts-merge-row',{key:fd.field,attrs:{\"label\":fd.label,\"values\":_vm.contacts.map((c)=>_vm.fieldValue(fd.field, c) || c[fd.field]),\"selected-side\":_vm.sideSelection.get(fd.field),\"type\":fd.type,\"read-only\":fd.readOnly},on:{\"side-selected\":function($event){return _vm.sideSelected(fd.field, $event)}}})}),_c('v-divider',{staticClass:\"my-5\"}),_vm._l((_vm.displayedFieldDescriptors.filter((fd) => fd.readOnly)),function(fd){return _c('contacts-merge-row',{key:fd.field,attrs:{\"label\":fd.label,\"values\":_vm.contacts.map((c)=>_vm.fieldValue(fd.field, c) || c[fd.field]),\"selected-side\":_vm.sideSelection.get(fd.field),\"type\":fd.type,\"read-only\":fd.readOnly},on:{\"side-selected\":function($event){return _vm.sideSelected(fd.field, $event)}}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',{staticClass:\"py-0 my-0 d-flex\"},_vm._l((_vm.values),function(value,side){return _c('v-col',{key:side,staticClass:\"py-0 my-0\",on:{\"click\":function($event){return _vm.sideSelected(side)}}},[(!_vm.readOnly)?_c('v-text-field',{class:`side-picker pt-4 ${side === _vm.selectedSide ?\n (_vm.$vuetify.theme.dark ? 'green lighten-3 selected' : 'green lighten-5 selected') :\n (_vm.$vuetify.theme.dark ? 'grey darken-3' : 'grey lighten-4')}`,attrs:{\"value\":value || _vm.$t('label.no_value'),\"label\":_vm.label,\"disabled\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"rounded\":\"\"}}):_c('div',{staticClass:\"d-flex\"},[_c('div',{staticStyle:{\"min-width\":\"19%\",\"display\":\"block-inline\"}},[_vm._v(\" \"+_vm._s(_vm.label)+\": \")]),_c('span',{staticClass:\"font-weight-medium\"},[_vm._v(_vm._s(value))])])],1)}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\n\nexport default Vue.extend({\n name: 'ContactsMergeRow',\n components: { },\n mixins: [DialogClosable],\n props: {\n field: { type: String as PropType, required: true },\n label: { type: String as PropType, required: true },\n values: { type: Object as PropType>, required: true },\n selectedSide: { type: Number as PropType, required: true },\n readOnly: { type: Boolean as PropType, required: false, default: false },\n },\n data() {\n return { };\n },\n computed: { },\n watch: { },\n methods: {\n sideSelected(side: number) {\n if (this.readOnly) return;\n this.$emit('side-selected', { field: this.field, side });\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsMergeRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsMergeRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactsMergeRow.vue?vue&type=template&id=4a20ebea&scoped=true&\"\nimport script from \"./ContactsMergeRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactsMergeRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ContactsMergeRow.vue?vue&type=style&index=0&id=4a20ebea&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4a20ebea\",\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { cloneModel } from '@/model/model-utils';\nimport Contact from '@/grpc-api/model/contact';\nimport ContactsMergeRow from './ContactsMergeRow.vue';\n\nexport default Vue.extend({\n name: 'ContactsMergeDialog',\n components: { ContactsMergeRow },\n mixins: [DialogClosable],\n props: {\n contacts: { type: Array as PropType>, required: true, default: () => [] },\n },\n data() {\n return {\n contact: new Contact(),\n sideSelection: new Map(),\n fieldDescriptors: [\n { field: 'name', label: this.$i18n.tc('label.name'), type: 'string' },\n { field: 'companyName', label: this.$i18n.tc('label.company'), type: 'string' },\n { field: 'email', label: this.$i18n.tc('label.email'), type: 'string' },\n { field: 'phone', label: this.$i18n.tc('label.phone'), type: 'string' },\n\n { field: 'notes', label: this.$i18n.tc('label.note'), type: 'string' },\n { field: 'isVIP', label: this.$i18n.tc('label.vip'), type: 'boolean' },\n { field: 'title', label: this.$i18n.tc('label.title'), type: 'string' },\n { field: 'newsletterSubscription', label: this.$i18n.tc('label.newsletter_subscription'), type: 'boolean' },\n\n { field: 'address', label: this.$i18n.tc('label.address'), type: 'string' },\n { field: 'postalCode', label: this.$i18n.tc('label.zip_code'), type: 'string' },\n { field: 'state', label: this.$i18n.tc('label.state'), type: 'string' },\n { field: 'city', label: this.$i18n.tc('label.city'), type: 'string' },\n { field: 'country', label: this.$i18n.tc('label.country'), type: 'string' },\n { field: 'preferredLanguage', label: this.$i18n.tc('label.preferred_language'), type: 'string' },\n { field: 'dateOfBirth', label: this.$i18n.tc('label.birthday'), type: 'string' },\n\n {\n field: 'updated', label: this.$i18n.tc('label.updated'), type: 'date', readOnly: true,\n },\n {\n field: 'visitCount', label: this.$i18n.tc('label.visits'), type: 'number', readOnly: true,\n },\n {\n field: 'lastVisit', label: this.$i18n.tc('label.last_visit'), type: 'date', readOnly: true,\n },\n ],\n };\n },\n computed: {\n displayedFieldDescriptors(): ({ field: string, label: string, type: string, readOnly?: boolean })[] {\n const descriptors = this.fieldDescriptors.filter(\n (fd) => this.contacts.some((c: any) => c[fd.field] !== (this.contact as any)[fd.field] || fd.readOnly === true),\n );\n return descriptors;\n },\n allOptionsSame(): boolean {\n return this.displayedFieldDescriptors.length === 0;\n },\n allOptionsMerged(): boolean {\n return this.displayedFieldDescriptors.every(\n (fd) => this.sideSelection.get(fd.field) !== undefined || fd?.readOnly,\n );\n },\n },\n watch: {\n },\n mounted() {\n this.contact = cloneModel(this.contacts[0]);\n this.fieldDescriptors.forEach((fd) => {\n if (fd.readOnly) return;\n const index = this.contacts.findIndex(\n (c: any) => c[fd.field] !== undefined && c[fd.field] !== null && c[fd.field] !== '' && c[fd.field] !== 0,\n );\n if (index < 0) return;\n this.sideSelection.set(fd.field, index);\n });\n },\n methods: {\n cancel() {\n this.$emit('close');\n },\n save() {\n const contact = new Contact();\n this.fieldDescriptors.forEach((fd) => {\n if (fd.readOnly) return;\n const index = this.sideSelection.get(fd.field);\n if (index !== undefined) (contact as any)[fd.field] = (this.contacts[index] as any)[fd.field];\n });\n this.$emit('merge', contact);\n },\n sideSelected(field: string, event: { field: string, side: number }) {\n this.sideSelection.set(field, event.side);\n this.sideSelection = new Map(this.sideSelection);\n (this.contact as any)[field] = (this.contacts[event.side] as any)[field];\n },\n fieldValue(field: string, contact: Contact) {\n const fd = this.fieldDescriptors.find((o) => o.field === field);\n const value = (contact as any)[field];\n\n if (!fd || value === undefined || value === null) return value;\n\n if (value.text !== undefined) return value.text;\n\n switch (fd.type) {\n case 'date': return this.$localized.shortDateText(value as Date);\n case 'boolean': return value === true ? this.$i18n.tc('label.true') : this.$i18n.tc('label.false');\n default: return value;\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsMergeDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactsMergeDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ContactsMergeDialog.vue?vue&type=template&id=7e9c7768&scoped=true&\"\nimport script from \"./ContactsMergeDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./ContactsMergeDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e9c7768\",\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('v-select',_vm._b({attrs:{\"value\":_vm.value,\"dense\":\"\",\"items\":_setup.contactFilters,\"menu-props\":{maxHeight: '80%'},\"return-object\":\"\",\"error-messages\":_vm.errorMessages},on:{\"click:append-outer\":_setup.clickAppendOuter,\"input\":_setup.input},scopedSlots:_vm._u([(_vm.allowEdit)?{key:\"append-item\",fn:function(){return [(_setup.contactFilters.length > 0)?_c('v-divider',{staticClass:\"mt-0\"}):_vm._e(),_c('v-list-item',{on:{\"click\":_setup.add}},[_c('v-list-item-icon',{staticClass:\"mr-0 pr-0\",attrs:{\"color\":\"grey lighten-3\"}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-plus \")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('label.add_new_filter'))+\" \")])],1)],1),(_setup.isFilter)?_c('v-list-item',{on:{\"click\":_setup.duplicate}},[_c('v-list-item-icon',{staticClass:\"mr-0 pr-0\",attrs:{\"color\":\"grey lighten-3\"}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-content-duplicate \")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('label.duplicate_current_filter'))+\" \")])],1)],1):_vm._e(),(_setup.canEditFilter)?_c('v-list-item',{on:{\"click\":_setup.edit}},[_c('v-list-item-icon',{staticClass:\"mr-0 pr-0\",attrs:{\"color\":\"grey lighten-3\"}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-pencil \")])],1),_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(_vm.$t('label.edit_current_filter'))+\" \")])],1)],1):_vm._e()]},proxy:true}:null],null,true)},'v-select',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport ContactFilter from '@/grpc-api/model/contact-filter';\nimport { computed, PropType } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ContactFilterSelect',\n props: {\n filters: { type: Array as PropType>, required: true },\n value: { type: Object as PropType, required: true },\n allowEdit: { type: Boolean as PropType, required: false, default: false },\n errorMessages: { type: Array as PropType>, required: false, default: () => [] },\n},\n emits: ['input', 'add-filter', 'edit-filter', 'duplicate-filter', 'click:append-outer'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\nconst isFilter = computed(() => props.value !== null && props.value !== undefined);\n\nconst canEditFilter = computed(() => props.value?.isDefault === false);\n\nconst defaultFilters = computed(() => props.filters.filter((f) => f.isDefault === true));\n\nconst customFilters = computed(() => props.filters.filter((f) => f.isDefault === false));\n\nconst contactFilters = computed(() => {\n const noDevider = defaultFilters.value.length === 0 || customFilters.value.length === 0;\n if (noDevider) return [...defaultFilters.value, ...customFilters.value];\n return [\n ...defaultFilters.value,\n { divider: true },\n ...customFilters.value,\n ];\n});\n\n\n\nconst input = (value: ContactFilter) => {\n emit('input', value);\n};\n\nconst add = () => {\n emit('add-filter');\n};\n\nconst edit = () => {\n emit('edit-filter');\n};\n\nconst duplicate = () => {\n emit('duplicate-filter');\n};\n\nconst clickAppendOuter = () => {\n emit('click:append-outer');\n};\n\n\nreturn { __sfc: true,props, isFilter, canEditFilter, defaultFilters, customFilters, contactFilters, emit, input, add, edit, duplicate, clickAppendOuter }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactFilterSelect.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ContactFilterSelect.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ContactFilterSelect.vue?vue&type=template&id=59461950&\"\nimport script from \"./ContactFilterSelect.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ContactFilterSelect.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default function nameWithCopyText(text: string, copyText: string = 'copy'): string {\n const trimmed = text.trim();\n\n const regexp = new RegExp(`^(.*)(\\\\s+\\\\(${copyText}(?:\\\\s+(\\\\d+))?\\\\))$`, 'i');\n const matches = trimmed.match(regexp);\n if (matches) {\n // copy text found: (copy) or (copy N)\n const [, name, iscopy, copyNumber] = matches;\n let number = 1;\n\n if (copyNumber) {\n // nomber found: (copy N)\n number = parseInt(copyNumber, 10) + 1;\n }\n\n return `${name} (${copyText} ${number})`;\n }\n\n return `${trimmed} (${copyText})`;\n}\n","\n\nimport Vue from 'vue';\nimport MainToolbar from '@/components/views/main/MainToolbar.vue';\nimport ContactsFilterDialog from '@/components/views/contacts/ContactsFilterDialog.vue';\nimport ContactsMergeDialog from '@/components/views/contacts/ContactsMergeDialog.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport { actionShowError, performAction, performDispatchAction } from '@/services/vue-utils';\nimport GuestbookStore from '@/store/guestbook-store';\nimport Contact from '@/grpc-api/model/contact';\nimport ContactFilter from '@/grpc-api/model/contact-filter';\nimport { cloneModel, toMapById } from '@/model/model-utils';\nimport ContactDetailsDialog from '@/components/views/reservation/ContactDetailsDialog.vue';\nimport ReservationResultsDialog from '@/components/views/reservation/ReservationResultsDialog.vue';\nimport { tryEditReservation } from '@/services/reservation-edit-utils';\nimport Reservation from '@/model/Reservation';\nimport EmployeeDialog from '@/components/views/reservation/EmployeeDialog.vue';\nimport { dialCodeByCountry } from '@/model/Country';\nimport { ApiErrorCode } from '@/api/api-error';\nimport ContactFilterSelect from '@/components/views/contacts/ContactFilterSelect.vue';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\nimport nameWithCopyText from '@/util/copy-name';\n\nexport default Vue.extend({\n name: 'Contacts',\n components: {\n MainToolbar,\n EmployeeDialog,\n ContactsFilterDialog,\n ContactDetailsDialog,\n ContactsMergeDialog,\n ReservationResultsDialog,\n ContactFilterSelect,\n },\n mixins: [],\n data() {\n return {\n // unableToDeleteContactsWarning: false,\n editedContactFilter: null as ContactFilter | null,\n employeeDialogVisible: false,\n employeeDialogSubmitAction: undefined as (() => void) | undefined,\n contactDialogVisible: false,\n mergeDialogVisible: false,\n filterDialogVisible: false,\n reservationsByContactDialog: false,\n selectedContacts: [] as Contact[],\n editedContact: null as Contact | null,\n contactReservations: [] as Reservation[],\n headers: [\n { text: this.$i18n.t('label.name'), align: 'start', value: 'name' },\n { text: this.$i18n.t('label.company'), value: 'companyName' },\n { text: this.$i18n.t('label.email'), value: 'email' },\n { text: this.$i18n.t('label.phone_number'), value: 'phone' },\n { text: this.$i18n.t('label.last_visit'), value: 'lastVisit', filterable: false },\n { text: this.$i18n.t('label.visits'), value: 'visitCount', filterable: false },\n {\n text: '', value: 'actions', width: 80, filterable: false,\n },\n ],\n matchContactCount: null as number | null,\n filterFieldExpanded: false,\n markDuplicities: false,\n sortBy: 'visitCount',\n sortDesc: true,\n colors: [\n '#9e9e9e22',\n '#3355ff22',\n '#E42DD022',\n '#FF3D9422',\n '#FF826222',\n '#FFC24E22',\n '#F9F87122',\n '#88883E22',\n '#00A26F22',\n '#E9002122',\n '#61FBD522',\n '#9D5B0022',\n '#312D4A22',\n '#1A5A5F22',\n '#1F919922',\n '#A92DC822',\n '#6A000F22',\n '#D1C7FF22',\n '#0011A322',\n '#F3738522',\n '#1C1A2722',\n '#938BB722',\n ],\n };\n },\n computed: {\n contacts(): Contact[] {\n // return this.$tstore.getters.guestbookFilteredContacts;\n return this.$tstore.getters.guestbookVisibleContacts;\n },\n contactFilters(): ContactFilter[] {\n return this.$tstore.state.guestbook.contactFilters;\n },\n contactFilter(): ContactFilter {\n return this.$tstore.state.guestbook?.contactFilter ?? null;\n },\n isDefaultFilter(): boolean {\n return this.contactFilter === ContactFilter.DefaultFilter;\n },\n colorsForEmail(): Map {\n const mails = this.$tstore.getters.guestbookDuplicatedMails as string[];\n const colors = new Map();\n mails.forEach((k, i) => colors.set(k, this.colors[i % this.colors.length]));\n return colors;\n },\n colorsForPhone(): Map {\n const phones = this.$tstore.getters.guestbookDuplicatedPhones as string[];\n const colors = new Map();\n phones.forEach((k, i) => colors.set(k, this.colors[i % this.colors.length]));\n return colors;\n },\n contactEmailColors(): Map {\n const colors = new Map();\n this.contacts.forEach((c) => { colors.set(c.id, this.colorsForEmail.get(c.normalizedEmail()) ?? '.'); });\n return colors;\n },\n contactPhoneColors(): Map {\n const countryCode = this.$tstore.state.settings.account.countryCode ?? '';\n const dialCode = dialCodeByCountry.get(countryCode) ?? '';\n const colors = new Map();\n this.contacts.forEach((c) => { colors.set(c.id, this.colorsForPhone.get(c.normalizedPhone(dialCode)) ?? '.'); });\n return colors;\n },\n itemCount(): number {\n const itemCount = this.$tstore.getters.guestbookVisibleCount as number;\n return itemCount;\n },\n searchTerm(): string {\n return this.$tstore.state.guestbook.fullTextFilterQuery;\n },\n isReservationsAllowed(): boolean {\n return this.$tstore.getters.isReservationsAllowed;\n },\n isSettingsAllowed(): boolean {\n return this.$tstore.getters.isSettingsAllowed;\n },\n },\n watch: {\n contactFilter() {\n this.selectedContacts = [];\n },\n },\n created() {\n loadStoreModule(this, 'guestbook', GuestbookStore, async () => { this.load(); });\n },\n async beforeDestroy() {\n unloadStoreModule(this, 'guestbook', async () => { this.$tstore.dispatch('resetGuestbook'); });\n\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('update'),\n );\n },\n methods: {\n async load() {\n if (this.$tstore.getters.isGuestbookLoaded) return;\n await performDispatchAction('loadGuestbook', {}, { streamLoad: true });\n },\n editContact(contact: Contact) {\n this.editedContact = contact;\n this.contactDialogVisible = true;\n },\n createContact(contact: Contact) {\n this.editedContact = new Contact();\n this.contactDialogVisible = true;\n },\n showEmpoyeeDialogIfNeeded(submitAction: ()=>void) {\n const employeeNameIsNeeded = this.$tstore.getters.employeeNameIsNeeded as boolean;\n if (!this.employeeDialogVisible && employeeNameIsNeeded) {\n this.employeeDialogVisible = true;\n this.employeeDialogSubmitAction = submitAction;\n return;\n }\n this.employeeDialogVisible = false;\n submitAction();\n },\n async saveContact(newContact: Contact) {\n const submitAction = async () => {\n const action = newContact.id === 0 ? 'guestbookCreateContact' : 'guestbookUpdateContact';\n const ok = await performDispatchAction(action, { contact: newContact });\n if (!ok) return;\n this.editedContact = null;\n this.contactDialogVisible = false;\n };\n\n if (newContact.id === 0) submitAction();\n else this.showEmpoyeeDialogIfNeeded(submitAction);\n },\n showDeleteContactsConfirmation() {\n showConfirmationDialog(\n this.$i18n.tc('title.delete_contacts'),\n this.$i18n.t('message.confirm_delete_x_contacts', [this.selectedContacts.length]) as string,\n {\n title: this.$i18n.tc('button.ok'),\n action: () => { this.deleteContacts(); },\n },\n { title: this.$i18n.tc('button.cancel') },\n );\n },\n async deleteContacts() {\n const submitAction = async () => {\n const contacts = this.selectedContacts;\n try {\n const ok = await performDispatchAction(\n 'guestbookDeleteContacts',\n { contacts },\n { rethrow: true },\n );\n this.selectedContacts = [];\n } catch (e: any) {\n if (e.code === ApiErrorCode.contact_upcomming_last_visit) {\n showConfirmationDialog(this.$i18n.tc('title.delete_contacts'), e.message);\n } else {\n actionShowError(e);\n }\n }\n };\n this.showEmpoyeeDialogIfNeeded(submitAction);\n },\n async showMergeContacts() {\n const contacts = this.selectedContacts;\n const selectedContacts: Contact[] | null = await performDispatchAction('guestbookSelectedContacts', { contacts });\n if (!selectedContacts || selectedContacts.length < 2) return;\n\n const map = toMapById(selectedContacts);\n this.selectedContacts = this.selectedContacts.flatMap((sc) => map.get(sc.id) ?? []);\n this.mergeDialogVisible = true;\n },\n async mergeContacts(contact: Contact) {\n const submitAction = async () => {\n const contacts = this.selectedContacts;\n const ok = await performDispatchAction('guestbookMergeContacts', { contact, contacts });\n if (!ok) return;\n this.selectedContacts = [];\n this.mergeDialogVisible = false;\n };\n this.showEmpoyeeDialogIfNeeded(submitAction);\n },\n addFilter() {\n this.editedContactFilter = null;\n this.filterDialogVisible = true;\n },\n duplicateFilter() {\n this.editedContactFilter = cloneModel(this.contactFilter);\n this.editedContactFilter.id = 0;\n this.editedContactFilter.name = nameWithCopyText(this.contactFilter.text, this.$i18n.tc('label.copy_of'));\n this.filterDialogVisible = true;\n },\n editFilter() {\n this.editedContactFilter = this.contactFilter;\n this.filterDialogVisible = true;\n },\n selectFilter(filter: ContactFilter) {\n this.selectedContacts = [];\n this.$tstore.dispatch('guestbookApplyContactFilter', { contactFilter: filter });\n },\n resetSelection() {\n this.selectedContacts = [];\n },\n async newContactReservation(contact: Contact) {\n await tryEditReservation(this.$router, undefined, { contact: cloneModel(contact) });\n },\n async listContactReservations(contact: Contact) {\n const reservations = await performDispatchAction('guestbookContactReservations', { contact });\n if (reservations) {\n this.editedContact = contact;\n this.contactReservations = reservations;\n this.reservationsByContactDialog = true;\n }\n },\n // contact filter editor actions\n async saveContactFilter(contactFilter: ContactFilter) {\n const action = contactFilter.id === 0 ? 'guestbookCreateContactFilter' : 'guestbookUpdateContactFilter';\n const changedContactFilter = await performDispatchAction(action, { contactFilter });\n if (!changedContactFilter) return;\n\n this.$tstore.dispatch('guestbookApplyContactFilter', { contactFilter });\n\n this.filterDialogVisible = false;\n },\n async changedContactFilter(contactFilter: ContactFilter) {\n try {\n const count = await this.$tstore.dispatch('guestbookPreviewContactFilter', { contactFilter });\n this.matchContactCount = count ?? null;\n } catch (e) {\n this.matchContactCount = null;\n }\n console.log('changedContactFilter: ', this.matchContactCount);\n },\n async deleteContactFilter(contactFilter: ContactFilter) {\n const action = 'guestbookDeleteContactFilter';\n const changedContactFilter = await performDispatchAction(action, { contactFilter });\n if (changedContactFilter) this.filterDialogVisible = false;\n },\n // pagination\n pagination(p :{\n itemsLength: number,\n itemsPerPage: number\n page: number,\n pageCount: number,\n pageStart: number,\n pageStop: number,\n }) {\n console.log('guestbook pagination: ', p);\n this.selectedContacts = [];\n this.$tstore.dispatch('updateGuestbookPage', { pageSize: p.itemsPerPage, pageStart: p.pageStart });\n },\n updatePage(p: {\n page: number,\n itemsPerPage: number,\n sortBy: string[],\n sortDesc: boolean[],\n groupBy: string[],\n groupDesc: boolean[],\n multiSort: boolean,\n mustSort: boolean,\n }) {\n console.log('guestbook updatePage: ', p);\n // this.$tstore.dispatch('updateGuestbookPage', { pageSize: p.itemsPerPage, pageStart: p.page * p.itemsPerPage });\n },\n updateSortBy(field: string) {\n this.selectedContacts = [];\n this.$tstore.dispatch('updateGuestbookSort', { sortType: field });\n },\n updateSortDesc(desc: boolean) {\n this.selectedContacts = [];\n this.$tstore.dispatch('updateGuestbookSort', { sortDesc: desc });\n },\n noSort(items: Contact[]): Contact[] {\n return items;\n },\n updateSearchTerm(query: string) {\n this.$tstore.dispatch('updateGuestbookFullTextFilter', { query });\n },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Contacts.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Contacts.vue?vue&type=template&id=4c8b68b6&scoped=true&\"\nimport script from \"./Contacts.vue?vue&type=script&lang=ts&\"\nexport * from \"./Contacts.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Contacts.vue?vue&type=style&index=0&id=4c8b68b6&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4c8b68b6\",\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('settings-list',{attrs:{\"name-header-text\":_vm.$i18n.t('label.tag'),\"store-entities\":_vm.$tstore.state.settings.tagNotes,\"on-save\":_vm.save,\"on-add\":_vm.add,\"on-is-changed-change\":_vm.isChangedChange,\"no-data-text\":_vm.$t('label.no_tags')}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"primary\"},on:{\"click\":_vm.add}},[_c('v-icon',[_vm._v(\"mdi-plus\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.add'))+\" \")],1),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('validation-observer',{ref:\"observer\"},[_c('v-data-table',{directives:[{name:\"reorder-table\",rawName:\"v-reorder-table\"}],attrs:{\"headers\":_vm.headers,\"items\":_vm.entities,\"disable-pagination\":\"\",\"mobile-breakpoint\":\"0\",\"no-data-text\":_vm.noDataText,\"hide-default-footer\":\"\"},on:{\"sorted\":_vm.changeOrder},scopedSlots:_vm._u([{key:\"item.id\",fn:function(){return [_c('v-icon',{staticClass:\"reorder-handle\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-arrow-up-down \")])]},proxy:true},{key:\"item.name\",fn:function(props){return [_c('data-table-input-dialog',{attrs:{\"value\":props.item[_vm.nameField],\"rules\":\"required|min:2|max:255\"},on:{\"update:value\":function($event){return _vm.$set(props.item, _vm.nameField, $event)}},model:{value:(props.item[_vm.nameField]),callback:function ($$v) {_vm.$set(props.item, _vm.nameField, $$v)},expression:\"props.item[nameField]\"}})]}},{key:_vm.extraColumnItem,fn:function(props){return [_vm._t(_vm.extraColumnItem,null,{\"props\":props})]}},{key:\"item.actions\",fn:function(props){return [_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.remove(props.item.id)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],1)]}}],null,true)})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport { mapState } from 'vuex';\nimport Sortable from 'sortablejs';\nimport httpClient from '@/api/http-client';\nimport DataTableInputDialog from '@/components/dialogs/DataTableInputDialog.vue';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport {\n IApi,\n IModel,\n cloneModel,\n isModelEqualToModel,\n uniqueMinId,\n} from '@/model/model-utils';\nimport { performSaveAction } from '@/services/vue-utils';\n\nexport default Vue.extend({\n name: 'SettingsList',\n components: { DataTableInputDialog, SettingsForm },\n mixins: [SettingsBreadcrumbs],\n props: {\n extraColumn: { type: Object, required: false, default: null },\n nameHeaderText: { type: String as PropType, required: true },\n noDataText: { type: String, required: true },\n nameField: { type: String as PropType, default: 'text' },\n storeEntities: { type: Array as PropType, required: true },\n onSave: { type: Function as PropType<((entities: IModel[]) => Promise)>, required: true },\n onAdd: { type: Function as PropType<(()=>IModel)>, required: true },\n onIsChangedChange: { type: Function as PropType<((value: boolean)=>IModel) | null>, default: null },\n },\n data() {\n return {\n entities: [] as IModel[],\n oldEntities: [] as IModel[],\n extraColumnItem: this.extraColumn !== null ? `item.${this.extraColumn.value}` : 'fake-column',\n unwatch: Function as (() => void),\n headers: [\n {\n text: '',\n width: '32',\n value: 'id',\n align: 'start',\n sortable: false,\n },\n {\n text: this.nameHeaderText,\n value: 'name',\n align: 'start',\n sortable: false,\n },\n this.extraColumn !== null ? this.extraColumn : { sortable: false },\n {\n text: '',\n width: '32',\n value: 'actions',\n align: 'center',\n sortable: false,\n },\n ],\n breadcrumbs: [],\n };\n },\n computed: {\n isChanged(): boolean {\n return !isModelEqualToModel(this.entities, this.oldEntities);\n },\n },\n watch: {\n isChanged(value: boolean, oldValue: boolean) {\n if (this.onIsChangedChange) { this.onIsChangedChange(value); }\n },\n },\n created() {\n this.unwatch = this.$tstore.watch(\n (state, getters) => getters.isLoaded,\n (newValue, oldValue) => {\n this.reset();\n },\n );\n },\n beforeDestroy() {\n this.unwatch();\n },\n mounted() {\n this.reset();\n },\n methods: {\n changeOrder(event: Sortable.SortableEvent) {\n if (event.oldIndex === undefined || event.newIndex === undefined) return;\n const movedItem = this.entities.splice(event.oldIndex, 1)[0];\n this.entities.splice(event.newIndex, 0, movedItem);\n },\n add() {\n const e = this.onAdd();\n e.id = uniqueMinId(this.entities);\n this.entities.push(e);\n },\n remove(id: number) {\n this.entities = this.entities.filter((o: IModel) => o.id !== id);\n },\n reset() {\n this.oldEntities = this.storeEntities;\n this.entities = this.storeEntities.map((o) => cloneModel(o));\n },\n async save() {\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.onSave(this.entities),\n );\n\n if (ok) {\n this.reset();\n }\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsList.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsList.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsList.vue?vue&type=template&id=39b285c7&\"\nimport script from \"./SettingsList.vue?vue&type=script&lang=ts&\"\nexport * from \"./SettingsList.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport SettingsList from '@/components/views/settings/SettingsList.vue';\nimport TagNote from '@/model/TagNote';\n\nexport default Vue.extend({\n name: 'TagNotes',\n components: { SettingsList },\n mixins: [UnsavedGuard],\n data() { return { changed: false }; },\n computed: {\n // eslint-disable-next-line vue/no-unused-properties\n isChanged(): boolean { return this.changed; },\n },\n methods: {\n async save(entities: TagNote[]) { await this.$tstore.dispatch('sendTagNotes', { entities }); },\n add(): TagNote { return new TagNote(); },\n isChangedChange(changed: boolean) { this.changed = changed; },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagNotes.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TagNotes.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TagNotes.vue?vue&type=template&id=969461ca&\"\nimport script from \"./TagNotes.vue?vue&type=script&lang=ts&\"\nexport * from \"./TagNotes.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-list',{attrs:{\"name-header-text\":_vm.$i18n.t('label.employee_name'),\"store-entities\":_vm.$tstore.state.settings.employees,\"name-field\":\"name\",\"on-save\":_vm.save,\"on-add\":_vm.add,\"on-is-changed-change\":_vm.isChangedChange,\"no-data-text\":_vm.$t('label.no_employee_names')}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport SettingsList from '@/components/views/settings/SettingsList.vue';\nimport Employee from '@/model/Employee';\n\nexport default Vue.extend({\n name: 'Employees',\n components: { SettingsList },\n mixins: [UnsavedGuard],\n data() { return { changed: false }; },\n computed: {\n // eslint-disable-next-line vue/no-unused-properties\n isChanged(): boolean { return this.changed; },\n },\n methods: {\n async save(employees: Employee[]) { await this.$tstore.dispatch('sendEmployees', { entities: employees }); },\n add(): Employee { return new Employee(); },\n isChangedChange(changed: boolean) { this.changed = changed; },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Employees.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Employees.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Employees.vue?vue&type=template&id=c4deb56c&\"\nimport script from \"./Employees.vue?vue&type=script&lang=ts&\"\nexport * from \"./Employees.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-list',{attrs:{\"name-header-text\":_vm.$i18n.t('label.label'),\"store-entities\":_vm.$tstore.state.settings.labels,\"on-save\":_vm.save,\"on-add\":_vm.add,\"on-is-changed-change\":_vm.isChangedChange,\"extra-column\":_vm.extraColumn,\"no-data-text\":_vm.$t('label.no_labels')},scopedSlots:_vm._u([{key:\"item.color\",fn:function({props}){return [_c('color-picker-field',{attrs:{\"show-swatches\":\"\",\"swatches\":_vm.swatches},model:{value:(props.item.color),callback:function ($$v) {_vm.$set(props.item, \"color\", $$v)},expression:\"props.item.color\"}})]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport SettingsList from '@/components/views/settings/SettingsList.vue';\nimport Label from '@/model/Label';\nimport { fullSwatchPalette } from '../helpers/colors';\n\nexport default Vue.extend({\n name: 'Labels',\n components: { SettingsList },\n mixins: [UnsavedGuard],\n data() {\n return {\n changed: false,\n swatches: fullSwatchPalette,\n extraColumn: {\n text: this.$i18n.t('label.color'),\n width: '28',\n align: 'center',\n value: 'color',\n sortable: false,\n isSelectable: false,\n },\n };\n },\n computed: {\n // eslint-disable-next-line vue/no-unused-properties\n isChanged(): boolean { return this.changed; },\n },\n methods: {\n async save(entities: Label[]) { await this.$tstore.dispatch('sendLabels', { entities }); },\n add(): Label { return new Label(); },\n isChangedChange(changed: boolean) { this.changed = changed; },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Labels.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Labels.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Labels.vue?vue&type=template&id=4cbbd200&\"\nimport script from \"./Labels.vue?vue&type=script&lang=ts&\"\nexport * from \"./Labels.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"8\"}},[_c('v-row',[_c('settings-button-block',{attrs:{\"title\":_vm.$t('title.advanced_opening_hours'),\"description\":_vm.$t('label.description_advanced_hours')}},[_c('v-btn',{attrs:{\"block\":_vm.$vuetify.breakpoint.xsOnly,\"color\":\"primary\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$router.push('/settings/simple-hours')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.switch_to_simple_hours'))+\" \")])],1)],1)],1),_c('row-form-divider'),_c('v-col',{staticClass:\"px-0\",attrs:{\"cols\":\"12\"}},[_c('v-tabs',{attrs:{\"show-arrows\":\"\",\"grow\":\"\",\"centered\":\"\"},model:{value:(_vm.dayIndex),callback:function ($$v) {_vm.dayIndex=$$v},expression:\"dayIndex\"}},_vm._l((_vm.days),function(l){return _c('v-tab',{key:`day_tab_${l.value}`},[_vm._v(\" \"+_vm._s(l.text)+\" \")])}),1)],1),_c('v-col',{staticClass:\"pa-0 ma-0 d-flex justify-center\",attrs:{\"cols\":\"12\"}},[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"color\":\"primary\"}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-content-duplicate \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.copy_from'))+\" \")],1)]}}])},[_c('v-list',_vm._l((_vm.days),function(item,i){return _c('v-list-item',{key:`menu_copy_from_${i}`,on:{\"click\":function($event){return _vm.copyFrom(i)}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.text))])],1)}),1)],1)],1),_c('hour-slots-grid',{attrs:{\"hour-slots\":_vm.daySlots,\"profiles\":_vm.profiles},on:{\"profile-selected\":_vm.profileSelected}})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-col',{directives:[{name:\"resize\",rawName:\"v-resize\",value:(_vm.onResize),expression:\"onResize\"}],ref:\"gridRow\",staticClass:\"d-flex justify-center\",staticStyle:{\"flex-flow\":\"wrap\"},attrs:{\"cols\":\"12\"}},[_vm._l((_vm.hourSlots),function(slot,i){return [(i % _vm.itemsPerRow === 0)?_c('div',{key:`flex-break-${i}`,staticClass:\"flex-break-column\"}):_vm._e(),_c('v-btn',{key:`slot_${i}`,ref:`slot_btn_${i}`,refInFor:true,staticClass:\"openinghours-slot-button ma-1 flex-lg-wrap\",style:(`color: ${_vm.textColorForSlot(_vm.colorForSlot(slot))} !important`),attrs:{\"small\":_vm.$vuetify.breakpoint.xsOnly,\"color\":_vm.colorForSlot(slot),\"rounded\":\"\"},on:{\"click\":function($event){return _vm.openMenu(i, $event)}},nativeOn:{\"mousedown\":function($event){$event.stopPropagation();return _vm.slotButtonMouseDown(i, $event)}}},[(slot && slot.isSpecial)?_c('v-icon',{staticClass:\"pr-0\",attrs:{\"color\":\"white\"}},[_vm._v(\" mdi-circle-medium \")]):_vm._e(),(slot && slot.isOpen)?[_vm._v(\" \"+_vm._s(_vm.$localized.hourMinTextFrom24hr(slot.time))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$localized.hourMinTextFrom24hr(_vm.titleForClosedSlot(i)))+\" \")]],2)]}),_c('v-menu',{ref:\"menu\",attrs:{\"bottom\":\"\",\"offset-y\":\"\",\"close-on-click\":true,\"max-height\":\"75%\"}},[_c('v-list',{staticClass:\"py-0\"},[_c('v-list-item',{on:{\"click\":_vm.openMenuItemSelected}},[_c('v-list-item-icon',{staticClass:\"mr-3\"},[_c('v-icon',{attrs:{\"color\":_vm.colors[1]}},[_vm._v(\" mdi-circle \")])],1),_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('label.open')))])],1),_c('v-divider'),_c('v-list-item',{on:{\"click\":_vm.closedMenuItemSelected}},[_c('v-list-item-icon',{staticClass:\"mr-3\"},[_c('v-icon',{attrs:{\"color\":_vm.colors[0]}},[_vm._v(\" mdi-circle \")])],1),_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('label.closed')))])],1),_vm._l((_vm.profiles),function(profile,i){return [_c('v-divider',{key:`${i}_separator`}),_c('v-list-item',{key:`${i}_profile_item`,staticClass:\"mr-5\",staticStyle:{\"width\":\"420px\"},on:{\"click\":function($event){return _vm.menuProfileSelected(profile.id)}}},[_c('v-list-item-icon',{staticClass:\"my-auto mr-3\"},[_c('v-icon',{attrs:{\"color\":_vm.colorForProfileId(profile.id)}},[_vm._v(\" mdi-circle \")])],1),_c('v-list-item-content',{staticClass:\"text-caption pa-0\"},[_c('v-row',{staticClass:\"my-0\"},[(profile.minimumPartySize)?_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('span',{},[_vm._v(_vm._s(_vm.$t('label.min_party_size'))+\": \")]),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(profile.minimumPartySize || _vm.$t('label.option_any')))])]):_vm._e(),(profile.maximumPartySize)?_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.max_party_size'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(profile.maximumPartySize || _vm.$t('label.option_any')))])]):_vm._e(),(profile.maximumGuests)?_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.max_guests_per_time'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(profile.maximumGuests || _vm.$t('label.option_any')))])]):_vm._e(),(profile.maximumReservations)?_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.max_reservations_per_time'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(profile.maximumReservations || _vm.$t('label.option_any')))])]):_vm._e(),(profile.fixedEndingInMinutes)?_c('v-col',{staticClass:\"py-1\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.fixed_ending_time'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(profile.fixedEndingInMinutes || _vm.$t('label.option_any')))])]):_vm._e()],1)],1)],1)]}),_c('v-divider'),_c('v-list-item',{on:{\"click\":_vm.customMenuItemSelected}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('button.different_settings')))])],1),(_vm.enableReset)?_c('v-list-item',{on:{\"click\":_vm.resetMenuItemSelected}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('button.reset_to_default')))])],1):_vm._e()],2)],1),_c('hour-slots-profile-dialog',{attrs:{\"visible\":_vm.newProfileDialog},on:{\"close\":function($event){_vm.newProfileDialog = false},\"save-result\":_vm.customProfileSelected}})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"600px\",\"title\":_vm.$t('title.settings')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('v-form',{ref:\"form\"},[_c('v-row',[_c('v-col',{staticClass:\"pb-0 mb-0\",attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_vm.partySizeList,\"clearable\":\"\",\"label\":_vm.$t('label.min_party_size')},model:{value:(_vm.hs.minimumPartySize),callback:function ($$v) {_vm.$set(_vm.hs, \"minimumPartySize\", $$v)},expression:\"hs.minimumPartySize\"}})],1),_c('v-col',{staticClass:\"pb-0 mb-0\",attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_vm.partySizeList,\"clearable\":\"\",\"label\":_vm.$t('label.max_party_size')},model:{value:(_vm.hs.maximumPartySize),callback:function ($$v) {_vm.$set(_vm.hs, \"maximumPartySize\", $$v)},expression:\"hs.maximumPartySize\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"pb-0 mb-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"items\":_vm.partySizeList,\"clearable\":\"\",\"label\":_vm.$t('label.max_guests_per_time')},model:{value:(_vm.hs.maximumGuests),callback:function ($$v) {_vm.$set(_vm.hs, \"maximumGuests\", $$v)},expression:\"hs.maximumGuests\"}})],1),_c('v-col',{staticClass:\"pb-0 mb-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"items\":_vm.partySizeList,\"clearable\":\"\",\"label\":_vm.$t('label.max_reservations_per_time')},model:{value:(_vm.hs.maximumReservations),callback:function ($$v) {_vm.$set(_vm.hs, \"maximumReservations\", $$v)},expression:\"hs.maximumReservations\"}})],1)],1),_c('v-row',[_c('v-col',{staticClass:\"pb-0 mb-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('v-select',{attrs:{\"items\":_vm.endingTimeList,\"clearable\":\"\",\"label\":_vm.$t('label.fixed_ending_time_min')},model:{value:(_vm.hs.fixedEndingInMinutes),callback:function ($$v) {_vm.$set(_vm.hs, \"fixedEndingInMinutes\", $$v)},expression:\"hs.fixedEndingInMinutes\"}})],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport HourSlot from '@/model/HourSlot';\n\nexport default Vue.extend({\n mixins: [DialogClosable],\n data() {\n return {\n partySizeList: [...new Array(200)].map((e, i) => (i + 1)),\n endingTimeList: [...new Array(24)].map((e, i) => ((i + 1) * 15)),\n hs: new HourSlot(),\n };\n },\n computed: {\n isChanged(): boolean {\n return this.hs.isCustom;\n },\n },\n mounted() {\n },\n methods: {\n close() {\n (this.$refs.form as Vue & { reset: () => void }).reset();\n this.$emit('close');\n },\n cancel() {\n this.close();\n },\n save() {\n this.$emit('save-result', this.hs);\n this.close();\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HourSlotsProfileDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HourSlotsProfileDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HourSlotsProfileDialog.vue?vue&type=template&id=4e7d9b81&\"\nimport script from \"./HourSlotsProfileDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./HourSlotsProfileDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import HourSlot from './HourSlot';\n\nexport default class HourSlotProfile {\n readonly minimumPartySize?: number;\n\n readonly maximumPartySize?: number;\n\n readonly maximumGuests?: number;\n\n readonly maximumReservations?: number;\n\n readonly fixedEndingInMinutes?: number;\n\n readonly id: number;\n\n constructor(o: HourSlot) {\n this.minimumPartySize = o.minimumPartySize;\n this.maximumPartySize = o.maximumPartySize;\n this.maximumGuests = o.maximumGuests;\n this.maximumReservations = o.maximumReservations;\n this.fixedEndingInMinutes = o.fixedEndingInMinutes;\n this.id = o.profileId;\n }\n}\n\nexport function profilesFromHours(hourSlots: (HourSlot | null)[]): Map {\n const profiles = new Map();\n hourSlots.forEach((o) => {\n if (o === null || !o.profileId || profiles.has(o.profileId)) return;\n profiles.set(o.profileId, new HourSlotProfile(o));\n });\n return profiles;\n}\n\nfunction hashCode(s: string): number {\n let h = 0xdeadbeef;\n // eslint-disable-next-line no-bitwise\n for (let i = 0; i < s.length; i += 1) { h = Math.imul(h ^ s.charCodeAt(i), 2654435761); } return (h ^ h >>> 16) >>> 0;\n}\n\nexport function colorsForProfiles(profiles: HourSlotProfile[], colors: string[]): Map {\n const profileForColorIndex = new Map();\n const colorsByProfileId = new Map();\n\n // 1st round\n profiles.forEach((p) => {\n const colorIndex = hashCode(String(p.id)) % colors.length;\n if (profileForColorIndex.has(colorIndex)) return;\n profileForColorIndex.set(colorIndex, p);\n colorsByProfileId.set(p.id, colors[colorIndex]);\n });\n\n const remainingProfiles = profiles.filter((p) => !colorsByProfileId.has(p.id));\n const remainingColors = colors.filter((c) => !Array.from(colorsByProfileId.values()).includes(c));\n\n // 2nd round\n while (remainingProfiles.length && remainingColors.length) {\n colorsByProfileId.set(remainingProfiles.pop()!.id, remainingColors.pop()!);\n }\n\n // 3rd round\n remainingProfiles.forEach((p) => {\n const colorIndex = hashCode(String(p.id)) % colors.length;\n colorsByProfileId.set(p.id, colors[colorIndex]);\n });\n\n return colorsByProfileId;\n}\n","\nimport Vue, { PropType } from 'vue';\nimport HourSlotsProfileDialog from '@/components/views/settings/HourSlotsProfileDialog.vue';\nimport HourSlot from '@/model/HourSlot';\nimport HourSlotProfile, { colorsForProfiles } from '@/model/HourSlotProfile';\nimport { niceTimeTextFromSlot } from '@/services/time-utils';\nimport { contrastForColor } from '@/services/color-utils';\n\nexport const HourSlotMenuItemType = {\n CLOSED: 0, OPEN: 1, CUSTOM: 2, CUSTOM_NEW: 3, RESET: 4,\n};\n\nexport default Vue.extend({\n components: { HourSlotsProfileDialog },\n props: {\n hourSlots: { type: Array as PropType<(HourSlot | null)[]>, required: true },\n profiles: { type: Array as PropType, required: true },\n enableReset: { type: Boolean as PropType, required: false, default: false },\n },\n data() {\n return {\n gridWidth: 0,\n activeSlotIndex: 0,\n newProfileDialog: false,\n hourSlot: new HourSlot(),\n colors: [\n '#9e9e9e',\n '#3355ff',\n '#E42DD0',\n '#FF3D94',\n '#FF8262',\n '#FFC24E',\n '#F9F871',\n '#88883E',\n '#00A26F',\n '#E90021',\n '#61FBD5',\n '#9D5B00',\n '#312D4A',\n '#1A5A5F',\n '#1F9199',\n '#A92DC8',\n '#6A000F',\n '#D1C7FF',\n '#0011A3',\n '#F37385',\n '#1C1A27',\n '#938BB7',\n ],\n };\n },\n computed: {\n itemsPerRow(): number {\n return this.gridWidth > 750 ? 8 : 4;\n },\n colorsByProfileId(): Map {\n return colorsForProfiles(this.profiles, this.colors.slice(2));\n },\n },\n watch: { },\n methods: {\n titleForClosedSlot(slotNr: number): string {\n return niceTimeTextFromSlot(slotNr + 24);\n },\n colorForProfileId(profileId: number): string | undefined {\n return this.colorsByProfileId.get(profileId);\n },\n colorForSlot(slot: HourSlot | null) {\n if (!slot || !slot.isOpen) return 'grey';\n if (slot.profileId) return this.colorForProfileId(slot.profileId);\n return 'blue';\n },\n slotButtonMouseDown(slotNr: number) {\n const btn = (this.$refs[`slot_btn_${slotNr}`] as any)[0] as Vue;\n (this.$refs.menu as any).activator = btn.$el;\n },\n onResize() {\n this.gridWidth = (this.$refs.gridRow as HTMLElement)?.clientWidth || 0;\n },\n openMenu(slotIndex: number) {\n this.activeSlotIndex = slotIndex;\n this.$emit('timeslot-selected', slotIndex);\n },\n openMenuItemSelected() {\n this.$emit('profile-selected', this.activeSlotIndex, HourSlotMenuItemType.OPEN);\n },\n closedMenuItemSelected() {\n this.$emit('profile-selected', this.activeSlotIndex, HourSlotMenuItemType.CLOSED);\n },\n customMenuItemSelected() {\n this.newProfileDialog = true;\n },\n resetMenuItemSelected(type: number) {\n this.$emit('profile-selected', this.activeSlotIndex, HourSlotMenuItemType.RESET);\n },\n customProfileSelected(hourSlot: HourSlot) {\n this.$emit('profile-selected', this.activeSlotIndex, HourSlotMenuItemType.CUSTOM_NEW, hourSlot);\n this.hourSlot.clearParams();\n },\n menuProfileSelected(profileId: number) {\n this.$emit('profile-selected', this.activeSlotIndex, HourSlotMenuItemType.CUSTOM, profileId);\n },\n textColorForSlot(color: string): string {\n return contrastForColor(color);\n },\n },\n});\n","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport GuestsAllocationsDialog from '@/components/views/settings/GuestsAllocationsDialog.vue';\nimport TableCombinationDialog from '@/components/views/settings/TableCombinationDialog.vue';\nimport Tab from '@/model/Tab';\nimport Allocation from '@/model/Allocation';\n\ntype Item = { partySize: number, allocationsCount: number, isError: boolean };\n\nexport enum AllocationsDialogMode {\n AllowedAllocations,\n DisallowedAllocations,\n}\n\nexport default Vue.extend({\n name: 'TabAllocationsDialog',\n components: { GuestsAllocationsDialog, TableCombinationDialog },\n mixins: [DialogClosable],\n props: {\n mode: { type: Number as PropType, required: true },\n },\n data() {\n return {\n headers: [\n {\n text: this.$i18n.t('label.party_size'),\n value: 'partySize',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.allocations'),\n value: 'allocationsCount',\n align: 'end',\n sortable: false,\n },\n ],\n addTableCombinationDialog: false,\n guestsDialog: false,\n // maxPartySize: 0,\n guestsPartySize: 0,\n };\n },\n computed: {\n title(): string {\n switch (this.mode) {\n case AllocationsDialogMode.AllowedAllocations: return this.$i18n.tc('button.preferred_allocations');\n case AllocationsDialogMode.DisallowedAllocations: return this.$i18n.tc('button.disallowed_allocations');\n default: return 'N/A';\n }\n },\n allocationsByPartySize(): Map {\n switch (this.mode) {\n case AllocationsDialogMode.AllowedAllocations:\n return this.$tstore.getters.allowedAllocationsByPartySize;\n case AllocationsDialogMode.DisallowedAllocations:\n return this.$tstore.getters.disallowedAllocationsByPartySize;\n default: return new Map();\n }\n },\n items(): Item[] {\n const items: Item[] = [];\n for (let partySize = 1; partySize <= this.maxPartySize; partySize += 1) {\n const allocations = this.allocationsByPartySize.get(partySize) ?? [];\n const isError = this.isErrorWithinAllocations(allocations);\n items.push({ partySize, isError, allocationsCount: allocations.length });\n }\n return items;\n },\n maxPartySize(): number {\n return Math.max(...this.allocationsByPartySize.keys(), 0);\n },\n },\n watch: {\n },\n methods: {\n add() {\n this.addTableCombinationDialog = true;\n },\n close() {\n this.$emit('close');\n },\n closeTableCombinationDialog() {\n this.addTableCombinationDialog = false;\n },\n editAllocations(item: Item) {\n if (item.allocationsCount === 0) { return; }\n this.guestsDialog = true;\n this.guestsPartySize = item.partySize;\n },\n isErrorWithinAllocations(allocations: Allocation[]): boolean {\n const map = new Set();\n return !allocations.every((o) => (\n map.has(o.tableIdsString) || o.isError ? false : map.add(o.tableIdsString)), true);\n },\n dtClassForItem(item: Item) {\n if (item.allocationsCount === 0) {\n return 'disabled-table-row grey--text';\n }\n return 'clickable-table';\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HourSlotsGrid.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HourSlotsGrid.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HourSlotsGrid.vue?vue&type=template&id=6a9aec2a&scoped=true&\"\nimport script from \"./HourSlotsGrid.vue?vue&type=script&lang=ts&\"\nexport * from \"./HourSlotsGrid.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HourSlotsGrid.vue?vue&type=style&index=0&id=6a9aec2a&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6a9aec2a\",\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('v-row',{class:_vm.contentClass},[_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('h3',[_vm._v(_vm._s(_vm.title))])]),_c('v-col',{staticClass:\"grow py-0\"},[_c('p',[_vm._v(\" \"+_vm._s(_vm.description)+\" \")])]),(_vm.$vuetify.breakpoint.xsOnly)?_c('v-col',{staticClass:\"my-0 py-0\",staticStyle:{\"height\":\"1px\"},attrs:{\"cols\":\"12\"}},[_vm._v(\"   \")]):_vm._e(),_c('v-col',{class:[{'shrink': _vm.$vuetify.breakpoint.smAndUp}, 'py-0 pb-4 pb-md-0']},[_c('p',{staticClass:\"mb-0\"},[_vm._t(\"default\")],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'SettingsButtonBlock',\n props: {\n title: { type: [String, Object] as PropType, required: true },\n description: { type: [String, Object] as PropType, required: true },\n contentClass: { type: [String, Object] as PropType, required: false, default: 'pa-3' },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nreturn { __sfc: true,props }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsButtonBlock.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SettingsButtonBlock.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./SettingsButtonBlock.vue?vue&type=template&id=3b58e473&\"\nimport script from \"./SettingsButtonBlock.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./SettingsButtonBlock.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport HourSlotsGrid, { HourSlotMenuItemType } from '@/components/views/settings/HourSlotsGrid.vue';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport HourSlot from '@/model/HourSlot';\nimport HourSlotProfile, { profilesFromHours } from '@/model/HourSlotProfile';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport {\n DAY_TIME_SLOTS_COUNT, MORNING_TIME_SLOTS_COUNT, timeIndexFromSlot, weekdayNumberFromDateDay,\n} from '@/services/time-utils';\nimport OpeningHour from '@/model/OpeningHour';\nimport SettingsButtonBlock from '@/components/forms/SettingsButtonBlock.vue';\n\nexport default Vue.extend({\n components: {\n SettingsForm, HourSlotsGrid, SettingsButtonBlock,\n },\n mixins: [UnsavedGuard, SettingsBreadcrumbs],\n data() {\n return {\n breadcrumbs: [],\n hours: [] as OpeningHour[],\n oldHours: [] as OpeningHour[],\n dayIndex: 0,\n unwatch: Function as (() => void),\n };\n },\n computed: {\n weekdayNumber(): number {\n return weekdayNumberFromDateDay(this.days[this.dayIndex].value);\n },\n isChanged(): boolean {\n return !isModelEqualToModel(this.hours, this.oldHours);\n },\n daySlots(): (OpeningHour | null)[] {\n const ohmap = new Map();\n this.hours.forEach((o) => { if (o.weekdayNumber === this.weekdayNumber) ohmap.set(o.timeIndex, o); });\n\n const slots: (OpeningHour|null)[] = [];\n for (let si = MORNING_TIME_SLOTS_COUNT; si < DAY_TIME_SLOTS_COUNT; si += 1) {\n const ti = timeIndexFromSlot(si);\n const oh = ohmap.get(ti) ?? null;\n slots.push(oh);\n }\n\n return slots;\n },\n days(): {value: number, text:string}[] {\n return this.$localized.longWeekdays();\n },\n profilesById(): Map {\n return profilesFromHours(this.hours);\n },\n profiles(): HourSlotProfile[] {\n return Array.from(this.profilesById.values());\n },\n },\n watch: {\n\n },\n created() {\n this.unwatch = this.$tstore.watch((state, getters) => getters.isLoaded, (newValue, oldValue) => {\n this.reset();\n });\n },\n beforeDestroy() {\n this.unwatch();\n },\n destroyed() {},\n mounted() {\n this.reset();\n },\n methods: {\n profileSelected(hourIndex: number, type: number, IDOrHourSlot: number | HourSlot) {\n const slotIndex = hourIndex + MORNING_TIME_SLOTS_COUNT;\n const timeIndex = timeIndexFromSlot(slotIndex);\n const index = this.hours.findIndex((o) => o.weekdayNumber === this.weekdayNumber && o.timeIndex === timeIndex);\n const hour = OpeningHour.fromWeekdayAndSlot(this.weekdayNumber, slotIndex);\n let profile: HourSlotProfile | undefined;\n\n switch (type) {\n case HourSlotMenuItemType.CLOSED:\n // closed - remove opening hour and return!\n if (index >= 0) this.hours.splice(index, 1);\n return;\n case HourSlotMenuItemType.OPEN:\n // just open - use empty hour\n break;\n case HourSlotMenuItemType.CUSTOM:\n // existing custom - fill and use hour from existing profile\n profile = this.profilesById.get(IDOrHourSlot as number);\n hour.setParams(profile ?? {});\n break;\n case HourSlotMenuItemType.CUSTOM_NEW:\n // new custom - fill and use hour from values\n hour.setParams(IDOrHourSlot as HourSlot);\n break;\n default:\n break;\n }\n\n // use hour\n if (index >= 0) this.hours[index] = hour;\n else this.hours.push(hour);\n this.hours = this.hours.sort((o1, o2) => o1.order - o2.order);\n },\n copyFrom(dayIndex: number) {\n const weekdayNumber = weekdayNumberFromDateDay(this.days[dayIndex].value);\n const newHours = this.hours.filter((o) => o.weekdayNumber !== this.weekdayNumber);\n const dayHours = this.hours.filter((o) => o.weekdayNumber === weekdayNumber);\n\n const newDayHours = dayHours.map((o) => {\n const no = cloneModel(o);\n no.weekdayNumber = this.weekdayNumber;\n return no;\n });\n newHours.push(...newDayHours);\n\n this.hours = newHours.sort((o1, o2) => o1.order - o2.order);\n },\n reset() {\n this.oldHours = this.$tstore.state.settings.openingHours;\n this.hours = this.oldHours.map((o) => cloneModel(o));\n },\n async save() {\n const entities = this.hours;\n\n const ok = await performSaveAction(\n undefined,\n async () => this.$tstore.dispatch('sendOpeningHours', { entities }),\n );\n\n if (ok) {\n this.reset();\n }\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpeningHours.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OpeningHours.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./OpeningHours.vue?vue&type=template&id=47b1243f&scoped=true&\"\nimport script from \"./OpeningHours.vue?vue&type=script&lang=ts&\"\nexport * from \"./OpeningHours.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./OpeningHours.vue?vue&type=style&index=0&id=47b1243f&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"47b1243f\",\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('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"s\":\"\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.submit}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"8\"}},[_c('v-row',[_c('settings-button-block',{attrs:{\"title\":_vm.$t('title.simple_opening_hours'),\"description\":_vm.$t('label.description_simple_hours')}},[_c('v-btn',{attrs:{\"block\":_vm.$vuetify.breakpoint.xsOnly,\"color\":\"primary\",\"outlined\":\"\"},on:{\"click\":function($event){return _vm.$router.push('/settings/hours')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.switch_to_advanced_hours'))+\" \")])],1),_c('row-form-divider'),_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('v-select',{staticClass:\"pb-0\",attrs:{\"items\":_vm.bookingIntervals,\"label\":_vm.$t('label.booking_interval')},on:{\"input\":_vm.bookingIntervalChanged},model:{value:(_vm.bookingInterval),callback:function ($$v) {_vm.bookingInterval=$$v},expression:\"bookingInterval\"}})],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_vm._l((_vm.days),function(day,i){return [_c('v-row',{key:`day_${i}`,staticClass:\"row py-2 d-flex my-2\"},[_c('v-col',{staticClass:\"pa-0 d-flex align-center flex-grow-0 pl-5\"},[_c('v-checkbox',{staticClass:\"pa-0 ma-0\",attrs:{\"input-value\":_vm.open[day.value],\"hide-details\":\"\"},on:{\"change\":(open) => _vm.changeOpen(day.value, open)}})],1),_c('v-col',{class:[\n 'py-0 py-0 d-flex align-center',\n `${_vm.open[day.value] ? 'text--primary' : 'text--secondary'}`],staticStyle:{\"max-width\":\"50px\"}},[_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(day.text))])]),_c('v-col',{staticClass:\"py-0 py-0 flex-grow-1\"},[_c('v-range-slider',{attrs:{\"value\":_vm.slots[day.value],\"disabled\":!_vm.open[day.value],\"min\":24,\"max\":96,\"step\":_vm.slotStep,\"track-color\":\"grey lighten-1\",\"hide-details\":\"\"},on:{\"input\":(bounds) => _vm.changeSlot(day.value, bounds)}})],1),_c('v-col',{class:[\n 'pa-0 ma-0 d-flex align-center',\n `${_vm.open[day.value] ? 'text--primary' : 'text--secondary'}`],staticStyle:{\"min-width\":\"120px\"},attrs:{\"cols\":\"2\"}},[(_vm.open[day.value])?[_vm._v(\" \"+_vm._s(_vm.timeFromSlot(_vm.slots[day.value][0]))+\" - \"+_vm._s(_vm.timeFromSlot(_vm.slots[day.value][1]))+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t('label.closed'))+\" \")]],2)],1)]})],2)],1)],1)],1)]},proxy:true}])},[(_vm.customHoursConfirmation)?_c('confirmation-dialog',{attrs:{\"visible\":_vm.customHoursConfirmation,\"message\":_vm.$t('message.confirm_overwrite_hours'),\"confirm-title\":_vm.$t('button.save'),\"cancel-title\":_vm.$t('button.cancel')},on:{\"confirm\":_vm.save,\"close\":function($event){_vm.customHoursConfirmation = false}}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { isModelEqualToModel } from '@/model/model-utils';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport { niceTimeTextFromSlot, weekdayNumberFromDateDay } from '@/services/time-utils';\nimport OpeningHour from '@/model/OpeningHour';\nimport {\n guessIntervalFromHoursInWeekdays,\n hoursFromSimpleHoursInWeekdays, isOnlySimpleHours, openingHoursToSimpleHoursInWeekdays, roundedSimpleHoursInWeekdays,\n SimpleHour,\n} from '@/services/hours-utils';\nimport SettingsButtonBlock from '../forms/SettingsButtonBlock.vue';\n\nexport default Vue.extend({\n components: {\n SettingsForm,\n SettingsButtonBlock,\n },\n mixins: [UnsavedGuard, SettingsBreadcrumbs],\n data() {\n return {\n breadcrumbs: [],\n oldHours: [] as OpeningHour[],\n bookingInterval: 15,\n bookingIntervals: [\n { text: this.$i18n.t('label.15_minutes'), value: 15 },\n { text: this.$i18n.t('label.30_minutes'), value: 30 },\n ],\n simpleHoursInWeekdays: [] as SimpleHour[], // in weekdays - starting from 1 (Mon === 1, Tue === 2, ....)\n unwatch: Function as (() => void),\n customHoursConfirmation: false,\n };\n },\n computed: {\n isChanged(): boolean {\n return !isModelEqualToModel(this.hours, this.oldHours);\n },\n days(): {value: number, text: string}[] {\n return this.$localized.weekdays();\n },\n is30minInterval(): boolean {\n return this.bookingInterval === 30;\n },\n slotStep(): number {\n return this.bookingInterval === 30 ? 2 : 1;\n },\n open(): boolean[] {\n return Array.from({ length: this.days.length }, (x, day) => {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber] ?? new SimpleHour();\n return sh.isOpen ?? false;\n });\n },\n slots(): number[][] {\n return Array.from({ length: this.days.length }, (x, day) => {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber] ?? new SimpleHour();\n return [sh.beginSlot, sh.endSlot];\n });\n },\n hours(): OpeningHour[] {\n return hoursFromSimpleHoursInWeekdays(this.simpleHoursInWeekdays, this.is30minInterval);\n },\n },\n created() {\n this.reset();\n this.unwatch = this.$tstore.watch((state, getters) => getters.isLoaded, (newValue, oldValue) => { this.reset(); });\n },\n beforeDestroy() {\n this.unwatch();\n },\n destroyed() {},\n mounted() {\n this.reset();\n },\n methods: {\n reset() {\n this.oldHours = this.$tstore.state.settings.openingHours;\n const hourMaps = this.$tstore.getters.openingHoursInWeekdaysByTimeIndex as Map[];\n\n const simpleHoursInWeekdays = openingHoursToSimpleHoursInWeekdays(hourMaps, this.is30minInterval);\n this.simpleHoursInWeekdays = simpleHoursInWeekdays;\n\n const bookingInterval = guessIntervalFromHoursInWeekdays(hourMaps);\n this.bookingInterval = bookingInterval;\n },\n changeSlot(day: number, slots: number[]) {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber];\n [sh.beginSlot, sh.endSlot] = [...slots];\n },\n changeOpen(day: number, open: boolean) {\n const weekdayNumber = weekdayNumberFromDateDay(day);\n const sh = this.simpleHoursInWeekdays[weekdayNumber];\n sh.isOpen = open;\n },\n bookingIntervalChanged(interval: number) {\n if (!this.is30minInterval) return;\n this.simpleHoursInWeekdays = roundedSimpleHoursInWeekdays(this.simpleHoursInWeekdays);\n },\n async submit() {\n const isSimple = isOnlySimpleHours(this.$tstore.getters.openingHoursInWeekdaysByTimeIndex);\n if (isSimple) this.save();\n else this.customHoursConfirmation = true;\n },\n\n async save() {\n const entities = this.hours;\n\n const ok = await performSaveAction(\n undefined,\n async () => this.$tstore.dispatch('sendOpeningHours', { entities }),\n );\n\n if (ok) {\n this.reset();\n }\n },\n timeFromSlot(slot: number): string {\n return this.$localized.hourMinTextFrom24hr(niceTimeTextFromSlot(slot)) || '';\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SimpleOpeningHours.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SimpleOpeningHours.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SimpleOpeningHours.vue?vue&type=template&id=64bf1253&scoped=true&\"\nimport script from \"./SimpleOpeningHours.vue?vue&type=script&lang=ts&\"\nexport * from \"./SimpleOpeningHours.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SimpleOpeningHours.vue?vue&type=style&index=0&id=64bf1253&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"64bf1253\",\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('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"primary\"},on:{\"click\":_vm.showNewSection}},[_c('v-icon',[_vm._v(\"mdi-plus\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.add'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('input-dialog',{attrs:{\"title\":_vm.$t('title.add_section'),\"label-title\":_vm.$t('label.section_name'),\"visible\":_vm.newSectionDialog,\"rules\":\"required|min:2|max:255\"},on:{\"confirm\":_vm.add,\"close\":function($event){_vm.newSectionDialog = false}},model:{value:(_vm.newSectionName),callback:function ($$v) {_vm.newSectionName=$$v},expression:\"newSectionName\"}}),_c('validation-observer',{ref:\"observer\"},[_c('v-data-table',{directives:[{name:\"reorder-table\",rawName:\"v-reorder-table\"}],staticClass:\"clickable-table\",attrs:{\"headers\":_vm.headers,\"items\":_vm.sections,\"disable-pagination\":\"\",\"mobile-breakpoint\":\"0\",\"hide-default-footer\":\"\"},on:{\"click:row\":_vm.edit,\"sorted\":_vm.changeOrder},scopedSlots:_vm._u([{key:\"item.id\",fn:function(){return [_c('v-icon',{staticClass:\"reorder-handle\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-arrow-up-down \")])]},proxy:true},{key:\"item.isOnline\",fn:function(props){return [(props.item.usingWeekdaysAndTimes)?_c('v-chip',{attrs:{\"color\":\"success\",\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.online'))+\" \")]):_vm._e(),(!props.item.usingWeekdaysAndTimes)?_c('v-chip',{attrs:{\"color\":\"gray\",\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.offline'))+\" \")]):_vm._e()]}}])})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport Sortable from 'sortablejs';\nimport { isModelEqualToModel, IModel, cloneModel } from '@/model/model-utils';\nimport { performSaveAction, confirmLeaveWithoutSaving } from '@/services/vue-utils';\nimport Tab from '@/model/Tab';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport InputDialog from '@/components/dialogs/InputDialog.vue';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\n\nexport default Vue.extend({\n name: 'Sections',\n components: { InputDialog, SettingsForm },\n mixins: [SettingsBreadcrumbs],\n data() {\n return {\n newSectionDialog: false,\n newSectionName: '',\n sections: [] as Tab[],\n oldSections: [] as Tab[],\n unwatch: Function as (() => void),\n breadcrumbs: [],\n headers: [\n {\n text: '',\n width: '32',\n value: 'id',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.tab_name'),\n value: 'name',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.online'),\n width: '32',\n value: 'isOnline',\n align: 'start',\n sortable: false,\n },\n ],\n };\n },\n computed: { },\n created() {\n this.unwatch = this.$tstore.watch((state, getters) => getters.isLoaded, (newValue, oldValue) => {\n this.reset();\n });\n },\n beforeDestroy() {\n this.unwatch();\n },\n mounted() {\n this.reset();\n },\n methods: {\n changeOrder(event: Sortable.SortableEvent) {\n if (event.oldIndex === undefined || event.newIndex === undefined) return;\n const movedItem = this.sections.splice(event.oldIndex, 1)[0];\n this.sections.splice(event.newIndex, 0, movedItem);\n this.save();\n },\n async save() {\n const entities = this.sections;\n await performSaveAction(\n this.$refs.observer,\n async () => this.$tstore.dispatch('sendTabs', { entities }),\n );\n this.reset();\n },\n showNewSection() {\n this.reset();\n this.newSectionDialog = true;\n this.newSectionName = '';\n },\n async add(newSectionName: string) {\n const section = new Tab();\n section.name = newSectionName;\n const entities = this.$tstore.state.settings.tabs.map((o) => cloneModel(o));\n entities.push(section);\n\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.$tstore.dispatch('sendTabs', { entities }),\n );\n if (ok) {\n this.reset();\n const newSection = this.sections.filter((o) => o.name === newSectionName).pop();\n if (newSection) this.edit(newSection);\n } else {\n this.newSectionDialog = true;\n }\n },\n edit(section: Tab) {\n this.$router.push(`/settings/sections/${section.id}`);\n },\n reset() {\n const { tabs } = this.$tstore.state.settings;\n this.oldSections = tabs;\n this.sections = tabs.map((o) => cloneModel(o));\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sections.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sections.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Sections.vue?vue&type=template&id=5144697e&\"\nimport script from \"./Sections.vue?vue&type=script&lang=ts&\"\nexport * from \"./Sections.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.SettingsForm,{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs(_setup.section.name || _vm.$t('label.section'))},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_setup.isChanged},on:{\"click\":_setup.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"error\",\"disabled\":_setup.isNew},on:{\"click\":function($event){_setup.deleteConfirmation = true}}},[_c('v-icon',[_vm._v(\"mdi-delete\")]),_c('span',{staticClass:\"d-none d-lg-block\"},[_vm._v(_vm._s(_vm.$t('button.delete_section')))])],1)]},proxy:true},{key:\"content\",fn:function(){return [_c(_setup.TabAllocationsDialog,{attrs:{\"visible\":_setup.allocationsDialog,\"mode\":_setup.allocationsDialogMode},on:{\"close\":function($event){_setup.allocationsDialog = false}}}),_c(_setup.ConfirmationDialog,{attrs:{\"visible\":_setup.deleteConfirmation,\"message\":_vm.$t('message.confirm_delete_section')},on:{\"confirm\":_setup.remove,\"close\":function($event){_setup.deleteConfirmation = false}}}),_c(_setup.TablesDialog,{attrs:{\"visible\":_setup.tablesDialog,\"tab\":_setup.section},on:{\"close\":function($event){return _setup.closeDialogs()}}}),_c(_setup.FloorplanEditDialog,{attrs:{\"visible\":_setup.floorplanDialog,\"tab\":_setup.section},on:{\"close\":function($event){return _setup.closeDialogs()}}}),_c(_setup.DurationRulesDialog,{attrs:{\"visible\":_setup.durationRulesDialog,\"section\":_setup.section},on:{\"close\":function($event){_setup.durationRulesDialog = false}}}),_c(_setup.ValidationObserver,{ref:\"observerRef\"},[_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('title.edit_section'),\"subtitle\":_vm.$t('settings.section.edit_section_subtitle'),\"gutter\":\"\"}},[_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"label\":_vm.$t('label.section_name'),\"rules\":\"required|min:2|max:255\"},model:{value:(_setup.section.name),callback:function ($$v) {_vm.$set(_setup.section, \"name\", $$v)},expression:\"section.name\"}})],1),(_setup.section.usingWeekdaysAndTimes)?_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"subheading v-label mb-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.online_capacity'))+\" \")]),_c('v-slider',{staticClass:\"align-center\",attrs:{\"disabled\":!_setup.section.usingWeekdaysAndTimes || _setup.maxCapacity === 0,\"max\":_setup.maxCapacitySlider,\"min\":\"0\",\"inverse-label\":\"\",\"label\":_setup.section.capacity !== 0 ? _setup.section.capacity : '0',\"hide-details\":\"\"},model:{value:(_setup.section.capacity),callback:function ($$v) {_vm.$set(_setup.section, \"capacity\", $$v)},expression:\"section.capacity\"}})],1):_vm._e(),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"py-0\",attrs:{\"label\":_vm.$t('label.online'),\"hide-details\":\"\"},on:{\"change\":_setup.updateCapacity},model:{value:(_setup.section.usingWeekdaysAndTimes),callback:function ($$v) {_vm.$set(_setup.section, \"usingWeekdaysAndTimes\", $$v)},expression:\"section.usingWeekdaysAndTimes\"}})],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.tables'),\"subtitle\":_vm.$t('settings.section.tables_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-btn',{staticClass:\"my-1\",attrs:{\"outlined\":\"\",\"block\":\"\",\"color\":\"primary\",\"disabled\":_setup.isNew},on:{\"click\":function($event){_setup.tablesDialog = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.setup_tables'))+\" \")])],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-btn',{staticClass:\"my-1\",attrs:{\"outlined\":\"\",\"block\":\"\",\"disabled\":_setup.isNew,\"color\":\"primary\"},on:{\"click\":function($event){_setup.floorplanDialog = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.setup_floorplan'))+\" \")])],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.allocations'),\"subtitle\":_vm.$t('settings.section.allocations_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"12\"}},[_c('v-btn',{staticClass:\"my-1\",attrs:{\"outlined\":\"\",\"block\":\"\",\"disabled\":_setup.isNew,\"color\":\"primary\"},on:{\"click\":_setup.showAllowedAllocationsDialog}},[_vm._v(\" \"+_vm._s(_vm.$t('button.preferred_allocations'))+\" \")]),_c('div',{staticClass:\"d-inline ml-5\"}),_c('v-btn',{staticClass:\"my-1\",attrs:{\"outlined\":\"\",\"block\":\"\",\"disabled\":_setup.isNew,\"color\":\"primary\"},on:{\"click\":_setup.showDisallowedAllocationsDialog}},[_vm._v(\" \"+_vm._s(_vm.$t('button.disallowed_allocations'))+\" \")])],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.seating_time'),\"subtitle\":_vm.$t('settings.section.seating_time_subtitle'),\"gutter\":\"\"}},[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-select',{attrs:{\"items\":_setup.seatingTimes,\"label\":_vm.$t('label.default_seating_time')},on:{\"input\":_setup.changeSeatingTime},model:{value:(_setup.section.duration),callback:function ($$v) {_vm.$set(_setup.section, \"duration\", $$v)},expression:\"section.duration\"}})],1),_c('v-col',{staticClass:\"text-center pt-0 pb-5 pb-md-0 pt-sm-1\",attrs:{\"sm\":\"6\",\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"block\":\"\",\"color\":\"primary\",\"disabled\":_setup.isNew},on:{\"click\":function($event){_setup.durationRulesDialog = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.setup_additional_seating_time'))+\" \")])],1),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"items\":_setup.minSeatingTimes,\"label\":_vm.$t('label.min_seating_time')},model:{value:(_setup.section.minDuration),callback:function ($$v) {_vm.$set(_setup.section, \"minDuration\", $$v)},expression:\"section.minDuration\"}})],1),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"items\":_setup.bookingCaps,\"label\":_vm.$t('label.booking_cap')},model:{value:(_setup.section.bookingCap),callback:function ($$v) {_vm.$set(_setup.section, \"bookingCap\", $$v)},expression:\"section.bookingCap\"}})],1)],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"content-class\":\"dialog-height-60\",\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"600px\",\"title\":_vm.$t('title.edit_duration_rule')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.add}},[_vm._v(\" \"+_vm._s(_vm.$t('button.add_new_rule'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.done}},[_vm._v(\" \"+_vm._s(_vm.$t('button.done'))+\" \")])]},proxy:true}])},[_c('confirmation-dialog',{attrs:{\"visible\":_vm.deleteConfirmation,\"message\":_vm.$t('message.confirm_delete_rule')},on:{\"confirm\":_vm.deleteRule,\"close\":function($event){_vm.deleteConfirmation = false}}}),_c('edit-duration-rule-dialog',{attrs:{\"visible\":_vm.editRuleDialog,\"duration-rule\":_vm.editedRule},on:{\"close\":_vm.closeEditRuleDialog}}),_c('v-data-table',{staticClass:\"clickable-table\",attrs:{\"headers\":_vm.headers,\"items\":_vm.rules,\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"no-data-text\":_vm.$t('label.no_seating_time_rules')},on:{\"click:row\":_vm.edit},scopedSlots:_vm._u([{key:\"item.partySizeFrom\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.$t('label.from_x_to_x_guests', [props.item['partySizeFrom'], props.item['partySizeTo']]))+\" \")]}},{key:\"item.timeFrom\",fn:function(props){return [(props.item['timeFrom'] !== '')?[_vm._v(\" \"+_vm._s(`${_vm.$localized.hourMinTextFrom24hr(props.item['timeFrom'])} - ${_vm.$localized.hourMinTextFrom24hr(props.item['timeTo'])}`)+\" \")]:[_vm._v(\" \"+_vm._s(_vm.$t('label.all_day'))+\" \")]]}},{key:\"item.additionalDuration\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.$t('label.x_min', [ props.item['additionalDuration'] ]))+\" \")]}},{key:\"item.actions\",fn:function(props){return [_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.confirmRuleDelete(props.item['id'])}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],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('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"500px\",\"title\":_vm.$t('title.edit_duration_rule')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"error\",\"disabled\":_vm.isNew},on:{\"click\":function($event){_vm.deleteConfirmation = true}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.delete_rule'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('confirmation-dialog',{attrs:{\"visible\":_vm.deleteConfirmation,\"message\":_vm.$t('message.confirm_delete_rule')},on:{\"confirm\":_vm.remove,\"close\":function($event){_vm.deleteConfirmation = false}}}),_c('validation-observer',{ref:\"observer\"},[_c('v-form',{ref:\"form\"},[_c('section-header',{attrs:{\"title\":_vm.$t('label.party_size')}}),_c('v-row',[_c('v-col',{staticClass:\"pt-3 pb-0\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpFrom\",\"rules\":\"required|lteq:@vpTo\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{attrs:{\"label\":_vm.$t('label.from'),\"error-messages\":errors,\"items\":_vm.guestsItems},model:{value:(_vm.rule.partySizeFrom),callback:function ($$v) {_vm.$set(_vm.rule, \"partySizeFrom\", $$v)},expression:\"rule.partySizeFrom\"}})]}}])})],1),_c('v-col',{staticClass:\"pt-3 pb-0\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpTo\",\"rules\":\"required|gteq:@vpFrom\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{attrs:{\"label\":_vm.$t('label.to'),\"error-messages\":errors,\"items\":_vm.guestsItems},model:{value:(_vm.rule.partySizeTo),callback:function ($$v) {_vm.$set(_vm.rule, \"partySizeTo\", $$v)},expression:\"rule.partySizeTo\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('section-header',{staticClass:\"py-0\",attrs:{\"title\":_vm.$t('label.time')}})],1),(!_vm.allDay)?[_c('v-col',{staticClass:\"pt-2 pb-3\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpTimeFrom\",\"rules\":\"required|lteqTime:@vpTimeTo\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('time-picker-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.from')},model:{value:(_vm.rule.timeFrom),callback:function ($$v) {_vm.$set(_vm.rule, \"timeFrom\", $$v)},expression:\"rule.timeFrom\"}})]}}],null,false,4002952797)})],1),_c('v-col',{staticClass:\"pt-2 pb-3\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpTimeTo\",\"rules\":\"required|gteqTime:@vpTimeFrom\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('time-picker-field',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.to_including')},model:{value:(_vm.rule.timeTo),callback:function ($$v) {_vm.$set(_vm.rule, \"timeTo\", $$v)},expression:\"rule.timeTo\"}})]}}],null,false,2371588091)})],1)]:_vm._e(),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"py-0\",attrs:{\"input-value\":_vm.allDay,\"label\":_vm.$t('label.all_day')},on:{\"change\":_vm.changeAllDay}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}}),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('section-header',{attrs:{\"title\":_vm.$t('label.additional_time')}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{attrs:{\"label\":_vm.$t('label.time'),\"items\":_vm.additionalTimeItems,\"error-messages\":errors},model:{value:(_vm.rule.additionalDuration),callback:function ($$v) {_vm.$set(_vm.rule, \"additionalDuration\", $$v)},expression:\"rule.additionalDuration\"}})]}}])})],1)],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport moment from 'moment';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport { performAction, performSaveAction } from '@/services/vue-utils';\nimport DurationRule from '@/model/DurationRule';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { ValidationObserver } from 'vee-validate';\n\nexport default Vue.extend({\n name: 'EditDurationRuleDialog',\n components: { ConfirmationDialog },\n mixins: [DialogClosable],\n props: {\n durationRule: { type: Object as PropType, required: true },\n },\n data() {\n return {\n deleteConfirmation: false,\n rule: new DurationRule(),\n oldRule: new DurationRule(),\n guestsItems: [...new Array(99)].map((e, i) => ({ value: i + 1, text: this.$i18n.t('label.x_guests', [i + 1]) })),\n additionalTimeItems: [...new Array(7)].map((e, i) => {\n const minutes = i === 0 ? i - 1 * 15 : i * 15;\n const text = this.$localized.durationFromSeconds(minutes * 60);\n return { text, value: minutes };\n }),\n\n };\n },\n computed: {\n allDay(): boolean {\n const date = moment(this.rule.timeFrom ?? '', 'HH:mm');\n return !date.isValid();\n },\n isNew(): boolean {\n return !this.rule.id;\n },\n isChanged(): boolean {\n return !isModelEqualToModel(this.rule, this.oldRule);\n },\n\n },\n watch: {\n visible() {\n this.reset();\n },\n },\n mounted() {\n\n },\n methods: {\n reset() {\n this.rule = cloneModel(this.durationRule);\n this.oldRule = cloneModel(this.durationRule);\n },\n close() {\n (this.$refs.observer as InstanceType).reset();\n this.$emit('close');\n },\n async save() {\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.$tstore.dispatch('sendDurationRule', { entity: this.rule }),\n );\n\n if (ok) {\n this.close();\n }\n },\n cancel() {\n this.close();\n },\n async remove() {\n const ok = await performAction(\n this.$tc('message.success_rule_deleted'),\n this.$tc('error.deleting_rule'),\n async () => this.$tstore.dispatch('sendDurationRule', { entity: this.rule, delete: true }),\n );\n if (ok) {\n this.close();\n }\n },\n changeAllDay(toAllDay: boolean) {\n this.rule.timeFrom = toAllDay ? '' : '10:00';\n this.rule.timeTo = toAllDay ? '' : '14:00';\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditDurationRuleDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EditDurationRuleDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./EditDurationRuleDialog.vue?vue&type=template&id=a7e39046&\"\nimport script from \"./EditDurationRuleDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./EditDurationRuleDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport Sortable from 'sortablejs';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\n\nimport { performAction } from '@/services/vue-utils';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport Tab from '@/model/Tab';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport DurationRule from '@/model/DurationRule';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport EditDurationRuleDialog from './EditDurationRuleDialog.vue';\n\nexport default Vue.extend({\n name: 'DurationRulesDialog',\n components: { ConfirmationDialog, EditDurationRuleDialog },\n mixins: [UnsavedGuard, DialogClosable],\n props: {\n section: { type: Object as PropType, required: true },\n },\n data() {\n return {\n editRuleDialog: false,\n editedRule: new DurationRule(),\n deleteConfirmation: false,\n rules: [] as DurationRule[],\n oldRules: [] as DurationRule[],\n headers: [\n {\n text: this.$i18n.t('label.party_size'),\n value: 'partySizeFrom',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.time'),\n value: 'timeFrom',\n align: 'center',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.additional_time'),\n width: '32',\n value: 'additionalDuration',\n align: 'center',\n sortable: false,\n },\n {\n text: '',\n width: '32',\n value: 'actions',\n align: 'center',\n sortable: false,\n },\n ],\n };\n },\n computed: {\n // eslint-disable-next-line vue/no-unused-properties\n isChanged(): boolean {\n return !isModelEqualToModel(this.rules, this.oldRules);\n },\n },\n watch: {\n visible() {\n this.reset();\n },\n },\n created() {\n },\n mounted() {\n\n },\n methods: {\n reset() {\n const rules = this.$tstore.state.settings.durationRules.filter(\n (o: DurationRule) => o.tabId === this.section.id,\n );\n this.rules = rules.map((o) => cloneModel(o));\n this.oldRules = rules;\n\n this.editRuleDialog = false;\n },\n add() {\n const rule = new DurationRule();\n rule.tabId = this.section.id;\n this.editedRule = rule;\n this.editRuleDialog = true;\n },\n edit(rule : DurationRule, prop: any) {\n this.editedRule = rule;\n this.editRuleDialog = true;\n },\n closeEditRuleDialog() {\n this.editRuleDialog = false;\n this.reset();\n },\n async deleteRule() {\n const ok = await performAction(\n this.$tc('message.success_rule_deleted'),\n this.$tc('error.deleting_rule'),\n async () => this.$tstore.dispatch('sendDurationRule', { entity: this.editedRule, delete: true }),\n );\n if (ok) {\n this.reset();\n }\n },\n confirmRuleDelete(id: number) {\n const rule = this.rules.find((o: DurationRule) => o.id === id);\n if (!rule) return;\n this.editedRule = rule;\n this.deleteConfirmation = true;\n },\n done() {\n this.$emit('close');\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DurationRulesDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./DurationRulesDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./DurationRulesDialog.vue?vue&type=template&id=5dbd3be2&\"\nimport script from \"./DurationRulesDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./DurationRulesDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{ref:\"dialog\",attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"600px\",\"card-class\":\"pa-0 pb-5 mb-5\",\"content-class\":\"dialog-height-60\",\"container-class\":\"pa-0\",\"title\":_vm.title},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.add}},[_vm._v(\" \"+_vm._s(_vm.$t('button.add_new_table_combination'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.done'))+\" \")])]},proxy:true}])},[_c('guests-allocations-dialog',{attrs:{\"visible\":_vm.guestsDialog,\"party-size\":_vm.guestsPartySize,\"mode\":_vm.mode},on:{\"close\":function($event){_vm.guestsDialog = false}}}),_c('table-combination-dialog',{attrs:{\"visible\":_vm.addTableCombinationDialog,\"mode\":_vm.mode},on:{\"close\":_vm.closeTableCombinationDialog}}),_c('validation-observer',{ref:\"observer\"},[_c('v-data-table',{attrs:{\"item-class\":_vm.dtClassForItem,\"mobile-breakpoint\":\"0\",\"headers\":_vm.headers,\"items\":_vm.items,\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"no-data-text\":_vm.$t('label.no_allocations')},on:{\"click:row\":_vm.editAllocations},scopedSlots:_vm._u([{key:\"item.partySize\",fn:function(props){return [_c('span',{class:[{'error--text' : props.item.isError}]},[_vm._v(\" \"+_vm._s(_vm.$t('label.x_guests', [props.item.partySize]))+\" \")])]}},{key:\"item.allocationsCount\",fn:function(props){return [_c('span',{class:[{'error--text' : props.item.isError} ]},[_vm._v(\" \"+_vm._s(_vm.$t('label.x_allocations', [props.item.allocationsCount]))+\" \")])]}}])})],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('modal-dialog',{ref:\"dialog\",attrs:{\"visible\":_vm.dialog,\"title\":_vm.$t('label.x_guests', [_vm.partySize]),\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"500px\",\"card-class\":\"pa-0 pb-5 mb-5\",\"content-class\":\"dialog-height-50\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.done'))+\" \")])]},proxy:true}])},[_c('modal-dialog',{attrs:{\"visible\":_vm.deleteDialogVisible,\"max-width\":\"400px\",\"persistent\":\"\",\"scrollable\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"error\"},on:{\"click\":function($event){return _vm.remove()}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.delete'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.deleteDialogVisible = false}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('p',{staticClass:\"text-body-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.confirm_delete_allocation_for_x_partysize', [_vm.partySize]))+\" \")]),_c('v-divider'),(_vm.allowForbid)?_c('v-checkbox',{attrs:{\"color\":\"error\",\"label\":_vm.$t('label.never_assign_allocation_again')},model:{value:(_vm.forbid),callback:function ($$v) {_vm.forbid=$$v},expression:\"forbid\"}}):_vm._e()],1),_c('validation-observer',{ref:\"observer\"},[_c('v-data-table',{directives:[{name:\"reorder-table\",rawName:\"v-reorder-table\"}],ref:\"scrollContent\",attrs:{\"headers\":_vm.headers,\"items\":_vm.allocations,\"mobile-breakpoint\":\"0\",\"disable-pagination\":\"\",\"disable-sort\":true,\"hide-default-footer\":\"\",\"no-data-text\":_vm.$t('label.no_allocations')},on:{\"sorted\":_vm.changeOrder},scopedSlots:_vm._u([{key:\"item.id\",fn:function(){return [(_vm.allowReorder)?_c('v-icon',{staticClass:\"reorder-handle\",staticStyle:{\"cursor\":\"move\"},attrs:{\"small\":\"\"}},[_vm._v(\" mdi-arrow-up-down \")]):_vm._e()]},proxy:true},{key:\"item.allocatedTabItems\",fn:function(props){return [_vm._v(\" \"+_vm._s(`${props.item.tabItems.map(((e) => e.no)).join(' + ')}`)+\" \")]}},{key:\"item.totalSeats\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.$t('label.x_seats', [props.item.seats]))+\" \")]}},{key:\"item.actions\",fn:function(props){return [_c('v-btn',{staticClass:\"pr-0 mr-0\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.showDeleteDialog(props.item.id)}}},[_c('v-icon',{staticClass:\"pr-0 mr-0\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],1)]}}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport Sortable from 'sortablejs';\nimport Tab from '@/model/Tab';\nimport TabItem from '@/model/TabItem';\nimport { mapActions } from 'vuex';\nimport Allocation from '@/model/Allocation';\nimport { cloneModel, isModelEqualToModel, uniqueMinId } from '@/model/model-utils';\nimport { performSaveAction, confirmLeaveWithoutSaving } from '@/services/vue-utils';\nimport { AllocationsDialogMode } from './TabAllocationsDialog.vue';\n\nexport default Vue.extend({\n name: 'GuestsAllocationsDialog',\n components: { },\n mixins: [DialogClosable],\n props: {\n partySize: { type: Number, required: true },\n mode: { type: Number as PropType, required: true },\n },\n data() {\n return {\n deleteDialogVisible: false,\n headers: [\n {\n text: '',\n width: '32',\n value: 'id',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.tables'),\n value: 'allocatedTabItems',\n align: 'start',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.seats'),\n value: 'totalSeats',\n align: 'end',\n sortable: false,\n },\n {\n text: '',\n width: '32',\n value: 'actions',\n align: 'center',\n sortable: false,\n },\n ],\n allocations: [] as Allocation[],\n oldAllocations: [] as Allocation[],\n selectedItemId: 0,\n forbid: false,\n };\n },\n computed: {\n allowReorder(): boolean {\n return this.mode !== AllocationsDialogMode.DisallowedAllocations;\n },\n allowForbid(): boolean {\n return this.mode !== AllocationsDialogMode.DisallowedAllocations;\n },\n allocationsByPartySize(): Map {\n switch (this.mode) {\n case AllocationsDialogMode.AllowedAllocations:\n return this.$tstore.getters.allowedAllocationsByPartySize;\n case AllocationsDialogMode.DisallowedAllocations:\n return this.$tstore.getters.disallowedAllocationsByPartySize;\n default: return new Map();\n }\n },\n },\n watch: {\n visible(value: boolean) {\n if (!value) return;\n this.reset();\n },\n },\n methods: {\n ...mapActions(['sendAllocations']),\n reset() {\n this.oldAllocations = this.allocationsByPartySize.get(this.partySize) ?? [];\n this.allocations = this.oldAllocations.map((o: Allocation) => cloneModel(o));\n },\n async changeOrder(event: Sortable.SortableEvent) {\n if (event.oldIndex === undefined || event.newIndex === undefined) return;\n const movedItem = this.allocations.splice(event.oldIndex, 1)[0];\n this.allocations.splice(event.newIndex, 0, movedItem);\n await this.save(this.allocations);\n this.reset();\n },\n showDeleteDialog(id: number) {\n this.selectedItemId = id;\n this.forbid = false;\n this.deleteDialogVisible = true;\n },\n async remove() {\n let allocations: Allocation[] = [];\n\n if (this.forbid) {\n allocations = this.allocations.map((o) => {\n if (o.id !== this.selectedItemId) return o;\n const no = cloneModel(o);\n no.isForbidden = true;\n return no;\n });\n } else {\n allocations = this.allocations.filter((o) => o.id !== this.selectedItemId);\n }\n\n const ok = await this.save(allocations);\n if (!ok) return;\n\n this.deleteDialogVisible = false;\n this.reset();\n },\n async save(allocations: Allocation[]) {\n const isForbidden = this.mode === AllocationsDialogMode.DisallowedAllocations;\n return performSaveAction(\n this.$refs.observer,\n async () => this.sendAllocations({ entities: allocations, partySize: this.partySize, isForbidden }),\n );\n },\n close() {\n this.$emit('close');\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestsAllocationsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./GuestsAllocationsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./GuestsAllocationsDialog.vue?vue&type=template&id=57de1f69&\"\nimport script from \"./GuestsAllocationsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./GuestsAllocationsDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{ref:\"dialog\",attrs:{\"visible\":_vm.dialog,\"title\":_vm.$t('title.new_table_combination'),\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"400px\",\"card-class\":\"pa-0 pt-5 px-5\",\"content-class\":\"dialog-height-40\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\"},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('validation-observer',{ref:\"observer\"},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('tab-item-allocation-row',{attrs:{\"error-messages\":errors,\"label\":_vm.$t('label.table_combination'),\"tab-items\":_vm.tabItems},model:{value:(_vm.tabItemSelection),callback:function ($$v) {_vm.tabItemSelection=$$v},expression:\"tabItemSelection\"}})]}}])}),_c('validation-provider',{attrs:{\"vid\":\"partySizeSelection\",\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"mt-5\",attrs:{\"error-messages\":errors,\"multiple\":\"\",\"max-width\":\"250px\",\"label\":_vm.$t('label.party_size'),\"items\":_vm.partySizeItems,\"menu-props\":{offsetY: true}},scopedSlots:_vm._u([{key:\"selection\",fn:function({ index }){return [(index === 0)?_c('span',[_vm._l(([..._vm.partySizeSelection].sort()),function(s,i){return _c('span',{key:`selection_${i}`},[_vm._v(\" \"+_vm._s(s)),(i!==_vm.partySizeSelection.length-1)?_c('span',[_vm._v(\",\")]):_vm._e()])}),_vm._v(\" \"+_vm._s(_vm.$t('label.guests'))+\" \")],2):_vm._e()]}}],null,true),model:{value:(_vm.partySizeSelection),callback:function ($$v) {_vm.partySizeSelection=$$v},expression:\"partySizeSelection\"}})]}}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-menu',{attrs:{\"close-on-content-click\":false,\"max-height\":\"85%\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on}){return [_c('v-text-field',_vm._g({attrs:{\"readonly\":\"\",\"label\":_vm.label,\"value\":_vm.displayValue,\"hint\":_vm.counterVal,\"error-messages\":_vm.errorMessages,\"persistent-hint\":\"\"}},on))]}}])},[_c('v-list',{staticClass:\"pt-0\"},[_c('v-sheet',{staticClass:\"list-item-sticky text-center text-body-2 text--secondary\"},[_c('p',{staticClass:\"mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.selection_x', [_vm.$t('label.x_seats', [_vm.selectedSeats])]))+\" \")]),_c('v-divider')],1),_vm._l((_vm.groupedTabItems),function(val,key){return [_c('v-subheader',{key:key},[_vm._v(\" \"+_vm._s(_vm.$t('label.x_seats', [key]))+\" \")]),_c('v-divider',{key:`${key}_divider`}),_vm._l((val),function(tabItem,j){return _c('v-list-item',{key:`${key}_${j}`,attrs:{\"inactive\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleCheckbox(tabItem)}}},[_c('v-list-item-action',{staticClass:\"mr-3\"},[_c('v-checkbox',{attrs:{\"value\":tabItem,\"value-comparator\":_vm.checkboxComparator},on:{\"click\":function($event){return _vm.toggleCheckbox(tabItem)}},model:{value:(_vm.selection),callback:function ($$v) {_vm.selection=$$v},expression:\"selection\"}})],1),_c('v-list-item-title',[_vm._v(\" \"+_vm._s(tabItem.no)+\" \")])],1)})]})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport TabItem from '@/model/TabItem';\n\nexport default Vue.extend({\n name: 'TabItemAllocationRow',\n components: { },\n props: {\n tabItems: { type: Array as PropType>, required: true },\n value: { type: Array as PropType>, required: true },\n // partySize: { type: Number, required: true },\n // isError: { type: Boolean, required: false },\n label: { type: String, required: false, default: '' },\n errorMessages: { type: Array as PropType>, required: false, default: () => [] },\n },\n data() {\n return {\n selection: this.value as TabItem[],\n groupedTabItems: {} as any,\n };\n },\n computed: {\n displayValue(): string | null {\n if (this.selection.length === 0) { return null; }\n return `${this.$i18n.t('label.table', [''])}${this.selection.map(((e) => e.no)).join('+')}`;\n },\n counterVal(): string {\n return this.$i18n.t('label.x_seats', [this.selectedSeats]) as string;\n },\n selectedSeats(): number {\n return this.selection.map(((o) => o.seats)).reduce((a, b) => a + b, 0);\n },\n // enoughSeatsSelected(): boolean {\n // return this.selectedSeats >= this.partySize;\n // },\n },\n watch: {\n value() {\n this.selection = this.value;\n },\n },\n mounted() {\n this.groupTabItems();\n },\n methods: {\n groupTabItems() {\n this.groupedTabItems = {};\n\n this.tabItems.forEach((tabItem) => {\n if (tabItem.seats in this.groupedTabItems) {\n this.groupedTabItems[tabItem.seats].push(tabItem);\n } else {\n Vue.set(this.groupedTabItems, tabItem.seats, [tabItem]);\n }\n });\n },\n checkboxComparator(lhs: TabItem, rhs: TabItem):boolean {\n return lhs.id === rhs.id;\n },\n toggleCheckbox(tabItem: TabItem) {\n if (this.selection.find((o) => o.id === tabItem.id)) {\n this.selection.splice(this.selection.findIndex((v) => v.id === tabItem.id), 1);\n } else {\n this.selection.push(tabItem);\n }\n this.selection.sort((o1, o2) => o1.order - o2.order);\n this.$emit('input', this.selection);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabItemAllocationRow.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabItemAllocationRow.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TabItemAllocationRow.vue?vue&type=template&id=7505d0c4&scoped=true&\"\nimport script from \"./TabItemAllocationRow.vue?vue&type=script&lang=ts&\"\nexport * from \"./TabItemAllocationRow.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TabItemAllocationRow.vue?vue&type=style&index=0&id=7505d0c4&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7505d0c4\",\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport TabItemAllocationRow from '@/components/views/settings/TabItemAllocationRow.vue';\nimport Tab from '@/model/Tab';\nimport Allocation from '@/model/Allocation';\nimport TabItem from '@/model/TabItem';\nimport { ValidationObserver } from 'vee-validate';\nimport { cloneModel, uniqueMinId } from '@/model/model-utils';\nimport { performSaveAction } from '@/services/vue-utils';\nimport { mapActions } from 'vuex';\nimport { AllocationsDialogMode } from './TabAllocationsDialog.vue';\n\nexport default Vue.extend({\n name: 'TableCombinationDialog',\n components: { TabItemAllocationRow },\n mixins: [DialogClosable],\n props: {\n mode: { type: Number as PropType, required: true },\n },\n\n data() {\n return {\n tabItemSelection: [] as TabItem[],\n partySizeSelection: [] as number[],\n partySizeItems: [...new Array(99)].map(\n (e, i) => ({ value: i + 1, text: this.$i18n.t('label.x_guests', [i + 1]) }),\n ),\n };\n },\n computed: {\n tabItems(): Array {\n return this.$tstore.state.allocations.tab.tabItems;\n },\n selectedSeats(): number {\n return this.tabItemSelection.map(((o) => o.seats)).reduce((a, b) => a + b, 0);\n },\n allocationsByPartySize(): Map {\n switch (this.mode) {\n case AllocationsDialogMode.AllowedAllocations:\n return this.$tstore.getters.allowedAllocationsByPartySize;\n case AllocationsDialogMode.DisallowedAllocations:\n return this.$tstore.getters.disallowedAllocationsByPartySize;\n default: return new Map();\n }\n },\n },\n\n watch: {\n visible(value: boolean) {\n if (!value) { return; }\n this.reset();\n },\n },\n mounted() {\n\n },\n methods: {\n ...mapActions(['sendAllocations']),\n reset() {\n this.tabItemSelection = [];\n this.partySizeSelection = [];\n\n const observer = this.$refs.observer as InstanceType | undefined;\n if (observer !== undefined) {\n observer.reset();\n }\n },\n\n async save() {\n const observer = this.$refs.observer as InstanceType;\n let isValid = await observer.validate();\n\n // check party size <= selected seats\n this.partySizeSelection.forEach((partySize) => { isValid = isValid && partySize <= this.selectedSeats; });\n\n if (!isValid) {\n observer.setErrors(\n { partySizeSelection: this.$i18n.tc('error.allocation_partysize_too_big') },\n );\n return;\n }\n\n const isForbidden = this.mode === AllocationsDialogMode.DisallowedAllocations;\n let allok = true;\n for (let i = 0; i < this.partySizeSelection.length; i += 1) {\n const partySize = this.partySizeSelection[i];\n\n const oldAllocations = this.allocationsByPartySize.get(partySize) ?? [];\n const allocations = oldAllocations.map((o) => cloneModel(o));\n\n const allocation = new Allocation();\n allocation.id = uniqueMinId(allocations);\n allocation.partySize = partySize;\n allocation.tabItems = this.tabItemSelection;\n allocation.isForbidden = isForbidden;\n\n allocations.push(allocation);\n\n // eslint-disable-next-line no-await-in-loop\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.sendAllocations({ entities: allocations, partySize, isForbidden }),\n );\n\n allok = allok && ok;\n if (!allok) break;\n }\n\n if (allok) this.close();\n },\n close() {\n this.$emit('close');\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TableCombinationDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TableCombinationDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TableCombinationDialog.vue?vue&type=template&id=5ceb1207&\"\nimport script from \"./TableCombinationDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./TableCombinationDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabAllocationsDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TabAllocationsDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./TabAllocationsDialog.vue?vue&type=template&id=32c38afe&scoped=true&\"\nimport script from \"./TabAllocationsDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./TabAllocationsDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./TabAllocationsDialog.vue?vue&type=style&index=0&id=32c38afe&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"32c38afe\",\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n ref, computed, watch, getCurrentInstance, onMounted, onBeforeUnmount,\n} from 'vue';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport DurationRulesDialog from '@/components/views/settings/DurationRulesDialog.vue';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport TablesDialog from '@/components/views/settings/TablesDialog.vue';\nimport FloorplanEditDialog from '@/components/views/settings/FloorplanEditDialog.vue';\nimport TabAllocationsDialog, { AllocationsDialogMode } from '@/components/views/settings/TabAllocationsDialog.vue';\nimport Tab from '@/model/Tab';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport { performSaveAction, performAction } from '@/services/vue-utils';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport AllocationsStore from '@/store/allocations-store';\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\nimport useStoreWatch from '@/composables/store-watch';\nimport { useRoute, useRouter } from 'vue-router/composables';\nimport store from '@/store/store';\nimport i18n from '@/plugins/i18n';\nimport useUnsavedGuard from '@/composables/unsaved-guard';\nimport { ValidationObserver } from 'vee-validate';\nimport { useSeatingTimeItems, useBookingCaps } from './settings/helpers/settings-values';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Section',\n setup(__props) {\n\nconst observerRef = ref(null as null | InstanceType);\n\nconst router = useRouter();\nconst route = useRoute();\n\nconst section = ref(new Tab());\nconst oldSection = ref(new Tab());\n\nconst seatingTimes = useSeatingTimeItems();\nconst bookingCaps = useBookingCaps();\nconst minSeatingTimes = computed(() => {\n const st = seatingTimes.value.filter((o) => o.value <= (section.value.duration ?? 0));\n const mst = [{ value: 0, text: i18n.tc('label.default_seating_time') }, ...st];\n return mst;\n});\n\n// load data\nconst reset = () => {\n const id = Number(router.currentRoute.params.id) || 0;\n const s = store.state.settings.tabs.find((o) => o.id === id) ?? new Tab();\n section.value = cloneModel(s);\n oldSection.value = s;\n};\nuseStoreWatch(reset, true);\n\nconst isNew = computed(() => !section.value.id);\nconst isChanged = computed(() => !isModelEqualToModel(section.value, oldSection.value));\nuseUnsavedGuard(isChanged);\n\nconst loadAllocations = () => store.dispatch('loadAllocations');\nconst resetAllocations = () => store.dispatch('resetAllocations');\n\nonMounted(() => {\n loadStoreModule(getCurrentInstance()?.proxy!, 'allocations', AllocationsStore);\n});\nonBeforeUnmount(() => {\n unloadStoreModule(getCurrentInstance()?.proxy!, 'allocations', async () => { resetAllocations(); });\n});\n\n// Dialogs\nconst deleteConfirmation = ref(false);\nconst tablesDialog = ref(false);\nconst floorplanDialog = ref(false);\nconst allocationsDialog = ref(false);\nconst allocationsDialogMode = ref(AllocationsDialogMode.AllowedAllocations);\nconst durationRulesDialog = ref(false);\n\nconst showAllocationsDialog = async (mode: AllocationsDialogMode) => {\n allocationsDialogMode.value = mode;\n const ok = await performAction(\n null,\n i18n.tc('error.load_allocations'),\n async () => store.dispatch('loadAllocations', { tabId: section.value.id }),\n );\n if (ok) allocationsDialog.value = true;\n};\n\nconst showAllowedAllocationsDialog = async () => {\n showAllocationsDialog(AllocationsDialogMode.AllowedAllocations);\n};\n\nconst showDisallowedAllocationsDialog = async () => {\n showAllocationsDialog(AllocationsDialogMode.DisallowedAllocations);\n};\n\nconst closeDialogs = () => {\n tablesDialog.value = false;\n floorplanDialog.value = false;\n reset();\n};\n\nwatch(() => route.name, () => {\n if (route.query.floorplan) {\n floorplanDialog.value = true;\n } else if (route.query.tables) {\n tablesDialog.value = true;\n }\n});\n\n// slider\nconst maxCapacity = computed(() => section.value.tabItems.map((o) => o.seats).reduce((a, b) => a + b, 0));\nconst maxCapacitySlider = computed(() => (maxCapacity.value === 0 ? 100 : maxCapacity.value));\n\nconst updateCapacity = (onlineValue: boolean) => {\n if (!onlineValue) return;\n section.value.capacity = maxCapacity.value;\n};\n\nconst changeSeatingTime = (value: number) => {\n section.value.duration = value;\n if (section.value.minDuration >= value) {\n section.value.minDuration = 0;\n }\n};\n\n// save delete\nconst save = async () => {\n const entities = store.state.settings.tabs.map(\n (o) => (o.id === section.value.id ? section.value : cloneModel(o)),\n );\n const ok = await performSaveAction(\n observerRef.value,\n async () => store.dispatch('sendTabs', { entities }),\n );\n\n if (ok) {\n reset();\n router.back();\n }\n};\n\nconst remove = async () => {\n const entities = store.state.settings.tabs.map((o) => cloneModel(o));\n const index = entities.findIndex((o: Tab) => o.id === section.value.id);\n if (index >= 0) entities.splice(index, 1);\n const ok = await performAction(\n i18n.tc('message.success_section_deleted'),\n i18n.tc('error.deleting_section'),\n async () => store.dispatch('sendTabs', { entities }),\n );\n if (ok) {\n reset();\n router.back();\n }\n};\n\n\nreturn { __sfc: true,observerRef, router, route, section, oldSection, seatingTimes, bookingCaps, minSeatingTimes, reset, isNew, isChanged, loadAllocations, resetAllocations, deleteConfirmation, tablesDialog, floorplanDialog, allocationsDialog, allocationsDialogMode, durationRulesDialog, showAllocationsDialog, showAllowedAllocationsDialog, showDisallowedAllocationsDialog, closeDialogs, maxCapacity, maxCapacitySlider, updateCapacity, changeSeatingTime, save, remove, useSettingsBreadcrumbs, DurationRulesDialog, ConfirmationDialog, TablesDialog, FloorplanEditDialog, TabAllocationsDialog, SettingsForm, SettingsGroup, ValidationObserver }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Section.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Section.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Section.vue?vue&type=template&id=cc80dd0a&\"\nimport script from \"./Section.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Section.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.SettingsForm,{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs()},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_setup.isChanged},on:{\"click\":_setup.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(_vm._s(_vm.$t('button.save_changes'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c(_setup.ValidationObserver,{ref:\"observerRef\"},[_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('title.online_reservations'),\"subtitle\":_vm.$t('settings.online.online_reservations_subtitle'),\"gutter\":\"\"}},[_c('v-col',{staticClass:\"pt-2 pb-3\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"pa-0 ma-0 pb-2\",attrs:{\"color\":\"primary\",\"label\":_vm.$i18n.t('title.reserve_with_google'),\"hide-details\":\"\"},model:{value:(_setup.a.reserveWithGoogle),callback:function ($$v) {_vm.$set(_setup.a, \"reserveWithGoogle\", $$v)},expression:\"a.reserveWithGoogle\"}}),_vm._v(\" \"+_vm._s(_vm.$t('label.description_online_reserve_with_google'))+\" \")],1),_c('row-form-divider'),_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"12\"}},[_c(_setup.SettingsButtonBlock,{attrs:{\"title\":_vm.$t('title.reservations_from_your_website'),\"description\":_vm.$t('label.description_online_reservations_from_your_website')}},[_c('v-btn',{attrs:{\"color\":\"primary\",\"outlined\":\"\",\"block\":_vm.$vuetify.breakpoint.xsOnly,\"href\":_setup.widgetDocumentationURL,\"target\":\"_blank\"}},[_vm._v(\" \"+_vm._s(_vm.$t('button.discover_widget'))+\" \")])],1),_c('row-form-divider'),_c(_setup.SettingsButtonBlock,{attrs:{\"title\":_vm.$t('title.booking_website'),\"description\":_vm.$t('label.description_widget_qr')}},[_c('v-btn',{attrs:{\"color\":\"primary\",\"outlined\":\"\",\"block\":_vm.$vuetify.breakpoint.xsOnly},on:{\"click\":function($event){_setup.qrDialogVisible = true}}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\" mdi-qrcode \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.create_qr_code'))+\" \")],1)],1),_c('p',{staticClass:\"pa-3 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.description_widget_hosted_form'))+\" \")]),_c('v-sheet',{staticClass:\"mx-3 mt-0 pt-1 text-center\",attrs:{\"color\":_vm.$vuetify.theme.dark ? 'secondary lighten-2' : 'grey lighten-3'}},[_c('a',{attrs:{\"href\":_setup.hostedFormUrl,\"target\":\"_blank\"}},[_vm._v(_vm._s(_setup.hostedFormUrl))]),_c('v-icon',{staticClass:\"pl-1 pb-1\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-open-in-new \")]),_c('div',[_c('v-btn',{staticClass:\"mt-1 mb-3 blue white--text\",attrs:{\"x-small\":\"\",\"outlined\":\"\"},on:{\"click\":_setup.openURLEditor}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-pencil \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.change_url_address'))+\" \")],1)],1)],1)],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.online_reservation_options'),\"subtitle\":_vm.$t('settings.online.online_options_subtitle'),\"gutter\":\"\"}},[_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_setup.partysizes(),\"label\":_vm.$t('label.min_party_size')},model:{value:(_setup.a.defaultMinPartySize),callback:function ($$v) {_vm.$set(_setup.a, \"defaultMinPartySize\", $$v)},expression:\"a.defaultMinPartySize\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_setup.partysizes(),\"label\":_vm.$t('label.max_party_size')},model:{value:(_setup.a.defaultMaxPartySize),callback:function ($$v) {_vm.$set(_setup.a, \"defaultMaxPartySize\", $$v)},expression:\"a.defaultMaxPartySize\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_setup.useMinutesInAdvanceItems().value,\"label\":_vm.$t('label.min_minutes_prior_to_arrival_time')},model:{value:(_setup.a.minMinutesInAdvance),callback:function ($$v) {_vm.$set(_setup.a, \"minMinutesInAdvance\", $$v)},expression:\"a.minMinutesInAdvance\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"items\":_setup.useDaysInAdvanceItems(),\"label\":_vm.$t('label.max_days_in_advance')},model:{value:(_setup.a.maxDaysInAdvance),callback:function ($$v) {_vm.$set(_setup.a, \"maxDaysInAdvance\", $$v)},expression:\"a.maxDaysInAdvance\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"label\":_vm.$t('label.modify_cancel_in_advance'),\"items\":_setup.useTimeInAdvanceItems().value},model:{value:(_setup.a.minMinutesToModify),callback:function ($$v) {_vm.$set(_setup.a, \"minMinutesToModify\", $$v)},expression:\"a.minMinutesToModify\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('time-picker-field',{attrs:{\"label\":_vm.$t('label.close_availability_for_today_at_specific_time')},model:{value:(_setup.a.maxTimeForToday),callback:function ($$v) {_vm.$set(_setup.a, \"maxTimeForToday\", $$v)},expression:\"a.maxTimeForToday\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"label\":_vm.$t('label.max_guests_per_time'),\"items\":_setup.maxGuestsItems},model:{value:(_setup.a.defaultMaxGuestsPerTime),callback:function ($$v) {_vm.$set(_setup.a, \"defaultMaxGuestsPerTime\", $$v)},expression:\"a.defaultMaxGuestsPerTime\"}})],1),_c('v-col',{attrs:{\"cols\":\"6\"}},[_c('v-select',{attrs:{\"label\":_vm.$t('label.max_reservations_per_time'),\"items\":_setup.maxReservationsItems},model:{value:(_setup.a.defaultMaxReservationsPerTime),callback:function ($$v) {_vm.$set(_setup.a, \"defaultMaxReservationsPerTime\", $$v)},expression:\"a.defaultMaxReservationsPerTime\"}})],1),_c('v-col',{staticClass:\"pb-6\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"pa-0 ma-0 pb-2\",attrs:{\"label\":_vm.$t('label.enable_reconfirm'),\"hide-details\":\"\"},model:{value:(_setup.a.enableReconfirmation),callback:function ($$v) {_vm.$set(_setup.a, \"enableReconfirmation\", $$v)},expression:\"a.enableReconfirmation\"}}),_vm._v(\" \"+_vm._s(_vm.$t('label.description_widget_reconfirm'))+\" \")],1),_c('v-col',{attrs:{\"cols\":\"12\"}},[_c(_setup.PaywallSwitch,{staticClass:\"pa-0 ma-0 pb-2\",attrs:{\"unlocked\":_setup.isWaitlistFeatureAllowed,\"label\":_vm.$t('label.wait_list_enable'),\"hide-details\":\"\"},model:{value:(_setup.a.enableWaitlist),callback:function ($$v) {_vm.$set(_setup.a, \"enableWaitlist\", $$v)},expression:\"a.enableWaitlist\"}}),_vm._v(\" \"+_vm._s(_vm.$t('label.description_widget_waitlist'))+\" \")],1)],1)],1)]},proxy:true}])},[(_setup.qrDialogVisible)?_c(_setup.WebsiteQrDialog,{attrs:{\"visible\":_setup.qrDialogVisible,\"hosted-form-url\":_setup.hostedFormUrl},on:{\"close\":function($event){_setup.qrDialogVisible = false}}}):_vm._e(),_c(_setup.InputDialog,{attrs:{\"label-title\":_vm.$t('label.booking_url'),\"visible\":_setup.urlEditorVisible,\"message\":_vm.$t('message.enter_booking_form_url'),\"confirm-title\":\"save\",\"max-width\":\"400\",\"textfield-suffix\":`.${_setup.WIDGET_DOMAIN}`,\"rules\":\"alpha_num|min:3|max:50|unique_widget_url\",\"no-auto-close\":\"\",\"debounce-validation\":\"300\"},on:{\"confirm\":_setup.saveURLEditor,\"cancel\":function($event){_setup.urlEditorVisible = false}},model:{value:(_setup.widgetSubdomain),callback:function ($$v) {_setup.widgetSubdomain=$$v},expression:\"widgetSubdomain\"}})],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('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"persistent\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.print}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\" mdi-printer \")]),(_vm.$vuetify.breakpoint.smAndUp)?[_vm._v(\" \"+_vm._s(_vm.$t('button.print'))+\" \")]:_vm._e()],2),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.saveImage}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\" mdi-download \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_as_image'))+\" \")],1),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('v-container',{staticClass:\"d-flex align-center flex-column\",attrs:{\"fluid\":\"\"}},[_c('canvas',{class:['qr-code-placeholder', {'compact': _vm.$vuetify.breakpoint.xsOnly}],attrs:{\"id\":\"qr-canvas\"}},[_vm._v(\" \")]),_c('p',{staticClass:\"pt-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.description_widget_qr'))+\" \")]),_c('div',{staticClass:\"w-100\"},[_c('v-divider',{staticClass:\"pt-0 pb-4\"}),_c('v-textarea',{attrs:{\"rows\":\"3\",\"label\":_vm.$t('label.qrcode_custom_message')},model:{value:(_vm.qrcodeDescription),callback:function ($$v) {_vm.qrcodeDescription=$$v},expression:\"qrcodeDescription\"}})],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport QrcodeWithLogos from 'qrcode-with-logos';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { hostedWidgetURL } from '@/services/configuration';\n\nexport default Vue.extend({\n name: 'WebsiteQrDialog',\n components: { },\n mixins: [DialogClosable],\n props: {\n hostedFormUrl: { type: String as PropType, required: true },\n },\n data() {\n return {\n qrcode: null as any,\n qrcodeDescription: this.$i18n.t('label.qrcode_message_placeholder'),\n };\n },\n computed: {},\n watch: { },\n mounted() {\n setTimeout(this.createCode, 100);\n },\n methods: {\n createCode() {\n const logo = (process.env.VUE_APP_QRCODE_WITH_LOGO === 'true' ? { src: '/assets/qrcode-logo.svg' } : undefined);\n this.qrcode = new QrcodeWithLogos({\n canvas: document.getElementById('qr-canvas') as HTMLCanvasElement,\n content: this.hostedFormUrl,\n width: this.$vuetify.breakpoint.xsOnly ? 300 : 380,\n logo,\n });\n this.qrcode.toCanvas();\n },\n print() {\n const dataUrl = (document.getElementById('qr-canvas') as HTMLCanvasElement).toDataURL();\n const newWin = window.open('', 'windowName', 'height=1024,width=682');\n newWin!.document.write(`\n \n \n
\n

\n ${this.qrcodeDescription}\n

\n \n `);\n newWin!.document.close();\n newWin!.focus();\n },\n saveImage() {\n console.log(this.qrcode);\n this.qrcode.toImage().then(() => {\n setTimeout(() => {\n this.qrcode.downloadImage('QRCode');\n }, 100);\n });\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebsiteQrDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WebsiteQrDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WebsiteQrDialog.vue?vue&type=template&id=4da59cc6&scoped=true&\"\nimport script from \"./WebsiteQrDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./WebsiteQrDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WebsiteQrDialog.vue?vue&type=style&index=0&id=4da59cc6&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4da59cc6\",\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',[(_setup.upgradeDialog)?_c(_setup.PaywallUpgradeDialog,{attrs:{\"plans\":_vm.plans},on:{\"close\":function($event){_setup.upgradeDialog=false}}}):_vm._e(),(!_vm.unlocked)?_c('v-switch',_vm._b({staticClass:\"mt-0\",attrs:{\"value\":_setup.internalValue,\"readonly\":\"\",\"disabled\":_vm.disabled},on:{\"click\":_setup.click},scopedSlots:_vm._u([{key:\"label\",fn:function(){return [_c('v-badge',{staticClass:\"paywall-badge\",attrs:{\"offset-x\":16,\"offset-y\":-2,\"hidden\":\"\",\"icon\":\"mdi-lock\",\"color\":_setup.badgeColor}}),_c('span',{staticClass:\"d-block pl-2\"},[_vm._v(_vm._s(_vm.$attrs.label))])]},proxy:true}],null,false,3521234762)},'v-switch',_vm.$attrs,false)):_c('v-switch',_vm._b({staticClass:\"mt-0\",attrs:{\"disabled\":_vm.disabled},on:{\"click\":_setup.click},model:{value:(_setup.internalValue),callback:function ($$v) {_setup.internalValue=$$v},expression:\"internalValue\"}},'v-switch',_vm.$attrs,false))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n computed, PropType, ref, watch,\n} from 'vue';\nimport PaywallUpgradeDialog from '@/components/dialogs/PaywallUpgradeDialog.vue';\nimport { useVuetify } from '../helpers/vue2-helpers';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PaywallSwitch',\n props: {\n value: { type: undefined as any, required: true },\n unlocked: { type: Boolean, required: true },\n disabled: { type: Boolean, required: false, default: false },\n plans: { type: Array as PropType<('pro' | 'business' | 'ultimate')[]>, required: false, default: () => undefined },\n},\n emits: ['click', 'input'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst vuetify = useVuetify();\n\n\n\nconst internalValue = ref(props.value);\nwatch(() => props.value, () => {\n internalValue.value = props.value;\n});\n\n\n\nconst upgradeDialog = ref(false);\n\nconst click = () => {\n if (props.unlocked) {\n emit('input', internalValue);\n return;\n }\n upgradeDialog.value = true;\n};\n\nconst badgeColor = computed(() => {\n if (!props.disabled) return 'red';\n if (vuetify.theme.dark) return 'grey darken-3';\n return 'grey lighten-1';\n});\n\n\nreturn { __sfc: true,vuetify, props, internalValue, emit, upgradeDialog, click, badgeColor, PaywallUpgradeDialog }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaywallSwitch.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PaywallSwitch.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PaywallSwitch.vue?vue&type=template&id=245fcf1e&\"\nimport script from \"./PaywallSwitch.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PaywallSwitch.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./PaywallSwitch.vue?vue&type=style&index=0&id=245fcf1e&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, onMounted, ref } from 'vue';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport { performAction, performSaveAction } from '@/services/vue-utils';\nimport AccountSettings from '@/model/AccountSettings';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\nimport WebsiteQrDialog from '@/components/views/settings/WebsiteQrDialog.vue';\nimport SettingsButtonBlock from '@/components/forms/SettingsButtonBlock.vue';\nimport InputDialog from '@/components/dialogs/InputDialog.vue';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport Campaign from '@/grpc-api/model/campaign';\nimport { ValidationObserver, extend } from 'vee-validate';\nimport { hostedWidgetURL, WIDGET_DOMAIN } from '@/services/configuration';\nimport useUnsavedGuard from '@/composables/unsaved-guard';\nimport store from '@/store/store';\nimport i18n from '@/plugins/i18n';\nimport useStoreWatch from '@/composables/store-watch';\nimport PaywallSwitch from '@/components/buttons/PaywallSwitch.vue';\nimport { ApiErrorCode } from '@/api/api-error';\nimport {\n partysizes, useMinutesInAdvanceItems, useDaysInAdvanceItems, useTimeInAdvanceItems,\n} from './settings/helpers/settings-values';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'OnlineSettings',\n setup(__props) {\n\nconst observerRef = ref(null as null | InstanceType);\n\nconst a = ref(new AccountSettings());\nconst olda = ref(new AccountSettings());\n\nconst qrDialogVisible = ref(false);\n\nconst isWaitlistFeatureAllowed = computed(() => store.getters.isWaitlistFeatureAllowed);\n\n// Unsaved Guard\nconst isChanged = computed(() => !isModelEqualToModel(a.value, olda.value));\nuseUnsavedGuard(isChanged);\n\nconst widgetSubdomain = ref(null as string | null);\n\nconst widgetDocumentationURL = computed(() => store.state.settings.account.widgetDocumentationURL || '');\n\nconst maxOnlineCapacity = computed(() => store.getters.maxOnlineCapacity);\n\nconst maxGuestsItems = computed(() => [...new Array(201)].map((e, i) => ({\n text: i === 0 ? i18n.t('label.maximum_x', [maxOnlineCapacity.value]) : `${i}`,\n value: i,\n})));\n\nconst maxReservationsItems = computed(() => [...new Array(201)].map((e, i) => ({\n text: i === 0 ? i18n.t('label.maximum') : `${i}`,\n value: i,\n})));\n\n// Campaign\nconst campaign = ref(null as Campaign | null);\n\nconst loadCampaign = async (): Promise => {\n const ok = await performAction(\n null,\n i18n.tc('error.load_data'),\n async () => {\n campaign.value = await grpcClient.getDefaultCampaign();\n widgetSubdomain.value = campaign.value.subdomain ?? null;\n },\n );\n return ok;\n};\n\nconst updateCampaign = async (c: Campaign): Promise => {\n const ok = await performAction(\n null,\n i18n.tc('error.save_data'),\n async () => {\n campaign.value = await grpcClient.updateDefaultCampaign(c);\n },\n );\n return ok;\n};\n\n// widget dialog\nconst urlEditorVisible = ref(false);\n\nconst hostedFormUrl = computed(() => {\n const subdomain = campaign.value?.subdomain;\n return subdomain ? hostedWidgetURL({ subdomain }) : store.getters.hostedWidgetURL ?? 'N/A';\n});\n\nconst openURLEditor = async () => {\n const ok = await loadCampaign();\n if (ok) urlEditorVisible.value = true;\n};\n\nconst saveURLEditor = async () => {\n if (!campaign.value) { urlEditorVisible.value = false; return; }\n\n const nc = cloneModel(campaign.value);\n nc.subdomain = widgetSubdomain.value ?? undefined;\n\n const ok = await updateCampaign(nc);\n if (ok) urlEditorVisible.value = false;\n};\n\n// store watch, load data\nconst reset = async () => {\n const as = store.state.settings.accountSettings;\n a.value = cloneModel(as);\n olda.value = as;\n\n campaign.value = null;\n widgetSubdomain.value = null;\n if (!store.getters.isLoaded) return;\n\n await loadCampaign();\n};\nuseStoreWatch(reset, true);\n\nconst save = async () => {\n const ok = await performSaveAction(\n observerRef.value,\n async () => store.dispatch('sendAccountSettings', { entity: a.value }),\n );\n\n if (ok) reset();\n};\n\nonMounted(() => {\n const testCampaign = async (c: Campaign): Promise => {\n try {\n await grpcClient.testDefaultCampaign(c);\n } catch (e: any) {\n if (e.code === ApiErrorCode.already_exists || e.code === ApiErrorCode.subdomain_already_exists) {\n return i18n.tc('error.url_already_taken');\n }\n if (e.code === ApiErrorCode.invalid_argument || e.code === ApiErrorCode.subdomain_invalid) {\n return i18n.tc('error.url_not_allowed');\n }\n return true;\n }\n return true;\n };\n\n extend('unique_widget_url', {\n validate: async (value, _) => {\n if (campaign.value === null || value === undefined) return true;\n const nc = cloneModel(campaign.value);\n nc.subdomain = value;\n return testCampaign(nc);\n },\n lazy: true,\n });\n});\n\n\nreturn { __sfc: true,observerRef, a, olda, qrDialogVisible, isWaitlistFeatureAllowed, isChanged, widgetSubdomain, widgetDocumentationURL, maxOnlineCapacity, maxGuestsItems, maxReservationsItems, campaign, loadCampaign, updateCampaign, urlEditorVisible, hostedFormUrl, openURLEditor, saveURLEditor, reset, save, useSettingsBreadcrumbs, SettingsForm, SettingsGroup, WebsiteQrDialog, SettingsButtonBlock, InputDialog, ValidationObserver, WIDGET_DOMAIN, PaywallSwitch, partysizes, useMinutesInAdvanceItems, useDaysInAdvanceItems, useTimeInAdvanceItems }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnlineSettings.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./OnlineSettings.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./OnlineSettings.vue?vue&type=template&id=692f6da4&\"\nimport script from \"./OnlineSettings.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./OnlineSettings.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.SettingsForm,{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs()},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"primary\"},on:{\"click\":_setup.edit}},[_c('v-icon',[_vm._v(\"mdi-plus\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.add_new_service'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('v-data-table',{directives:[{name:\"reorder-table\",rawName:\"v-reorder-table\"}],staticClass:\"clickable-table\",attrs:{\"headers\":_setup.headers,\"items\":_setup.services,\"disable-pagination\":\"\",\"disable-sort\":\"\",\"mobile-breakpoint\":\"0\",\"hide-default-footer\":\"\"},on:{\"click:row\":_setup.edit,\"sorted\":_setup.changeOrder},scopedSlots:_vm._u([{key:\"item.id\",fn:function(){return [_c('div',{staticClass:\"reorder-handle w-100\"},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-arrow-up-down \")])],1)]},proxy:true},{key:\"item.imageUrl\",fn:function({item}){return [_c('v-img',{staticClass:\"px-0 mx-0\",attrs:{\"contain\":\"\",\"max-width\":\"50\",\"max-height\":\"38\",\"src\":item.imageUrl}})]}},{key:\"item.color\",fn:function({item}){return [_c('v-icon',{attrs:{\"color\":item.color}},[_vm._v(\" mdi-circle \")])]}},{key:\"item.minPartySize\",fn:function({item}){return [_vm._v(\" \"+_vm._s(item.minPartySize)+\" - \"+_vm._s(item.maxPartySize)+\" \")]}},{key:\"item.duration\",fn:function({item}){return [_vm._v(\" \"+_vm._s(item.duration === undefined ? '' : _setup.localized.durationFromSeconds(item.duration * 60))+\" \")]}},{key:\"item.localStartDate\",fn:function({item}){return [_vm._v(\" \"+_vm._s(item.localStartTime)+\" \")]}},{key:\"item.localEndDate\",fn:function({item}){return [_vm._v(\" \"+_vm._s(item.localEndTime)+\" \")]}},{key:\"item.weekDays\",fn:function({item}){return _vm._l((_setup.localized.weekdays()),function(w,i){return _c('span',{key:i},[_c('v-chip',{staticClass:\"px-1 mx-1 white--text\",attrs:{\"label\":\"\",\"color\":item.weekDays?.includes(w.value === 0 ? 7 : w.value ) ? 'green' : 'grey',\"filled\":\"\",\"x-small\":\"\"}},[_vm._v(_vm._s(w.text))])],1)})}},{key:\"item.isActive\",fn:function({item}){return [_c('v-chip',{attrs:{\"color\":_setup.colorForServiceStatus(item),\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_setup.labelForServiceStatus(item))+\" \")])]}},{key:\"item.actions\",fn:function({item}){return [_c('v-menu',{attrs:{\"y-offset\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\"}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-dots-vertical \")])],1)]}}],null,true)},[_c('v-list',[_c('v-list-item',{on:{\"click\":function($event){return _setup.duplicateService(item)}}},[_c('v-list-item-title',[_c('v-icon',{staticClass:\"pr-2\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-content-duplicate \")]),_c('span',{staticClass:\"text-button\"},[_vm._v(_vm._s(_vm.$t('button.create_copy')))])],1)],1),_c('v-divider'),_c('v-list-item',{on:{\"click\":function($event){return _setup.deleteConfirmation(item)}}},[_c('v-list-item-title',[_c('v-icon',{staticClass:\"pr-2\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")]),_c('span',{staticClass:\"text-button\"},[_vm._v(_vm._s(_vm.$t('button.delete')))])],1)],1)],1)],1)]}}])})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n computed, getCurrentInstance, onBeforeUnmount, onMounted, ref,\n} from 'vue';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport Service from '@/model/Service';\nimport i18n from '@/plugins/i18n';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport Sortable from 'sortablejs';\nimport { cloneModel } from '@/model/model-utils';\nimport { performDispatchAction, performSaveAction } from '@/services/vue-utils';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ServiceManagerStore from '@/store/service-manager-store';\nimport ReservationService from '@/grpc-api/model/reservation-service';\nimport store from '@/store/store';\nimport { useRouter } from 'vue-router/composables';\nimport { useVuetify } from '../helpers/vue2-helpers';\nimport showConfirmationDialog from '../dialogs/confirmation-dialog';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ServiceManager',\n setup(__props) {\n\nconst vuetify = useVuetify();\nconst router = useRouter();\n\nconst headers = computed(\n () => [\n {\n text: '', width: '32', value: 'id', align: 'center',\n },\n {\n text: i18n.t('label.service_manager_image'),\n width: '50',\n value: 'imageUrl',\n align: 'center',\n },\n {\n text: i18n.t('label.color'), width: '24', value: 'color', align: 'center', cellClass: 'mx-1',\n },\n {\n text: i18n.t('label.service_title'), value: 'title', align: 'start', width: '100%',\n },\n ...vuetify.breakpoint.lgAndUp\n ? [{\n text: i18n.t('label.weekdays'), value: 'weekDays', align: 'start', cellClass: 'dt-cell-stretch',\n }] : [],\n\n ...vuetify.breakpoint.mdAndUp\n ? [{\n text: i18n.t('label.service_time_from'), value: 'localStartDate', align: 'center', width: '32',\n },\n {\n text: i18n.t('label.service_time_until'), value: 'localEndDate', align: 'center', width: '32',\n }] : [],\n {\n text: i18n.t('label.active'), width: '32', value: 'isActive', align: 'start',\n },\n { value: 'actions', width: '32' },\n ],\n);\n\nconst colorForServiceStatus = (s: ReservationService) => {\n if (!s.isActive) return 'gray';\n if (s.tab && !s.tab.usingWeekdaysAndTimes) { return 'red'; }\n return 'success';\n};\nconst labelForServiceStatus = (s: ReservationService) => {\n if (!s.isActive) return i18n.t('label.disabled');\n if (s.tab && !s.tab.usingWeekdaysAndTimes) { return i18n.t('label.offline'); }\n return i18n.t('label.active');\n};\n\nconst services = ref([] as ReservationService[]);\n\nconst edit = (s: Service | undefined = undefined) => router.push(`/settings/service-manager/${s?.id || 'new'}`);\n\nconst reset = async () => {\n const entities = store.getters.serviceManagertServices as ReservationService[];\n services.value = entities.map((s) => cloneModel(s));\n};\n\nconst load = async () => {\n if (!store.getters.isServiceManagerLoaded) {\n await performDispatchAction('loadServiceManager', {}, { streamLoad: true }) as ReservationService[] | null;\n }\n reset();\n};\n\nconst changeOrder = async (event: Sortable.SortableEvent) => {\n if (event.oldIndex === undefined || event.newIndex === undefined) return;\n const movedItem = services.value.splice(event.oldIndex, 1)[0];\n services.value.splice(event.newIndex, 0, movedItem);\n\n const saveItem = cloneModel(movedItem);\n if (event.newIndex === 0)saveItem.order = 0; else saveItem.order = services.value[event.newIndex - 1].order;\n await performSaveAction(\n undefined,\n async () => store.dispatch('serviceManagerReorderServices', { services: [saveItem] }),\n );\n reset();\n};\n\nconst duplicateService = (s: Service) => {\n router.push(`/settings/service-manager/${s.id}?action=copy`);\n};\n\nconst deleteService = async (svc: ReservationService) => {\n const s = cloneModel(svc);\n s.isDeleted = true;\n const ok = await performSaveAction(\n undefined,\n async () => store.dispatch('serviceManagerUpdateService', { service: s }),\n );\n reset();\n};\n\nconst deleteConfirmation = (svc: ReservationService) => {\n showConfirmationDialog(\n i18n.tc('title.service_manager'),\n i18n.tc('message.confirm_delete_service'),\n { title: i18n.tc('button.yes'), action: () => deleteService(svc) },\n { title: i18n.tc('button.cancel') },\n );\n};\n\nonMounted(() => {\n loadStoreModule(getCurrentInstance()?.proxy!, 'serviceManager', ServiceManagerStore, async () => { load(); });\n});\n\nonBeforeUnmount(() => {\n console.log('serviceManager onBeforeUnmount');\n\n unloadStoreModule(\n getCurrentInstance()?.proxy!,\n 'serviceManager',\n async () => { store.dispatch('resetServiceManager'); },\n );\n});\n\n\nreturn { __sfc: true,vuetify, router, headers, colorForServiceStatus, labelForServiceStatus, services, edit, reset, load, changeOrder, duplicateService, deleteService, deleteConfirmation, useSettingsBreadcrumbs, SettingsForm, localized }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManager.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManager.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ServiceManager.vue?vue&type=template&id=bac9e674&\"\nimport script from \"./ServiceManager.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ServiceManager.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.SettingsForm,{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs(_setup.service.title || _vm.$t('label.new_service'))},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_setup.isChanged},on:{\"click\":_setup.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1),_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"error\",\"disabled\":_setup.isNew},on:{\"click\":_setup.deleteConfirmation}},[_c('v-icon',[_vm._v(\"mdi-delete\")]),_c('span',{staticClass:\"d-none d-lg-block\"},[_vm._v(_vm._s(_vm.$t('button.delete')))])],1)]},proxy:true},{key:\"content\",fn:function(){return [(_setup.uploadDialog)?_c(_setup.ImageUploadDialog,{attrs:{\"title\":_vm.$t('title.image'),\"image-src\":_setup.service.imageUrl,\"filename-prefix\":\"svc\",\"help-label\":_vm.$t('placeholder.image_upload'),\"delete-confirmation-label\":_vm.$t('message.confirm_delete_uploaded_image'),\"stencil-props\":{ aspectRatio: 686/450 },\"max-width\":686},on:{\"close\":function($event){_setup.uploadDialog = false},\"change\":_setup.uploadImage}}):_vm._e(),_c(_setup.ValidationObserver,{ref:\"refObserver\"},[_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('settings.service_manager.appearance_title'),\"subtitle\":_vm.$t('settings.service_manager.appearance_subtitle')}},[_c('v-col',{staticClass:\"pb-0 my-2 d-flex\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('div',{staticClass:\"mr-2 mt-2\"},[_c('color-picker-field',{attrs:{\"show-swatches\":\"\",\"swatches\":_setup.fullSwatchPalette},model:{value:(_setup.service.color),callback:function ($$v) {_vm.$set(_setup.service, \"color\", $$v)},expression:\"service.color\"}})],1),_c('validated-text-field',{staticClass:\"pt-0 w-100\",attrs:{\"rules\":\"required|max:255\",\"persistent-hint\":\"\",\"hint\":_vm.$t('label.service_title_hint'),\"label\":_vm.$t('label.service_title')},model:{value:(_setup.service.title),callback:function ($$v) {_vm.$set(_setup.service, \"title\", $$v)},expression:\"service.title\"}})],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"0\",\"lg\":\"6\"}}),_c('v-col',{staticClass:\"mt-2 d-flex\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('v-text-field',{staticClass:\"pt-0 readonly--disabled\",attrs:{\"label\":_vm.$t('label.service_code'),\"readonly\":\"\"},model:{value:(_setup.service.code),callback:function ($$v) {_vm.$set(_setup.service, \"code\", $$v)},expression:\"service.code\"}}),_c('v-btn',{attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":_setup.copySvcCode}},[_c('v-icon',[_vm._v(\"mdi-content-copy\")])],1)],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"0\",\"lg\":\"6\"}}),_c('v-col',{staticClass:\"py-0 my-0 mt-2\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"required|max:1500\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [(_setup.serviceLoaded)?_c(_setup.RichTextEditor,{attrs:{\"dense\":\"\",\"richtext-allowed\":\"\",\"encode-linebreak\":\"\",\"label\":_vm.$t('label.description'),\"error-messages\":errors,\"height\":\"224px\"},model:{value:(_setup.service.description),callback:function ($$v) {_vm.$set(_setup.service, \"description\", $$v)},expression:\"service.description\"}}):_vm._e()]}}])})],1),_c('v-col',{staticClass:\"py-0 my-0 mt-2\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_setup.service.imageUrl),expression:\"service.imageUrl\"}],attrs:{\"type\":\"hidden\"},domProps:{\"value\":(_setup.service.imageUrl)},on:{\"input\":function($event){if($event.target.composing)return;_vm.$set(_setup.service, \"imageUrl\", $event.target.value)}}}),_c(_setup.ImagePreviewField,{attrs:{\"image-url\":_setup.service.imageUrl,\"title\":_vm.$t('label.service_manager_image'),\"placeholder\":_vm.$t('placeholder.upload_service_image'),\"errors\":errors},on:{\"upload:click\":function($event){_setup.uploadDialog = true}}})]}}])})],1),_vm._l(([1,2,3]),function(n,i){return [_c('v-col',{key:`tag_${i}`,staticClass:\"py-0 mt-3\",attrs:{\"cols\":\"4\",\"lg\":\"2\"}},[_c('validated-text-field',{staticClass:\"py-1\",attrs:{\"rules\":\"max:255\",\"label\":`${_vm.$t('label.tag')} ${n}`},model:{value:(_setup.service.tags[i]),callback:function ($$v) {_vm.$set(_setup.service.tags, i, $$v)},expression:\"service.tags[i]\"}})],1)]}),_c('v-col',{staticClass:\"py-0 my-0 mt-3\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"py-0 mt-0\",attrs:{\"label\":_vm.$t('label.active'),\"hide-details\":\"\"},model:{value:(_setup.service.isActive),callback:function ($$v) {_vm.$set(_setup.service, \"isActive\", $$v)},expression:\"service.isActive\"}}),_c('p',{staticClass:\"pt-0 mt-0 ml-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.help_service_is_active'))+\" \")])],1),_c('v-col',{staticClass:\"py-0 py-0 mt-1\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"py-0 mt-0\",attrs:{\"label\":_vm.$t('label.front_page'),\"hide-details\":\"\"},model:{value:(_setup.service.isPromoted),callback:function ($$v) {_vm.$set(_setup.service, \"isPromoted\", $$v)},expression:\"service.isPromoted\"}}),_c('p',{staticClass:\"pt-0 mt-0 ml-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.help_service_promoted'))+\" \")])],1),_c('v-col',{staticClass:\"py-0 my-0 mt-1\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"py-0 mt-0\",attrs:{\"label\":_vm.$t('label.required'),\"hint\":_vm.$t('label.'),\"hide-details\":\"\"},model:{value:(_setup.service.isRequired),callback:function ($$v) {_vm.$set(_setup.service, \"isRequired\", $$v)},expression:\"service.isRequired\"}}),_c('p',{staticClass:\"pt-0 mt-0 ml-12\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.help_service_required'))+\" \")])],1)],2),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('settings.service_manager.service_availability_title'),\"subtitle\":_vm.$t('settings.service_manager.service_availability_subtitle'),\"gutter\":\"\"}},[_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpFromTime\",\"rules\":\"required|lteqTime:@vpToTime\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('time-picker-field',{attrs:{\"label\":_vm.$t('label.service_time_from'),\"error-messages\":errors},model:{value:(_setup.service.localStartTime),callback:function ($$v) {_vm.$set(_setup.service, \"localStartTime\", $$v)},expression:\"service.localStartTime\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpToTime\",\"rules\":\"required|gteqTime:@vpFromTime\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('time-picker-field',{attrs:{\"label\":_vm.$t('label.service_time_until'),\"error-messages\":errors},model:{value:(_setup.service.localEndTime),callback:function ($$v) {_vm.$set(_setup.service, \"localEndTime\", $$v)},expression:\"service.localEndTime\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('span',{staticClass:\"subheading v-label\"},[_vm._v(_vm._s(_vm.$t('label.weekdays')))]),_c('v-chip-group',{staticClass:\"pt-0 mt-0\",attrs:{\"active-class\":\"chip-prominent-active\",\"column\":\"\",\"color\":\"green\",\"multiple\":\"\"},on:{\"change\":_setup.weekDaysChanged},model:{value:(_setup.service.weekDays),callback:function ($$v) {_vm.$set(_setup.service, \"weekDays\", $$v)},expression:\"service.weekDays\"}},[_vm._l((_setup.localized.weekdays()),function(w,i){return _c('v-chip',{key:i,staticClass:\"pt-0 mt-0\",attrs:{\"small\":\"\",\"value\":w.value === 0 ? 7: w.value,\"label\":\"\"}},[_vm._v(\" \"+_vm._s(w.text)+\" \")])}),_c('v-spacer')],2)],1),_c(_setup.ServiceManagerConditionalPanel,{staticClass:\"pt-4\",attrs:{\"value\":_setup.limitPeriodSet,\"label\":_vm.$tc('label.limit_available_period')},on:{\"input\":_setup.limitPeriodChanged}},[_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpDateFrom\",\"rules\":\"required|lteqDate:@vpDateUntil\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('date-picker-field',{attrs:{\"format-fn\":_setup.fmtShortDate,\"label\":_vm.$t('label.service_available_from'),\"error-messages\":errors},model:{value:(_setup.service.localStartDate),callback:function ($$v) {_vm.$set(_setup.service, \"localStartDate\", $$v)},expression:\"service.localStartDate\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":\"vpDateUntil\",\"rules\":\"required|gteqDate:@vpDateFrom\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('date-picker-field',{attrs:{\"format-fn\":_setup.fmtShortDate,\"label\":_vm.$t('label.service_available_until'),\"error-messages\":errors},model:{value:(_setup.service.localEndDate),callback:function ($$v) {_vm.$set(_setup.service, \"localEndDate\", $$v)},expression:\"service.localEndDate\"}})]}}])})],1)],1),_c(_setup.ServiceManagerConditionalPanel,{attrs:{\"value\":_setup.blackoutSet,\"label\":_vm.$tc('label.set_blackout_period')},on:{\"input\":_setup.blackoutSetChanged}},[_vm._l((_setup.service.blackouts),function(b,i){return [_c('v-col',{key:`blackout_from_${i}`,staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":`vpBlackoutFrom_${i}`,\"rules\":`required|lteqDate:@vpBlackoutUntil_${i}`},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('date-picker-field',{attrs:{\"value\":_setup.service.blackouts[i].blackoutStartDate,\"label\":_vm.$t('label.disable_service_from'),\"format-fn\":_setup.fmtShortDate,\"error-messages\":errors},on:{\"input\":(date) => _setup.blackoutStartDateChange(i, date)}})]}}],null,true)})],1),_c('v-col',{key:`blackout_until_${i}`,staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('validation-provider',{attrs:{\"name\":`vpBlackoutUntil_${i}`,\"rules\":`required|gteqDate:@vpBlackoutFrom_${i}`},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('date-picker-field',{attrs:{\"value\":_setup.service.blackouts[i].blackoutEndDate,\"label\":_vm.$t('label.disable_service_until'),\"format-fn\":_setup.fmtShortDate,\"error-messages\":errors,\"append-outer-icon\":i === _setup.service.blackouts.length -1 ? 'mdi-plus' : 'mdi-close',\"min-date\":b.blackoutStartDate},on:{\"click:append-outer\":function($event){i === _setup.service.blackouts.length - 1 ? _setup.addBlackoutRow() : _setup.deleteBlackoutRow(i)},\"input\":(date) => _setup.blackoutEndDateChange(i, date)}})]}}],null,true)})],1)]})],2)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('settings.service_manager.payments_title'),\"subtitle\":_vm.$t('settings.service_manager.payments_subtitle')}},[(!_setup.stripeConfigured && !_setup.stripeConnectConfigured)?_c('v-alert',{attrs:{\"type\":\"warning\",\"dense\":\"\",\"prominent\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"grow\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.service_manager_stripe_not_active'))+\" \")]),_c('v-col',{staticClass:\"shrink\"},[_c('v-btn',{on:{\"click\":_setup.configureStripe}},[_vm._v(\" \"+_vm._s(_vm.$t('button.configure_now'))+\" \")])],1)],1)],1):_c(_setup.ServiceManagerConditionalPanel,{attrs:{\"value\":_setup.stripeSet,\"label\":_vm.$tc('label.service_enable_stripe')},on:{\"input\":_setup.stripeSetChanged}},[_c('v-col',{staticClass:\"mt-2\",attrs:{\"sm\":\"3\",\"cols\":\"6\"}},[_c(_setup.AmountField,{model:{value:(_setup.service.price),callback:function ($$v) {_vm.$set(_setup.service, \"price\", $$v)},expression:\"service.price\"}})],1),_c('v-col',{staticClass:\"py-0 my-0 mt-2\",attrs:{\"sm\":\"2\",\"cols\":\"6\"}},[_c('v-select',{attrs:{\"label\":_vm.$t('label.currency'),\"return-object\":\"\",\"items\":_setup.currencies},model:{value:(_setup.service.currency),callback:function ($$v) {_vm.$set(_setup.service, \"currency\", $$v)},expression:\"service.currency\"}})],1),_c('v-col',{staticClass:\"my-0 py-0\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"mt-2\",attrs:{\"label\":_vm.$t('label.price_per_person')},model:{value:(_setup.service.isPricePerPerson),callback:function ($$v) {_vm.$set(_setup.service, \"isPricePerPerson\", $$v)},expression:\"service.isPricePerPerson\"}})],1),_c('v-col',{staticClass:\"my-0 py-0\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"mt-2\",attrs:{\"label\":_vm.$t('label.price_is_deposit')},model:{value:(_setup.service.isDeposit),callback:function ($$v) {_vm.$set(_setup.service, \"isDeposit\", $$v)},expression:\"service.isDeposit\"}})],1)],1)],1),_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('settings.service_manager.advanced_settings_title'),\"subtitle\":_vm.$t('settings.service_manager.advanced_settings_subtitle')}},[_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('section-header',{attrs:{\"title\":_vm.$t('label.party_size')}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\",\"lg\":\"3\"}},[_c('validation-provider',{attrs:{\"name\":\"vpMinParty\",\"rules\":`lteq:@vpMaxParty${_setup.service.maxPartySize ? '|required' : ''}`},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{attrs:{\"items\":_setup.partysizes(),\"label\":_vm.$t('label.minimum_short'),\"error-messages\":errors,\"placeholder\":_vm.$t('label.default_value'),\"persistent-placeholder\":\"\",\"append-outer-icon\":'mdi-close'},on:{\"click:append-outer\":function($event){_setup.service.minPartySize=undefined}},model:{value:(_setup.service.minPartySize),callback:function ($$v) {_vm.$set(_setup.service, \"minPartySize\", $$v)},expression:\"service.minPartySize\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"6\",\"lg\":\"3\"}},[_c('validation-provider',{attrs:{\"name\":\"vpMaxParty\",\"rules\":`gteq:@vpMinParty${_setup.service.minPartySize ? '|required' : ''}`},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{attrs:{\"items\":_setup.partysizes(),\"label\":_vm.$t('label.maximum_short'),\"error-messages\":errors,\"placeholder\":_vm.$t('label.default_value'),\"persistent-placeholder\":\"\",\"append-outer-icon\":_setup.clearButton(_setup.service.maxPartySize)},on:{\"click:append-outer\":function($event){_setup.service.maxPartySize=undefined}},model:{value:(_setup.service.maxPartySize),callback:function ($$v) {_vm.$set(_setup.service, \"maxPartySize\", $$v)},expression:\"service.maxPartySize\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"0\",\"lg\":\"6\"}}),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('v-select',{attrs:{\"item-value\":\"id\",\"item-text\":\"name\",\"item-disabled\":(i)=>!i.usingWeekdaysAndTimes,\"items\":_setup.tabs,\"placeholder\":_vm.$t('label.any_available'),\"persistent-placeholder\":\"\",\"return-object\":\"\",\"label\":_vm.$t('label.section'),\"append-outer-icon\":_setup.clearButton(_setup.service.tab)},on:{\"click:append-outer\":function($event){_setup.service.tab=undefined}},scopedSlots:_vm._u([{key:\"item\",fn:function({item}){return [_c('span',{class:['d-block grow', {'text--disabled':!item.usingWeekdaysAndTimes} ]},[_vm._v(_vm._s(item.name))]),(!item.usingWeekdaysAndTimes)?_c('v-chip',{attrs:{\"color\":\"grey\",\"x-small\":\"\"}},[_c('span',[_vm._v(_vm._s(_vm.$t('label.offline')))])]):_vm._e()]}}]),model:{value:(_setup.service.tab),callback:function ($$v) {_vm.$set(_setup.service, \"tab\", $$v)},expression:\"service.tab\"}})],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"0\",\"lg\":\"6\"}}),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\",\"lg\":\"6\"}},[_c('v-select',{attrs:{\"items\":_setup.useLanguages().value,\"placeholder\":_vm.$t('label.any_language'),\"persistent-placeholder\":\"\",\"label\":_vm.$t('label.language'),\"append-outer-icon\":_setup.clearButton(_setup.service.locale)},on:{\"click:append-outer\":function($event){_setup.service.locale=undefined}},model:{value:(_setup.service.locale),callback:function ($$v) {_vm.$set(_setup.service, \"locale\", $$v)},expression:\"service.locale\"}})],1),_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"0\",\"lg\":\"6\"}}),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"6\",\"lg\":\"3\"}},[_c('v-select',{attrs:{\"items\":_setup.useTimeInAdvanceItems().value,\"label\":_vm.$t('label.min_minutes_prior_to_arrival_time'),\"placeholder\":_vm.$t('label.default_value'),\"persistent-placeholder\":\"\",\"append-outer-icon\":_setup.clearButton(_setup.service.minMinutesInAdvance),\"persistent-hint\":\"\",\"hint\":_vm.$t('label.min_minutes_prior_to_arrival_time_hint')},on:{\"click:append-outer\":function($event){_setup.service.minMinutesInAdvance=undefined}},model:{value:(_setup.service.minMinutesInAdvance),callback:function ($$v) {_vm.$set(_setup.service, \"minMinutesInAdvance\", $$v)},expression:\"service.minMinutesInAdvance\"}})],1),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"6\",\"lg\":\"3\"}},[_c('v-select',{attrs:{\"items\":_setup.useTimeInAdvanceItems().value,\"label\":_vm.$t('label.modify_cancel_in_advance'),\"placeholder\":_vm.$t('label.default_value'),\"persistent-hint\":\"\",\"persistent-placeholder\":\"\",\"hint\":_vm.$t('label.modify_cancel_in_advance_hint'),\"append-outer-icon\":_setup.clearButton(_setup.service.minMinutesToModify)},on:{\"click:append-outer\":function($event){_setup.service.minMinutesToModify=undefined}},model:{value:(_setup.service.minMinutesToModify),callback:function ($$v) {_vm.$set(_setup.service, \"minMinutesToModify\", $$v)},expression:\"service.minMinutesToModify\"}})],1),_c(_setup.ServiceManagerConditionalPanel,{attrs:{\"value\":_setup.fixedDurationSet,\"label\":_vm.$tc('label.set_fixed_duration')},on:{\"input\":_setup.fixedDurationSetChanged}},[_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"6\",\"lg\":\"3\"}},[_c('v-select',{attrs:{\"items\":_setup.useSeatingTimeItems().value,\"placeholder\":\"Default\",\"persistent-placeholder\":\"\",\"label\":_vm.$t('label.duration'),\"append-outer-icon\":_setup.clearButton(_setup.service.duration)},on:{\"click:append-outer\":function($event){_setup.service.duration = undefined}},model:{value:(_setup.service.duration),callback:function ($$v) {_vm.$set(_setup.service, \"duration\", $$v)},expression:\"service.duration\"}})],1)],1),(false)?_c(_setup.ServiceManagerConditionalPanel,{attrs:{\"value\":_setup.limitParallelSet,\"label\":_vm.$tc('label.limit_parallel_bookings')},on:{\"input\":_setup.limitParallelSetChanged}},[_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"3\"}},[_c('v-select',{attrs:{\"label\":_vm.$t('label.max_number_of_parallel_bookings'),\"items\":_setup.limitParallelItems},model:{value:(_setup.service.maxParallelBookings),callback:function ($$v) {_vm.$set(_setup.service, \"maxParallelBookings\", $$v)},expression:\"service.maxParallelBookings\"}})],1)],1):_vm._e()],1)],1),(!!_setup.widgetLink)?_c('v-row',[_c('v-col',{staticClass:\"col-12 col-lg-6 offset-0 offset-lg-3 mt-2\"},[_c('v-sheet',{staticClass:\"text-center pa-2\",attrs:{\"color\":_vm.$vuetify.theme.dark ? 'secondary lighten-2' : 'grey lighten-4'}},[_c('a',{attrs:{\"href\":_setup.widgetLink,\"target\":\"_blank\"}},[_vm._v(_vm._s(_setup.widgetLink))]),_c('v-icon',{staticClass:\"pl-1 pb-1\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-open-in-new \")]),_c('p',{staticClass:\"subheading pa-0 ma-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.service_direct_link_description'))+\" \")])],1)],1)],1):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('validated-text-field',{attrs:{\"value\":_setup.amount,\"autofocus\":\"\",\"rules\":\"required|amount|min_value:0.5\",\"label\":_vm.$t('label.price')},on:{\"input\":_setup.priceChanged}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { sprintf } from 'sprintf-js';\nimport {\n watch, ref, computed, PropType,\n} from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AmountField',\n props: {\n value: { type: [Number, undefined] as PropType, required: true },\n},\n emits: ['input'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst amtToCents = (val: string) => (val.match(/^\\d+\\.?\\d?\\d?$/) ? Math.round(parseFloat(val) * 100) : NaN);\nconst centsToAmt = (val: number | undefined) => {\n if (val === 0) { return '0'; }\n return val !== undefined ? sprintf('%.2f', val / 100) : '';\n};\n\nconst amount = ref(centsToAmt(props.value));\nconst convertedAmount = computed(() => amtToCents(amount.value));\n\nconst priceChanged = (val: string) => {\n amount.value = val.replaceAll(',', '.');\n if (!Number.isNaN(convertedAmount.value)) {\n emit('input', convertedAmount.value);\n }\n};\n\nwatch(() => props.value, () => {\n if (props.value && props.value === convertedAmount.value) {\n return;\n }\n amount.value = centsToAmt(props.value);\n});\n\n\nreturn { __sfc: true,props, emit, amtToCents, centsToAmt, amount, convertedAmount, priceChanged }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmountField.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AmountField.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./AmountField.vue?vue&type=template&id=92117aa6&\"\nimport script from \"./AmountField.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./AmountField.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"w-100\"},[_c('v-col',{staticClass:\"py-0 my-0 pb-3\",attrs:{\"cols\":\"12\"}},[_c('v-checkbox',{staticClass:\"mt-0\",attrs:{\"value\":_vm.value,\"label\":_vm.label,\"hide-details\":\"\"},on:{\"change\":_setup.updateValue}})],1),(_vm.value)?[_c('v-row',{staticClass:\"ml-8 pb-4\"},[_vm._t(\"default\")],2)]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ServiceManagerConditionalPanel',\n props: {\n label: { type: String, required: true },\n value: { type: Boolean, required: true },\n},\n emits: ['input'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst updateValue = (val: boolean) => emit('input', val);\n\n\nreturn { __sfc: true,props, emit, updateValue }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManagerConditionalPanel.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManagerConditionalPanel.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ServiceManagerConditionalPanel.vue?vue&type=template&id=6772cf93&\"\nimport script from \"./ServiceManagerConditionalPanel.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ServiceManagerConditionalPanel.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport i18n from '@/plugins/i18n';\nimport {\n computed, getCurrentInstance, nextTick, onBeforeUnmount, onMounted, ref,\n} from 'vue';\nimport RichTextEditor from '@/components/editors/RichTextEditor.vue';\nimport ImageUploadDialog from '@/components/dialogs/ImageUploadDialog.vue';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport {\n useSeatingTimeItems, useTimeInAdvanceItems, partysizes, useLanguages,\n} from '@/components/views/settings/helpers/settings-values';\nimport ReservationService from '@/grpc-api/model/reservation-service';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ServiceManagerStore from '@/store/service-manager-store';\nimport { actionShowError, performDispatchAction, performSaveAction } from '@/services/vue-utils';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport { hostedWidgetURL } from '@/services/configuration';\nimport useUnsavedGuard from '@/composables/unsaved-guard';\nimport store from '@/store/store';\nimport { useRouter } from 'vue-router/composables';\nimport { ValidationObserver } from 'vee-validate';\nimport { dateFlooredToDate } from '@/services/time-utils';\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\nimport AmountField from '@/components/forms/AmountField.vue';\nimport GstplnApp from '@/components/apps/app';\nimport { fullSwatchPalette } from '@/components/helpers/colors';\nimport httpClient from '@/api/http-client';\nimport ImagePreviewField from '@/components/forms/ImagePreviewField.vue';\nimport toast from '@/plugins/toast-plugin/toast';\nimport copy from 'copy-to-clipboard';\nimport ServiceManagerConditionalPanel from './ServiceManagerConditionalPanel.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'ServiceManagerEditor',\n setup(__props) {\n\nconst router = useRouter();\n\nconst serviceLoaded = ref(false);\nconst service = ref(new ReservationService());\nconst oldService = ref(service.value);\n\n// Image Upload\nconst uploadDialog = ref(false);\n\nconst uploadImage = async (image: File | null) => {\n service.value.imageUrl = image ? URL.createObjectURL(image as Blob) : '';\n\n const ok = await performSaveAction(\n null,\n async () => {\n let imageUrl = '';\n\n // save image and get url, if undefined, image is being removed\n if (image !== null) {\n const key = store.state.settings.account.serviceManagerAccessKey ?? '';\n imageUrl = await httpClient.uploadImageFile(image, key);\n }\n\n service.value.imageUrl = imageUrl;\n },\n );\n\n if (ok) {\n uploadDialog.value = false;\n }\n};\n\nconst weekDaysChanged = (value: number[]) => { value.sort(); service.value.weekDays = value; };\n\nconst saved = ref(false);\n\nconst isLoaded = computed(() => store.getters.isServiceManagerLoaded as boolean);\n\nconst isNew = computed(() => service.value.id <= 0 && isLoaded.value);\n\nconst isChanged = computed(() => !isModelEqualToModel(oldService.value, service.value) && !saved.value);\nuseUnsavedGuard(isChanged);\n\nconst tabs = computed(() => store.state.settings.tabs\n .filter((t) => t.usingWeekdaysAndTimes || service.value.tab?.id === t.id));\n\nconst widgetLink = computed(() => {\n const { defaultAccessKey: apiKey } = store.state.settings.account;\n const { locale, code: serviceCode } = oldService.value;\n if (!apiKey || !serviceCode) return undefined;\n return hostedWidgetURL({ apiKey, serviceCode, locale });\n});\n\nconst fmtShortDate = (d: Date) => localized.veryShortDateText(d);\n\nconst clearButton = (val: any) => (val ? 'mdi-close' : undefined);\n\nconst fixedDurationSet = computed(() => !!service.value.duration);\nconst fixedDurationSetChanged = (val: boolean) => {\n if (!val) service.value.duration = undefined;\n else if (!service.value.duration) service.value.duration = service.value.tab?.duration ?? 60;\n};\n\nconst limitPeriodSet = computed(() => !!service.value.localStartDate && !!service.value.localEndDate);\nconst limitPeriodChanged = (val: boolean) => {\n if (!val) {\n service.value.localStartDate = undefined;\n service.value.localEndDate = undefined;\n } else {\n if (service.value.localStartDate === undefined) service.value.localStartDate = dateFlooredToDate(new Date());\n if (service.value.localEndDate === undefined) service.value.localEndDate = dateFlooredToDate(new Date());\n }\n};\n\nconst blackoutSet = computed(() => service.value.blackouts.length > 0);\nconst blackoutSetChanged = (val: boolean) => {\n if (!val) {\n service.value.blackouts = [];\n } else {\n service.value.blackouts = [\n {\n blackoutStartDate: dateFlooredToDate(new Date()),\n blackoutEndDate: dateFlooredToDate(new Date()),\n },\n ];\n }\n};\n\nconst blackoutStartDateChange = (i: number, date: Date) => {\n const blackout = { ...service.value.blackouts[i] };\n blackout.blackoutStartDate = date;\n service.value.blackouts.splice(i, 1, blackout);\n};\n\nconst blackoutEndDateChange = (i: number, date: Date) => {\n const blackout = { ...service.value.blackouts[i] };\n blackout.blackoutEndDate = date;\n service.value.blackouts.splice(i, 1, blackout);\n};\n\nconst delayedBlur = () => {\n setTimeout(() => (document.activeElement as HTMLElement)?.blur(), 100);\n};\n\nconst addBlackoutRow = () => {\n delayedBlur();\n service.value.blackouts.push({\n blackoutStartDate: dateFlooredToDate(new Date()),\n blackoutEndDate: dateFlooredToDate(new Date()),\n });\n};\n\nconst deleteBlackoutRow = (idx: number) => {\n delayedBlur();\n service.value.blackouts.splice(idx, 1);\n};\n\nconst currencies = computed(() => store.state.serviceManager.currencies);\nconst stripeConfigured = computed(\n () => store.getters.gstplnApps.find((a: GstplnApp) => a.apiName === 'app.stripe')?.installed || false,\n);\nconst stripeConnectConfigured = computed(\n () => store.getters.gstplnApps.find((a: GstplnApp) => a.apiName === 'app.stripe-connect')?.installed || false,\n);\n\n// eslint-disable-next-line vue/max-len\nconst configureStripe = () => router.replace(`/apps/manage/?category=payments&configure=stripe${stripeConnectConfigured.value || (!stripeConfigured.value && !stripeConnectConfigured.value) ? '-connect' : ''}`);\n\nconst stripeSet = computed(() => !!service.value.price || !!service.value.currency);\nconst stripeSetChanged = (val: boolean) => {\n if (!val) {\n service.value.price = undefined;\n service.value.isPricePerPerson = undefined;\n service.value.currency = undefined;\n } else {\n if (service.value.isPricePerPerson === undefined) service.value.isPricePerPerson = false;\n if (service.value.currency === undefined) [service.value.currency] = currencies.value;\n }\n};\n\nconst limitParallelSet = computed(() => !!service.value.maxParallelBookings);\nconst limitParallelSetChanged = (val: boolean) => {\n if (!val) {\n service.value.maxParallelBookings = undefined;\n } else if (service.value.maxParallelBookings === undefined) service.value.maxParallelBookings = 4;\n};\nconst limitParallelItems = ref([...new Array(99)].map((e, i) => i + 1));\n\nconst reset = async () => {\n const route = router.currentRoute;\n\n const id = Number(route.params.id) || 0;\n let s = store.state.serviceManager.services.find((o) => o.id === id);\n\n if (!s) {\n s = new ReservationService();\n s.localStartTime = '06:00';\n s.localEndTime = '23:45';\n s.weekDays = [1, 2, 3, 4, 5, 6, 7];\n s.isActive = true;\n s.isPromoted = true;\n s.isDeposit = true;\n\n if (route.params.id !== 'new') {\n actionShowError(new Error(i18n.tc('error.service_not_found')));\n router.replace('/settings/service-manager/new');\n }\n }\n\n // when making duplicate of a service\n if (s && route.query.action === 'copy') {\n const dup = cloneModel(s);\n dup.id = 0;\n dup.title += ` (${i18n.t('label.copy_of')})`;\n\n oldService.value = new ReservationService();\n service.value = dup;\n } else {\n oldService.value = s;\n service.value = cloneModel(s);\n }\n\n serviceLoaded.value = true;\n};\n\nconst load = async () => {\n if (!store.getters.isServiceManagerLoaded) {\n await performDispatchAction('loadServiceManager', {}, { streamLoad: true }) as ReservationService[] | null;\n }\n reset();\n};\n\nconst refObserver = ref(null as null | InstanceType);\nconst save = async () => {\n service.value.weekDays.sort();\n\n const ok = await performSaveAction(\n refObserver.value,\n async () => store.dispatch('serviceManagerUpdateService', { service: service.value }),\n );\n if (!ok) return;\n saved.value = true;\n router.replace('/settings/service-manager');\n};\n\nconst deleteService = async () => {\n const s = cloneModel(service.value);\n s.isDeleted = true;\n const ok = await performSaveAction(\n undefined,\n async () => store.dispatch('serviceManagerUpdateService', { service: s }),\n );\n if (!ok) return;\n\n router.replace('/settings/service-manager');\n};\n\nconst copySvcCode = () => {\n if (!service.value.code) { return; }\n copy(service.value.code);\n toast.success(i18n.t('message.service_id_copied'));\n};\n\nconst deleteConfirmation = () => {\n showConfirmationDialog(\n i18n.tc('title.service_manager'),\n i18n.tc('message.confirm_delete_service'),\n { title: i18n.tc('button.yes'), action: () => deleteService() },\n { title: i18n.tc('button.cancel') },\n );\n};\n\nonBeforeUnmount(() => {\n unloadStoreModule(\n getCurrentInstance()?.proxy!,\n 'serviceManager',\n async () => { store.dispatch('resetServiceManager'); },\n );\n});\n\nonMounted(() => {\n loadStoreModule(getCurrentInstance()?.proxy!, 'serviceManager', ServiceManagerStore, async () => { load(); });\n});\n\n\nreturn { __sfc: true,router, serviceLoaded, service, oldService, uploadDialog, uploadImage, weekDaysChanged, saved, isLoaded, isNew, isChanged, tabs, widgetLink, fmtShortDate, clearButton, fixedDurationSet, fixedDurationSetChanged, limitPeriodSet, limitPeriodChanged, blackoutSet, blackoutSetChanged, blackoutStartDateChange, blackoutEndDateChange, delayedBlur, addBlackoutRow, deleteBlackoutRow, currencies, stripeConfigured, stripeConnectConfigured, configureStripe, stripeSet, stripeSetChanged, limitParallelSet, limitParallelSetChanged, limitParallelItems, reset, load, refObserver, save, deleteService, copySvcCode, deleteConfirmation, SettingsForm, useSettingsBreadcrumbs, RichTextEditor, ImageUploadDialog, localized, useSeatingTimeItems, useTimeInAdvanceItems, partysizes, useLanguages, ValidationObserver, SettingsGroup, AmountField, fullSwatchPalette, ImagePreviewField, ServiceManagerConditionalPanel }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManagerEditor.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServiceManagerEditor.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./ServiceManagerEditor.vue?vue&type=template&id=77d0f0b0&scoped=true&\"\nimport script from \"./ServiceManagerEditor.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./ServiceManagerEditor.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./ServiceManagerEditor.vue?vue&type=style&index=0&id=77d0f0b0&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"77d0f0b0\",\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('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.saveButtonVisible)?_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_vm.saveButtonEnabled},on:{\"click\":_vm.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1):_vm._e()]},proxy:true},{key:\"content\",fn:function(){return [_c('validation-observer',{ref:\"observer\"},[_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\",\"disabled\":!_vm.isBillingLoaded || !_vm.isBillingAllowed}},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{attrs:{\"cols\":\"12\",\"md\":\"8\"}},[(_vm.alertInfo)?_c('v-alert',{staticClass:\"mb-4\",attrs:{\"dense\":\"\",\"border\":\"left\",\"prominent\":\"\",\"type\":_vm.alertInfo.type,\"color\":_vm.alertInfo.color}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"grow font-weight-medium\"},[_vm._v(\" \"+_vm._s(_vm.alertInfo.message)+\" \")]),_c('v-col',{staticClass:\"shrink\"},[_vm._l((_vm.alertInfo.buttons),function(btn,i){return [_c('v-btn',{key:i,attrs:{\"color\":btn.color},on:{\"click\":function($event){return btn.action()}}},[_vm._v(\" \"+_vm._s(btn.text)+\" \")])]})],2)],1)],1):_vm._e(),_c('v-row',[_c('v-col',{staticClass:\"pt-8\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"alpha_num|min:2|max:11\",\"label\":_vm.$t('label.sender_id'),\"hint\":_vm.senderHint,\"persistent-hint\":\"\"},model:{value:(_vm.sender),callback:function ($$v) {_vm.sender=$$v},expression:\"sender\"}})],1),_c('row-form-divider'),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('section-header',{attrs:{\"title\":_vm.$t('label.sms_credits')}})],1),_c('v-col',{staticClass:\"text--primary pb-0 mb-0\",attrs:{\"cols\":\"12\"}},[_c('sms-balance-chart',{attrs:{\"balance\":_vm.balance}}),_c('p',{staticClass:\"text-center text-caption white-space-preline\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.hint_sms_credits'))+\" \")])],1),(_vm.isBillingSMSPageFull && _vm.isBillingAllowed)?[_c('row-form-divider'),_c('v-col',{staticClass:\"d-flex py-0 pt-1 align-center\",attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-checkbox',{attrs:{\"input-value\":_vm.autorenewEnabled,\"label\":_vm.$t('label.auto_renew_credits')},on:{\"click\":function($event){$event.stopPropagation();return _vm.autorenewChanged(!_vm.autorenewEnabled)}}}),_c('v-chip',{staticClass:\"ml-2\",attrs:{\"x-small\":\"\",\"color\":\"success\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.recommended'))+\" \")])],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[(_vm.autorenewEnabled)?_c('v-select',{staticClass:\"pt-0\",attrs:{\"items\":_vm.pricesInfo,\"hide-details\":\"\"},model:{value:(_vm.autorenewPriceID),callback:function ($$v) {_vm.autorenewPriceID=$$v},expression:\"autorenewPriceID\"}}):_vm._e()],1),(!_vm.autorenewEnabled)?[_c('v-col',{staticClass:\"pt-0 pb-2\",attrs:{\"cols\":\"6\"}},[_c('v-checkbox',{attrs:{\"label\":_vm.$t('label.sms_notify_when_credits_below')},model:{value:(_vm.balanceNotificationEnabled),callback:function ($$v) {_vm.balanceNotificationEnabled=$$v},expression:\"balanceNotificationEnabled\"}})],1),_c('v-col',{staticClass:\"py-2\",attrs:{\"cols\":\"6\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|integer|min_value:0|max_value:1000\",\"label\":_vm.$t('label.threshold'),\"disabled\":!_vm.balanceNotificationEnabled,\"type\":\"integer\"},model:{value:(_vm.balanceNotificationThreshold),callback:function ($$v) {_vm.balanceNotificationThreshold=_vm._n($$v)},expression:\"balanceNotificationThreshold\"}})],1)]:_vm._e(),(_vm.autorenewEnabled)?_c('v-col',{staticClass:\"py-0 my-0\",attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"text-center text-caption\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.hint_sms_credits_autorenew'))+\" \")])]):_vm._e(),(!_vm.autorenewEnabled)?[_c('row-form-divider'),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('section-header',{attrs:{\"title\":_vm.$t('label.sms_purchase_credits')}})],1),_c('v-col',{staticClass:\"pt-0 pb-2 d-flex align-center\",attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"items\":_vm.pricesInfo,\"hide-details\":\"\"},model:{value:(_vm.selectedPriceID),callback:function ($$v) {_vm.selectedPriceID=$$v},expression:\"selectedPriceID\"}})],1)]:_vm._e(),(_vm.isInitialOrder || !_vm.autorenewEnabled)?[_c('v-col',{staticClass:\"pb-5\",attrs:{\"cols\":\"12\"}},[_c('v-btn',{attrs:{\"block\":\"\",\"color\":\"success\",\"disabled\":!_vm.isBillingLoaded},on:{\"click\":_vm.startPayment}},[_c('v-icon',{staticClass:\"mr-2\"},[_vm._v(\" mdi-credit-card \")]),_vm._v(\" \"+_vm._s(_vm.purchaseButtonTitle)+\" \")],1),_c('i18n',{staticClass:\"text-secondary text-center pt-2\",attrs:{\"path\":\"label.billing_all_prices_are_in\",\"tag\":\"p\"}},[(_vm.currencySelectorEnabled)?_c('currency-picker',{attrs:{\"value\":_vm.selectedCurrency},on:{\"input\":_vm.setCurrency}}):_c('span',[_vm._v(\" \"+_vm._s(_vm.currencyText)+\" \")])],1)],1)]:_vm._e()]:_vm._e()],2)],1)],1)],1)],1)]},proxy:true}])},[(_vm.paymentWizardVisible)?_c('payment-wizard',{attrs:{\"mode\":_vm.mode,\"prices\":_vm.paymentWizardPrices},on:{\"close\":_vm.closePaymentWizard}}):_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('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport 'echarts';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\nimport { use } from 'echarts/core';\nimport { PieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart from 'vue-echarts';\n\nuse([\n PieChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'SmsBalanceChart',\n components: {\n VChart,\n },\n props: {\n balance: { type: Number, required: true },\n },\n data() {\n return {\n option: undefined as any,\n themeDark,\n themeLight,\n };\n },\n computed: {\n isDark(): boolean { return this.$vuetify.theme.dark; },\n },\n watch: {\n balance() { this.reset(); },\n isDark() { this.reset(); },\n },\n created() {\n this.reset();\n },\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n const max = Math.max(500, Math.ceil(this.balance / 500) * 500);\n const position = (this.balance / max) < 0.1 ? 'right' : 'inside';\n return {\n grid: {\n left: '0px',\n top: '0px',\n bottom: '24px',\n right: '28px',\n },\n xAxis: {\n type: 'value',\n max,\n axisLabel: {\n padding: [0, 0, 0, 8],\n },\n },\n yAxis: {\n type: 'category',\n show: false,\n data: ['credits'],\n },\n series: [{\n type: 'bar',\n showBackground: true,\n itemStyle: {\n color: '#3355ff',\n },\n cursor: 'default',\n label: {\n show: true,\n color: this.isDark || position === 'inside' ? 'white' : 'black',\n position,\n\n },\n labelLayout: {\n moveOverlap: 'shiftY',\n },\n data: [this.balance],\n }],\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SmsBalanceChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SmsBalanceChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SmsBalanceChart.vue?vue&type=template&id=59e62dea&scoped=true&\"\nimport script from \"./SmsBalanceChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./SmsBalanceChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SmsBalanceChart.vue?vue&type=style&index=0&id=59e62dea&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"59e62dea\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport PaymentWizard from '@/components/views/settings/billing/PaymentWizard.vue';\nimport SectionHeader from '@/components/forms/SectionHeader.vue';\nimport SmsBalanceChart from '@/components/views/settings/SmsBalanceChart.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport BillingStore from '@/store/billing-store';\nimport { performAction, performSaveAction } from '@/services/vue-utils';\nimport {\n Currency,\n Customer,\n InvoiceStatus,\n Price, Product, SMSProduct,\n} from '@/api/api-billing';\nimport {\n AlertInfo, billingCurrencyText, priceText, pricesForProductAndCurrency,\n} from '@/services/billing-utils';\nimport { ValidationObserver } from 'vee-validate';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport CurrencyPicker from '@/components/pickers/CurrencyPicker.vue';\nimport { PaymentWizardMode } from '@/services/payment-wizard-utils';\n\ntype ListInfo = { text: string, value: T, divider?: boolean }[]\n\nexport default Vue.extend({\n name: 'Sms',\n components: {\n SettingsForm, SectionHeader, SmsBalanceChart, PaymentWizard, CurrencyPicker,\n },\n mixins: [UnsavedGuard, SettingsBreadcrumbs],\n data() {\n return {\n breadcrumbs: [],\n\n // balance: 0,\n sender: '',\n autorenewPriceID: null as string | null,\n balanceNotificationThreshold: 100,\n balanceNotificationEnabled: true,\n\n selectedPriceID: null as string | null,\n paymentWizardPrices: [] as Price[],\n paymentWizardVisible: false,\n\n selectedCurrency: Currency.EUR as string,\n };\n },\n computed: {\n mode(): PaymentWizardMode {\n return PaymentWizardMode.Prices;\n },\n senderHint(): string {\n return `${this.sender.length}/11`;\n },\n purchaseButtonTitle(): string {\n let priceID = this.selectedPriceID;\n if (this.isInitialOrder) {\n // initial payment with autorenew price id if enabled\n if (this.autorenewPriceID) priceID = this.autorenewPriceID;\n }\n\n const priceInfo = this.pricesInfo.find((pi) => pi.value === priceID);\n return `${this.$tc('button.purchase')} ${priceInfo?.text ?? ''}`;\n },\n isBillingSMSPageFull(): boolean {\n return this.$tstore.getters.isBillingSMSPageFull as boolean;\n },\n isBillingAllowed(): boolean {\n return this.$tstore.getters.isBillingAllowed as boolean;\n },\n isInitialOrder(): boolean {\n return this.smsProduct === null || !this.smsProduct.latestInvoiceStatus || !this.customer;\n },\n prices(): Price[] {\n const product = this.$tstore.getters.billingSMSPriceProduct as Product | null;\n if (!product) return [];\n const prices = pricesForProductAndCurrency(product, this.selectedCurrency);\n return prices;\n },\n pricesInfo(): ListInfo {\n return this.prices.map((p) => ({ text: priceText(p), value: p.ID! }));\n },\n isBillingLoaded(): boolean {\n return this.$tstore.getters.isBillingLoaded === true;\n },\n balance(): number { return this.smsProduct?.balance ?? 0; },\n autorenewEnabled(): boolean {\n console.log('autorenewEnabled: ', this.autorenewPriceID);\n return this.autorenewPriceID !== null;\n },\n isChanged(): boolean {\n if (this.isInitialOrder) return false; // for unsaved guard\n\n return this.sender.trim() !== (this.smsProduct?.sender ?? '')\n || this.autorenewPriceID !== (this.smsProduct?.autorenewPriceID ?? null)\n || this.balanceNotificationThreshold !== this.smsProduct?.balanceNotificationThreshold\n || this.balanceNotificationEnabled !== (this.smsProduct?.balanceNotificationEnabled ?? false);\n },\n saveButtonVisible(): boolean {\n return this.isBillingLoaded && !this.isInitialOrder;\n },\n saveButtonEnabled(): boolean {\n return this.isBillingLoaded && !this.isInitialOrder && this.isChanged;\n },\n // smsApproved(): boolean {\n // return this.smsProduct !== null;\n // },\n alertInfo(): AlertInfo | null {\n if (!this.isBillingLoaded) return null;\n\n if (!this.isBillingAllowed) {\n return ({\n message: this.$tc('message.billing_warning_billing_navigation_notallowed'),\n type: 'warning',\n color: 'orange',\n buttons: [],\n });\n }\n\n // billing data not loaded -> no alert info yet\n if (!this.isBillingLoaded || this.isInitialOrder || !this.smsProduct) return null;\n\n // failed payment (todo!)\n if (this.smsProduct.latestInvoiceError) {\n return ({\n message: this.$tc('error.payment_latest_invoice_error'),\n type: 'error',\n color: 'red',\n buttons: [\n {\n text: this.$tc('button.show_billing'),\n color: 'error',\n action: () => { this.$router.push('/settings/billing'); },\n },\n ],\n });\n }\n\n // missing payment (open invoice) (todo!)\n if (this.smsProduct.latestInvoiceStatus === InvoiceStatus.Open) {\n return ({\n message: this.$tc('error.payment_invoice_not_closed_pay_invoice'),\n type: 'warning',\n color: 'orange',\n buttons: [\n {\n text: this.$tc('button.show_billing'),\n color: 'orange',\n action: () => { this.$router.push('/settings/billing'); },\n },\n ],\n });\n }\n\n // zero balance\n if (this.smsProduct.balance === 0) {\n return ({\n message: this.$tc('message.sms_credits_depleted_please_renew'),\n type: 'error',\n color: 'red',\n buttons: [],\n });\n }\n\n // low balance\n if (this.smsProduct.balance && this.smsProduct.balance < 10) {\n return ({\n message: this.$t('message.sms_low_credits_warning', [this.smsProduct!.balance]) as string,\n type: 'warning',\n color: 'orange',\n buttons: [],\n });\n }\n\n return null;\n },\n smsProduct(): SMSProduct | null {\n if (!this.isBillingLoaded) return null;\n\n const smsProduct = this.$tstore.getters.billingSMSProduct as SMSProduct | null;\n console.log('smsProduct: ', smsProduct);\n return smsProduct;\n },\n customer(): Customer | null {\n return this.$tstore.getters.billingCustomer;\n },\n currencySelectorEnabled(): boolean {\n return this.customer?.currency === undefined;\n },\n currencyText(): string {\n return billingCurrencyText(this.selectedCurrency);\n },\n },\n created() {\n loadStoreModule(this, 'billing', BillingStore, async () => { this.load(); });\n },\n mounted() {\n },\n async beforeDestroy() {\n unloadStoreModule(this, 'billing', async () => { this.$tstore.dispatch('resetBilling'); });\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('update'),\n );\n },\n methods: {\n async load() {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('loadBilling', { force: true }),\n );\n\n await this.$nextTick();\n\n const customer = this.$tstore.getters.billingCustomer as Customer | null;\n this.selectedCurrency = customer?.currency ?? this.$tstore.getters.billingGuessedCurrency;\n\n const { account } = this.$tstore.state.settings;\n this.sender = this.smsProduct?.sender ?? account.accountName ?? '';\n\n const firstPriceID = this?.prices?.find(Boolean)?.ID ?? null;\n if (this.isInitialOrder) {\n this.autorenewPriceID = firstPriceID;\n } else {\n this.autorenewPriceID = this.smsProduct?.autorenewPriceID ?? null;\n // fix autorenew price id\n if (this.autorenewPriceID && !this.prices.find((p) => p.ID === this.autorenewPriceID)) {\n this.autorenewPriceID = firstPriceID;\n }\n }\n\n this.selectedPriceID = this.autorenewPriceID ?? firstPriceID;\n this.balanceNotificationThreshold = this.smsProduct?.balanceNotificationThreshold ?? 100;\n this.balanceNotificationEnabled = this.smsProduct?.balanceNotificationEnabled ?? false;\n },\n async startPayment() {\n let priceID = this.selectedPriceID;\n\n // initial payment with autorenew price id if enabled\n if (this.isInitialOrder && this.autorenewPriceID) priceID = this.autorenewPriceID;\n\n // save form data before payment\n if (this.isInitialOrder || this.isChanged) {\n const ok = await this.save();\n if (!ok) return;\n }\n\n // open billing wizard\n this.paymentWizardPrices = this.prices?.filter((p) => p.ID === priceID) ?? [];\n this.paymentWizardVisible = true;\n },\n async save(): Promise {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) return false;\n\n const smsProduct: SMSProduct = {\n sender: this.sender.trim(),\n autorenewPriceID: this.autorenewPriceID ?? undefined,\n balanceNotificationThreshold: this.balanceNotificationThreshold,\n balanceNotificationEnabled: this.balanceNotificationEnabled,\n };\n\n const action = this.smsProduct ? 'billingUpdateSMSProduct' : 'billingCreateSMSProduct';\n const ok = await performSaveAction(\n this.$refs.observer,\n async () => this.$tstore.dispatch(action, { smsProduct }),\n );\n\n return ok;\n },\n autorenewChanged(value: boolean) {\n if (!value) {\n this.autorenewPriceID = null;\n this.balanceNotificationThreshold = this.smsProduct?.balanceNotificationThreshold ?? 100;\n this.balanceNotificationEnabled = true;\n } else {\n const firstPriceID = this?.prices?.find(Boolean)?.ID ?? null;\n this.autorenewPriceID = this.smsProduct?.autorenewPriceID ?? null;\n // fix autorenew price id\n if (!this.autorenewPriceID || !this.prices.find((p) => p.ID === this.autorenewPriceID)) {\n this.autorenewPriceID = firstPriceID;\n }\n this.balanceNotificationEnabled = false;\n }\n },\n closePaymentWizard() {\n this.paymentWizardVisible = false;\n this.load();\n },\n setCurrency(curr: string) {\n const api = this.autorenewPriceID ? this.prices.findIndex((p) => p.ID === this.autorenewPriceID) : -1;\n const spi = this.selectedPriceID ? this.prices.findIndex((p) => p.ID === this.selectedPriceID) : -1;\n this.selectedCurrency = curr;\n this.autorenewPriceID = api >= 0 && api < this.prices.length ? this.prices[api].ID! : null;\n this.selectedPriceID = spi >= 0 && spi < this.prices.length ? this.prices[spi].ID! : null;\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sms.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Sms.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Sms.vue?vue&type=template&id=0dc0eaff&\"\nimport script from \"./Sms.vue?vue&type=script&lang=ts&\"\nexport * from \"./Sms.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('v-row',{attrs:{\"justify\":\"center mt-4\"}},[_c('v-col',{attrs:{\"xl\":\"6\",\"lg\":\"8\",\"md\":\"10\",\"cols\":\"12\"}},[_c('v-card',{attrs:{\"elevation\":0,\"outlined\":\"\"}},[_c('v-card-text',[_c('v-list',{staticClass:\"menu\"},[_vm._l((_setup.settingsMenuItems(_setup.isBillingPageAllowed)),function(item,i){return [(item.subitems === undefined)?_c('v-list-item',{key:`settings_${i}`,attrs:{\"to\":item.link,\"disabled\":!item.link,\"link\":\"\"}},[_c('v-list-item-title',{staticClass:\"font-weight-bold\"},[_vm._v(\" \"+_vm._s(item.text)+\" \")])],1):_c('v-list-group',{key:`settings_${i}`,class:[{'mt-4': i > 0}],attrs:{\"no-action\":\"\",\"color\":\"none\",\"value\":\"true\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(){return [_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"font-weight-bold\"},[_vm._v(\" \"+_vm._s(item.text)+\" \")])],1)]},proxy:true}],null,true)},_vm._l((item.subitems),function(subitem,j){return _c('v-list-item',{key:`settings_${i}_${j}`,class:['pl-10', {'mb-4': j === item.subitems.length -1}],attrs:{\"to\":subitem.link,\"disabled\":!subitem.link,\"link\":\"\"}},[_c('v-list-item-title',[_vm._v(_vm._s(subitem.text))])],1)}),1)]})],2)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed } from 'vue';\nimport { settingsMenuItems } from '@/util/menu';\nimport store from '@/store/store';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Settings',\n setup(__props) {\n\nconst isBillingPageAllowed = computed(() => store.getters.isBillingPageAllowed);\n\n\nreturn { __sfc: true,isBillingPageAllowed, settingsMenuItems }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Settings.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Settings.vue?vue&type=template&id=1280c2db&\"\nimport script from \"./Settings.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Settings.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [_c('v-row',{staticClass:\"pa-0\"},[_c('v-col',{class:['d-none d-sm-block',{'calendar-col-compact': _vm.$vuetify.breakpoint.smAndDown}],attrs:{\"cols\":\"3\"}}),_c('v-col',[_c('div',{staticClass:\"d-flex\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"icon\":\"\"},on:{\"click\":_vm.prevDay}},[_c('v-icon',[_vm._v(\"mdi-chevron-left\")])],1),_c('div',{staticClass:\"text-subtitle-1 text-sm-h6 flex-grow-1 text-center\",staticStyle:{\"margin\":\"auto\"}},[_vm._v(\" \"+_vm._s(_vm.$localized.fullDateText(_vm.date) || '')+\" \")]),_c('v-btn',{attrs:{\"color\":\"primary\",\"icon\":\"\"},on:{\"click\":_vm.nextDay}},[_c('v-icon',[_vm._v(\"mdi-chevron-right\")])],1)],1)]),_c('v-col',{class:['text-right',{'calendar-col-compact': _vm.$vuetify.breakpoint.smAndDown}],attrs:{\"cols\":\"3\"}},[_c('v-menu',{attrs:{\"offset-y\":\"\",\"close-on-content-click\":false},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"mr-0\",attrs:{\"color\":\"primary\",\"outlined\":\"\"}},on),[_c('v-icon',[_vm._v(\"mdi-calendar-month\")]),_c('span',{staticClass:\"pl-1 d-none d-md-block\"},[_vm._v(_vm._s(_vm.$t('button.select_date')))])],1)]}}]),model:{value:(_vm.timeMenu),callback:function ($$v) {_vm.timeMenu=$$v},expression:\"timeMenu\"}},[_c('v-container',{staticClass:\"pa-0\"},[_c('v-date-picker',{staticClass:\"date-picker-menu\",attrs:{\"value\":_vm.dateString,\"first-day-of-week\":_vm.$localized.firstDayOfWeek(),\"no-title\":\"\",\"color\":\"brand\",\"scrollable\":\"\"},on:{\"input\":_vm.updateDate}})],1)],1)],1)],1),_c('v-row',{staticClass:\"pt-2 d-flex justify-center\"},[_c('v-btn',{staticClass:\"ma-2\",attrs:{\"block\":_vm.$vuetify.breakpoint.xsOnly,\"color\":\"error\"},on:{\"click\":function($event){_vm.closeConfirmation = true}}},[_c('v-icon',[_vm._v(\" mdi-alarm-off \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.close_all_slots'))+\" \")],1),_c('v-btn',{staticClass:\"ma-2\",attrs:{\"block\":_vm.$vuetify.breakpoint.xsOnly,\"color\":\"primary\"},on:{\"click\":function($event){_vm.resetConfirmation = true}}},[_c('v-icon',[_vm._v(\" mdi-alarm \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.reset_to_default'))+\" \")],1)],1),_c('v-row',[_c('hour-slots-grid',{attrs:{\"hour-slots\":_vm.hourSlots,\"profiles\":_vm.profiles,\"enable-reset\":false},on:{\"profile-selected\":_vm.profileSelected}})],1)]},proxy:true}])},[_c('confirmation-dialog',{attrs:{\"visible\":_vm.closeConfirmation,\"message\":_vm.$t('message.confirm_disable_all_day')},on:{\"confirm\":_vm.closeSlots,\"close\":function($event){_vm.closeConfirmation = false}}}),_c('confirmation-dialog',{attrs:{\"visible\":_vm.resetConfirmation,\"message\":_vm.$t('message.confirm_reset_all_day')},on:{\"confirm\":_vm.resetSlots,\"close\":function($event){_vm.resetConfirmation = false}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport {\n dateByAddingDays, dateTimeIndexFromDateAndTimeIndex, dateIndexFromDate,\n MORNING_TIME_SLOTS_COUNT, DAY_TIME_SLOTS_COUNT,\n dateStringFromDate8601, dateFromDateString8601, timeIndexFromSlot, weekdayNumberFromDateDay,\n} from '@/services/time-utils';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport { performSaveAction } from '@/services/vue-utils';\nimport OpeningHour from '@/model/OpeningHour';\nimport DateAndTime from '@/model/DateAndTime';\nimport TimeSlot from '@/model/TimeSlot';\nimport HourSlotProfile, { profilesFromHours } from '@/model/HourSlotProfile';\nimport HourSlotsGrid, { HourSlotMenuItemType } from '@/components/views/settings/HourSlotsGrid.vue';\nimport HourSlot from '@/model/HourSlot';\n\nexport default Vue.extend({\n name: 'SpecialHours',\n components: {\n ConfirmationDialog, SettingsForm, HourSlotsGrid,\n },\n mixins: [SettingsBreadcrumbs],\n data() {\n return {\n date: new Date(),\n timeMenu: false,\n closeConfirmation: false,\n resetConfirmation: false,\n breadcrumbs: [],\n unwatch: Function as (() => void),\n };\n },\n computed: {\n dateString(): string {\n return dateStringFromDate8601(this.date)!;\n },\n hourSlots(): (TimeSlot | null)[] {\n const ohmap = new Map();\n const weekdayNumber = weekdayNumberFromDateDay(this.date.getDay());\n const openingHours = this.$tstore.state.settings.openingHours as OpeningHour[];\n openingHours.forEach((o) => { if (o.weekdayNumber === weekdayNumber) ohmap.set(o.timeIndex, o); });\n\n const shmap = new Map();\n const dateIndex = dateIndexFromDate(this.date);\n const dateSlot = this.$tstore.state.reservations.dateSlotsByDateIndex[dateIndex];\n (dateSlot?.datesAndTimes ?? []).forEach((o) => { shmap.set(o.timeIndex, o); });\n\n const slots: (TimeSlot|null)[] = [];\n for (let si = MORNING_TIME_SLOTS_COUNT; si < DAY_TIME_SLOTS_COUNT; si += 1) {\n const ti = timeIndexFromSlot(si);\n const oh = ohmap.get(ti) ?? undefined;\n const sh = shmap.get(ti) ?? undefined;\n const dti = dateTimeIndexFromDateAndTimeIndex(dateIndex, ti);\n\n const ts = oh || sh ? new TimeSlot(si, dti, sh, oh) : null;\n\n slots.push(ts);\n }\n\n return slots;\n },\n profilesById(): Map {\n const openingHours = this.$tstore.state.settings.openingHours as OpeningHour[];\n const datesAndTimes = this.$tstore.getters.datesAndTimes as DateAndTime[];\n return profilesFromHours([...openingHours, ...datesAndTimes]);\n },\n profiles(): HourSlotProfile[] {\n return Array.from(this.profilesById.values());\n },\n },\n beforeDestroy() {\n this.unwatch();\n },\n methods: {\n async profileSelected(hourIndex: number, type: number, IDOrHourSlot: number | HourSlot) {\n const slotIndex = hourIndex + MORNING_TIME_SLOTS_COUNT;\n const dateAndTime = DateAndTime.fromDateAndSlot(this.date, slotIndex);\n dateAndTime.isOpen = true;\n let profile: HourSlotProfile | undefined;\n\n let isDeleted = false;\n\n switch (type) {\n case HourSlotMenuItemType.CLOSED:\n // closed - closed special hour\n dateAndTime.isOpen = false;\n break;\n case HourSlotMenuItemType.OPEN:\n // just open - use empty special hour\n break;\n case HourSlotMenuItemType.CUSTOM:\n // existing custom - fill and use special hour from existing profile\n profile = this.profilesById.get(IDOrHourSlot as number);\n dateAndTime.setParams(profile ?? {});\n break;\n case HourSlotMenuItemType.CUSTOM_NEW:\n // new custom - fill and use special hour from values\n dateAndTime.setParams(IDOrHourSlot as HourSlot);\n break;\n case HourSlotMenuItemType.RESET:\n // reset - remove special hour and return !\n isDeleted = true;\n break;\n default:\n break;\n }\n\n // save hour\n const ok = await performSaveAction(\n undefined,\n async () => this.$tstore.dispatch('sendDateAndTime', { entity: dateAndTime, isDeleted }),\n );\n },\n updateDate(value: string) {\n this.timeMenu = false;\n this.date = dateFromDateString8601(value)!;\n },\n prevDay() {\n this.date = dateByAddingDays(new Date(this.date), -1);\n },\n nextDay() {\n this.date = dateByAddingDays(new Date(this.date), 1);\n },\n closeSlots() {\n this.closeOrResetSlots(true);\n },\n resetSlots() {\n this.closeOrResetSlots(false);\n },\n async closeOrResetSlots(close: boolean) {\n const di = dateIndexFromDate(this.date);\n const dti = dateTimeIndexFromDateAndTimeIndex(di, 0);\n\n const dt = new DateAndTime();\n dt.id = dti;\n dt.isOpen = !close;\n\n const ok = await performSaveAction(\n undefined,\n async () => this.$tstore.dispatch('sendDateAndTime', { entity: dt }),\n );\n },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpecialHours.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SpecialHours.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SpecialHours.vue?vue&type=template&id=7975dc99&scoped=true&\"\nimport script from \"./SpecialHours.vue?vue&type=script&lang=ts&\"\nexport * from \"./SpecialHours.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SpecialHours.vue?vue&type=style&index=0&id=7975dc99&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7975dc99\",\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('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\"},on:{\"click\":_vm.add}},[_c('v-icon',[_vm._v(\"mdi-plus\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.new_messaging_rule'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [_c('section-header',{attrs:{\"title\":_vm.$t('label.default_messages')}}),_c('message-center-rules-table',{attrs:{\"rules\":_vm.builtinRules},on:{\"row-clicked\":_vm.edit}}),_c('section-header',{attrs:{\"title\":_vm.$t('label.custom_messages')}}),_c('message-center-rules-table',{attrs:{\"rules\":_vm.customRules,\"show-details\":\"\"},on:{\"row-clicked\":_vm.edit}})]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-data-table',{staticClass:\"clickable-table\",attrs:{\"headers\":_vm.headers,\"items\":_vm.rules,\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"mobile-breakpoint\":\"0\"},on:{\"click:row\":_vm.edit},scopedSlots:_vm._u([{key:\"item.eventType\",fn:function(props){return [_c('span',{class:props.item.isInactive ? 'grey--text' : ''},[_vm._v(_vm._s(props.item.eventType.text))])]}},{key:\"item.messageType.text\",fn:function(props){return [_c('span',{class:props.item.isInactive ? 'grey--text' : ''},[_vm._v(_vm._s(props.item.messageType.text))])]}},{key:\"item.campaign.description\",fn:function(props){return [(props.item.campaign)?[_c('span',{class:props.item.isInactive ? 'grey--text' : ''},[_vm._v(_vm._s(props.item.campaign.description))])]:_c('span',{class:props.item.isInactive ? 'grey--text' : 'text--secondary'},[_vm._v(\"(\"+_vm._s(_vm.$i18n.t('label.table_value_any'))+\")\")])]}},{key:\"item.service.title\",fn:function(props){return [(props.item.service)?[_c('span',{class:props.item.isInactive ? 'grey--text' : ''},[_vm._v(_vm._s(props.item.service.title))])]:_c('span',{class:props.item.isInactive ? 'grey--text' : 'text--secondary'},[_vm._v(\"(\"+_vm._s(_vm.$i18n.t('label.table_value_any'))+\")\")])]}},{key:\"item.tab.name\",fn:function(props){return [(props.item.tab)?[_c('span',{class:props.item.isInactive ? 'grey--text' : ''},[_vm._v(_vm._s(props.item.tab.name))])]:_c('span',{class:props.item.isInactive ? 'grey--text' : 'text--secondary'},[_vm._v(\"(\"+_vm._s(_vm.$i18n.t('label.table_value_any'))+\")\")])]}},{key:\"item.isInactive\",fn:function(props){return [(!props.item.isInactive)?_c('v-chip',{attrs:{\"color\":\"success\",\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.active'))+\" \")]):_c('v-chip',{attrs:{\"color\":\"gray\",\"small\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.inactive'))+\" \")])]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport MessageRule from '@/model/MessageRule';\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'MessageCenterRulesTable',\n components: { },\n mixins: [],\n props: {\n rules: { type: Object as PropType>, required: true },\n showDetails: { type: Boolean, required: false, default: false },\n },\n data() {\n return {\n };\n },\n computed: {\n headers(): any[] {\n const headers : any[] = [\n {\n text: this.$i18n.t('label.event_type'),\n value: 'eventType',\n align: 'start',\n sortable: false,\n },\n ];\n\n if (this.showDetails) {\n headers.push(\n {\n text: this.$i18n.t('label.campaign'),\n value: 'campaign.description',\n align: 'center',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.service'),\n value: 'service.title',\n align: 'center',\n sortable: false,\n },\n {\n text: this.$i18n.t('label.section'),\n value: 'tab.name',\n align: 'center',\n sortable: false,\n },\n );\n }\n\n headers.push(\n {\n text: this.$i18n.t('title.message_type'),\n value: 'messageType.text',\n align: 'center',\n sortable: false,\n width: '120px',\n },\n {\n text: this.$i18n.t('label.active'),\n value: 'isInactive',\n align: 'center',\n sortable: false,\n width: '100px',\n },\n );\n return headers;\n },\n },\n watch: {\n\n },\n mounted() {\n\n },\n methods: {\n edit(o: any, prop: any) {\n if (o.isDisabled) return;\n this.$emit('row-clicked', o);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenterRulesTable.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenterRulesTable.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageCenterRulesTable.vue?vue&type=template&id=12a42948&\"\nimport script from \"./MessageCenterRulesTable.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageCenterRulesTable.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport MessageCenterRulesTable from '@/components/views/settings/MessageCenterRulesTable.vue';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport { performAction } from '@/services/vue-utils';\nimport MessageRule from '@/model/MessageRule';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport MessageCenterStore from '@/store/message-center-store';\nimport { MessageTypeChannel } from '@/model/MessageType';\n\nexport default Vue.extend({\n name: 'MessageCenter',\n components: { SettingsForm, MessageCenterRulesTable },\n mixins: [SettingsBreadcrumbs],\n data() {\n return {\n breadcrumbs: [],\n };\n },\n computed: {\n customRules(): MessageRule[] {\n return this.$tstore.getters.customRules;\n },\n builtinRules(): MessageRule[] {\n return this.$tstore.getters.builtinRules;\n },\n },\n created() {\n loadStoreModule(this, 'messageCenter', MessageCenterStore, async () => { this.load(); });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'messageCenter', async () => { this.$tstore.dispatch('resetMessageCenter'); });\n },\n methods: {\n async load() {\n if (this.$tstore.getters.isMessageCenterLoaded) return;\n const ok = await performAction(\n null,\n this.$i18n.tc('error.load_message_center'),\n async () => this.$tstore.dispatch('loadMessageCenter'),\n );\n\n if (!ok) return;\n\n const messageChannel = this.$route.query['message-channel'] as string;\n const evenType = this.$route.query['event-type'] as string;\n\n if (messageChannel && evenType) {\n const rule = this.builtinRules.find(\n (r) => r.eventType?.type === evenType && r.messageType?.channel === MessageTypeChannel.EMAIL,\n );\n if (rule) this.edit({ id: rule?.id }, undefined);\n }\n },\n edit(o: any, prop: any) {\n this.$router.push(`/settings/message-center/${o.id}`);\n },\n add() {\n this.$router.push('/settings/message-center/new');\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenter.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenter.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageCenter.vue?vue&type=template&id=38311e3a&\"\nimport script from \"./MessageCenter.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageCenter.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reservations-toolbar',{attrs:{\"print-visible\":false,\"reservations\":_vm.reservations,\"waitlist-popout\":\"\"}},[_c('v-select',{staticClass:\"mr-5 mt-2\",staticStyle:{\"max-width\":\"200px\"},attrs:{\"value\":_vm.tab,\"items\":_vm.tabs,\"hide-details\":\"\",\"label\":_vm.$i18n.t('label.section'),\"return-object\":\"\",\"dense\":\"\"},on:{\"input\":_vm.tabSelected}}),_c('v-checkbox',{attrs:{\"input-value\":_vm.showDetails,\"label\":_vm.$t('label.show_details'),\"hide-details\":\"\",\"dense\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.setShowDetails(!_vm.showDetails)}}})],1)]},proxy:true}])},[_c('v-row',{staticClass:\"ma-0 py-0\"},[_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_c('numeric-list-card',{attrs:{\"title\":`${_vm.$t('label.guests')}/${_vm.$t('label.reservations')}`,\"list-titles\":[_vm.$t('label.section'), _vm.$t('label.guests'), 'Res.'],\"list-values\":_vm.guestsForSections,\"count\":`${_vm.dayStats.guests}/${_vm.dayStats.reservations}`,\"no-values-label\":_vm.$t('label.no_reservations'),\"show-details\":_vm.showDetails}})],1),_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_c('numeric-list-card',{attrs:{\"title\":_vm.$t('label.lunch_and_dinner_guests'),\"list-titles\":[_vm.$t('label.section'), _vm.$t('label.Lunch'), _vm.$t('label.Dinner')],\"list-values\":_vm.lunchDinnerForSections,\"count\":`${_vm.dayStats.lunch}/${_vm.dayStats.dinner}`,\"no-values-label\":_vm.$t('label.no_reservations'),\"show-details\":_vm.showDetails}})],1),_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_c('numeric-list-card',{attrs:{\"title\":_vm.$t('label.labeled_guests_reservations'),\"list-titles\":[_vm.$t('label.label'), _vm.$t('label.guests'), _vm.$t('label.reservations_short')],\"list-values\":_vm.guestsForLabels,\"no-values-label\":_vm.$t('label.no_labeled_reservations'),\"count\":`${_vm.dayStats.labeledGuests}/${_vm.dayStats.labeledReservations}`,\"show-details\":_vm.showDetails}})],1),_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"6\",\"md\":\"3\"}},[_c('numeric-list-card',{attrs:{\"title\":_vm.$t('label.service_guests_reservations'),\"list-titles\":[_vm.$t('label.service'), _vm.$t('label.guests'), _vm.$t('label.reservations_short')],\"list-values\":_vm.guestsForServices,\"no-values-label\":_vm.$t('label.no_service_reservations'),\"count\":`${_vm.dayStats.serviceGuests}/${_vm.dayStats.serviceReservations}`,\"show-details\":_vm.showDetails}})],1)],1),(!_vm.availabilityHidden)?_c('v-row',{staticClass:\"ma-0 pa-0\"},[_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"12\"}},[_c('available-party-size-card',{attrs:{\"day-availability\":_vm.dayAvailability,\"day-limits\":_vm.dayLimits,\"disabled\":_vm.availabilityDisabled,\"tabs\":_vm.availabilityTabs},on:{\"grid-clicked\":_vm.makeReservation}}),_c('v-divider')],1)],1):_vm._e(),_c('v-row',{staticClass:\"ma-0 pa-0\"},[_c('v-col',{staticClass:\"pa-0\",attrs:{\"cols\":\"12\"}},[_c('hourly-guests-card',{attrs:{\"dataset-seated\":_vm.datasetSeated,\"dataset-incoming\":_vm.datasetIncoming,\"dataset-incoming-limit\":_vm.datasetIncomingLimit,\"dataset-seated-limit\":_vm.datasetSeatedLimit,\"dataset-incoming-limit-visible\":_vm.datasetIncomingLimitVisible,\"dataset-seated-limit-visible\":_vm.datasetSeatedLimitVisible}})],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('v-card',{staticClass:\"pa-5\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"text-overline text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.guests_per_time'))+\" \")]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport 'echarts';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport { localize } from 'vee-validate';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { PieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart from 'vue-echarts';\n\nuse([\n PieChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'HourlyGuestsCard',\n components: {\n VChart,\n },\n props: {\n datasetSeated: { type: Object as PropType>, required: true },\n datasetIncoming: { type: Object as PropType>, required: true },\n datasetSeatedLimit: { type: Object as PropType>, required: true },\n datasetIncomingLimit: { type: Object as PropType>, required: true },\n datasetSeatedLimitVisible: { type: Boolean as PropType, required: false, default: true },\n datasetIncomingLimitVisible: { type: Boolean as PropType, required: false, default: true },\n },\n data() {\n return {\n option: (this as any).createDataset(),\n themeDark,\n themeLight,\n };\n },\n computed: {\n dark(): boolean {\n return this.$vuetify.theme.dark;\n },\n },\n watch: {\n dark() {\n this.updateDataset();\n },\n datasetSeated: {\n deep: true,\n handler() {\n this.updateDataset();\n },\n },\n datasetIncoming: {\n deep: true,\n handler() {\n this.updateDataset();\n },\n },\n datasetIncomingLimit: {\n deep: true,\n handler() {\n this.updateDataset();\n },\n },\n datasetSeatedLimit: {\n deep: true,\n handler() {\n this.updateDataset();\n },\n },\n datasetSeatedLimitVisible() {\n this.updateDataset();\n },\n datasetIncomingLimitVisible() {\n this.updateDataset();\n },\n },\n\n methods: {\n createDataset(): any {\n const dsIncoming = this.datasetIncoming.map((val, i) => {\n if (val[1] > this.datasetIncomingLimit[i][1] && this.datasetIncomingLimitVisible) {\n return {\n value: val,\n itemStyle: {\n color: '#FF002B',\n },\n };\n }\n return val;\n });\n const dsSeated = this.datasetSeated.map((val, i) => {\n if (val[1] > this.datasetSeatedLimit[i][1] && this.datasetSeatedLimitVisible) {\n return {\n value: val,\n itemStyle: {\n color: '#ff8095',\n },\n };\n }\n return val;\n });\n\n const incomingLimitGradient = this.$vuetify.theme.dark\n ? [{ offset: 0, color: '#F3F5FF18' }, { offset: 1, color: '#F9FAFF02' }]\n : [{ offset: 0, color: '#3355ff18' }, { offset: 1, color: '#3355ff02' }];\n\n const series = [\n {\n name: this.$i18n.t('label.seated_guests'),\n type: 'bar',\n barGap: '-100%',\n zlevel: 9,\n data: dsSeated,\n itemStyle: {\n color: '#8599ff',\n },\n },\n {\n name: this.$i18n.t('label.incoming_guests'),\n type: 'bar',\n barGap: '-100%',\n zlevel: 10,\n data: dsIncoming,\n itemStyle: {\n color: '#3355ff',\n },\n }] as any[];\n\n if (this.datasetSeatedLimitVisible) {\n series.push(\n {\n name: this.$i18n.t('label.online_capacity'),\n type: 'line',\n step: 'middle',\n zlevel: 2,\n data: this.datasetSeatedLimit,\n symbol: 'none',\n itemStyle: {\n color: '#ff3d94',\n },\n lineStyle: {\n color: '#ff3d94',\n },\n },\n );\n }\n\n if (this.datasetIncomingLimitVisible) {\n series.push(\n {\n name: this.$i18n.t('label.max_guests_limit'),\n type: 'line',\n step: 'middle',\n zlevel: 1,\n data: this.datasetIncomingLimit,\n symbol: 'none',\n emphasis: {\n scale: false,\n lineStyle: {\n width: 0.5,\n },\n },\n itemStyle: {\n color: '#3355ff18',\n },\n lineStyle: {\n color: this.$vuetify.theme.dark ? 'white' : '#1C1A27',\n width: 0.5,\n type: [2, 4],\n },\n areaStyle: {\n color: {\n type: 'linear',\n x: 0,\n y: 0,\n x2: 0,\n y2: 1,\n colorStops: incomingLimitGradient,\n },\n },\n },\n );\n }\n\n return {\n grid: {\n left: '32px',\n top: '16px',\n right: '16px',\n bottom: '56px',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'line',\n axis: 'x',\n },\n formatter(params: any) {\n const tooltipString = [] as any[];\n const d = params[0].data[0] ?? params[0].data.value[0] as Date;\n const t = `

${localized.shortDayMonthText(d)} ${localized.hourMinText(d)}

`;\n tooltipString.push(t);\n params.forEach((p: any) => {\n const cont = `${p.marker} ${p.seriesName}: ${p.value[1] ?? '-'}
`;\n tooltipString.push(cont);\n });\n return tooltipString.join('');\n },\n extraCssText: 'min-width: 200px; max-width: 600px',\n },\n legend: {\n bottom: 'bottom',\n selectedMode: false,\n },\n xAxis: {\n splitNumber: 16,\n type: 'time',\n splitLine: {\n show: true,\n },\n minorSplitLine: {\n show: true,\n },\n minorTick: {\n show: true,\n splitNumber: 4,\n },\n axisLabel: {\n formatter: (d: Date) => localized.hourMinText(d),\n },\n },\n yAxis: {\n type: 'value',\n },\n series,\n };\n },\n updateDataset() {\n this.option = this.createDataset();\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HourlyGuestsCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HourlyGuestsCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./HourlyGuestsCard.vue?vue&type=template&id=07f2af24&scoped=true&\"\nimport script from \"./HourlyGuestsCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./HourlyGuestsCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./HourlyGuestsCard.vue?vue&type=style&index=0&id=07f2af24&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"07f2af24\",\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('v-sheet',{staticClass:\"pa-0 pb-5 h-100\",staticStyle:{\"border-top\":\"0px\",\"margin-left\":\"-1px\"},attrs:{\"outlined\":\"\"}},[_c('div',{staticClass:\"text-overline text-secondary pt-3 pl-5\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('span',{staticClass:\"text-h4 pl-5\"},[_vm._v(\" \"+_vm._s(_vm.count)+\" \")]),_c('v-expand-transition',{attrs:{\"leave-absolute\":\"\"}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDetails),expression:\"showDetails\"}]},[_c('v-divider',{staticClass:\"mt-5 mb-5 mx-5\"}),(_vm.listValues.length > 0)?_c('v-simple-table',{staticClass:\"mx-5\",attrs:{\"dense\":\"\"}},[_c('thead',[_c('tr',_vm._l((_vm.listTitles),function(t,i){return _c('td',{key:i,class:['font-weight-medium', {'px-2 text-center': i>0}],style:(i === 0 ? 'min-width: 55%': '')},[_vm._v(\" \"+_vm._s(t)+\" \")])}),0)]),_c('tbody',_vm._l((_vm.listValues),function(v,i){return _c('tr',{key:i},[_c('td',[(v.color)?_c('v-icon',{staticStyle:{\"padding-bottom\":\"1px\"},attrs:{\"x-small\":\"\",\"color\":v.color}},[_vm._v(\" mdi-circle \")]):_vm._e(),_vm._v(\" \"+_vm._s(v.text)+\" \")],1),_c('td',{staticClass:\"font-weight-medium text-center\"},[_vm._v(\" \"+_vm._s(v.guests)+\" \")]),_c('td',{staticClass:\"font-weight-medium text-center\"},[_vm._v(\" \"+_vm._s(v.reservations)+\" \")])])}),0)]):_c('div',{staticClass:\"text-center\"},[_c('span',{staticClass:\"text--secondary subtitle-1\"},[_vm._v(_vm._s(_vm.noValuesLabel))])])],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\n\nexport default Vue.extend({\n name: 'NumericListCard',\n components: { },\n props: {\n title: { type: String, required: true },\n count: { type: String, required: true },\n listTitles: { type: Object as PropType>, required: true },\n listValues: {\n type: Object as PropType>,\n required: true,\n },\n noValuesLabel: { type: String, required: false, default: '' },\n showDetails: { type: Boolean, required: false, default: false },\n },\n data() {\n return { };\n },\n computed: { },\n mounted() { },\n methods: { },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NumericListCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NumericListCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./NumericListCard.vue?vue&type=template&id=1a20d8a7&\"\nimport script from \"./NumericListCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./NumericListCard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"pa-5 pb-0\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"text-overline text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.online_availability'))+\" \")]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"},on:{\"click\":_vm.click}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\nimport Vue, { PropType } from 'vue';\nimport 'echarts';\nimport VChart from 'vue-echarts';\n\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\nimport DashboardAvailability, {\n DashboardAvailabilityFlag, DashboardChartData, DashboardLimitData, DashboardLimitReason,\n} from '@/grpc-api/model/dashboard-availability';\nimport { DAY_TIME_SLOTS_COUNT, MORNING_TIME_SLOTS_COUNT, niceTimeTextFromSlot } from '@/services/time-utils';\nimport Tab from '@/model/Tab';\n\nexport default Vue.extend({\n name: 'AvailablePartySizeCard',\n components: {\n VChart,\n },\n props: {\n maxPartySize: { type: Number as PropType, required: false, default: 12 },\n dayAvailability: { type: Object as PropType, required: false, default: null },\n dayLimits: { type: Object as PropType|null>, required: false, default: null },\n disabled: { type: Boolean as PropType, required: false, default: true },\n tabs: { type: Array as PropType>, required: false, default: () => [] },\n },\n data() {\n return {\n option: (this as any).createDataset(),\n hours: [] as string[],\n partySizes: [] as string[],\n data: [] as [number, number, number, any?][],\n dataDetails: [] as {p:number, c:number, d:number, xs:number}[][],\n limitDetails: [] as { r: DashboardLimitReason, p?: number}[],\n themeDark,\n themeLight,\n };\n },\n computed: {\n darkMode(): boolean {\n return this.$vuetify.theme.dark;\n },\n },\n watch: {\n dayAvailability() {\n this.updateDataset();\n },\n dayLimits() {\n this.updateDataset();\n },\n tabs() {\n this.updateDataset();\n },\n disabled() {\n this.updateDataset();\n },\n darkMode() {\n this.updateDataset();\n },\n },\n mounted() {\n this.$nextTick(() => {\n this.updateDataset();\n });\n },\n methods: {\n click(event: any) {\n this.$emit('grid-clicked', { timeSlot: event.data[0], partySize: event.data[1] + 1 });\n },\n formatPoint(p: any) {\n const wrapfnc = (line: string, detail?: string) => {\n let body = line;\n if (detail) body += `

${detail}

`;\n return `
${body}
`;\n };\n\n const states = [\n this.$i18n.t('label.available'),\n this.$i18n.t('label.mixed'),\n this.$i18n.t('label.unavailable'),\n this.$i18n.t('label.unavailable'),\n this.$i18n.t('label.closed'),\n ];\n const slot = p.value[0] + MORNING_TIME_SLOTS_COUNT;\n const isPlus = p.value[1] + 1 === this.maxPartySize;\n const partySize = isPlus ? '12+' : p.value[1] + 1;\n\n const line = `${p.name}
${p.marker} ${p.seriesName} ${partySize}: ${states[p.value[2]]}
`;\n let detail: string|undefined;\n\n const lr = this.limitDetails[p.dataIndex];\n if (\n (p.value[2] === DashboardAvailabilityFlag.NO_CLOSED || p.value[2] === DashboardAvailabilityFlag.NO_LIMITED)\n && lr && lr.r !== DashboardLimitReason.None) {\n detail = this.$i18n.t(`code.dashboard_limit_reason.${lr.r}`, [lr.p || '-']) as string;\n } else if (p.value[2] === DashboardAvailabilityFlag.NO_ALLOCATIONS) {\n detail = this.$i18n.t('code.dashboard_limit_reason.no_allocations') as string;\n } else if (p.value[2] === DashboardAvailabilityFlag.MIXED) {\n const prs = this.dataDetails[p.dataIndex];\n if (prs && prs.length > 0) {\n const maxc = Math.max(...prs.map((pr) => pr.c ?? 0));\n const slotc = Math.ceil(maxc / 15);\n const timeText = niceTimeTextFromSlot(slot + slotc);\n const durationText = this.$localized.durationFromSeconds(maxc * 60);\n detail = this.$i18n.t('code.dashboard_limit_reason.limited_duration', [timeText, durationText]) as string;\n }\n }\n\n if (process.env.VUE_APP_SHOW_DASHBOARD_DETAILS === 'true') {\n const prs = this.dataDetails[p.dataIndex];\n const extra = prs.map((pr) => {\n const tab = this.tabs.find((t) => t.id === pr.xs)?.name;\n return `${tab}: p:${pr.p} c:${pr.c ?? '-'} d:${pr.d}`;\n }).join(',
');\n\n if (detail) detail = [detail, extra].join('
');\n else detail = extra;\n }\n\n return wrapfnc(line, detail);\n },\n createDataset() {\n const i18n = this.$i18n;\n return {\n tooltip: {\n formatter: this.formatPoint,\n },\n grid: {\n left: '32px',\n right: '16px',\n top: '16px',\n },\n xAxis: {\n type: 'category',\n data: this.hours,\n axisLabel: {\n interval: 3,\n },\n splitArea: {\n show: false,\n },\n },\n yAxis: {\n type: 'category',\n data: this.partySizes,\n splitArea: {\n show: false,\n },\n },\n visualMap: {\n type: 'piecewise',\n inRange: {\n color: [\n '#00A26F', // yes\n '#ffc24e', // mixed\n '#FF8262', // no - limited\n '#FF002B', // no - no allocations\n this.darkMode ? '#3F3F49' : '#EAEAEB', // no - closed\n ],\n },\n min: -0.5,\n max: 4.5,\n splitNumber: 5,\n showLabel: true,\n calculable: true,\n orient: 'horizontal',\n left: 'center',\n bottom: '5%',\n formatter(val1: any, val2: any) {\n console.log('formatter: ', val1, val2);\n if (val1 === DashboardAvailabilityFlag.YES - 0.5) { return i18n.t('label.available'); }\n if (val1 === DashboardAvailabilityFlag.MIXED - 0.5) { return i18n.t('label.mixed'); }\n if (val1 === DashboardAvailabilityFlag.NO_ALLOCATIONS - 0.5) { return i18n.t('label.unavailable_no_allocations'); }\n if (val1 === DashboardAvailabilityFlag.NO_LIMITED - 0.5) { return i18n.t('label.unavailable_limited'); }\n if (val1 === DashboardAvailabilityFlag.NO_CLOSED - 0.5) { return i18n.t('label.closed'); }\n return 'N/A';\n },\n hoverLink: false,\n },\n series: [\n {\n itemStyle: {\n borderWidth: 2,\n borderColor: this.darkMode ? '#1E1E2B' : 'white',\n },\n name: this.$i18n.t('label.party_size'),\n type: 'heatmap',\n data: this.data,\n selectedMode: false,\n emphasis: {\n itemStyle: {\n shadowBlur: 2,\n shadowColor: 'rgba(0, 0, 0, 0.5)',\n },\n },\n },\n ],\n };\n },\n createHours(): string[] {\n return [...new Array(DAY_TIME_SLOTS_COUNT - MORNING_TIME_SLOTS_COUNT)].map((_, i) => {\n const si = MORNING_TIME_SLOTS_COUNT + i;\n const tm = niceTimeTextFromSlot(si);\n return tm;\n });\n },\n createPartySizes(): string[] {\n return [...new Array(this.maxPartySize)].map(\n (_, i) => (i + 1 === this.maxPartySize ? `${i + 1}+` : `${i + 1}`),\n );\n },\n createData(): DashboardChartData[] {\n if (this.disabled || !this.dayAvailability || !this.dayLimits) return [];\n\n const tabIds = this.tabs.map((t) => t.id);\n const data = this.dayAvailability.toChartData(tabIds, this.dayLimits, this.maxPartySize);\n return data;\n },\n updateDataset() {\n this.hours = this.createHours();\n this.partySizes = this.createPartySizes();\n const data = this.createData();\n // console.log('createData: ', data);\n this.data = data.map((a) => [a.si, a.ps - 1, a.flag]);\n this.dataDetails = data.map((a) => a.prs);\n this.limitDetails = data.map((a) => ({ r: a.lr, p: a.lrp }));\n this.option = this.createDataset();\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AvailablePartySizeCard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AvailablePartySizeCard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AvailablePartySizeCard.vue?vue&type=template&id=bd5c2036&scoped=true&\"\nimport script from \"./AvailablePartySizeCard.vue?vue&type=script&lang=ts&\"\nexport * from \"./AvailablePartySizeCard.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AvailablePartySizeCard.vue?vue&type=style&index=0&id=bd5c2036&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"bd5c2036\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\n\nimport ReservationsToolbar from '@/components/views/main/ReservationsToolbar.vue';\nimport HourlyGuestsCard from '@/components/views/dashboard/HourlyGuestsCard.vue';\nimport NumericListCard from '@/components/views/dashboard/NumericListCard.vue';\nimport AvailablePartySizeCard from '@/components/views/dashboard/AvailablePartySizeCard.vue';\nimport KeyboardControl from '@/mixins/keyboard-control';\n\nimport Tab from '@/model/Tab';\nimport {\n timeIndexFromSlot, dateFromDateAndTimeIndex,\n MORNING_TIME_SLOTS_COUNT, DAY_TIME_SLOTS_COUNT, dateIndexFromDate,\n} from '@/services/time-utils';\nimport { performAction } from '@/services/vue-utils';\nimport Service from '@/model/Service';\nimport Label from '@/model/Label';\nimport Reservation from '@/model/Reservation';\nimport DashboardAvailability, { DashboardLimitData } from '@/grpc-api/model/dashboard-availability';\nimport { DashboardAllTabs, DashboardOnlineTabs } from '@/store/store';\nimport { tryEditReservation } from '@/services/reservation-edit-utils';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport DashboardStore from '@/store/dashboard-store';\n\nexport default Vue.extend({\n name: 'Dashboard',\n components: {\n ReservationsToolbar,\n HourlyGuestsCard,\n NumericListCard,\n AvailablePartySizeCard,\n },\n mixins: [KeyboardControl],\n\n data() {\n return {};\n },\n computed: {\n showDetails(): boolean {\n return this.$tstore.state.dashboard.showDetails ?? false;\n },\n date(): Date {\n return this.$tstore.state.update.date;\n },\n tab(): Tab {\n return this.$tstore.state.dashboard.tab;\n },\n tabs(): any[] {\n return [\n DashboardOnlineTabs, DashboardAllTabs,\n { divider: true },\n ...this.$tstore.state.settings.tabs,\n ];\n },\n reservations(): Reservation[] {\n return this.$tstore.getters.dashboardReservations;\n },\n // availability data\n dayAvailability(): DashboardAvailability | null {\n return this.$tstore.getters.dashboardDayAvailability;\n },\n dayLimits(): DashboardLimitData[] {\n const data = this.$tstore.getters.dashboardGuestsPerTime as DashboardLimitData[];\n return data;\n },\n availabilityHidden(): boolean {\n return !this.$tstore.getters.isTodayOrFuture || !this.$tstore.getters.dashboardIsOnlineTab;\n },\n availabilityDisabled(): boolean {\n return !this.$tstore.getters.isTodayOrFuture\n || !this.$tstore.getters.isDashboardDayAvailabilityLoaded\n || (this.tab.id > 0 && this.tab.usingWeekdaysAndTimes !== true);\n },\n availabilityTabs(): Tab[] {\n const { tabs } = this.$tstore.state.settings;\n if (this.tab === DashboardAllTabs) return tabs;\n if (this.tab === DashboardOnlineTabs) return tabs.filter((t: Tab) => t.usingWeekdaysAndTimes === true);\n return [this.tab];\n },\n // datasets\n guestsPerTime(): {t: Date, s: number, i: number, sl: number, il:number}[] {\n const data = this.$tstore.getters.dashboardGuestsPerTime as {i: number, s: number, il: number, sl: number}[];\n return data.map((sd, si) => {\n const di = dateIndexFromDate(this.date);\n const ti = timeIndexFromSlot(si);\n const date = dateFromDateAndTimeIndex(di, ti)!;\n return {\n t: date, ...sd,\n };\n }).slice(MORNING_TIME_SLOTS_COUNT, DAY_TIME_SLOTS_COUNT);\n },\n datasetSeated(): [Date, number][] {\n return this.guestsPerTime.map((sd) => ([sd.t, sd.s]));\n },\n datasetIncoming(): [Date, number][] {\n return this.guestsPerTime.map((sd) => ([sd.t, sd.i]));\n },\n datasetSeatedLimit(): [Date, number][] {\n return this.guestsPerTime.map((sd) => ([sd.t, sd.sl]));\n },\n datasetIncomingLimit(): [Date, number|undefined][] | undefined {\n return this.guestsPerTime.map((sd) => ([sd.t, Number.isFinite(sd.il) ? sd.il : undefined]));\n },\n datasetSeatedLimitVisible(): boolean {\n return this.tab === DashboardOnlineTabs || this.tab.usingWeekdaysAndTimes === true;\n },\n datasetIncomingLimitVisible(): boolean {\n return this.tab === DashboardOnlineTabs;\n },\n guestsForSections(): {text: String, guests: number, reservations: number}[] {\n const data = this.$tstore.getters.dashboardGuestsForSections as {s: Tab, g: number, r: number}[];\n return data.flatMap((sd) => (sd.r === 0 && sd.g === 0 ? []\n : { text: sd.s.name, guests: sd.g, reservations: sd.r }));\n },\n lunchDinnerForSections(): {text: String, guests: number, reservations: number}[] {\n const data = this.$tstore.getters.dashboardLunchDinnerForSections as {s: Tab, l: number, d: number}[];\n return data.flatMap((sd) => (sd.l === 0 && sd.d === 0 ? []\n : { text: sd.s.name, guests: sd.l, reservations: sd.d }));\n },\n guestsForServices(): {text: String, guests: number, reservations: number}[] {\n const data = this.$tstore.getters.dashboardGuestsForServices as {s: Service, g: number, r: number}[];\n return data.flatMap((sd) => (sd.r === 0 && sd.g === 0 ? []\n : { text: sd.s.text ?? 'N/A', guests: sd.g, reservations: sd.r }));\n },\n guestsForLabels(): {text: String, guests: number, reservations: number}[] {\n const data = this.$tstore.getters.dashboardGuestsForLabels.gr as {l: Label, g: number, r: number}[];\n return data.flatMap((ld) => (ld.r === 0 && ld.g === 0 ? []\n : { text: ld.l.text ?? 'N/A', guests: ld.g, reservations: ld.r }));\n },\n dayStats(): {\n reservations: number, tables: number, guests: number, lunch: number, dinner: number,\n labeledReservations: number, labeledGuests: number, serviceReservations: number, serviceGuests: number,\n } {\n return this.$tstore.getters.dashboardDayStats;\n },\n },\n watch: {\n date(date: Date) {\n this.setDate(date);\n },\n },\n created() {\n loadStoreModule(this, 'dashboard', DashboardStore, async () => {\n const { date } = this.$tstore.state.update;\n this.setDate(date);\n });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'dashboard', async () => { this.$tstore.dispatch('resetDashboard'); });\n },\n methods: {\n\n async makeReservation(params: {timeSlot: number, partySize:number}) {\n const res = await tryEditReservation(this.$router, undefined, {\n tab: this.tab.id > 0 ? this.tab : undefined,\n tabItems: undefined,\n timeSlot: params.timeSlot + MORNING_TIME_SLOTS_COUNT,\n partySize: params.partySize,\n });\n },\n async setTab(tab: Tab) {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('setDashboardTab', tab),\n );\n },\n async setDate(date: Date) {\n await performAction(\n null,\n this.$i18n.tc('error.load_data'),\n async () => this.$tstore.dispatch('setDashboardDate', date),\n );\n },\n tabSelected(tab: Tab) {\n this.setTab(tab);\n },\n setShowDetails(value: boolean) {\n this.$tstore.dispatch('setDashboardShowDetails', value);\n },\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Dashboard.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Dashboard.vue?vue&type=template&id=693012b6&\"\nimport script from \"./Dashboard.vue?vue&type=script&lang=ts&\"\nexport * from \"./Dashboard.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reports-toolbar')]},proxy:true}])},[_c('v-row',{staticClass:\"pa-3 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 mb-3 mb-md-0 pr-sm-3\",attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('mini-data-chart',{attrs:{\"title\":_vm.$t('label.report_returning_guest'),\"category-type\":_vm.returning.categoryType,\"category\":_vm.returning.category,\"series\":_vm.compareSeries,\"dataset\":_vm.returning.dataset,\"totals\":_vm.returning.totals}})],1),_c('v-col',{staticClass:\"pa-0 ma-0 mb-3 mb-md-0 pr-md-3\",attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('mini-data-chart',{attrs:{\"title\":_vm.$t('label.report_cancellation'),\"category-type\":_vm.cancellations.categoryType,\"category\":_vm.cancellations.category,\"series\":_vm.compareSeries,\"dataset\":_vm.cancellations.dataset,\"totals\":_vm.cancellations.totals,\"inverse-metric\":\"\"}})],1),_c('v-col',{staticClass:\"pa-0 ma-0 mb-3 mb-sm-0 pr-sm-3\",attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('mini-data-chart',{attrs:{\"title\":_vm.$t('label.report_noshows'),\"category-type\":_vm.noshows.categoryType,\"category\":_vm.noshows.category,\"series\":_vm.compareSeries,\"dataset\":_vm.noshows.dataset,\"totals\":_vm.noshows.totals,\"inverse-metric\":\"\"}})],1),_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"12\",\"sm\":\"6\",\"md\":\"3\"}},[_c('mini-data-chart',{attrs:{\"title\":_vm.$t('label.report_avg_partysize'),\"category-type\":_vm.partySizes.categoryType,\"category\":_vm.partySizes.category,\"series\":_vm.compareSeries,\"dataset\":_vm.partySizes.dataset,\"totals\":_vm.partySizes.totals,\"unit\":\"\"}})],1),_c('v-col',{staticClass:\"mt-3 pa-0 ma-0 mb-0\",attrs:{\"cols\":\"12\"}},[(_vm.compare)?_c('simple-line-chart',{attrs:{\"title\":_vm.$t('label.guests'),\"category-type\":_vm.guests.categoryType,\"category\":_vm.guests.category,\"series\":_vm.compareSeries,\"dataset\":_vm.guests.dataset,\"totals\":_vm.guests.totals,\"compare\":\"\"}}):_c('stacked-line-chart',{attrs:{\"title\":_vm.$t('label.report_guests_per_source'),\"category-type\":_vm.campaignGuests.categoryType,\"category\":_vm.campaignGuests.category,\"series\":_vm.campaignGuests.series,\"dataset\":_vm.campaignGuests.dataset,\"total\":_vm.campaignGuests.total}})],1),_c('v-col',{staticClass:\"pa-0 ma-0 mt-3\",attrs:{\"cols\":\"12\"}},[(_vm.compare)?_c('simple-line-chart',{attrs:{\"title\":_vm.$t('label.reservations'),\"category-type\":_vm.reservations.categoryType,\"category\":_vm.reservations.category,\"series\":_vm.compareSeries,\"dataset\":_vm.reservations.dataset,\"totals\":_vm.reservations.totals,\"compare\":\"\"}}):_c('stacked-line-chart',{attrs:{\"title\":_vm.$t('label.report_reservations_per_source'),\"category-type\":_vm.campaignReservations.categoryType,\"category\":_vm.campaignReservations.category,\"series\":_vm.campaignReservations.series,\"dataset\":_vm.campaignReservations.dataset,\"total\":_vm.campaignReservations.total}})],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('v-card',{staticClass:\"px-5 py-3\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('div',{staticClass:\"text-overline text-secondary flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),(_vm.compareValues)?_c('div',{staticClass:\"pl-2 text-h6 text-md-h5 mr-0 mr-md-5\"},[_c('span',{class:_vm.isImproved || _vm.isSame ? 'green--text' : 'red--text'},[(_vm.isImproved)?_c('v-icon',{attrs:{\"color\":\"green\"}},[_vm._v(\" mdi-arrow-up-thick \")]):(_vm.isSame)?_c('v-icon',{attrs:{\"color\":\"green\"}},[_vm._v(\" mdi-approximately-equal \")]):_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\" mdi-arrow-down-thick \")]),_vm._v(\" \"+_vm._s(_vm.totalValues[0])+\" \")],1),_c('span',{staticClass:\"text-subtitle-1 text-md-h6 d-block-inline px-1\"},[_vm._v(\"vs.\")]),_c('span',{staticClass:\"text-h6 text-md-h6\"},[_vm._v(_vm._s(_vm.totalValues[1]))])]):_c('div',{staticClass:\"pl-2 text-h6 text-md-h5\"},[_vm._v(\" \"+_vm._s(_vm.totalValues[0])+\" \"),_c('span',{staticClass:\"text-subtitle-1 text-md-h6\"},[_vm._v(\" \"+_vm._s(_vm.unit)+\" \")])])]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart from 'vue-echarts';\n\nuse([\n LineChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'SimpleLineChart',\n components: {\n VChart,\n },\n props: {\n title: { type: String, required: true },\n categoryType: { type: String as PropType, default: 'day' },\n category: { type: Array as PropType>, default: () => [] },\n series: { type: Array as PropType>, default: () => [] },\n dataset: { type: Array as PropType>, default: () => [] },\n totals: { type: Array as PropType>, default: () => [] },\n inverseMetric: { type: Boolean, required: false, default: false },\n compare: { type: Boolean, required: false, default: false },\n unit: { type: String, default: '' },\n },\n data() {\n return {\n option: undefined as any,\n themeDark,\n themeLight,\n };\n },\n computed: {\n compareValues(): boolean {\n return this.compare && this.totals.length === 2;\n },\n isImproved(): boolean {\n return this.inverseMetric ? this.totals[0] < this.totals[1] : this.totals[0] > this.totals[1];\n },\n isSame(): boolean {\n return this.totals[0] === this.totals[1];\n },\n totalValues(): string[] {\n const totalValues = [this.totals[0] ?? 0, this.totals[1] ?? 0];\n return totalValues.map((v) => this.$i18n.n(v));\n },\n categoryData(): string[] {\n switch (this.categoryType) {\n case 'hour': return this.category.map((d) => this.$localized.hourMinText(d)!);\n case 'month': return this.category.map((d) => this.$localized.monthText(d)!);\n default: return this.category.map((d) => this.$localized.shortDayMonthText(d)!);\n }\n },\n },\n watch: {\n categoryType() { this.reset(); },\n category() { this.reset(); },\n series() { this.reset(); },\n dataset() { this.reset(); },\n },\n created() {\n this.reset();\n },\n\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n const series = [] as any[];\n const colors = ['#3355ff', '#FF8262'];\n\n this.series.forEach((name, i) => {\n series.push(\n {\n type: 'line',\n smooth: 0,\n name,\n lineStyle: {\n width: 3,\n },\n itemStyle: {\n color: colors[i],\n },\n areaStyle: {\n color: colors[i],\n opacity: i === 0 ? 0.3 : 0,\n },\n encode: {\n x: 'date',\n y: [`series${i}`],\n },\n },\n );\n });\n return {\n grid: {\n left: '32px',\n top: '16px',\n right: '2%',\n },\n dataset: {\n source: this.dataset,\n dimensions: ['date', 'series0', 'series1'],\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'line',\n axis: 'x',\n },\n extraCssText: 'min-width: 200px; max-width: 600px',\n },\n legend: {\n orient: 'horizontal',\n bottom: 'bottom',\n },\n xAxis: {\n // splitNumber: 16,\n type: 'category',\n data: this.categoryData,\n axisLabel: {\n interval: 0,\n rotate: 45,\n },\n splitLine: {\n show: true,\n },\n minorSplitLine: {\n show: true,\n },\n },\n yAxis: {\n type: 'value',\n },\n series,\n };\n },\n\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SimpleLineChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SimpleLineChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SimpleLineChart.vue?vue&type=template&id=42b5acb5&scoped=true&\"\nimport script from \"./SimpleLineChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./SimpleLineChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SimpleLineChart.vue?vue&type=style&index=0&id=42b5acb5&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"42b5acb5\",\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('v-card',{staticClass:\"px-5 py-2\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"d-flex flex-row\"},[(_vm.extraOptions === undefined)?[_c('div',{staticClass:\"flex-grow-1\"},[_c('span',{staticClass:\"text-overline text-secondary\"},[_vm._v(_vm._s(_vm.title))])])]:_c('v-select',{staticClass:\"flex-shrink-1\",staticStyle:{\"max-width\":\"200px\",\"font-size\":\"13px\"},attrs:{\"label\":\"Reservations\",\"dense\":\"\",\"items\":_vm.extraOptions},model:{value:(_vm.extraOptionSelected),callback:function ($$v) {_vm.extraOptionSelected=$$v},expression:\"extraOptionSelected\"}}),_c('v-spacer'),_c('div',{staticClass:\"pl-2 text-subtitle-1 text-md-h6 mr-0 mr-md-5\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.total'))+\": \"+_vm._s(_vm.$n(_vm.total))+\" \")])],2),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart, { THEME_KEY } from 'vue-echarts';\n\nuse([\n LineChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'StackedLineChart',\n components: {\n VChart,\n },\n props: {\n title: { type: String, required: true },\n categoryType: { type: String as PropType, default: 'day' },\n category: { type: Array as PropType>, default: () => [] },\n series: { type: Array as PropType>, default: () => [] },\n dataset: { type: Array as PropType>>, default: () => [] },\n // totals: { type: Object as PropType>, default: [] },\n total: { type: Number as PropType, default: 0 },\n extraOptions: { type: Object as PropType>, default: undefined },\n extraOption: { type: String, default: '' },\n },\n data() {\n return {\n option: undefined as any,\n themeDark,\n themeLight,\n extraOptionSelected: this.extraOption,\n };\n },\n computed: {\n categoryData(): string[] {\n switch (this.categoryType) {\n case 'hour': return this.category.map((d) => this.$localized.hourMinText(d)!);\n case 'month': return this.category.map((d) => this.$localized.monthText(d)!);\n default: return this.category.map((d) => this.$localized.shortDayMonthText(d)!);\n }\n },\n },\n watch: {\n categoryType() { this.reset(); },\n category() { this.reset(); },\n series() { this.reset(); },\n dataset() { this.reset(); },\n extraOptionSelected() {\n if (this.extraOptionSelected === this.extraOption) { return; }\n this.$emit('update:extra-option', this.extraOptionSelected);\n },\n extraOption() {\n if (this.extraOptionSelected === this.extraOption) { return; }\n this.extraOptionSelected = this.extraOption;\n },\n },\n created() {\n this.reset();\n },\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n const series = this.series.map((name, i) => ({\n name,\n type: 'line',\n smooth: 0.15,\n areaStyle: {},\n symbol: 'roundRect',\n emphasis: {\n focus: 'series',\n },\n data: this.dataset[i],\n }));\n\n return {\n grid: {\n left: '0px',\n top: '16px',\n right: '2%',\n containLabel: true,\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'line',\n axis: 'x',\n },\n extraCssText: 'min-width: 200px; max-width: 600px',\n },\n legend: {\n orient: 'horizontal',\n bottom: 'bottom',\n },\n xAxis: {\n // splitNumber: 16,\n type: 'category',\n data: this.categoryData,\n axisLabel: {\n interval: 0,\n rotate: 45,\n },\n splitLine: {\n show: true,\n },\n minorSplitLine: {\n show: true,\n },\n },\n yAxis: {\n type: 'value',\n },\n series,\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StackedLineChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./StackedLineChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./StackedLineChart.vue?vue&type=template&id=208bd71f&scoped=true&\"\nimport script from \"./StackedLineChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./StackedLineChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./StackedLineChart.vue?vue&type=style&index=0&id=208bd71f&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"208bd71f\",\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('v-card',{staticClass:\"px-3 py-2\",attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"pl-2 text-overline text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),(_vm.compare)?_c('div',{staticClass:\"pl-2 text-h6 text-md-h5 text-lg-h4\"},[_c('span',{class:_vm.isImproved || _vm.isSame ? 'green--text' : 'red--text'},[(_vm.isImproved)?_c('v-icon',{attrs:{\"color\":\"green\"}},[_vm._v(\" \"+_vm._s(_vm.inverseMetric ? 'mdi-arrow-down-thick' : 'mdi-arrow-up-thick')+\" \")]):(_vm.isSame)?_c('v-icon',{attrs:{\"color\":\"green\"}},[_vm._v(\" mdi-approximately-equal \")]):_c('v-icon',{attrs:{\"color\":\"red\"}},[_vm._v(\" \"+_vm._s(_vm.inverseMetric ? 'mdi-arrow-up-thick' : 'mdi-arrow-down-thick')+\" \")]),_vm._v(_vm._s(_vm.values[0])+_vm._s(_vm.unit)+\" \")],1),_c('span',{staticClass:\"text-subtitle-2 text-md-h6\"},[_vm._v(\" vs.\")]),_c('span',{staticClass:\"text-h6 text-md-h5 text-lg-h4\"},[_vm._v(\" \"+_vm._s(_vm.values[1])+_vm._s(_vm.unit))])]):_c('div',{staticClass:\"pl-2 text-h6 text-md-h5 text-lg-h4\"},[_vm._v(\" \"+_vm._s(_vm.values[0] || 0)+_vm._s(_vm.unit)+\" \")]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart from 'vue-echarts';\n\nuse([\n LineChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'MiniDataChart',\n components: {\n VChart,\n },\n props: {\n title: { type: String, required: true },\n categoryType: { type: String as PropType, default: 'day' },\n category: { type: Array as PropType>, default: () => [] },\n series: { type: Array as PropType>, default: () => [] },\n dataset: { type: Array as PropType>, default: () => [] },\n totals: { type: Array as PropType>, default: () => [] },\n inverseMetric: { type: Boolean, required: false, default: false },\n unit: { type: String, required: false, default: '%' },\n },\n data() {\n return {\n option: (this as any).createDataset(),\n themeDark,\n themeLight,\n };\n },\n computed: {\n compare(): boolean {\n return this.totals.length === 2;\n },\n isImproved(): boolean {\n return this.inverseMetric ? this.totals[0] < this.totals[1] : this.totals[0] > this.totals[1];\n },\n isSame(): boolean {\n return this.totals[0] === this.totals[1];\n },\n values(): string[] {\n const values = [this.totals[0] ?? 0, this.totals[1] ?? 0];\n return values.map((v) => {\n const isdecimal = v % 1 !== 0;\n const fdigits = isdecimal ? 1 : 0;\n return v.toFixed(fdigits);\n });\n },\n },\n watch: {\n categoryType() { this.reset(); },\n category() { this.reset(); },\n series() { this.reset(); },\n dataset() { this.reset(); },\n },\n created() {\n this.reset();\n },\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n const series = [] as any[];\n const colors = ['#3355ff', '#FF8262'];\n\n this.series.forEach((name, i) => {\n series.push(\n {\n type: 'line',\n smooth: 0.5,\n name,\n symbol: 'none',\n itemStyle: {\n color: colors[i],\n },\n areaStyle: i === 0 ? {\n color: colors[i],\n opacity: 0.5,\n } : undefined,\n encode: {\n x: 'date',\n y: [`series${i}`],\n },\n },\n );\n });\n\n return {\n grid: {\n left: '34px',\n top: '16px',\n right: '0px',\n bottom: '16px',\n },\n dataset: {\n source: this.dataset,\n dimensions: ['date', 'series0', 'series1'],\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'line',\n axis: 'x',\n },\n valueFormatter: (value: number) => (value !== undefined ? `${value.toFixed(1)}${this.unit}` : '-'),\n extraCssText: 'min-width: 200px; max-width: 600px',\n },\n legend: {\n show: false,\n },\n xAxis: {\n type: 'category',\n data: this.category.map((d) => this.$localized.veryShortDayMonthText(d)!),\n axisLabel: {\n show: false,\n },\n splitLine: {\n show: false,\n },\n minorSplitLine: {\n show: false,\n },\n },\n yAxis: {\n type: 'value',\n axisTick: {\n show: false,\n },\n splitLine: {\n show: false,\n },\n axisLabel: {\n show: true,\n interval: () => false,\n showMinLabel: false,\n showMaxLabel: true,\n margin: 2,\n formatter: `{value}${this.unit}`,\n },\n },\n series,\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MiniDataChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MiniDataChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MiniDataChart.vue?vue&type=template&id=b1a5d32c&scoped=true&\"\nimport script from \"./MiniDataChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./MiniDataChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MiniDataChart.vue?vue&type=style&index=0&id=b1a5d32c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b1a5d32c\",\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('main-toolbar',[_c('date-range-picker-field',{staticClass:\"mt-2\",attrs:{\"label\":_vm.$t('label.date_range'),\"format-fn\":_vm.fmtDate,\"previous-period-disabled\":!_vm.allowComparePrevious},on:{\"input\":_vm.dateRangeSelected},model:{value:(_vm.dateRange),callback:function ($$v) {_vm.dateRange=$$v},expression:\"dateRange\"}}),_c('v-select',{staticClass:\"mt-2 ml-5\",staticStyle:{\"min-width\":\"68px\",\"max-width\":\"190px\"},attrs:{\"value\":_vm.tab,\"items\":_vm.tabs,\"hide-details\":\"\",\"label\":_vm.$i18n.t('label.section'),\"return-object\":\"\",\"dense\":\"\"},on:{\"input\":_vm.tabSelected}}),(_vm.allowShowBy)?_c('v-select',{staticClass:\"mr-5 mt-2 ml-5 shrink\",staticStyle:{\"min-width\":\"68px\",\"max-width\":\"190px\"},attrs:{\"value\":_vm.showBy,\"items\":_vm.showByItems,\"hide-details\":\"\",\"label\":_vm.$t('label.show_by'),\"dense\":\"\"},on:{\"input\":_vm.showBySelected}}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport MainToolbar from '@/components/views/main/MainToolbar.vue';\nimport DateRangePickerField from '@/components/pickers/DateRangePickerField.vue';\nimport ReportsStore, { ReportsAllTabs, ReportsOnlineTabs } from '@/store/reports-store';\nimport Tab from '@/model/Tab';\nimport { performAction, performActionEx } from '@/services/vue-utils';\nimport { DateRange } from '@/services/date-range';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport { ReportsType } from '@/services/reports';\n\nexport default Vue.extend({\n name: 'ReportsToolbar',\n components: { MainToolbar, DateRangePickerField },\n props: {\n\n },\n data() {\n return {\n showByItems: [\n { text: this.$i18n.t('label.report_booking_date'), value: 'by_booking' },\n { text: this.$i18n.t('label.report_checkin_date'), value: 'by_checkin' }],\n };\n },\n computed: {\n tab(): Tab {\n return this.$tstore.state.reports.tab;\n },\n dateRange(): DateRange {\n return this.$tstore.state.reports.dateRange;\n },\n showBy(): string {\n const reportsbyDtCreate = this.$tstore.state.reports.byDtCreate as boolean;\n return reportsbyDtCreate ? 'by_booking' : 'by_checkin';\n },\n allowComparePrevious(): boolean {\n const reportsType = this.$tstore.state.reports.reportsType as ReportsType;\n return [ReportsType.Reservations, ReportsType.Feedback].includes(reportsType);\n },\n allowShowBy(): boolean {\n const reportsType = this.$tstore.state.reports.reportsType as ReportsType;\n return [ReportsType.Reservations].includes(reportsType);\n },\n tabs(): any[] {\n return [\n ReportsOnlineTabs, ReportsAllTabs,\n { divider: true },\n ...this.$tstore.state.settings.tabs,\n ];\n },\n },\n watch: { },\n created() {\n loadStoreModule(this, 'reports', ReportsStore, async () => {});\n },\n beforeDestroy() {\n unloadStoreModule(this, 'reports', async () => { this.$tstore.dispatch('resetReports'); });\n },\n methods: {\n fmtDate(d: Date): string | null {\n const thisYear = (new Date()).getFullYear() === d.getFullYear();\n return thisYear ? this.$localized.shortDayMonthText(d) : this.$localized.shortWeekdayYearText(d);\n // return thisYear ? this.$localized.monthText(d) : this.$localized.monthYearText(d);\n },\n tabSelected(tab: Tab) {\n this.setTab(tab);\n },\n dateRangeSelected(dateRange: DateRange) {\n this.setDateRange(dateRange);\n },\n showBySelected(showBy: string) {\n this.setCampaignsByDtCreate(showBy === 'by_booking');\n },\n async setTab(tab: Tab) {\n await performActionEx(\n async () => this.$tstore.dispatch('setReportsTab', tab),\n { errorPrefix: this.$i18n.tc('error.load_data'), hideActivityIndicator: true },\n );\n },\n async setDateRange(dateRange: DateRange) {\n await performActionEx(\n async () => this.$tstore.dispatch('setReportsDateRange', dateRange),\n { errorPrefix: this.$i18n.tc('error.load_data'), hideActivityIndicator: true },\n );\n },\n async setCampaignsByDtCreate(value: boolean) {\n await performActionEx(\n async () => this.$tstore.dispatch('setReportsByDtCreate', value),\n { errorPrefix: this.$i18n.tc('error.load_data'), hideActivityIndicator: true },\n );\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportsToolbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportsToolbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportsToolbar.vue?vue&type=template&id=b78cb5d4&\"\nimport script from \"./ReportsToolbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportsToolbar.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\nimport Vue from 'vue';\n\nimport SimpleLineChart from '@/components/views/reports/SimpleLineChart.vue';\nimport StackedLineChart from '@/components/views/reports/StackedLineChart.vue';\nimport MiniDataChart from '@/components/views/reports/MiniDataChart.vue';\nimport ReportsToolbar from '@/components/views/reports/ReportsToolbar.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ReportsStore from '@/store/reports-store';\nimport { ChartData } from '@/services/reports-utils';\nimport { ReportsType } from '@/services/reports';\n\nexport default Vue.extend({\n name: 'ReportReservations',\n components: {\n SimpleLineChart,\n MiniDataChart,\n ReportsToolbar,\n StackedLineChart,\n },\n data() {\n return {};\n },\n computed: {\n compare(): boolean { return this.$tstore.getters.reportsComparePrevious; },\n reservations(): ChartData { return this.$tstore.getters.reportsReservations; },\n guests(): ChartData { return this.$tstore.getters.reportsGuests; },\n campaignReservations(): ChartData { return this.$tstore.getters.reportsCampaignsReservations; },\n campaignGuests(): ChartData { return this.$tstore.getters.reportsCampaignsGuests; },\n returning(): ChartData { return this.$tstore.getters.reportsReturning; },\n cancellations(): ChartData { return this.$tstore.getters.reportsCancelations; },\n noshows(): ChartData { return this.$tstore.getters.reportsNoshows; },\n partySizes(): ChartData { return this.$tstore.getters.reportsPartySizes; },\n compareSeries(): string[] {\n return this.compare\n ? [this.$i18n.tc('label.report_this_period'), this.$i18n.tc('label.report_previous_period')]\n : [this.$i18n.tc('label.report_this_period')];\n },\n },\n created() {\n loadStoreModule(this, 'reports', ReportsStore, async () => {\n this.$tstore.dispatch('updateReports', { reportsType: ReportsType.Reservations });\n });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'reports', async () => { this.$tstore.dispatch('resetReports'); });\n },\n methods: {},\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportReservations.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportReservations.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportReservations.vue?vue&type=template&id=49ff257a&\"\nimport script from \"./ReportReservations.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportReservations.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reports-toolbar')]},proxy:true}])},[_c('v-row',{staticClass:\"pa-0 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 mb-3\",attrs:{\"cols\":\"12\"}},[_c('services-revenue-chart',{attrs:{\"category-type\":_vm.services.categoryType,\"category\":_vm.services.category,\"series\":_vm.services.series,\"dataset\":_vm.services.dataset,\"totals\":_vm.services.totals,\"series-revenue\":_vm.servicesRevenue.series,\"dataset-revenue\":_vm.servicesRevenue.dataset}})],1),_c('v-col',{staticClass:\"pa-0 ma-0 pr-md-3 pb-3 pb-lg-0\",attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('mini-pie-chart',{attrs:{\"title\":_vm.$t('label.report_by_reservations'),\"dataset\":_vm.reportsServicesPie.datasetByReservations}})],1),_c('v-col',{staticClass:\"pa-0 ma-0 pr-lg-3 pb-3 pb-lg-0\",attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('mini-pie-chart',{attrs:{\"title\":_vm.$t('label.report_by_guests'),\"dataset\":_vm.reportsServicesPie.datasetByGuests}})],1),_c('v-col',{staticClass:\"pa-0 ma-0 pr-md-3 pr-lg-0\",attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('mini-pie-chart',{attrs:{\"title\":_vm.$t('label.report_by_revenue'),\"dataset\":_vm.reportsServicesPie.datasetByRevenue}})],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('v-card',{staticClass:\"px-5 py-3\",attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"pl-2 text-overline text-secondary\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}}),_c('v-row',[_c('v-col',{staticClass:\"text-center mt-8 d-flex justify-center\",attrs:{\"cols\":\"12\"}},[_c('v-simple-table',{staticStyle:{\"width\":\"auto\"}},_vm._l((_vm.dataset),function(d,i){return _c('tr',{key:i,staticClass:\"text-body-2\"},[_c('td',{staticClass:\"text-right\"},[_vm._v(\" \"+_vm._s(d.name)+\": \")]),_c('td',{staticClass:\"text-right pl-5 font-weight-medium\"},[_c('span',{staticClass:\"text-left\"},[_vm._v(_vm._s(d.value))])])])}),0)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { PieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart, { THEME_KEY } from 'vue-echarts';\n\nuse([\n PieChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'MiniPieChart',\n components: {\n VChart,\n },\n props: {\n title: { type: String, required: true },\n dataset: { type: Array as PropType>, default: () => [] },\n },\n data() {\n return {\n option: undefined as any,\n themeDark,\n themeLight,\n };\n },\n computed: {\n },\n watch: {\n dataset() { this.reset(); },\n },\n created() {\n this.reset();\n },\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n return {\n grid: {\n left: '8px',\n top: '8px',\n right: '8px',\n bottom: '8px',\n },\n tooltip: {\n trigger: 'item',\n formatter: (params:any, ticket: string) => `\n ${params.marker} ${params.name}:\n ${this.$i18n.n(params.value)} (${params.percent}%)`,\n\n },\n series: [\n {\n type: 'pie',\n radius: ['40%', '70%'],\n avoidLabelOverlap: false,\n label: {\n overflow: 'break',\n width: 150,\n },\n labelLayout: {\n width: 150,\n },\n itemStyle: {\n borderRadius: 8,\n borderColor: '#fff',\n borderWidth: 2,\n },\n data: this.dataset,\n },\n\n ],\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MiniPieChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MiniPieChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MiniPieChart.vue?vue&type=template&id=19265150&scoped=true&\"\nimport script from \"./MiniPieChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./MiniPieChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./MiniPieChart.vue?vue&type=style&index=0&id=19265150&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"19265150\",\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('v-card',{staticClass:\"px-5 py-3\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('div',{staticClass:\"text-overline text-secondary flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.report_services_and_revenue'))+\" \")]),_c('div',{staticClass:\"pl-2 text-subtitle-1 text-md-h6 mr-5\"},[_vm._v(\" \"+_vm._s(`${ _vm.$t('label.total') }: ${_vm.$n(_vm.totalValue)} ${ _vm.$tc('label.reservations').toLowerCase() }`)+\" \")])]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\n\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { BarChart, LineChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart from 'vue-echarts';\n\nuse([\n BarChart,\n LineChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'ServicesRevenueChart',\n components: {\n VChart,\n },\n props: {\n categoryType: { type: String as PropType, default: 'day' },\n category: { type: Array as PropType>, default: () => [] },\n series: { type: Array as PropType>, default: () => [] },\n dataset: { type: Array as PropType>>, default: () => [] },\n totals: { type: Array as PropType>, default: () => [] },\n seriesRevenue: { type: Array as PropType>, default: () => [] },\n datasetRevenue: { type: Array as PropType>>, default: () => [] },\n },\n data() {\n return {\n option: (this as any).createDataset(),\n themeDark,\n themeLight,\n };\n },\n computed: {\n categoryData(): string[] {\n switch (this.categoryType) {\n case 'hour': return this.category.map((d) => this.$localized.hourMinText(d)!);\n case 'month': return this.category.map((d) => this.$localized.monthText(d)!);\n default: return this.category.map((d) => this.$localized.shortDayMonthText(d)!);\n }\n },\n dark(): boolean {\n return this.$vuetify.theme.dark;\n },\n totalValue(): number {\n return this.totals.reduce((sum, n) => sum + n, 0);\n },\n },\n watch: {\n dark() { this.reset(); },\n categoryType() { this.reset(); },\n category() { this.reset(); },\n series() { this.reset(); },\n dataset() { this.reset(); },\n },\n created() {\n this.reset();\n },\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n const series = [] as any[];\n\n this.series.forEach((name, i) => series.push({\n name,\n type: 'bar',\n stack: 'Total',\n smooth: 0.15,\n areaStyle: {},\n symbol: 'roundRect',\n emphasis: {\n focus: 'series',\n },\n data: this.dataset[i],\n yAxisIndex: 0,\n }));\n\n this.seriesRevenue.forEach((name, i) => series.push({\n name: this.seriesRevenue.length === 1\n ? this.$i18n.t('label.report_revenue')\n : `${this.$i18n.t('label.report_revenue')} (${name.toUpperCase()})`,\n type: 'line',\n smooth: 0.25,\n areaStyle: {\n color: 'transparent',\n },\n lineStyle: {\n color: ['#ffc24e', '#e42dd0', '#00a26f'][i % 3],\n width: 3,\n },\n itemStyle: {\n color: ['#ffc24e', '#e42dd0', '#00a26f'][i % 3],\n },\n symbol: 'roundRect',\n emphasis: {\n focus: 'series',\n },\n data: this.datasetRevenue[i],\n yAxisIndex: 1,\n }));\n\n return {\n grid: {\n left: '8px',\n top: '16px',\n right: '2%',\n containLabel: true,\n },\n dataset: {\n source: this.dataset,\n dimensions: ['date', 'thisYear', 'lastYear'],\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'line',\n axis: 'x',\n },\n confine: false,\n position(pos: number[], params: any, dom: any, rect: any, size: {contentSize: number[], viewSize: number[]}) {\n return {\n left: pos[0] + (pos[0] < size.viewSize[0] * 0.75 ? 60 : -size.contentSize[0] - 60),\n top: pos[1] - 40,\n };\n },\n appendToBody: true,\n extraCssText: 'min-width: 200px; max-width: 600px; z-index: 1000',\n },\n legend: {\n orient: 'horizontal',\n bottom: 'bottom',\n type: 'scroll',\n },\n xAxis: {\n type: 'category',\n data: this.categoryData,\n axisLabel: {\n interval: 0,\n rotate: 45,\n },\n splitLine: {\n show: true,\n },\n minorSplitLine: {\n show: true,\n },\n },\n yAxis: [\n {\n type: 'value',\n },\n {\n type: 'value',\n },\n ],\n series,\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServicesRevenueChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ServicesRevenueChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ServicesRevenueChart.vue?vue&type=template&id=05f7a3ad&scoped=true&\"\nimport script from \"./ServicesRevenueChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./ServicesRevenueChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ServicesRevenueChart.vue?vue&type=style&index=0&id=05f7a3ad&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"05f7a3ad\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\n\nimport ReportsToolbar from '@/components/views/reports/ReportsToolbar.vue';\nimport MiniPieChart from '@/components/views/reports/MiniPieChart.vue';\nimport ServicesRevenueChart from '@/components/views/reports/ServicesRevenueChart.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ReportsStore from '@/store/reports-store';\nimport { ChartData, PieChartData } from '@/services/reports-utils';\nimport { ReportsType } from '@/services/reports';\n\nexport default Vue.extend({\n name: 'ReportServices',\n components: {\n ReportsToolbar, ServicesRevenueChart, MiniPieChart,\n },\n data() {\n return {};\n },\n computed: {\n services(): ChartData { return this.$tstore.getters.reportsServices; },\n servicesRevenue(): ChartData { return this.$tstore.getters.reportsServicesRevenue; },\n reportsServicesPie(): {\n datasetByReservations: PieChartData,\n datasetByGuests: PieChartData,\n datasetByRevenue: PieChartData,\n } {\n return this.$tstore.getters.reportsServicesPie;\n },\n },\n created() {\n loadStoreModule(this, 'reports', ReportsStore, async () => {\n this.$tstore.dispatch('updateReports', { reportsType: ReportsType.Services });\n });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'reports', async () => { this.$tstore.dispatch('resetReports'); });\n },\n methods: {},\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportServices.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportServices.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportServices.vue?vue&type=template&id=24a56d8c&\"\nimport script from \"./ReportServices.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportServices.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reports-toolbar',{staticClass:\"gl-toolbar\"})]},proxy:true}])},[_c('v-row',{staticClass:\"pa-3 ma-0\"},[(!_vm.isAccurate)?_c('v-col',{staticClass:\"pa-0 ma-0 mb-3\",attrs:{\"cols\":\"12\"}},[_c('v-alert',{staticClass:\"mb-0\",attrs:{\"dense\":\"\",\"prominent\":_vm.$vuetify.breakpoint.smAndUp,\"border\":\"left\",\"type\":\"info\",\"xcolor\":\"primary\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"pb-0 pa-sm-3\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.report_align_to_weeks'))+\" \")]),_c('v-col',{staticClass:\"pt-1 pa-sm-3 col-12 col-sm-auto\"},[_c('v-btn',{attrs:{\"color\":\"white\",\"outlined\":\"\",\"small\":_vm.$vuetify.breakpoint.xsOnly,\"block\":\"\"},on:{\"click\":_vm.makeAccurate}},[_vm._v(\" \"+_vm._s(_vm.$t('button.report_align_weeks'))+\" \")])],1)],1)],1)],1):_vm._e(),_c('v-col',{staticClass:\"pa-0 ma-0 pb-3\",attrs:{\"cols\":\"12\"}},[_c('avg-guests-weekday-chart',{attrs:{\"category\":_vm.averageGuests.category,\"dataset\":_vm.averageGuests.dataset}})],1)],1),_c('v-row',{staticClass:\"pa-0 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 pr-md-3 pb-3 pb-md-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('weekdays-bar-chart',{attrs:{\"title\":_vm.$t('label.report_services_and_revenue'),\"series\":_vm.services.series,\"dataset\":_vm.services.dataset,\"series-revenue\":_vm.servicesRevenue.series,\"dataset-revenue\":_vm.servicesRevenue.dataset}})],1),_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"12\",\"md\":\"6\"}},[_c('weekdays-bar-chart',{attrs:{\"title\":_vm.$t('label.report_guests_per_section'),\"series\":_vm.tabs.series,\"dataset\":_vm.tabs.dataset}})],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('v-card',{staticClass:\"px-5 py-2\",attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('div',{staticClass:\"text-overline text-secondary flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { BarChart } from 'echarts/charts';\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\nimport VChart from 'vue-echarts';\nimport { weekdayStartAtMondayFromDateDay } from '@/services/time-utils';\n\nuse([\n BarChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'WeekdaysBarChart',\n components: {\n VChart,\n },\n props: {\n title: { type: String, required: true },\n series: { type: Array as PropType>, default: () => [] },\n dataset: { type: Array as PropType>>, default: () => [] },\n seriesRevenue: { type: Array as PropType>, default: () => [] },\n datasetRevenue: { type: Array as PropType>, default: () => [] },\n },\n data() {\n return {\n option: undefined as any,\n themeDark,\n themeLight,\n };\n },\n computed: {\n\n },\n watch: {\n category() { this.reset(); },\n series() { this.reset(); },\n dataset() { this.reset(); },\n },\n created() {\n this.reset();\n },\n\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n const remap = this.$localized.weekdays().reverse().map((w) => weekdayStartAtMondayFromDateDay(w.value));\n\n const series = [] as any[];\n\n this.series.forEach((name, i) => {\n const data = [0, 0, 0, 0, 0, 0, 0];\n this.dataset[i].forEach((v, j) => { data[remap[j]] = v; });\n series.push({\n name,\n type: 'bar',\n stack: 'Total',\n smooth: 0.15,\n areaStyle: {},\n symbol: 'roundRect',\n emphasis: {\n focus: 'series',\n },\n data,\n });\n });\n\n this.seriesRevenue.forEach((name, i) => {\n const data = [0, 0, 0, 0, 0, 0, 0];\n this.datasetRevenue.forEach((v, j) => { data[remap[j]] = v; });\n series.push(\n {\n name: this.seriesRevenue.length === 1\n ? this.$i18n.t('label.report_revenue')\n : `${this.$i18n.t('label.report_revenue')} (${name.toUpperCase()})`,\n type: 'bar',\n smooth: 0.25,\n areaStyle: {\n color: 'transparent',\n },\n lineStyle: {\n color: ['#ffc24e', '#e42dd0', '#00a26f'][i % 3],\n width: 3,\n },\n itemStyle: {\n color: ['#ffc24e', '#e42dd0', '#00a26f'][i % 3],\n },\n symbol: 'roundRect',\n emphasis: {\n focus: 'series',\n },\n data,\n },\n );\n });\n\n return {\n grid: {\n left: '32px',\n top: '16px',\n right: '16px',\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'none',\n axis: 'y',\n },\n extraCssText: 'min-width: 200px; max-width: 600px',\n },\n legend: {\n type: 'scroll',\n orient: 'horizontal',\n bottom: 'bottom',\n },\n xAxis: {\n type: 'value',\n axisLabel: {\n interval: 0,\n rotate: 45,\n },\n splitLine: {\n show: true,\n },\n },\n yAxis: {\n type: 'category',\n data: this.$localized.weekdays().map((wk) => (wk.text)).reverse(),\n },\n series,\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WeekdaysBarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./WeekdaysBarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./WeekdaysBarChart.vue?vue&type=template&id=04473d9f&scoped=true&\"\nimport script from \"./WeekdaysBarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./WeekdaysBarChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./WeekdaysBarChart.vue?vue&type=style&index=0&id=04473d9f&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"04473d9f\",\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('v-card',{staticClass:\"px-5 pt-2 pb-0\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('div',{staticClass:\"text-overline text-secondary flex-grow-1\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.report_avg_guests_per_weekday'))+\" \"),_c('chart-help-tooltip',[_vm._v(\" \"+_vm._s(_vm.$t('help.report.avg_guests_per_weekday'))+\" \")])],1)]),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-tooltip',{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-icon',_vm._g(_vm._b({staticClass:\"ml-1\",attrs:{\"x-small\":\"\"}},'v-icon',attrs,false),on),[_vm._v(\" mdi-help-circle-outline \")])]}}])},[_c('p',{staticClass:\"pt-2\",staticStyle:{\"max-width\":\"250px\"}},[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nexport default Vue.extend({\n name: 'ChartHelpTooltip',\n components: { },\n data() {\n return {};\n },\n watch: { },\n methods: { },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChartHelpTooltip.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ChartHelpTooltip.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ChartHelpTooltip.vue?vue&type=template&id=4464f2d3&\"\nimport script from \"./ChartHelpTooltip.vue?vue&type=script&lang=ts&\"\nexport * from \"./ChartHelpTooltip.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue, { PropType } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { ScatterChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart from 'vue-echarts';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport { weekdayStartAtMondayFromDateDay } from '@/services/time-utils';\nimport ChartHelpTooltip from './ChartHelpTooltip.vue';\n\nuse([\n ScatterChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'AvgGuestsWeekdayChart',\n components: {\n VChart,\n ChartHelpTooltip,\n },\n props: {\n category: { type: Array as PropType>, default: () => [] },\n dataset: { type: Array as PropType>, default: () => [] },\n },\n data() {\n return {\n option: undefined as any,\n themeDark,\n themeLight,\n };\n },\n computed: { },\n watch: {\n category() { this.reset(); },\n dataset() { this.reset(); },\n },\n created() {\n this.reset();\n },\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset() {\n const maxValue = this.dataset.map((e) => e[2]).reduce((p, c) => (p >= c ? p : c), 0);\n const remap = this.$localized.weekdays().reverse().map((w) => weekdayStartAtMondayFromDateDay(w.value));\n const series = [\n {\n type: 'scatter',\n itemStyle: {\n color: '#3355ff',\n opacity: 0.9,\n },\n symbolSize(val: any) {\n return (val[2] / maxValue) * 30;\n },\n data: this.dataset.map((v) => [v[0], remap[v[1]], v[2]]),\n animationDelay(idx: number) {\n return 6 - idx;\n },\n },\n ];\n\n return {\n grid: {\n left: '32px',\n top: '16px',\n right: '32px',\n bottom: '48px',\n },\n tooltip: {\n trigger: 'axis',\n formatter(params: Array) {\n const body = params.map((p) => {\n const weekday = localized.longWeekdays().find(\n (w) => weekdayStartAtMondayFromDateDay(w.value) === remap[p.data[1]],\n );\n return `${weekday?.text}: ${p.data[2]}`;\n }).join('
');\n const head = `
${params[0].axisValueLabel}
`;\n console.log(params);\n return head + body;\n },\n },\n legend: {\n show: false,\n orient: 'horizontal',\n bottom: 'bottom',\n },\n xAxis: {\n type: 'category',\n data: this.category.map((d) => this.$localized.hourMinText(d)!),\n splitLine: {\n show: true,\n },\n minorSplitLine: {\n show: true,\n },\n },\n yAxis: {\n type: 'category',\n data: this.$localized.weekdays().map((wk) => (wk.text)).reverse(),\n },\n series,\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AvgGuestsWeekdayChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AvgGuestsWeekdayChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AvgGuestsWeekdayChart.vue?vue&type=template&id=35735d5c&scoped=true&\"\nimport script from \"./AvgGuestsWeekdayChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./AvgGuestsWeekdayChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AvgGuestsWeekdayChart.vue?vue&type=style&index=0&id=35735d5c&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35735d5c\",\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\n\nimport ReportsToolbar from '@/components/views/reports/ReportsToolbar.vue';\nimport WeekdaysBarChart from '@/components/views/reports/WeekdaysBarChart.vue';\nimport AvgGuestsWeekdayChart from '@/components/views/reports/AvgGuestsWeekdayChart.vue';\nimport { ChartData, reportsValidateDateRange } from '@/services/reports-utils';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ReportsStore from '@/store/reports-store';\nimport { ReportsType } from '@/services/reports';\nimport {\n DateRange, isWholeWeeks, makeWholeWeeks,\n} from '@/services/date-range';\nimport { performActionEx } from '@/services/vue-utils';\n\nexport default Vue.extend({\n name: 'ReportWeekdays',\n components: {\n ReportsToolbar,\n AvgGuestsWeekdayChart,\n WeekdaysBarChart,\n },\n data() {\n return {};\n },\n computed: {\n isAccurate(): boolean {\n const dr = this.$tstore.state.reports.dateRange as DateRange;\n const ndr = makeWholeWeeks(dr, this.$localized.firstDayOfWeek());\n const error = reportsValidateDateRange(ndr);\n return error !== undefined || isWholeWeeks(dr.beginDate, dr.endDate, this.$localized.firstDayOfWeek());\n },\n averageGuests(): { dataset?: [number, number, number][], category?: Date[] } {\n return this.$tstore.getters.reportsWeekdaysAverageGuests;\n },\n services(): ChartData {\n return this.$tstore.getters.reportsWeekdaysServices;\n },\n servicesRevenue(): ChartData {\n return this.$tstore.getters.reportsWeekdaysServicesRevenue;\n },\n tabs(): ChartData {\n return this.$tstore.getters.reportsWeekdaysTabs;\n },\n },\n created() {\n loadStoreModule(this, 'reports', ReportsStore, async () => {\n this.$tstore.dispatch('updateReports', { reportsType: ReportsType.Weekdays });\n });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'reports', async () => { this.$tstore.dispatch('resetReports'); });\n },\n methods: {\n async makeAccurate() {\n const dr = this.$tstore.state.reports.dateRange as DateRange;\n const ndr = makeWholeWeeks(dr, this.$localized.firstDayOfWeek());\n\n await performActionEx(\n async () => this.$tstore.dispatch('setReportsDateRange', ndr),\n { errorPrefix: this.$i18n.tc('error.load_data'), hideActivityIndicator: true },\n );\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportWeekdays.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportWeekdays.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportWeekdays.vue?vue&type=template&id=56579025&\"\nimport script from \"./ReportWeekdays.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportWeekdays.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reports-toolbar')]},proxy:true}])},[_c('v-row',{staticClass:\"pa-3 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 mb-3\",attrs:{\"cols\":\"12\"}},[_c('ratings-bar-chart',{attrs:{\"title\":_vm.$t('label.rating_general'),\"category\":_vm.overall.category,\"series\":_vm.overall.series,\"avg-series\":_vm.overall.avgSeries}})],1)],1),_c('v-row',{staticClass:\"pa-3 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 mb-3\",attrs:{\"cols\":\"12\"}},[_c('ratings-bar-chart',{attrs:{\"title\":_vm.$t('label.rating_food'),\"category\":_vm.food.category,\"series\":_vm.food.series,\"avg-series\":_vm.food.avgSeries}})],1)],1),_c('v-row',{staticClass:\"pa-3 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 mb-3\",attrs:{\"cols\":\"12\"}},[_c('ratings-bar-chart',{attrs:{\"title\":_vm.$t('label.rating_service'),\"category\":_vm.service.category,\"series\":_vm.service.series,\"avg-series\":_vm.service.avgSeries}})],1)],1),_c('v-row',{staticClass:\"pa-3 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 mb-3\",attrs:{\"cols\":\"12\"}},[_c('ratings-bar-chart',{attrs:{\"title\":_vm.$t('label.rating_ambience'),\"category\":_vm.ambience.category,\"series\":_vm.ambience.series,\"avg-series\":_vm.ambience.avgSeries}})],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('v-card',{staticClass:\"px-5 py-2\",staticStyle:{\"overflow-x\":\"scroll\"},attrs:{\"elevation\":\"0\"}},[_c('div',{staticClass:\"d-flex flex-row\"},[_c('div',{staticClass:\"flex-grow-1\"},[_c('span',{staticClass:\"text-overline text-secondary\"},[_vm._v(_vm._s(_vm.title))])]),_c('v-spacer')],1),_c('v-chart',{staticClass:\"chart\",attrs:{\"option\":_vm.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _vm.themeDark : _vm.themeLight,\"autoresize\":\"\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\n\nimport { use } from 'echarts/core';\nimport { LineChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart, { THEME_KEY } from 'vue-echarts';\n\nuse([\n LineChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\nexport default Vue.extend({\n name: 'RatingsBarChart',\n components: {\n VChart,\n },\n props: {\n title: { type: String, required: true },\n // categoryType: { type: String as PropType, default: 'day' },\n category: { type: Array as PropType>, default: () => [] },\n series: { type: Array as PropType>, default: () => [] },\n avgSeries: { type: Array as PropType>, default: () => [] },\n },\n data() {\n return {\n option: undefined as any,\n themeDark,\n themeLight,\n };\n },\n computed: {\n // categoryData(): string[] {\n // switch (this.categoryType) {\n // case 'hour': return this.category.map((d) => this.$localized.hourMinText(d)!);\n // case 'month': return this.category.map((d) => this.$localized.monthText(d)!);\n // default: return this.category.map((d) => this.$localized.shortDayMonthText(d)!);\n // }\n // },\n },\n watch: {\n // categoryType() { this.reset(); },\n category() { this.reset(); },\n series() { this.reset(); },\n avgSeries() { this.reset(); },\n },\n created() {\n this.reset();\n },\n methods: {\n reset() {\n this.option = this.createDataset();\n },\n createDataset(): any {\n const colors = ['#00A26F', '#4dbe9a', '#FF8262', '#EF5350', '#FF002B'];\n const avgColors = ['#3355FF', '#99aaff'];\n\n // series\n const series = [] as any[];\n this.series?.forEach((s, i) => {\n series.push({\n name: s.name,\n type: 'bar',\n stack: 'total',\n barWidth: '60%',\n smooth: 0.15,\n yAxisIndex: 1,\n symbol: 'roundRect',\n emphasis: {\n focus: 'series',\n },\n data: s.data,\n itemStyle: {\n color: colors[i],\n },\n });\n });\n this.avgSeries?.forEach((s, i) => {\n series.push({\n name: s.name,\n type: 'line',\n connectNulls: true,\n yAxisIndex: 0,\n smooth: 0.5,\n symbol: 'roundRect',\n emphasis: {\n focus: 'series',\n },\n data: s.data,\n itemStyle: {\n color: avgColors[i],\n },\n });\n });\n\n // yAxis\n const yAxis = [] as any[];\n yAxis.push({\n type: 'value',\n name: this.$i18n.tc('label.report_average'),\n position: 'left',\n // alignTicks: true,\n offset: 0,\n min: 0.0,\n max: 5.0,\n axisLine: {\n show: true,\n lineStyle: {\n color: avgColors[0],\n },\n },\n });\n yAxis.push({\n type: 'value',\n name: this.series.length > 0 ? this.$i18n.tc('label.report_count') : '',\n position: 'right',\n alignTicks: true,\n axisLine: {\n show: this.series.length > 0,\n lineStyle: {\n color: colors[0],\n },\n },\n });\n\n // chart data\n return {\n grid: {\n left: '2%',\n top: '36px',\n right: '2%',\n containLabel: true,\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'line',\n axis: 'x',\n },\n valueFormatter: (v: number) => (v !== undefined && v % 1 !== 0 ? `${v.toFixed(1)}` : v),\n extraCssText: 'min-width: 200px; max-width: 600px',\n },\n legend: {\n orient: 'horizontal',\n bottom: 'bottom',\n },\n xAxis: {\n // splitNumber: 16,\n type: 'category',\n data: this.category,\n axisLabel: {\n interval: 0,\n rotate: 45,\n },\n splitLine: {\n show: true,\n },\n minorSplitLine: {\n show: true,\n },\n },\n yAxis,\n series,\n };\n },\n },\n});\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RatingsBarChart.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RatingsBarChart.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RatingsBarChart.vue?vue&type=template&id=6b1b8686&scoped=true&\"\nimport script from \"./RatingsBarChart.vue?vue&type=script&lang=ts&\"\nexport * from \"./RatingsBarChart.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RatingsBarChart.vue?vue&type=style&index=0&id=6b1b8686&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6b1b8686\",\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-param-reassign */\n/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\n\nimport store from '@/store/store';\nimport { FeedbackReports } from '@/grpc-pb/reports_service_pb';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport i18n from '@/plugins/i18n';\nimport { CategoryType } from './reports-utils';\n\nexport interface RatingChartData {\n category?: string[],\n series?: {name: string, data: number[]}[],\n avgSeries?: {name: string, data: (number|null)[]}[],\n}\n\nfunction categoryData(categoryType: CategoryType, category: Date[]): string[] {\n switch (categoryType) {\n case 'hour': return category.map((d) => localized.hourMinText(d)!);\n case 'month': return category.map((d) => localized.monthText(d)!);\n default: return category.map((d) => localized.shortDayMonthText(d)!);\n }\n}\n\nexport function ratingChartData(type: 'overall'|'food'|'service'|'ambience'): RatingChartData {\n const feedbacks = store.getters.reportsTabReports?.feedbacks as FeedbackReports.AsObject;\n const pfeedbacks = store.getters.reportsPreviousTabReports?.feedbacks as FeedbackReports.AsObject;\n\n if (!feedbacks) return {};\n\n const { categoryType, category: categoryDates } = store.getters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const category = categoryData(categoryType, categoryDates);\n\n // compare averages\n if (pfeedbacks) {\n const data = feedbacks.binsList.map((bin) => ((bin[type]?.starsList ?? []).reduce((wsum, cnt, rti) => wsum + (rti + 1) * cnt, 0) / (bin[type]?.starsList ?? []).reduce((sum, cnt) => sum + cnt, 0)) || null);\n const pdata = pfeedbacks.binsList.map((bin) => ((bin[type]?.starsList ?? []).reduce((wsum, cnt, rti) => wsum + (rti + 1) * cnt, 0) / (bin[type]?.starsList ?? []).reduce((sum, cnt) => sum + cnt, 0)) || null);\n const avgSeries = [\n { name: i18n.tc('label.report_this_period'), data },\n { name: i18n.tc('label.report_previous_period'), data: pdata },\n ];\n\n return { category, series: [], avgSeries };\n }\n\n // bar star ratings + average rating\n const dataset = [5, 4, 3, 2, 1].map((i) => feedbacks.binsList.map((bin) => bin[type]?.starsList[i - 1] ?? 0));\n // const totals = feedbacks.binsList.reduce((sums, bin) => sums.map((s, i) => s + (bin[type]?.starsList[i] ?? 0)), [0, 0, 0, 0, 0]);\n const avgDataset = feedbacks.binsList.map((bin) => ((bin[type]?.starsList ?? []).reduce((wsum, cnt, rti) => wsum + (rti + 1) * cnt, 0) / (bin[type]?.starsList ?? []).reduce((sum, cnt) => sum + cnt, 0)) || null);\n\n const series = dataset.map((ds, i) => ({ name: '★'.repeat(5 - i), data: ds }));\n const avgSeries = [{ name: i18n.tc('label.report_average_rating'), data: avgDataset }];\n\n return { category, series, avgSeries };\n}\n","\n\nimport Vue from 'vue';\n\nimport RatingsBarChart from '@/components/views/reports/RatingsBarChart.vue';\nimport ReportsToolbar from '@/components/views/reports/ReportsToolbar.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ReportsStore from '@/store/reports-store';\nimport { ReportsType } from '@/services/reports';\nimport { RatingChartData, ratingChartData } from '@/services/reports-feedback-utils';\n\nexport default Vue.extend({\n name: 'ReportFeedback',\n components: {\n RatingsBarChart,\n ReportsToolbar,\n },\n data() {\n return {};\n },\n computed: {\n overall(): RatingChartData { return ratingChartData('overall'); },\n food(): RatingChartData { return ratingChartData('food'); },\n service(): RatingChartData { return ratingChartData('service'); },\n ambience(): RatingChartData { return ratingChartData('ambience'); },\n\n },\n created() {\n loadStoreModule(this, 'reports', ReportsStore, async () => {\n this.$tstore.dispatch('updateReports', { reportsType: ReportsType.Feedback });\n });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'reports', async () => { this.$tstore.dispatch('resetReports'); });\n },\n methods: {},\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportFeedback.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportFeedback.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportFeedback.vue?vue&type=template&id=d134b906&\"\nimport script from \"./ReportFeedback.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportFeedback.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c('reports-toolbar')]},proxy:true}])},[_c('v-row',{staticClass:\"pa-3 ma-0\"},[_c('v-col',{staticClass:\"pa-0 ma-0 mb-3\",attrs:{\"cols\":\"12\"}},[_c('simple-line-chart',{attrs:{\"title\":_vm.$t('label.report_sent_emails'),\"category-type\":_vm.emails.categoryType,\"category\":_vm.emails.category,\"series\":_vm.email_series,\"dataset\":_vm.emails.dataset,\"totals\":_vm.emails.totals,\"unit\":_vm.$t('label.unit_emails')}})],1),_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"12\"}},[_c('simple-line-chart',{attrs:{\"title\":_vm.$t('label.report_sent_sms'),\"category-type\":_vm.sms.categoryType,\"category\":_vm.sms.category,\"series\":_vm.sms_series,\"dataset\":_vm.sms.dataset,\"totals\":_vm.sms.totals,\"unit\":_vm.$t('label.unit_messages')}})],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\n\nimport SimpleLineChart from '@/components/views/reports/SimpleLineChart.vue';\nimport ReportsToolbar from '@/components/views/reports/ReportsToolbar.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ReportsStore from '@/store/reports-store';\nimport { ReportsType } from '@/services/reports';\nimport { ChartData } from '@/services/reports-utils';\n\nexport default Vue.extend({\n name: 'ReportMessages',\n components: {\n SimpleLineChart,\n ReportsToolbar,\n },\n data() {\n return {\n sms_series: [this.$i18n.t('label.report_sent_sms')],\n email_series: [this.$i18n.t('label.report_sent_emails')],\n };\n },\n computed: {\n sms(): ChartData {\n return this.$tstore.getters.reportsSms;\n },\n emails(): ChartData {\n return this.$tstore.getters.reportsEmails;\n },\n },\n created() {\n loadStoreModule(this, 'reports', ReportsStore, async () => {\n this.$tstore.dispatch('updateReports', { reportsType: ReportsType.Messages });\n });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'reports', async () => { this.$tstore.dispatch('resetReports'); });\n },\n methods: {},\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportMessages.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./ReportMessages.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ReportMessages.vue?vue&type=template&id=ba931d80&\"\nimport script from \"./ReportMessages.vue?vue&type=script&lang=ts&\"\nexport * from \"./ReportMessages.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('search-list')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport SearchList from '@/components/views/main/SearchList.vue';\n\nexport default Vue.extend({\n name: 'Search',\n components: {\n SearchList,\n },\n data() {\n return {\n\n };\n },\n computed: {\n },\n mounted() {\n },\n methods: {\n },\n});\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Search.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Search.vue?vue&type=template&id=3a17d798&\"\nimport script from \"./Search.vue?vue&type=script&lang=ts&\"\nexport * from \"./Search.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_vm.breadcrumbs},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_changes'))+\" \")],1),(!_vm.isNew && !_vm.isDefault)?_c('v-btn',{staticClass:\"mr-2\",attrs:{\"color\":\"error\"},on:{\"click\":function($event){_vm.deleteConfirmation = true}}},[_c('v-icon',[_vm._v(\"mdi-delete\")]),_c('span',{staticClass:\"d-none d-lg-block\"},[_vm._v(_vm._s(_vm.$t('button.delete')))])],1):_vm._e()]},proxy:true},{key:\"content\",fn:function(){return [(_vm.templateEditDialog)?_c('message-center-template-dialog',{attrs:{\"visible\":_vm.templateEditDialog,\"template\":_vm.template,\"rule\":_vm.r},on:{\"update-template\":_vm.updateTemplate,\"close\":function($event){_vm.templateEditDialog = false}}}):_vm._e(),_c('confirmation-dialog',{attrs:{\"visible\":_vm.deleteConfirmation,\"message\":_vm.$t('message.confirm_delete_message_rule')},on:{\"confirm\":_vm.remove,\"close\":function($event){_vm.deleteConfirmation = false}}}),_c('validation-observer',{ref:\"observer\"},[_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('v-select',{attrs:{\"disabled\":!_vm.isNew,\"items\":_vm.messageTypes,\"return-object\":\"\",\"label\":_vm.$t('title.message_type')},model:{value:(_vm.r.messageType),callback:function ($$v) {_vm.$set(_vm.r, \"messageType\", $$v)},expression:\"r.messageType\"}})],1),_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"disabled\":_vm.isDefault || !_vm.isNew,\"cols\":\"12\",\"lg\":\"8\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{attrs:{\"disabled\":_vm.isDefault || !_vm.isNew,\"items\":_vm.eventTypes,\"return-object\":\"\",\"label\":_vm.$t('label.event_type'),\"error-messages\":errors},model:{value:(_vm.r.eventType),callback:function ($$v) {_vm.$set(_vm.r, \"eventType\", $$v)},expression:\"r.eventType\"}})]}}])})],1),_c('v-col',{attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('v-row',[_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{attrs:{\"false-value\":true,\"true-value\":false,\"label\":_vm.$t('label.active')},model:{value:(_vm.r.isInactive),callback:function ($$v) {_vm.$set(_vm.r, \"isInactive\", $$v)},expression:\"r.isInactive\"}})],1),(!_vm.r.isDefault)?_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"items\":_vm.campaigns,\"return-object\":\"\",\"label\":_vm.$t('label.campaign')},on:{\"change\":_vm.updateValue},model:{value:(_vm.r.campaign),callback:function ($$v) {_vm.$set(_vm.r, \"campaign\", $$v)},expression:\"r.campaign\"}})],1):_vm._e(),(!_vm.r.isDefault)?_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"items\":_vm.services,\"return-object\":\"\",\"label\":_vm.$t('label.service')},on:{\"change\":_vm.updateValue},model:{value:(_vm.r.service),callback:function ($$v) {_vm.$set(_vm.r, \"service\", $$v)},expression:\"r.service\"}})],1):_vm._e(),(!_vm.r.isDefault)?_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[_c('v-select',{attrs:{\"items\":_vm.sections,\"return-object\":\"\",\"label\":_vm.$t('label.section')},on:{\"change\":_vm.updateValue},model:{value:(_vm.r.tab),callback:function ($$v) {_vm.$set(_vm.r, \"tab\", $$v)},expression:\"r.tab\"}})],1):_vm._e(),_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[(_vm.r.eventType && (_vm.r.eventType.isTimedAfter || _vm.r.eventType.isTimedBefore))?_c('time-picker-field',{attrs:{\"label\":_vm.$t('label.send_at_time')},model:{value:(_vm.r.sendAtSpecificTime),callback:function ($$v) {_vm.$set(_vm.r, \"sendAtSpecificTime\", $$v)},expression:\"r.sendAtSpecificTime\"}}):_vm._e()],1),_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[(_vm.r.eventType && _vm.r.eventType.isTimedBefore)?_c('v-select',{attrs:{\"items\":_vm.days,\"label\":_vm.$t('label.send_days_in_advance')},model:{value:(_vm.r.sendDaysInAdvance),callback:function ($$v) {_vm.$set(_vm.r, \"sendDaysInAdvance\", $$v)},expression:\"r.sendDaysInAdvance\"}}):_vm._e()],1),_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[(_vm.r.eventType && _vm.r.eventType.isTimedAfter)?_c('v-select',{attrs:{\"items\":_vm.days,\"label\":_vm.$t('label.send_days_after')},model:{value:(_vm.r.sendDaysAfter),callback:function ($$v) {_vm.$set(_vm.r, \"sendDaysAfter\", $$v)},expression:\"r.sendDaysAfter\"}}):_vm._e()],1),_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\"}},[(_vm.sendBccAllowed)?_c('v-switch',{attrs:{\"label\":_vm.$t('label.send_bcc')},model:{value:(_vm.r.sendBcc),callback:function ($$v) {_vm.$set(_vm.r, \"sendBcc\", $$v)},expression:\"r.sendBcc\"}}):_vm._e()],1)],1)],1)],1),(!_vm.isNew)?_c('v-row',{attrs:{\"justify\":\"center\"}},[_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('v-btn',{attrs:{\"outlined\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.addTemplate}},[_c('v-icon',[_vm._v(\" mdi-plus \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.add_custom_template'))+\" \")],1)],1)],1):_vm._e(),_c('v-row',{attrs:{\"justify\":\"center\"}},[(!_vm.isNew)?_c('v-col',{staticClass:\"pb-0 pt-0\",attrs:{\"cols\":\"12\",\"lg\":\"8\"}},[_c('v-data-table',{staticClass:\"clickable-table\",attrs:{\"headers\":_vm.headers,\"items\":_vm.templates,\"disable-pagination\":\"\",\"hide-default-footer\":\"\",\"mobile-breakpoint\":\"0\",\"no-data-text\":_vm.$t('label.no_custom_templates')},on:{\"click:row\":_vm.editTemplate},scopedSlots:_vm._u([{key:\"item.actions\",fn:function(props){return [_c('v-btn',{attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.removeTemplate(props.item.id)}}},[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],1)]}}],null,false,1204766758)})],1):_vm._e()],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('modal-dialog',{attrs:{\"visible\":_vm.dialog,\"persistent\":\"\",\"scrollable\":\"\",\"max-width\":\"600px\",\"title\":_vm.title},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"success\",\"disabled\":!_vm.isChanged},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('validation-observer',{ref:\"observer\"},[_c('v-form',{ref:\"form\"},[_c('v-row',{staticClass:\"pt-5\"},[(_vm.isNew)?_c('v-col',{staticClass:\"pt-0 mt-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"pt-0\",attrs:{\"items\":_vm.locales,\"error-messages\":errors,\"label\":_vm.$t('label.language'),\"hint\":!_vm.t.locale ? _vm.$i18n.t('label.hint_mc_specify_language') : null,\"persistent-hint\":!_vm.t.locale},on:{\"input\":_vm.localeChanged},model:{value:(_vm.t.locale),callback:function ($$v) {_vm.$set(_vm.t, \"locale\", $$v)},expression:\"t.locale\"}})]}}],null,false,3523588203)})],1):_vm._e(),(_vm.t.locale)?[(!_vm.isSMS)?_c('v-col',{staticClass:\"pt-0 mt-0\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|max:255\",\"label\":_vm.$t('label.subject')},model:{value:(_vm.t.subject),callback:function ($$v) {_vm.$set(_vm.t, \"subject\", $$v)},expression:\"t.subject\"}})],1):_vm._e(),_c('v-col',{staticClass:\"pt-0 mt-0\",staticStyle:{\"min-width\":\"400px\"},attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":_vm.isSMS ? 'required|max:603' : 'required'},scopedSlots:_vm._u([{key:\"default\",fn:function({errors}){return [_c('rich-text-editor',{attrs:{\"richtext-allowed\":!_vm.isSMS,\"error-messages\":errors,\"hint\":_vm.isSMS ? _vm.smsMessageLength : ''},scopedSlots:_vm._u([{key:\"menubar\",fn:function({editor}){return [_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-btn',_vm._g({staticClass:\"px-4 mr-2\",attrs:{\"color\":\"primary\",\"outlined\":\"\",\"small\":\"\"}},on),[_vm._v(\" \"+_vm._s(_vm.$t('button.insert_placeholder'))+\" \")])]}}],null,true)},[_c('v-list',_vm._l((_vm.placeholders),function(item,i){return _c('v-list-item',{key:i,on:{\"click\":function($event){editor?.commands.insertHandlebar({ id: `${item.id}`, label: item.name })}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.name))])],1)}),1)],1)]}}],null,true),model:{value:(_vm.t.body),callback:function ($$v) {_vm.$set(_vm.t, \"body\", $$v)},expression:\"t.body\"}})]}}],null,false,3180586443)})],1)]:_vm._e()],2)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue, { PropType } from 'vue';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport RichTextEditor from '@/components/editors/RichTextEditor.vue';\nimport MessageTemplate from '@/model/MessageTemplate';\nimport Locale from '@/model/Locale';\nimport MessageRule from '@/model/MessageRule';\nimport DialogClosable from '@/mixins/dialog-closable';\nimport { ValidationObserver } from 'vee-validate';\nimport ValidatedTextField from '@/components/forms/ValidatedTextField.vue';\nimport { count } from 'sms-length';\nimport { MessageTypeChannel } from '@/model/MessageType';\nimport MessageHandlebar from '@/model/MessageHandlebar';\nimport toast from '@/plugins/toast-plugin/toast';\nimport { strcmp } from '@/services/common';\n\nexport default Vue.extend({\n name: 'MessageCenterTemplateDialog',\n components: { RichTextEditor, ValidatedTextField },\n mixins: [DialogClosable],\n props: {\n template: { type: Object as PropType, required: true },\n rule: { type: Object as PropType, required: true },\n },\n data() {\n return {\n t: cloneModel(this.template),\n oldt: cloneModel(this.template),\n };\n },\n computed: {\n locales(): Locale[] {\n const map = new Set();\n this.rule.templates.forEach((o) => { if (!o.isDefault) map.add(o.locale ?? ''); });\n return this.$tstore.state.codes.locales\n .filter((o) => !map.has(o.locale))\n .sort((a: Locale, b: Locale) => strcmp(a.text, b.text));\n },\n isChanged(): boolean {\n return !isModelEqualToModel(this.t, this.oldt);\n },\n isNew(): boolean {\n return this.template.locale === undefined;\n },\n title(): string {\n return (this.template.locale && this.$tstore.getters.localesByLocale.get(this.template.locale)?.language)\n ?? this.$i18n.tc('title.new_template');\n },\n isSMS(): boolean {\n return this.rule.messageType?.channel === MessageTypeChannel.SMS;\n },\n smsMessageLength(): string {\n const c = count(this.t.body || '');\n return this.$i18n.t(\n 'label.approx_sms_messages',\n [c.length, Math.min(603, c.characterPerMessage * (c.messages || 1)), c.messages],\n ) as string;\n },\n handlebars(): MessageHandlebar[] {\n return this.$tstore.state.messageCenter.handlebars;\n },\n placeholders(): {id: number, name: string}[] {\n const handlebars = this.handlebars.map((o) => ({ id: o.id, name: this.$i18n.tc(`code.handlebar.${o.name}`) }));\n return handlebars;\n },\n },\n watch: {\n visible() { },\n },\n created() {\n if (!this.t.locale) {\n const { locale } = this.$tstore.state.settings.account;\n if (!this.rule.templates.find((o) => !o.isDefault && o.locale === locale)) {\n this.t.locale = locale;\n this.localeChanged();\n }\n }\n },\n methods: {\n close() {\n this.$emit('close');\n },\n async save() {\n const isValid = await (this.$refs.observer as InstanceType).validate();\n if (!isValid) { toast.error(this.$i18n.tc('error.validation_failed')); return; }\n this.$emit('update-template', this.t);\n },\n cancel() {\n this.close();\n },\n localeChanged() {\n const template = this.rule.templates.find((o) => o.locale === this.t.locale) ?? new MessageTemplate();\n if (!template) return;\n\n this.t.body = template.body;\n this.t.subject = template.subject;\n },\n },\n});\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenterTemplateDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenterTemplateDialog.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageCenterTemplateDialog.vue?vue&type=template&id=d10f38e0&\"\nimport script from \"./MessageCenterTemplateDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageCenterTemplateDialog.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\nimport Vue from 'vue';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport UnsavedGuard from '@/mixins/unsaved-guard';\nimport SettingsBreadcrumbs from '@/mixins/settings-breadcrumbs';\nimport ConfirmationDialog from '@/components/dialogs/ConfirmationDialog.vue';\nimport MessageCenterTemplateDialog from '@/components/views/settings/MessageCenterTemplateDialog.vue';\nimport { strcmp } from '@/services/common';\nimport { performAction } from '@/services/vue-utils';\nimport toast from '@/plugins/toast-plugin/toast';\nimport MessageRule from '@/model/MessageRule';\nimport { cloneModel, isModelEqualToModel, uniqueMinId } from '@/model/model-utils';\nimport Campaign from '@/model/Campaign';\nimport Service from '@/model/Service';\nimport Tab from '@/model/Tab';\nimport MessageEventType from '@/model/MessageEventType';\nimport MessageTemplate from '@/model/MessageTemplate';\nimport Locale from '@/model/Locale';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport MessageCenterStore from '@/store/message-center-store';\nimport MessageType, { MessageTypeChannel } from '@/model/MessageType';\n\nexport default Vue.extend({\n name: 'MessageCenterRuleEditor',\n components: { ConfirmationDialog, SettingsForm, MessageCenterTemplateDialog },\n mixins: [UnsavedGuard, SettingsBreadcrumbs],\n\n data() {\n return {\n deleteConfirmation: false,\n r: new MessageRule(),\n oldr: new MessageRule(),\n template: new MessageTemplate(),\n breadcrumbs: [] as any,\n days: [...new Array(11)].map((e, i) => (i)),\n headers: [\n {\n text: this.$i18n.t('label.custom_templates'),\n value: 'language',\n align: 'start',\n sortable: false,\n },\n {\n text: '',\n value: 'actions',\n align: 'right',\n sortable: false,\n },\n ],\n templateEditDialog: false,\n };\n },\n computed: {\n isChanged(): boolean {\n return !isModelEqualToModel(this.r, this.oldr);\n },\n isNew(): boolean {\n return this.r.id === 0;\n },\n isDefault(): boolean {\n return this.r.isDefault === true;\n },\n messageTypes(): MessageType[] {\n return this.$tstore.state.messageCenter.messageTypes;\n },\n campaigns(): ({text: string, value: null} | { divider?: boolean} | Campaign)[] {\n return [\n { text: this.$i18n.tc('label.all_campaigns'), value: null },\n { divider: true },\n ...this.$tstore.state.messageCenter.campaigns ?? [],\n ];\n },\n services(): ({text: string, value: null} | { divider?: boolean} | Service)[] {\n return [\n { text: this.$i18n.tc('label.all_services'), value: null },\n { divider: true },\n ...this.$tstore.state.settings.services ?? [],\n ];\n },\n sections(): ({text: string, value: null} | { divider?: boolean} | Tab)[] {\n return [\n { text: this.$i18n.tc('label.all_sections'), value: null },\n { divider: true },\n ...this.$tstore.state.settings.tabs ?? [],\n ];\n },\n eventTypes(): MessageEventType[] {\n return this.$tstore.getters.messageEventTypes;\n },\n templates(): {id: number, language: string}[] {\n const localesByLocale = this.$tstore.getters.localesByLocale as Map;\n const customTemplates = this.r.templates.filter((o) => !o.isDefault && !o.isDeleted);\n const languages = customTemplates.map((o) => {\n const locale = o.locale ?? '';\n const language = localesByLocale.get(locale)?.language ?? locale;\n return { id: o.id, language };\n });\n const sortedLanguages = languages.sort(\n (o1: {language: string }, o2: {language: string }) => strcmp(o1.language, o2.language),\n );\n return sortedLanguages;\n },\n sendBccAllowed(): boolean {\n return this.r.messageType?.channel === MessageTypeChannel.EMAIL || false;\n },\n },\n created() {\n loadStoreModule(this, 'messageCenter', MessageCenterStore, async () => { this.load(); });\n },\n beforeDestroy() {\n unloadStoreModule(this, 'messageCenter', async () => { this.$tstore.dispatch('resetMessageCenter'); });\n },\n mounted() {\n this.reset();\n this.breadcrumbs[this.breadcrumbs.length - 1].text = this.r.eventType;\n },\n methods: {\n async load() {\n if (this.$tstore.getters.isMessageCenterLoaded) return;\n const ok = await performAction(\n null,\n this.$i18n.tc('error.load_message_center'),\n async () => this.$tstore.dispatch('loadMessageCenter'),\n );\n if (ok) this.reset();\n },\n allowExtraTimeText() {\n return this.r.eventType!.isTimed ?? false\n ? this.$tc('message.allow_change_24h')\n : this.$tc('message.allow_change_2_5min');\n },\n async save() {\n const ok = await performAction(\n `${this.$tc('message.success_changes_saved')} ${this.allowExtraTimeText()}`,\n this.$i18n.tc('error.saving_changes'),\n async () => this.$tstore.dispatch('sendMessageRule', { entity: this.r }),\n true,\n );\n\n if (ok) {\n this.reset();\n this.$router.back();\n }\n },\n async remove() {\n const ok = await performAction(\n `${this.$tc('message.success_message_rule_deleted')}. ${this.allowExtraTimeText()}`,\n this.$tc('error.deleting_message_rule'),\n async () => this.$tstore.dispatch('sendMessageRule', { entity: this.r, delete: true }),\n true,\n );\n\n if (ok) {\n this.reset();\n this.$router.back();\n }\n },\n async reset() {\n this.templateEditDialog = false;\n\n this.breadcrumbs[this.breadcrumbs.length - 1].text = this.isNew\n ? this.$i18n.t('title.new_message_rule')\n : this.$i18n.t('title.message_rule');\n\n const id = Number(this.$route.params.id) || 0;\n const rules = (id < 0 ? this.$tstore.getters.builtinRules : this.$tstore.state.messageCenter.rules) ?? [];\n const r = rules.find((o: MessageRule) => o.id === id) ?? new MessageRule();\n this.r = cloneModel(r);\n this.oldr = r;\n },\n editTemplate(item: {id: number}) {\n this.templateEditDialog = true;\n this.template = this.r.templates.find((o) => o.id === item.id) ?? new MessageTemplate();\n },\n addTemplate() {\n this.templateEditDialog = true;\n this.template = new MessageTemplate();\n this.template.id = uniqueMinId(this.r.templates);\n },\n removeTemplate(id: number) {\n const index = this.r.templates.findIndex((o) => o.id === id);\n if (index < 0) return;\n\n if (this.oldr.templates.some((o) => o.id === id)) {\n this.r.templates[index].isDeleted = true;\n } else {\n this.r.templates.splice(index, 1);\n }\n },\n updateTemplate(t: MessageTemplate) {\n const isNewTemplate = this.template.id <= 0;\n if (isNewTemplate) {\n this.r.templates.push(t);\n this.r.templates.sort((o1, o2) => strcmp(o1.locale!, o2.locale!));\n } else {\n this.template.body = t.body;\n this.template.subject = t.subject;\n }\n this.templateEditDialog = false;\n },\n updateValue(value: string) {\n if (this.r.campaign?.value === null) this.r.campaign = null;\n if (this.r.service?.value === null) this.r.service = null;\n if (this.r.tab?.value === null) this.r.tab = null;\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenterRuleEditor.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./MessageCenterRuleEditor.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./MessageCenterRuleEditor.vue?vue&type=template&id=3225418a&\"\nimport script from \"./MessageCenterRuleEditor.vue?vue&type=script&lang=ts&\"\nexport * from \"./MessageCenterRuleEditor.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"pa-0 ma-0\"},[(_vm.unreadReservationsCount === 0)?_c('guest-list-placeholder',{attrs:{\"title\":_vm.$t('placeholder.no_unread_reservation')}}):_c('guest-results-list',{attrs:{\"show-unread\":\"\",\"reservations\":_vm.unreadReservations}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport Vue from 'vue';\nimport GuestResultsList from '@/components/views/guests/GuestResultsList.vue';\nimport GuestListPlaceholder from '@/components/views/guests/GuestListPlaceholder.vue';\nimport Reservation from '@/model/Reservation';\n\nexport default Vue.extend({\n name: 'UnreadReservations',\n components: {\n GuestResultsList, GuestListPlaceholder,\n },\n data() {\n return {};\n },\n computed: {\n unreadReservations(): Map {\n return this.$tstore.getters.unreadReservationsByDate;\n },\n unreadReservationsCount(): number {\n return this.$tstore.getters.unreadReservationsCount;\n },\n },\n});\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UnreadReservations.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./UnreadReservations.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./UnreadReservations.vue?vue&type=template&id=07882583&\"\nimport script from \"./UnreadReservations.vue?vue&type=script&lang=ts&\"\nexport * from \"./UnreadReservations.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[_c('v-row',[_vm._l((_setup.debugInfo),function(i,r){return [_c('v-col',{key:`${i}_key`,attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" \"+_vm._s(r)+\" \")]),_c('v-col',{key:`${i}_val`,attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" \"+_vm._s(_setup.debugInfo[r])+\" \")])]}),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" FCM Token \")]),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('p',[_vm._v(_vm._s(_setup.isPwa ? _setup.fcmToken : ' - '))]),_c('v-btn',{on:{\"click\":_setup.copyToken}},[_vm._v(\" Copy FCM Token \")])],1),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_vm._v(\" Check For Updates \")]),_c('v-col',{attrs:{\"cols\":\"12\",\"sm\":\"6\"}},[_c('v-btn',{attrs:{\"color\":\"green\"},on:{\"click\":_setup.checkForUpdates}},[_vm._v(\" Check for updates \")])],1)],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { ref } from 'vue';\n\nexport default function usePwa() {\n const isPwa = ref(false);\n\n window.addEventListener('DOMContentLoaded', () => {\n if (window.matchMedia('(display-mode: standalone)').matches) {\n isPwa.value = true;\n }\n });\n\n isPwa.value = window.matchMedia('(display-mode: standalone)').matches;\n\n return {\n isPwa,\n };\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport copy from 'copy-to-clipboard';\nimport { computed, ref } from 'vue';\nimport usePwa from '@/composables/pwa';\nimport store from '@/store/store';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'PwaInfo',\n setup(__props) {\n\nconst { userAgent } = window.navigator;\nconst { isPwa } = usePwa();\n\nconst fcmToken = computed(() => store.getters.fcmToken as string | null);\n\nconst copyToken = () => {\n if (!fcmToken.value) return;\n copy(fcmToken.value);\n};\n\nconst registrationActive = ref('');\nnavigator.serviceWorker.getRegistration().then((r) => { registrationActive.value = r?.active?.state || ' - '; });\n\nconst debugInfo = computed(() => ({\n user_agent: userAgent,\n is_pwa: isPwa.value,\n version: `web_${process.env.VUE_APP_VERSION}`,\n registration: registrationActive,\n}));\n\nconst checkForUpdates = () => {\n navigator.serviceWorker.getRegistration().then((r) => (r ? r.update() : console.log('Service Worker Not Found')));\n};\n\n\nreturn { __sfc: true,userAgent, isPwa, fcmToken, copyToken, registrationActive, debugInfo, checkForUpdates }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PwaInfo.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PwaInfo.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./PwaInfo.vue?vue&type=template&id=40612fb1&\"\nimport script from \"./PwaInfo.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./PwaInfo.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c(_setup.MainToolbar,[_c(_setup.DateRangePickerField,{attrs:{\"disabled\":_setup.filterDateRangeDisabled,\"value\":_setup.filterDateRange,\"content-style\":\"min-width: 200px; max-width: 200px\",\"content-class\":\"mt-2 pr-4\",\"label\":_vm.$t('label.date_range'),\"disable-future\":\"\"},on:{\"input\":_setup.filterDateRangeSelected}}),(_vm.$vuetify.breakpoint.mdAndUp)?[_c('v-text-field',{staticClass:\"mt-2 pr-4\",staticStyle:{\"min-width\":\"200px\",\"width\":\"200px\",\"max-width\":\"200px\"},attrs:{\"value\":_setup.filter.name,\"clearable\":\"\",\"dense\":\"\",\"label\":_vm.$t('label.name'),\"hide-details\":\"\"},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, name: $event ?? ''})}}}),_c('v-text-field',{staticClass:\"mt-2 pr-4\",staticStyle:{\"min-width\":\"120px\"},attrs:{\"value\":_setup.filter.comments,\"clearable\":\"\",\"dense\":\"\",\"label\":_vm.$t('label.comments'),\"hide-details\":\"\"},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, comments: $event ?? ''})}}}),_c(_setup.FeedbackRatingSelect,{attrs:{\"value\":_setup.filter.foodRating,\"label\":_vm.$t('label.rating_food')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, foodRating: $event})}}}),_c(_setup.FeedbackRatingSelect,{attrs:{\"value\":_setup.filter.serviceRating,\"label\":_vm.$t('label.rating_service')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, serviceRating: $event})}}}),_c(_setup.FeedbackRatingSelect,{attrs:{\"value\":_setup.filter.ambienceRating,\"label\":_vm.$t('label.rating_ambience')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, ambienceRating: $event})}}}),_c(_setup.FeedbackRatingSelect,{attrs:{\"value\":_setup.filter.overallRating,\"width\":168,\"label\":_vm.$t('label.rating_general')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, overallRating: $event})}}}),_c('v-spacer',{staticStyle:{\"min-width\":\"84px\",\"max-width\":\"84px\"}})]:[_c('v-spacer'),_c('v-menu',{attrs:{\"close-on-content-click\":false,\"min-width\":\"250px\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({attrs, on}){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(_vm._s(_setup.filterInactive ? 'mdi-filter-outline' : 'mdi-filter'))])],1)]}}])},[_c('v-list',{staticClass:\"pt-0\"},[_c('v-list-item',[_c('v-text-field',{staticClass:\"px-2 py-4\",attrs:{\"value\":_setup.filter.name,\"hide-details\":\"\",\"label\":_vm.$t('label.name'),\"append-icon\":_setup.filter.name.length > 0 ? 'mdi-close' : null},on:{\"click:append\":function($event){_setup.filter.name = ''},\"input\":function($event){return _setup.applyFilter({..._setup.filter, name: $event ?? ''})}}})],1),_c('v-divider'),_c('v-list-item',[_c('v-text-field',{staticClass:\"px-2 py-4\",attrs:{\"value\":_setup.filter.comments,\"hide-details\":\"\",\"label\":_vm.$t('label.comments'),\"append-icon\":_setup.filter.comments.length > 0 ? 'mdi-close' : null},on:{\"click:append\":function($event){_setup.filter.comments = ''},\"input\":function($event){return _setup.applyFilter({..._setup.filter, comments: $event ?? ''})}}})],1),_c('v-divider'),_c('v-list-item',[_c(_setup.FeedbackRatingSelect,{staticClass:\"px-2 py-4\",attrs:{\"value\":_setup.filter.foodRating,\"width\":250,\"label\":_vm.$t('label.rating_food')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, foodRating: $event})}}})],1),_c('v-divider'),_c('v-list-item',[_c(_setup.FeedbackRatingSelect,{staticClass:\"px-2 py-4\",attrs:{\"value\":_setup.filter.serviceRating,\"width\":250,\"label\":_vm.$t('label.rating_service')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, serviceRating: $event})}}})],1),_c('v-divider'),_c('v-list-item',[_c(_setup.FeedbackRatingSelect,{staticClass:\"px-2 py-4\",attrs:{\"value\":_setup.filter.ambienceRating,\"width\":250,\"label\":_vm.$t('label.rating_ambience')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, ambienceRating: $event})}}})],1),_c('v-divider'),_c('v-list-item',[_c(_setup.FeedbackRatingSelect,{staticClass:\"px-2 py-4\",attrs:{\"value\":_setup.filter.overallRating,\"width\":250,\"label\":_vm.$t('label.rating_general')},on:{\"input\":function($event){return _setup.applyFilter({..._setup.filter, overallRating: $event})}}})],1)],1)],1)]],2)]},proxy:true}])},[(_setup.upgradeDialog)?_c(_setup.PaywallUpgradeDialog,{on:{\"close\":function($event){_setup.upgradeDialog=false}}}):_vm._e(),(_setup.detailsDialog && _setup.selectedFeedback)?_c(_setup.FeedbackDetailsDialog,{attrs:{\"feedback\":_setup.selectedFeedback},on:{\"close\":function($event){_setup.detailsDialog=false}}}):_vm._e(),(_setup.messageDialog && _setup.selectedFeedback?.reservation)?_c(_setup.ContactMessageDialog,{attrs:{\"visible\":\"\",\"reservation\":_setup.selectedFeedback.reservation,\"feedback-id\":_setup.selectedFeedback.id},on:{\"close\":_setup.closeMessageDialog}}):_vm._e(),_c('v-data-table',{staticClass:\"clickable-table\",attrs:{\"dense\":\"\",\"items-per-page\":50,\"headers\":_setup.headers,\"items\":_setup.feedbacks,\"footer-props\":{ itemsPerPageOptions: [25, 50, 100, 200, -1] },\"custom-sort\":_setup.noSort},on:{\"click:row\":_setup.showFeedbackDetail,\"pagination\":_setup.pagination,\"update:sort-by\":_setup.updateSortBy,\"update:sort-desc\":_setup.updateSortDesc,\"update:options\":_setup.refresh},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_c('p',{staticClass:\"py-16 my-16\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.no_feedback_received_yet'))+\" \")])]},proxy:true},{key:\"item.created\",fn:function({item}){return [_vm._v(\" \"+_vm._s(_setup.localized.numericDateTimeText(item.created))+\" \")]}},{key:\"item.name\",fn:function({item}){return [_vm._v(\" \"+_vm._s(item.contactName)+\" \"),(item.contactReservationCount > 1)?_c('sup',[_vm._v(_vm._s(item.contactReservationCount))]):_vm._e()]}},{key:\"item.overallRating\",fn:function({item}){return [_c('v-rating',{attrs:{\"color\":\"yellow\",\"background-color\":\"grey\",\"readonly\":\"\",\"dense\":\"\",\"value\":item.overallRating}})]}},{key:\"item.foodRating\",fn:function({item}){return [_c(_setup.FeedbackRatingChip,{attrs:{\"value\":item.foodRating}})]}},{key:\"item.serviceRating\",fn:function({item}){return [_c(_setup.FeedbackRatingChip,{attrs:{\"value\":item.serviceRating}})]}},{key:\"item.ambienceRating\",fn:function({item}){return [_c(_setup.FeedbackRatingChip,{attrs:{\"value\":item.ambienceRating}})]}},{key:\"item.replied\",fn:function({item}){return [(!item.replied)?_c('v-tooltip',{key:`replied_${item.id}`,attrs:{\"open-delay\":\"270\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on, attr}){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"small\":\"\",\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _setup.replyClicked(item)}}},'v-btn',attr,false),on),[_c('v-icon',[_vm._v(\" mdi-reply \")])],1)]}}],null,true)},[_vm._v(\" \"+_vm._s(_vm.$t('label.send_reply'))+\" \")]):_c('v-tooltip',{key:`notreplied_${item.id}`,attrs:{\"open-delay\":\"270\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on, attr}){return [_c('v-icon',_vm._g(_vm._b({attrs:{\"color\":\"green\"}},'v-icon',attr,false),on),[_vm._v(\" mdi-message-check \")])]}}],null,true)},[_vm._v(\" \"+_vm._s(_setup.formatRepliedOnDate(item.replied))+\" \")])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-chip',{attrs:{\"color\":_setup.colorForRating,\"small\":\"\",\"text-color\":\"black\"}},[(_vm.value)?[_vm._v(\" \"+_vm._s(_vm.value)+\" / 5 \"),_c('v-icon',{attrs:{\"x-small\":\"\",\"color\":\"black\",\"right\":\"\"}},[_vm._v(\" mdi-star \")])]:[_c('span',{staticStyle:{\"width\":\"33px\"}},[_vm._v(\" - \")])]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, computed } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FeedbackRatingChip',\n props: {\n value: { type: Number as PropType, required: true },\n },\n setup(__props) {\n\nconst props = __props;\n\n\nconst colorForRating = computed(() => {\n switch (props.value) {\n case 1: return 'red';\n case 2: return 'red lighten-1';\n case 3: return 'orange';\n case 4: return 'green lighten-3';\n case 5: return 'green';\n default: return 'grey';\n }\n});\n\nreturn { __sfc: true,props, colorForRating }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FeedbackRatingChip.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FeedbackRatingChip.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./FeedbackRatingChip.vue?vue&type=template&id=ab8f1c5e&\"\nimport script from \"./FeedbackRatingChip.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./FeedbackRatingChip.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-select',{staticClass:\"mt-2 px-2\",style:(`max-width: ${_vm.width}px;min-width: ${_vm.width}px;width: ${_vm.width}px`),attrs:{\"items\":_setup.items,\"dense\":\"\",\"menu-props\":{offsetY: true, minWidth: _vm.width},\"label\":_vm.label,\"multiple\":\"\",\"hide-details\":\"\",\"append-icon\":_setup.ratings.length === 5 ? '$dropdown' : null,\"append-outer-icon\":_setup.ratings.length > 0 && _setup.ratings.length < 5 ? 'mdi-close' : null},on:{\"click:append-outer\":_setup.clear,\"change\":_setup.ratingsChanged},scopedSlots:_vm._u([{key:\"selection\",fn:function({ item, index }){return [(_setup.ratings.length < 5)?_c('span',[_vm._v(\" \"+_vm._s(item)),(index < _setup.ratings.length-1)?[_vm._v(\", \")]:_vm._e()],2):(_setup.ratings.length === 5 && index === 0)?_c('span',[_vm._v(_vm._s(_vm.$t('label.all')))]):_vm._e()]}}]),model:{value:(_setup.ratings),callback:function ($$v) {_setup.ratings=$$v},expression:\"ratings\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, ref, watch } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FeedbackRatingSelect',\n props: {\n label: { type: [String, Object] as PropType, required: false, default: '' },\n width: { type: Number as PropType, required: true, default: 110 },\n value: { type: Object as PropType>, required: true },\n },\n emits: ['input'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\nconst items = [1, 2, 3, 4, 5];\n\nconst ratings = ref(props.value);\n\nconst clear = () => { ratings.value = items; emit('input', ratings.value); };\n\nwatch(() => props.value, () => { ratings.value = props.value; });\n\nconst ratingsChanged = () => {\n if (ratings.value.length === 0) {\n ratings.value = items;\n }\n ratings.value = ratings.value.sort((n1, n2) => n1 - n2);\n emit('input', ratings.value);\n};\n\n\nreturn { __sfc: true,props, emit, items, ratings, clear, ratingsChanged }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FeedbackRatingSelect.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FeedbackRatingSelect.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./FeedbackRatingSelect.vue?vue&type=template&id=3cd55404&\"\nimport script from \"./FeedbackRatingSelect.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./FeedbackRatingSelect.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NewModalDialog,{attrs:{\"title\":_vm.$t('label.feedback'),\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly},on:{\"close\":function($event){return _setup.emit('close')}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"disabled\":_vm.feedback.replied || (!_setup.reservation?.contact.email && !_setup.reservation?.contact.phone),\"color\":\"primary\"},on:{\"click\":function($event){_setup.messageDialog = true}}},[_vm._v(\" \"+_vm._s(_vm.feedback.replied ? _setup.formatRepliedOnDate(_vm.feedback.replied): _vm.$t('label.send_reply'))+\" \")]),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_setup.showReservation}},[_vm._v(\" \"+_vm._s(_vm.$t('label.show_reservation'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\"},on:{\"click\":_setup.close}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[(_setup.messageDialog && _vm.feedback.reservation)?_c(_setup.ContactMessageDialog,{attrs:{\"visible\":\"\",\"reservation\":_vm.feedback.reservation,\"feedback-id\":_vm.feedback.id},on:{\"close\":_setup.closeMessageDialog}}):_vm._e(),_c('v-row',[_c('v-col',{staticClass:\"pb-0 pt-6\",attrs:{\"cols\":\"6\"}},[_c('v-text-field',{attrs:{\"value\":_vm.$localized.numericDateTimeText(_vm.feedback.created),\"label\":_vm.$t('label.date_of_feedback'),\"readonly\":\"\"}})],1),_c('v-col',{staticClass:\"pb-0 pt-6\",attrs:{\"cols\":\"6\"}},[_c('v-text-field',{attrs:{\"value\":_vm.$localized.numericDateTimeText(_vm.feedback.reservationDtBegin),\"label\":_vm.$t('label.date_of_visit'),\"readonly\":\"\"}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('v-text-field',{attrs:{\"value\":_setup.reservation?.contact.name,\"label\":_vm.$t('label.name'),\"readonly\":\"\"}})],1),_c('v-col',{staticClass:\"mb-2\",attrs:{\"cols\":\"12\"}},[_c('v-divider',{staticClass:\"py-2\"}),_vm._v(\" \"+_vm._s(_vm.$t('label.rating_general'))+\": \"),_c('v-rating',{attrs:{\"color\":\"yellow\",\"background-color\":\"grey\",\"readonly\":\"\",\"large\":\"\",\"label\":_vm.$t('label.rating_general'),\"dense\":\"\",\"value\":_vm.feedback.overallRating}}),_c('v-divider',{staticClass:\"mb-2 mt-4\"})],1),(true)?[_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.rating_food'))+\": \"),_c(_setup.FeedbackRatingChip,{staticClass:\"ml-6\",attrs:{\"value\":_vm.feedback.foodRating}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.rating_service'))+\": \"),_c(_setup.FeedbackRatingChip,{staticClass:\"ml-6\",attrs:{\"value\":_vm.feedback.serviceRating}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"4\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.rating_ambience'))+\": \"),_c(_setup.FeedbackRatingChip,{staticClass:\"ml-6\",attrs:{\"value\":_vm.feedback.ambienceRating}})],1)]:_vm._e(),_c('v-col',{staticClass:\"mt-4\",attrs:{\"cols\":\"12\"}},[_c('v-divider',{staticClass:\"pb-4\"}),_c('v-textarea',{attrs:{\"label\":_vm.$t('label.comments'),\"readonly\":\"\",\"value\":_vm.feedback.comments}})],1)],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport i18n from '@/plugins/i18n';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport ContactMessageDialog from '@/components/views/reservation/ContactMessageDialog.vue';\n\nimport NewModalDialog from '@/components/dialogs/NewModalDialog.vue';\nimport { ref, PropType, computed, onMounted } from 'vue';\nimport Feedback from '@/grpc-api/model/feedback';\n\nimport FeedbackRatingChip from '@/components/views/feedback/FeedbackRatingChip.vue';\nimport { tryEditReservation } from '@/services/reservation-edit-utils';\nimport router from '@/router';\nimport { performDispatchAction } from '@/services/vue-utils';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'FeedbackDetailsDialog',\n props: {\n feedback: { type: Object as PropType, required: true },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n/* eslint-disable object-curly-newline */\n\n\n\n\nconst reservation = computed(() => props.feedback.reservation);\n\nconst messageDialog = ref(false);\n\nconst formatRepliedOnDate = (d: Date) => i18n.t('label.reply_sent_on_x', [localized.dateText(d)!]);\n\nconst close = () => emit('close');\n\nconst showReservation = async () => {\n const { reservationId } = props.feedback;\n const changeToDate = props.feedback.reservationDtBegin;\n if (reservationId && changeToDate) tryEditReservation(router, reservationId, {}, { changeToDate });\n close();\n};\n\nconst closeMessageDialog = async (res: boolean | undefined) => {\n if (res && props.feedback) {\n await performDispatchAction('getFeedback', { id: props.feedback.id }) as Feedback | undefined;\n }\n\n messageDialog.value = false;\n};\n\n\nreturn { __sfc: true,emit, props, reservation, messageDialog, formatRepliedOnDate, close, showReservation, closeMessageDialog, ContactMessageDialog, NewModalDialog, FeedbackRatingChip }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FeedbackDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./FeedbackDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./FeedbackDetailsDialog.vue?vue&type=template&id=66c2de3e&\"\nimport script from \"./FeedbackDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./FeedbackDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { dateDiff, areDatesEqual } from './time-utils';\n\nexport default class RepeatableTimer {\n timerId: NodeJS.Timeout | null = null;\n\n timeout: number | null = null;\n\n action: () => Promise;\n\n constructor(action: () => Promise) {\n this.action = action;\n }\n\n stop() {\n if (this.timerId) clearTimeout(this.timerId);\n this.timerId = null;\n this.timeout = null;\n }\n\n start(timeout: number) {\n this.stop();\n this.timeout = timeout;\n\n if (!this.timeout) return;\n\n // schedule next update\n this.timerId = setTimeout(async () => {\n try {\n await this.action();\n } finally {\n if (this.timeout) this.start(this.timeout);\n }\n }, this.timeout);\n }\n\n restart() {\n if (this.timeout) this.start(this.timeout); else this.stop();\n }\n}\n","import { defineComponent as _defineComponent } from 'vue'\nimport {\n ref, computed, onBeforeUnmount, getCurrentInstance, onMounted,\n} from 'vue';\nimport { DateRange } from '@/services/date-range';\n\nimport i18n from '@/plugins/i18n';\nimport store from '@/store/store';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\n\nimport ContactMessageDialog from '@/components/views/reservation/ContactMessageDialog.vue';\nimport MainToolbar from '@/components/views/main/MainToolbar.vue';\nimport DateRangePickerField from '@/components/pickers/DateRangePickerField.vue';\nimport FeedbackRatingChip from '@/components/views/feedback/FeedbackRatingChip.vue';\nimport FeedbackRatingSelect from '@/components/views/feedback/FeedbackRatingSelect.vue';\nimport FeedbackDetailsDialog from '@/components/views/feedback/FeedbackDetailsDialog.vue';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport FeedbackStore from '@/store/feedback-store';\nimport { performDispatchAction } from '@/services/vue-utils';\nimport Feedback, { FeedbackFilter } from '@/grpc-api/model/feedback';\nimport debounce from 'lodash.debounce';\nimport RepeatableTimer from '@/services/repeatable-timer';\nimport PaywallUpgradeDialog from '@/components/dialogs/PaywallUpgradeDialog.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Feedback',\n setup(__props) {\n\n\nconst isFeedbackFeatureAllowed = computed(() => store.getters.isFeedbackFeatureAllowed);\n\nconst upgradeDialog = ref(false);\n\nconst refreshTimeout = 1 * 60 * 1000; // 1 min refresh timeout\n\nconst filter = computed(() => store.getters.feedbackFilter as FeedbackFilter);\n\nconst applyFilter = (value: FeedbackFilter) => {\n store.dispatch('feedbackApplyFilter', value);\n};\n\nconst filterInactive = computed(() => filter.value.overallRating.length === 5\n && filter.value.ambienceRating.length === 5\n && filter.value.serviceRating.length === 5\n && filter.value.foodRating.length === 5\n && filter.value.name.length === 0\n && filter.value.comments.length === 0);\n\nconst detailsDialog = ref(false);\nconst messageDialog = ref(false);\n\nconst selectedFeedback = computed(() => store.getters.selectedFeedback as Feedback|undefined);\n\nconst showFeedbackDetail = async (f: Feedback) => {\n const feedback = await performDispatchAction('getFeedback', { id: f.id }) as Feedback | undefined;\n if (!feedback) return;\n store.dispatch('setSelectedFeedback', { feedback });\n detailsDialog.value = true;\n};\n\nconst replyClicked = async (f: Feedback) => {\n const feedback = await performDispatchAction('getFeedback', { id: f.id }) as Feedback | undefined;\n if (!feedback) return;\n store.dispatch('setSelectedFeedback', { feedback });\n messageDialog.value = true;\n};\n\nconst closeMessageDialog = async (res: boolean | undefined) => {\n if (res && selectedFeedback.value) {\n await performDispatchAction('getFeedback', { id: selectedFeedback.value.id }) as Feedback | undefined;\n }\n messageDialog.value = false;\n store.dispatch('setSelectedFeedback', { feedback: null });\n};\n\nconst headers = [\n {\n text: i18n.t('label.date_of_feedback'), align: 'start', width: '200px', value: 'created',\n },\n {\n text: i18n.t('label.name'), align: 'start', width: '200px', value: 'name',\n },\n {\n text: i18n.t('label.comments'), value: 'comments', class: 'comments-col', cellClass: 'comments-col',\n },\n {\n text: i18n.t('label.rating_food'), value: 'foodRating', width: '110px', align: 'center',\n },\n {\n text: i18n.t('label.rating_service'), value: 'serviceRating', width: '110px', align: 'center',\n },\n {\n text: i18n.t('label.rating_ambience'), value: 'ambienceRating', width: '110px', align: 'center',\n },\n {\n text: i18n.t('label.rating_general'), value: 'overallRating', width: '168px', align: 'center',\n },\n {\n text: i18n.t('label.responded'), value: 'replied', width: '100px', align: 'center',\n },\n];\n\nconst settings = computed(() => store.getters.feedbackSettings);\n\nconst feedbacks = computed(() => store.getters.feedbackVisibleFeedbacks as Feedback[]);\n\nconst formatRepliedOnDate = (d: Date) => i18n.t('label.reply_sent_on_x', [localized.dateText(d)!]);\n\n// filter date range\nconst filterDateRange = computed(() => store.getters.feedbackDateRange as DateRange);\n\nconst filterDateRangeSelected = async (dateRange: DateRange) => {\n performDispatchAction('loadFeedback', { dateRange }, { streamLoad: true });\n};\n\nconst filterDateRangeDisabled = computed(() => store.getters.isFeedbackLoading as boolean);\n\nconst load = async () => {\n if (store.getters.isFeedbackLoaded) return;\n await performDispatchAction('loadFeedback', {}, { streamLoad: true });\n};\n\n// debounced refresh\nconst debouncedRefresh = debounce(async () => {\n try {\n await store.dispatch('refreshFeedback');\n } catch (e) {\n console.log('refresh feeedback error: ', e);\n }\n}, 500, { leading: true, trailing: true, maxWait: 5000 });\nconst refresh = async () => debouncedRefresh();\n\nconst reset = async () => {\n store.dispatch('resetFeedback');\n};\n\nlet timer = undefined as RepeatableTimer | undefined;\n\nonMounted(() => {\n loadStoreModule(getCurrentInstance()?.proxy!, 'feedback', FeedbackStore, async () => { load(); });\n timer = new RepeatableTimer(async () => { await debouncedRefresh(); });\n timer.start(refreshTimeout);\n\n if (!isFeedbackFeatureAllowed.value) upgradeDialog.value = true;\n});\n\nonBeforeUnmount(() => {\n timer?.stop();\n unloadStoreModule(getCurrentInstance()?.proxy!, 'feedback', async () => { reset(); });\n // tryCloseEditReservation();\n});\n\nconst pagination = (p :{\n itemsLength: number,\n itemsPerPage: number\n page: number,\n pageCount: number,\n pageStart: number,\n pageStop: number,\n}) => {\n console.log('feedback pagination: ', p);\n store.dispatch('updateFeedbackPage', { pageSize: p.itemsPerPage, pageStart: p.pageStart });\n};\nconst updateSortBy = (field: string) => store.dispatch('updateFeedbackSort', { sortType: field });\nconst updateSortDesc = (desc: boolean) => store.dispatch('updateFeedbackSort', { sortDesc: desc });\nconst noSort = (items: Feedback[]) => items;\n\n\nreturn { __sfc: true,isFeedbackFeatureAllowed, upgradeDialog, refreshTimeout, filter, applyFilter, filterInactive, detailsDialog, messageDialog, selectedFeedback, showFeedbackDetail, replyClicked, closeMessageDialog, headers, settings, feedbacks, formatRepliedOnDate, filterDateRange, filterDateRangeSelected, filterDateRangeDisabled, load, debouncedRefresh, refresh, reset, timer, pagination, updateSortBy, updateSortDesc, noSort, localized, ContactMessageDialog, MainToolbar, DateRangePickerField, FeedbackRatingChip, FeedbackRatingSelect, FeedbackDetailsDialog, PaywallUpgradeDialog }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&lang=ts&setup=true&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&lang=ts&setup=true&\"","import { render, staticRenderFns } from \"./Feedback.vue?vue&type=template&id=1d460711&\"\nimport script from \"./Feedback.vue?vue&type=script&lang=ts&setup=true&\"\nexport * from \"./Feedback.vue?vue&type=script&lang=ts&setup=true&\"\nimport style0 from \"./Feedback.vue?vue&type=style&index=0&id=1d460711&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.SettingsForm,{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs()},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.PaywallButton,{staticClass:\"mr-2\",attrs:{\"unlocked\":_setup.isFeedbackFeatureAllowed,\"color\":\"success\",\"disabled\":(!_setup.isChanged || !_setup.isLoaded) && _setup.isFeedbackFeatureAllowed},on:{\"click\":_setup.save}},[_c('v-icon',[_vm._v(\"mdi-check\")]),_vm._v(_vm._s(_vm.$t('button.save_changes'))+\" \")],1)]},proxy:true},{key:\"content\",fn:function(){return [(_setup.s.noRuleError)?_c('v-alert',{staticClass:\"mb-6\",attrs:{\"type\":\"error\",\"dense\":\"\",\"prominent\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\"}},[_c('v-col',{staticClass:\"grow\"},[_vm._v(\" \"+_vm._s(_vm.$t('error.feedback_no_rule_error'))+\" \")]),_c('v-col',{staticClass:\"shrink\"},[_c('v-btn',{on:{\"click\":_setup.configureMessage}},[_vm._v(\" \"+_vm._s(_vm.$t('button.configure_now'))+\" \")])],1)],1)],1):_vm._e(),_c(_setup.ValidationObserver,{ref:\"observerRef\"},[_c(_setup.SettingsGroup,{attrs:{\"title\":_vm.$t('label.feedback'),\"subtitle\":_vm.$t('settings.feedback.feedback_subtitle'),\"gutter\":\"\"}},[_c('v-col',{staticClass:\"pt-2 pb-3\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"pa-0 ma-0 pb-2\",attrs:{\"input-value\":_setup.s.enabled,\"color\":\"primary\",\"label\":_vm.$i18n.t('title.enable_feedback'),\"hide-details\":\"\",\"disabled\":!_setup.isLoaded},on:{\"change\":_setup.changeEnable}}),_vm._v(\" \"+_vm._s(_vm.$t('label.help_enable_feedback'))+\" \")],1),_c('row-form-divider'),_c('v-col',{staticClass:\"pt-2 pb-3\",attrs:{\"cols\":\"12\"}},[_c('v-switch',{staticClass:\"pa-0 ma-0 pb-2\",attrs:{\"input-value\":_setup.s.useBreakdown && _setup.s.enabled,\"color\":\"primary\",\"label\":_vm.$i18n.t('title.gather_detailed_feedback'),\"hide-details\":\"\",\"disabled\":!_setup.isLoaded || !_setup.s.enabled},on:{\"change\":_setup.changeUseBreakdown}}),_vm._v(\" \"+_vm._s(_vm.$t('label.help_allow_detailed_feedback'))+\" \")],1)],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n Ref, computed, getCurrentInstance, onBeforeUnmount, onMounted, ref,\n} from 'vue';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport { isModelEqualToModel, cloneModel } from '@/model/model-utils';\nimport { performDispatchAction, performSaveAction } from '@/services/vue-utils';\nimport SettingsForm from '@/components/layouts/SettingsForm.vue';\nimport SettingsGroup from '@/components/layouts/SettingsGroup.vue';\nimport { ValidationObserver } from 'vee-validate';\nimport store from '@/store/store';\nimport FeedbackSettings from '@/grpc-api/model/feedback-settings';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport FeedbackStore from '@/store/feedback-store';\nimport PaywallButton from '@/components/buttons/PaywallButton.vue';\nimport { useRouter } from 'vue-router/composables';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Feedback',\n setup(__props) {\n\nconst isFeedbackFeatureAllowed = computed(() => store.getters.isFeedbackFeatureAllowed);\n\nconst router = useRouter();\n\nconst observerRef = ref(null as null | InstanceType);\n\nconst s = ref(new FeedbackSettings()) as Ref;\nconst olds = ref(cloneModel(s.value)) as Ref;\nconst isLoaded = ref(false) as Ref;\n\nconst isChanged = computed(() => s.value && olds.value && !isModelEqualToModel(s.value, olds.value));\n\nconst changeEnable = (enabled: boolean) => {\n s.value.enabled = enabled;\n s.value.useBreakdown = (enabled && olds.value.useBreakdown === undefined) ? true : olds.value.useBreakdown;\n};\n\nconst changeUseBreakdown = (useBreakdown: boolean) => { s.value.useBreakdown = useBreakdown; };\n\nconst load = async () => {\n const settings = await performDispatchAction('loadFeedbackSettings', {}) as FeedbackSettings | null;\n if (!settings) return;\n\n isLoaded.value = true;\n s.value = settings;\n olds.value = cloneModel(s.value);\n};\n\nconst save = async () => {\n let newSettings: FeedbackSettings | undefined;\n const ok = await performSaveAction(\n observerRef.value,\n async () => { newSettings = await store.dispatch('setFeedbackSettings', { settings: s.value }); },\n );\n if (!ok || !newSettings) return;\n\n s.value = newSettings;\n olds.value = cloneModel(s.value);\n};\n\nconst reset = async () => {\n store.dispatch('resetFeedback');\n};\n\nonBeforeUnmount(() => {\n unloadStoreModule(getCurrentInstance()?.proxy!, 'feedback', async () => { reset(); });\n});\n\nonMounted(() => {\n loadStoreModule(getCurrentInstance()?.proxy!, 'feedback', FeedbackStore, async () => { load(); });\n});\n\nconst configureMessage = () => router.replace('/settings/message-center?message-channel=email&event-type=tbe_thankyou');\n\n\nreturn { __sfc: true,isFeedbackFeatureAllowed, router, observerRef, s, olds, isLoaded, isChanged, changeEnable, changeUseBreakdown, load, save, reset, configureMessage, useSettingsBreadcrumbs, SettingsForm, SettingsGroup, ValidationObserver, PaywallButton }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Feedback.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Feedback.vue?vue&type=template&id=275132dc&\"\nimport script from \"./Feedback.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Feedback.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c(_setup.NewsletterQuotaBar),_c(_setup.MainToolbar,[_c(_setup.DateRangePickerField,{attrs:{\"value\":_setup.filterDateRange,\"content-style\":\"min-width: 200px; max-width: 200px\",\"content-class\":\"mt-2 pr-4\",\"label\":_vm.$t('label.date_range'),\"disable-future\":\"\"},on:{\"input\":_setup.filterDateRangeSelected}}),_c('v-spacer'),_c('v-checkbox',{staticClass:\"mr-4\",attrs:{\"label\":_vm.$t('button.show_archived'),\"dense\":\"\",\"hide-details\":\"\"},on:{\"change\":_setup.changeShowArchived},model:{value:(_setup.showArchived),callback:function ($$v) {_setup.showArchived=$$v},expression:\"showArchived\"}}),_c(_setup.PaywallButton,{attrs:{\"unlocked\":_setup.useNewsletterFeatureAllowed,\"color\":\"success\"},on:{\"click\":_setup.newCampaign}},[_vm._v(\" \"+_vm._s(_vm.$t('button.create_new_campaign'))+\" \")])],1)]},proxy:true}])},[(_setup.selectedMarketingCampaign)?_c(_setup.NewsletterCampaignDetailDialog,{attrs:{\"campaign\":_setup.selectedMarketingCampaign},on:{\"close\":function($event){_setup.selectedMarketingCampaign=undefined}}}):_vm._e(),(_setup.upgradeDialog)?_c(_setup.PaywallUpgradeDialog,{on:{\"close\":function($event){_setup.upgradeDialog=false}}}):_vm._e(),_c('v-data-table',{staticClass:\"clickable-table\",attrs:{\"dense\":\"\",\"items-per-page\":50,\"headers\":_setup.headers,\"items\":_setup.campaigns,\"footer-props\":{ itemsPerPageOptions: [25, 50, 100, 200, -1] }},on:{\"click:row\":_setup.showCampaignDetail},scopedSlots:_vm._u([{key:\"no-data\",fn:function(){return [_c('p',{staticClass:\"py-16 my-16\"},[_vm._v(\" \"+_vm._s(_vm.$t('message.no_newsletter_campaigns'))+\" \")])]},proxy:true},{key:\"item.date\",fn:function({item}){return [_vm._v(\" \"+_vm._s(_setup.localized.numericDateTimeText(item.date))+\" \")]}},{key:\"item.recipientCount\",fn:function({item}){return [_vm._v(\" \"+_vm._s(item.recipientCount ?? '-')+\" \")]}},{key:\"item.status\",fn:function({item}){return [(item.isArchived)?_c('v-chip',{staticClass:\"black--text mr-2\",attrs:{\"color\":\"white\",\"x-small\":\"\",\"label\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-archive \")]),_vm._v(\" \"+_vm._s(_vm.$t('code.newsletter_campaign_status.archived'))+\" \")],1):_vm._e(),(item.status !== _setup.MarketingCampaignStatus.None)?_c('v-chip',{staticClass:\"black--text\",attrs:{\"color\":_setup.colorForCampaignStatus(item.status),\"x-small\":\"\",\"label\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(`code.newsletter_campaign_status.${item.status}`))+\" \")]):_vm._e()]}},{key:\"item.actions\",fn:function({item}){return [(!item.isArchived && item.canArchive)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on}){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _setup.archiveCampaign(item)}}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-archive-plus \")])],1)]}}],null,true)},[_vm._v(\" \"+_vm._s(_vm.$t('button.move_to_archive'))+\" \")]):(item.isArchived && item.canArchive)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on}){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _setup.archiveCampaign(item)}}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-archive-minus \")])],1)]}}],null,true)},[_vm._v(\" \"+_vm._s(_vm.$t('button.unarchive'))+\" \")]):_vm._e(),(item.canDelete)?_c('v-tooltip',{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({on}){return [_c('v-btn',_vm._g({attrs:{\"icon\":\"\",\"x-small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _setup.deleteCampaign(item)}}},on),[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")])],1)]}}],null,true)},[_vm._v(\" \"+_vm._s(_vm.$t('button.delete'))+\" \")]):_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(_setup.NewModalDialog,{attrs:{\"title\":`${_vm.$t('title.newsletter')} - ${_vm.campaign.title}`,\"fullscreen\":_vm.$vuetify.breakpoint.xsOnly,\"max-width\":\"1300px\",\"scrollable\":\"\",\"fluid\":\"\"},on:{\"close\":function($event){return _setup.emit('close')}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"color\":\"error\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.close'))+\" \")])]},proxy:true}])},[_c('v-row',[_c('v-col',{staticClass:\"py-0 pb-2\",attrs:{\"cols\":\"6\"}},[_c('v-text-field',{staticClass:\"w-100 readonly--disabled\",attrs:{\"value\":_vm.campaign.contactFilter?.text,\"persistent-hint\":\"\",\"readonly\":\"\",\"hide-details\":\"\",\"label\":_vm.$t('label.audience'),\"suffix\":`(${_vm.$tc('label.x_recipients', _vm.campaign.recipientCount)})`}})],1),_c('v-col',{staticClass:\"py-0 pb-2\",attrs:{\"cols\":\"6\"}},[_c('v-text-field',{staticClass:\"w-100 readonly--disabled\",attrs:{\"value\":_vm.campaign.locale,\"hide-details\":\"\",\"readonly\":\"\",\"label\":_vm.$t('label.language')}})],1),_c('v-col',{staticClass:\"py-0 pb-2\",attrs:{\"cols\":\"6\"}},[_c('v-text-field',{staticClass:\"my-2 w-100 readonly--disabled\",attrs:{\"value\":_vm.$localized.numericDateTimeText(_vm.campaign.dtSend),\"hide-details\":\"\",\"readonly\":\"\",\"label\":_vm.$t('label.sent_on')}})],1),_c('v-col',{staticClass:\"py-0 pb-2\",attrs:{\"cols\":\"6\"}},[_c('p',{staticClass:\"subheading pb-1 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.status'))+\" \")]),(_vm.campaign.status && _vm.campaign.status !== _setup.MarketingCampaignStatus.None)?_c('v-chip',{staticClass:\"black--text\",attrs:{\"color\":_setup.colorForCampaignStatus(_vm.campaign.status),\"small\":\"\",\"label\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t(`code.newsletter_campaign_status.${_vm.campaign.status}`))+\" \")]):_vm._e()],1),_c('v-col',{staticClass:\"py-0 pb-2\",attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"8\"}},[_c('p',{staticClass:\"subheading my-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.newsletter_email_preview'))+\" \")]),_c(_setup.EmailPreviewFrame,{staticStyle:{\"overflow\":\"hidden\"},attrs:{\"subject\":_vm.campaign.subject},scopedSlots:_vm._u([{key:\"toolbar-items\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"small\":\"\",\"outlined\":\"\",\"color\":\"green\"},on:{\"click\":_setup.saveAsTemplate}},[_vm._v(\" \"+_vm._s(_vm.$t('button.save_to_design_library'))+\" \")])]},proxy:true}])},[_c(_setup.HtmlImage,{attrs:{\"html\":_vm.campaign.templatePreview ?? undefined}})],1)],1),_c('v-col',{staticClass:\"py-0 pb-2\",attrs:{\"cols\":\"12\",\"md\":\"6\",\"lg\":\"4\"}},[_c('p',{staticClass:\"subheading my-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.newsletter_results'))+\" \")]),_c(_setup.NewsletterFunnelChart,{attrs:{\"dataset\":_setup.charts.funnel,\"stats\":_setup.charts.stats}}),_c('v-divider',{staticClass:\"mt-8 mb-2\"}),_c('p',{staticClass:\"subheading my-2\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.newsletter_unsubscribers'))+\" \")]),_c(_setup.NewsletterGaugeChart,{attrs:{\"value\":_setup.charts.gauge}})],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:\"html-image__result\"},[(_setup.skeleton)?_c('v-skeleton-loader',{attrs:{\"height\":\"100%\",\"width\":\"100%\",\"type\":\"image\"}}):_vm._e(),_c('img',{ref:\"previewImg\",staticStyle:{\"width\":\"100%\"}}),_c('iframe',{ref:\"previewIframe\",class:['html-image__iframe', {'fill--height': _vm.fillHeight}],attrs:{\"seamless\":\"\",\"title\":_setup.uuidv4()}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport html2canvas from 'html2canvas';\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n onMounted, PropType, ref, watch,\n} from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'HtmlImage',\n props: {\n html: { type: Object as PropType, required: true },\n fillHeight: { type: Boolean, required: false, default: false },\n},\n setup(__props) {\n\nconst props = __props;\n\nconst previewImg = ref(undefined as undefined | HTMLImageElement);\nconst previewIframe = ref(undefined as undefined | HTMLIFrameElement);\n\n\n\nconst skeleton = ref(true);\n\nconst renderImage = () => {\n skeleton.value = true;\n\n const iframe = previewIframe.value;\n if (!iframe) {\n console.log('[renderImage] No Iframe Element?');\n return;\n }\n console.log(props.html);\n\n iframe.srcdoc = `\n ${props.html}`;\n\n iframe.onload = async () => {\n if (!iframe.contentDocument) {\n console.log('[renderImage] No Iframe Document?');\n return;\n }\n\n const canvas = await html2canvas(iframe.contentDocument.body, {\n allowTaint: true,\n imageTimeout: 2000,\n useCORS: true,\n });\n\n const imageDataUrl = canvas.toDataURL('image/png');\n skeleton.value = false;\n\n previewImg.value!.src = `${imageDataUrl}`;\n\n // const canvasW = canvas.width;\n // const canvasH = canvas.height;\n // console.log(`[renderImage] w:${canvasW} h:${canvasH}`);\n // td.style.paddingBottom = `${(canvasH / canvasW) * 100}%`;\n\n iframe.srcdoc = '';\n iframe.onload = null;\n };\n};\n\nonMounted(() => renderImage());\n\nwatch(\n () => props.html,\n () => { renderImage(); },\n);\n\n\nreturn { __sfc: true,previewImg, previewIframe, props, skeleton, renderImage, uuidv4 }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HtmlImage.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./HtmlImage.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./HtmlImage.vue?vue&type=template&id=3410706c&\"\nimport script from \"./HtmlImage.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./HtmlImage.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./HtmlImage.vue?vue&type=style&index=0&id=3410706c&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-card',{staticClass:\"pa-0 ma-0\",attrs:{\"elevation\":\"8\"}},[_c('v-system-bar',{staticClass:\"macos-action-buttons pa-2\"},[_c('div',{staticClass:\"button red\"}),_c('div',{staticClass:\"button yellow\"}),_c('div',{staticClass:\"button green\"})]),(_vm.$slots['toolbar-items'])?_c('v-toolbar',{attrs:{\"flat\":\"\",\"dense\":\"\"}},[_vm._t(\"toolbar-items\")],2):_vm._e(),_c('v-divider'),_c('div',{staticClass:\"text-h7 pa-4\"},[_vm._v(\" \"+_vm._s(_vm.subject ?? _setup.i18n.t('label.empty_subject'))+\" \")]),_c('div',{staticClass:\"email-body-container pa-0 ma-0\"},[_vm._t(\"default\")],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport i18n from '@/plugins/i18n';\nimport { PropType } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'EmailPreviewFrame',\n props: {\n subject: { type: Object as PropType, required: false, default: undefined },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nreturn { __sfc: true,props, i18n }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailPreviewFrame.vue?vue&type=script&lang=ts&setup=true&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./EmailPreviewFrame.vue?vue&type=script&lang=ts&setup=true&\"","import { render, staticRenderFns } from \"./EmailPreviewFrame.vue?vue&type=template&id=16422e16&\"\nimport script from \"./EmailPreviewFrame.vue?vue&type=script&lang=ts&setup=true&\"\nexport * from \"./EmailPreviewFrame.vue?vue&type=script&lang=ts&setup=true&\"\nimport style0 from \"./EmailPreviewFrame.vue?vue&type=style&index=0&id=16422e16&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(_setup.VChart,{staticClass:\"chart mt-4 mb-6\",attrs:{\"option\":_setup.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _setup.themeDark : _setup.themeLight,\"autoresize\":\"\"}}),_c('v-row',[_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"6\"}},[_c(_setup.NewsletterResultsCard,{attrs:{\"title\":_vm.$t('label.newsletter_results_open_rate'),\"value\":_vm.stats.or}})],1),_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"6\"}},[_c(_setup.NewsletterResultsCard,{attrs:{\"title\":_vm.$t('label.newsletter_results_ctr'),\"value\":_vm.stats.ctr}})],1),_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"6\"}},[_c(_setup.NewsletterResultsCard,{attrs:{\"title\":_vm.$t('label.newsletter_results_ctor'),\"value\":_vm.stats.ctor}})],1),_c('v-col',{staticClass:\"pa-0 ma-0\",attrs:{\"cols\":\"6\"}},[_c(_setup.NewsletterResultsCard,{attrs:{\"title\":_vm.$t('label.newsletter_results_7_day_conversion'),\"value\":_vm.stats.cr}})],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('v-card',{staticClass:\"ma-1 pa-0 flex-grow-1 flex-shrink-1\",attrs:{\"elevation\":\"0\",\"outlined\":\"\"}},[_c('v-card-title',{staticClass:\"text-center\"},[_c('span',{staticClass:\"text-center w-100\"},[_vm._v(_vm._s(_vm.value))])]),_c('v-card-subtitle',{staticClass:\"text-caption text-center\"},[_c('span',{staticClass:\"w-100 d-inline-block\"},[_vm._v(_vm._s(_vm.title))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType } from 'vue';\nimport { TranslateResult } from 'vue-i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterResultsCard',\n props: {\n title: { type: [String, Object] as PropType, required: true },\n value: { type: Object as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\n\n\n\nreturn { __sfc: true,props }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterResultsCard.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterResultsCard.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterResultsCard.vue?vue&type=template&id=2cb39cc1&\"\nimport script from \"./NewsletterResultsCard.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterResultsCard.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport { PropType, ref, watch } from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\nimport { use } from 'echarts/core';\nimport { FunnelChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart, { THEME_KEY } from 'vue-echarts';\nimport { TranslateResult } from 'vue-i18n';\nimport NewsletterResultsCard from './NewsletterResultsCard.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterFunnelChart',\n props: {\n dataset: {\n type: Array as PropType>,\n default: () => [],\n },\n stats: {\n type: Object as PropType<{\n or: string, ctr: string, ctor: string, cr: string, tr: string, tg: string\n }>,\n required: true,\n },\n},\n setup(__props) {\n\nconst props = __props;\n\nuse([\n FunnelChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\n\n\nconst createDataset = () => ({\n grid: {\n left: '8px',\n top: '8px',\n right: '8px',\n bottom: '8px',\n },\n series: [\n {\n gap: 6,\n color: ['#3355ff', '#0085f5', '#0099ae', '#00a26f', '#00ff00'],\n name: 'Funnel',\n type: 'funnel',\n maxSize: '90%',\n left: '0%',\n right: '0%',\n top: '0%',\n label: {\n position: 'inside',\n color: 'black',\n backgroundColor: '#fefefe',\n borderWidth: 1,\n borderColor: '#D6D6D8',\n borderRadius: 6,\n padding: [4, 8],\n formatter: (o: any) => `${o.data.name} - ${o.data.value[0]} (${o.data.value[1].toFixed(1)}%)`,\n textBorderColor: 'none',\n textBorderWidth: 0,\n },\n data: props.dataset,\n },\n ],\n});\n\nconst option = ref(createDataset());\n\nconst reset = () => { option.value = createDataset(); };\n\nwatch(() => props.dataset, () => reset());\n\n\nreturn { __sfc: true,props, createDataset, option, reset, themeDark, themeLight, VChart, NewsletterResultsCard }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterFunnelChart.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterFunnelChart.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterFunnelChart.vue?vue&type=template&id=68ea8c67&scoped=true&\"\nimport script from \"./NewsletterFunnelChart.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterFunnelChart.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./NewsletterFunnelChart.vue?vue&type=style&index=0&id=68ea8c67&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"68ea8c67\",\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(_setup.VChart,{staticClass:\"chart pa-6\",attrs:{\"option\":_setup.option,\"update-options\":{replaceMerge: 'series'},\"theme\":_vm.$vuetify.theme.dark ? _setup.themeDark : _setup.themeLight,\"autoresize\":\"\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n PropType, ref, watch, computed,\n} from 'vue';\nimport themeDark from '@/../static/chart-dark.json';\nimport themeLight from '@/../static/chart-light.json';\nimport i18n from '@/plugins/i18n';\nimport { use } from 'echarts/core';\nimport { FunnelChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n} from 'echarts/components';\nimport VChart, { THEME_KEY } from 'vue-echarts';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterGaugeChart',\n props: {\n value: { type: Number as PropType, required: true },\n},\n setup(__props) {\n\nconst props = __props;\n\nuse([\n FunnelChart,\n TitleComponent,\n TooltipComponent,\n LegendComponent,\n]);\n\n\n\nconst title = computed(() => {\n if (props.value > 1) return i18n.t('label.newsletter_unsubscribe_ratio_poor');\n if (props.value > 0.75) return i18n.t('label.newsletter_unsubscribe_ratio_poor');\n if (props.value > 0.5) return i18n.t('label.newsletter_unsubscribe_ratio_good');\n return i18n.t('label.newsletter_unsubscribe_ratio_excellent');\n});\n\nconst createDataset = () => ({\n series: [\n {\n type: 'gauge',\n startAngle: 180,\n endAngle: 0,\n center: ['50%', '70%'],\n radius: '135%',\n min: 0,\n max: 2,\n splitNumber: 4,\n axisLine: {\n lineStyle: {\n width: 2,\n color: [\n [0.25, '#00A26F'],\n [0.50, '#ffc24e'],\n [0.75, '#FF8262'],\n [1, '#FF002B'],\n ],\n },\n },\n pointer: {\n icon: 'path://M12.8,0.7l12,40.1H0.7L12.8,0.7z',\n length: '15%',\n width: 20,\n offsetCenter: [0, '-40%'],\n itemStyle: {\n color: 'auto',\n },\n },\n axisTick: {\n length: 12,\n lineStyle: {\n color: 'auto',\n width: 2,\n },\n },\n splitLine: {\n length: 20,\n lineStyle: {\n color: 'auto',\n width: 4,\n },\n },\n axisLabel: { show: false },\n title: {\n offsetCenter: [0, '20%'],\n fontSize: 12,\n color: undefined,\n },\n detail: {\n fontSize: 18,\n offsetCenter: [0, 0],\n valueAnimation: true,\n formatter(value: number) {\n return `${Math.floor(value * 1000) / 10}%`;\n },\n color: 'inherit',\n },\n data: [\n {\n value: props.value,\n name: title.value,\n },\n ],\n },\n ],\n});\n\nconst option = ref(createDataset());\n\nconst reset = () => { option.value = createDataset(); };\n\nwatch(() => props.value, () => reset());\n\n\nreturn { __sfc: true,props, title, createDataset, option, reset, themeDark, themeLight, VChart }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterGaugeChart.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterGaugeChart.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterGaugeChart.vue?vue&type=template&id=74e782c2&scoped=true&\"\nimport script from \"./NewsletterGaugeChart.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterGaugeChart.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./NewsletterGaugeChart.vue?vue&type=style&index=0&id=74e782c2&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74e782c2\",\n null\n \n)\n\nexport default component.exports","import { MarketingCampaignStatus } from '@/grpc-api/model/marketing-campaign';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const colorForCampaignStatus = (status: MarketingCampaignStatus): string => {\n switch (status) {\n case MarketingCampaignStatus.Draft:\n return 'yellow';\n case MarketingCampaignStatus.Scheduled:\n case MarketingCampaignStatus.Processing:\n return 'orange';\n case MarketingCampaignStatus.Sent:\n return 'success';\n case MarketingCampaignStatus.Abandoned:\n return 'gray';\n case MarketingCampaignStatus.Failure:\n return 'error';\n case MarketingCampaignStatus.None:\n default:\n return '';\n }\n};\n","import { defineComponent as _defineComponent } from 'vue'\nimport HtmlImage from '@/components/util/HtmlImage.vue';\nimport NewModalDialog from '@/components/dialogs/NewModalDialog.vue';\nimport {\n PropType, computed, onMounted, ref,\n} from 'vue';\nimport i18n from '@/plugins/i18n';\nimport MarketingCampaign, { MarketingCampaignStatus } from '@/grpc-api/model/marketing-campaign';\nimport nameWithCopyText from '@/util/copy-name';\nimport HtmlTemplate from '@/grpc-api/model/html-template';\nimport { performSaveAction } from '@/services/vue-utils';\nimport store from '@/store/store';\nimport router from '@/router';\nimport EmailPreviewFrame from './EmailPreviewFrame.vue';\nimport NewsletterFunnelChart from './NewsletterFunnelChart.vue';\nimport NewsletterGaugeChart from './NewsletterGaugeChart.vue';\nimport { colorForCampaignStatus } from './newsletter';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterCampaignDetailsDialog',\n props: {\n campaign: { type: Object as PropType, required: true },\n},\n emits: ['close'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\n\n\n\n\n\nconst saveAsTemplate = async () => {\n if (!props.campaign.templateDesign) return;\n\n const name = nameWithCopyText(props.campaign.templateName ?? 'new', i18n.t('label.copy_of') as string);\n const htmlTemplate = new HtmlTemplate({\n name,\n design: props.campaign.templateDesign,\n html: props.campaign.templateHtml ?? undefined,\n preview: props.campaign.templatePreview ?? undefined,\n });\n\n const ok = await performSaveAction(\n undefined,\n async () => store.dispatch('marketingCampaignManagerCreateHtmlTemplate', { htmlTemplate }),\n );\n\n if (ok) {\n router.replace('/newsletter/library');\n }\n};\n\nconst charts = computed(() => {\n type P = 'scheduled'|'sent'|'processing'|'abandoned'|'failure'|'all';\n const ps = (t: P) => props.campaign.publishStats![t] ?? 0;\n type D = 'processed'|'dropped'|'delivered'| 'deferred'| 'bounce'| 'blocked';\n const ds = (t: D) => props.campaign.deliveryStats![t] ?? 0;\n type E = 'open'|'unique_open'|'click'|'unique_click'|'spam'|'unsubscribe'|'group_unsubscribe'|'group_resubscribe';\n const es = (t: E) => props.campaign.engagementStats![t] ?? 0;\n type W = 'widget_open'|'unique_widget_open'|'widget_reservation'|'unique_widget_reservation'|'widget_unsubscribe';\n const ws = (t: W) => props.campaign.engagementStats![t] ?? 0;\n type C = 'all'|'imminent'|'unique_all'|'unique_imminent'|'guests_all'|'guests_imminent';\n const cs = (t: C) => props.campaign.conversionStats![t] ?? 0;\n\n // eslint-disable-next-line vue/max-len\n const fvalues = [ps('all'), ps('sent'), ds('delivered'), es('unique_open'), es('unique_click')];\n for (let i = fvalues.length - 2; i >= 0; i -= 1) if (fvalues[i] < fvalues[i + 1]) fvalues[i] = fvalues[i + 1];\n const [all, sent, delivered, uniqueOpen, uniqueClick] = fvalues;\n const uniqueReservations = cs('unique_imminent');\n const unsubscribe = es('unsubscribe') + ws('widget_unsubscribe');\n const reservations = cs('imminent');\n const guests = cs('guests_imminent');\n\n const fv = (now: number, then: number) => [now, then > 0 ? (now / then) * 100 : 0];\n const funnel = [\n {\n value: fv(sent, all),\n name: i18n.t('label.newsletters_sent'),\n label: { formatter: '{b} - {@[0]}' },\n },\n { value: fv(delivered, sent), name: i18n.t('label.newsletters_delivered') },\n { value: fv(uniqueOpen, delivered), name: i18n.t('label.newsletters_opened') },\n { value: fv(uniqueClick, uniqueOpen), name: i18n.t('label.newsletters_clicked') },\n { value: fv(reservations, uniqueClick), name: i18n.t('label.reservations') },\n ];\n\n const gauge = delivered > 0 ? (unsubscribe / delivered) : 0;\n\n const rv = (nom: number, den: number) => (den > 0 ? `${Math.floor((nom / den) * 1000) / 10}%` : '0%');\n const stats = {\n or: rv(uniqueOpen, delivered),\n ctr: rv(uniqueClick, delivered),\n ctor: rv(uniqueClick, uniqueOpen),\n cr: rv(uniqueReservations, delivered),\n tr: `${reservations}`,\n tg: `${guests}`,\n };\n\n return { funnel, gauge, stats };\n});\n\nonMounted(() => {\n console.log('campaign', props.campaign);\n});\n\n\nreturn { __sfc: true,emit, props, saveAsTemplate, charts, HtmlImage, NewModalDialog, MarketingCampaignStatus, EmailPreviewFrame, NewsletterFunnelChart, NewsletterGaugeChart, colorForCampaignStatus }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterCampaignDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterCampaignDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterCampaignDetailsDialog.vue?vue&type=template&id=4e16ada1&\"\nimport script from \"./NewsletterCampaignDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterCampaignDetailsDialog.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-system-bar',{attrs:{\"height\":\"36\",\"color\":_vm.$vuetify.theme.dark ? 'black' : 'white'}},[_c('v-icon',[_vm._v(\" mdi-email-fast-outline \")]),_c('span',{staticClass:\"pr-2 flex-shrink-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.newsletter_quota_available'))+\": \")]),_c('v-progress-linear',{staticStyle:{\"max-width\":\"460px\"},attrs:{\"value\":_setup.settings.allowedMessages / _setup.settings.createdMessages,\"height\":\"22\",\"rounded\":\"\"}},[_c('span',{staticClass:\"black--text font-weight-bold text-overline\"},[_vm._v(\" \"+_vm._s(_setup.settings.allowedMessages - _setup.settings.createdMessages)+\"/\"+_vm._s(_setup.settings.allowedMessages)+\" \")])]),_c('v-spacer'),_c('v-icon',{staticClass:\"ml-4\"},[_vm._v(\" mdi-email-sync-outline \")]),_c('span',{staticClass:\"flex-shrink-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.newsletter_quota_reset_date'))+\": \"),_c('span',{staticClass:\"font-weight-bold\"},[_vm._v(_vm._s(_setup.localized.veryShortDateText(_setup.settings.dateQuotaReset)))])])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport MarketingCampaignSettings from '@/grpc-api/model/marketing-campaign-settings';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport store from '@/store/store';\nimport { computed } from 'vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterQuotaBar',\n setup(__props) {\n\n\nconst settings = computed(() => store.getters.marketingCampaignSettings as MarketingCampaignSettings);\n\n\nreturn { __sfc: true,settings, localized }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterQuotaBar.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterQuotaBar.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterQuotaBar.vue?vue&type=template&id=0150017d&\"\nimport script from \"./NewsletterQuotaBar.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterQuotaBar.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n ref, computed, onBeforeUnmount, getCurrentInstance, onMounted,\n} from 'vue';\nimport { DateRange } from '@/services/date-range';\n\nimport i18n from '@/plugins/i18n';\nimport store from '@/store/store';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\n\nimport MainToolbar from '@/components/views/main/MainToolbar.vue';\nimport DateRangePickerField from '@/components/pickers/DateRangePickerField.vue';\nimport { loadStoreModule, tryUnloadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport { performDispatchAction, performSaveAction } from '@/services/vue-utils';\nimport { useRouter } from 'vue-router/composables';\nimport CampaignManagerStore from '@/store/marketing-campaign-manager-store';\nimport MarketingCampaign, { MarketingCampaignStatus } from '@/grpc-api/model/marketing-campaign';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\nimport { cloneModel } from '@/model/model-utils';\nimport RepeatableTimer from '@/services/repeatable-timer';\nimport PaywallUpgradeDialog from '@/components/dialogs/PaywallUpgradeDialog.vue';\nimport PaywallButton from '@/components/buttons/PaywallButton.vue';\nimport NewsletterCampaignDetailDialog from './NewsletterCampaignDetailsDialog.vue';\nimport NewsletterQuotaBar from './NewsletterQuotaBar.vue';\nimport { colorForCampaignStatus } from './newsletter';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterCampaigns',\n setup(__props) {\n\n\nconst headers = [\n {\n text: i18n.t('label.date_created'), align: 'start', width: '150px', value: 'date',\n },\n {\n text: i18n.t('label.status'), align: 'center', value: 'status', width: '180px',\n },\n {\n text: i18n.t('label.title'), align: 'start', value: 'title',\n },\n {\n text: i18n.t('label.recipient_count'), align: 'center', value: 'recipientCount', width: '200px',\n },\n {\n text: i18n.t('label.language'), align: 'center', value: 'locale', width: '200px',\n },\n {\n text: '', value: 'actions', width: '64px', align: 'center', sortable: false,\n },\n];\nconst useNewsletterFeatureAllowed = computed(() => store.getters.isNewsletterFeatureAllowed);\n\nconst upgradeDialog = ref(!useNewsletterFeatureAllowed.value);\n\nconst router = useRouter();\n\nconst selectedMarketingCampaign = ref(undefined as undefined | MarketingCampaign);\n\n// actions\nconst newCampaign = () => {\n router.push('/newsletter/new');\n};\n\nconst showCampaignDetail = async (campaign: MarketingCampaign) => {\n if (campaign.status === MarketingCampaignStatus.Draft) {\n router.push(`/newsletter/${campaign.id}`);\n } else {\n const campaignToSelect = await performDispatchAction('getMarketingCampaign', { campaign });\n if (!campaignToSelect) return;\n\n selectedMarketingCampaign.value = campaignToSelect;\n }\n};\n\n// campaigns\nconst campaigns = computed(() => store.getters.marketingCampaignManagerCampaigns as MarketingCampaign[]);\n\n// filter show archived\nconst showArchived = computed(() => store.getters.marketingCampaignManagerFilter.showArchived as Boolean);\n\nconst changeShowArchived = async (value: boolean) => {\n performDispatchAction('updateMarketingCampaignFilter', { showArchived: value });\n};\n\n// filter date range\nconst filterDateRange = computed(() => store.getters.marketingCampaignManagerFilter.dateRange as DateRange);\n\nconst filterDateRangeSelected = async (dateRange: DateRange) => {\n performDispatchAction('updateMarketingCampaignFilter', { dateRange });\n};\n\n// load campaign manager\nconst load = async () => {\n if (store.getters.isMarketingCampaignManagerLoaded) return;\n await performDispatchAction('loadMarketingCampaignManager', {});\n};\n\nconst reset = async () => {\n store.dispatch('resetMarketingCampaignManager');\n tryUnloadStoreModule('serviceManager', async () => store.dispatch('resetServiceManager'));\n};\n\n// campaign actions\nconst archiveCampaign = async (campaign: MarketingCampaign) => {\n const action = async () => {\n const archivedCampaign = cloneModel(campaign);\n archivedCampaign.isArchived = !archivedCampaign.isArchived;\n await performSaveAction(\n undefined,\n async () => store.dispatch('archiveMarketingCampaign', { campaign: archivedCampaign }),\n { hideSuccess: true },\n );\n };\n\n showConfirmationDialog(\n campaign.title ?? i18n.t('title.newsletter_campaigns'),\n i18n.t('message.confirm_archive_campaign'),\n { action },\n {},\n );\n};\n\nconst deleteCampaign = async (campaign: MarketingCampaign) => {\n const action = async () => {\n await performSaveAction(\n undefined,\n async () => store.dispatch('deleteMarketingCampaign', { campaign }),\n { hideSuccess: true },\n );\n };\n\n showConfirmationDialog(\n campaign.title ?? i18n.t('title.newsletter_campaigns'),\n i18n.t('message.confirm_delete_campaign_draft'),\n { action },\n {},\n );\n};\n\nlet refreshTimer = undefined as RepeatableTimer | undefined;\nconst refresh = async () => {\n try {\n await store.dispatch('refreshMarketingCampaigns');\n } catch (e) {\n console.log('refresh campaigns error: ', e);\n }\n};\n\nonMounted(() => {\n // load store module\n loadStoreModule(\n getCurrentInstance()?.proxy!,\n 'marketingCampaignManager',\n CampaignManagerStore,\n async () => { load(); },\n );\n\n // start refresh timer\n refreshTimer = new RepeatableTimer(refresh);\n refreshTimer.start(5000);\n});\n\nonBeforeUnmount(() => {\n refreshTimer?.stop();\n unloadStoreModule(getCurrentInstance()?.proxy!, 'marketingCampaignManager', async () => { reset(); });\n});\n\n\nreturn { __sfc: true,headers, useNewsletterFeatureAllowed, upgradeDialog, router, selectedMarketingCampaign, newCampaign, showCampaignDetail, campaigns, showArchived, changeShowArchived, filterDateRange, filterDateRangeSelected, load, reset, archiveCampaign, deleteCampaign, refreshTimer, refresh, localized, MainToolbar, DateRangePickerField, MarketingCampaignStatus, PaywallUpgradeDialog, PaywallButton, NewsletterCampaignDetailDialog, NewsletterQuotaBar, colorForCampaignStatus }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterCampaigns.vue?vue&type=script&lang=ts&setup=true&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterCampaigns.vue?vue&type=script&lang=ts&setup=true&\"","import { render, staticRenderFns } from \"./NewsletterCampaigns.vue?vue&type=template&id=1b1a1df6&\"\nimport script from \"./NewsletterCampaigns.vue?vue&type=script&lang=ts&setup=true&\"\nexport * from \"./NewsletterCampaigns.vue?vue&type=script&lang=ts&setup=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs(_setup.campaign.title || _vm.$t('label.new_newsletter'))},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.PaywallButton,{attrs:{\"unlocked\":_setup.useNewsletterFeatureAllowed,\"disabled\":!_setup.canSaveOrSend,\"color\":\"success\"},on:{\"click\":_setup.sendCampaign}},[_vm._v(\" \"+_vm._s(_vm.$t('button.send_newsletter'))+\" \")]),_c('v-btn',{attrs:{\"disabled\":!_setup.useNewsletterFeatureAllowed || (!_setup.canSaveOrSend || !_setup.isChanged),\"text\":\"\"},on:{\"click\":_setup.saveCampaign}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\" mdi-content-save-outline \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.save_as_draft'))+\" \")],1)]},proxy:true},{key:\"header\",fn:function(){return [_c(_setup.NewsletterQuotaBar)]},proxy:true},{key:\"content\",fn:function(){return [(_setup.testRecipientsDialog)?_c(_setup.NewsletterTestEmailRecipientsDialog,{attrs:{\"recipients\":_setup.testRecipients},on:{\"confirm\":function($event){return _setup.testCampaign($event)},\"dismiss\":function($event){_setup.testRecipientsDialog = false}}}):_vm._e(),(_setup.editorTemplate !== undefined)?_c(_setup.NewsletterTemplateEditorDialog,{attrs:{\"template\":_setup.editorTemplate,\"template-locale\":_setup.campaign.locale,\"save-btn-text\":_vm.$t('button.done')},on:{\"close\":function($event){_setup.editorTemplate = undefined},\"save\":_setup.saveTemplate}}):_vm._e(),(_setup.contactFilterDialogVisible)?_c(_setup.ContactsFilterDialog,{attrs:{\"contact-filter\":_setup.editedContactFilter,\"visible\":_setup.contactFilterDialogVisible,\"match-contact-count\":_setup.editedContactFilterMatchContactCount},on:{\"close\":function($event){_setup.contactFilterDialogVisible = false},\"save\":_setup.saveContactFilter,\"changed\":_setup.changedContactFilter,\"delete\":_setup.deleteContactFilter},scopedSlots:_vm._u([{key:\"narrow-rules\",fn:function(){return [_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c(_setup.ContactsFilterValueRow,{attrs:{\"value\":{ field: 'newsletterSubscription', fieldType: 'boolean', id: 'dummy', type: 'is'},\"descriptor\":_setup.ContactFilter.FilterDescriptor,\"disabled\":\"\"}})],1)]},proxy:true},{key:\"footer\",fn:function({count}){return [(count !== null)?_c('span',{staticClass:\"text-subtitle-2\"},[_vm._v(_vm._s(_vm.$t('label.filter_matches_x_guests_with_newsletter', [count])))]):_vm._e()]}}],null,false,409292441)}):_vm._e(),_c(_setup.ValidationObserver,{ref:\"refObserver\"},[_c('settings-group',{attrs:{\"gutter\":\"\",\"title\":_vm.$t('settings.newsletter.newsletter_settings'),\"subtitle\":_vm.$t('settings.newsletter.newsletter_settings_subtitle')}},[_c('v-col',{staticClass:\"pt-4 pb-0\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{staticClass:\"my-2 w-100\",attrs:{\"rules\":\"required|max:255\",\"hint\":_vm.$t('label.newsletter_name_hint'),\"label\":_vm.$t('label.newsletter_name')},model:{value:(_setup.campaign.title),callback:function ($$v) {_vm.$set(_setup.campaign, \"title\", $$v)},expression:\"campaign.title\"}})],1),_c('v-col',{staticClass:\"py-0 pb-2\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\",\"required\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c(_setup.ContactFilterSelect,{staticClass:\"mt-4\",attrs:{\"filters\":_setup.contactFilters,\"allow-edit\":\"\",\"error-messages\":errors,\"hint\":_setup.contactFilterHintText,\"persistent-hint\":\"\",\"append-outer-icon\":\"mdi-plus\",\"label\":_vm.$t('label.audience')},on:{\"add-filter\":_setup.addContactFilter,\"duplicate-filter\":_setup.duplicateContactFilter,\"edit-filter\":_setup.editContactFilter,\"input\":_setup.selectContactFilter,\"click:append-outer\":_setup.addContactFilter},model:{value:(_setup.campaign.contactFilter),callback:function ($$v) {_vm.$set(_setup.campaign, \"contactFilter\", $$v)},expression:\"campaign.contactFilter\"}})]}}])})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('validation-provider',{attrs:{\"rules\":\"required\",\"required\":\"\"},scopedSlots:_vm._u([{key:\"default\",fn:function({ errors }){return [_c('v-select',{staticClass:\"mt-2 pb-0\",attrs:{\"label\":_vm.$t('label.language'),\"items\":_setup.languages,\"error-messages\":errors},model:{value:(_setup.campaign.locale),callback:function ($$v) {_vm.$set(_setup.campaign, \"locale\", $$v)},expression:\"campaign.locale\"}})]}}])})],1)],1),_c('settings-group',{attrs:{\"gutter\":\"\",\"title\":_vm.$t('settings.newsletter.content'),\"subtitle\":_vm.$t('settings.newsletter.content_subtitle')}},[_c('v-col',{staticClass:\"pt-4 pb-2\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"required|max:255\",\"label\":_vm.$t('label.subject')},model:{value:(_setup.campaign.subject),callback:function ($$v) {_vm.$set(_setup.campaign, \"subject\", $$v)},expression:\"campaign.subject\"}})],1),_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c('validated-text-field',{attrs:{\"rules\":\"max:150\",\"label\":_vm.$t('label.newsletter_email_precontent'),\"hint\":_vm.$t('label.newsletter_email_precontent_hint')},model:{value:(_setup.campaign.previewText),callback:function ($$v) {_vm.$set(_setup.campaign, \"previewText\", $$v)},expression:\"campaign.previewText\"}})],1),(!_setup.template?.preview && _setup.campaignLoaded)?_c('v-col',{staticClass:\"py-0\",attrs:{\"cols\":\"12\"}},[_c(_setup.TemplateGridView,{staticClass:\"pt-2\",attrs:{\"card-cols\":6,\"card-cols-sm\":4,\"card-cols-md\":4,\"card-cols-lg\":3,\"templates\":_setup.templates},on:{\"select-template\":_setup.selectTemplate,\"edit-template\":_setup.selectTemplate},scopedSlots:_vm._u([{key:\"title\",fn:function(){return [_c('v-col',{staticClass:\"pb-0\",attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"subheading v-label mt-2 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.email_body'))+\" \")])])]},proxy:true}],null,false,3798650481)})],1):_vm._e(),(_setup.template?.preview && _setup.campaignLoaded)?[_c('v-col',{staticClass:\"pb-2\",attrs:{\"cols\":\"12\"}},[_c('p',{staticClass:\"subheading mt-2 mb-0\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.newsletter_email_preview'))+\" \")])]),_c('v-col',{staticClass:\"pt-0\",attrs:{\"cols\":\"12\"}},[_c(_setup.EmailPreviewFrame,{attrs:{\"subject\":_setup.campaign.subject},scopedSlots:_vm._u([{key:\"toolbar-items\",fn:function(){return [_c(_setup.PaywallButton,{attrs:{\"unlocked\":_setup.useNewsletterFeatureAllowed,\"small\":\"\",\"outlined\":\"\",\"color\":\"green\"},on:{\"click\":_setup.pickTestRecipients}},[_vm._v(\" \"+_vm._s(_vm.$t('button.send_test_email'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"text\":\"\",\"small\":\"\"},on:{\"click\":_setup.editCampaignTemplate}},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-pencil \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.edit'))+\" \")],1),_c('v-btn',{attrs:{\"text\":\"\",\"small\":\"\",\"color\":\"red\"},on:{\"click\":_setup.removeCampaignTemplate}},[_c('v-icon',{staticClass:\"mr-2\",attrs:{\"small\":\"\"}},[_vm._v(\" mdi-delete \")]),_vm._v(\" \"+_vm._s(_vm.$t('button.delete'))+\" \")],1)]},proxy:true}],null,false,1021487263)},[_c(_setup.HtmlImage,{attrs:{\"html\":_setup.template.preview}})],1)],1)]:_vm._e()],2)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NewModalDialog,{attrs:{\"visible\":\"\",\"persistent\":true,\"max-width\":\"90%\",\"scrollable\":false,\"fullscreen\":false,\"container-class\":\"pa-0 ma-0\",\"card-class\":\"pa-0 ma-0\",\"retain-focus\":false,\"fluid\":\"\",\"light\":\"\"},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-spacer'),_c('v-btn',{attrs:{\"color\":\"green\",\"dark\":\"\"},on:{\"click\":_setup.save}},[_vm._v(\" \"+_vm._s(_vm.saveBtnText)+\" \")]),_c('v-btn',{attrs:{\"color\":\"red\",\"text\":\"\"},on:{\"click\":_setup.cancel}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[(_setup.uploadDialog)?_c(_setup.ImageUploadDialog,{attrs:{\"title\":_vm.$t('title.image'),\"filename-prefix\":\"newsletter\",\"help-label\":_vm.$t('placeholder.image_upload'),\"delete-confirmation-label\":_vm.$t('message.confirm_delete_uploaded_image'),\"max-width\":500},on:{\"close\":function($event){_setup.uploadDialog = false},\"change\":_setup.uploadImage}}):_vm._e(),_c('div',{staticClass:\"w-100 pa-0 ma-0\",attrs:{\"id\":\"email-editor-root\"}}),_c('v-divider',{staticStyle:{\"position\":\"relative\",\"z-index\":\"10000\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport {\n ref, PropType, getCurrentInstance, onBeforeUnmount, onMounted,\n} from 'vue';\nimport i18n from '@/plugins/i18n';\nimport httpClient from '@/api/http-client';\nimport { performSaveAction, performDispatchAction } from '@/services/vue-utils';\nimport HtmlTemplate from '@/grpc-api/model/html-template';\nimport store from '@/store/store';\nimport NewModalDialog from '@/components/dialogs/NewModalDialog.vue';\nimport ReservationService from '@/grpc-api/model/reservation-service';\nimport { hostedWidgetURL } from '@/services/configuration';\nimport { loadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport ServiceManagerStore from '@/store/service-manager-store';\nimport { InitApp, DestroyApp } from '@guestplan/email-editor';\nimport ImageUploadDialog from '@/components/dialogs/ImageUploadDialog.vue';\nimport { cloneModel } from '@/model/model-utils';\nimport { TranslateResult } from 'vue-i18n';\nimport { useLanguages } from '../settings/helpers/settings-values';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterTemplateEditorDialog',\n props: {\n // TODO: why is template allowed to be undefined?\n template: { type: Object as PropType, required: false, default: undefined },\n templateLocale: { type: String as PropType, required: false, default: undefined },\n saveBtnText: {\n type: [String, Object] as PropType, required: false, default: i18n.t('button.save'),\n },\n},\n emits: ['close', 'save'],\n setup(__props, { emit }) {\n\nconst props = __props;\n\nconst services = ref([] as ReservationService[]);\nconst acctSettings = store.state.settings.account;\n\n\n\n\n\n// image upload\nconst uploadDialog = ref(false);\n\nlet resolveUploadPromise: ((value: string) => void) | null = null;\nlet rejectUploadPromise: ((reason: any) => void) | null = null;\n\nconst onUpload = () => {\n uploadDialog.value = true;\n return new Promise((resolve, reject) => {\n resolveUploadPromise = resolve;\n rejectUploadPromise = reject;\n });\n};\n\nconst uploadImage = async (image: File | null) => {\n const ok = await performSaveAction(\n null,\n async () => {\n let imageUrl = '';\n // save image and get url, if undefined, image is being removed\n if (image !== null) {\n const key = store.state.settings.account.serviceManagerAccessKey ?? '';\n imageUrl = await httpClient.uploadImageFile(image, key);\n }\n\n resolveUploadPromise!(imageUrl);\n },\n );\n\n if (ok) {\n uploadDialog.value = false;\n } else {\n rejectUploadPromise!(new Error());\n }\n};\n\nconst languages = useLanguages();\n\n// Email Editor Callbacks\nlet toJsonExport = undefined as (() => string) | undefined;\nlet toHtmlExport = undefined as (() => string) | undefined;\nlet toHtmlPreview = undefined as (() => string) | undefined;\nlet toPlaintext = undefined as (() => string) | undefined;\n\nconst emailEditorCallbacks = {\n onUpload,\n toJsonExport: (cb: () => string) => { toJsonExport = cb; },\n toHtmlExport: (cb: () => string) => { toHtmlExport = cb; },\n toHtmlPreview: (cb: () => string) => { toHtmlPreview = cb; },\n toPlaintext: (cb: () => string) => { toPlaintext = cb; },\n};\n\n// /\n\nconst widgetLink = (s?: ReservationService) => {\n const { defaultAccessKey: apiKey } = store.state.settings.account;\n if (!apiKey) return undefined;\n if (!s) return hostedWidgetURL({ apiKey });\n\n const { locale, code: serviceCode } = s;\n if (!serviceCode) return undefined;\n return hostedWidgetURL({ apiKey, serviceCode, locale });\n};\n\nconst reset = async () => {\n services.value = store.getters.serviceManagertServices as ReservationService[];\n\n const svcData = services.value.map((s) => ({\n id: s.code!,\n title: s.title,\n description: s.description,\n imageUrl: s.imageUrl,\n isActive: s.isActive,\n bookingLink: widgetLink(s) ?? '', // TODO: can this happen?\n locale: languages.value.find((l) => l.locale === s.locale)?.language,\n }));\n // console.log(svcData);\n\n const emailEditorData = {\n services: svcData,\n widgetLink: widgetLink() ?? '', // TODO: can this happen?\n logoUrl: acctSettings.logoLink,\n contactDetails: {\n name: acctSettings.accountName ?? '',\n address: `${acctSettings.streetAddress} ${acctSettings.postalCode} ${acctSettings.countryCode}`,\n phone: acctSettings.phone,\n email: acctSettings.email,\n website: acctSettings.website,\n socials: {\n facebook: acctSettings.facebook,\n instagram: acctSettings.instagram,\n yelp: acctSettings.yelp,\n x: acctSettings.x,\n youtube: acctSettings.youtube,\n tripadvisor: acctSettings.tripadvisor,\n tiktok: acctSettings.tiktok,\n },\n },\n };\n\n const lang = i18n.locale.split('-')[0];\n const documentLang = props.templateLocale ?? store.state.settings.account.locale ?? lang;\n const devMode = process.env.NODE_ENV !== 'production';\n InitApp(\n document.getElementById('email-editor-root')!,\n emailEditorData,\n emailEditorCallbacks,\n lang,\n documentLang,\n devMode,\n JSON.parse(props.template?.design ?? '{}'),\n );\n};\n\nconst load = async () => {\n if (!store.getters.isServiceManagerLoaded) {\n await performDispatchAction('loadServiceManager', {}, { streamLoad: true }) as ReservationService[] | null;\n }\n reset();\n};\n\nconst save = async () => {\n const design = toJsonExport!();\n console.log(design);\n const html = toHtmlExport!();\n console.log(html);\n const plaintext = toPlaintext!();\n console.log(plaintext);\n const preview = toHtmlPreview!();\n console.log(preview);\n\n let template: HtmlTemplate;\n if (props.template) {\n template = cloneModel(props.template);\n // template.name = 'edited name'\n template.design = design;\n template.html = html;\n template.plaintext = plaintext;\n template.preview = preview;\n } else {\n template = new HtmlTemplate({\n id: 0,\n // name = 'edited name',\n name: i18n.t('label.new_template') as string,\n design,\n html,\n plaintext,\n preview,\n });\n }\n\n emit('save', template);\n};\n\nconst cancel = () => emit('close');\n\nonMounted(() => {\n loadStoreModule(getCurrentInstance()?.proxy!, 'serviceManager', ServiceManagerStore, async () => { load(); });\n});\n\nonBeforeUnmount(() => {\n DestroyApp();\n\n unloadStoreModule(\n getCurrentInstance()?.proxy!,\n 'serviceManager',\n // no reset, reset perfomed when unloading marketing campaign manager store\n async () => {}, // store.dispatch('resetServiceManager');\n );\n});\n\n\nreturn { __sfc: true,services, acctSettings, props, emit, uploadDialog, resolveUploadPromise, rejectUploadPromise, onUpload, uploadImage, languages, toJsonExport, toHtmlExport, toHtmlPreview, toPlaintext, emailEditorCallbacks, widgetLink, reset, load, save, cancel, NewModalDialog, ImageUploadDialog }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterTemplateEditorDialog.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterTemplateEditorDialog.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterTemplateEditorDialog.vue?vue&type=template&id=82cea46c&\"\nimport script from \"./NewsletterTemplateEditorDialog.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterTemplateEditorDialog.vue?vue&type=script&setup=true&lang=ts&\"\nimport style0 from \"./NewsletterTemplateEditorDialog.vue?vue&type=style&index=0&id=82cea46c&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-row',[_vm._t(\"title\"),_vm._l((_vm.templates),function(t){return _c('v-col',{key:t.id,attrs:{\"cols\":_vm.cardCols,\"sm\":_vm.cardColsSm,\"md\":_vm.cardColsMd,\"lg\":_vm.cardColsLg}},[_c('v-card',{attrs:{\"outlined\":\"\"},on:{\"click\":function($event){return _setup.selectTemplate(t)}}},[_c(_setup.HtmlImage,{staticStyle:{\"aspect-ratio\":\"1 / 1\",\"overflow\":\"hidden\"},attrs:{\"fill-height\":\"\",\"html\":t.preview}}),_c('v-card-title',{staticClass:\"pa-1\"},[_c('v-spacer'),_c('span',{staticClass:\"text-body-2 ellipsize\"},[_vm._v(_vm._s(t.name))]),_c('v-spacer'),(_vm.allowActions)?_c('v-menu',{attrs:{\"bottom\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({attrs:{\"x-small\":\"\",\"icon\":\"\"}},'v-btn',attrs,false),on),[_c('v-icon',[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,true)},[_c('v-list',{staticClass:\"py-0 my-0\"},[_c('v-list-item',{on:{\"click\":function($event){return _setup.duplicateTemplate(t)}}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('button.duplicate')))]),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-content-duplicate \")])],1)],1),(!t.isDefault)?_c('div',[_c('v-list-item',{on:{\"click\":function($event){return _setup.editTemplate(t)}}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('button.edit')))]),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-pencil \")])],1)],1),_c('v-list-item',{on:{\"click\":function($event){return _setup.renameTemplate(t)}}},[_c('v-list-item-title',[_vm._v(_vm._s(_vm.$t('button.rename')))]),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"small\":\"\"}},[_vm._v(\" mdi-rename \")])],1)],1),_c('v-divider'),_c('v-list-item',{on:{\"click\":function($event){return _setup.deleteTemplate(t)}}},[_c('v-list-item-title',{staticClass:\"red--text\"},[_vm._v(\" \"+_vm._s(_vm.$t('button.delete'))+\" \")]),_c('v-list-item-icon',[_c('v-icon',{attrs:{\"small\":\"\",\"color\":\"red\"}},[_vm._v(\" mdi-delete \")])],1)],1)],1):_vm._e()],1)],1):_vm._e()],1)],1)],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport HtmlTemplate from '@/grpc-api/model/html-template';\nimport { PropType } from 'vue';\nimport HtmlImage from '@/components/util/HtmlImage.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'TemplateGridView',\n props: {\n templates: { type: Array as PropType>, required: true },\n cardCols: { type: Number, required: false, default: 6 },\n cardColsSm: { type: Number, required: false, default: 4 },\n cardColsMd: { type: Number, required: false, default: 3 },\n cardColsLg: { type: Number, required: false, default: 2 },\n allowActions: { type: Boolean, required: false, default: false },\n},\n emits: [\"select-template\", \"edit-template\", \"duplicate-template\", \"delete-template\", \"rename-template\"],\n setup(__props, { emit }: { emit: ({(e: 'select-template'|'edit-template'|'duplicate-template'|'delete-template'|'rename-template', templte: HtmlTemplate): void}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props;\n\n\n\n// eslint-disable-next-line vue/max-len\n\n\nconst selectTemplate = (t: HtmlTemplate) => {\n emit('select-template', t);\n};\n\nconst editTemplate = (t: HtmlTemplate) => {\n emit('edit-template', t);\n};\n\nconst duplicateTemplate = (t: HtmlTemplate) => {\n emit('duplicate-template', t);\n};\n\nconst deleteTemplate = (t: HtmlTemplate) => {\n emit('delete-template', t);\n};\n\nconst renameTemplate = (t: HtmlTemplate) => {\n emit('rename-template', t);\n};\n\n\nreturn { __sfc: true,props, emit, selectTemplate, editTemplate, duplicateTemplate, deleteTemplate, renameTemplate, HtmlImage }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TemplateGridView.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./TemplateGridView.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./TemplateGridView.vue?vue&type=template&id=1d292e82&\"\nimport script from \"./TemplateGridView.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./TemplateGridView.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NewModalDialog,{attrs:{\"persistent\":\"\",\"width\":\"550\",\"max-width\":\"550\",\"scrollable\":\"\",\"container-class\":\"pa-0 ma-0\",\"card-class\":\"pa-0 ma-0\",\"content-class\":\"dialog-height-60 pa-0 ma-0\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _setup.emit('confirm', _setup.selection)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _setup.emit('dismiss')}]},scopedSlots:_vm._u([{key:\"title-append-outer\",fn:function(){return [_c('v-card-title',{staticClass:\"px-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.select_newsletter_recipients'))+\" \")]),_c('v-card-subtitle',{staticClass:\"pt-1 pb-2 px-4\"},[_vm._v(\" \"+_vm._s(_vm.$t('label.select_newsletter_recipients_hint'))+\" \")])]},proxy:true},{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":_setup.selectAll}},[_vm._v(\" \"+_vm._s(_vm.$t('button.select_all'))+\" \")]),_c('v-spacer'),_c('v-btn',{attrs:{\"disabled\":_setup.selection.length === 0,\"color\":\"green\"},on:{\"click\":function($event){return _setup.emit('confirm', _setup.selection)}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.confirm'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\"},on:{\"click\":function($event){return _setup.emit('dismiss')}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.cancel'))+\" \")])]},proxy:true}])},[_c('v-list',{attrs:{\"dense\":\"\"}},[_c('v-list-item-group',{attrs:{\"multiple\":\"\"},model:{value:(_setup.selection),callback:function ($$v) {_setup.selection=$$v},expression:\"selection\"}},[_vm._l((_setup.sortedRecipients),function(item,i){return [(!item)?_c('v-divider',{key:`divider-${i}`}):_c('v-list-item',{key:`item-${i}`,attrs:{\"value\":item.value},scopedSlots:_vm._u([{key:\"default\",fn:function({ active }){return [_c('v-list-item-content',[_c('v-list-item-title',[_vm._v(\" \"+_vm._s(item.value)+\" \"),(_setup.currentUserEmail === item.value)?_c('v-chip',{staticClass:\"ml-4\",staticStyle:{\"margin-bottom\":\"2px\"},attrs:{\"x-small\":\"\",\"color\":\"blue\",\"label\":\"\"}},[_vm._v(\" \"+_vm._s(_vm.$t('label.current_user'))+\" \")]):_vm._e()],1),_c('v-list-item-subtitle',[_vm._v(_vm._s(item.text))])],1),_c('v-list-item-action',[_c('v-checkbox',{attrs:{\"input-value\":active}})],1)]}}],null,true)})]})],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, PropType, ref } from 'vue';\nimport NewModalDialog from '@/components/dialogs/NewModalDialog.vue';\nimport store from '@/store/store';\nimport User from '@/model/User';\n\n// const emit = defineEmits(['confirm', 'dismiss']);\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterTestEmailRecipientsDialog',\n props: {\n recipients: { type: Array as PropType<{text: string | undefined, value: string}[]>, required: true },\n},\n emits: [\"confirm\", \"dismiss\"],\n setup(__props, { emit }: { emit: ({(e: 'confirm', recipients: string[]): void\n (e: 'dismiss'): void\n}), expose: any, slots: any, attrs: any }) {\n\nconst props = __props;\n\n\n\n\n\nconst currentUserEmail = computed(() => {\n const user = store.getters.activeUser as User | undefined;\n return user?.email;\n});\n\nconst selection = ref([currentUserEmail.value] as string[]);\n\nconst sortedRecipients = computed(() => props.recipients.toSorted(\n (a, b) => (a.value === currentUserEmail.value ? -1 : a.value?.localeCompare(b.value)),\n));\n\nconst selectAll = () => {\n selection.value = selection.value.length === props.recipients.length ? [] : props.recipients?.map((r) => r.value);\n};\n\n\nreturn { __sfc: true,emit, props, currentUserEmail, selection, sortedRecipients, selectAll, NewModalDialog }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterTestEmailRecipientsDialog.vue?vue&type=script&lang=ts&setup=true&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterTestEmailRecipientsDialog.vue?vue&type=script&lang=ts&setup=true&\"","import { render, staticRenderFns } from \"./NewsletterTestEmailRecipientsDialog.vue?vue&type=template&id=8cf71f62&\"\nimport script from \"./NewsletterTestEmailRecipientsDialog.vue?vue&type=script&lang=ts&setup=true&\"\nexport * from \"./NewsletterTestEmailRecipientsDialog.vue?vue&type=script&lang=ts&setup=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n ref, computed, onMounted, getCurrentInstance, onBeforeUnmount,\n} from 'vue';\n\nimport HtmlImage from '@/components/util/HtmlImage.vue';\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport {\n actionShowError, performDispatchAction, performSaveAction, performValidation,\n} from '@/services/vue-utils';\nimport store from '@/store/store';\nimport ContactsFilterDialog from '@/components/views/contacts/ContactsFilterDialog.vue';\nimport { loadStoreModule, tryUnloadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport CampaignManagerStore from '@/store/marketing-campaign-manager-store';\nimport MarketingCampaign from '@/grpc-api/model/marketing-campaign';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport i18n from '@/plugins/i18n';\nimport useUnsavedGuard from '@/composables/unsaved-guard';\nimport { useRouter } from 'vue-router/composables';\nimport { ValidationObserver } from 'vee-validate';\nimport ContactFilter from '@/grpc-api/model/contact-filter';\nimport HtmlTemplate, { areHtmlTemplatesSame } from '@/grpc-api/model/html-template';\nimport nameWithCopyText from '@/util/copy-name';\nimport toast from '@/plugins/toast-plugin/toast';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\nimport ContactFilterSelect from '@/components/views/contacts/ContactFilterSelect.vue';\nimport { ApiErrorCode } from '@/api/api-error';\nimport PaywallButton from '@/components/buttons/PaywallButton.vue';\nimport NewsletterQuotaBar from './NewsletterQuotaBar.vue';\nimport NewsletterTemplateEditorDialog from './NewsletterTemplateEditorDialog.vue';\nimport TemplateGridView from './TemplateGridView.vue';\nimport { useLanguages } from '../settings/helpers/settings-values';\nimport EmailPreviewFrame from './EmailPreviewFrame.vue';\nimport NewsletterTestEmailRecipientsDialog from './NewsletterTestEmailRecipientsDialog.vue';\nimport ContactsFilterValueRow from '../contacts/ContactsFilterValueRow.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterCampaignCompose',\n setup(__props) {\n\nconst router = useRouter();\n\nconst useNewsletterFeatureAllowed = computed(() => store.getters.isNewsletterFeatureAllowed);\n\nconst campaignLoaded = ref(false);\nconst campaign = ref(new MarketingCampaign());\nconst oldCampaign = ref(campaign.value);\nconst template = ref(undefined as undefined | HtmlTemplate);\nconst oldTemplate = ref(undefined as undefined | HtmlTemplate);\nconst editorTemplate = ref(undefined as undefined | HtmlTemplate);\n\nconst isChanged = computed(() => campaignLoaded.value\n && (\n !isModelEqualToModel(oldCampaign.value, campaign.value)\n || (oldTemplate.value !== undefined && template.value === undefined)\n || (oldTemplate.value === undefined && template.value !== undefined)\n || (\n oldTemplate.value !== undefined && template.value !== undefined\n && !areHtmlTemplatesSame(oldTemplate.value, template.value))\n ));\nuseUnsavedGuard(isChanged);\nconst canSaveOrSend = computed(() => campaignLoaded.value && template.value?.html !== undefined);\n\nconst templates = computed(() => store.getters.marketingCampaignManagerHtmlTemplates as HtmlTemplate[]);\nconst languages = useLanguages();\nconst contactFilters = computed(() => store.getters.marketingCampaignManagerContactFilters as ContactFilter[]);\n\nconst editedContactFilter = ref(null as null | ContactFilter);\nconst contactFilterDialogVisible = ref(false);\nconst editedContactFilterMatchContactCount = ref(null as null | number);\nconst selectedContactFilterMatchContactCount = ref(null as null | number);\n\nconst contactFilterHintText = computed(() => {\n const { value } = selectedContactFilterMatchContactCount;\n return value !== null ? i18n.tc('label.x_recipients', value) : undefined;\n});\n\n// template grid actions\nconst selectTemplate = (t: HtmlTemplate) => {\n editorTemplate.value = t;\n};\n\n// campaign template actions\nconst editCampaignTemplate = () => {\n editorTemplate.value = template.value;\n};\n\nconst removeCampaignTemplate = () => {\n const action = () => { template.value = undefined; };\n\n showConfirmationDialog(\n i18n.t('title.newsletter'),\n i18n.t('message.confirm_remove_template'),\n { action },\n {},\n );\n};\n\n// campaign actions\nconst refObserver = ref(null as null | InstanceType);\nconst savec = async (p = { hideSuccess: false }) => {\n if (!template.value) return false;\n\n campaign.value.templateName = template.value.name;\n campaign.value.templateDesign = template.value.design;\n campaign.value.templateHtml = template.value.html;\n campaign.value.templatePlaintext = template.value.plaintext;\n\n let savedCampaign = undefined as MarketingCampaign | undefined;\n const ok = await performSaveAction(\n refObserver.value,\n async () => { savedCampaign = await store.dispatch('updateMarketingCampaign', { campaign: campaign.value }); },\n p,\n );\n if (!ok || !savedCampaign) return false;\n\n campaign.value = savedCampaign;\n oldCampaign.value = cloneModel(campaign.value);\n oldTemplate.value = cloneModel(template.value);\n\n return true;\n};\n\nconst saveCampaign = async () => {\n const ok = await savec();\n if (!ok) return;\n router.replace('/newsletter');\n};\n\nconst sendCampaign = async () => {\n const valid = await performValidation(refObserver.value);\n if (!valid) return;\n\n const sendAction = async (omitCampaignCheck: boolean) => {\n const successText = i18n.tc('message.campaign_successfuly_sent');\n\n try {\n const sent = await performDispatchAction(\n 'sendMarketingCampaign',\n { campaign: campaign.value, omitCampaignCheck },\n { successText, rethrow: true },\n );\n if (sent) router.replace('/newsletter');\n } catch (e: any) {\n if (!omitCampaignCheck && e.code === ApiErrorCode.campaign_manager_similar_campaign_found) {\n showConfirmationDialog(\n campaign.value.title ?? '',\n i18n.t('message.confirm_send_similar_campaign'),\n {\n title: i18n.tc('button.confirm', selectedContactFilterMatchContactCount.value ?? 0),\n action: () => sendAction(true),\n },\n {},\n );\n } else {\n actionShowError(e);\n }\n }\n };\n\n const action = async () => {\n const saved = await savec({ hideSuccess: true });\n if (saved) sendAction(false);\n };\n\n showConfirmationDialog(\n campaign.value.title ?? '',\n i18n.t('message.confirm_send_campaign', [selectedContactFilterMatchContactCount.value]),\n { title: i18n.tc('button.send_x_emails', selectedContactFilterMatchContactCount.value ?? 0), action },\n {},\n );\n};\n\nconst testRecipients = computed(() => store.state.settings.users.map((u) => ({ text: u.name, value: u.email! })) ?? []);\n\nconst testRecipientsDialog = ref(false);\n\nconst pickTestRecipients = async () => {\n const valid = await performValidation(refObserver.value);\n if (!valid) return;\n\n testRecipientsDialog.value = true;\n};\n\nconst testCampaign = async (recipients: string[]) => {\n testRecipientsDialog.value = false;\n\n // const action = async () => {\n const saved = await savec({ hideSuccess: true });\n if (!saved) return;\n\n const send = await performDispatchAction('testMarketingCampaign', { campaign: campaign.value, recipients });\n if (!send) return;\n\n toast.success(i18n.tc('message.message_successfuly_sent'));\n // };\n};\n\nconst loadCampaign = async () => {\n const route = router.currentRoute;\n\n let c: MarketingCampaign | undefined | null;\n\n // valid id route param? -> load campaign\n if (route.params.id !== 'new' && Number(route.params.id) > 0) {\n const id = Number(route.params.id) || 0;\n c = (store.getters.marketingCampaignManagerCampaigns as MarketingCampaign[]).find((o) => o.id === id);\n\n if (!c) {\n actionShowError(new Error(i18n.tc('error.load_data')));\n router.replace('/newsletter');\n }\n\n c = await performDispatchAction('getMarketingCampaign', { campaign: { id } });\n if (!c) {\n router.replace('/newsletter');\n }\n }\n\n if (c && route.query.action === 'copy') {\n // copy action -> make campaign duplicate\n oldCampaign.value = c;\n campaign.value = cloneModel(c);\n campaign.value.id = 0;\n campaign.value.title = nameWithCopyText(campaign.value.title ?? '', i18n.tc('label.copy_of'));\n } else if (c) {\n // valid campaign\n oldCampaign.value = c;\n campaign.value = cloneModel(c);\n } else {\n // new campaign\n oldCampaign.value = new MarketingCampaign();\n oldCampaign.value.locale = store.state.settings.account.locale;\n campaign.value = cloneModel(oldCampaign.value);\n }\n\n template.value = new HtmlTemplate({\n name: campaign.value.templateName ?? '',\n design: campaign.value.templateDesign ?? undefined,\n html: campaign.value.templateHtml ?? undefined,\n plaintext: campaign.value.templatePlaintext ?? undefined,\n preview: campaign.value.templatePreview ?? undefined,\n });\n oldTemplate.value = cloneModel(template.value);\n\n // eslint-disable-next-line no-use-before-define\n selectContactFilter(campaign.value.contactFilter ?? undefined);\n\n console.log('loadCampaign: ', campaign.value, template.value);\n campaignLoaded.value = true;\n};\n\nconst saveTemplate = async (t: HtmlTemplate) => {\n template.value = t;\n editorTemplate.value = undefined;\n};\n\n// contact filter editor actions\nconst changedContactFilter = async (contactFilter: ContactFilter) => {\n const action = 'previewContactFilterForMarketingCampaign';\n try {\n const count = await store.dispatch(action, { contactFilter });\n editedContactFilterMatchContactCount.value = count ?? null;\n } catch (e) {\n editedContactFilterMatchContactCount.value = null;\n }\n console.log('changedContactFilter: ', editedContactFilterMatchContactCount.value);\n};\n\nconst saveContactFilter = async (contactFilter: ContactFilter) => {\n const action = contactFilter.id === 0\n ? 'markeingCampaignManagerCreateContactFilter'\n : 'markeingCampaignManagerUpdateContactFilter';\n const changedFilter = await performDispatchAction(action, { contactFilter });\n if (!changedFilter) return;\n\n contactFilterDialogVisible.value = false;\n\n campaign.value.contactFilter = changedFilter;\n const res = await performDispatchAction('previewContactFilterForMarketingCampaign', { contactFilter });\n selectedContactFilterMatchContactCount.value = res ?? null;\n};\n\nconst deleteContactFilter = async (contactFilter: ContactFilter) => {\n const action = 'markeingCampaignManagerDeleteContactFilter';\n const changedFilter = await performDispatchAction(action, { contactFilter });\n if (!changedFilter) return;\n\n contactFilterDialogVisible.value = false;\n\n campaign.value.contactFilter = null;\n selectedContactFilterMatchContactCount.value = null;\n};\n\n// contact filter selector actions\nconst selectContactFilter = async (contactFilter?: ContactFilter) => {\n selectedContactFilterMatchContactCount.value = null;\n if (contactFilter?.data === undefined) return;\n\n campaign.value.contactFilter = contactFilter;\n const res = await performDispatchAction('previewContactFilterForMarketingCampaign', { contactFilter });\n selectedContactFilterMatchContactCount.value = res ?? null;\n};\n\nconst addContactFilter = () => {\n editedContactFilter.value = null;\n contactFilterDialogVisible.value = true;\n};\n\nconst duplicateContactFilter = () => {\n if (!campaign.value.contactFilter) return;\n editedContactFilter.value = cloneModel(campaign.value.contactFilter);\n editedContactFilter.value.id = 0;\n editedContactFilter.value.name = nameWithCopyText(campaign.value.contactFilter.text, i18n.tc('label.copy_of'));\n contactFilterDialogVisible.value = true;\n};\n\nconst editContactFilter = () => {\n editedContactFilter.value = campaign.value.contactFilter;\n contactFilterDialogVisible.value = true;\n};\n\n// view actions\nconst load = async () => {\n if (!store.getters.isMarketingCampaignManagerLoaded) {\n await performDispatchAction('loadMarketingCampaignManager', {});\n }\n loadCampaign();\n};\n\nconst reset = async () => {\n store.dispatch('resetMarketingCampaignManager');\n tryUnloadStoreModule('serviceManager', async () => store.dispatch('resetServiceManager'));\n};\n\nonMounted(() => {\n loadStoreModule(\n getCurrentInstance()?.proxy!,\n 'marketingCampaignManager',\n CampaignManagerStore,\n async () => { load(); },\n );\n});\n\nonBeforeUnmount(() => {\n unloadStoreModule(getCurrentInstance()?.proxy!, 'marketingCampaignManager', async () => { reset(); });\n});\n\n\nreturn { __sfc: true,router, useNewsletterFeatureAllowed, campaignLoaded, campaign, oldCampaign, template, oldTemplate, editorTemplate, isChanged, canSaveOrSend, templates, languages, contactFilters, editedContactFilter, contactFilterDialogVisible, editedContactFilterMatchContactCount, selectedContactFilterMatchContactCount, contactFilterHintText, selectTemplate, editCampaignTemplate, removeCampaignTemplate, refObserver, savec, saveCampaign, sendCampaign, testRecipients, testRecipientsDialog, pickTestRecipients, testCampaign, loadCampaign, saveTemplate, changedContactFilter, saveContactFilter, deleteContactFilter, selectContactFilter, addContactFilter, duplicateContactFilter, editContactFilter, load, reset, HtmlImage, useSettingsBreadcrumbs, ContactsFilterDialog, ValidationObserver, ContactFilter, ContactFilterSelect, PaywallButton, NewsletterQuotaBar, NewsletterTemplateEditorDialog, TemplateGridView, EmailPreviewFrame, NewsletterTestEmailRecipientsDialog, ContactsFilterValueRow }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterCampaignCompose.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterCampaignCompose.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterCampaignCompose.vue?vue&type=template&id=a2fa7ad0&\"\nimport script from \"./NewsletterCampaignCompose.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterCampaignCompose.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',[(_setup.upgradeDialog)?_c(_setup.PaywallUpgradeDialog,{on:{\"close\":function($event){_setup.upgradeDialog=false}}}):_vm._e(),(_setup.renameTemplateAction)?_c(_setup.InputDialog,{attrs:{\"label-title\":_vm.$t('label.name'),\"rules\":\"required|max:255\",\"title\":_vm.$t('label.rename_template'),\"value\":_setup.currentTemplateName,\"visible\":_setup.renameTemplateAction},on:{\"close\":function($event){_setup.renameTemplateAction = undefined},\"confirm\":_setup.renameTemplateAction}}):_vm._e(),(_setup.editedTemplate)?_c(_setup.NewsletterTemplateEditorDialog,{attrs:{\"template\":_setup.editedTemplate},on:{\"close\":function($event){_setup.editedTemplate = undefined},\"save\":_setup.saveTemplate}}):_vm._e(),_c('v-row',{staticClass:\"pa-4\"},[_c(_setup.TemplateGridView,{attrs:{\"allow-actions\":_setup.useNewsletterFeatureAllowed,\"templates\":_setup.templates},on:{\"select-template\":function($event){_setup.useNewsletterFeatureAllowed ? _setup.editTemplate($event) : _setup.upgradeDialog=true},\"edit-template\":_setup.editTemplate,\"duplicate-template\":_setup.duplicateTemplate,\"delete-template\":_setup.deleteTemplate,\"rename-template\":_setup.renameTemplate}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport HtmlTemplate from '@/grpc-api/model/html-template';\nimport {\n ref, computed, onMounted, onBeforeUnmount, getCurrentInstance,\n} from 'vue';\nimport { loadStoreModule, tryUnloadStoreModule, unloadStoreModule } from '@/services/module-loader';\nimport MarketingCampaignManagerStore from '@/store/marketing-campaign-manager-store';\nimport { performDispatchAction, performSaveAction } from '@/services/vue-utils';\nimport store from '@/store/store';\nimport { cloneModel } from '@/model/model-utils';\nimport nameWithCopyText from '@/util/copy-name';\nimport i18n from '@/plugins/i18n';\nimport InputDialog from '@/components/dialogs/InputDialog.vue';\nimport showConfirmationDialog from '@/components/dialogs/confirmation-dialog';\nimport PaywallUpgradeDialog from '@/components/dialogs/PaywallUpgradeDialog.vue';\nimport TemplateGridView from './TemplateGridView.vue';\nimport NewsletterTemplateEditorDialog from './NewsletterTemplateEditorDialog.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterTemplateLibrary',\n setup(__props) {\n\nconst useNewsletterFeatureAllowed = computed(() => store.getters.isNewsletterFeatureAllowed);\n\nconst upgradeDialog = ref(!useNewsletterFeatureAllowed.value);\n\nconst templates = computed(() => store.getters.marketingCampaignManagerHtmlTemplates as HtmlTemplate[]);\n\nconst editedTemplate = ref(undefined as undefined | HtmlTemplate);\n\n// rename dialog\nconst renameTemplateAction = ref(undefined as undefined | ((name: string) => void));\n\n// template actions\nconst editTemplate = (t: HtmlTemplate) => {\n editedTemplate.value = t;\n};\n\nconst saveTemplate = async (template: HtmlTemplate) => {\n const htmlTemplate = cloneModel(template);\n let action = 'marketingCampaignManagerUpdateHtmlTemplate';\n\n if (template.isDefault) {\n htmlTemplate.name = nameWithCopyText(template.name, i18n.t('label.copy_of') as string);\n action = 'marketingCampaignManagerCreateHtmlTemplate';\n }\n\n const ok = await performSaveAction(\n undefined,\n async () => store.dispatch(action, { htmlTemplate }),\n );\n\n if (ok) {\n editedTemplate.value = undefined;\n }\n};\n\nconst duplicateTemplate = async (template: HtmlTemplate) => {\n const htmlTemplate = cloneModel(template);\n htmlTemplate.name = nameWithCopyText(template.name, i18n.t('label.copy_of') as string);\n\n const ok = await performSaveAction(\n undefined,\n async () => store.dispatch('marketingCampaignManagerCreateHtmlTemplate', { htmlTemplate }),\n );\n};\n\nconst deleteTemplate = async (template: HtmlTemplate) => {\n const action = async () => {\n const ok = await performSaveAction(\n undefined,\n async () => store.dispatch('marketingCampaignManagerDeleteHtmlTemplate', { htmlTemplate: template }),\n { hideSuccess: true },\n );\n };\n\n showConfirmationDialog(\n i18n.t('title.newsletter'),\n i18n.tc('message.confirm_delete_template'),\n { action },\n {},\n );\n};\n\nconst currentTemplateName = ref('');\nconst renameTemplate = async (template: HtmlTemplate) => {\n currentTemplateName.value = template.name;\n renameTemplateAction.value = async (name: string) => {\n renameTemplateAction.value = undefined;\n const htmlTemplate = cloneModel(template);\n htmlTemplate.name = name;\n saveTemplate(htmlTemplate);\n };\n};\n\n// load campaign manager\nconst load = async () => {\n if (store.getters.isMarketingCampaignManagerLoaded) return;\n await performDispatchAction('loadMarketingCampaignManager', {});\n};\n\nconst reset = async () => {\n store.dispatch('resetMarketingCampaignManager');\n tryUnloadStoreModule('serviceManager', async () => store.dispatch('resetServiceManager'));\n};\n\nonMounted(() => {\n loadStoreModule(\n getCurrentInstance()?.proxy!,\n 'marketingCampaignManager',\n MarketingCampaignManagerStore,\n async () => { load(); },\n );\n});\n\nonBeforeUnmount(() => {\n unloadStoreModule(getCurrentInstance()?.proxy!, 'marketingCampaignManager', async () => { reset(); });\n});\n\n\nreturn { __sfc: true,useNewsletterFeatureAllowed, upgradeDialog, templates, editedTemplate, renameTemplateAction, editTemplate, saveTemplate, duplicateTemplate, deleteTemplate, currentTemplateName, renameTemplate, load, reset, InputDialog, PaywallUpgradeDialog, TemplateGridView, NewsletterTemplateEditorDialog }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterTemplateLibrary.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterTemplateLibrary.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterTemplateLibrary.vue?vue&type=template&id=847d2208&\"\nimport script from \"./NewsletterTemplateLibrary.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterTemplateLibrary.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('settings-form',{attrs:{\"breadcrumbs\":_setup.useSettingsBreadcrumbs(_setup.newsletter.title || _vm.$t('label.new_service'))},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c('v-btn',{attrs:{\"color\":\"success\",\"xdisabled\":_setup.selectedTemplate===null}},[_vm._v(\" Send Newsletter \")]),_c('v-btn',{attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.$emit('close')}}},[_c('v-icon',{staticClass:\"mr-1\"},[_vm._v(\" mdi-content-save-outline \")]),_vm._v(\" Save as Draft \")],1)]},proxy:true},{key:\"content\",fn:function(){return [(_setup.editorVisible)?_c(_setup.NewsletterTemplateEditorDialog,{attrs:{\"template\":_setup.selectedTemplate},on:{\"close\":function($event){_setup.editorVisible = false}}}):_vm._e(),(_setup.audienceDialogVisible)?_c(_setup.ContactsFilterDialog,{attrs:{\"visible\":_setup.audienceDialogVisible},on:{\"close\":function($event){_setup.audienceDialogVisible = false}}}):_vm._e(),_c('settings-group',{attrs:{\"gutter\":\"\",\"title\":\"Newsletter Settings\",\"subtitle\":\"Send an email with special deal to your customers.\\n The audience defines who will receive an email from you.\"}},[_c('validated-text-field',{staticClass:\"my-2 w-100\",attrs:{\"rules\":\"required|max:255\",\"persistent-hint\":\"\",\"hint\":\"The title of the newsletter is used for your reference only.\",\"label\":_vm.$t('label.title')},model:{value:(_setup.newsletter.title),callback:function ($$v) {_vm.$set(_setup.newsletter, \"title\", $$v)},expression:\"newsletter.title\"}}),_c('v-select',{staticClass:\"my-2\",attrs:{\"label\":\"Audience\",\"items\":_setup.filterItems,\"hint\":\"Matches 243 Guests\",\"append-outer-icon\":\"mdi-plus\",\"persistent-hint\":\"\"},on:{\"click:append-outer\":function($event){_setup.audienceDialogVisible=true}},model:{value:(_setup.currentFilter),callback:function ($$v) {_setup.currentFilter=$$v},expression:\"currentFilter\"}})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { ref, computed } from 'vue';\n\nimport { useSettingsBreadcrumbs } from '@/mixins/settings-breadcrumbs';\nimport HtmlTemplate from '@/grpc-api/model/html-template';\nimport { performDispatchAction } from '@/services/vue-utils';\nimport ContactsFilterDialog from '@/components/views/contacts/ContactsFilterDialog.vue';\n\nimport MarketingCampaign from '@/grpc-api/model/marketing-campaign';\nimport NewsletterTemplateEditorDialog from './NewsletterTemplateEditorDialog.vue';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'NewsletterSettings',\n setup(__props) {\n\nconst newTemplateDialog = ref(false);\nconst selectedTemplate = ref(undefined as HtmlTemplate | undefined);\nconst previewVisible = ref(false);\nconst editorVisible = ref(false);\nconst audienceDialogVisible = ref(false);\nconst currentFilter = ref(1);\n\nconst newsletter = new MarketingCampaign();\n\nconst filterItems = [\n { text: 'All Contacts', value: 1 },\n { text: 'Visited in last three months', value: 2 },\n { text: 'VIP Guests', value: 3 },\n { text: 'Frequent Visitors', value: 4 },\n];\n\n// const templates = computed(() => store.state.guestbook.editorTemplates);\nconst templates = [\n];\n\nconst didSelectTemplate = (templateId: number) => {\n newTemplateDialog.value = false;\n editorVisible.value = true;\n};\n// const selectTemplate = (htmlTemplate: HtmlTemplate | null) => {\n// selectedTemplate.value = htmlTemplate;\n// };\nconst editTemplate = (t: HtmlTemplate) => {\n selectedTemplate.value = t;\n editorVisible.value = true;\n};\n\nconst duplicateTemplate = async (htmlTemplate: HtmlTemplate) => {\n const { design, html } = { ...htmlTemplate };\n const name = `${htmlTemplate.name} - copy`;\n const ne = new HtmlTemplate({ design, html, name });\n const se = await performDispatchAction(\n 'guestbookCreateHtmlTemplate',\n { htmlTemplate: ne },\n );\n selectedTemplate.value = se ?? undefined;\n};\n\nconst deleteTemplate = async (htmlTemplate: HtmlTemplate) => {\n await performDispatchAction('guestbookDeleteHtmlTemplate', { htmlTemplate });\n if (selectedTemplate.value === htmlTemplate) selectedTemplate.value = undefined;\n};\n\n\nreturn { __sfc: true,newTemplateDialog, selectedTemplate, previewVisible, editorVisible, audienceDialogVisible, currentFilter, newsletter, filterItems, templates, didSelectTemplate, editTemplate, duplicateTemplate, deleteTemplate, useSettingsBreadcrumbs, ContactsFilterDialog, NewsletterTemplateEditorDialog }\n}\n\n})","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterSettings.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./NewsletterSettings.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./NewsletterSettings.vue?vue&type=template&id=0dc7e18d&\"\nimport script from \"./NewsletterSettings.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./NewsletterSettings.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('toolbar-container',{scopedSlots:_vm._u([{key:\"toolbar\",fn:function(){return [_c(_setup.MainToolbar,[_c('v-select',{staticClass:\"mr-5 mt-2\",staticStyle:{\"max-width\":\"200px\"},attrs:{\"dense\":\"\",\"label\":_vm.$t('label.category'),\"items\":_setup.categories,\"hide-details\":\"\"},model:{value:(_setup.categoryFilter),callback:function ($$v) {_setup.categoryFilter=$$v},expression:\"categoryFilter\"}}),_c('v-checkbox',{staticClass:\"ml-5\",attrs:{\"dense\":\"\",\"label\":_vm.$t('label.only_installed'),\"hide-details\":\"\"},model:{value:(_setup.showOnlyInstalled),callback:function ($$v) {_setup.showOnlyInstalled=$$v},expression:\"showOnlyInstalled\"}})],1)]},proxy:true}])},[_c('v-container',[_c('v-row',_vm._l((_setup.filteredApps),function(a){return _c('v-col',{key:a.id,attrs:{\"cols\":\"12\",\"sm\":\"6\",\"lg\":\"4\",\"xl\":\"3\"}},[_c(_setup.AppCard,{ref:_setup.setAppCard,refInFor:true,attrs:{\"app\":a}})],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('v-card',{staticClass:\"my-2 d-flex flex-column\",attrs:{\"loading\":_setup.loading,\"width\":\"100%\",\"height\":\"100%\"},on:_vm._d({},[_setup.installed&&`click`,_setup.goToApp])},[(_setup.configDialogVisible)?_c(_setup.configScreenComponent,{tag:\"component\",attrs:{\"params\":_setup.configDialogParams,\"visible\":_setup.configDialogVisible,\"title\":_vm.app.title(),\"update\":_setup.updateConfigDialog},on:{\"close\":_setup.closeConfigDialog,\"save\":_setup.saveConfigDialog}}):_vm._e(),_c('v-card-text',{staticClass:\"text--primary\"},[_c('v-row',[_c('v-list-item-avatar',{staticClass:\"pa-2 ma-3\",attrs:{\"tile\":\"\",\"size\":\"64\"}},[_c('v-img',{attrs:{\"contain\":\"\",\"src\":`/assets/apps/${_vm.app.id}.png`}})],1),_c('div',[_c('v-card-title',{staticClass:\"px-0 mx-0 pb-0\"},[_vm._v(\" \"+_vm._s(_vm.app.title())+\" \")]),_vm._l((_setup.categories),function(category){return _c('v-chip',{key:category,staticClass:\"mr-1\",attrs:{\"x-small\":\"\",\"outlined\":\"\",\"label\":\"\"}},[_vm._v(\" \"+_vm._s(category)+\" \")])}),(_setup.installed)?_c('v-chip',{staticClass:\"ml-1 px-2\",attrs:{\"color\":\"success\",\"x-small\":\"\",\"label\":\"\"}},[_c('v-icon',{staticClass:\"mr-1\",attrs:{\"x-small\":\"\"}},[_vm._v(\" mdi-check \")]),_vm._v(\" \"+_vm._s(_vm.$t('label.app_installed'))+\" \")],1):_vm._e()],2)],1),_c('div',{staticClass:\"pt-2\"},[_vm._v(\" \"+_vm._s(_vm.app.description())+\" \")])],1),_c('v-spacer'),_c('v-divider',{staticClass:\"mx-4\"}),_c('v-card-actions',[(_setup.installed && _vm.app.configComponent())?_c('v-btn',{attrs:{\"disabled\":_setup.configuring || _setup.installing || _setup.uninstalling,\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _setup.configure()}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.configure_app'))+\" \")]):_vm._e(),_c('v-spacer'),(_setup.installing || _setup.uninstalling)?_c('v-btn',{attrs:{\"disabled\":\"\"}},[_vm._v(\" \"+_vm._s(_setup.uninstalling ? _vm.$t('label.app_removing') : _vm.$t('label.app_installing'))+\" \")]):(!_setup.installed)?_c('v-btn',{attrs:{\"disabled\":_setup.configuring,\"color\":\"success\",\"outlined\":\"\",\"small\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _setup.install.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.install_app'))+\" \")]):_c('v-btn',{attrs:{\"color\":\"error\",\"text\":\"\",\"disabled\":_setup.configuring},on:{\"click\":function($event){$event.stopPropagation();return _setup.uninstall.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('button.remove_app'))+\" \")])],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent as _defineComponent } from 'vue'\nimport { computed, PropType, ref } from 'vue';\nimport GstplnApp from '@/components/apps/app';\nimport { useRouter } from 'vue-router/composables';\nimport store from '@/store/store';\nimport App from '@/grpc-api/model/app';\nimport { actionShowError } from '@/services/vue-utils';\nimport i18n from '@/plugins/i18n';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'AppCard',\n props: {\n app: { type: Object as PropType, required: true },\n},\n setup(__props, { expose }) {\n\nconst props = __props;\n\nconst router = useRouter();\n\n\n\nconst loading = ref(false);\n\nconst installing = ref(false);\n\nconst uninstalling = ref(false);\n\nconst configDialogVisible = ref(false);\n\nconst configDialogParams = ref('');\n\nconst configScreenComponent = computed(() => `${props.app.configComponent()}`);\n\nconst configuring = computed(() => configDialogVisible.value);\n\nconst installed = computed(() => props.app.installed);\n\nconst categories = computed(() => props.app.categories.map((c) => i18n.tc(`code.app_category.${c}`)));\n\nconst uninstall = async () => {\n try {\n uninstalling.value = true;\n loading.value = true;\n await store.dispatch('updateApp', { gstplnAppId: props.app.id, install: false });\n } catch (e: any) {\n actionShowError(e);\n } finally {\n loading.value = false;\n uninstalling.value = false;\n }\n};\n\nconst configure = async () => {\n if (!props.app.configComponent()) return;\n\n props.app.loadConfigComponent();\n\n try {\n loading.value = true;\n const app = await store.dispatch('getApp', { gstplnAppId: props.app.id, install: true }) as App;\n configDialogParams.value = app.params ?? '';\n configDialogVisible.value = true;\n } catch (e: any) {\n actionShowError(e);\n installing.value = false; // install finish if called from install\n } finally {\n loading.value = false;\n }\n};\n\nconst install = async () => {\n if (props.app.configComponent() && props.app.configBeforeInstall) {\n installing.value = true;\n configure();\n return;\n }\n\n try {\n loading.value = true;\n const app = await store.dispatch('updateApp', { gstplnAppId: props.app.id, install: true });\n configDialogParams.value = app.params ?? '';\n } catch (e: any) {\n console.log('install error: ', e);\n actionShowError(e);\n } finally {\n loading.value = false;\n installing.value = false;\n }\n};\n\nconst closeConfigDialog = () => {\n console.log('closeConfigDialog');\n configDialogVisible.value = false;\n installing.value = false; // install finish if configure called from install\n};\n\nconst saveConfigDialog = async (params?: string, close = true) => {\n try {\n loading.value = true;\n const app = await store.dispatch('updateApp', { gstplnAppId: props.app.id, install: true, params });\n configDialogParams.value = app.params ?? '';\n if (close) closeConfigDialog();\n } catch (e: any) {\n actionShowError(e);\n } finally {\n loading.value = false;\n }\n return configDialogParams.value;\n};\n\nconst updateConfigDialog = async (params?: string) => saveConfigDialog(params, false);\n\nconst goToApp = async (force = false) => {\n if (!installed.value && !force) { return; }\n if (props.app.configComponent()) {\n configure();\n return;\n }\n router.push(props.app.appConfigRoute || props.app.url);\n};\n\nexpose({ goToApp });\n\n\nreturn { __sfc: true,router, props, loading, installing, uninstalling, configDialogVisible, configDialogParams, configScreenComponent, configuring, installed, categories, uninstall, configure, install, closeConfigDialog, saveConfigDialog, updateConfigDialog, goToApp }\n}\n\n})","import mod from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppCard.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../../../node_modules/thread-loader/dist/cjs.js!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./AppCard.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./AppCard.vue?vue&type=template&id=622bad53&\"\nimport script from \"./AppCard.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./AppCard.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { defineComponent as _defineComponent } from 'vue'\nimport {\n computed, getCurrentInstance, nextTick, onBeforeUpdate, onMounted, ref,\n} from 'vue';\nimport AppCard from '@/components/views/settings/apps/AppCard.vue';\nimport MainToolbar from '@/components/views/main/MainToolbar.vue';\nimport store from '@/store/store';\nimport i18n from '@/plugins/i18n';\nimport { useRoute } from 'vue-router/composables';\nimport GstplnApp, { GstplnAppCategory } from '../apps/app';\n\n\nexport default /*#__PURE__*/_defineComponent({\n __name: 'Apps',\n setup(__props) {\n\nconst route = useRoute();\n\nconst categoryFilter = ref(route.query.category as string || '');\nconst categories = [\n { text: i18n.tc('label.show_all'), value: '' },\n { divider: true },\n { text: i18n.tc('code.app_category.extensions'), value: GstplnAppCategory.Extensions },\n { text: i18n.tc('code.app_category.booking_partners'), value: GstplnAppCategory.BookingPartners },\n { text: i18n.tc('code.app_category.integrations'), value: GstplnAppCategory.Integrations },\n { text: i18n.tc('code.app_category.payments'), value: GstplnAppCategory.Payments },\n];\n\nconst showOnlyInstalled = ref(false);\nconst installedApps = computed(() => store.getters.gstplnApps.filter((a: GstplnApp) => a.installed));\n\nconst apps = computed(() => (showOnlyInstalled.value ? installedApps.value : store.getters.gstplnApps) as GstplnApp[]);\nconst filteredApps = computed(\n () => (categoryFilter.value === ''\n ? apps.value\n : apps.value.filter((a) => a.categories.includes(categoryFilter.value))),\n);\n\n// open config settings from route\nconst appCards = ref(new Map>());\nconst setAppCard = (ac: InstanceType) => appCards.value.set(ac.$props.app.apiName, ac);\nonBeforeUpdate(() => {\n appCards.value = new Map>();\n});\nonMounted(() => {\n // test app configure request\n const appName = route.query.configure as string;\n if (!appName) return;\n\n // wait until loaded\n const unwatch = store.watch((state, getters) => getters.isLoaded, async (newValue, oldValue) => {\n if (!newValue) return;\n const appCard = appCards.value.get(appName);\n console.log('appCard: ', appCard, 'appCards: ', appCards.value);\n appCard?.goToApp(true);\n await nextTick(); // for immedated unwatch is not yet set\n unwatch();\n }, { immediate: true });\n});\n\n\nreturn { __sfc: true,route, categoryFilter, categories, showOnlyInstalled, installedApps, apps, filteredApps, appCards, setAppCard, AppCard, MainToolbar }\n}\n\n})","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&setup=true&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Apps.vue?vue&type=script&setup=true&lang=ts&\"","import { render, staticRenderFns } from \"./Apps.vue?vue&type=template&id=9bfa00d8&\"\nimport script from \"./Apps.vue?vue&type=script&setup=true&lang=ts&\"\nexport * from \"./Apps.vue?vue&type=script&setup=true&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import Vue from 'vue';\nimport Router from 'vue-router';\nimport GuestsView from '@/components/views/Guests.vue';\nimport TablesView from '@/components/views/Tables.vue';\nimport FloorView from '@/components/views/Floor.vue';\nimport LoginView from '@/components/views/Login.vue';\nimport store from '@/store/store';\nimport AccountView from '@/components/views/Account.vue';\nimport AdvancedSettingsView from '@/components/views/AdvancedSettings.vue';\nimport UsersView from '@/components/views/Users.vue';\nimport UserView from '@/components/views/User.vue';\nimport ContactsView from '@/components/views/Contacts.vue';\nimport TagNotesView from '@/components/views/TagNotes.vue';\nimport EmployeesView from '@/components/views/Employees.vue';\nimport LabelsView from '@/components/views/Labels.vue';\nimport OpeningHours from '@/components/views/OpeningHours.vue';\nimport SimpleOpeningHours from '@/components/views/SimpleOpeningHours.vue';\nimport Sections from '@/components/views/Sections.vue';\nimport Section from '@/components/views/Section.vue';\nimport OnlineSettings from '@/components/views/OnlineSettings.vue';\nimport ServiceManager from '@/components/views/ServiceManager.vue';\nimport ServiceManagerEditor from '@/components/views/settings/servicemanager/ServiceManagerEditor.vue';\nimport Sms from '@/components/views/Sms.vue';\nimport Settings from '@/components/views/Settings.vue';\nimport SpecialHours from '@/components/views/SpecialHours.vue';\nimport MessageCenter from '@/components/views/MessageCenter.vue';\nimport Dashboard from '@/components/views/Dashboard.vue';\nimport ReportReservations from '@/components/views/ReportReservations.vue';\nimport ReportServices from '@/components/views/ReportServices.vue';\nimport ReportWeekdays from '@/components/views/ReportWeekdays.vue';\nimport ReportFeedback from '@/components/views/ReportFeedback.vue';\nimport ReportMessages from '@/components/views/ReportMessages.vue';\nimport Search from '@/components/views/Search.vue';\nimport MessageCenterRuleEditor from '@/components/views/MessageCenterRuleEditor.vue';\nimport UnreadReservations from '@/components/views/UnreadReservations.vue';\nimport PwaInfo from '@/components/views/PwaInfo.vue';\nimport Feedback from '@/components/views/Feedback.vue';\nimport SettingsFeedback from '@/components/views/settings/Feedback.vue';\nimport NewsletterCampaignsView from '@/components/views/newsletter/NewsletterCampaigns.vue';\nimport NewsletterComposeView from '@/components/views/newsletter/NewsletterCampaignCompose.vue';\nimport NewsletterTemplateLibraryView from '@/components/views/newsletter/NewsletterTemplateLibrary.vue';\nimport NewsletterSettingsView from '@/components/views/newsletter/NewsletterSettings.vue';\n\nimport Apps from '@/components/views/Apps.vue';\nimport i18n from '@/plugins/i18n';\n\nVue.use(Router);\n\nconst router = new Router({\n mode: 'history',\n base: process.env.BASE_URL,\n routes: [\n {\n path: '/',\n name: 'home',\n component: GuestsView,\n meta: { hasDatePicker: true, fab: 'reservation' },\n },\n {\n path: '/guests',\n name: 'guests',\n component: GuestsView,\n meta: { hasDatePicker: true, fab: 'reservation' },\n },\n {\n path: '/tables',\n name: 'tables',\n component: TablesView,\n meta: { hasDatePicker: true, fab: 'reservation' },\n },\n {\n path: '/floor',\n name: 'floorplan',\n component: FloorView,\n meta: { hasDatePicker: true, fab: 'reservation' },\n },\n {\n path: '/login',\n name: 'login',\n component: LoginView,\n meta: { public: true },\n },\n {\n path: '/promo',\n name: 'promo',\n component: LoginView,\n meta: { public: true },\n },\n {\n path: '/promo/:code',\n name: 'promo',\n component: LoginView,\n meta: { public: true },\n },\n {\n path: '/signup',\n name: 'signup',\n component: LoginView,\n meta: { public: true },\n },\n {\n path: '/contacts',\n name: 'contacts',\n component: ContactsView,\n meta: {\n title: i18n.t('title.contacts'),\n titleKey: 'title.contacts',\n },\n },\n {\n path: '/newsletter',\n name: 'newsletter',\n component: NewsletterCampaignsView,\n meta: {\n title: i18n.t('title.newsletter_campaigns'),\n titleKey: 'title.newsletter_campaigns',\n },\n },\n {\n path: '/newsletter/campaigns',\n name: 'newsletter',\n component: NewsletterCampaignsView,\n meta: {\n title: i18n.t('title.newsletter_campaigns'),\n titleKey: 'title.newsletter_campaigns',\n },\n },\n {\n path: '/newsletter/library',\n name: 'newsletter_library',\n component: NewsletterTemplateLibraryView,\n meta: {\n title: i18n.t('title.newsletter_library'),\n titleKey: 'title.newsletter_library',\n },\n },\n {\n path: '/newsletter/:id',\n name: 'newsletter_compose',\n component: NewsletterComposeView,\n meta: {\n title: i18n.t('title.newsletter_campaign_compose'),\n titleKey: 'title.newsletter_campaign_compose',\n },\n },\n {\n path: '/newsletter/settings',\n name: 'newsletter_settings',\n component: NewsletterSettingsView,\n meta: {\n title: i18n.t('title.settings'),\n titleKey: 'title.settings',\n },\n },\n // Settings Start\n {\n path: '/settings/general',\n name: 'general',\n component: AccountView,\n meta: {\n title: i18n.t('title.general'),\n titleKey: 'title.general',\n fab: 'help',\n helpUrl: 'account',\n },\n },\n {\n path: '/settings/billing',\n name: 'billing',\n component: () => import('@/components/views/Billing.vue'),\n meta: {\n title: i18n.t('title.billing'),\n titleKey: 'title.billing',\n fab: 'help',\n helpUrl: 'billing',\n },\n },\n {\n path: '/settings/advanced',\n name: 'advanced_settings',\n component: AdvancedSettingsView,\n meta: {\n title: i18n.t('title.advanced_settings'),\n titleKey: 'title.advanced_settings',\n fab: 'help',\n helpUrl: 'advanced_settings?id=h-advanced-settings',\n },\n },\n {\n path: '/settings/users',\n name: 'users',\n component: UsersView,\n meta: {\n title: i18n.t('title.users'),\n titleKey: 'title.users',\n fab: 'help',\n helpUrl: 'users',\n },\n },\n {\n path: '/settings/users/:id',\n name: 'user',\n component: UserView,\n meta: {\n title: i18n.t('title.edit_user'),\n titleKey: 'title.edit_user',\n fab: 'help',\n helpUrl: 'users',\n },\n },\n {\n path: '/settings/employees',\n name: 'employees',\n component: EmployeesView,\n meta: {\n title: i18n.t('title.manage_employee_names'),\n titleKey: 'title.manage_employee_names',\n fab: 'help',\n helpUrl: 'advanced_settings?id=h-employees',\n },\n },\n {\n path: '/settings/labels',\n name: 'labels',\n component: LabelsView,\n meta: {\n title: i18n.t('title.manage_reservation_labels'),\n titleKey: 'title.manage_reservation_labels',\n fab: 'help',\n helpUrl: 'advanced_settings?id=h-reservation-labels',\n },\n },\n {\n path: '/settings/tagnotes',\n name: 'tag_notes',\n component: TagNotesView,\n meta: {\n title: i18n.t('title.manage_tags'),\n titleKey: 'title.manage_tags',\n fab: 'help',\n helpUrl: 'advanced_settings?id=h-tags-and-notes',\n },\n },\n {\n path: '/settings/hours',\n name: 'opening_hours',\n component: OpeningHours,\n meta: {\n title: i18n.t('title.set_opening_hours'),\n titleKey: 'title.set_opening_hours',\n fab: 'help',\n helpUrl: 'opening_hours',\n },\n },\n {\n path: '/settings/simple-hours',\n name: 'opening_hours',\n component: SimpleOpeningHours,\n meta: {\n title: i18n.t('title.opening_hours'),\n titleKey: 'title.opening_hours',\n },\n },\n {\n path: '/settings/sections',\n name: 'sections',\n component: Sections,\n meta: {\n title: i18n.t('title.sections'),\n titleKey: 'title.sections',\n fab: 'help',\n helpUrl: 'sections',\n },\n },\n {\n path: '/settings/sections/:id',\n name: 'section',\n component: Section,\n meta: {\n title: i18n.t('title.edit_section'),\n titleKey: 'title.edit_section',\n fab: 'help',\n helpUrl: 'sections',\n },\n },\n {\n path: '/settings/online',\n name: 'online',\n component: OnlineSettings,\n meta: {\n title: i18n.t('title.online_settings'),\n titleKey: 'title.online_settings',\n fab: 'help',\n helpUrl: 'online_settings',\n },\n },\n {\n path: '/settings',\n name: 'settings',\n component: Settings,\n meta: {\n title: i18n.t('title.settings'),\n titleKey: 'title.settings',\n },\n },\n {\n path: '/settings/special-hours',\n name: 'special-hours',\n component: SpecialHours,\n meta: {\n title: i18n.t('title.set_special_hours'),\n titleKey: 'title.set_special_hours',\n fab: 'help',\n helpUrl: 'opening_hours?id=h-special-opening-hours',\n },\n },\n {\n path: '/settings/feedback',\n name: 'feedback',\n component: SettingsFeedback,\n meta: {\n title: i18n.t('title.feedback'),\n titleKey: 'title.feedback',\n fab: 'help',\n helpUrl: 'feedback',\n },\n },\n {\n path: '/settings/sms',\n name: 'sms',\n component: Sms,\n meta: {\n title: i18n.t('title.sms'),\n titleKey: 'title.sms',\n fab: 'help',\n helpUrl: 'sms',\n },\n },\n {\n path: '/settings/message-center',\n name: 'message-center',\n component: MessageCenter,\n meta: {\n title: i18n.t('title.message_center'),\n titleKey: 'title.message_center',\n fab: 'help',\n helpUrl: 'messages',\n },\n },\n {\n path: '/settings/message-center/:id',\n name: 'message-center-rule',\n component: MessageCenterRuleEditor,\n meta: {\n title: i18n.t('title.messages'),\n titleKey: 'title.messages',\n fab: 'help',\n helpUrl: 'messages',\n },\n },\n {\n path: '/settings/service-manager',\n name: 'service-manager',\n component: ServiceManager,\n meta: {\n title: i18n.t('title.service_manager'),\n titleKey: 'title.service_manager',\n fab: 'help',\n helpUrl: 'services',\n },\n },\n {\n path: '/settings/service-manager/:id',\n name: 'service-manager-editor',\n component: ServiceManagerEditor,\n meta: {\n title: i18n.t('title.service_manager'),\n titleKey: 'title.service_manager',\n fab: 'help',\n helpUrl: 'services',\n },\n },\n {\n path: '/apps/manage',\n name: 'apps',\n component: Apps,\n meta: {\n title: i18n.t('title.manage_apps'),\n titleKey: 'title.manage_apps',\n fab: 'help',\n helpUrl: 'apps',\n },\n },\n\n // end settings\n {\n path: '/dashboard',\n name: 'dashboard',\n component: Dashboard,\n meta: {\n title: i18n.t('title.dashboard'), hasDatePicker: true, titleKey: 'title.dashboard', fab: 'reservation',\n },\n },\n {\n path: '/search',\n name: 'search',\n component: Search,\n meta: { title: i18n.t('title.search'), titleKey: 'title.search' },\n },\n {\n path: '/unread-reservations',\n name: 'unread-reservations',\n component: UnreadReservations,\n meta: { title: i18n.t('title.unread_reservations'), titleKey: 'title.unread_reservations' },\n },\n {\n path: '/report/reservations',\n name: 'reports-reservations',\n component: ReportReservations,\n meta: { title: i18n.t('title.report_reservations'), titleKey: 'title.report_reservations' },\n },\n {\n path: '/report/services',\n name: 'reports-services',\n component: ReportServices,\n meta: { title: i18n.t('title.report_services'), titleKey: 'title.report_services' },\n },\n {\n path: '/report/weekdays',\n name: 'reports-weekdays',\n component: ReportWeekdays,\n meta: { title: i18n.t('title.report_weekdays'), titleKey: 'title.report_weekdays' },\n },\n {\n path: '/report/feedback',\n name: 'reports-feedback',\n component: ReportFeedback,\n meta: { title: i18n.t('title.feedback'), titleKey: 'title.feedback' },\n },\n {\n path: '/report/messages',\n name: 'reports-messages',\n component: ReportMessages,\n meta: { title: i18n.t('title.report_messages'), titleKey: 'title.report_messages' },\n },\n {\n path: '/feedback',\n name: 'feedback',\n component: Feedback,\n meta: { title: i18n.t('title.feedback'), titleKey: 'title.feedback' },\n },\n {\n path: '/pwa-info',\n name: 'pwa-info',\n component: PwaInfo,\n meta: { title: 'PWA Info', titleKey: 'title.pwa_info' },\n },\n ],\n});\n\nrouter.beforeEach((to, from, next) => {\n // redirect to login page if not logged in and trying to access a restricted page\n\n const isSingle = to.meta?.single === true;\n const isPublic = to.meta?.public === true;\n const isLoggedIn = store.getters.isLoggedIn as boolean;\n const isRegistered = store.getters.isRegistered as boolean;\n const isLoaded = store.getters.isLoaded as boolean;\n\n if (isPublic && isSingle) {\n return next();\n }\n\n // not logged in -> login screen\n if (!isPublic && !isLoggedIn && to.path !== '/login') {\n return next('/login');\n }\n\n // logged in but unregistered -> register on login screen\n if (!isPublic && isLoaded && !isRegistered && to.path !== '/login') {\n return next('/login');\n }\n\n if (isSingle) {\n return next();\n }\n\n // logged in -> no login screen\n if (isLoggedIn && isRegistered && isPublic) {\n return next('/');\n }\n\n // payment result\n // eslint-disable-next-line camelcase\n const { payment_intent, setup_intent, invoice } = to.query;\n // eslint-disable-next-line camelcase\n if ((payment_intent || setup_intent || invoice) && to.name !== 'billing') {\n next({ name: 'billing', query: to.query });\n }\n\n return next();\n});\n\nexport default router;\n","/* eslint-disable brace-style */\nimport store from '@/store/store';\nimport AccountSetting from '@/model/AccountSettings';\nimport vuetify from '@/plugins/vuetify';\nimport storage from '@/services/local-storage';\n\nimport { isModelEqualToModel } from '@/model/model-utils';\nimport {\n hourMinFromTimeText, setDateHoursMinutes, dateByAddingDays,\n} from './time-utils';\nimport Timer from './timer';\n\nlet isDarkAllowed = true;\n\nfunction isDark(accountSettings: AccountSetting): { dark?: boolean, next?: Date } {\n const { autoDarkMode, autoDarkModeStart, autoDarkModeEnd } = accountSettings;\n if (!autoDarkMode || !autoDarkModeStart || !autoDarkModeEnd) return { };\n\n const shm = hourMinFromTimeText(autoDarkModeStart);\n const ehm = hourMinFromTimeText(autoDarkModeEnd);\n if (!shm || !ehm) return {};\n\n const today = new Date();\n const start = setDateHoursMinutes(today, shm.h, shm.m);\n const end = setDateHoursMinutes(today, ehm.h, ehm.m);\n\n // same start and end -> dark mode\n if (start.getTime() === end.getTime()) return { dark: true };\n\n // start < end\n if (start.getTime() < end.getTime()) {\n // today < start < end -> LIGHT\n if (today.getTime() < start.getTime()) return { dark: false, next: start };\n\n // start <= today < end -> DARK\n if (today.getTime() < end.getTime()) return { dark: true, next: end };\n\n // start < end <= today -> LIGHT\n if (end.getTime() <= today.getTime()) return { dark: false, next: dateByAddingDays(start, 1) };\n }\n\n // end < start\n else {\n // today < end < start -> dark mode\n if (today.getTime() < end.getTime()) return { dark: true, next: end };\n\n // end <= today < start -> dark mode\n if (today.getTime() < start.getTime()) return { dark: false, next: start };\n\n // end < start <= today -> dark mode\n if (start.getTime() <= today.getTime()) return { dark: true, next: dateByAddingDays(end, 1) };\n }\n\n return {};\n}\n\n// change dark mode using account and schedule next update\nfunction changeDark(accountSettings: AccountSetting) {\n const { dark, next } = isDark(accountSettings);\n console.log('autodarkmode changed: ', dark, next);\n if (dark !== undefined && isDarkAllowed) {\n if (vuetify.framework.theme.dark !== dark) vuetify.framework.theme.dark = dark;\n }\n // eslint-disable-next-line no-use-before-define\n timer.schedule(next);\n}\n\n// change dark mode using account settings upon time change\nconst timer = new Timer(() => {\n changeDark(store.state.settings.accountSettings);\n});\n\n// change dark mode using new account settings upon change\nstore.watch((state) => state.settings.accountSettings, (value, oldValue) => {\n if (isModelEqualToModel(value, oldValue)) return;\n\n changeDark(value);\n});\n\n// change dark mode using stored account settings upon creation\nconst accountSetting = storage.getAccountSetting();\nif (accountSetting) changeDark(accountSetting);\n\n// eslint-disable-next-line import/prefer-default-export\nexport function setDarkAllowed(allow: boolean) {\n if (isDarkAllowed === allow) return;\n isDarkAllowed = allow;\n\n if (!isDarkAllowed) vuetify.framework.theme.dark = false;\n else changeDark(store.state.settings.accountSettings);\n}\n","import store from '@/store/store';\nimport Timer from '@/services/timer';\n\nlet updateResolve: ((result: boolean) => void) | null = null;\nlet updateReject: ((reason?: any) => void) | null = null;\n\nfunction finishUpdatePromise(resultOrReason: any) {\n if (updateResolve === null || updateReject === null) return;\n if (resultOrReason === true) updateResolve(true);\n else if (resultOrReason === false) updateResolve(false);\n else updateReject(resultOrReason);\n updateResolve = null;\n updateReject = null;\n}\n\nconst timer = new Timer(async () => {\n try {\n await store.dispatch('performAutoUpdate');\n finishUpdatePromise(true);\n } catch (e) {\n finishUpdatePromise(e);\n }\n});\n\nfunction scheduleAutoUpdate(nextUpdateDate: Date | null) {\n if (!timer.schedule(nextUpdateDate)) {\n finishUpdatePromise(false);\n return;\n }\n\n store.dispatch('autoUpdateSetScheduled', nextUpdateDate);\n}\n\nexport async function stopAutoUpdates() {\n await store.dispatch('stopAutoUpdate');\n finishUpdatePromise(false);\n timer.schedule(null);\n}\n\nstore.watch((state, rootGetters) => rootGetters.autoUpdateNextDate, (value, oldValue) => {\n if (value === oldValue) return;\n scheduleAutoUpdate(value);\n});\n\nexport async function startAutoUpdates(): Promise {\n const nextUpdateDate = await store.dispatch('startAutoUpdate');\n if (!nextUpdateDate) return false;\n\n scheduleAutoUpdate(nextUpdateDate);\n\n return new Promise((resolve, reject) => { updateResolve = resolve; updateReject = reject; });\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n/* eslint-disable import/prefer-default-export */\nimport {\n Currency, Product, Price, PriceInterval, Customer, PaymentMethod, Subscription, Invoice, SubscriptionStatus, InvoiceStatus,\n NextActionDisplayIBANBankTransferInstructions,\n PaymentMethodType,\n CollectionMethod,\n Discount,\n DiscountDuration,\n PaymentIntent,\n SetupIntent,\n Card,\n SepaDebit,\n IntentStatus,\n PaymentMethodCardBrand,\n InvoiceLine,\n} from '@/api/api-billing';\nimport Country from '@/model/Country';\nimport { sprintf } from 'sprintf-js';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport { BillingInfo, BillingInfoSMSStatus, BillingInfoSubscriptionStatus } from '@/model/Account';\nimport i18n from '@/plugins/i18n';\n\nexport function yearlyAmount(amount: number, interval: string, intervalCount: number|undefined = 1): number {\n let count = 1;\n switch (interval) {\n case PriceInterval.Day: count = 365; break;\n case PriceInterval.Week: count = 52; break;\n case PriceInterval.Month: count = 12; break;\n case PriceInterval.Year: count = 1; break;\n default: break;\n }\n\n count /= (intervalCount || 1);\n\n return amount * count;\n}\n\nexport function yearlyAmountForPrice(p: Price): number {\n return yearlyAmount(p.amount!, p.interval!, p.intervalCount);\n}\n\nexport function billingCurrencyText(currency: string): string {\n return currency.toUpperCase();\n}\n\nexport function billingAmountText(amount: number, currency: string): string {\n const fixedAmount = amount < 0 ? -amount : amount;\n const atext = sprintf('%.2f', fixedAmount / 100);\n\n const sign = amount < 0 ? '−' : '';\n\n if (currency === Currency.EUR) { return `${sign}€ ${atext}`; }\n if (currency === Currency.USD) { return `${sign}$ ${atext}`; }\n if (currency === Currency.GBP) { return `${sign}£ ${atext}`; }\n\n return `${sign} ${atext} ${currency.toUpperCase()}`;\n}\n\nexport function intervalText(pi: {interval?: string, intervalCount?: number}): string {\n let itext = '';\n if (pi.interval === PriceInterval.Month && pi.intervalCount === 3) {\n itext = i18n.tc('label.quarter');\n } else {\n switch (pi.interval) {\n case PriceInterval.Day: itext = i18n.tc('label.day'); break;\n case PriceInterval.Week: itext = i18n.tc('label.week'); break;\n case PriceInterval.Month: itext = i18n.tc('label.month'); break;\n case PriceInterval.Year: itext = i18n.tc('label.year'); break;\n default: itext = pi.interval ?? 'N/A'; break;\n }\n }\n\n // return itext.charAt(0).toUpperCase() + itext.slice(1);\n return itext;\n}\n\nexport function intervalPeriodicallyText(pi: {interval?: string, intervalCount?: number}): string {\n let itext = '';\n if (pi.interval === PriceInterval.Month && pi.intervalCount === 3) {\n itext = i18n.tc('label.quarterly');\n } else {\n switch (pi.interval) {\n case PriceInterval.Day: itext = i18n.tc('label.daily'); break;\n case PriceInterval.Week: itext = i18n.tc('label.weekly'); break;\n case PriceInterval.Month: itext = i18n.tc('label.monthly'); break;\n case PriceInterval.Year: itext = i18n.tc('label.yearly'); break;\n default: itext = pi.interval ?? 'N/A'; break;\n }\n }\n\n // return itext.charAt(0).toUpperCase() + itext.slice(1);\n return itext;\n}\n\n// info\nexport interface CardInfo {\n number: string;\n exp: string;\n brand: string;\n card: Card;\n}\nexport interface SepaDebitInfo {\n number: string;\n country: string;\n bankCode: string;\n branchCode: string;\n generatedFromType: string;\n sepaDebit: SepaDebit;\n}\n\nexport interface PaymentMethodInfo {\n cardInfo: CardInfo;\n sepaDebitInfo: SepaDebitInfo;\n type: string;\n logoSrc: string;\n active: boolean;\n paymentMethod: PaymentMethod;\n}\n\nfunction paymentMethodName(pm: PaymentMethod): string {\n const type = pm.type ?? PaymentMethodType.Unknown;\n const brand = pm.card?.brand ?? PaymentMethodCardBrand.Unknown;\n\n switch (type) {\n case PaymentMethodType.CustomerBalance: return 'Bank Transfer';\n case PaymentMethodType.SepaDebit: return 'SEPA Debit';\n case PaymentMethodType.Card:\n switch (brand) {\n case PaymentMethodCardBrand.Amex: return 'Amex';\n case PaymentMethodCardBrand.Diners: return 'Diners';\n case PaymentMethodCardBrand.Discover: return 'Discover';\n case PaymentMethodCardBrand.JCB: return 'JCB';\n case PaymentMethodCardBrand.Mastercard: return 'Mastercard';\n case PaymentMethodCardBrand.Unionpay: return 'Unionpay';\n case PaymentMethodCardBrand.Visa: return 'Visa';\n default: return 'Unknown';\n }\n case PaymentMethodType.Ideal: return 'iDEAL';\n case PaymentMethodType.Sofort: return 'Sofort';\n case PaymentMethodType.Bancontact: return 'Bancontact';\n default: return 'Unknown';\n }\n}\nfunction paymentMethodLogo(pm: PaymentMethod): string {\n const type = pm.type ?? PaymentMethodType.Unknown;\n const brand = pm.card?.brand ?? PaymentMethodCardBrand.Unknown;\n const genereatedFromType = pm.sepaDebit?.generatedFromType ?? PaymentMethodCardBrand.Unknown;\n\n const fname = ((t, b, gft) => {\n switch (t) {\n case PaymentMethodType.CustomerBalance: return 'sepa';\n case PaymentMethodType.SepaDebit:\n switch (gft) {\n case PaymentMethodType.Ideal: return 'ideal';\n case PaymentMethodType.Sofort: return 'sofort';\n case PaymentMethodType.Bancontact: return 'bancontact';\n default: return 'sepa';\n }\n case PaymentMethodType.Card:\n switch (b) {\n case PaymentMethodCardBrand.Amex: return 'amex';\n case PaymentMethodCardBrand.Diners: return 'diners';\n case PaymentMethodCardBrand.Discover: return 'discover';\n case PaymentMethodCardBrand.JCB: return 'jcb';\n case PaymentMethodCardBrand.Mastercard: return 'mastercard';\n case PaymentMethodCardBrand.Unionpay: return 'unionpay';\n case PaymentMethodCardBrand.Visa: return 'visa';\n default: return 'unknown';\n }\n case PaymentMethodType.Ideal: return 'ideal';\n case PaymentMethodType.Sofort: return 'sofort';\n case PaymentMethodType.Bancontact: return 'bancontact';\n default: return 'unknown';\n }\n })(type, brand, genereatedFromType);\n\n return `/assets/payment-method/${fname}.svg`;\n}\n\nexport function paymentMethodInfo(pm: PaymentMethod): PaymentMethodInfo | null {\n const info = { paymentMethod: pm, active: false, type: pm.type ?? PaymentMethodType.Unknown } as PaymentMethodInfo;\n\n const label = paymentMethodName(pm);\n info.logoSrc = paymentMethodLogo(pm);\n\n if (pm.card) {\n const number = `${label} •••• ${pm.card?.last4!}`;\n const brand = pm.card?.brand ?? PaymentMethodCardBrand.Unknown;\n const exp = `${pm.card?.expMonth!}/${pm.card?.expYear!}`;\n const { card } = pm;\n\n info.cardInfo = {\n number, exp, brand, card,\n };\n }\n\n if (pm.sepaDebit) {\n const number = `${label} •••• ${pm.sepaDebit?.last4!}`;\n const country = pm.sepaDebit.country ?? '';\n const branchCode = pm.sepaDebit.branchCode ?? '';\n const bankCode = pm.sepaDebit.bankCode ?? '';\n const generatedFromType = pm.sepaDebit.generatedFromType ?? '';\n const { sepaDebit } = pm;\n\n info.sepaDebitInfo = {\n number, country, bankCode, branchCode, generatedFromType, sepaDebit,\n };\n }\n\n return info;\n}\n\nexport interface CustomerInfo {\n name?: string;\n street?: string;\n city?: string;\n country?: string;\n balance?: string;\n}\n\nexport function balanceText(c: Customer): string | undefined {\n if (!c.currency) return undefined;\n\n // cash balance amounts by currency\n const balances = new Map();\n c.cashBalances?.forEach((cb) => { if (cb.amount) balances.set(c.currency!, cb.amount!); });\n\n // balance parts\n const parts = [] as string[];\n\n // first customer balance part (credit balance + cash balance)\n const amount = (balances.get(c.currency) ?? 0) - (c.balance ?? 0);\n if (amount) parts.push(billingAmountText(amount, c.currency!));\n\n // remaining cash balances\n balances.forEach((ba, bc) => {\n if (bc === c.currency) return;\n if (ba) parts.push(billingAmountText(ba, bc));\n });\n\n return parts.join(', ');\n}\n\nexport function customerInfo(c: Customer, countryByCode: Map): CustomerInfo | null {\n const { name } = c;\n const street = c.addressLine1;\n const country = countryByCode.get(c.country!)?.name;\n const city = `${c.postalCode} ${c.city}, ${c.state}`;\n // negative balance will decrease the amount due on the customer's next invoice -> show as positive number\n const balance = balanceText(c);\n return {\n name, street, city, country, balance,\n };\n}\n\nexport interface PriceInfo {\n name: string;\n amount: string;\n interval?: string;\n intervalPeriodically?: string;\n quantity?: number;\n price: Price;\n // eslint-disable-next-line no-use-before-define\n discountInfo?: DiscountInfo,\n}\n\nexport function productName(product?: Product) {\n const name = product?.name ?? 'N/A';\n const key = `code.billing_product.${name.toLowerCase().replaceAll(' ', '_')}`;\n const text = i18n.tc(key);\n if (key === text) return name;\n return text;\n}\n\nexport function priceInfo(p: Price): PriceInfo {\n const name = productName(p.product);\n const interval = p.interval ? intervalText(p) : undefined;\n const intervalPeriodically = p.interval ? intervalPeriodicallyText(p) : undefined;\n const amount = billingAmountText(p.amount!, p.currency!);\n const price = p;\n // eslint-disable-next-line no-use-before-define\n const dinfo = p.discount ? discountInfo(p.discount!) : undefined;\n return {\n name, interval, intervalPeriodically, amount, price, discountInfo: dinfo,\n };\n}\n\nexport function priceText(p: Price): string {\n const amount = billingAmountText(p.amount!, p.currency!);\n const name = productName(p.product);\n\n if (p.quantity && p.quantity > 1) return `${p?.quantity!} ${name} (${amount})`;\n return `${name} (${amount})`;\n}\n\nexport function smsPriceInfo(p: Price): PriceInfo {\n const name = productName(p.product);\n const amount = billingAmountText(p.amount!, p.currency!);\n const quantity = p.quantity!;\n const price = p;\n return {\n name, quantity, amount, price,\n };\n}\n\nexport interface SubscriptionInfo {\n name?: string;\n interval?: string;\n amount?: string;\n paidUntil?: string;\n active?: boolean;\n canceled?: boolean;\n awaitingPayment?: boolean;\n ended?: boolean;\n sentInvoice?: boolean;\n subscription?: Subscription;\n scheduled?: {\n startDate?: string;\n name?: string;\n interval?: string;\n billedInterval?: string;\n amount?: string;\n // eslint-disable-next-line no-use-before-define\n discountInfo?: DiscountInfo,\n }\n // eslint-disable-next-line no-use-before-define\n discountInfo?: DiscountInfo,\n}\n\nexport function subscriptionInfo(s: Subscription): SubscriptionInfo {\n const paidUntil = s.paidUntil ? localized.dateText(new Date(s.paidUntil! * 1000))! : undefined;\n const name = productName(s.price?.product);\n const interval = s.price ? intervalText(s.price!) : undefined;\n const amount = s.price ? billingAmountText(s.price!.amount!, s.price!.currency!) : undefined;\n const active = s.status === SubscriptionStatus.Active;\n const ended = s.status === SubscriptionStatus.Ended;\n const canceled = s.status === SubscriptionStatus.Canceled || !!s.canceledAt;\n const awaitingPayment = s.status === SubscriptionStatus.AwaitingPayment;\n const sentInvoice = s.collectionMethod === CollectionMethod.SendInvoice;\n const subscription = s;\n // eslint-disable-next-line no-use-before-define\n const dinfo = s.discount ? discountInfo(s.discount!) : undefined;\n\n const scheduled = s.scheduledStartDate && s.scheduledPrice ? {\n startDate: localized.dateText(new Date(s.scheduledStartDate * 1000))!,\n name: productName(s.scheduledPrice.product),\n interval: intervalText(s.scheduledPrice),\n amount: billingAmountText(s.scheduledPrice.amount!, s.scheduledPrice.currency!),\n // eslint-disable-next-line no-use-before-define\n discountInfo: s.scheduledDiscount ? discountInfo(s.scheduledDiscount) : undefined,\n } : undefined;\n\n return {\n name,\n interval,\n amount,\n paidUntil,\n canceled,\n awaitingPayment,\n active,\n ended,\n sentInvoice,\n subscription,\n discountInfo: dinfo,\n scheduled,\n };\n}\n\nexport interface InvoiceLineItemInfo {\n description: string;\n amount: string;\n amountNumber: number;\n priceInfo?: PriceInfo;\n // eslint-disable-next-line no-use-before-define\n discountInfos: DiscountInfo[];\n}\nexport interface InvoiceInfo {\n number: string;\n total: string;\n appliedBalance: string | undefined;\n amountDue: string;\n amountDueNumber: number;\n created: string;\n currency: string;\n color: string;\n open: boolean;\n paid: boolean;\n processing: boolean;\n status: string;\n items: InvoiceLineItemInfo[]\n invoice: Invoice;\n tax: string | undefined;\n // error: string | undefined;\n description: string;\n // eslint-disable-next-line no-use-before-define\n discountInfo?: DiscountInfo,\n paymentStatus: string;\n dueDate?: string;\n futureProrationDate?: string;\n}\n\nexport interface BankTransferInfo {\n\n}\n\nfunction invoiceColor(i: Invoice): string {\n const paid = i.status === InvoiceStatus.Paid;\n const open = i.status === InvoiceStatus.Open || i.status === InvoiceStatus.Uncollectible;\n const processing = i.paymentIntent?.status === IntentStatus.Processing;\n\n if (paid) return 'success';\n if (open && processing) return 'gray';\n if (open) return 'error';\n return '';\n}\n\nexport interface IntentInfo {\n error?: string;\n mandateUrl?: string;\n mandateReference?: string;\n intent: PaymentIntent | SetupIntent;\n isSetup: boolean;\n}\n\nexport interface IntentError {\n message?: string;\n type?: string;\n code?: string;\n declineCode?: string;\n}\n\nexport function intentErrorText(error: IntentError): string | undefined {\n if (!error.type) return undefined;\n\n if (error.type === 'validation_error') return 'Validation failed';\n if (error.type === 'card_error') {\n if (error.code === 'card_declined') {\n if (error.declineCode === 'generic_decline') return 'Your card was declined';\n if (error.declineCode === 'insufficient_funds') return 'Your card was declined. Reason: insufficient funds';\n if (error.declineCode === 'lost_card') return 'Your card was declined. Reason: card is reported as lost';\n if (error.declineCode === 'stolen_card') return 'Your card was declined. Reason: card is reported as stolen';\n if (error.declineCode === 'card_velocity_exceeded') return 'Your card was declined. Reason: balance or credit limit or amount limit exceeded';\n\n if (error.declineCode === 'expired_card') return 'Your card was declined. Reason: card expired';\n if (error.declineCode === 'incorrect_cvc') return 'Your card was declined. Reason: incorrect cvc';\n if (error.declineCode === 'incorrect_number') return 'Your card was declined. Reason: incorrect number';\n if (error.declineCode === 'processing_error') return 'Your card was declined. Reason: processing error';\n\n return 'Your card was declined';\n }\n\n if (error.declineCode === 'generic_decline') return 'Your payment was declined';\n\n if (error.code === 'expired_card') return 'Your card was declined. Reason: card expired';\n if (error.code === 'incorrect_cvc') return 'Your card was declined. Reason: incorrect cvc';\n if (error.code === 'incorrect_number') return 'Your card was declined. Reason: incorrect number';\n if (error.code === 'processing_error') return 'Your payment was declined. Reason: processing error';\n\n // message only for card errors\n if (error.message) return error.message;\n }\n\n return 'Operation failed';\n}\n\nfunction errorFromIntent(intent: PaymentIntent | SetupIntent): IntentError | undefined {\n const error = {\n type: intent.lastErrorType,\n message: intent.lastError,\n code: intent.lastErrorCode,\n declineCode: intent.lastDeclineCode,\n };\n\n if (error.type) return error;\n\n if (\n // all ok\n intent.status === IntentStatus.Succeeded\n || (\n // customer balance\n (intent.status === IntentStatus.RequiresAction\n || intent.status === IntentStatus.RequiresPaymentMethod\n || intent.status === IntentStatus.RequiresConfirmation\n ) && (intent as PaymentIntent)?.nextAction)\n // sepa\n || intent.status === IntentStatus.Processing) {\n return undefined;\n }\n\n return {\n type: 'operation_failed',\n };\n}\n\nexport function intentInfo(i: PaymentIntent | SetupIntent): IntentInfo {\n const intent = i;\n const ie = errorFromIntent(i);\n const error = ie ? intentErrorText(ie) : undefined;\n const mandateUrl = i.mandate?.url;\n const mandateReference = i.mandate?.reference;\n const isSetup = (i as PaymentIntent).amount === undefined && !i.ID?.startsWith('pi_');\n\n return {\n error,\n mandateReference,\n mandateUrl,\n intent,\n isSetup,\n };\n}\n\nexport function effectiveAmountDue(i: Invoice, p?: { balance?: number, cashBalance?: number }): { amountDue: number, appliedBalance: number } {\n if (i.status !== InvoiceStatus.Draft) {\n // invoice balance from invoice (if finalized)\n return {\n amountDue: i.amountDue ?? 0,\n appliedBalance: (i.startingBalance ?? 0) - (i.endingBalance ?? 0),\n };\n }\n\n if (i.subscriptionProrationInFuture) {\n // draft invoice billed in future -> display no balance change\n return {\n amountDue: i.amountDue ?? 0,\n appliedBalance: 0,\n };\n }\n\n // draft invoice billed now - estimate balance change\n\n // initial amount due\n let amountDue = i.total && i.total > 0 ? i.total : 0;\n let appliedBalance = 0;\n\n // draft invoice -> invoice balance from params\n if (p?.balance && i.status === InvoiceStatus.Draft) {\n const applied = amountDue + p.balance < 0 ? -amountDue : p.balance;\n appliedBalance = applied;\n amountDue += applied;\n }\n\n // customer balance invoice -> cash balance from params\n if (p?.cashBalance && i.status === InvoiceStatus.Draft) {\n const applied = amountDue + p.cashBalance <= 0 ? -amountDue : 0; // whole amount or nothing\n appliedBalance += applied;\n amountDue += applied;\n }\n\n return { amountDue, appliedBalance };\n}\n\nexport function invoiceLineItemInfo(il: InvoiceLine): InvoiceLineItemInfo {\n const amountNumber = il.amount!;\n const amount = billingAmountText(il.amount!, il.currency!);\n const quantity = il.quantity ?? 1;\n let pinfo = undefined as PriceInfo | undefined;\n\n let description = il.description!;\n if (il.price) {\n pinfo = priceInfo(il.price);\n if (il.price.quantity && il.price.quantity > 1) {\n description = `${il.price.quantity!} ${productName(il.price.product)}`;\n } else {\n description = `${productName(il.price.product)}`;\n }\n }\n if (quantity > 1) description = `${quantity}x - ${description}`;\n\n // eslint-disable-next-line no-use-before-define\n const discountInfos = (il.discounts ?? []).map((d) => discountInfo(d));\n\n return {\n description, amount, amountNumber, priceInfo: pinfo, discountInfos,\n };\n}\n\nexport function invoiceInfo(i: Invoice, p?: { balance?: number, cashBalance?: number }): InvoiceInfo {\n const items = (i.lines ?? []).map((il) => invoiceLineItemInfo(il));\n const total = billingAmountText(i.total!, i.currency!);\n const created = localized.dateText(new Date(i.created! * 1000))!;\n const number = i.number!;\n const currency = i.currency!;\n const color = invoiceColor(i);\n const open = i.status === InvoiceStatus.Open || i.status === InvoiceStatus.Uncollectible;\n const paid = i.status === InvoiceStatus.Paid;\n const processing = i.paymentIntent?.status === IntentStatus.Processing;\n const status = open && processing ? IntentStatus.Processing : i.status!;\n const error = i.paymentIntent?.lastError ?? undefined;\n const tax = i.tax ? billingAmountText(i.tax!, i.currency!) : undefined;\n const description = items.flatMap((item) => (item.amountNumber > 0 ? item.description : [])).join(', ');\n\n const dueDate = i.subscriptionProrationInFuture || !i.dueDate ? undefined : localized.dateText(new Date(i.dueDate! * 1000))!;\n const futureProrationDate = i.subscriptionProrationInFuture ? localized.dateText(new Date(i.subscriptionProrationDate! * 1000))! : undefined;\n\n const invoice = i;\n\n // simulate apply balances (negative values = customer has credit)\n const { amountDue: amountDueNumber, appliedBalance: appliedBalanceNumber } = effectiveAmountDue(i, p);\n\n // negative values = customer has credit -> display as positive value\n const appliedBalance = appliedBalanceNumber ? billingAmountText(-appliedBalanceNumber, i.currency!) : undefined;\n const amountDue = billingAmountText(amountDueNumber, i.currency!);\n\n // eslint-disable-next-line no-use-before-define\n const dinfo = i.discount ? discountInfo(i.discount!) : undefined;\n\n // extended status\n const paymentStatus = i.paymentIntent?.status ?? 'none';\n\n return {\n number,\n total,\n appliedBalance,\n amountDueNumber,\n amountDue,\n created,\n currency,\n color,\n open,\n paid,\n processing,\n status,\n items,\n tax,\n // error,\n description,\n invoice,\n discountInfo: dinfo,\n paymentStatus,\n dueDate,\n futureProrationDate,\n };\n}\n\n// discount info\nexport interface DiscountInfo {\n name? :string;\n\n start? :string;\n end? :string;\n percentOff? :string;\n amountOff? :string;\n\n originalAmount? :string;\n discountedAmount? :string;\n discountAmount? :string;\n\n off? :string;\n duration? :string;\n validUntil? :string;\n\n offerExpiresDescription? :string;\n validUntilOrDurationDescription? :string;\n shortDescription? :string;\n longDescription? :string;\n\n discount? :Discount;\n}\n\nfunction dicountOff(d: Discount): string | undefined {\n const percentOff = d.percentOff ? `${d.percentOff}%` : undefined;\n const amountOff = d.amountOff && d.currency && d.amountOff[d.currency ?? ''] ? billingAmountText(d.amountOff![d.currency!], d.currency!) : undefined;\n const off = i18n.t('label.discount_amount_or_percent_off', [percentOff ?? amountOff]) as string;\n return off;\n}\n\nfunction dicountDuration(d: Discount): string | undefined {\n switch (d.duration) {\n case DiscountDuration.Once: return undefined;\n case DiscountDuration.Forever: return undefined;\n case DiscountDuration.Repeating: return i18n.t('label.discount_valid_for_x_months', [d.durationInMonths]) as string;\n default: return undefined;\n }\n}\n\nfunction dicountValidUntil(d: Discount): string | undefined {\n if (!d.end) return undefined;\n return i18n.t('label.discount_valid_until', [localized.shortDateText(new Date(d.end! * 1000))]) as string;\n}\n\nfunction discountValidUntilDescription(d: Discount): string | undefined {\n if (!d.end) return undefined;\n return i18n.t('label.discount_validity_until', [localized.dateText(new Date(d.end! * 1000))]) as string;\n}\n\nfunction discountDurationDescription(d: Discount): string | undefined {\n switch (d.duration) {\n case DiscountDuration.Once: return i18n.t('label.discount_applicable_once') as string;\n case DiscountDuration.Forever: return i18n.t('label.discount_validity_until_subscription_active') as string;\n case DiscountDuration.Repeating: return i18n.t('label.discount_validity_for_x_months', [d.durationInMonths]) as string;\n default: return undefined;\n }\n}\n\nfunction discoutOfferExpiresDescription(d: Discount): string | undefined {\n if (!d.expiresAt) return undefined;\n return i18n.t('label.discount_offer_expires_on', [localized.dateText(new Date(d.expiresAt! * 1000))]) as string;\n}\n\nfunction discountShortDescription(d: Discount): string {\n const name = d.name ?? 'N/A';\n const off = dicountOff(d);\n return `${name}: ${off}`;\n}\n\nfunction discountLongDescription(d: Discount): string {\n const name = d.name ?? 'N/A';\n const off = dicountOff(d);\n const duration = dicountDuration(d);\n const validUntil = dicountValidUntil(d);\n\n const validUntilOrDuration = validUntil ?? duration;\n return `${name}: ${off} ${validUntil ?? duration}`;\n}\n\nexport function discountInfo(d: Discount, cur?: string): DiscountInfo {\n const name = d.name ?? 'N/A';\n\n const start = d.start ? localized.dateText(new Date(d.start! * 1000))! : undefined;\n const end = d.end ? localized.dateText(new Date(d.end! * 1000))! : undefined;\n const percentOff = d.percentOff ? `${d.percentOff}%` : undefined;\n const amountOff = d.amountOff && d.currency && d.amountOff[d.currency ?? ''] ? billingAmountText(d.amountOff![d.currency!], d.currency!) : undefined;\n\n const originalAmount = d.originalAmount ? billingAmountText(d.originalAmount, d.currency!) : undefined;\n const discountedAmount = d.discountedAmount ? billingAmountText(d.discountedAmount, d.currency!) : undefined;\n const discountAmount = d.discountAmount ? billingAmountText(-d.discountAmount, d.currency!) : undefined;\n\n const off = dicountOff(d);\n const duration = dicountDuration(d);\n const validUntil = dicountValidUntil(d);\n\n const offerExpiresDescription = discoutOfferExpiresDescription(d);\n const durationDescription = discountDurationDescription(d);\n const validUntilDescription = discountValidUntilDescription(d);\n const shortDescription = discountShortDescription(d);\n const longDescription = discountLongDescription(d);\n\n const discount = d;\n\n return {\n name,\n\n start,\n end,\n percentOff,\n amountOff,\n\n originalAmount,\n discountedAmount,\n discountAmount,\n\n off,\n duration,\n validUntil,\n\n offerExpiresDescription,\n validUntilOrDurationDescription: validUntilDescription ?? durationDescription,\n shortDescription,\n longDescription,\n\n discount,\n };\n}\n\n// subscription actions\nexport interface SubscriptionActions {\n subscribe?: boolean,\n upgrade?: boolean,\n modify?: boolean,\n cancel?: boolean,\n delete?: boolean,\n}\n\nexport function subscriptionActions(s?: Subscription | null, maxTierLevel = 0): SubscriptionActions {\n const status = (s?.status ?? SubscriptionStatus.None) as SubscriptionStatus;\n const upgrade = (s?.price?.product?.subscriptionTierLevel ?? 0) < maxTierLevel;\n\n switch (status) {\n case SubscriptionStatus.None:\n case SubscriptionStatus.Ended:\n case SubscriptionStatus.Canceled:\n return { subscribe: true };\n\n case SubscriptionStatus.AwaitingPayment:\n case SubscriptionStatus.Active:\n if (s?.canceledAt) return { subscribe: true };\n return { upgrade, cancel: true };\n\n default: return {};\n }\n}\n\nconst ActiveSubscriptionStatuses = [\n SubscriptionStatus.Active,\n SubscriptionStatus.AwaitingPayment,\n SubscriptionStatus.Canceled,\n];\n\nexport function isSubscriptionActive(s?: Subscription | null): boolean {\n return ActiveSubscriptionStatuses.includes(s?.status ?? SubscriptionStatus.None);\n}\n\nexport function subscriptionUpgradableLevel(s?: Subscription): number {\n const status = (s?.status ?? SubscriptionStatus.None) as SubscriptionStatus;\n switch (status) {\n case SubscriptionStatus.AwaitingPayment:\n case SubscriptionStatus.Active:\n if (s?.canceledAt) return 0;\n return s?.price?.product?.subscriptionTierLevel ?? 0;\n default: return 0;\n }\n}\n\n// currencies\nexport function preferedCountryCurrency(country?: string): string | null {\n if (!country) return null;\n\n const eur = [\n // EU\n 'BE', // Belgium\n 'GR', // Greece\n 'LT', // Lithuania\n 'PT', // Portugal\n\n 'BG', // Bulgaria\n 'ES', // Spain\n 'LU', // Luxembourg\n 'RO', // Romania\n\n 'CZ', // Czechia\n 'FR', // France\n 'HU', // Hungary\n 'SI', // Slovenia\n\n 'DK', // Denmark\n 'HR', // Croatia\n 'MT', // Matla\n 'SK', // Slovakia\n\n 'DE', // Germany\n 'IT', // Italy\n 'NL', // Netherlands\n 'FI', // Finland\n\n 'EE', // Estonia\n 'CY', // Cyprus\n 'AT', // Austria\n 'SE', // Sweden\n\n 'IE', // Ireland\n 'LV', // Latvia\n 'PL', // Poland\n\n // European Free Trade Association(EFTA)\n 'IS', // Iceland\n 'NO', // Norway\n 'LI', // Liechtenstein\n 'CH', // Switzerland\n 'GB', // United Kingdom\n\n // EU candidate countries\n 'ME', // Montenegro\n 'MK', // North Macedonia\n 'AL', // Albania\n 'RS', // Serbia\n 'TR', // Turkey\n // 'CS', // 'Serbia and Montenegro'\n\n 'BA', // Bosnia and Herzegovina\n // 'XK', // Kosovo\n ];\n\n const gbp = [\n // 'IE', // Ireland\n 'GB', // United Kingdom\n ];\n\n const chf = [\n 'CH', // Switzerland\n ];\n\n // test\n // [...eur, ...gbp].forEach((cc) => {\n // // eslint-disable-next-line @typescript-eslint/no-shadow\n // const country = countries.find((c) => c.code === cc);\n // console.log('Country: ', country?.code, country?.name);\n // });\n\n if (gbp.includes(country)) return 'gpb';\n if (chf.includes(country)) return 'chf';\n if (eur.includes(country)) return 'eur';\n return 'usd';\n}\n\nexport function isEUCountry(country?: string): boolean | null {\n if (!country) return null;\n\n const eu = [\n // EU\n 'BE', // Belgium\n 'GR', // Greece\n 'LT', // Lithuania\n 'PT', // Portugal\n\n 'BG', // Bulgaria\n 'ES', // Spain\n 'LU', // Luxembourg\n 'RO', // Romania\n\n 'CZ', // Czechia\n 'FR', // France\n 'HU', // Hungary\n 'SI', // Slovenia\n\n 'DK', // Denmark\n 'HR', // Croatia\n 'MT', // Matla\n 'SK', // Slovakia\n\n 'DE', // Germany\n 'IT', // Italy\n 'NL', // Netherlands\n 'FI', // Finland\n\n 'EE', // Estonia\n 'CY', // Cyprus\n 'AT', // Austria\n 'SE', // Sweden\n\n 'IE', // Ireland\n 'LV', // Latvia\n 'PL', // Poland\n ];\n\n return eu.includes(country);\n}\n\nexport function isOriginCountry(country?: string): boolean | null {\n if (!country) return null;\n return country === 'NL';\n}\n\nexport function isCountryWithStates(country?: string): boolean | null {\n if (!country) return null;\n return country === 'US';\n}\n\nexport interface WarningBarInfo {\n infoKey: string,\n navKey: string,\n navLinkKey: string,\n buttonKey: string,\n extraText?: string,\n}\n\nexport function isSubWarningBarInfo(billingInfo?: BillingInfo) {\n return ![\n BillingInfoSubscriptionStatus.VIP,\n BillingInfoSubscriptionStatus.TrialActive,\n BillingInfoSubscriptionStatus.SubActive,\n ].includes(billingInfo?.subStatus ?? BillingInfoSubscriptionStatus.None);\n}\n\nexport function subWarningBarInfo(\n billingInfo?: BillingInfo,\n billingAllowed = true,\n compact = false,\n): WarningBarInfo | null {\n if (!billingInfo) return null;\n\n console.log('warningText: billingInfo=', billingInfo);\n\n if ([BillingInfoSubscriptionStatus.VIP,\n BillingInfoSubscriptionStatus.TrialActive,\n BillingInfoSubscriptionStatus.SubActive,\n ].includes(billingInfo?.subStatus ?? BillingInfoSubscriptionStatus.None)) return null;\n\n const trialExpText = compact\n ? localized.veryShortDateText(billingInfo?.trialExpDate ?? null) ?? 'N/A'\n : localized.dateText(billingInfo?.trialExpDate ?? null) ?? 'N/A';\n\n const subExpText = compact\n ? localized.veryShortDateText(billingInfo.subExpDate ?? null) ?? 'N/A'\n : localized.dateText(billingInfo.subExpDate ?? null) ?? 'N/A';\n\n let extraText = 'N/A';\n\n let infoKey = '';\n let navKey = 'message.billing_warning_subscribe_navigation';\n const navLinkKey = 'message.billing_warning_subscribe_navigation_link';\n const buttonKey = 'message.billing_warning_review_subscription';\n\n if (billingInfo.subStatus === BillingInfoSubscriptionStatus.TrialWillExpire) {\n infoKey = 'message.billing_warning_trial_will_expire';\n extraText = trialExpText;\n } else if (billingInfo.subStatus === BillingInfoSubscriptionStatus.TrialExpired) {\n infoKey = 'message.billing_warning_trial_expired';\n extraText = trialExpText;\n } else if (\n billingInfo.subStatus === BillingInfoSubscriptionStatus.SubWillExpire\n || billingInfo.subStatus === BillingInfoSubscriptionStatus.SubWillExpirePayment) {\n infoKey = 'message.billing_warning_subscription_will_expire';\n extraText = subExpText;\n } else if (billingInfo.subStatus === BillingInfoSubscriptionStatus.SubExpired) {\n infoKey = 'message.billing_warning_subscription_expired';\n extraText = subExpText;\n } else if (billingInfo.subStatus === BillingInfoSubscriptionStatus.SubExpiredPayment) {\n infoKey = 'message.billing_warning_subscription_expired_payment';\n extraText = subExpText;\n } else {\n infoKey = 'message.billing_warning_no_subscription';\n }\n\n if (!billingAllowed) {\n navKey = 'message.billing_warning_billing_navigation_notallowed';\n }\n\n if (compact) infoKey = `${infoKey}_compact`;\n\n return {\n infoKey, navKey, navLinkKey, buttonKey, extraText,\n };\n}\n\nexport function isSMSWarningBarInfo(billingInfo?: BillingInfo) {\n return ![\n BillingInfoSMSStatus.VIP,\n BillingInfoSMSStatus.None,\n BillingInfoSMSStatus.Active,\n ].includes(billingInfo?.smsStatus ?? BillingInfoSMSStatus.None);\n}\n\nexport function smsWarningBarInfo(\n billingInfo?: BillingInfo,\n billingAllowed = true,\n compact = false,\n): WarningBarInfo | null {\n if (!billingInfo) return null;\n\n const extraText = String(billingInfo.smsBalance);\n\n let infoKey = '';\n let navKey = 'message.billing_warning_sms_navigation';\n const navLinkKey = 'message.billing_warning_sms_navigation_link';\n const buttonKey = 'message.billing_warning_review_sms';\n\n if (\n billingInfo.smsStatus === BillingInfoSMSStatus.VIP\n || billingInfo.smsStatus === BillingInfoSMSStatus.Active\n || billingInfo.smsStatus === BillingInfoSMSStatus.None\n || billingInfo.smsStatus === BillingInfoSMSStatus.PaymentError // handled by payment warning\n ) {\n return null;\n } if (billingInfo.smsStatus === BillingInfoSMSStatus.LowBalance) {\n infoKey = 'message.billing_warning_sms_low_balance';\n } else if (billingInfo.smsStatus === BillingInfoSMSStatus.ZeroBalance) {\n infoKey = 'message.billing_warning_sms_zero_balance';\n } else {\n return null;\n }\n\n if (!billingAllowed) {\n navKey = 'message.billing_warning_billing_navigation_notallowed';\n }\n\n return {\n infoKey, navKey, navLinkKey, buttonKey, extraText,\n };\n}\n\nexport function isPaymentWarningBarInfo(billingInfo?: BillingInfo) {\n return BillingInfoSMSStatus.PaymentError === billingInfo?.smsStatus;\n}\n\nexport function paymentWarningBarInfo(\n billingInfo?: BillingInfo,\n billingAllowed = true,\n compact = false,\n): WarningBarInfo | null {\n if (!billingInfo) return null;\n if (billingInfo.smsStatus !== BillingInfoSMSStatus.PaymentError) return null;\n\n const infoKey = 'message.billing_warning_payment_error';\n let navKey = 'message.billing_warning_payment_error_navigation';\n const navLinkKey = 'message.billing_warning_payment_error_navigation_link';\n const buttonKey = 'message.billing_warning_review_payment';\n\n if (!billingAllowed) {\n navKey = 'message.billing_warning_billing_navigation_notallowed';\n }\n\n return {\n infoKey, navKey, navLinkKey, buttonKey,\n };\n}\n\n// billing alert info\nexport interface AlertInfo {\n message: string,\n type: string,\n color?: string,\n buttons: {\n text: string,\n color: string,\n action: () => void,\n }[]\n}\n\n// vat validation\nexport function validateVatNumberFormat(number: string): boolean {\n // fix number\n let n = number;\n n = n.replace(/ /g, '');\n n = n.replace(/\\./g, '');\n n = n.replace(/-/g, '');\n\n // validate number format\n const patterns = new Map([\n ['AT', 'U[A-Z0-9]{8}'],\n ['BE', '(0[0-9]{9}|[0-9]{10})'],\n ['BG', '[0-9]{9,10}'],\n // ['CH', '(?:E(?:-| )[0-9]{3}(?:\\.| )[0-9]{3}(?:\\.| )[0-9]{3}( MWST)?|E[0-9]{9}(?:MWST)?)'],\n ['CH', '(?:E(?:-| )[0-9]{3}(?:.| )[0-9]{3}(?:.| )[0-9]{3}( MWST)?|E[0-9]{9}(?:MWST)?)'],\n ['CY', '[0-9]{8}[A-Z]'],\n ['CZ', '[0-9]{8,10}'],\n ['DE', '[0-9]{9}'],\n ['DK', '[0-9]{8}'],\n ['EE', '[0-9]{9}'],\n ['EL', '[0-9]{9}'],\n ['ES', '[A-Z][0-9]{7}[A-Z]|[0-9]{8}[A-Z]|[A-Z][0-9]{8}'],\n ['FI', '[0-9]{8}'],\n ['FR', '([A-Z]{2}|[0-9]{2})[0-9]{9}'],\n ['GB', '[0-9]{9}|[0-9]{12}|(GD|HA)[0-9]{3}'],\n ['HR', '[0-9]{11}'],\n ['HU', '[0-9]{8}'],\n ['IE', '[A-Z0-9]{7}[A-Z]|[A-Z0-9]{7}[A-W][A-I]'],\n ['IT', '[0-9]{11}'],\n ['LT', '([0-9]{9}|[0-9]{12})'],\n ['LU', '[0-9]{8}'],\n ['LV', '[0-9]{11}'],\n ['MT', '[0-9]{8}'],\n ['NL', '[0-9]{9}B[0-9]{2}'],\n ['PL', '[0-9]{10}'],\n ['PT', '[0-9]{9}'],\n ['RO', '[0-9]{2,10}'],\n ['SE', '[0-9]{12}'],\n ['SI', '[0-9]{8}'],\n ['SK', '[0-9]{10}'],\n ]);\n\n if (n.length < 3) {\n return false;\n }\n\n const un = n.toUpperCase();\n const pattern = patterns.get(un.slice(0, 2));\n if (!pattern) {\n return false;\n }\n\n return new RegExp(`^${pattern}$`).test(un.slice(2)); // added start and end of string anchors\n}\n\nexport interface BankTransferInstructionsInfo {\n amountRemaining?: string;\n reference?: string;\n accountHolderName?: string;\n BIC?: string;\n IBAN?: string;\n formattedIBAN?: string;\n}\n\nfunction formatIBAN(iban: string): string {\n return iban.replace(/.{4}/g, (a) => `${a} `);\n}\n\nexport function bankTransferInstructionsInfo(i: NextActionDisplayIBANBankTransferInstructions): BankTransferInstructionsInfo {\n const amountRemaining = billingAmountText(i.amountRemaining!, i.currency!);\n const {\n reference, accountHolderName, BIC, IBAN,\n } = i;\n\n const formattedIBAN = IBAN ? formatIBAN(IBAN) : undefined;\n\n return {\n amountRemaining,\n reference,\n accountHolderName,\n BIC,\n IBAN,\n formattedIBAN,\n };\n}\n\nexport function toDTOCustomer(bc: Customer): Customer {\n const {\n name, email, city, country, addressLine1, addressLine2, postalCode, state, vatNumber, locale,\n } = { ...bc };\n return {\n name, email, city, country, addressLine1, addressLine2, postalCode, state, vatNumber, locale,\n };\n}\n\nexport function pricesForProductAndCurrency(product?: Product, currency?: string): Price[] {\n if (!product?.prices || product?.prices.length === 0 || !currency) return [];\n\n const prices: Price[] = [];\n\n // fill prices\n product.prices.forEach((price) => {\n if (price.currency === currency) prices.push(price);\n });\n\n // sort prices by amount\n prices.sort((p1, p2) => p1.amount! - p2.amount!);\n\n return prices;\n}\n\n// subscription price info\nexport interface SubscriptionPriceInfo {\n name: string,\n interval?: string,\n\n amount: string,\n originalAmount?: string,\n\n monthlyAmount: string,\n originalMonthlyAmount?: string,\n\n price: Price,\n discountInfo?: DiscountInfo,\n}\n\nexport function subscriptionPriceInfo(p: Price): SubscriptionPriceInfo {\n const {\n amount, name, interval, discountInfo: dinfo,\n } = priceInfo(p)!;\n\n const yearly = yearlyAmount(p.discount?.discountedAmount ?? p.amount!, p.interval!, p.intervalCount);\n const originalYearly = yearlyAmount(p.discount?.originalAmount ?? p.amount!, p.interval!, p.intervalCount);\n\n const monthly = yearly / 12;\n const originalMonthly = originalYearly > yearly ? originalYearly / 12 : undefined;\n const info = {\n name,\n interval,\n\n amount: dinfo?.discountedAmount ?? amount,\n originalAmount: dinfo?.originalAmount,\n monthlyAmount: billingAmountText(monthly, p.currency!),\n originalMonthlyAmount: originalMonthly ? billingAmountText(originalMonthly, p.currency!) : undefined,\n\n price: p,\n discountInfo: dinfo,\n };\n return info;\n}\n\nexport function emptySubscriptionPriceInfo(): SubscriptionPriceInfo {\n return {\n name: '-',\n amount: '-',\n monthlyAmount: '-',\n price: {},\n };\n}\n\nexport function productPriceWithInterval(p: Product, currency: string, interval = '', intervalCount = 0) {\n const prices = pricesForProductAndCurrency(p, currency);\n if (!prices || prices.length === 0) return undefined;\n const price = prices.find((pp) => pp.interval === interval && pp.intervalCount === intervalCount);\n return price;\n}\n\nexport function maxSubscriptionTierLevel(products: Product[]): number {\n return products.reduce((l, p) => (p.subscriptionTierLevel ?? l < 0 ? p.subscriptionTierLevel ?? 0 : l), 0);\n}\n\nexport interface SubscriptionInterval {\n interval: string\n intervalCount: number\n intervalText: string\n}\n\nexport function sortedSubscriptionIntervals(products: Product[], currency: string): SubscriptionInterval[] {\n const imap = new Map();\n\n // map no of payments in a year -> interval\n products.forEach((p) => {\n const prices = pricesForProductAndCurrency(p, currency);\n prices.forEach((pp) => {\n if (!pp.interval || !pp.intervalCount) return;\n const { interval, intervalCount } = pp;\n const text = intervalPeriodicallyText(pp);\n imap.set(yearlyAmount(1, interval, intervalCount), {\n interval, intervalCount, intervalText: text,\n });\n });\n });\n\n // sort by no of payments in desc. order\n const sortedIntervals = Array.from(imap.entries()).sort((e1, e2) => e2[0] - e1[0]).map((e) => e[1]);\n\n return sortedIntervals;\n}\nexport function fixedPaymentInfo(info: string): string {\n const matched = info.match(/^(\\d+)[\\\\.,](\\d?\\d?) (\\w{3})$/);\n if (matched && matched?.length === 4) {\n // const amount = parseInt(matched[1] + matched[2], 10);\n const amount = parseInt(matched[1] + matched[2], 10);\n const currency = matched[3].toLowerCase();\n if (amount > 0) return billingAmountText(amount, currency);\n }\n\n return info;\n}\n","export function parseColor(color: string): number[] {\n const R = parseInt(color.substring(1, 3), 16);\n const G = parseInt(color.substring(3, 5), 16);\n const B = parseInt(color.substring(5, 7), 16);\n return [R, G, B];\n}\n\nexport function darkenColor(color: string, val:number): string {\n const rgb = parseColor(color);\n\n const R = Math.min(Math.max(rgb[0] - val, 0), 255);\n const G = Math.min(Math.max(rgb[1] - val, 0), 255);\n const B = Math.min(Math.max(rgb[2] - val, 0), 255);\n\n const RR = R.toString(16).padStart(2, '0');\n const GG = G.toString(16).padStart(2, '0');\n const BB = B.toString(16).padStart(2, '0');\n return `#${RR}${GG}${BB}`;\n}\n\nexport function contrastForColor(color: string): string {\n const rgb = parseColor(color);\n const brightness = Math.round(((rgb[0] * 299) + (rgb[1] * 587) + (rgb[2] * 114)) / 1000);\n return (brightness > 130) ? '#000000' : '#FFFFFF';\n}\n","export function strcmp(s1: string, s2: string): number {\n return s1.localeCompare(s2);\n}\n\nexport function findLast(array: Array, predicate: (value: T, index: number, obj: T[]) => boolean): T | undefined {\n let l = array.length;\n while (l) {\n l -= 1;\n if (predicate(array[l], l, array)) { return array[l]; }\n }\n return undefined;\n}\n\nexport function findLastIndex(array: Array, predicate: (value: T, index: number, obj: T[]) => boolean): number {\n let l = array.length;\n while (l) {\n l -= 1;\n if (predicate(array[l], l, array)) { return l; }\n }\n return -1;\n}\n\nexport function clamp(number: number, lower: number | undefined, upper: number | undefined) {\n let cnumber = number;\n if (upper !== undefined) {\n cnumber = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n cnumber = number >= lower ? number : lower;\n }\n return cnumber;\n}\n","export const DEFAULT_PARTY_SIZE = 2; // default party size\nexport const DEFAULT_TAB_DURATION = 2.5 * 60; // default tab duration in minutes\n\nexport const MIN_BEGIN_TIME = '06:00'; // minimum reservation start time\nexport const MAX_BEGIN_TIME = '23:45'; // maximum reservation start time\nexport const MAX_END_TIME = '05:00'; // minimum reservation end time (the next day)\n\nexport const DEFAULT_SPLIT_LUNCH_DINNER_TIME = '14:00'; // default lunch/dinner split time\n\nexport const DEFAULT_TIMETABLE_START_TIME = '10:00'; // maximum start time for timetable\nexport const DEFAULT_TIMETABLE_END_TIME = '18:00'; // minimum end time for timetable\n\nexport const WIDGET_DOMAIN = 'guestplan.io'; // widget domain\n\nexport const SERVICE_WIDGET_DOMAIN = 'widget.guestplan.com'; // widget domain\n\nexport function hostedWidgetURL(p: {\n subdomain?: string, apiKey?: string, serviceCode?: string, locale?: string,\n}): string | undefined {\n if (p.apiKey && p.serviceCode) {\n // widget with service\n let url = `https://${SERVICE_WIDGET_DOMAIN}/?id=${p.serviceCode}0${p.apiKey}`;\n if (p.locale) url = `${url}&locale=${p.locale}`;\n return url;\n }\n\n if (p.subdomain) {\n // widget with custom subdomain\n return `https://${p.subdomain}.${WIDGET_DOMAIN}`;\n }\n\n if (p.apiKey) {\n // widget with api key\n return `https://${WIDGET_DOMAIN}/?i=${p.apiKey}`;\n }\n\n return undefined;\n}\n","import elasticlunr, { Index } from 'elasticlunr';\nimport Reservation from '@/model/Reservation';\nimport Contact from '@/grpc-api/model/contact';\n\ninterface SearchContact\n{\n id: string;\n name?: string;\n companyName?: string;\n phone?: string;\n email?: string;\n}\n\nconst ContactFields: (keyof SearchContact)[] = ['id', 'name', 'companyName', 'phone', 'email'];\n\nfunction toSearchContact(c: Contact): SearchContact {\n return {\n id: String(c.id),\n name: c.name ?? undefined,\n companyName: c.companyName ?? undefined,\n phone: c.phone ?? undefined,\n email: c.email ?? undefined,\n };\n}\n\nfunction searchCreate(): Index {\n const rindex = elasticlunr((index) => {\n ContactFields.forEach((f) => index.addField(f));\n index.saveDocument(false);\n index.pipeline.reset();\n });\n return rindex;\n}\n\nlet cindex = searchCreate();\n\nexport function searchContactAdd(contact: Contact[]) {\n contact.forEach((c) => {\n cindex.addDoc(toSearchContact(c));\n });\n}\n\nexport function searchContactRemove(contact: Contact[]) {\n contact.forEach((c) => {\n cindex.removeDocByRef(c.id);\n });\n}\n\nexport function searchContactReset() {\n cindex = searchCreate();\n}\n\nexport function searchForContacts(query: string, contactsById: Map) {\n if (query.trim().length < 3) return [];\n\n const config = {\n expand: true,\n bool: 'AND' as elasticlunr.Bool,\n };\n\n const res = cindex.search(query, config);\n\n console.log('searchForContacts: ', query, config, res);\n return res.flatMap((c) => contactsById.get(Number(c.ref)) ?? []);\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\nimport i18n from '@/plugins/i18n';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport {\n dateByAddingDays, dateByAddingMonths, dateByAddingYears,\n dateFlooredToDate, dateFlooredToMonth, dateFlooredToWeek, dateFlooredToYear, areDatesEqual, daysInBetweenDates,\n} from './time-utils';\n\nexport enum DateRangePeriod {\n Custom = 'custom',\n CustomMonth = 'custom_month',\n CustomYear = 'custom_year',\n\n Separator = 'separator',\n\n Today = 'today',\n Yesterday = 'yesterday',\n Tomorrow = 'tomorrow',\n ThisWeek = 'this_week',\n LastWeek = 'last_week',\n NextWeek = 'next_week',\n ThisMonth = 'this_month',\n LastMonth = 'last_month',\n NextMonth = 'next_month',\n Last30Days = 'last_30_days',\n Next30Days = 'next_30_days',\n Last90Days = 'last_90_days',\n Next90Days = 'next_90_days',\n ThisYear = 'this_year',\n LastYear = 'last_year',\n NextYear = 'next_year',\n}\n\nexport const DateRangePeriods = [\n DateRangePeriod.Custom,\n DateRangePeriod.Separator, // separator\n // DateRangePeriod.Today,\n // DateRangePeriod.Yesterday,\n // DateRangePeriod.Tomorrow,\n // DateRangePeriod.Separator, // separator\n DateRangePeriod.ThisWeek,\n DateRangePeriod.LastWeek,\n DateRangePeriod.NextWeek,\n DateRangePeriod.Separator, // separator\n DateRangePeriod.ThisMonth,\n DateRangePeriod.LastMonth,\n DateRangePeriod.NextMonth,\n DateRangePeriod.Separator, // separator\n // DateRangePeriod.Last30Days,\n // DateRangePeriod.Next30Days,\n // DateRangePeriod.Last90Days,\n // DateRangePeriod.Next90Days,\n // DateRangePeriod.Separator, // separator\n DateRangePeriod.ThisYear,\n DateRangePeriod.LastYear,\n DateRangePeriod.NextYear,\n];\n\nexport const DateRangePeriodsPast = [\n DateRangePeriod.Custom,\n DateRangePeriod.Separator, // separator\n DateRangePeriod.Last30Days,\n DateRangePeriod.Last90Days,\n DateRangePeriod.Separator, // separator\n // DateRangePeriod.Today,\n // DateRangePeriod.Yesterday,\n // DateRangePeriod.Separator, // separator\n // DateRangePeriod.ThisWeek,\n // DateRangePeriod.LastWeek,\n DateRangePeriod.Separator, // separator\n DateRangePeriod.ThisMonth,\n DateRangePeriod.LastMonth,\n DateRangePeriod.Separator, // separator\n DateRangePeriod.ThisYear,\n DateRangePeriod.LastYear,\n];\n\nconst SpecialDateRangePeriods = [\n DateRangePeriod.Custom,\n DateRangePeriod.CustomMonth,\n DateRangePeriod.CustomYear,\n DateRangePeriod.Separator,\n];\n\nexport interface DateRangePickerItem {\n divider?: boolean,\n value?: DateRangePeriod,\n text?: String,\n disabled?: boolean,\n}\n\nexport function createPickerItems(periods: DateRangePeriod[]): DateRangePickerItem[] {\n return periods.map((p) => {\n if (p === DateRangePeriod.Separator) return { divider: true };\n return { value: p, text: i18n.t(`code.date_range.${p}`) as string, disabled: p === DateRangePeriod.Custom };\n });\n}\nexport interface DateRange {\n period: DateRangePeriod,\n firstDayOfWeek: number;\n beginDate: Date,\n endDate: Date,\n previousBeginDate?: Date,\n previousEndDate?: Date,\n}\n\nexport function dateRangeFromPeriod(period: DateRangePeriod = DateRangePeriod.ThisMonth, firstDayOfWeek: number = 0): DateRange {\n // eslint-disable-next-line no-use-before-define\n const range = dateRangeDatesFromPeriod(period, firstDayOfWeek);\n return ({\n period,\n firstDayOfWeek,\n beginDate: range.begin,\n endDate: range.end,\n });\n}\n\nexport function areDateRangesEqual(dr1: DateRange, dr2: DateRange): boolean {\n return dr1.period === dr2.period\n && areDatesEqual(dr1.beginDate, dr2.beginDate)\n && areDatesEqual(dr1.endDate, dr2.endDate);\n}\n\nfunction formattedDateInterval(begin: Date, end: Date): string {\n const now = new Date();\n\n // full months\n if (areDatesEqual(begin, dateFlooredToMonth(begin)) && areDatesEqual(dateByAddingDays(end, 1), dateByAddingMonths(dateFlooredToMonth(end), 1))) {\n // same month and year -> single month and year\n if (begin.getMonth() === end.getMonth() && begin.getFullYear() === end.getFullYear()) { return localized.monthYearText(begin)!; }\n\n // same year -> year at end only\n if (begin.getFullYear() === end.getFullYear()) { return `${localized.monthText(begin)!} - ${localized.monthYearText(end)!}`; }\n\n // different year -> year at begin and end\n return `${localized.monthYearText(begin)!} - ${localized.monthYearText(end)!}`;\n }\n\n // single day (display weekday)\n if (areDatesEqual(begin, end)) {\n // current year -> no year\n if (begin.getFullYear() === now.getFullYear()) {\n return localized.shortDayMonthText(begin)!;\n }\n\n // not current year\n return localized.shortDateText(begin)!;\n }\n\n // different days (no weekdays)\n\n // current year -> no year at all\n if ((begin.getFullYear() === now.getFullYear()) && (end.getFullYear() === now.getFullYear())) {\n return `${localized.veryShortDayMonthText(begin)!} - ${localized.veryShortDayMonthText(end)!}`;\n }\n\n // same year -> year at end only\n if (begin.getFullYear() === end.getFullYear()) {\n return `${localized.veryShortDayMonthText(begin)!} - ${localized.veryShortDateText(end)!}`;\n }\n\n // different year -> year at begin and end\n return `${localized.veryShortDateText(begin)!} - ${localized.veryShortDateText(end)!}`;\n}\n\nexport function formattedDateRange(dateRange: DateRange):\n{ period: string, main: string, previous: string, full: string } {\n const period = i18n.t(`code.date_range.${dateRange.period}`) as string;\n const main = formattedDateInterval(dateRange.beginDate, dateRange.endDate);\n const previous = dateRange.previousBeginDate && dateRange.previousEndDate\n ? formattedDateInterval(dateRange.previousBeginDate, dateRange.previousEndDate)\n : 'N/A';\n const full = dateRange.previousBeginDate && dateRange.previousEndDate ? `${main} vs. ${previous}` : main;\n\n return {\n period, main, previous, full,\n };\n}\n\n// makes range (begin date, end date>\nexport function dateRangeDatesFromPeriod(period: DateRangePeriod, firstDayOfWeek: number) : { begin: Date, end: Date} {\n const today = dateFlooredToDate(new Date());\n let begin = today;\n let end = dateByAddingDays(begin, 1);\n\n switch (period) {\n case DateRangePeriod.Today:\n begin = dateFlooredToDate(today); end = dateByAddingDays(begin, 1); break;\n case DateRangePeriod.Yesterday:\n begin = dateByAddingDays(dateFlooredToDate(today), -1); end = dateByAddingDays(begin, 1); break;\n case DateRangePeriod.Tomorrow:\n begin = dateByAddingDays(dateFlooredToDate(today), 1); end = dateByAddingDays(begin, 1); break;\n\n case DateRangePeriod.ThisWeek:\n begin = dateFlooredToWeek(today, firstDayOfWeek);\n end = dateByAddingDays(begin, 7);\n break;\n case DateRangePeriod.LastWeek:\n begin = dateByAddingDays(dateFlooredToWeek(today, firstDayOfWeek), -7);\n end = dateByAddingDays(begin, 7);\n break;\n case DateRangePeriod.NextWeek:\n begin = dateByAddingDays(dateFlooredToWeek(today, firstDayOfWeek), 7);\n end = dateByAddingDays(begin, 7);\n break;\n\n case DateRangePeriod.ThisMonth:\n begin = dateFlooredToMonth(today);\n end = dateByAddingMonths(begin, 1);\n break;\n case DateRangePeriod.LastMonth:\n begin = dateByAddingMonths(dateFlooredToMonth(today), -1);\n end = dateByAddingMonths(begin, 1);\n break;\n case DateRangePeriod.NextMonth:\n begin = dateByAddingMonths(dateFlooredToMonth(today), 1);\n end = dateByAddingMonths(begin, 1);\n break;\n\n case DateRangePeriod.Last30Days:\n begin = dateByAddingDays(begin, -30);\n end = dateByAddingDays(begin, 31); // 31!\n break;\n case DateRangePeriod.Next30Days:\n end = dateByAddingDays(begin, 31); // 31!\n break;\n case DateRangePeriod.Last90Days:\n begin = dateByAddingDays(begin, -90);\n end = dateByAddingDays(begin, 91); // 91!\n break;\n case DateRangePeriod.Next90Days:\n end = dateByAddingDays(begin, 91); // 91!\n break;\n\n case DateRangePeriod.ThisYear:\n begin = dateFlooredToYear(today);\n end = dateByAddingYears(begin, 1);\n break;\n case DateRangePeriod.LastYear:\n begin = dateByAddingYears(dateFlooredToYear(today), -1);\n end = dateByAddingYears(begin, 1);\n break;\n case DateRangePeriod.NextYear:\n begin = dateByAddingYears(dateFlooredToYear(today), 1);\n end = dateByAddingYears(begin, 1);\n break;\n\n default:\n break;\n }\n\n end = dateByAddingDays(end, -1);\n\n return { begin, end };\n}\n\n// check full period of right open date range\nfunction isFullMonth(begin: Date, end: Date): number | undefined {\n return areDatesEqual(begin, dateFlooredToMonth(begin)) && areDatesEqual(end, dateByAddingMonths(begin, 1)) ? begin.getMonth() : undefined;\n}\nfunction isFullYear(begin: Date, end: Date): number | undefined {\n return areDatesEqual(begin, dateFlooredToYear(begin)) && areDatesEqual(end, dateByAddingYears(begin, 1)) ? begin.getFullYear() : undefined;\n}\n\nexport function periodFromDateRangeDates(periods: DateRangePeriod[], begin: Date, end: Date, firstDayOfWeek: number): DateRangePeriod {\n // selectable periods\n const period = periods.find((p) => {\n if (SpecialDateRangePeriods.includes(p)) return false;\n const range = dateRangeDatesFromPeriod(p, firstDayOfWeek);\n return areDatesEqual(range.begin, begin) && areDatesEqual(range.end, end);\n });\n\n if (period) return period;\n\n // pseudo custom periods\n const roend = dateByAddingDays(end, 1);\n if (isFullMonth(begin, roend)) return DateRangePeriod.CustomMonth;\n if (isFullYear(begin, roend)) return DateRangePeriod.CustomYear;\n\n return DateRangePeriod.Custom;\n}\n\nexport function shiftedDateRangeFromPeriodAndRange(periods: DateRangePeriod[], period: DateRangePeriod, beginDate: Date, endDate: Date, firstDayOfWeek: number, previous = true) : { begin: Date, end: Date, period: DateRangePeriod } {\n const diff = daysInBetweenDates(endDate, beginDate) - 1; // diff to add or subtract\n let begin = dateByAddingDays(endDate, 1); // for the next period\n let end = dateByAddingDays(beginDate, -1); // for the previous period\n\n switch (period) {\n case DateRangePeriod.ThisMonth:\n case DateRangePeriod.LastMonth:\n case DateRangePeriod.NextMonth:\n case DateRangePeriod.CustomMonth:\n begin = dateFlooredToMonth(previous ? end : begin); // first day of shifted month\n end = dateByAddingDays(dateByAddingMonths(begin, 1), -1); // +1month -1day\n break;\n case DateRangePeriod.ThisYear:\n case DateRangePeriod.LastYear:\n case DateRangePeriod.NextYear:\n case DateRangePeriod.CustomYear:\n begin = dateFlooredToYear(previous ? end : begin); // first day of shifted year\n end = dateByAddingDays(dateByAddingYears(begin, 1), -1); // +1year -1day\n break;\n\n default:\n if (previous) {\n begin = dateByAddingDays(end, -diff);\n } else {\n end = dateByAddingDays(begin, diff); // right open\n }\n break;\n }\n\n // new period\n let newPeriod = periodFromDateRangeDates(periods, begin, end, firstDayOfWeek);\n\n switch (period) {\n case DateRangePeriod.CustomMonth: // keep month period\n newPeriod = [DateRangePeriod.ThisMonth, DateRangePeriod.LastMonth, DateRangePeriod.NextMonth].includes(newPeriod)\n ? newPeriod : DateRangePeriod.CustomMonth; break;\n case DateRangePeriod.CustomYear: // keep year period\n newPeriod = [DateRangePeriod.ThisYear, DateRangePeriod.LastYear, DateRangePeriod.NextYear].includes(newPeriod)\n ? newPeriod : DateRangePeriod.CustomYear; break;\n\n case DateRangePeriod.Today: newPeriod = previous ? DateRangePeriod.Yesterday : DateRangePeriod.Tomorrow; break;\n case DateRangePeriod.Yesterday: newPeriod = previous ? DateRangePeriod.Custom : DateRangePeriod.Today; break;\n case DateRangePeriod.Tomorrow: newPeriod = previous ? DateRangePeriod.Today : DateRangePeriod.Custom; break;\n case DateRangePeriod.ThisWeek: newPeriod = previous ? DateRangePeriod.LastWeek : DateRangePeriod.NextWeek; break;\n case DateRangePeriod.LastWeek: newPeriod = previous ? DateRangePeriod.Custom : DateRangePeriod.ThisWeek; break;\n case DateRangePeriod.NextWeek: newPeriod = previous ? DateRangePeriod.ThisWeek : DateRangePeriod.Custom; break;\n case DateRangePeriod.ThisMonth: newPeriod = previous ? DateRangePeriod.LastMonth : DateRangePeriod.NextMonth; break;\n case DateRangePeriod.LastMonth: newPeriod = previous ? DateRangePeriod.CustomMonth : DateRangePeriod.ThisMonth; break;\n case DateRangePeriod.NextMonth: newPeriod = previous ? DateRangePeriod.ThisMonth : DateRangePeriod.CustomMonth; break;\n case DateRangePeriod.Last30Days: newPeriod = previous ? DateRangePeriod.Custom : DateRangePeriod.Next30Days; break;\n case DateRangePeriod.Next30Days: newPeriod = previous ? DateRangePeriod.Last30Days : DateRangePeriod.Custom; break;\n case DateRangePeriod.Last90Days: newPeriod = previous ? DateRangePeriod.Custom : DateRangePeriod.Next90Days; break;\n case DateRangePeriod.Next90Days: newPeriod = previous ? DateRangePeriod.Last90Days : DateRangePeriod.Custom; break;\n case DateRangePeriod.ThisYear: newPeriod = previous ? DateRangePeriod.LastYear : DateRangePeriod.NextYear; break;\n case DateRangePeriod.LastYear: newPeriod = previous ? DateRangePeriod.CustomYear : DateRangePeriod.ThisYear; break;\n case DateRangePeriod.NextYear: newPeriod = previous ? DateRangePeriod.ThisYear : DateRangePeriod.CustomYear; break;\n default: break;\n }\n\n return { begin, end, period: newPeriod };\n}\n\nexport function isWholeWeeks(begin: Date, end: Date, firstDayOfWeek: number): boolean {\n const firstwd = begin.getDay();\n const lastwd = end.getDay();\n return firstwd === firstDayOfWeek && lastwd === (firstDayOfWeek + 6) % 7;\n}\n\nexport function makeWholeWeeks(dateRange: DateRange, firstDayOfWeek: number): DateRange {\n const diffb = ((dateRange.beginDate.getDay() + 7) - firstDayOfWeek) % 7;\n const diffe = ((firstDayOfWeek + 6) - dateRange.endDate.getDay()) % 7;\n\n const beginDate = dateByAddingDays(dateRange.beginDate, -diffb);\n const endDate = dateByAddingDays(dateRange.endDate, diffe);\n\n let previousBeginDate = undefined as Date | undefined;\n let previousEndDate = undefined as Date | undefined;\n\n if (dateRange.previousBeginDate && dateRange.previousEndDate) {\n ({ begin: previousBeginDate, end: previousEndDate } = shiftedDateRangeFromPeriodAndRange([], DateRangePeriod.Custom, beginDate, endDate, firstDayOfWeek));\n }\n\n return {\n beginDate,\n endDate,\n previousBeginDate,\n previousEndDate,\n period: DateRangePeriod.Custom,\n firstDayOfWeek,\n };\n}\n","/* eslint-disable import/prefer-default-export */\n/* eslint-disable no-return-assign */\n/* eslint-disable no-empty */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-restricted-globals */\n/* eslint-disable @typescript-eslint/no-shadow */\n/* eslint-disable no-param-reassign */\n/* eslint-disable no-prototype-builtins */\n/* eslint-disable no-nested-ternary */\n/* eslint-disable no-use-before-define */\n\nimport { Filter } from './filter';\nimport {\n FilterBoolRule, FilterFieldRule, FilterRule, FilterRuleType,\n} from './filter-rule';\n\ninterface IFilter {\n id?: number\n version?: string\n rule?: IRule\n [key: string]: unknown;\n}\n\ninterface IRule {\n id?: number\n type?: string\n field?: string\n fieldType?: string\n operand?: any\n rules?: IRule[]\n [key: string]: unknown;\n}\n\n// Converts JSON strings to/from your types\n// and asserts the results of JSON.parse at runtime\nexport class FilterConvert {\n public static fromJson(json: string) {\n const ifl = cast(JSON.parse(json), r('IFilter')) as IFilter;\n return this.toFilter(ifl);\n }\n\n public static toJson(value: Filter): string {\n const ifl = this.fromFilter(value);\n return JSON.stringify(uncast(ifl, r('IFilter')), null, 2);\n }\n\n private static fromFilter(filter: Filter): IFilter {\n const rule = this.fromRule(filter.rule);\n const { version } = filter;\n return { rule, version };\n }\n\n private static toFilter(ifilter: IFilter) {\n const rule = this.toRule(ifilter.rule!);\n return Filter.newFilter(ifilter.version!, rule);\n }\n\n private static fromRule(rule: FilterRule): IRule {\n const { id, type } = rule;\n const { field, fieldType, operand } = (rule as FilterFieldRule);\n const rules = (rule as FilterBoolRule)?.rules?.map((r) => this.fromRule(r));\n\n return {\n id, type, field, fieldType, operand, rules,\n };\n }\n\n private static toRule(irule: IRule): FilterRule {\n const type = irule.type as FilterRuleType;\n let rule: FilterRule | null;\n\n if (FilterRule.isFilterBoolRuleType(type)) {\n const rules = irule.rules?.map((ir) => FilterConvert.toRule(ir)) ?? [];\n rule = FilterRule.newFilterBoolRule(type, rules);\n } else if (FilterRule.isFilterFieldRuleType(type)) {\n rule = FilterRule.newFilterFieldRule(type, irule.field ?? '', irule.fieldType ?? '', irule.operand);\n } else {\n throw Error(`Unknown rule ${irule.type}`);\n }\n\n if (!rule) throw Error(`Error create rule ${irule.type}`);\n\n return rule;\n }\n}\n\nfunction invalidValue(typ: any, val: any): never {\n throw Error(`Invalid value ${JSON.stringify(val)} for type ${JSON.stringify(typ)}`);\n}\n\nfunction jsonToJSProps(typ: any): any {\n if (typ.jsonToJS === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.json] = { key: p.js, typ: p.typ });\n typ.jsonToJS = map;\n }\n return typ.jsonToJS;\n}\n\nfunction jsToJSONProps(typ: any): any {\n if (typ.jsToJSON === undefined) {\n const map: any = {};\n typ.props.forEach((p: any) => map[p.js] = { key: p.json, typ: p.typ });\n typ.jsToJSON = map;\n }\n return typ.jsToJSON;\n}\n\nfunction transform(val: any, typ: any, getProps: any): any {\n function transformPrimitive(typ: string, val: any): any {\n if (typeof typ === typeof val) return val;\n return invalidValue(typ, val);\n }\n\n function transformUnion(typs: any[], val: any): any {\n // val must validate against one typ in typs\n const l = typs.length;\n for (let i = 0; i < l; i++) {\n const typ = typs[i];\n try {\n return transform(val, typ, getProps);\n } catch (_) { }\n }\n return invalidValue(typs, val);\n }\n\n function transformEnum(cases: string[], val: any): any {\n if (cases.indexOf(val) !== -1) return val;\n return invalidValue(cases, val);\n }\n\n function transformArray(typ: any, val: any): any {\n // val must be an array with no invalid elements\n if (!Array.isArray(val)) return invalidValue('array', val);\n return val.map((el) => transform(el, typ, getProps));\n }\n\n function transformDate(typ: any, val: any): any {\n if (val === null) {\n return null;\n }\n const d = new Date(val);\n if (isNaN(d.valueOf())) {\n return invalidValue('Date', val);\n }\n return d;\n }\n\n function transformObject(props: { [k: string]: any }, additional: any, val: any): any {\n if (val === null || typeof val !== 'object' || Array.isArray(val)) {\n return invalidValue('object', val);\n }\n const result: any = {};\n Object.getOwnPropertyNames(props).forEach((key) => {\n const prop = props[key];\n const v = Object.prototype.hasOwnProperty.call(val, key) ? val[key] : undefined;\n result[prop.key] = transform(v, prop.typ, getProps);\n });\n Object.getOwnPropertyNames(val).forEach((key) => {\n if (!Object.prototype.hasOwnProperty.call(props, key)) {\n result[key] = transform(val[key], additional, getProps);\n }\n });\n return result;\n }\n\n if (typ === 'any') return val;\n if (typ === null) {\n if (val === null) return val;\n return invalidValue(typ, val);\n }\n if (typ === false) return invalidValue(typ, val);\n while (typeof typ === 'object' && typ.ref !== undefined) {\n typ = typeMap[typ.ref];\n }\n if (Array.isArray(typ)) return transformEnum(typ, val);\n if (typeof typ === 'object') {\n return typ.hasOwnProperty('unionMembers') ? transformUnion(typ.unionMembers, val)\n : typ.hasOwnProperty('arrayItems') ? transformArray(typ.arrayItems, val)\n : typ.hasOwnProperty('props') ? transformObject(getProps(typ), typ.additional, val)\n : invalidValue(typ, val);\n }\n // Numbers can be parsed by Date but shouldn't be.\n if (typ === Date && typeof val !== 'number') return transformDate(typ, val);\n return transformPrimitive(typ, val);\n}\n\nfunction cast(val: any, typ: any): T {\n return transform(val, typ, jsonToJSProps);\n}\n\nfunction uncast(val: T, typ: any): any {\n return transform(val, typ, jsToJSONProps);\n}\n\nfunction a(typ: any) {\n return { arrayItems: typ };\n}\n\nfunction u(...typs: any[]) {\n return { unionMembers: typs };\n}\n\nfunction o(props: any[], additional: any) {\n return { props, additional };\n}\n\nfunction m(additional: any) {\n return { props: [], additional };\n}\n\nfunction r(name: string) {\n return { ref: name };\n}\n\nconst typeMap: any = {\n IFilter: o([\n { json: 'id', js: 'id', typ: u(undefined, 0) },\n { json: 'version', js: 'version', typ: '' },\n { json: 'rule', js: 'rule', typ: r('IRule') },\n ], false),\n IRule: o([\n { json: 'id', js: 'id', typ: u(undefined, 0) },\n { json: 'type', js: 'type', typ: u(undefined, '') },\n { json: 'field', js: 'field', typ: u(undefined, '') },\n { json: 'fieldType', js: 'fieldType', typ: u(undefined, '') },\n { json: 'operand', js: 'operand', typ: u(undefined, u(null, true, 0, '')) },\n { json: 'rules', js: 'rules', typ: u(undefined, a(r('IRule'))) },\n ], false),\n};\n\n// const typeMap: any = {\n// Filter: o([\n// { json: 'id', js: 'id', typ: u(undefined, 0) },\n// { json: 'version', js: 'version', typ: u(undefined, '') },\n// { json: 'rule', js: 'rule', typ: u(undefined, r('FilterRule')) },\n// ], false),\n// FilterRule: o([\n// { json: 'id', js: 'id', typ: u(undefined, 0) },\n// { json: 'type', js: 'type', typ: u(undefined, '') },\n// { json: 'rules', js: 'rules', typ: u(undefined, a(r('PurpleRule'))) },\n// ], false),\n// PurpleRule: o([\n// { json: 'id', js: 'id', typ: u(undefined, 0) },\n// { json: 'type', js: 'type', typ: u(undefined, '') },\n// { json: 'rules', js: 'rules', typ: u(undefined, a(r('FluffyRule'))) },\n// ], false),\n// FluffyRule: o([\n// { json: 'id', js: 'id', typ: u(undefined, 0) },\n// { json: 'type', js: 'type', typ: u(undefined, '') },\n// { json: 'field', js: 'field', typ: u(undefined, '') },\n// { json: 'operand', js: 'operand', typ: u(undefined, u(true, 0, '')) },\n// ], false),\n// };\n\n// const typeMap: any = {\n// \"Filter\": o([\n// { json: \"id\", js: \"id\", typ: u(undefined, 0) },\n// { json: \"version\", js: \"version\", typ: u(undefined, \"\") },\n// { json: \"rule\", js: \"rule\", typ: u(undefined, r(\"FilterRule\")) },\n// ], false),\n// \"FilterRule\": o([\n// { json: \"id\", js: \"id\", typ: u(undefined, 0) },\n// { json: \"type\", js: \"type\", typ: u(undefined, \"\") },\n// { json: \"rules\", js: \"rules\", typ: u(undefined, a(r(\"PurpleRule\"))) },\n// ], false),\n// \"PurpleRule\": o([\n// { json: \"id\", js: \"id\", typ: u(undefined, 0) },\n// { json: \"type\", js: \"type\", typ: u(undefined, \"\") },\n// { json: \"rules\", js: \"rules\", typ: u(undefined, a(r(\"FluffyRule\"))) },\n// ], false),\n// \"FluffyRule\": o([\n// { json: \"id\", js: \"id\", typ: u(undefined, 0) },\n// { json: \"type\", js: \"type\", typ: u(undefined, \"\") },\n// { json: \"field\", js: \"field\", typ: u(undefined, \"\") },\n// { json: \"operand\", js: \"operand\", typ: u(undefined, u(0, null, \"\")) },\n// ], false),\n// };\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\n/* eslint-disable no-use-before-define */\n/* eslint-disable max-classes-per-file */\n\nimport { TranslateResult } from 'vue-i18n';\nimport i18n from '@/plugins/i18n';\nimport {\n FilterFieldRule, FilterFieldType, FilterRule, FilterRuleType,\n} from './filter-rule';\nimport {\n FilterDateNoYearOperands,\n FilterDateNoYearOperandsWithSeparators, FilterDateOperand, FilterDateOperands, FilterDateOperandsWithSeparators,\n} from './filter-rule-date-operation';\nimport { FilterOperandSeparator, FilterOperandType, isEmptyOperand } from './filter-rule-operation';\n\nexport type ListInfo = { text: TranslateResult, value: T, divider?: boolean }[]\n\nexport enum FilterSpecialCategoryOperandType {\n Country = 'country',\n Language = 'language',\n}\n\nconst FilterSpecialCategoryOperandTypes = [FilterSpecialCategoryOperandType.Country, FilterSpecialCategoryOperandType.Language];\n\nexport const FilterStringRuleTypes = [FilterRuleType.Equal, FilterRuleType.NotEqual, FilterRuleType.Contains, FilterRuleType.IsNotEmpty, FilterRuleType.IsEmpty];\nexport const FilterNumberRuleTypes = [FilterRuleType.Equal, FilterRuleType.NotEqual, FilterRuleType.LessThen, FilterRuleType.GreaterThen, FilterRuleType.IsNotEmpty, FilterRuleType.IsEmpty];\nexport const FilterBooleanRuleTypes = [FilterRuleType.IsSet, FilterRuleType.IsNotSet];\nexport const FilterDateRuleTypes = [FilterRuleType.Equal, FilterRuleType.NotEqual, FilterRuleType.IsNotEmpty, FilterRuleType.IsEmpty];\nexport const FilterCathegoricalRuleTypes = [FilterRuleType.Equal, FilterRuleType.NotEqual, FilterRuleType.IsNotEmpty, FilterRuleType.IsEmpty];\n\nexport class FilterDescriptor {\n ruleDescriptors: FilterRuleDescriptor[] = [];\n\n constructor(ruleDescriptors: FilterRuleDescriptor[]) {\n this.ruleDescriptors = ruleDescriptors;\n }\n\n validateRule(rule: FilterFieldRule, checkOperand = true): TranslateResult | null {\n if (rule.field.trim() === '') return i18n.t('filter.message.rule_field_not_specified');\n const ruleDescriptor = this.ruleDescriptors.find((rd) => rd.field === rule.field);\n if (!ruleDescriptor) return i18n.t('filter.message.rule_field_not_allowed', { field: rule.field });\n return ruleDescriptor.validateRule(rule, checkOperand);\n }\n\n allowedFieldsInfo(): ListInfo {\n return this.ruleDescriptors.map((rd) => ({ text: rd.fieldText, value: rd.field }));\n }\n}\n\nexport class FilterRuleDescriptor {\n id: number = 0;\n\n field: string = '';\n\n fieldText: string = '';\n\n fieldtype: FilterFieldType = FilterFieldType.None;\n\n allowedRuleTypes: FilterRuleType[] = [];\n\n allowedOperands: FilterOperandType[] | null | FilterSpecialCategoryOperandType = null;\n\n constructor(field: string, fieldText: string, fieldtype: FilterFieldType, ruleTypes: FilterRuleType[], operands?: FilterOperandType[] | FilterSpecialCategoryOperandType) {\n this.field = field;\n this.fieldText = fieldText;\n this.fieldtype = fieldtype;\n this.allowedRuleTypes = ruleTypes;\n this.allowedOperands = operands ?? null;\n\n if (fieldtype === FilterFieldType.Date && !this.allowedOperands) { this.allowedOperands = FilterDateOperandsWithSeparators; }\n if (fieldtype === FilterFieldType.DateNoYear && !this.allowedOperands) { this.allowedOperands = FilterDateNoYearOperandsWithSeparators; }\n }\n\n // static StringFilterRuleDescriptor(field: string, fieldText: string, ruleTypes: FilterRuleType[], operands?: FilterOperandType[]) {\n // return new FilterRuleDescriptor(field, fieldText, FilterFieldType.String, ruleTypes, operands);\n // }\n\n static StringFilterRuleDescriptor(field: string, fieldText: string) {\n return new FilterRuleDescriptor(field, fieldText, FilterFieldType.String, FilterStringRuleTypes);\n }\n\n static BoolFilterRuleDescriptor(field: string, fieldText: string) {\n return new FilterRuleDescriptor(field, fieldText, FilterFieldType.Boolean, FilterBooleanRuleTypes);\n }\n\n static DateFilterRuleDescriptor(field: string, fieldText: string) {\n return new FilterRuleDescriptor(field, fieldText, FilterFieldType.Date, FilterDateRuleTypes);\n }\n\n static NumberFilterRuleDescriptor(field: string, fieldText: string) {\n return new FilterRuleDescriptor(field, fieldText, FilterFieldType.Number, FilterNumberRuleTypes);\n }\n\n validateRule(rule: FilterFieldRule, checkOperand = true): TranslateResult | null {\n if (rule.field === '') return i18n.t('filter.message.rule_field_not_specified');\n if (this.field !== rule.field) i18n.t('filter.message.rule_field_not_allowed', { field: this.fieldText });\n\n if (rule.type === FilterRuleType.None) return i18n.t('filter.message.rule_operation_not_specified', { field: this.fieldText });\n if (!this.allowedRuleTypes.includes(rule.type)) return i18n.t('filter.message.rule_operation_not_allowed', { field: this.fieldText });\n\n // no operand check when empty while editing\n if (!checkOperand && isEmptyOperand(rule.operand)) return null;\n\n return this.validateOperand(rule);\n }\n\n validateOperand(rule: FilterFieldRule): TranslateResult | null {\n if (FilterRule.isFilterFieldNoOperandType(rule.type)) {\n if (rule.operand === undefined || rule.operand === null) return null;\n return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText });\n }\n\n if (isEmptyOperand(rule.operand)) return i18n.t('filter.message.rule_value_not_specified', { field: this.fieldText });\n if (this.allowedOperands) {\n if (typeof this.allowedOperands === 'string') {\n if (this.specialCategoryOperandsType() === null) return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); // should be special operand\n } else if (!this.allowedOperands.includes(rule.operand)) return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); // should be included in allowed options\n } else {\n if (FilterRuleDescriptor.isSpecialOperand(rule.operand)) return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText });\n\n switch (this.fieldtype) {\n case FilterFieldType.Boolean: return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); break;\n\n case FilterFieldType.String:\n if (typeof rule.operand !== 'string') return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); break;\n case FilterFieldType.Number:\n if (typeof rule.operand !== 'number') return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); break;\n\n case FilterFieldType.Date:\n if (!FilterDateOperands.includes(rule.operand as FilterDateOperand)) return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); break;\n case FilterFieldType.DateNoYear:\n if (!FilterDateNoYearOperands.includes(rule.operand as FilterDateOperand)) return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); break;\n\n default: return i18n.t('filter.message.rule_value_not_allowed', { field: this.fieldText }); break;\n }\n }\n\n return null;\n }\n\n static isSpecialOperand(operand: FilterOperandType) {\n if (typeof operand !== 'string') return false;\n return operand.startsWith('@@') && operand.endsWith('@@');\n }\n\n allowedRuleTypesInfo(): ListInfo {\n return this.allowedRuleTypes.map((rt) => ({ text: FilterRuleDescriptor.ruleTypeText(this.fieldtype, rt), value: rt }));\n }\n\n specialCategoryOperandsType(): FilterSpecialCategoryOperandType | null {\n if (typeof this.allowedOperands !== 'string' || !FilterSpecialCategoryOperandTypes.includes(this.allowedOperands)) return null;\n return this.allowedOperands; // single string means special category\n }\n\n allowedOperandsInfo(): ListInfo | null {\n if (!this.allowedOperands) return null;\n if (typeof this.allowedOperands === 'string') return null;\n\n return this.allowedOperands.map((o) => ({ text: FilterRuleDescriptor.operandText(this.fieldtype, o), value: o, divider: o === FilterOperandSeparator ? true : undefined }));\n }\n\n static operandText(fieldType: FilterFieldType, operand: FilterOperandType): TranslateResult {\n if (fieldType === FilterFieldType.Date || fieldType === FilterFieldType.DateNoYear) {\n switch (operand) {\n case FilterDateOperand.Today: return i18n.t('code.date_range.today');\n case FilterDateOperand.Tomorrow: return i18n.t('code.date_range.tomorrow');\n\n case FilterDateOperand.Yesterday: return i18n.t('code.date_range.yesterday');\n case FilterDateOperand.ThisWeek: return i18n.t('code.date_range.this_week');\n case FilterDateOperand.NextWeek: return i18n.t('code.date_range.next_week');\n case FilterDateOperand.PreviousWeek: return i18n.t('code.date_range.last_week');\n case FilterDateOperand.ThisMonth: return i18n.t('code.date_range.this_month');\n case FilterDateOperand.NextMonth: return i18n.t('code.date_range.next_month');\n\n case FilterDateOperand.PreviousMonth: return i18n.t('code.date_range.last_month');\n case FilterDateOperand.ThisYear: return i18n.t('code.date_range.this_year');\n case FilterDateOperand.NextYear: return i18n.t('code.date_range.next_year');\n case FilterDateOperand.PreviousYear: return i18n.t('code.date_range.last_year');\n default: return String(operand);\n }\n }\n\n if (!operand) return '';\n return String(operand);\n }\n\n static dateOperandText(fieldType: FilterFieldType, operand: FilterOperandType): string {\n if (!operand) return '';\n return String(operand);\n }\n\n static ruleTypeText(fieldType: FilterFieldType, ruleType: FilterRuleType): TranslateResult {\n const textop = ([FilterFieldType.String, FilterFieldType.Date, FilterFieldType.DateNoYear].includes(fieldType));\n\n switch (ruleType) {\n case FilterRuleType.Equal: return textop ? i18n.t('filter.rule_type.equal') : '=';\n case FilterRuleType.NotEqual: return textop ? i18n.t('filter.rule_type.not_equal') : '<>';\n case FilterRuleType.Contains: return i18n.t('filter.rule_type.contains');\n case FilterRuleType.LessThen: return '<';\n case FilterRuleType.GreaterThen: return '>';\n case FilterRuleType.IsSet: return i18n.t('filter.rule_type.is_set');\n case FilterRuleType.IsNotSet: return i18n.t('filter.rule_type.is_not_set');\n case FilterRuleType.IsNotEmpty: return i18n.t('filter.rule_type.is_not_empty');\n case FilterRuleType.IsEmpty: return i18n.t('filter.rule_type.is_empty');\n default: return fieldType as string;\n }\n }\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\n\nimport {\n dateByAddingDays, dateByAddingMonths, dateByAddingYears, dateFlooredToDate,\n dateFlooredToMonth, dateFlooredToWeek, dateFlooredToYear, dateWithYear,\n} from '../time-utils';\nimport { FieldOperation, FilterOperandType } from './filter-rule-operation';\n\nexport enum FilterDateOperand {\n Today = '@@tday@@',\n Tomorrow = '@@nday@@',\n Yesterday = '@@pday@@',\n ThisWeek = '@@tweek@@',\n NextWeek = '@@nweek@@',\n PreviousWeek = '@@pweek@@',\n ThisMonth = '@@tmonth@@',\n NextMonth = '@@nmonth@@',\n PreviousMonth = '@@pmonth@@',\n ThisYear = '@@tyear@@',\n NextYear = '@@nyear@@',\n PreviousYear = '@@pyear@@',\n\n Separator = '@@sep@@',\n}\n\nexport const FilterDateOperands = [\n FilterDateOperand.Today,\n FilterDateOperand.Tomorrow,\n FilterDateOperand.Yesterday,\n FilterDateOperand.ThisWeek,\n FilterDateOperand.NextWeek,\n FilterDateOperand.PreviousWeek,\n FilterDateOperand.ThisMonth,\n FilterDateOperand.NextMonth,\n FilterDateOperand.PreviousMonth,\n FilterDateOperand.ThisYear,\n FilterDateOperand.NextYear,\n FilterDateOperand.PreviousYear,\n];\nexport const FilterDateNoYearOperands = [\n FilterDateOperand.Today,\n FilterDateOperand.Tomorrow,\n FilterDateOperand.Yesterday,\n FilterDateOperand.ThisWeek,\n FilterDateOperand.NextWeek,\n FilterDateOperand.PreviousWeek,\n FilterDateOperand.ThisMonth,\n FilterDateOperand.NextMonth,\n FilterDateOperand.PreviousMonth,\n];\nexport const FilterDateOperandsWithSeparators = [\n FilterDateOperand.Today,\n FilterDateOperand.Tomorrow,\n FilterDateOperand.Yesterday,\n FilterDateOperand.Separator,\n FilterDateOperand.ThisWeek,\n FilterDateOperand.NextWeek,\n FilterDateOperand.PreviousWeek,\n FilterDateOperand.Separator,\n FilterDateOperand.ThisMonth,\n FilterDateOperand.NextMonth,\n FilterDateOperand.PreviousMonth,\n FilterDateOperand.Separator,\n FilterDateOperand.ThisYear,\n FilterDateOperand.NextYear,\n FilterDateOperand.PreviousYear,\n];\nexport const FilterDateNoYearOperandsWithSeparators = [\n FilterDateOperand.Today,\n FilterDateOperand.Tomorrow,\n FilterDateOperand.Yesterday,\n FilterDateOperand.Separator,\n FilterDateOperand.ThisWeek,\n FilterDateOperand.NextWeek,\n FilterDateOperand.PreviousWeek,\n FilterDateOperand.Separator,\n FilterDateOperand.ThisMonth,\n FilterDateOperand.NextMonth,\n FilterDateOperand.PreviousMonth,\n];\n\nexport abstract class FieldDateOperation extends FieldOperation {\n now: Date;\n\n begin: Date;\n\n end: Date;\n\n beginTime: number;\n\n endTime: number;\n\n constructor(operand: FilterDateOperand, now: Date, firstDayOfWeek: number) {\n super(operand);\n\n this.now = now;\n this.begin = new Date();\n this.end = new Date();\n\n switch (operand) {\n case FilterDateOperand.Today:\n this.begin = dateFlooredToDate(now); this.end = dateByAddingDays(this.begin, 1); break;\n case FilterDateOperand.Yesterday:\n this.begin = dateByAddingDays(dateFlooredToDate(now), -1); this.end = dateByAddingDays(this.begin, 1); break;\n case FilterDateOperand.Tomorrow:\n this.begin = dateByAddingDays(dateFlooredToDate(now), 1); this.end = dateByAddingDays(this.begin, 1); break;\n\n case FilterDateOperand.ThisWeek:\n this.begin = dateFlooredToWeek(now, firstDayOfWeek);\n this.end = dateByAddingDays(this.begin, 7);\n break;\n case FilterDateOperand.PreviousWeek:\n this.begin = dateByAddingDays(dateFlooredToWeek(now, firstDayOfWeek), -7);\n this.end = dateByAddingDays(this.begin, 7);\n break;\n case FilterDateOperand.NextWeek:\n this.begin = dateByAddingDays(dateFlooredToWeek(now, firstDayOfWeek), -7);\n this.end = dateByAddingDays(this.begin, 7);\n break;\n\n case FilterDateOperand.ThisMonth:\n this.begin = dateFlooredToMonth(now);\n this.end = dateByAddingMonths(this.begin, 1);\n break;\n case FilterDateOperand.PreviousMonth:\n this.begin = dateByAddingMonths(dateFlooredToMonth(now), -1);\n this.end = dateByAddingMonths(this.begin, 1);\n break;\n case FilterDateOperand.NextMonth:\n this.begin = dateByAddingMonths(dateFlooredToMonth(now), 1);\n this.end = dateByAddingMonths(this.begin, 1);\n break;\n\n case FilterDateOperand.ThisYear:\n this.begin = dateFlooredToYear(now);\n this.end = dateByAddingYears(this.begin, 1);\n break;\n case FilterDateOperand.PreviousYear:\n this.begin = dateByAddingYears(dateFlooredToYear(now), -1);\n this.end = dateByAddingYears(this.begin, 1);\n break;\n case FilterDateOperand.NextYear:\n this.begin = dateByAddingYears(dateFlooredToYear(now), 1);\n this.end = dateByAddingYears(this.begin, 1);\n break;\n\n default: break;\n }\n\n this.beginTime = this.begin.getTime();\n this.endTime = this.end.getTime();\n }\n\n static isDateOperand(operand: FilterOperandType) {\n return typeof operand === 'string' && FilterDateOperands.includes(operand as FilterDateOperand);\n }\n}\n\nexport class EqualDateFieldOperation extends FieldDateOperation {\n check(value: FilterOperandType | undefined) {\n if (value === undefined || value === null) return false;\n const time = (value as Date).getTime();\n if (!time) return false;\n\n return this.neg !== (time >= this.beginTime && time < this.endTime);\n }\n}\n\nexport class EqualDateNoYearFieldOperation extends FieldDateOperation {\n check(value: FilterOperandType | undefined) {\n if (value === undefined || value === null) return false;\n\n const time = dateWithYear(value as Date, this.now.getFullYear()).getTime();\n if (!time) return false;\n\n return this.neg !== (time >= this.beginTime && time < this.endTime);\n }\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-use-before-define */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\n\nexport type FilterOperandType = string | number | Date | boolean | null;\nexport const FilterOperandSeparator: string = '@@sep@@';\n\nexport function isEmptyOperand(operand: FilterOperandType | undefined, zeroAsNull = false) {\n if (operand === undefined || operand === null || operand === '') return true;\n\n if (typeof operand === 'string' && operand.trim() === '') return true;\n\n if (zeroAsNull && operand === 0) return true;\n\n return false;\n}\n\nexport function fixOperand(operand: FilterOperandType | undefined, zeroAsNull = false) {\n if (operand === undefined || operand === null || operand === '') return null;\n\n if (typeof operand === 'string') return operand.trim() || null;\n\n if (zeroAsNull && operand === 0) return null;\n\n return operand;\n}\n\nexport abstract class Operation {\n neg = false;\n\n abstract check(value: FilterOperandType): boolean\n}\n\nexport class NoOperation extends Operation {\n check(value: FilterOperandType) { return false; }\n}\n\nexport abstract class FieldOperation extends Operation {\n operand: FilterOperandType = null;\n\n constructor(operand: FilterOperandType) {\n super();\n\n this.operand = fixOperand(operand);\n }\n}\n\nexport class IsSetFieldOperation extends FieldOperation {\n neg = false;\n\n constructor() {\n super(null);\n }\n\n check(value: FilterOperandType | undefined) {\n return this.neg !== (value === true);\n }\n}\n\nexport class IsEmptyFieldOperation extends FieldOperation {\n neg = false;\n\n constructor() {\n super(null);\n }\n\n check(value: FilterOperandType | undefined) {\n return this.neg !== (fixOperand(value) === null);\n }\n}\n\nexport class EqualFieldOperation extends FieldOperation {\n neg = false;\n\n check(value: FilterOperandType | undefined) {\n return this.neg !== (value === fixOperand(this.operand));\n }\n}\n\nexport class ContainsFieldOperation extends FieldOperation {\n neg = false;\n\n constructor(operand: FilterOperandType) {\n super(operand);\n if (typeof this.operand !== 'string') this.operand = null;\n }\n\n check(value: FilterOperandType) {\n if (typeof value !== 'string' || this.operand === null) return false;\n return this.neg !== value.includes(this.operand as string);\n }\n}\n\nexport class GreaterThenFieldOperation extends FieldOperation {\n neg = false;\n\n constructor(operand: FilterOperandType) {\n super(operand);\n if (typeof this.operand !== 'number') this.operand = null;\n }\n\n check(value: FilterOperandType) {\n if (typeof value !== 'number' || this.operand === null) return false;\n return this.neg !== (value > (this.operand as number));\n }\n}\n\nexport class LessThenFieldOperation extends FieldOperation {\n neg = false;\n\n check(value: FilterOperandType) {\n if (typeof value !== 'number' || this.operand === null) return false;\n return this.neg !== (value < (this.operand as number));\n }\n}\n","/* eslint-disable no-use-before-define */\n/* eslint-disable class-methods-use-this */\n/* eslint-disable max-classes-per-file */\n\nimport {\n EqualDateFieldOperation, EqualDateNoYearFieldOperation, FieldDateOperation, FilterDateOperand,\n} from './filter-rule-date-operation';\nimport {\n FilterOperandType, NoOperation,\n ContainsFieldOperation, EqualFieldOperation, GreaterThenFieldOperation, LessThenFieldOperation,\n IsSetFieldOperation, IsEmptyFieldOperation,\n} from './filter-rule-operation';\n\ntype FilterCheckObject = { [field: string]: any }\ntype FilterCheckFnc = (object: FilterCheckObject) => boolean;\n\nconst NoFilterCheckFnc = (object: FilterCheckObject) => false;\n\nexport enum FilterRuleType {\n None = 'nn',\n\n True = 'tr',\n False = 'fls',\n And = 'and',\n Or = 'or',\n Nand = 'nand',\n Nor = 'nor',\n\n Equal = 'eq',\n NotEqual = 'neq',\n LessThen = 'lt',\n GreaterThen = 'gt',\n Contains = 'in',\n IsSet = 'is',\n IsNotSet = 'ins',\n IsEmpty = 'ie',\n IsNotEmpty = 'ine',\n}\nconst FilterBoolRuleTypes = [\n FilterRuleType.True, FilterRuleType.False,\n FilterRuleType.And, FilterRuleType.Nand, FilterRuleType.Or, FilterRuleType.Nor,\n];\nconst FilterFieldRuleTypes = [\n FilterRuleType.Equal, FilterRuleType.NotEqual, FilterRuleType.Contains,\n FilterRuleType.LessThen, FilterRuleType.GreaterThen,\n FilterRuleType.IsSet, FilterRuleType.IsNotSet,\n FilterRuleType.IsEmpty, FilterRuleType.IsNotEmpty,\n];\n\nconst FilterFieldNoOperandTypes = [\n FilterRuleType.IsSet, FilterRuleType.IsNotSet,\n FilterRuleType.IsEmpty, FilterRuleType.IsNotEmpty,\n];\n\nexport class FilterRuleContext {\n now: Date = new Date();\n\n firstDayOfWeek: number = 1;\n}\n\nexport abstract class FilterRule {\n id = 0;\n\n type = FilterRuleType.None;\n\n prepare(context: FilterRuleContext) {}\n\n preparedCheck: FilterCheckFnc = NoFilterCheckFnc;\n\n check(object: FilterCheckObject) {\n const check = this.preparedCheck(object);\n // console.log(`FilterRule (${this.type}) check:${check}`);\n return check;\n }\n\n static isFilterBoolRuleType(type: FilterRuleType) {\n return FilterBoolRuleTypes.includes(type);\n }\n\n static isFilterFieldRuleType(type: FilterRuleType) {\n return FilterFieldRuleTypes.includes(type);\n }\n\n static isFilterFieldNoOperandType(type: FilterRuleType) {\n return FilterFieldNoOperandTypes.includes(type);\n }\n\n static newFilterBoolRule(type: FilterRuleType, rules?: FilterRule[]) {\n if (!this.isFilterBoolRuleType(type)) return null;\n\n const fbr = new FilterBoolRule(type, rules);\n fbr.type = type;\n return fbr;\n }\n\n static newFilterFieldRule(type: FilterRuleType, field: string, fieldType: string, operand: FilterOperandType = null) {\n if (!this.isFilterFieldRuleType(type)) return null;\n if (field === '') return null;\n\n const ffr = new FilterFieldRule();\n ffr.type = type;\n ffr.field = field;\n ffr.fieldType = fieldType as FilterFieldType;\n ffr.operand = operand;\n return ffr;\n }\n}\n\n// no\nexport class FilterNoRule extends FilterRule {\n type = FilterRuleType.None;\n}\n\n// bool\nexport class FilterBoolRule extends FilterRule {\n rules: FilterRule[] = [];\n\n prepare(context: FilterRuleContext) {\n this.rules.forEach((r) => r.prepare(context));\n\n switch (this.type) {\n case FilterRuleType.False:\n this.preparedCheck = (object: FilterCheckObject) => false; break;\n case FilterRuleType.True:\n this.preparedCheck = (object: FilterCheckObject) => true; break;\n case FilterRuleType.And:\n this.preparedCheck = (object: FilterCheckObject) => this.rules.every((r) => r.check(object)); break;\n case FilterRuleType.Nand:\n this.preparedCheck = (object: FilterCheckObject) => this.rules.some((r) => !r.check(object)); break;\n case FilterRuleType.Or:\n this.preparedCheck = (object: FilterCheckObject) => this.rules.some((r) => r.check(object)); break;\n case FilterRuleType.Nor:\n this.preparedCheck = (object: FilterCheckObject) => this.rules.every((r) => !r.check(object)); break;\n default:\n }\n }\n\n constructor(type?: FilterRuleType, rules?: FilterRule[]) {\n super();\n this.type = type ?? FilterRuleType.False;\n this.rules = rules ?? [];\n }\n}\n\n// field\nexport enum FilterFieldType {\n None = 'none',\n String = 'string',\n Number = 'number',\n Boolean = 'boolean',\n Date = 'date',\n DateNoYear = 'datenoyear',\n}\n\nexport class FilterFieldRule extends FilterRule {\n field: string = '';\n\n fieldType: FilterFieldType = FilterFieldType.None;\n\n operand: FilterOperandType = null;\n\n prepare(context: FilterRuleContext) {\n const operation = this.operationFromType(context);\n this.preparedCheck = (object: FilterCheckObject) => operation.check(object[this.field]);\n }\n\n check(object: FilterCheckObject) {\n const check = super.check(object);\n // console.log(`${this.field}: [${object[this.field]}] ${this.type} [${this.operand}] = ${check}`);\n return check;\n }\n\n operationFromType(context: FilterRuleContext) {\n const { operand } = this;\n const { type } = this;\n const { fieldType } = this;\n\n if ([FilterRuleType.IsSet, FilterRuleType.IsNotSet].includes(type)) {\n const op = new IsSetFieldOperation();\n op.neg = type === FilterRuleType.IsNotSet;\n return op;\n }\n\n if ([FilterRuleType.IsEmpty, FilterRuleType.IsNotEmpty].includes(type)) {\n const op = new IsEmptyFieldOperation();\n op.neg = type === FilterRuleType.IsNotEmpty;\n return op;\n }\n\n if (fieldType === FilterFieldType.Date && operand && FieldDateOperation.isDateOperand(operand)) {\n const op = new EqualDateFieldOperation(operand as FilterDateOperand, context.now, context.firstDayOfWeek);\n switch (type) {\n case FilterRuleType.Equal: return op;\n case FilterRuleType.NotEqual: op.neg = true; return op;\n default: return new NoOperation();\n }\n }\n\n if (fieldType === FilterFieldType.DateNoYear && operand && FieldDateOperation.isDateOperand(operand)) {\n const op = new EqualDateNoYearFieldOperation(operand as FilterDateOperand, context.now, context.firstDayOfWeek);\n switch (type) {\n case FilterRuleType.Equal: return op;\n case FilterRuleType.NotEqual: op.neg = true; return op;\n default: return new NoOperation();\n }\n }\n\n switch (type) {\n case FilterRuleType.Equal: return new EqualFieldOperation(operand);\n case FilterRuleType.NotEqual: { const op = new EqualFieldOperation(operand); op.neg = true; return op; }\n case FilterRuleType.Contains: return new ContainsFieldOperation(operand);\n case FilterRuleType.LessThen: return new LessThenFieldOperation(operand);\n case FilterRuleType.GreaterThen: return new GreaterThenFieldOperation(operand);\n default: return new NoOperation();\n }\n }\n}\n","/* eslint-disable import/prefer-default-export */\n/* eslint-disable max-classes-per-file */\n\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport {\n FilterRule, FilterBoolRule, FilterRuleType, FilterRuleContext,\n} from './filter-rule';\n\nconst FILTER_VERSION = '0.9';\n\nexport class Filter {\n id: number = 0;\n\n version: string = FILTER_VERSION;\n\n rule: FilterRule = new FilterBoolRule();\n\n static newFilter(version: string, rule: FilterRule) {\n const f = new Filter();\n f.version = version;\n f.rule = rule;\n return f;\n }\n\n static newFilterFrom3Rules(\n rules: {defineRules: FilterRule[], narrowRules: FilterRule[], excludeRules: FilterRule[]},\n ) {\n const f = new Filter();\n f.version = FILTER_VERSION;\n f.set3Rules(rules);\n return f;\n }\n\n static newFilterFromRule(rule: FilterRule) {\n const f = new Filter();\n f.version = FILTER_VERSION;\n f.rule = rule;\n return f;\n }\n\n set3Rules(rules: {defineRules: FilterRule[], narrowRules: FilterRule[], excludeRules: FilterRule[]}) {\n let { defineRules } = rules;\n const { narrowRules } = rules;\n const { excludeRules } = rules;\n\n defineRules = defineRules.length > 0 ? defineRules : [FilterRule.newFilterBoolRule(FilterRuleType.True)!];\n\n this.rule = new FilterBoolRule(FilterRuleType.And, [\n new FilterBoolRule(FilterRuleType.Or, defineRules), // false if none\n new FilterBoolRule(FilterRuleType.And, narrowRules), // true if none\n new FilterBoolRule(FilterRuleType.Nor, excludeRules), // true if none\n ]);\n }\n\n get3Rules(): ({ defineRules: FilterRule[], narrowRules: FilterRule[], excludeRules: FilterRule[] }) {\n const rs = (this.rule as FilterBoolRule)?.rules;\n\n let defineRules = (rs[0] as FilterBoolRule)?.rules ?? [];\n const narrowRules = (rs[1] as FilterBoolRule)?.rules ?? [];\n const excludeRules = (rs[2] as FilterBoolRule)?.rules ?? [];\n\n if (defineRules.length === 1 && defineRules[0].type === FilterRuleType.True) defineRules = [];\n\n return { defineRules, narrowRules, excludeRules };\n }\n\n prepare(context?: FilterRuleContext) {\n let ctx = context;\n if (!ctx) {\n ctx = new FilterRuleContext();\n ctx.firstDayOfWeek = localized.firstDayOfWeek();\n }\n\n this.rule.prepare(ctx);\n }\n\n check(object: { [field: string]: any }, context?: FilterRuleContext) {\n this.prepare(context);\n const res = this.rule.check(object);\n return res;\n }\n\n count(objects: T[], context?: FilterRuleContext): number {\n this.prepare(context);\n let count = 0;\n objects.forEach((o) => { if (this.rule.check(o)) count += 1; });\n return count;\n }\n\n filter(objects: T[], context?: FilterRuleContext): T[] {\n this.prepare(context);\n return objects.filter((o) => this.rule.check(o));\n }\n}\n","import OpeningHour from '@/model/OpeningHour';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport {\n minutesFromTimeString, niceTimeTextFromSlot, slotFromMinutes, weekdayNumberFromDateDay,\n} from './time-utils';\n\nexport class SimpleHour {\n beginSlot: number = slotFromMinutes(minutesFromTimeString('18:00'));\n\n endSlot: number = slotFromMinutes(minutesFromTimeString('22:00'));\n\n isOpen: boolean = false;\n}\n\n// in weekdays - starting from 1 (Mon === 1, Tue === 2, ....)\nexport function openingHoursToSimpleHoursInWeekdays(\n hourMaps: Map[],\n is30minInterval: boolean,\n): SimpleHour[] {\n const simpleHours: SimpleHour[] = [];\n\n hourMaps.forEach((hourMap, di) => {\n const hours = Array.from(hourMap.values()).sort((o1, o2) => o1.timeIndex - o2.timeIndex);\n const sh = new SimpleHour();\n if (hours.length > 0) {\n sh.beginSlot = hours[0].slot;\n if (sh.beginSlot % 2 === 1 && is30minInterval) sh.beginSlot -= 1; // if 30 minutes step\n sh.endSlot = hours[hours.length - 1].slot + 1;\n if (sh.endSlot % 2 === 1 && is30minInterval) sh.endSlot += 1;\n sh.isOpen = true;\n }\n\n simpleHours.push(sh);\n });\n\n return simpleHours;\n}\n\nexport function roundedSimpleHoursInWeekdays(simpleHours: SimpleHour[]) {\n return simpleHours.map((osh) => {\n const sh = new SimpleHour();\n sh.isOpen = osh.isOpen; sh.beginSlot = osh.beginSlot; sh.endSlot = osh.endSlot;\n if (sh.beginSlot % 2 === 1) sh.beginSlot -= 1; // if 30 minutes step\n if (sh.endSlot % 2 === 1) sh.endSlot += 1;\n return sh;\n });\n}\n\n// in weekdays - starting from 1 (Mon === 1, Tue === 2, ....)\nexport function hoursFromSimpleHoursInWeekdays(simpleHours: SimpleHour[], is30minInterval: boolean): OpeningHour[] {\n const slotStep = is30minInterval ? 2 : 1;\n const hours: OpeningHour[] = [];\n\n localized.weekdays().forEach((day) => {\n const weekdayNumber = weekdayNumberFromDateDay(day.value);\n if (!simpleHours[weekdayNumber].isOpen) return;\n\n for (let si = simpleHours[weekdayNumber].beginSlot; si < simpleHours[weekdayNumber].endSlot; si += slotStep) {\n const hour = OpeningHour.fromWeekdayAndSlot(weekdayNumber, si);\n hours.push(hour);\n }\n });\n\n hours.sort((o1, o2) => o1.order - o2.order);\n\n return hours;\n}\n\n// in weekdays - starting from 1 (Mon === 1, Tue === 2, ....)\nexport function guessIntervalFromHoursInWeekdays(hourMaps: Map[]): number {\n let interval = 30;\n if (hourMaps.some((hourMap) => Array.from(hourMap.values()).some((oh) => oh.slot % 2 === 1))) { interval = 15; }\n return interval;\n}\n\nexport function isOnlySimpleHours(hourMaps: Map[]): boolean {\n // guess interval\n const interval = guessIntervalFromHoursInWeekdays(hourMaps);\n\n // for all days\n const special = hourMaps.some((hourMap, di) => {\n // sorted hours\n const hours = Array.from(hourMap.values()).sort((o1, o2) => o1.timeIndex - o2.timeIndex);\n // no hours -> nothing special\n if (hours.length === 0) return false;\n\n // begin and end slot\n const bs = hours[0].slot;\n const es = hours[hours.length - 1].slot;\n\n // test slots in continuous sequence\n for (let i = 0; i < hours.length; i += 1) {\n // test hour in continuous sequence\n if (hours[i].slot !== bs + i * (interval / 15)) return true;\n // test hours special\n if (hours[i].isCustom) return true;\n }\n\n // nothing special\n return false;\n });\n\n return !special;\n}\n","import Account from '@/model/Account';\nimport AccountSetting from '@/model/AccountSettings';\nimport Employee from '@/model/Employee';\nimport { cloneModel } from '@/model/model-utils';\n\nexport interface IStorageData {\n token?: string;\n username?: string;\n account?: Account;\n accountSetting?: AccountSetting;\n floorplanZoom?: number;\n timetableZoom?: number;\n timetablePosition?: number;\n lastEmployee?: Employee;\n language?: string;\n cameraOnboarded?: boolean;\n cameraActive?: boolean;\n dashboardShowDetails?: boolean;\n languagePromptDisplayed?: boolean;\n fcmToken?: string;\n pwaBarDismissCount?: number;\n}\n\nclass Storage {\n data: IStorageData = {};\n\n getFcmToken() { return this.data.fcmToken ?? null; }\n\n getToken() { return this.data.token ?? null; }\n\n getUsername() { return this.data.username ?? null; }\n\n getAccount() { return this.data.account ?? null; }\n\n getAccountSetting() { return this.data.accountSetting ?? null; }\n\n getFloorplanZoom() { return this.data.floorplanZoom ?? null; }\n\n getTimetableZoom() { return this.data.timetableZoom ?? null; }\n\n getTimetablePosition() { return this.data.timetablePosition ?? null; }\n\n getLastEmployee() { return this.data.lastEmployee ?? null; }\n\n getLanguage() { return this.data.language ?? null; }\n\n getCameraOnboarded() { return this.data.cameraOnboarded ?? null; }\n\n getCameraActive() { return this.data.cameraActive ?? false; }\n\n dashboardShowDetails() { return this.data.dashboardShowDetails ?? false; }\n\n getLanguagePromptDisplayed() { return this.data.languagePromptDisplayed ?? false; }\n\n getPwaBarDismissCount() { return this.data.pwaBarDismissCount ?? 0; }\n\n setToken(value: string | null) {\n this.data.token = value || undefined;\n this.saveData();\n }\n\n setFcmToken(token: string | null) {\n this.data.fcmToken = token || undefined;\n this.saveData();\n }\n\n setUsername(value: string | null) {\n this.data.username = value || undefined;\n this.saveData();\n }\n\n setAccount(value: Account | null) {\n this.data.account = value || undefined;\n this.saveData();\n }\n\n setAccountSetting(value: AccountSetting | null) {\n this.data.accountSetting = value || undefined;\n this.saveData();\n }\n\n setFloorplanZoom(value: number | null) {\n this.data.floorplanZoom = value || undefined;\n this.saveData();\n }\n\n setTimetableZoom(value: number | null) {\n this.data.timetableZoom = value || undefined;\n this.saveData();\n }\n\n setTimetablePosition(value: number | null) {\n this.data.timetablePosition = value || undefined;\n this.saveData();\n }\n\n setLastEmployee(value: Employee | null) {\n this.data.lastEmployee = value || undefined;\n this.saveData();\n }\n\n setLanguage(value: string | null) {\n this.data.language = value || undefined;\n this.saveData();\n }\n\n setCameraOnboarded(value: boolean | null) {\n this.data.cameraOnboarded = value || undefined;\n this.saveData();\n }\n\n setCameraActive(value: boolean | null) {\n this.data.cameraActive = value || undefined;\n this.saveData();\n }\n\n setDashboardShowDetails(value: boolean | null) {\n this.data.dashboardShowDetails = value || undefined;\n this.saveData();\n }\n\n setLanguagePromptDisplayed(value: boolean) {\n this.data.languagePromptDisplayed = value;\n this.saveData();\n }\n\n setPwaBarDismissCount(value: number) {\n this.data.pwaBarDismissCount = value;\n this.saveData();\n }\n\n saveData() {\n localStorage.setItem('data', JSON.stringify(this.data));\n }\n\n clear(all = false) {\n if (all) {\n this.data = {};\n } else {\n this.data.token = undefined;\n this.data.account = undefined;\n this.data.accountSetting = undefined;\n this.data.fcmToken = undefined;\n }\n this.saveData();\n }\n\n constructor() {\n const text = localStorage.getItem('data');\n if (text) this.data = JSON.parse(text) ?? {};\n\n // recreate objects\n if (this.data.account) this.data.account = Account.fromData(this.data.account);\n if (this.data.accountSetting) AccountSetting.fromData(this.data.accountSetting);\n }\n\n setData(data: IStorageData) {\n this.data = { ...data };\n\n // recreate objects\n if (this.data.account) this.data.account = cloneModel(this.data.account);\n if (this.data.accountSetting) this.data.accountSetting = cloneModel(this.data.accountSetting);\n\n this.saveData();\n }\n\n getData(): IStorageData {\n return this.data;\n }\n}\n\nconst storage = new Storage();\nexport default storage;\n","export enum MessageType {\n SendGrid = 'SendGrid',\n APNS = 'APNS',\n MessageBird = 'MessageBird',\n Selligent = 'Selligent',\n SMTP = 'SMTP',\n}\n\nexport const EmailMessageTypes = new Set([MessageType.SendGrid, MessageType.SMTP]);\nexport const SmsMessageTypes = new Set([MessageType.MessageBird]);\n\nexport enum MessageLogStatus {\n Blocked = 'Blocked',\n Bounce = 'Bounce',\n Failure = 'Failure',\n Invalid = 'Invalid',\n SendX = '_send',\n Send = 'Send',\n Delivered = 'Delivered',\n}\n","/* eslint-disable no-underscore-dangle */\nimport store from '@/store/store';\nimport { Module } from 'vuex';\nimport IStoreState from '@/store/store-state';\n\ninterface Client {\n vue: Vue;\n reloadAction?: () => Promise;\n}\n\nconst clientsByModule = new Map();\n\nstore.watch((state, getters) => getters.isLoaded, async (value: boolean, oldValue: boolean) => {\n if (!value || value === oldValue) return;\n\n const clients = Array.from(clientsByModule.values());\n for (let i = 0; i < clients.length; i += 1) {\n for (let j = 0; j < clients[i].length; j += 1) {\n const client = clients[i][j];\n // eslint-disable-next-line no-await-in-loop\n if (client.reloadAction) await client.reloadAction();\n }\n }\n});\n\nexport async function loadStoreModule(\n vue: Vue,\n name: string,\n module: Module,\n reloadAction?: () => Promise,\n) {\n // client already exists?\n const clients = clientsByModule.get(name) ?? [];\n if (clients.some((c) => c.vue === vue)) return;\n\n // register module\n if (clients.length === 0) {\n // store.registerModule([name], module);\n clientsByModule.set(name, clients);\n }\n\n if (store.getters.isLoaded && reloadAction) await reloadAction();\n\n // save client\n clients.push({ vue, reloadAction });\n\n console.log('loadStoreModule:', clients);\n}\n\nexport async function unloadStoreModule(vue: Vue, name: string, resetAction?: () => Promise) {\n // delay uninstall\n await new Promise((resolve) => { setTimeout(resolve, 1000); });\n\n // find client\n const clients = clientsByModule.get(name) ?? [];\n const index = clients.findIndex((c) => c.vue === vue);\n if (index < 0) return;\n const client = clients.splice(index, 1)[0];\n\n // reset module if no client\n if (clients.length === 0) {\n if (resetAction) resetAction();\n // store.unregisterModule(name);\n clientsByModule.delete(name);\n }\n\n console.log('unloadStoreModule:', clients);\n}\n\nexport async function tryUnloadStoreModule(name: string, resetAction?: () => Promise) {\n // check no of clients\n const clients = clientsByModule.get(name) ?? [];\n if (clients.length === 0 && resetAction) resetAction(); // reset module if no client\n\n console.log('tryUnloadStoreModule:', clients);\n}\n","import store from '@/store/store';\nimport { dateByAddingMinutes, dateFlooredToMinutes } from './time-utils';\nimport Timer from './timer';\n\nlet timer: Timer;\n\nasync function update() {\n const now = await store.dispatch('updateNow') as Date;\n const next = dateFlooredToMinutes(dateByAddingMinutes(now, 1));\n timer.schedule(next);\n}\n\ntimer = new Timer(async () => {\n await update();\n});\n\n// eslint-disable-next-line import/prefer-default-export\nexport async function startTodayUpdatesAsync() {\n return update();\n}\n","export enum PaymentWizardMode {\n BillingDetails = 'billing_details', // edit customer billing details\n Subscription = 'subscription', // purchase subscription from selector or price\n Invoice = 'invoice', // pay invoice\n Result = 'result', // show payment result or setup result (new payment method)\n NewPaymentMethod = 'new-payment-method', // add new payment method\n Prices = 'prices', // pay for product prices\n}\n\nexport enum PaymentWizardStepKey {\n PlanSelector = 'plan-selector',\n BillingDetails = 'billing-details',\n PaymentDetails = 'payment-details',\n PaymentSuccess = 'payment-success',\n NewPaymentMethod = 'new-payment-method',\n}\n\n// billing wizard step\nexport interface PaymentWizardStep {\n key: PaymentWizardStepKey;\n label: string;\n complete: boolean;\n\n hideCancel?: boolean;\n hideSubmit?: boolean;\n submitText?: string;\n submitColor?: string;\n prepareAction?: () => Promise;\n submitAction?: () => Promise;\n cancelAction?: () => Promise;\n reset?: () => Promise;\n}\n","/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\n\nimport { ReportsParams, MsgReports, TabReports } from '@/grpc-pb/reports_service_pb';\nimport { dateByAddingMinutes } from './time-utils';\n\nconst KEEP_TIME = 15 * 60 * 1000; // keep records in cache for 15 mins\n\ninterface TabReportEntry {\n timestamp: Date,\n params: ReportsParams.AsObject,\n reports: Map,\n}\n\ninterface MsgReportEntry {\n timestamp: Date,\n params: ReportsParams.AsObject,\n reports: Map,\n}\n\nclass Cache {\n tabReportsEntries: TabReportEntry[];\n\n MsgReportsEntries: MsgReportEntry[];\n\n resetTimeout: NodeJS.Timeout | null;\n\n constructor() {\n this.reset();\n this.tabReportsEntries = [];\n this.MsgReportsEntries = [];\n this.resetTimeout = null;\n }\n\n reset() {\n this.tabReportsEntries = [];\n this.MsgReportsEntries = [];\n\n if (this.resetTimeout) clearTimeout(this.resetTimeout);\n this.resetTimeout = null;\n }\n\n scheduleReset() {\n if (this.resetTimeout) clearTimeout(this.resetTimeout);\n this.resetTimeout = setTimeout(() => { this.reset(); }, KEEP_TIME);\n }\n\n removeOld() {\n const mints = dateByAddingMinutes(new Date(), -KEEP_TIME);\n this.tabReportsEntries = this.tabReportsEntries.filter((re) => re.timestamp > mints);\n this.MsgReportsEntries = this.MsgReportsEntries.filter((re) => re.timestamp > mints);\n }\n\n removeModified(dateIndices: number[]) {\n this.tabReportsEntries = this.tabReportsEntries.filter((re) => {\n const isaffected = dateIndices.some((di) => re.params.beginDate <= di && re.params.endDate >= di);\n return !isaffected;\n });\n }\n\n addTabReports(reports: Map, params: ReportsParams.AsObject) {\n const entry: TabReportEntry = {\n timestamp: new Date(),\n params,\n reports,\n };\n this.tabReportsEntries.push(entry);\n\n this.removeOld();\n this.scheduleReset();\n }\n\n addMsgReports(reports: Map, params: ReportsParams.AsObject) {\n const entry: MsgReportEntry = {\n timestamp: new Date(),\n params,\n reports,\n };\n this.MsgReportsEntries.push(entry);\n }\n\n findTabReports(begin: number, end: number, binType: ReportsParams.ReportsBinType, forceExact = false) {\n const exact = forceExact || [ReportsParams.ReportsBinType.OVER_DAY, ReportsParams.ReportsBinType.OVER_YEAR].includes(binType);\n const entry = exact\n ? this.tabReportsEntries.find((r) => r.params.binType === binType && r.params.beginDate === begin && r.params.endDate === end)\n : this.tabReportsEntries.find((r) => r.params.binType === binType && r.params.beginDate >= begin && r.params.endDate <= end);\n\n return entry;\n }\n\n findMsgReports(begin: number, end: number, binType: ReportsParams.ReportsBinType, forceExact = false) {\n const exact = forceExact || [ReportsParams.ReportsBinType.OVER_DAY, ReportsParams.ReportsBinType.OVER_YEAR].includes(binType);\n const entry = exact\n ? this.MsgReportsEntries.find((r) => r.params.binType === binType && r.params.beginDate === begin && r.params.endDate === end)\n : this.MsgReportsEntries.find((r) => r.params.binType === binType && r.params.beginDate >= begin && r.params.endDate <= end);\n\n return entry;\n }\n}\n\nconst ReportsCache = new Cache();\n\nexport default ReportsCache;\n","/* eslint-disable no-param-reassign */\n/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\nimport {\n CampaignReports, FeedbackReports, FeedbackReportsBin, FeedbackReportsBinStars, GuestsReports, MsgReports, ReportsParams, ServiceReports, TabReports, WeekdayReports,\n} from '@/grpc-pb/reports_service_pb';\nimport i18n from '@/plugins/i18n';\nimport { strcmp } from './common';\nimport { DateRange, DateRangePeriod } from './date-range';\nimport {\n areDatesEqual,\n dateByAddingDays,\n dateFromDateAndTimeIndex, daysInBetweenDates, hourMinFromSlot, hoursInBetweenDates, monthsInBetweenDates, setDateHoursMinutes, setDateYearMonth, yearsInBetweenDates,\n} from './time-utils';\n\n// eslint-disable-next-line import/prefer-default-export\nexport function reportsBinTypeFromDateRange(dateRange: DateRange): ReportsParams.ReportsBinType {\n switch (dateRange.period) {\n case DateRangePeriod.Custom: return areDatesEqual(dateRange.beginDate, dateRange.endDate) ? ReportsParams.ReportsBinType.OVER_DAY : ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.Today: return ReportsParams.ReportsBinType.OVER_DAY;\n case DateRangePeriod.Tomorrow: return ReportsParams.ReportsBinType.OVER_DAY;\n case DateRangePeriod.Yesterday: return ReportsParams.ReportsBinType.OVER_DAY;\n case DateRangePeriod.ThisWeek: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.NextWeek: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.LastWeek: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.ThisMonth: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.NextMonth: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.LastMonth: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.CustomMonth: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.Next30Days: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.Last30Days: return ReportsParams.ReportsBinType.BY_DAYS;\n case DateRangePeriod.ThisYear: return ReportsParams.ReportsBinType.OVER_YEAR;\n case DateRangePeriod.NextYear: return ReportsParams.ReportsBinType.OVER_YEAR;\n case DateRangePeriod.LastYear: return ReportsParams.ReportsBinType.OVER_YEAR;\n case DateRangePeriod.CustomYear: return ReportsParams.ReportsBinType.OVER_YEAR;\n default: return ReportsParams.ReportsBinType.BY_DAYS;\n }\n}\n\nexport function reportsBinsFromDateRange(dateRange: DateRange): number {\n const begin = dateRange.beginDate;\n const end = dateByAddingDays(dateRange.endDate, 1);\n let bins = 0;\n\n const binType = reportsBinTypeFromDateRange(dateRange);\n switch (binType) {\n case ReportsParams.ReportsBinType.OVER_DAY: return 24;\n case ReportsParams.ReportsBinType.OVER_YEAR: return 12;\n\n case ReportsParams.ReportsBinType.BY_HOURS: bins = hoursInBetweenDates(end, begin); break;\n case ReportsParams.ReportsBinType.BY_DAYS: bins = daysInBetweenDates(end, begin); break;\n case ReportsParams.ReportsBinType.BY_MONTHS: bins = monthsInBetweenDates(end, begin); break;\n case ReportsParams.ReportsBinType.BY_YEARS: bins = yearsInBetweenDates(end, begin); break;\n\n default: return 0;\n }\n\n return bins + 1;\n}\n\nexport function reportsValidateDateRange(dateRange: DateRange): string | undefined {\n const bins = reportsBinsFromDateRange(dateRange);\n if (bins < 1) return 'Date range mismatch';\n if (bins > 100) return 'Date range too wide';\n\n if (dateRange.beginDate < new Date(2000, 0)) return 'Date range begin too low';\n if (dateRange.endDate > new Date(2100, 0)) return 'Date range end too high';\n\n return undefined;\n}\n\nexport enum CategoryType {\n HOUR = 'hour',\n DAY = 'day',\n MONTH = 'month',\n YEAR = 'year',\n}\n\nexport function reportsCategoryTypeFromBinType(binType: ReportsParams.ReportsBinType) {\n switch (binType) {\n case ReportsParams.ReportsBinType.BY_HOURS: return CategoryType.HOUR;\n case ReportsParams.ReportsBinType.BY_DAYS: return CategoryType.DAY;\n case ReportsParams.ReportsBinType.BY_MONTHS: return CategoryType.MONTH;\n case ReportsParams.ReportsBinType.BY_YEARS: return CategoryType.YEAR;\n case ReportsParams.ReportsBinType.OVER_DAY: return CategoryType.HOUR;\n case ReportsParams.ReportsBinType.OVER_YEAR: return CategoryType.MONTH;\n default: return CategoryType.DAY;\n }\n}\n\nexport interface ChartData {\n category?: Date[],\n series?: string[],\n dataset?: number[][],\n totals?: number[],\n total?: number,\n categoryType?: CategoryType,\n avgDataset?: number[];\n}\n\nexport type PieChartData = {value: number, name: string, unit?: string}[]\n\nexport function reportsDatesForSlots(date: Date): Date[] {\n return Array.from({ length: 4 * 18 }, (x, slot) => {\n const { h, m } = hourMinFromSlot(6 * 4 + slot);\n return setDateHoursMinutes(date, h, m);\n });\n}\n\nexport function reportsCategoryFromReportsParams(params: ReportsParams.AsObject, startAt6 = true): { categoryType: CategoryType, category: Date[] } {\n const date = dateFromDateAndTimeIndex(params.beginDate);\n if (!date) return { categoryType: CategoryType.DAY, category: [] };\n\n // 24 hours\n if (params.binType === ReportsParams.ReportsBinType.OVER_DAY) {\n const categoryType = CategoryType.HOUR;\n const category = Array.from({ length: startAt6 ? 18 : 24 }, (x, hours) => setDateHoursMinutes(date, hours + (startAt6 ? 6 : 0), 0));\n return { categoryType, category };\n }\n\n // 12 months\n if (params.binType === ReportsParams.ReportsBinType.OVER_YEAR) {\n const categoryType = CategoryType.MONTH;\n const category = Array.from({ length: 12 }, (x, month) => setDateYearMonth(date, null, month));\n return { categoryType, category };\n }\n\n // x days\n if (params.binType === ReportsParams.ReportsBinType.BY_DAYS) {\n const categoryType = CategoryType.DAY;\n const category = Array.from({ length: params.bins }, (x, days) => dateByAddingDays(date, days));\n return { categoryType, category };\n }\n\n return { categoryType: CategoryType.DAY, category: [] };\n}\n\nexport function reportsForMsgTypes(\n msgTypes: Set,\n reportsParams: ReportsParams.AsObject,\n msgReports: Map,\n): MsgReports.AsObject {\n // add source array values to dest array\n const addArray = (da: number[], sa: number[], offset: number, length: number) => {\n if (da.length < length) da.push(...Array(length - da.length).fill(0));\n for (let i = 0; i < length; i += 1) da[i] += sa[offset + i];\n return da;\n };\n\n // create reports\n const offset = 0;\n const length = reportsParams.bins;\n\n const reports: MsgReports.AsObject = {\n msgType: '',\n sentList: new Array(length).fill(0),\n errorsList: new Array(length).fill(0),\n };\n\n // process msgs from reports\n msgReports.forEach((mr, mt) => {\n // check msg is relevant\n if (!msgTypes.has(mt)) return;\n\n // add msgs reports\n addArray(reports.sentList, mr.sentList, offset, length);\n addArray(reports.errorsList, mr.errorsList, offset, length);\n });\n\n return reports;\n}\n\nexport function reportsForTabs(\n tabs: Set,\n reportsParams: ReportsParams.AsObject,\n tabReports: Map,\n startAt6 = true,\n): TabReports.AsObject {\n // add source array values to dest array\n const addArray = (da: number[], sa: number[], offset: number, length: number) => {\n if (da.length < length) da.push(...Array(length - da.length).fill(0));\n for (let i = 0; i < length; i += 1) da[i] += sa[offset + i];\n return da;\n };\n\n // add source obj lists to dest obj lists\n const addLists = (dobj: any, sobj: any, fields: string[], offset: number, length: number) => {\n if (!sobj) return dobj;\n fields.forEach((field) => addArray(dobj[field], sobj[field], offset, length));\n return dobj;\n };\n\n // add source obj lists to dest obj lists\n const createLists = (obj: any, fields: string[], length: number) => {\n fields.forEach((field) => { if (!obj[field]) obj[field] = new Array(length).fill(0); });\n return obj;\n };\n\n const guestsLists = ['reservationsList', 'guestsList', 'returningList', 'cancelationsList', 'noshowsList', 'partySizeSumsList', 'partySizeCountsList'];\n const campaignLists = ['reservationsList', 'guestsList', 'daysAdvanceSumsList', 'daysAdvanceCountsList'];\n const serviceLists = ['reservationsList', 'guestsList', 'revenueSumsList', 'revenueCountsList'];\n // const feedbackLists = ['overallSumsList', 'overallCountsList', 'foodSumsList', 'ambienceSumsList', 'serviceSumsList', 'breakdownCountsList'];\n\n // create reports\n let offset = 0;\n let length = reportsParams.bins;\n if (startAt6 && reportsParams.binType === ReportsParams.ReportsBinType.OVER_DAY) {\n offset = 6;\n length = 18;\n }\n\n // const feedbacksBinList = [...new Array(length)].map((e, i) => ({\n // overall: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n // food: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n // service: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n // ambience: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n // } as FeedbackReportsBin.AsObject));\n\n const reports: TabReports.AsObject = {\n tabId: 0,\n guests: createLists({}, guestsLists, length) as GuestsReports.AsObject,\n guestsDtc: createLists({}, guestsLists, length) as GuestsReports.AsObject,\n campaignsList: [],\n campaignsDtcList: [],\n servicesList: [],\n weekdaysList: Array.from({ length: 7 }, (x, i) => {\n const wd: WeekdayReports.AsObject = {\n weekday: i,\n guests: createLists({}, guestsLists, 18 * 4) as GuestsReports.AsObject,\n servicesList: [],\n };\n return wd;\n }),\n // feedbacks: createLists({}, feedbackLists, length) as FeedbackReports.AsObject,\n feedbacks: {\n binsList: [...new Array(length)].map((e, i) => ({\n overall: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n food: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n service: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n ambience: { starsList: [0, 0, 0, 0, 0] } as FeedbackReportsBinStars.AsObject,\n } as FeedbackReportsBin.AsObject)),\n } as FeedbackReports.AsObject,\n };\n\n // process tabs from reports\n tabReports.forEach((tr, tid) => {\n // check tab is relevant\n if (!tabs.has(tid)) return;\n\n // fill guests reports\n addLists(reports.guests, tr.guests, guestsLists, offset, length);\n addLists(reports.guestsDtc, tr.guestsDtc, guestsLists, offset, length);\n // addLists(reports.feedbacks, tr.feedbacks, feedbackLists, offset, length);\n for (let bi = 0; bi < length; bi += 1) {\n for (let i = 0; i < 5; i += 1) {\n reports.feedbacks!.binsList[bi].overall!.starsList[i] += tr.feedbacks?.binsList[bi + offset].overall?.starsList[i] ?? 0;\n reports.feedbacks!.binsList[bi].food!.starsList[i] += tr.feedbacks?.binsList[bi + offset].food?.starsList[i] ?? 0;\n reports.feedbacks!.binsList[bi].service!.starsList[i] += tr.feedbacks?.binsList[bi + offset].service?.starsList[i] ?? 0;\n reports.feedbacks!.binsList[bi].ambience!.starsList[i] += tr.feedbacks?.binsList[bi + offset].ambience?.starsList[i] ?? 0;\n }\n }\n\n // fill campaign reports\n tr.campaignsList.forEach((c) => {\n let campaign = reports.campaignsList.find((rc) => rc.campaignName === c.campaignName);\n if (!campaign) {\n campaign = createLists({ campaignName: c.campaignName }, campaignLists, length) as CampaignReports.AsObject;\n reports.campaignsList.push(campaign);\n }\n addLists(campaign, c, campaignLists, offset, length);\n });\n\n tr.campaignsDtcList.forEach((c) => {\n let campaign = reports.campaignsDtcList.find((rc) => rc.campaignName === c.campaignName);\n if (!campaign) {\n campaign = createLists({ campaignName: c.campaignName }, campaignLists, length) as CampaignReports.AsObject;\n reports.campaignsDtcList.push(campaign);\n }\n addLists(campaign, c, campaignLists, offset, length);\n });\n\n // fill service reports\n tr.servicesList.forEach((s) => {\n let service = reports.servicesList.find((rs) => rs.serviceId === s.serviceId && rs.revenueCurrency === s.revenueCurrency);\n if (!service) {\n service = createLists({ serviceId: s.serviceId, serviceName: s.serviceName, revenueCurrency: s.revenueCurrency }, serviceLists, length) as ServiceReports.AsObject;\n reports.servicesList.push(service);\n }\n addLists(service, s, serviceLists, offset, length);\n });\n\n // fill weekdays reports\n tr.weekdaysList.forEach((wd, wdi) => {\n // find weekday\n const weekday = reports.weekdaysList[wdi];\n\n // fill guests reports\n addLists(weekday.guests, wd.guests, guestsLists, 6 * 4, 18 * 4);\n\n // fill service reports\n wd.servicesList.forEach((s) => {\n let service = weekday.servicesList.find((sls) => sls.serviceId === s.serviceId && sls.revenueCurrency === s.revenueCurrency);\n if (!service) {\n service = createLists({ serviceId: s.serviceId, serviceName: s.serviceName, revenueCurrency: s.revenueCurrency }, serviceLists, 18 * 4) as ServiceReports.AsObject;\n weekday.servicesList.push(service);\n }\n addLists(service, s, serviceLists, 6 * 4, 18 * 4);\n });\n });\n });\n\n // translate and sort campaigns\n reports.campaignsList.forEach((c) => {\n if (['user', 'online'].includes(c.campaignName)) c.campaignName = i18n.tc(`code.reservation_source.${c.campaignName}`);\n });\n reports.campaignsList.sort((c1, c2) => strcmp(c1.campaignName, c2.campaignName));\n\n // sort service\n const sortServices = (ss: ServiceReports.AsObject[]) => {\n const revenues = new Map();\n ss.forEach((s) => { revenues.set(s, s.revenueSumsList.reduce((sum, n) => sum + n, 0)); });\n ss.sort((s1, s2) => revenues.get(s2)! - revenues.get(s1)!);\n };\n\n sortServices(reports.servicesList);\n reports.weekdaysList.forEach((wdl) => sortServices(wdl.servicesList));\n\n // append service currency if needed\n const addCurrency = new Set(reports.servicesList.map((sr) => sr.revenueCurrency)).size > 1;\n if (addCurrency) {\n reports.servicesList.forEach((s) => { s.serviceName += ` ${s.revenueCurrency.toUpperCase()}`; });\n reports.weekdaysList.forEach((wdl) => wdl.servicesList.forEach((s) => { s.serviceName += ` ${s.revenueCurrency.toUpperCase()}`; }));\n }\n\n console.log('reportsForTabs: ', reports);\n\n return reports;\n}\n\n// zip lists\nexport function reportsZipLists(lists: any[][], addIndex = true): any[][] {\n if (lists.length === 0) return [];\n const length = Math.max(...lists.map((list) => list.length));\n return addIndex\n ? Array.from({ length }, (_, i) => [i, ...lists.map((list) => list[i] ?? undefined)])\n : Array.from({ length }, (_, i) => lists.map((list) => list[i] ?? undefined));\n}\n\n// sums\nexport function reportsListSum(list: number[]): number {\n return list.reduce((sum, n) => sum + n, 0);\n}\n\nexport function reportsListsSums(lists: number[][]): number[] {\n const length = Math.max(...lists.map((list) => list.length));\n return Array.from({ length }, ((_, i) => lists.map((list) => list[i] ?? 0).reduce((sum, n) => sum + n, 0)));\n}\n\n// sums with mask\nexport function reportsListSumWithMask(list: number[], mask: boolean[]): number {\n return list.reduce((sum, n, i) => sum + (mask[i] ? n : 0), 0);\n}\n\nexport function reportsListsSumsWithMask(lists: number[][], mask: boolean[][]): number[] {\n const length = Math.max(...lists.map((list) => list.length));\n return Array.from({ length }, ((_, i) => lists.map((list, listi) => (mask[listi][i] && list[i]) || 0).reduce((sum, n) => sum + n, 0)));\n}\n\n// percentages\nexport function reportsListPercentages(nomList: number[], denList: number[]): number[] {\n return nomList.map((v, i) => (v === 0 ? 0 : (v * 100) / denList[i]));\n}\nexport function reportsListPercentagesTotal(nomList: number[], denList: number[]): number {\n return (reportsListSum(nomList) * 100) / (reportsListSum(denList) || 1);\n}\n// averages\nexport function reportsListAverages(values: number[], counts: number[]): number[] {\n return values.map((v, i) => (v === 0 ? 0 : v / counts[i]));\n}\nexport function reportsListAveragesTotal(values: number[], counts: number[]): number {\n return reportsListSum(values) / (reportsListSum(counts) || 1); // fix zero count sum\n}\n\nexport function reportsListsAverages(valueLists: number[][], countLists: number[][]): number[] {\n if (valueLists.length === 0) return [];\n\n const valueSums = reportsListsSums(valueLists);\n const countSums = reportsListsSums(countLists);\n return reportsListAverages(valueSums, countSums);\n}\n\nexport function reportsListsAveragesNoNeg(valueLists: number[][], countLists: number[][]): number[] {\n if (valueLists.length === 0) return [];\n\n const masks = valueLists.map((list) => list.map((val) => val >= 0));\n const valueSums = reportsListsSumsWithMask(valueLists, masks);\n const countSums = reportsListsSumsWithMask(countLists, masks);\n return reportsListAverages(valueSums, countSums);\n}\n\nexport function reportsListsAveragesTotal(valueLists: number[][], countLists: number[][]): number {\n if (valueLists.length === 0) return 0;\n\n const valueSums = valueLists.map((l) => reportsListSum(l));\n const countSums = countLists.map((l) => reportsListSum(l));\n return reportsListSum(valueSums) / (reportsListSum(countSums) || 1); // fix zero count sum\n}\n\nexport function reportsListsAveragesTotalNoNeg(valueLists: number[][], countLists: number[][]): number {\n if (valueLists.length === 0) return 0;\n\n const masks = valueLists.map((list) => list.map((val) => val >= 0));\n const valueSums = valueLists.map((l, listi) => reportsListSumWithMask(l, masks[listi]));\n const countSums = countLists.map((l, listi) => reportsListSumWithMask(l, masks[listi]));\n return reportsListSum(valueSums) / (reportsListSum(countSums) || 1); // fix zero count sum\n}\n","/* eslint-disable import/prefer-default-export */\n\nexport enum ReportsType {\n All = 0,\n\n Reservations = 1,\n Online = 2,\n Services = 4,\n Weekdays = 8,\n Messages = 0x10,\n Feedback = 0x20,\n}\n","import store from '@/store/store';\nimport Reservation, { ReservationStatus, ReservationType } from '@/model/Reservation';\nimport Tab from '@/model/Tab';\nimport TabItem from '@/model/TabItem';\nimport VueRouter from 'vue-router';\nimport Contact from '@/model/Contact';\nimport i18n from '@/plugins/i18n';\nimport { isDateSameIgnoringTime } from './time-utils';\nimport { performAction } from './vue-utils';\n\nexport async function tryEditReservation(\n router: VueRouter,\n reservation?: Reservation | number,\n rp?: {\n tab?: Tab,\n tabItems?: TabItem[],\n dateBegin?: Date,\n timeSlot?: number,\n partySize?: number,\n status?: ReservationStatus\n contact?: Contact,\n bookingType?: ReservationType,\n },\n p?: {\n changeToDate?: Date,\n forceGuestsRoute?: boolean,\n },\n): Promise {\n const confirm = await store.dispatch('canCloseEditReservation');\n if (!confirm) return false;\n\n // force guests view\n if (p?.forceGuestsRoute && router.currentRoute.name !== 'guests') {\n router.push('/guests');\n }\n\n // change date\n let changeToDate = p?.changeToDate;\n if (!changeToDate && p?.forceGuestsRoute && reservation && typeof reservation !== 'number') {\n changeToDate = reservation.dateBegin;\n }\n if (changeToDate && !isDateSameIgnoringTime(changeToDate, store.state.update.date)) {\n const res = await performAction(\n null,\n i18n.tc('error.load_data'),\n () => store.dispatch('changeToDate', changeToDate),\n );\n if (!res) return false;\n }\n\n // find reservation from id\n if (reservation && typeof reservation === 'number') {\n // eslint-disable-next-line no-param-reassign\n reservation = store.state.reservations.reservationsById[reservation];\n if (!reservation) return false;\n }\n\n // show reservation editor\n store.dispatch('editReservation', { reservation, ...rp });\n return true;\n}\n\nexport async function tryCloseEditReservation(): Promise {\n const confirm = await store.dispatch('canCloseEditReservation');\n if (!confirm) return false;\n store.dispatch('closeEditReservation');\n return true;\n}\n","import Tab from '@/model/Tab';\nimport { DEFAULT_TAB_DURATION } from '@/services/configuration';\nimport {\n timeNumberFromText, timeStringFromDate, dateByAddingMinutes,\n isDateBeforeDate, isDateAfterDate, dateFlooredToXMinutes,\n} from '@/services/time-utils';\nimport DurationRule from '@/model/DurationRule';\n\nexport function durationForReservation(durationRules: DurationRule[], tab?:\nTab, partySize?: number, startTime?: string) {\n let duration = tab?.duration ?? DEFAULT_TAB_DURATION;\n if (!partySize || !tab || !startTime) return duration;\n\n const startTimeNumber = timeNumberFromText(startTime);\n if (!startTimeNumber) return duration;\n\n durationRules.forEach((dr) => {\n if (dr.tabId !== tab.id) return;\n if (dr.timeNumberFrom && startTimeNumber < dr.timeNumberFrom) return; // no rule.timeFrom -> no timeFrom check\n if (dr.timeNumberTo && startTimeNumber > dr.timeNumberTo) return; // no rule.timeTo -> no rule.timeTo check\n if (partySize < dr.partySizeFrom! || partySize > dr.partySizeTo!) return;\n duration += dr.additionalDuration;\n });\n\n return duration > 0 ? duration : 0;\n}\n\nexport function endDateForReservation(\n dateBegin: Date,\n tab: Tab | null,\n partySize: number,\n durationRules: DurationRule[],\n) {\n const time = timeStringFromDate(dateBegin)!;\n const duration = durationForReservation(durationRules, tab ?? undefined, partySize, time);\n const dateEnd = dateByAddingMinutes(dateBegin, duration);\n\n return dateEnd;\n}\n\nexport function isOngoingReservation(r: { dateBegin: Date, dateEnd: Date }) {\n const now = new Date();\n const offset = 15;\n const dateBegin = dateByAddingMinutes(r.dateBegin, -offset);\n const dateEnd = dateByAddingMinutes(r.dateEnd, offset);\n return !(isDateBeforeDate(now, dateBegin) || isDateAfterDate(now, dateEnd));\n}\n\nexport function isWalkInReservation(r: { dateBegin: Date }) {\n const now = new Date();\n const minutes = 30;\n const min = dateFlooredToXMinutes(now, minutes);\n const max = dateByAddingMinutes(min, minutes);\n return !isDateBeforeDate(r.dateBegin, min) && isDateBeforeDate(r.dateBegin, max);\n}\n\nexport function endDateForCheckedOut(r: { dateBegin: Date, dateEnd: Date, fixedEnding: boolean }): Date | null {\n const now = new Date();\n if (isDateBeforeDate(now, r.dateBegin) || isDateAfterDate(now, r.dateEnd)) return null;\n\n let dateEnd = dateFlooredToXMinutes(now);\n while (!isDateAfterDate(dateEnd, r.dateBegin)) dateEnd = dateByAddingMinutes(dateEnd, 15);\n if (!isDateBeforeDate(dateEnd, r.dateEnd)) return null;\n\n return dateEnd;\n}\n","/* eslint-disable indent */\nimport Reservation, { ReservationType } from '@/model/Reservation';\nimport {\n setDateHoursMinutes, hourMinFromTimeText, dateByAddingDays,\n minutesFromDate, slotFromMinutes, isDateAfterDate,\n} from '@/services/time-utils';\nimport { MIN_BEGIN_TIME, MAX_BEGIN_TIME, MAX_END_TIME } from '@/services/configuration';\nimport TabItem from '@/model/TabItem';\nimport i18n from '@/plugins/i18n';\nimport localized from '@/plugins/vue-localized-formatter/src/localized';\nimport Tab from '@/model/Tab';\nimport TimeSlot from '@/model/TimeSlot';\n\nexport enum ReservationErrorType {\n TabMissing,\n TabItemsMissing,\n BlockTabItemsMissing,\n // TabItemsNoCapacity,\n TabItemsOverbooked,\n PartySizeMissing,\n PartySizeHigh,\n DateBeginMissing,\n DateBeginLow,\n DateBeginHigh,\n DateEndMissing,\n DateEndLow,\n DateEndHigh,\n NameMissing,\n PhoneMissing,\n EmailMissing,\n\n AvailabilityMaxGuestsExceeded,\n AvailabilityMaxReservationsExceeded,\n AvailabilityOutsideHours,\n AvailabilityNoCapacity,\n AvailabilityNoAllocation,\n}\n\nexport const Warnings = [\n ReservationErrorType.TabItemsMissing,\n ReservationErrorType.PartySizeHigh,\n ReservationErrorType.TabItemsOverbooked,\n ReservationErrorType.NameMissing,\n ReservationErrorType.PhoneMissing,\n ReservationErrorType.EmailMissing,\n\n ReservationErrorType.AvailabilityMaxGuestsExceeded,\n ReservationErrorType.AvailabilityMaxReservationsExceeded,\n ReservationErrorType.AvailabilityOutsideHours,\n ReservationErrorType.AvailabilityNoCapacity,\n ReservationErrorType.AvailabilityNoAllocation,\n];\n\nexport const PartySizeErrors = [\n ReservationErrorType.PartySizeHigh,\n];\n\nexport const TabErrors = [\n ReservationErrorType.TabMissing, ReservationErrorType.AvailabilityNoCapacity];\n\nexport const TabItemsErrors = [\n ReservationErrorType.BlockTabItemsMissing, ReservationErrorType.AvailabilityNoAllocation,\n ReservationErrorType.TabItemsOverbooked,\n];\n\nexport const DateErrors = [];\n\nexport const DateBeginErrors = [\n ReservationErrorType.DateBeginMissing, ReservationErrorType.DateBeginLow, ReservationErrorType.DateBeginHigh,\n ReservationErrorType.AvailabilityMaxGuestsExceeded, ReservationErrorType.AvailabilityMaxReservationsExceeded,\n ReservationErrorType.AvailabilityOutsideHours,\n];\n\nexport const DateEndErrors = [\n ReservationErrorType.DateEndMissing, ReservationErrorType.DateEndLow, ReservationErrorType.DateEndHigh,\n];\n\nexport const NameErrors = [\n ReservationErrorType.NameMissing,\n];\n\nexport const PhoneErrors = [\n ReservationErrorType.PhoneMissing,\n];\n\nexport const EmailErrors = [\n ReservationErrorType.EmailMissing,\n];\n\nexport interface ReservationError {\n type: ReservationErrorType,\n params?: Array,\n}\n\nexport function reservationErrorText(error: ReservationError) {\n const params = (error.params ?? []).map((param) => {\n if (param instanceof Date) return localized.hourMinText(param) ?? 'N/A';\n return param;\n });\n\n switch (error.type) {\n case ReservationErrorType.TabMissing: return i18n.t('label.select_section', params);\n case ReservationErrorType.TabItemsMissing: return i18n.t('error.reservation_no_tab_items_selected', params);\n case ReservationErrorType.BlockTabItemsMissing: return i18n.t('error.reservation_no_tab_items_selected', params);\n // case ReservationErrorType.TabItemsNoCapacity: return i18n.t('error.party_size_too_large', params);\n case ReservationErrorType.TabItemsOverbooked: return i18n.t('error.reservation_table_overbooked', params);\n case ReservationErrorType.PartySizeMissing: return i18n.t('error.reservation_no_party_size_selected', params);\n case ReservationErrorType.PartySizeHigh: return i18n.t('error.party_size_too_large', params);\n\n case ReservationErrorType.DateBeginMissing: return i18n.t('error.reservation_no_start_time_selected', params);\n case ReservationErrorType.DateBeginLow:\n return i18n.t('error.reservation_invalid_start_time_cannot_start_before_x', params);\n case ReservationErrorType.DateBeginHigh:\n return i18n.t('error.reservation_invalid_start_time_cannot_start_after_x', params);\n\n case ReservationErrorType.DateEndMissing: return i18n.t('error.reservation_no_ending_time_selected', params);\n case ReservationErrorType.DateEndLow:\n return i18n.t('error.reservation_invalid_end_time_cannot_end_before_x', params);\n case ReservationErrorType.DateEndHigh:\n return i18n.t('error.reservation_invalid_end_time_cannot_end_after_x', params);\n\n case ReservationErrorType.NameMissing: return i18n.t('error.reservation_no_name_selected', params);\n case ReservationErrorType.PhoneMissing: return i18n.t('error.reservation_no_phone_selected', params);\n case ReservationErrorType.EmailMissing: return i18n.t('error.reservation_no_email_selected', params);\n\n case ReservationErrorType.AvailabilityMaxGuestsExceeded:\n return i18n.t('error.reservation_max_guests_exceeded', params);\n case ReservationErrorType.AvailabilityMaxReservationsExceeded:\n return i18n.t('error.reservation_max_reservations_exceeded', params);\n case ReservationErrorType.AvailabilityOutsideHours: return i18n.t('error.reservation_outside_hours', params);\n case ReservationErrorType.AvailabilityNoCapacity: return i18n.t('error.reservation_no_capacity', params);\n case ReservationErrorType.AvailabilityNoAllocation: return i18n.t('error.reservation_no_allocation', params);\n\n default: return null;\n }\n}\n\nexport function isReservationWarnings(errors: ReservationError[]) {\n return errors.find((e) => Warnings.includes(e.type)) !== undefined;\n}\n\nexport function isReservationErrors(errors: ReservationError[]) {\n return errors.find((e) => !Warnings.includes(e.type)) !== undefined;\n}\n\nexport function reservationErrorTexts(types: ReservationErrorType[], errors: ReservationError[]) {\n const texts: Array = [];\n\n errors.forEach((e) => {\n if (!types.includes(e.type)) return;\n const text = reservationErrorText(e);\n texts.push(text as string);\n });\n\n return texts;\n}\n\n// export function reservationErrorsText(types: ReservationErrorType[], errors: Set) {\n// const texts: Array = [];\n\n// errors.forEach((e) => {\n// if (!types.includes(e.type)) return;\n// const text = reservationErrorText(e);\n// texts.push(text as string);\n// });\n\n// return texts.length > 0 ? texts.join('\\n') : null;\n// }\n\nexport function validateReservation(r: Reservation): ReservationError[] {\n const errors: ReservationError[] = [];\n\n // tab\n if (r.tab === undefined) errors.push({ type: ReservationErrorType.TabMissing });\n\n // party size\n if (r.partySize === undefined) errors.push({ type: ReservationErrorType.PartySizeMissing });\n\n // tab items\n if (r.isBlock && r.tabItems.length === 0) {\n errors.push({ type: ReservationErrorType.BlockTabItemsMissing });\n }\n\n // dates\n const minbt = hourMinFromTimeText(MIN_BEGIN_TIME)!;\n const maxbt = hourMinFromTimeText(MAX_BEGIN_TIME)!;\n const maxet = hourMinFromTimeText(MAX_END_TIME)!;\n\n const minbd = setDateHoursMinutes(r.dateBegin, minbt.h, minbt.m);\n const maxbd = setDateHoursMinutes(r.dateBegin, maxbt.h, maxbt.m);\n // const mined = isDateAfterDate(r.dateBegin, minbd) ? r.dateBegin : minbd;\n const maxed = dateByAddingDays(setDateHoursMinutes(r.dateBegin, maxet.h, maxet.m), 1);\n\n if (isDateAfterDate(minbd, r.dateBegin)) errors.push({ type: ReservationErrorType.DateBeginLow, params: [minbd] });\n if (isDateAfterDate(r.dateBegin, maxbd)) errors.push({ type: ReservationErrorType.DateBeginHigh, params: [maxbd] });\n // if (isDateAfterDate(mined, r.dateEnd)) errors.push({ type: ReservationErrorType.DateEndLow, params: [mined] });\n if (isDateAfterDate(r.dateEnd, maxed)) errors.push({ type: ReservationErrorType.DateEndHigh, params: [maxed] });\n\n // tab items capacity\n if (!r.isBlock && r.tabItems.length !== 0 && r.partySize > r.seats) {\n errors.push({ type: ReservationErrorType.PartySizeHigh, params: [r.seats] });\n }\n\n // contact for new reservation\n if (!r.isBlock && r.bookingType !== ReservationType.Walkin && r.isNew) {\n if (!r.contact.name) errors.push({ type: ReservationErrorType.NameMissing });\n if (!r.contact.phone) errors.push({ type: ReservationErrorType.PhoneMissing });\n if (!r.contact.email) errors.push({ type: ReservationErrorType.EmailMissing });\n }\n\n return errors;\n}\n\nexport function validateReservationAvailability(\n reservation: Reservation,\n timeSlot: TimeSlot,\n reservations: Reservation[],\n reservationsDuringSlot: Map,\n p?: { defaultMaxGuestsPerTime: number, defaultMaxReservationsPerTime: number },\n)\n : ReservationError[] {\n const errors: ReservationError[] = [];\n\n // time slot open and max guests per time\n if (!timeSlot.isOpen) {\n errors.push({ type: ReservationErrorType.AvailabilityOutsideHours });\n } else {\n const maximumGuests = timeSlot.maximumGuests || p?.defaultMaxGuestsPerTime;\n const maximumReservations = timeSlot.maximumReservations || p?.defaultMaxReservationsPerTime;\n\n if (maximumGuests || maximumReservations) { // must be nonzero\n let totalGuests = 0;\n let totalReservations = 0;\n reservations.forEach((r) => {\n if (r.slotBegin === reservation.slotBegin && r.id !== reservation.id) {\n totalGuests += r.partySize;\n totalReservations += 1;\n }\n });\n\n totalGuests += reservation.partySize;\n totalReservations += 1;\n\n if (maximumGuests && totalGuests > maximumGuests) {\n errors.push({\n type: ReservationErrorType.AvailabilityMaxGuestsExceeded,\n params: [totalGuests, maximumGuests],\n });\n }\n\n if (maximumReservations && totalReservations > maximumReservations) {\n errors.push({\n type: ReservationErrorType.AvailabilityMaxReservationsExceeded,\n params: [totalReservations, maximumReservations],\n });\n }\n }\n }\n\n if (reservation.tab && reservation.tab.usingWeekdaysAndTimes && reservation.tab.capacity > 0) {\n for (let si = reservation.slotBegin; si <= reservation.slotEnd; si += 1) {\n const srs = reservationsDuringSlot.get(si) ?? []; // get reservations for slot\n\n let guests = (srs.reduce((sum, sr) => {\n if (sr.id === reservation.id || sr.tab?.id !== reservation.tab?.id || sr.slotEnd <= si) return sum;\n return sum + sr.partySize;\n }, 0));\n guests += reservation.partySize;\n if (guests > reservation.tab.capacity) {\n errors.push({\n type: ReservationErrorType.AvailabilityNoCapacity,\n params: [guests, reservation.tab.capacity],\n });\n break;\n }\n }\n }\n\n return errors;\n}\n\nexport function toReservationsByTabItemAndSlot(reservations: Array): Map> {\n const map = new Map>();\n reservations.forEach((r) => {\n r.tabItems.forEach((ti) => {\n for (let si = r.slotBegin; si <= r.capSlotEnd; si += 1) {\n const key = si + ti.id * 1000;\n map.set(key, (map.get(key) ?? []).concat(r));\n }\n });\n });\n return map;\n}\n\nexport function overbookedTabItemsForReservation(r: Reservation, map: Map): TabItem[] {\n const tabItems: TabItem[] = [];\n r.tabItems.forEach((ti) => {\n for (let si = r.slotBegin; si <= r.capSlotEnd; si += 1) {\n const srs = map.get(si + ti.id * 1000); // get reservations for slot and tab item\n if (srs && srs.find((sr) => (sr.id !== r.id && sr.capTimeEnd > r.timeBegin && sr.timeBegin < r.capTimeEnd))) {\n tabItems.push(ti);\n break;\n }\n }\n });\n\n return tabItems;\n}\n\nexport function overbookedReservationsForReservation(r: Reservation, map: Map): Reservation[] {\n const reservations = new Set();\n\n r.tabItems.forEach((ti) => {\n for (let si = r.slotBegin; si <= r.capSlotEnd; si += 1) {\n const srs = map.get(si + ti.id * 1000); // get reservations for slot and tab item\n if (srs) {\n const osrs = srs.filter((sr) => (sr.id !== r.id && sr.capTimeEnd > r.timeBegin && sr.timeBegin < r.capTimeEnd));\n osrs.forEach((osr) => { reservations.add(osr); });\n }\n }\n });\n\n return Array.from(reservations);\n}\n\nexport function overbookedReservationsAndTabItemsForReservationId(reservations: Reservation[]) {\n const rmap = new Map>();\n const timap = new Map>();\n\n toReservationsByTabItemAndSlot(reservations).forEach((rs, key) => {\n if (rs.length <= 1) return;\n for (let i = 0; i < rs.length - 1; i += 1) {\n const r = rs[i];\n for (let j = i + 1; j < rs.length; j += 1) {\n const sr = rs[j];\n if (sr.capTimeEnd > r.timeBegin && sr.timeBegin < r.capTimeEnd) {\n // r reservation overbooked reservation ids\n let set = rmap.get(r.id);\n if (!set) { set = new Set(); rmap.set(r.id, set); }\n set.add(sr.id);\n\n // sr reservation overbooked reservation ids\n set = rmap.get(sr.id);\n if (!set) { set = new Set(); rmap.set(sr.id, set); }\n set.add(r.id);\n\n // r reservation overbooked tab item ids\n set = timap.get(r.id);\n if (!set) { set = new Set(); timap.set(r.id, set); }\n set.add(Math.floor(key / 1000));\n\n // sr reservation overbooked tab item ids\n set = timap.get(sr.id);\n if (!set) { set = new Set(); timap.set(sr.id, set); }\n set.add(Math.floor(key / 1000));\n }\n }\n }\n });\n\n return {\n overbookedReservationsForReservationId: rmap,\n overbookedTabItemsForReservationId: timap,\n };\n}\n\nexport function toReservationsDuringSlot(reservations: Array): Map> {\n const map = new Map>();\n reservations.forEach((r) => {\n for (let si = r.slotBegin; si <= r.capSlotEnd; si += 1) {\n const key = si;\n map.set(key, (map.get(key) ?? []).concat(r));\n }\n });\n return map;\n}\n\nexport function unavailableTabItemsForReservation(r: Reservation, map: Map): TabItem[] {\n // const timeBegin = minutesFromDate(r.dateBegin);\n // const timeEnd = minutesFromDate(r.dateEnd);\n // const slotBegin = slotFromMinutes(timeBegin);\n // const slotEnd = slotFromMinutes(timeEnd - 1);\n\n const tabItems = new Set();\n for (let si = r.slotBegin; si <= r.capSlotEnd; si += 1) {\n const srs = map.get(si); // get reservations for slot and tab item\n // eslint-disable-next-line no-continue\n if (!srs) continue;\n\n srs.forEach((sr) => {\n if (sr.id !== r.id) {\n sr.tabItems.forEach((ti) => {\n tabItems.add(ti);\n });\n }\n });\n }\n\n return Array.from(tabItems);\n}\n","import {\n dateFromDateAndTimeIndex, niceTimeTextFromSlot,\n} from './time-utils';\n\ninterface IWithDateTimeIndex { id: number; dateIndex: number; slot: number }\n\nfunction compare(o1: T, o2: T) {\n const diff = o1.slot - o2.slot;\n if (diff !== 0) return diff;\n return o1.id - o2.id;\n}\n\ninterface IWithSlot { slot: number; }\n\n// sorted map with entities by date index\nexport function toSortedMapByDateIndex(items: T[], sorted = false): Map {\n const map = new Map();\n const sortedItems = sorted ? items : items.sort((o1, o2) => compare(o1, o2));\n\n let dateIndex = 0;\n let entities: T[] = [];\n\n sortedItems.forEach((o) => {\n if (dateIndex !== 0 && dateIndex !== o.dateIndex) {\n map.set(dateIndex, entities);\n entities = [];\n }\n entities.push(o);\n dateIndex = o.dateIndex;\n });\n\n if (entities.length > 0) map.set(dateIndex, entities);\n\n return map;\n}\n\n// sorted map with entities by slot\n// eslint-disable-next-line @typescript-eslint/no-shadow\nexport function toSortedMapBySlot(\n items: T[],\n sorted = false,\n): Map {\n const map = new Map();\n const sortedItems = sorted ? items : items.sort((o1, o2) => compare(o1, o2));\n\n let slot = 0;\n let entities: T[] = [];\n\n sortedItems.forEach((o) => {\n if (slot !== 0 && slot !== o.slot) {\n map.set(slot, entities);\n entities = [];\n }\n entities.push(o);\n slot = o.slot;\n });\n\n if (entities.length > 0) map.set(slot, entities);\n\n return map;\n}\n\n// sorted map with entities by date index to map by date\nexport function mapByDateIndexToMapByDate(\n mapByDateIndex: Map,\n): Map {\n const mapByDate = new Map();\n\n mapByDateIndex.forEach((rs, index) => {\n const date = dateFromDateAndTimeIndex(index);\n if (date) mapByDate.set(date, rs);\n });\n\n return mapByDate;\n}\n\n// sorted map with entities by slot to map by time string\n// eslint-disable-next-line @typescript-eslint/no-shadow\nexport function mapBySlotToMapByTimeText(\n mapByDateTimeIndex: Map,\n): Map {\n const mapByTime = new Map();\n\n mapByDateTimeIndex.forEach((rs, slot) => {\n const time = niceTimeTextFromSlot(slot);\n mapByTime.set(time, rs);\n });\n\n return mapByTime;\n}\n","/* eslint-disable @typescript-eslint/indent */\nimport elasticlunr, { Index } from 'elasticlunr';\nimport Reservation from '@/model/Reservation';\n\nexport enum SearchType {\n None,\n DayReservations,\n AllReservations,\n ContactName,\n ContactPhone,\n ContactEmail,\n}\n\ninterface SearchReservation\n{\n id: string;\n name?: string;\n phone?: string;\n email?: string;\n notes?: string;\n contactNotes?: string;\n}\n\nconst ReservationFields: (keyof SearchReservation)[] = ['id', 'name', 'phone', 'email', 'notes', 'contactNotes'];\n\nfunction toSearchReservation(r: Reservation): SearchReservation {\n return {\n id: String(r.id),\n name: r.contact.name ?? undefined,\n phone: r.contact.phone ?? undefined,\n email: r.contact.email ?? undefined,\n notes: r.notes ? `$$ ${r.notes}` : undefined,\n contactNotes: r.contact.notes ? `$$ ${r.contact.notes}` : undefined,\n };\n}\n\nfunction searchCreate(): Index {\n const rindex = elasticlunr((index) => {\n ReservationFields.forEach((f) => index.addField(f));\n index.saveDocument(false);\n index.pipeline.reset();\n index.pipeline.add((token: string, i: number, tokens: string[]): string | void | null | undefined => {\n if (i === 0 || tokens[0] !== '$$') return token;\n\n const token2 = elasticlunr.stopWordFilter(token);\n if (!token2) return undefined;\n\n const token3 = elasticlunr.stemmer(token2);\n if (!token3) return undefined;\n\n return token3;\n });\n });\n return rindex;\n}\n\nlet rindex = searchCreate();\n\n// export function searchAddReservation(r: Reservation) {\n// rindex.addDoc(toSearchReservation(r));\n// }\n\n// export function searchUpdateReservation(r: Reservation) {\n// rindex.updateDoc(toSearchReservation(r));\n// }\n\nexport function searchUpdateReservations(reservations: Reservation[], reservationsById: { [id: number]: Reservation }) {\n reservations.forEach((r) => {\n const rdoc = toSearchReservation(r);\n if (reservationsById[r.id]) rindex.updateDoc(rdoc);\n else rindex.addDoc(rdoc);\n });\n}\n\nexport function searchReset() {\n rindex = searchCreate();\n}\n\nexport function searchForReservations(\nquery: string,\ntype: SearchType,\n reservationsById: { [id: number]: Reservation },\n) {\n if (query.trim().length < 3) return [];\n\n const config = {\n fields: {\n name: { boost: 0 },\n phone: { boost: 0 },\n email: { boost: 0 },\n notes: { boost: 0 },\n contactNotes: { boost: 0 },\n },\n expand: true,\n bool: 'AND' as elasticlunr.Bool,\n };\n\n switch (type) {\n case SearchType.ContactName: config.fields.name.boost = 1; break;\n case SearchType.ContactPhone: config.fields.phone.boost = 1; break;\n case SearchType.ContactEmail: config.fields.email.boost = 1; break;\n case SearchType.AllReservations:\n case SearchType.DayReservations:\n config.fields.name.boost = 1;\n config.fields.phone.boost = 1;\n config.fields.email.boost = 1;\n config.fields.notes.boost = 1;\n config.fields.contactNotes.boost = 1;\n break;\n default:\n break;\n }\n\n let res = rindex.search(query, config);\n if (type === SearchType.AllReservations || type === SearchType.DayReservations) {\n const resmap = new Map((res.map((r) => [Number(r.ref), r.score])));\n const resft = rindex.search(`$$ ${query}`, config);\n resft.forEach((r) => {\n if ((resmap.get(Number(r.ref)) ?? 0) < r.score) return;\n resmap.set(Number(r.ref), r.score);\n });\n res = Array.from(resmap.entries()).map((re) => ({ ref: String(re[0]), score: re[1] }));\n res = res.sort((r1, r2) => -r1.score + r2.score);\n }\n\n console.log('searchForReservations: ', query, config, res);\n\n const reservations = res.map((r) => reservationsById[Number(r.ref)]);\n return reservations;\n}\n","/* eslint-disable no-param-reassign */\nimport moment from 'moment';\nimport { sprintf } from 'sprintf-js';\n\nexport const DTI_DATETIME_DATE_OFFSET = 10000;\nexport const DTI_DATE_LIMIT = 2400;\nexport const TIME_SLOTS_COUNT = (24 + 6) * 4;\nexport const MORNING_TIME_SLOTS_COUNT = 6 * 4;\nexport const DAY_TIME_SLOTS_COUNT = 24 * 4;\nexport const TIME_SLOT_MINUTES = 15;\nexport const TIME_SLOTS_PER_HOUR = 60 / TIME_SLOT_MINUTES;\n\nfunction dateFromString(format: string, value?: string | number | null, utc = false): Date | null {\n if (!value) return null;\n const s = String(value);\n if (s.length !== format.length) return null;\n let m = moment(s, format);\n if (!m.isValid()) return null;\n if (utc) m = m.utcOffset(0, true);\n return m.toDate();\n}\n\nfunction stringFromDate(format: string, value?: Date | null): string | null {\n if (!value) return null;\n const m = moment(value);\n if (!m.isValid) return null;\n return m.format(format);\n}\n\n// date and time conversions\nexport function dateFromDateTimeString(s?: string | number): Date | null {\n return dateFromString('YYYYMMDDHHmm', s);\n}\n\n// export function dateFromDateTimeSecondsString(s?: string | number): Date | null {\n// return dateFromString('YYYYMMDDHHmmss', s);\n// }\n\nexport function dateFromUTCDateTimeSecondsString(s?: string | number): Date | null {\n return dateFromString('YYYYMMDDHHmmss', s, true);\n}\n\nexport function dateFromDateString(s?: string | number): Date | null {\n return dateFromString('YYYYMMDD', s);\n}\n\nexport function dateFromDateString8601(s?: string | number): Date | null {\n return dateFromString('YYYY-MM-DD', s);\n}\n\nexport function dateStringFromDate(d?: Date): string | null {\n return stringFromDate('YYYYMMDD', d);\n}\n\nexport function dateStringFromDate8601(d?: Date): string | null {\n return stringFromDate('YYYY-MM-DD', d);\n}\n\nexport function dateTimeStringFromDate(d?: Date): string | null {\n return stringFromDate('YYYYMMDDHHmm', d);\n}\n\nexport function timeStringFromDate(date: Date | null): string | null {\n return stringFromDate('HH:mm', date);\n}\n\n// date and time helpers\nexport function hourMinFromTimeText(s: string): { h: number, m: number } | null {\n const [sh, sm, ...rest] = s.split(':');\n return sh && sm && !Number.isNaN(Number(sh)) && !Number.isNaN(Number(sm)) && rest.length === 0\n ? { h: Number(sh), m: Number(sm) }\n : null;\n}\n\n// TODO: replace by timeIndex or minutes\nexport function timeNumberFromText(s?: string): number {\n return s ? Number(s.replace(':', '0')) || 0 : 0;\n}\n\n// weekday number: Sunday=1, Monday=2, ... Saturday=7\nexport function weekdayNumber(d: Date): number {\n return d.getDay() + 1;\n}\n\nexport function weekdayNumberFromDateDay(day: number): number {\n return day + 1;\n}\n\n// weekday start at monday: Monday=0, ... Saturday=5, Sunday=6\nexport function weekdayStartAtMondayFromDateDay(day: number): number {\n return (day + 6) % 7;\n}\nexport function weekdayStartAtMondayFromDateDay2(day: number): number {\n return (day + 6) % 7;\n}\n\n// date and time manipulations\n// TODO: refactor names - not mutating fncs\nexport function dateFlooredToMinutes(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes());\n}\nexport function dateFlooredToHours(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours());\n}\nexport function dateFlooredToDate(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n\nexport function dateFlooredToWeek(date: Date, firstDayOfWeek: number): Date {\n const ndate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n return moment(date).add(-ndate.getDay() + firstDayOfWeek, 'days').toDate();\n}\n\nexport function dateFlooredToMonth(date: Date): Date {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n\nexport function dateFlooredToYear(date: Date): Date {\n return new Date(date.getFullYear(), 0, 1);\n}\n\nexport function dateByAddingSeconds(date: Date, seconds: number): Date {\n return moment(date).add(seconds, 'seconds').toDate();\n}\n\nexport function dateByAddingMinutes(date: Date, minutes: number): Date {\n return moment(date).add(minutes, 'minutes').toDate();\n}\n// export function dateByAddingMilliseconds(date: Date, seconds: number) {\n// return moment(date).add(seconds, 'milliseconds').toDate();\n// }\n\nexport function dateByAddingDays(date: Date, days: number): Date {\n return moment(date).add(days, 'days').toDate();\n}\n\nexport function dateByAddingMonths(date: Date, months: number): Date {\n return moment(date).add(months, 'months').toDate();\n}\n\nexport function dateByAddingYears(date: Date, years: number): Date {\n return moment(date).add(years, 'years').toDate();\n}\n\nexport function dateDiff(d1: Date, d2: Date): number {\n return d1.getTime() - d2.getTime();\n}\n\nexport function hoursInBetweenDates(d1: Date, d2: Date): number {\n d1 = dateByAddingDays(dateFlooredToDate(d1), 1); d2 = dateFlooredToMinutes(d2);\n return moment(d1).diff(moment(d2), 'hours');\n}\n\nexport function daysInBetweenDates(d1: Date, d2: Date): number {\n d1 = dateByAddingDays(dateFlooredToDate(d1), 1); d2 = dateFlooredToDate(d2);\n return moment(d1).diff(moment(d2), 'days');\n}\n\nexport function monthsInBetweenDates(d1: Date, d2: Date): number {\n d1 = dateByAddingDays(dateFlooredToMonth(d1), 1); d2 = dateFlooredToMonth(d2);\n return moment(d1).diff(moment(d2), 'months');\n}\n\nexport function yearsInBetweenDates(d1: Date, d2: Date): number {\n d1 = dateByAddingDays(dateFlooredToYear(d1), 1); d2 = dateFlooredToYear(d2);\n return moment(d1).diff(moment(d2), 'years');\n}\n\nexport function daysBetweenDates(d1: Date, d2: Date): number {\n d1 = dateFlooredToDate(d1); d2 = dateFlooredToDate(d2);\n return moment(d1).diff(moment(d2), 'days');\n}\n\nexport function areDatesEqual(d1: Date, d2: Date): boolean {\n return d1.getTime() === d2.getTime();\n}\n\nexport function isDateBeforeDate(d1: Date, d2: Date): boolean {\n return d1.getTime() < d2.getTime();\n}\n\nexport function isDateAfterDate(d1: Date, d2: Date): boolean {\n return d1.getTime() > d2.getTime();\n}\n\nexport function isDateSameIgnoringTime(d1: Date, d2: Date): boolean {\n return d1.getDate() === d2.getDate() && d1.getMonth() === d2.getMonth() && d1.getFullYear() === d2.getFullYear();\n}\n\nexport function dateWithYear(date: Date, year: number): Date {\n const newDate = new Date(date);\n newDate.setFullYear(year);\n return newDate;\n}\n\n// TODO: rename to dateWithHoursMinutes\nexport function setDateHoursMinutes(date: Date, hours: number, minutes: number): Date {\n const newDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n newDate.setHours(hours, minutes, 0, 0);\n return newDate;\n}\n\nexport function setDateYearMonth(date: Date, year?: number|null, month?: number|null, monthDay?: number|null): Date {\n const newDate = new Date(year ?? date.getFullYear(), month ?? date.getMonth(), monthDay ?? date.getDate());\n return newDate;\n}\n\nexport function getDateHoursMinutes(date: Date): { h: number, m: number } {\n return { h: date.getHours(), m: date.getMinutes() };\n}\n\nexport function isDateToday(d: Date): boolean {\n const today = new Date();\n return d.getDate() === today.getDate()\n && d.getMonth() === today.getMonth()\n && d.getFullYear() === today.getFullYear();\n}\n\nexport function isDateThisYear(d: Date): boolean {\n const today = new Date();\n return d.getFullYear() === today.getFullYear();\n}\n\nexport function isDateValid(d: Date): boolean {\n return moment(d).isValid();\n}\n\n// flored to 15 min slot\nexport function flooredMinutes(minutes: number, to: number = 15): number {\n return Math.floor(minutes / to) * to;\n}\n\nexport function dateFlooredToXMinutes(date: Date, to: number = 15): Date {\n return new Date(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n flooredMinutes(date.getMinutes(), to),\n );\n}\n\n// slot\nexport function minutesFromDate(date: Date): number {\n const { h, m } = getDateHoursMinutes(date);\n const mins = h < 6 ? (h + 24) * 60 + m : h * 60 + m;\n return mins;\n}\n\nexport function minutesFromTimeString(s?: string): number {\n const ti = Number(s?.replace(':', '')) || 0;\n return Math.floor(ti / 100) * 60 + (ti % 100);\n}\n\nexport function slotFromMinutes(mins: number): number {\n return Math.floor(mins / TIME_SLOT_MINUTES);\n}\n\nexport function minutesFromSlot(stot: number): number {\n return stot * TIME_SLOT_MINUTES;\n}\n\n// export function beginSlotFromDate(date: Date): number {\n// return slotFromMinutes(minutesFromDate(date));\n// }\n\n// export function endSlotFromDate(date: Date): number {\n// return slotFromMinutes(minutesFromDate(date));\n// }\nexport function hourMinFromSlot(slot: number): { h: number, m: number } {\n return { h: Math.floor(slot / TIME_SLOTS_PER_HOUR), m: (slot % TIME_SLOTS_PER_HOUR) * TIME_SLOT_MINUTES };\n}\n\nexport function timeIndexFromSlot(slot: number): number {\n const { h, m } = hourMinFromSlot(slot);\n return h * 100 + m;\n}\n\nexport function niceTimeTextFromSlot(slot: number): string {\n const { h, m } = hourMinFromSlot(slot);\n return sprintf('%02d:%02d', h % 24, m);\n}\n\n// time and date index\nexport function dateIndexFromDate(date: Date): number {\n const dateString = dateStringFromDate(date);\n if (!dateString) return 0;\n return Number(dateString);\n}\n\nexport function dateTimeIndexFromDate(date: Date): number {\n const dateString = dateTimeStringFromDate(date);\n if (!dateString) return 0;\n return Number(dateString);\n}\n\n// from time string\nexport function timeIndexFromTime(s?: string): number {\n return s ? Number(s.replace(':', '')) || 0 : 0;\n}\n\nexport function timeIndexFromMinutes(mins: number): number {\n return Math.floor(mins / 60) * 100 + (mins % 60);\n}\n\nexport function minutesFromTimeIndex(ti: number): number {\n return Math.floor((ti % 10000) / 100) * 60 + (ti % 100);\n}\n\nexport function timeStringFromDateTimeIndex(dti: number): string {\n return sprintf('%02d:%02d', (dti / 100) % 24, dti % 100);\n}\n\nexport function dateFromDateAndTimeIndex(di: number, ti: number = 0): Date | null {\n if (ti < DTI_DATE_LIMIT) return dateFromDateTimeString(di * DTI_DATETIME_DATE_OFFSET + ti);\n\n const offset = Math.floor(ti / DTI_DATE_LIMIT);\n const date = dateFromDateTimeString(di * DTI_DATETIME_DATE_OFFSET + (ti % DTI_DATE_LIMIT));\n return date ? dateByAddingDays(date, offset) : null;\n}\n\nexport function dateTimeIndexFromDateAndTimeIndex(di: number, ti: number = 0): number {\n if (ti < DTI_DATE_LIMIT) return di * DTI_DATETIME_DATE_OFFSET + (ti % DTI_DATE_LIMIT);\n\n const offset = Math.floor(ti / DTI_DATE_LIMIT);\n const date = dateFromDateTimeString(di * DTI_DATETIME_DATE_OFFSET + (ti % DTI_DATE_LIMIT));\n if (!date) return 0;\n\n const fixedDate = dateByAddingDays(date, offset);\n return Number(dateTimeStringFromDate(fixedDate));\n}\n\nexport function unixFromDate(date: Date) {\n return Math.floor(date.getTime() / 1000);\n}\n\n// unix timestamp in seconds of a date with\n// the same year, month and day in UTC,\n// as is the year, month and day in locale timezone,\n// of the provided date\nexport function unixUTCAsInLocalDateYMD(date?: Date): number | undefined {\n if (!date) return undefined;\n const unix = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / 1000;\n return unix;\n}\n\n// date with\n// the same year, month and day in locale timezone,\n// as is the year, month and day in UTC,\n// of the date corresponding to the proviced unix timestamp in seconds\nexport function localDateAsInUnixUTCYMD(unix?: number): Date | undefined {\n if (!unix) return undefined;\n const date = new Date(unix * 1000);\n const utc = new Date(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n return utc;\n}\n","import { dateDiff } from './time-utils';\n\nexport default class Timer {\n timerId: NodeJS.Timeout | null = null;\n\n scheduleDate: Date | null = null;\n\n lastUpdateDate: Date | null = null;\n\n action: () => void;\n\n constructor(action: () => void) {\n this.action = action;\n }\n\n schedule(nextUpdateDate?: Date | null): Date | null {\n // stop timer if needed\n if (this.timerId) {\n clearTimeout(this.timerId);\n this.timerId = null;\n this.scheduleDate = null;\n }\n\n // no next update\n if (!nextUpdateDate) return null;\n\n // schedule next update\n let timeout = dateDiff(nextUpdateDate, new Date());\n if (timeout < 0) timeout = 0;\n this.timerId = setTimeout(() => {\n this.action();\n this.lastUpdateDate = new Date();\n }, timeout + 100); // add 100ms\n\n this.scheduleDate = nextUpdateDate;\n return this.scheduleDate;\n }\n}\n","import DateAndTime from '@/model/DateAndTime';\nimport OpeningHour from '@/model/OpeningHour';\nimport TimeSlot from '@/model/TimeSlot';\n\nimport {\n dateIndexFromDate, dateTimeIndexFromDateAndTimeIndex,\n DAY_TIME_SLOTS_COUNT,\n MORNING_TIME_SLOTS_COUNT,\n timeIndexFromSlot, TIME_SLOTS_COUNT, weekdayNumber,\n} from './time-utils';\n\nexport function timeSlotsFromHours(\n date: Date,\n openingHoursInWeekdaysByTimeIndex: Map[],\n datesAndTimesByDateTimeIndex: Map,\n): TimeSlot[] {\n const dateIndex = dateIndexFromDate(date);\n const weekday = weekdayNumber(date);\n\n return Array.from({ length: TIME_SLOTS_COUNT }, (x, si) => {\n const timeIndex = timeIndexFromSlot(si);\n const dateTimeIndex = dateTimeIndexFromDateAndTimeIndex(dateIndex, timeIndex);\n const dt = datesAndTimesByDateTimeIndex.get(dateTimeIndex);\n const oh = openingHoursInWeekdaysByTimeIndex[weekday].get(timeIndex);\n return new TimeSlot(si, dateTimeIndex, dt, oh);\n });\n}\n\nexport function isOpenFromHours(\n date: Date,\n openingHoursInWeekdaysByTimeIndex: Map[],\n datesAndTimesByDateTimeIndex: Map,\n): boolean {\n const dateIndex = dateIndexFromDate(date);\n const weekday = weekdayNumber(date);\n\n const hours = Array.from(openingHoursInWeekdaysByTimeIndex[weekday].values());\n for (let i = 0; i < hours.length; i += 1) {\n const oh = hours[i];\n const dateTimeIndex = dateTimeIndexFromDateAndTimeIndex(dateIndex, oh.timeIndex);\n const sh = datesAndTimesByDateTimeIndex.get(dateTimeIndex);\n if (sh?.iIsOpen !== false) return true;\n }\n\n for (let si = MORNING_TIME_SLOTS_COUNT; si < DAY_TIME_SLOTS_COUNT; si += 1) {\n const timeIndex = timeIndexFromSlot(si);\n const dateTimeIndex = dateTimeIndexFromDateAndTimeIndex(dateIndex, timeIndex);\n const sh = datesAndTimesByDateTimeIndex.get(dateTimeIndex);\n if (sh?.iIsOpen === true) return true;\n }\n\n return false;\n}\n","import activityIndicator from '@/plugins/activity-indicator-plugin/activity-indicator';\nimport i18n from '@/plugins/i18n';\nimport toast from '@/plugins/toast-plugin/toast';\nimport store from '@/store/store';\nimport { ValidationObserver } from 'vee-validate';\nimport Vue from 'vue';\n\nexport function actionShowError(error: any, errorPrefix?: string) {\n let errorText = errorPrefix;\n if (error.message && errorPrefix) {\n const pdot = errorPrefix.endsWith('.') ? '' : '.';\n const edot = error.message.endsWith('.') ? '' : '.';\n errorText = `${errorPrefix}${pdot} ${error.message}${edot}`;\n } else if (error.message) errorText = error.message;\n\n if (!errorText) errorText = i18n.tc('error.general');\n toast.error(errorText);\n}\n\nexport async function performAction(\n successText: string | null,\n errorPrefix: string | null,\n action: () => Promise,\n delayedSuccess?: boolean,\n rethrow?: boolean,\n): Promise {\n try {\n activityIndicator.show();\n await action();\n activityIndicator.hide();\n if (successText) {\n if (delayedSuccess) toast.successDelayed(successText); else toast.success(successText);\n }\n return true;\n } catch (e) {\n activityIndicator.hide();\n console.error('performAction catched error: ', e);\n if (errorPrefix !== null) actionShowError(e, errorPrefix);\n\n // let errorText = errorPrefix;\n // if (e.message) { errorText = `${errorPrefix}. ${e.message}.`; }\n // toast.error(errorText);\n if (rethrow) throw e;\n return false;\n }\n}\n\nexport async function performActionEx(\n action: () => Promise,\n p?: {\n successText?: string,\n errorPrefix?: string,\n errorFnc?: (e: any) => void,\n delayed?: boolean,\n rethrow?: boolean,\n hideActivityIndicator?: boolean\n },\n): Promise {\n try {\n if (!p?.hideActivityIndicator) activityIndicator.show();\n const res = await action();\n if (!p?.hideActivityIndicator) activityIndicator.hide();\n if (p?.successText) {\n if (p?.delayed) toast.successDelayed(p?.successText); else toast.success(p?.successText);\n }\n return res;\n } catch (e) {\n activityIndicator.hide();\n console.error('performActionEx catched error: ', e);\n if (p?.errorFnc) p?.errorFnc(e); else if (p?.rethrow !== true) actionShowError(e, p?.errorPrefix);\n if (p?.rethrow) throw e;\n return null;\n }\n}\n\nexport async function performDispatchAction(\n dispatch: string,\n dispatchParams: any,\n p?: {\n successText?: string,\n errorPrefix?: string,\n errorFnc?: (e: any) => void,\n delayed?: boolean,\n rethrow?: boolean,\n streamLoad?: boolean,\n },\n) {\n // eslint-disable-next-line no-param-reassign\n if (!p) p = {};\n\n // eslint-disable-next-line no-param-reassign\n if (!p.errorPrefix) p.errorPrefix = p.streamLoad ? i18n.tc('error.load_data') : i18n.tc('error.general');\n const errorFnc = p.errorFnc ?? ((e: any) => { if (p?.rethrow !== true) actionShowError(e, p?.errorPrefix); });\n // eslint-disable-next-line no-param-reassign\n dispatchParams = { ...dispatchParams, errorFnc };\n\n const action = () => store.dispatch(dispatch, dispatchParams);\n return performActionEx(action, p);\n}\n\nexport function confirmLeaveWithoutSaving(vue: Vue): boolean {\n // eslint-disable-next-line no-alert\n return window.confirm(i18n.tc('message.confirm_leave_without_saving'));\n}\n\nexport async function performSaveAction(\n observer: any,\n action: () => Promise,\n p?: { hideSuccess?: boolean },\n): Promise {\n const isValid = await (observer as InstanceType | undefined)?.validate() ?? true;\n if (!isValid) {\n toast.error(i18n.tc('error.validation_failed'));\n return false;\n }\n return performAction(\n p?.hideSuccess ? null : i18n.tc('message.success_changes_saved'),\n i18n.tc('error.saving_changes'),\n action,\n );\n}\n\n// ignore warning\n// The.native modifier for v - on is only valid on components but it was used on
.\nif (process.env.NODE_ENV === 'development') {\n const ignoreWarnMessage = 'The .native modifier for v-on is only valid on components but it was used on
.';\n Vue.config.warnHandler = (msg: any, vm: any, trace: any) => {\n // `trace` is the component hierarchy trace\n if (msg === ignoreWarnMessage) {\n // eslint-disable-next-line no-param-reassign\n msg = null;\n // eslint-disable-next-line no-param-reassign\n vm = null;\n // eslint-disable-next-line no-param-reassign\n trace = null;\n }\n };\n}\n\nexport async function performValidation(observer: any, p?: { hideError?: boolean}) {\n const isValid = await (observer as InstanceType | undefined)?.validate() ?? true;\n if (!isValid && !p?.hideError) {\n toast.error(i18n.tc('error.validation_failed'));\n }\n return isValid;\n}\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport httpClient from '@/api/http-client';\nimport {\n toSaveModelItems, mergeToModelEntities, groupByField,\n} from '@/model/model-utils';\nimport Tab from '@/model/Tab';\nimport Allocation, { IDTOSendAllocation, AllocationMapping } from '@/model/Allocation';\nimport IRootState, { IAllocationsState } from './store-state';\n\nexport class AllocationsState implements IAllocationsState {\n allocations: Allocation[] = [];\n\n tab: Tab = new Tab();\n\n isLoaded: boolean = false;\n}\n\nconst mutations = >{\n RESET(state: AllocationsState) {\n Object.assign(state, new AllocationsState());\n },\n RESET_ALLOCATIONS(state: AllocationsState) {\n Object.assign(state, new AllocationsState());\n },\n UPDATE_ALLOCATIONS(state: AllocationsState, p: { allocations: Allocation[], tab: Tab }) {\n console.log('UPDATE_ALLOCATIONS');\n\n state.allocations = p.allocations;\n state.tab = p.tab;\n\n console.log('allocations:', state.allocations);\n },\n};\n\nconst actions = >{\n async resetAllocations({ commit }) {\n commit('RESET_ALLOCATIONS');\n },\n async loadAllocations({\n commit, state, rootGetters,\n }, p: { tabId: number }) {\n if (!rootGetters.isLoaded) return;\n\n const updates = await httpClient.loadAllocations(p.tabId);\n const allocations = mergeToModelEntities(\n Allocation,\n [],\n updates.allocations,\n { mapping: rootGetters as AllocationMapping },\n );\n\n const tab = rootGetters.tabsById.get(p.tabId) ?? new Tab();\n commit('UPDATE_ALLOCATIONS', { allocations, tab });\n },\n async sendAllocations(\n { state, commit, rootGetters },\n p: { entities: Allocation[], partySize: number, isForbidden?: boolean },\n ) {\n const oldEntities = state.allocations.filter(\n (o) => o.partySize === p.partySize && (p.isForbidden === undefined || o.isForbidden === p.isForbidden),\n );\n const dtos = toSaveModelItems(p.entities, oldEntities);\n\n const updates = await httpClient.sendAllocations(state.tab.id, p.partySize, dtos);\n\n const allocations = mergeToModelEntities(\n Allocation,\n state.allocations,\n updates.allocations,\n { mapping: rootGetters as AllocationMapping },\n );\n\n commit('UPDATE_ALLOCATIONS', { allocations, tab: state.tab });\n },\n};\n\nconst getters = >{\n allowedAllocationsByPartySize(state) {\n const allocations = state.allocations.filter((o) => o.isForbidden === false).sort((o1, o2) => o1.order - o2.order);\n return groupByField(allocations, 'partySize');\n },\n disallowedAllocationsByPartySize(state) {\n const allocations = state.allocations.filter((o) => o.isForbidden === true).sort((o1, o2) => o1.order - o2.order);\n return groupByField(allocations, 'partySize');\n },\n};\n\nconst AllocationsStore = {\n namespaced: false,\n state: new AllocationsState(),\n mutations,\n actions,\n getters,\n};\n\nexport default AllocationsStore;\n","import {\n Customer, Invoice, Product, Subscription, PaymentMethod, SetupIntent, Price, Country, ProductType,\n SMSProduct, Currency,\n} from '@/api/api-billing';\nimport httpClient from '@/api/http-client';\nimport { maxSubscriptionTierLevel, preferedCountryCurrency, toDTOCustomer } from '@/services/billing-utils';\nimport { ActionTree, GetterTree, MutationTree } from 'vuex';\nimport IRootState, { IBillingState } from './store-state';\n\nfunction fixPrice(products: Product[], price: Price) {\n let product = products.find((pr) => pr.ID === price.productID);\n\n // fallback\n if (!product) {\n product = products.find((pr) => pr.prices?.some((p) => p.ID === price.ID));\n }\n\n // eslint-disable-next-line no-param-reassign\n price.product = product;\n}\n\nfunction fixInvoices(products: Product[], invoices: Invoice[]) {\n invoices.forEach((i) => {\n i.lines?.forEach((il) => {\n if (!il.price) return;\n fixPrice(products, il.price);\n });\n });\n}\n\nexport class BillingState implements IBillingState {\n isLoaded: boolean = false;\n\n products: Product[] = [];\n\n customer: Customer | null = null;\n\n invoices: Invoice[] = [];\n\n paymentMethods: PaymentMethod[] = [];\n\n setupIntent: SetupIntent | null = null;\n\n country: Country | null = null;\n\n smsProduct: SMSProduct | null = null;\n\n invoicesLimit: number | null = 11;\n}\n\nconst mutations = >{\n RESET(state: BillingState) {\n Object.assign(state, new BillingState());\n },\n RESET_BILLING(state: BillingState) {\n Object.assign(state, new BillingState());\n },\n UPDATE_BILLING(\n state: BillingState,\n p: {\n customer?: Customer | null,\n products?: Product[],\n invoices?: Invoice[],\n paymentMethods?: PaymentMethod[],\n setupIntent: SetupIntent | null\n subscriptionProducts: Product[],\n smsProduct: SMSProduct | null,\n country?: Country | null,\n },\n ) {\n if (p.products) state.products = p.products;\n if (p.customer !== undefined) {\n if (p.customer?.subscription?.price) fixPrice(state.products, p.customer?.subscription?.price);\n if (p.customer?.subscription?.scheduledPrice) fixPrice(state.products, p.customer?.subscription?.scheduledPrice);\n if (p.customer?.openInvoices) fixInvoices(state.products, p.customer?.openInvoices);\n state.customer = p.customer;\n }\n if (p.paymentMethods) state.paymentMethods = p.paymentMethods;\n if (p.setupIntent) state.setupIntent = p.setupIntent;\n if (p.invoices && p.invoices.length > 0) {\n fixInvoices(state.products, p.invoices);\n const latest = p.invoices[p.invoices.length - 1];\n const latestIndex = state.invoices.findIndex((o) => o.created! < latest.created!);\n const tokeep = latestIndex > 0 ? state.invoices.slice(latestIndex) : [];\n state.invoices = [...p.invoices, ...tokeep];\n }\n if (p.smsProduct !== undefined) state.smsProduct = p.smsProduct;\n if (p.country !== undefined) state.country = p.country;\n\n if (state.customer !== null && state.customer.currency === '') state.customer.currency = undefined;\n\n state.isLoaded = true;\n\n console.log('Billing products:', state.products);\n console.log('Billing customer:', state.customer);\n console.log('Billing invoices:', state.invoices);\n console.log('Billing sms info:', state.smsProduct);\n console.log('Billing payment methods:', state.paymentMethods);\n console.log('Billing setup intent:', state.setupIntent);\n console.log('Billing geoip country:', state.country);\n },\n BILLING_SET_INVOICES_LIMIT(state: BillingState, limit: number|null) {\n state.invoicesLimit = limit;\n },\n UPDATE_BILLING_INVOICES(state: BillingState, p: { invoices: Invoice[]}) {\n fixInvoices(state.products, p.invoices);\n\n p.invoices.forEach((ni) => {\n const i = state.invoices.findIndex((oi) => oi.ID === ni.ID);\n if (i >= 0) {\n state.invoices.splice(i, 1, ni);\n } else {\n state.invoices = [ni, ...state.invoices];\n }\n });\n },\n};\n\nconst actions = >{\n async resetBilling({ state, commit, rootGetters }) {\n commit('RESET_BILLING');\n },\n async billingSetInvoicesLimit({\n state, commit, rootGetters, dispatch,\n }, p: { limit: number | null }) {\n if (!state.invoicesLimit || (p.limit && p.limit <= state.invoicesLimit)) return;\n commit('BILLING_SET_INVOICES_LIMIT', p.limit ? p.limit + 1 : null);\n await dispatch('billingLoadInvoices');\n },\n async loadBilling({\n state, commit, rootGetters, rootState, dispatch,\n }, p?: { force: boolean }) {\n if (!rootGetters.isLoaded) return;\n const isBillingAllowed = rootGetters.isBillingAllowed as boolean;\n if (!isBillingAllowed) {\n const customer = await httpClient.getCustomer();\n commit('UPDATE_BILLING', { customer });\n } else {\n const invoicesLimit = state.invoicesLimit ?? undefined;\n const {\n products, customer, invoices, paymentMethods, smsProduct, country,\n } = await httpClient.getBilling({ invoicesLimit });\n\n commit('UPDATE_BILLING', {\n products, customer, invoices, paymentMethods, smsProduct, country,\n });\n\n // email fix\n const { email } = rootState.settings.account;\n\n if (state.customer?.ID && !state.customer.email && email) {\n try {\n const cust = toDTOCustomer(state.customer);\n cust.email = email;\n await dispatch('billingUpdateCustomer', { customer: cust });\n } catch (e) {\n console.log(e);\n }\n }\n }\n },\n // async loadProducts({ state, commit, rootGetters }) {\n // if (!rootGetters.isLoaded) return;\n // const products = await httpClient.getProducts();\n // commit('UPDATE_BILLING', { products });\n // },\n // async loadCustomer({ state, commit, rootGetters }) {\n // if (!rootGetters.isLoaded) return;\n // const customer = await httpClient.getCustomer();\n // commit('UPDATE_BILLING', { customer });\n // },\n async billingLoadInvoices({ state, commit, rootGetters }) {\n if (!rootGetters.isLoaded) return;\n const limit = state.invoicesLimit ?? undefined;\n console.log('billingLoadInvoices', limit);\n const invoices = await httpClient.getInvoices({ limit });\n commit('UPDATE_BILLING', { invoices });\n },\n async billingCreateCustomer({ state, commit, rootGetters }, p: { customer: Customer }): Promise {\n if (!rootGetters.isLoaded) return null;\n const customer = await httpClient.createCustomer(p.customer);\n commit('UPDATE_BILLING', { customer });\n return customer;\n },\n async billingUpdateCustomer({ state, commit, rootGetters }, p: { customer: Customer }): Promise {\n if (!rootGetters.isLoaded) return null;\n const customer = await httpClient.updateCustomer(p.customer);\n commit('UPDATE_BILLING', { customer });\n return customer;\n },\n async billingLoadSMSProduct({ commit, rootGetters }, p: { smsProduct: SMSProduct }): Promise {\n if (!rootGetters.isLoaded) return null;\n const smsProduct = await httpClient.getSMSProduct();\n commit('UPDATE_BILLING', { smsProduct });\n return smsProduct;\n },\n async billingCreateSMSProduct({ commit, rootGetters }, p: { smsProduct: SMSProduct }): Promise {\n if (!rootGetters.isLoaded) return null;\n const smsProduct = await httpClient.createSMSProduct(p.smsProduct);\n commit('UPDATE_BILLING', { smsProduct });\n return smsProduct;\n },\n async billingUpdateSMSProduct({ commit, rootGetters }, p: { smsProduct: SMSProduct }): Promise {\n if (!rootGetters.isLoaded) return null;\n const smsProduct = await httpClient.updateSMSProduct(p.smsProduct);\n commit('UPDATE_BILLING', { smsProduct });\n return smsProduct;\n },\n async billingCreateSubscription(\n { state, commit, rootGetters },\n p: {\n priceID: string, paymentMethodTypes?: string[], idempotencyKey?: string, deactivatePaymentMethod?: boolean,\n },\n ): Promise {\n if (!rootGetters.isLoaded) return null;\n const customer = await httpClient.createSubscription(p);\n const createdAfter = state.invoices.find(Boolean)?.created;\n const limit = state.invoicesLimit ?? undefined;\n const invoices = await httpClient.getInvoices({ createdAfter, limit });\n commit('UPDATE_BILLING', { customer, invoices });\n return customer;\n },\n async billingUpdateSubscription(\n { state, commit, rootGetters },\n p: { priceID?: string, paymentMethodTypes?: string[], idempotencyKey?: string, prorationDate?: number},\n ): Promise {\n if (!rootGetters.isLoaded) return null;\n const customer = await httpClient.updateSubscription(p);\n const createdAfter = state.invoices.find(Boolean)?.created;\n const limit = state.invoicesLimit ?? undefined;\n const invoices = await httpClient.getInvoices({ createdAfter, limit });\n commit('UPDATE_BILLING', { customer, invoices });\n return customer;\n },\n async billingCancelSubscription({ state, commit, rootGetters }): Promise {\n if (!rootGetters.isLoaded) return null;\n const customer = await httpClient.cancelSubscription();\n const createdAfter = state.invoices.find(Boolean)?.created;\n const limit = state.invoicesLimit ?? undefined;\n const invoices = await httpClient.getInvoices({ createdAfter, limit });\n commit('UPDATE_BILLING', { customer, invoices });\n return customer;\n },\n async billingDeleteSubscription({ state, commit, rootGetters }): Promise {\n if (!rootGetters.isLoaded) return null;\n const customer = await httpClient.deleteSubscription();\n const createdAfter = state.invoices.find(Boolean)?.created;\n const limit = state.invoicesLimit ?? undefined;\n const invoices = await httpClient.getInvoices({ createdAfter, limit });\n commit('UPDATE_BILLING', { customer, invoices });\n return customer;\n },\n async billingPreviewSubscription({ state, commit, rootGetters }, p: { priceID: string }): Promise {\n if (!rootGetters.isLoaded) return null;\n\n const invoice = await httpClient.previewSubscription(p);\n fixInvoices(state.products, [invoice]);\n\n return invoice;\n },\n async billingAddPaymentMethod({ state, commit, rootGetters }, p: { priceID: string }): Promise {\n if (!rootGetters.isLoaded) return null;\n const setupIntent = await httpClient.addPaymentMethod();\n commit('UPDATE_BILLING', { setupIntent });\n return setupIntent;\n },\n async billingFinishPaymentMethod(\n { rootGetters, commit },\n p: { intentID: string, activate?: boolean },\n ): Promise {\n if (!rootGetters.isLoaded) return null;\n const intent = await httpClient.finishPaymentMethod(p);\n\n const customer = await httpClient.getCustomer();\n const paymentMethods = await httpClient.getPaymentMethods();\n commit('UPDATE_BILLING', { customer, paymentMethods });\n\n return intent;\n },\n async billingGetPaymentMethod(\n { rootGetters, commit },\n p: { paymentMethodID: string },\n ): Promise {\n if (!rootGetters.isLoaded) return null;\n const paymentMethod = await httpClient.getPaymentMethod(p.paymentMethodID);\n return paymentMethod;\n },\n async billingDeletePaymentMethod({ state, commit, rootGetters }, p: { paymentMethodID: string }): Promise {\n if (!rootGetters.isLoaded) return;\n await httpClient.deletePaymentMethod(p.paymentMethodID);\n const paymentMethods = await httpClient.getPaymentMethods();\n commit('UPDATE_BILLING', { paymentMethods });\n },\n async billingActivatePaymentMethod({ state, commit, rootGetters }, p: { paymentMethodID: string }): Promise {\n if (!rootGetters.isLoaded) return;\n const customer = await httpClient.activatePaymentMethod(p.paymentMethodID);\n const paymentMethods = await httpClient.getPaymentMethods();\n commit('UPDATE_BILLING', { customer, paymentMethods });\n },\n async billingCreatePaymentInvoice(\n { state, rootGetters, commit },\n p: { priceIDs: string[] },\n ): Promise {\n if (!rootGetters.isLoaded) return null;\n const invoice = await httpClient.createPaymentInvoice(p);\n commit('UPDATE_BILLING_INVOICES', { invoices: [invoice] });\n return invoice;\n },\n async billingFinalizePaymentInvoice(\n { state, rootGetters, commit },\n p: { invoiceID: string, paymentMethodTypes: string[], confirm: boolean },\n ): Promise {\n if (!rootGetters.isLoaded) return null;\n const invoice = await httpClient.finalizePaymentInvoice(p);\n commit('UPDATE_BILLING_INVOICES', { invoices: [invoice] });\n return invoice;\n },\n async billingFinishPaymentInvoice(\n { state, rootGetters, commit },\n p: { invoiceID: string, activate?: boolean, bankTransfer?: boolean },\n ): Promise {\n if (!rootGetters.isLoaded) return null;\n const invoice = await httpClient.finishPaymentInvoice(p);\n if (p.bankTransfer === true) {\n // ignore the latest error from previous charge attemp\n if (invoice.paymentIntent) {\n invoice.paymentIntent.lastDeclineCode = undefined;\n invoice.paymentIntent.lastError = undefined;\n invoice.paymentIntent.lastErrorType = undefined;\n invoice.paymentIntent.lastErrorCode = undefined;\n }\n } else {\n // remove bank transfer instructions if present\n // eslint-disable-next-line no-lonely-if\n if (invoice.paymentIntent?.nextAction?.displayIBANBankTransferInstructions) {\n invoice.paymentIntent.nextAction.displayIBANBankTransferInstructions = undefined;\n }\n }\n\n commit('UPDATE_BILLING_INVOICES', { invoices: [invoice] });\n\n const [customer, paymentMethods, smsProduct] = await Promise.all([\n httpClient.getCustomer(),\n httpClient.getPaymentMethods(),\n httpClient.getSMSProduct(),\n ]);\n\n commit('UPDATE_BILLING', { customer, paymentMethods, smsProduct });\n\n return invoice;\n\n // const isSubscription = invoice?.lines?.some((l) => l.price?.product?.type === ProductType.Subscription);\n // let subscription: Subscription | undefined;\n\n // if (p.activate || isSubscription) {\n // const customer = await httpClient.getCustomer();\n // const paymentMethods = await httpClient.getPaymentMethods();\n // subscription = customer?.subscription;\n // commit('UPDATE_BILLING', { customer, paymentMethods });\n // }\n\n // return { invoice, subscription };\n },\n async billingDeletePaymentInvoice({ rootGetters }, p: { invoiceID: string }): Promise {\n if (!rootGetters.isLoaded) return null;\n const invoice = await httpClient.deletePaymentInvoice(p);\n return invoice;\n },\n async billingGetInvoice({ state, rootGetters, commit }, p: { invoiceID: string }): Promise {\n if (!rootGetters.isLoaded) return null;\n const invoice = await httpClient.getInvoice(p);\n\n // // finalize bank transfer invoice if needed\n // if (state.customer?.customerBalanceStatus === CustomerBalanceStatus.Granted\n // && invoice.paymentMethodTypes?.includes(PaymentMethodType.CustomerBalance)\n // && invoice.paymentIntent?.nextAction?.displayIBANBankTransferInstructions === undefined) {\n // invoice = await httpClient.finalizePaymentInvoice(\n // { ...p, paymentMethodTypes: [PaymentMethodType.CustomerBalance], confirm: true },\n // );\n // }\n\n commit('UPDATE_BILLING_INVOICES', { invoices: [invoice] });\n\n return invoice;\n },\n};\n\nconst getters = >{\n billingSubscriptionPriceProducts(state: BillingState, localGetters: any): Product[] {\n const products = state.products.filter((p) => p.type === ProductType.Subscription && p.active);\n products.sort((a, b) => (a.subscriptionTierLevel ?? 0) - (b.subscriptionTierLevel ?? 0));\n return products;\n },\n billingMaxSubscriptionTierLevel(state: BillingState, localGetters: any): number {\n return maxSubscriptionTierLevel(localGetters.billingSubscriptionPriceProducts);\n },\n billingSMSPriceProduct(state: BillingState, localGetters: any): Product | null {\n return state.products.find((p) => p.type === ProductType.SMS && p.active) ?? null;\n },\n billingCurrencies(state: BillingState, localGetters: any): string[] {\n const currencySet = new Set();\n state.products.forEach((product) => {\n product.prices?.forEach((price) => currencySet.add(price.currency!));\n });\n return Array.from(currencySet);\n },\n billingCustomer(state: BillingState, localGetters: any, rootState: any, rootGetters: any): Customer | null {\n return state.customer ?? null;\n },\n billingSubscriptionDueInvoices(state: BillingState, localGetters: any, rootState: any, rootGetters: any): Invoice[] {\n return state.customer?.openInvoices?.filter((i) => i.overDue) ?? [];\n },\n billingSubscriptionOpenInvoices(state: BillingState, localGetters: any, rootState: any, rootGetters: any): Invoice[] {\n return state.customer?.openInvoices?.filter((i) => i.generatedBySubscription) ?? [];\n },\n billingSubscription(state: BillingState, localGetters: any, rootState: any, rootGetters: any): Subscription | null {\n return state.customer?.subscription ?? null;\n },\n billingInvoices(state: BillingState, localGetters: any, rootState: any, rootGetters: any): Invoice[] {\n return state.invoices;\n },\n billingLatestInvoice(state: BillingState, localGetters: any, rootState: any, rootGetters: any): Invoice | null {\n return state.invoices.find(Boolean) ?? null;\n },\n billingPaymentMethods(state: BillingState, localGetters: any, rootState: any, rootGetters: any): PaymentMethod[] {\n return state.paymentMethods;\n },\n isBillingLoaded(state: BillingState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoaded && rootGetters.isLoaded;\n },\n isBillingCustomer(state: BillingState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return !!state.customer?.ID;\n },\n billingGuessedCountry(state: BillingState, localGetters: any, rootState: any, rootGetters: any): Country | null {\n return state.country ?? null;\n },\n billingGuessedCurrency(state: BillingState, localGetters: any, rootState: any, rootGetters: any): string {\n const { account } = rootState.settings;\n const customer = state.customer ?? null;\n const currencies = localGetters.billingCurrencies as string[];\n\n const currs = [\n customer?.currency,\n preferedCountryCurrency(customer?.country),\n preferedCountryCurrency(account.countryCode),\n Currency.EUR as string,\n ];\n\n for (let ci = 0; ci < currs.length; ci += 1) {\n const curr = currs[ci];\n if (curr && currencies.includes(curr)) return curr;\n }\n\n return Currency.EUR as string;\n },\n billingSMSProduct(state: BillingState, localGetters: any, rootState: any, rootGetters: any): SMSProduct | null {\n return state.smsProduct;\n },\n billingAllInvoicesLoaded(state: BillingState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return !state.invoicesLimit || state.invoices.length < state.invoicesLimit;\n },\n};\n\nconst BillingStore = {\n namespaced: false,\n state: new BillingState(),\n mutations,\n actions,\n getters,\n};\n\nexport default BillingStore;\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport httpClient from '@/api/http-client';\nimport Campaign from '@/model/Campaign';\nimport {\n toModelEntities, toMapById, mergeToModelEntities,\n} from '@/model/model-utils';\nimport CampaignFilter, { CampaignFilterMapping, compareCampaignFilter } from '@/model/CampaignFilter';\nimport IRootState, { ICampaignFilterState, IMessageCenterState } from './store-state';\n\nexport class CampaignFilterState implements ICampaignFilterState {\n campaigns: Campaign[] = [];\n\n campaignFilters: CampaignFilter[] = [];\n\n isLoaded: boolean = false;\n}\n\nconst mutations = >{\n RESET(state: CampaignFilterState) {\n Object.assign(state, new CampaignFilterState());\n },\n RESET_CAMPAIGN_FILTER(state: CampaignFilterState) {\n Object.assign(state, new CampaignFilterState());\n },\n UPDATE_CAMPAIGN_FILTER(state: CampaignFilterState, p: { campaigns: Campaign[], campaignFilters: CampaignFilter[] }) {\n console.log('UPDATE_CAMPAIGN_FILTER');\n\n if (p.campaigns) state.campaigns = p.campaigns;\n if (p.campaignFilters) state.campaignFilters = p.campaignFilters;\n state.isLoaded = true;\n\n console.log('Campaign filter campaigns:', state.campaigns);\n console.log('Campaign filter filters:', state.campaignFilters);\n },\n};\n\nconst actions = >{\n async resetCampaignFilter({ commit }) {\n commit('RESET_CAMPAIGN_FILTER');\n },\n async loadCampaignFilter({ commit, state, rootGetters }) {\n if (!rootGetters.isLoaded) return;\n\n const update = await httpClient.loadCampaignFilter();\n\n const campaigns = toModelEntities(Campaign, update.campaigns, { stringOrderField: 'description' });\n const campaignsById = toMapById(campaigns);\n const campaignFilters = toModelEntities(\n CampaignFilter,\n update.campaignFilters,\n { compareFn: compareCampaignFilter, mapping: { campaignsById } as CampaignFilterMapping },\n );\n\n commit('UPDATE_CAMPAIGN_FILTER', { campaigns, campaignFilters });\n },\n async sendCampaignFilter({ state, commit, rootGetters }, p: { campaignFilter: CampaignFilter, isDeleted?: boolean }) {\n const dto = p.campaignFilter.toDto();\n if (p.isDeleted === true) dto.isDeleted = true;\n\n const update = await httpClient.sendCampaignFilter(dto);\n\n const campaignsById = toMapById(state.campaigns);\n const campaignFilters = mergeToModelEntities(\n CampaignFilter,\n state.campaignFilters,\n update.campaignFilters,\n { compareFn: compareCampaignFilter, mapping: { campaignsById } as CampaignFilterMapping },\n );\n\n commit('UPDATE_CAMPAIGN_FILTER', { campaignFilters });\n },\n};\n\nconst getters = >{\n isCampaignFilterLoaded(state: CampaignFilterState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoaded && rootGetters.isLoaded;\n },\n};\n\nconst CampaignFilterStore = {\n namespaced: false,\n state: new CampaignFilterState(),\n mutations,\n actions,\n getters,\n};\n\nexport default CampaignFilterStore;\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport {\n dateFlooredToDate, hourMinFromTimeText, isDateAfterDate,\n setDateHoursMinutes, TIME_SLOTS_COUNT, dateIndexFromDate, weekdayNumber, areDatesEqual,\n} from '@/services/time-utils';\nimport Tab from '@/model/Tab';\nimport TimeSlot from '@/model/TimeSlot';\nimport { InvalidStatuses } from '@/util/status';\nimport Reservation, { ReservationSource } from '@/model/Reservation';\nimport Service from '@/model/Service';\nimport { DEFAULT_SPLIT_LUNCH_DINNER_TIME } from '@/services/configuration';\nimport TagNote from '@/model/TagNote';\nimport Label from '@/model/Label';\nimport { strcmp } from '@/services/common';\nimport i18n from '@/plugins/i18n';\nimport { timeSlotsFromHours } from '@/services/timestlot-utils';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport DashboardAvailability, {\n DashboardLimitData,\n DashboardLimitReason,\n} from '@/grpc-api/model/dashboard-availability';\nimport { IUpdate } from '@/api/api-update';\nimport storage from '@/services/local-storage';\nimport IRootState, { IDashboardState } from './store-state';\n\nexport const DashboardAllTabs = new Tab({ tabId: -1, tabName: i18n.tc('label.all_sections') });\nexport const DashboardOnlineTabs = new Tab({ tabId: -2, tabName: i18n.tc('label.online_sections') });\n\nexport class DashboardState implements IDashboardState {\n tab: Tab = DashboardOnlineTabs;\n\n date: Date | null = null;\n\n isLoaded: boolean = false;\n\n isDayAvailability: boolean = false;\n\n dayAvailability: DashboardAvailability | null = null;\n\n isDayAvailabilityLoaded: boolean = false;\n\n showDetails: boolean = storage.dashboardShowDetails();\n}\n\nconst mutations = >{\n RESET(state: DashboardState) {\n Object.assign(state, new DashboardState());\n },\n RESET_DASHBOARD(state: DashboardState) {\n Object.assign(state, new DashboardState());\n },\n UPDATE_DASHBOARD(\n state: DashboardState,\n p: { tab?: Tab, date?: Date | null, isLoaded?: boolean},\n ) {\n state.tab = p.tab === undefined ? state.tab : p.tab;\n state.isLoaded = p.isLoaded === undefined ? state.isLoaded : p.isLoaded;\n const date = p.date ? dateFlooredToDate(p.date) : p.date;\n state.date = date === undefined ? state.date : date;\n },\n UPDATE_DASHBOARD_AVAILABILITY(\n state: DashboardState,\n p: { isDayAvailability?: boolean, dayAvailability?: DashboardAvailability, isDayAvailabilityLoaded?: boolean },\n ) {\n state.isDayAvailability = p.isDayAvailability === undefined ? state.isDayAvailability : p.isDayAvailability;\n state.dayAvailability = p.dayAvailability === undefined ? state.dayAvailability : p.dayAvailability;\n state.isDayAvailabilityLoaded = p.isDayAvailabilityLoaded === undefined\n ? state.isDayAvailabilityLoaded : p.isDayAvailabilityLoaded;\n\n console.log('UPDATE_DASHBOARD_AVAILABILITY: ', state.isDayAvailability, state.dayAvailability);\n },\n SET_DASHBOARD_AUX(state: DashboardState, p: { showDetails?: boolean }) {\n if (p.showDetails !== undefined) {\n state.showDetails = p.showDetails;\n storage.setDashboardShowDetails(p.showDetails);\n }\n console.log('SET_DASHBOARD_AUX: ', state.showDetails);\n },\n};\n\nconst actions = >{\n async resetDashboard({\n state, commit, dispatch, rootGetters,\n }) {\n commit('RESET_DASHBOARD');\n },\n async setDashboardDate({\n state, commit, dispatch, rootGetters,\n }, date: Date) {\n if (state.date && areDatesEqual(state.date, dateFlooredToDate(date))) return;\n\n commit('UPDATE_DASHBOARD', { date, isLoaded: false });\n commit('UPDATE_DASHBOARD_AVAILABILITY', {\n isDayAvailability: false,\n dayAvailability: null,\n isDayAvailabilityLoaded: false,\n });\n // await dispatch('loadDashboard');\n if (!rootGetters.isTodayOrFuture) return;\n await dispatch('loadDashboardAvailability');\n commit('UPDATE_DASHBOARD', { isLoaded: true });\n },\n async setDashboardTab({\n state, commit, dispatch, rootGetters,\n }, tab: Tab) {\n commit('UPDATE_DASHBOARD', { tab });\n },\n async loadDashboardAvailability({\n state, commit, dispatch, rootGetters,\n }) {\n if (!rootGetters.isLoaded || !state.date) return;\n\n const dateIndex = dateIndexFromDate(state.date);\n const dayAvailability = await grpcClient.getAvailability(dateIndex);\n if (dateIndexFromDate(state.date) !== dateIndex) return;\n\n commit('UPDATE_DASHBOARD_AVAILABILITY', {\n isDayAvailability: dayAvailability.isAvailable,\n dayAvailability,\n isDayAvailabilityLoaded: true,\n });\n },\n async setDashboardShowDetails({ commit }, showDetails: boolean) {\n commit('SET_DASHBOARD_AUX', { showDetails });\n },\n async refresh({ dispatch }, update: IUpdate) {\n console.log('dashboard store refresh');\n\n if (\n !update.accountSettings\n && !update.openingHours\n && !update.datesAndTimes\n && !update.reservations) return;\n\n // load now\n await dispatch('loadDashboardAvailability');\n },\n};\n\nconst getters = >{\n isDashboardDayAvailabilityLoaded(state: DashboardState, localGetters: any, rootState: any, rootGetters: any) {\n return state.isLoaded && rootGetters.isLoaded && state.isDayAvailabilityLoaded;\n },\n dashboardDayAvailability(state: DashboardState, localGetters: any, rootState: any, rootGetters: any) {\n if (!localGetters.isDashboardDayAvailabilityLoaded) return new DashboardAvailability();\n return state.dayAvailability;\n },\n isDashboardLoaded(state: DashboardState, localGetters: any, rootState: any, rootGetters: any) {\n return state.isLoaded && rootGetters.isLoaded;\n },\n dashboardTimeSlots(state, localGetters, rootState, rootGetters) {\n return timeSlotsFromHours(\n state.date ?? new Date(),\n rootGetters.openingHoursInWeekdaysByTimeIndex,\n localGetters.datesAndTimesById,\n );\n },\n dashboardIsOnlineTab(state) {\n return state.tab === DashboardOnlineTabs || state.tab.usingWeekdaysAndTimes === true;\n },\n dashboardReservations(state, localGetters, rootState, rootGetters) {\n const di = dateIndexFromDate(state.date ?? new Date());\n const dateSlot = rootState.reservations.dateSlotsByDateIndex[di];\n const reservations = dateSlot?.reservations ?? [];\n\n const predicate = (r: Reservation) => !InvalidStatuses.includes(r.status) && !r.isBlock;\n return reservations.filter(predicate);\n },\n dashboardFilteredReservations(state, localGetters, rootState, rootGetters) {\n const onlineTabs = rootState.settings.tabs.filter((t) => t.usingWeekdaysAndTimes === true);\n const reservations = localGetters.dashboardReservations as Reservation[];\n const predicate = (r: Reservation) => false\n || (r.tab?.id === state.tab.id) // selected specific tab\n || (state.tab === DashboardOnlineTabs && onlineTabs.some((t) => t.id === r.tab?.id)) // selected online tabs\n || (state.tab === DashboardAllTabs); // selected all tabs\n return reservations.filter(predicate);\n },\n dashboardGuestsPerTime(state, localGetters, rootState, rootGetters) {\n const { tabs } = rootState.settings;\n const onlineTabs = tabs.filter((t) => t.usingWeekdaysAndTimes === true);\n\n const sdata = Array.from({ length: TIME_SLOTS_COUNT }, (x, si) => ({\n s: 0, // seated guests\n i: 0, // incoming guests\n ri: 0, // incoming reservations\n sl: 0, // seated limit\n il: 0, // incoming limit\n ril: 0, // incoming reservations limit\n slr: DashboardLimitReason.None,\n ilr: DashboardLimitReason.None,\n rilr: DashboardLimitReason.None,\n imin: 0,\n imax: 0,\n iminr: DashboardLimitReason.None,\n imaxr: DashboardLimitReason.None,\n }) as DashboardLimitData);\n\n const smap = new Map();\n sdata.forEach((sd, i) => { smap.set(i, sd); });\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n reservations.forEach((r) => {\n // incoming guests and reservations\n smap.get(r.slotBegin)!.i += r.partySize;\n smap.get(r.slotBegin)!.ri += 1;\n // seated guests\n for (let si = r.slotBegin; si <= r.slotEnd; si += 1) smap.get(si)!.s += r.partySize;\n });\n\n // max capacity for section or all sections\n let ma = 0;\n let mar = DashboardLimitReason.None;\n if (state.tab !== DashboardAllTabs && state.tab !== DashboardOnlineTabs) {\n if (state.tab.usingWeekdaysAndTimes) { ma = state.tab.capacity; mar = DashboardLimitReason.Capacity; }\n } else {\n tabs.forEach((t) => {\n if (t.usingWeekdaysAndTimes) { ma += t.capacity; mar = DashboardLimitReason.Capacity; }\n });\n }\n\n const slots = localGetters.dashboardTimeSlots as TimeSlot[];\n slots.forEach((s) => {\n const sd = smap.get(s.slot)!;\n\n // seated limit\n sd.sl = ma;\n sd.slr = mar;\n\n let il = ma;\n let ilr = mar;\n let ril = ma;\n let rilr = mar;\n let imin = 0;\n let imax = Infinity;\n let iminr = DashboardLimitReason.None;\n let imaxr = DashboardLimitReason.None;\n\n const {\n defaultMaxGuestsPerTime, defaultMaxReservationsPerTime, defaultMinPartySize, defaultMaxPartySize,\n } = rootState.settings.accountSettings;\n\n // incoming limit and min and max incoming only for all sections or online sections\n if (!s.isOpen) {\n il = 0;\n ril = 0;\n ilr = s.dateAndTime ? DashboardLimitReason.ClosedSpecialHour : DashboardLimitReason.ClosedOpeningHour;\n rilr = s.dateAndTime ? DashboardLimitReason.ClosedSpecialHour : DashboardLimitReason.ClosedOpeningHour;\n } else { // if (state.tab === DashboardAllTabs || state.tab === DashboardOnlineTabs) {\n // incoming guests limit\n if (s.dateAndTime?.maximumGuests) {\n il = s.dateAndTime?.maximumGuests; ilr = DashboardLimitReason.MaxGuestsSpecialHour;\n } else if (s.openingHour?.maximumGuests) {\n il = s.openingHour?.maximumGuests; ilr = DashboardLimitReason.MaxGuestsOpeningHour;\n } else if (defaultMaxGuestsPerTime) {\n il = defaultMaxGuestsPerTime; ilr = DashboardLimitReason.MaxGuestsDefault;\n } else {\n il = Infinity;\n }\n\n // incoming reservations limit\n if (s.dateAndTime?.maximumReservations) {\n ril = s.dateAndTime?.maximumReservations; rilr = DashboardLimitReason.MaxReservationsSpecialHour;\n } else if (s.openingHour?.maximumReservations) {\n ril = s.openingHour?.maximumReservations; rilr = DashboardLimitReason.MaxReservationsOpeningHour;\n } else if (defaultMaxReservationsPerTime) {\n ril = defaultMaxReservationsPerTime; rilr = DashboardLimitReason.MaxReservationsDefault;\n } else {\n ril = Infinity;\n }\n\n // min party size limit\n if (s.dateAndTime?.minimumPartySize) {\n imin = s.dateAndTime?.minimumPartySize; iminr = DashboardLimitReason.MinPartySizeSpecialHour;\n } else if (s.openingHour?.minimumPartySize) {\n imin = s.openingHour?.minimumPartySize; iminr = DashboardLimitReason.MinPartySizeOpeningHour;\n } else if (defaultMinPartySize) {\n imin = defaultMinPartySize; iminr = DashboardLimitReason.MinPartySizeDefault;\n } else {\n imin = 0;\n }\n\n // max party size limit\n if (s.dateAndTime?.maximumPartySize) {\n imax = s.dateAndTime?.maximumPartySize; imaxr = DashboardLimitReason.MaxPartySizeSpecialHour;\n } else if (s.openingHour?.maximumPartySize) {\n imax = s.openingHour?.maximumPartySize; imaxr = DashboardLimitReason.MaxPartySizeOpeningHour;\n } else if (defaultMaxPartySize) {\n imax = defaultMaxPartySize; imaxr = DashboardLimitReason.MaxPartySizeDefault;\n } else {\n imax = Infinity;\n }\n }\n\n sd.il = il;\n sd.ilr = ilr;\n sd.ril = ril;\n sd.rilr = rilr;\n sd.imin = imin;\n sd.imax = imax;\n sd.iminr = iminr;\n sd.imaxr = imaxr;\n });\n\n // data\n // console.log('dashboardGuestsPerTime:', sdata);\n return sdata;\n },\n dashboardGuestsForSections(state, localGetters, rootState, rootGetters): { s: Tab, g: number, r: number }[] {\n const map = new Map();\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n reservations.forEach((r) => {\n if (!r.tab) return;\n let tdata = map.get(r.tab.id);\n if (!tdata) {\n tdata = { g: 0, r: 0 };\n map.set(r.tab.id, tdata);\n }\n tdata.g += r.partySize;\n tdata.r += 1;\n });\n\n const sdata = rootState.settings.tabs.map((t) => ({ s: t, ...(map.get(t.id) ?? { g: 0, r: 0 }) }));\n\n // console.log('dashboardGuestsForSections:', sdata);\n return sdata;\n },\n dashboardLunchDinnerForSections(state, localGetters, rootState, rootGetters): { s: Tab, l: number, d: number }[] {\n const splitTime = rootState.settings.accountSettings.splitLunchDinnerTime ?? DEFAULT_SPLIT_LUNCH_DINNER_TIME;\n const hm = hourMinFromTimeText(splitTime) ?? hourMinFromTimeText(DEFAULT_SPLIT_LUNCH_DINNER_TIME)!;\n const splitDate = setDateHoursMinutes(rootState.update.date, hm.h, hm.m);\n\n const map = new Map();\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n reservations.forEach((r) => {\n if (!r.tab) return;\n let tdata = map.get(r.tab.id);\n if (!tdata) {\n tdata = { l: 0, d: 0 };\n map.set(r.tab.id, tdata);\n }\n\n if (!isDateAfterDate(r.dateBegin, splitDate)) { tdata.l += r.partySize; } else { tdata.d += r.partySize; }\n });\n\n const sdata = rootState.settings.tabs.map((t) => ({ s: t, ...(map.get(t.id) ?? { l: 0, d: 0 }) }));\n\n // console.log('dashboardLunchDinnerForSections:', sdata);\n return sdata;\n },\n dashboardGuestsForServices(state, localGetters, rootState, rootGetters): { s: Service, g: number, r: number }[] {\n const map = new Map();\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n reservations.forEach((r) => {\n if (!r.service) return;\n let tdata = map.get(r.service.id);\n if (!tdata) {\n tdata = { g: 0, r: 0 };\n map.set(r.service.id, tdata);\n }\n\n tdata.g += r.partySize;\n tdata.r += 1;\n });\n\n const sdata = rootState.settings.services.map((s) => ({ s, ...(map.get(s.id) ?? { g: 0, r: 0 }) }));\n\n // console.log('dashboardGuestsForService:', sdata);\n return sdata;\n },\n dashboardDayStats(state, localGetters, rootState, rootGetters): {\n reservations: number, tables: number, guests: number, lunch: number, dinner: number,\n labeledReservations: number, labeledGuests: number, serviceReservations: number, serviceGuests: number,\n } {\n const splitTime = rootState.settings.accountSettings.splitLunchDinnerTime ?? DEFAULT_SPLIT_LUNCH_DINNER_TIME;\n const hm = hourMinFromTimeText(splitTime) ?? hourMinFromTimeText(DEFAULT_SPLIT_LUNCH_DINNER_TIME)!;\n const splitDate = setDateHoursMinutes(rootState.update.date, hm.h, hm.m);\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n\n const tables = new Set();\n let guests = 0;\n let lunch = 0;\n let dinner = 0;\n let labeledReservations = 0;\n let labeledGuests = 0;\n let serviceReservations = 0;\n let serviceGuests = 0;\n\n reservations.forEach((r) => {\n r.tabItems.forEach((t) => { tables.add(t.id); });\n guests += r.partySize;\n if (!isDateAfterDate(r.dateBegin, splitDate)) { lunch += r.partySize; } else dinner += r.partySize;\n\n if (r.label) {\n labeledReservations += 1;\n labeledGuests += r.partySize;\n }\n\n if (r.service) {\n serviceReservations += 1;\n serviceGuests += r.partySize;\n }\n });\n\n return {\n reservations: reservations.length,\n tables: tables.size,\n guests,\n lunch,\n dinner,\n labeledReservations,\n labeledGuests,\n serviceReservations,\n serviceGuests,\n };\n },\n dashboardGuestsForTagNotes(state, localGetters, rootState, rootGetters):\n {gr: { t: TagNote, g: number, r: number }[], trs: number} {\n const { tagNotes } = rootState.settings;\n const matchTagsText = new RegExp(tagNotes.map((tag) => `(${tag.dotText})`).join('|'), 'g');\n\n let trs = 0;\n const map = new Map();\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n reservations.forEach((r) => {\n if (!r.notes) return;\n\n const matches = r.notes.match(matchTagsText);\n if (!matches) return;\n\n trs += 1;\n\n matches.forEach((mtg) => {\n let tdata = map.get(mtg);\n if (!tdata) {\n tdata = { g: 0, r: 0 };\n map.set(mtg, tdata);\n }\n tdata.g += r.partySize;\n tdata.r += 1;\n });\n });\n\n const gr = tagNotes.map((t) => ({ t, ...(map.get(t.dotText) ?? { g: 0, r: 0 }) }));\n\n // console.log('dashboardGuestsForTagNotes:', { gr, trs });\n return { gr, trs };\n },\n\n dashboardGuestsForLabels(state, localGetters, rootState, rootGetters):\n { gr: { l: Label, g: number, r: number }[], lrs: number } {\n const { labels } = rootState.settings;\n\n let lrs = 0;\n const map = new Map();\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n reservations.forEach((r) => {\n if (!r.label) return;\n\n lrs += 1;\n\n let data = map.get(r.label.id);\n if (!data) {\n data = { g: 0, r: 0 };\n map.set(r.label.id, data);\n }\n data.g += r.partySize;\n data.r += 1;\n });\n\n const gr = labels.map((l) => ({ l, ...(map.get(l.id) ?? { g: 0, r: 0 }) }));\n\n // console.log('dashboardGuestsForLabels:', { gr, lrs });\n return { gr, lrs };\n },\n\n dashboardGuestsForSource(state, localGetters, rootState, rootGetters): { s: string, g: number, r: number }[] {\n const tmap = new Map();\n tmap.set('online', { g: 0, r: 0 });\n tmap.set('user', { g: 0, r: 0 });\n\n const cmap = new Map();\n cmap.set('none', { g: 0, r: 0 });\n\n const reservations = localGetters.dashboardFilteredReservations as Reservation[];\n reservations.forEach((r) => {\n // type\n const tkey = r.reservationType || 'other';\n let tdata = tmap.get(tkey);\n if (!tdata) {\n tdata = { g: 0, r: 0 };\n tmap.set(tkey, tdata);\n }\n tdata.g += r.partySize;\n tdata.r += 1;\n\n // campaign\n if (r.reservationType !== ReservationSource.Online) return; // campaign only for onlines\n\n const ckey = r.reservationCampaign || 'none';\n let cdata = tmap.get(ckey);\n if (!cdata) {\n cdata = { g: 0, r: 0 };\n cmap.set(ckey, cdata);\n }\n cdata.g += r.partySize;\n cdata.r += 1;\n });\n\n // type results\n const tentries = Array.from(tmap.entries());\n const tdata = [\n ...tentries.slice(0, 2).map((e) => ({ s: `t-${e[0]}`, g: e[1].g, r: e[1].r })), // online and user are first\n ...tentries.slice(2).map((e) => ({ s: `t-${e[0]}`, g: e[1].g, r: e[1].r }))\n .sort((o1, o2) => strcmp(o1.s, o2.s)), // all other sorted\n ];\n\n // campaing results\n const centries = Array.from(cmap.entries());\n const cdata = centries.map((e) => ({ s: `c-${e[0]}`, g: e[1].g, r: e[1].r })).sort((o1, o2) => strcmp(o1.s, o2.s));\n\n // results\n return [...tdata, ...cdata];\n },\n};\n\nconst DashboardStore = {\n namespaced: false,\n state: new DashboardState(),\n mutations,\n actions,\n getters,\n};\n\nexport default DashboardStore;\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\nimport { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport { deleteModelEntities } from '@/grpc-api/model/model-utils';\nimport Feedback, {\n FeedbackMapping, FeedbackFilter, FeedbackSortFncType, FeedbackSortType,\n} from '@/grpc-api/model/feedback';\nimport {\n DateRange, DateRangePeriod, areDateRangesEqual, dateRangeFromPeriod,\n} from '@/services/date-range';\nimport { dateIndexFromDate, unixFromDate } from '@/services/time-utils';\nimport FeedbackSettings, { FeedbackSettingsMapping } from '@/grpc-api/model/feedback-settings';\nimport IRootState, { IFeedbackState } from './store-state';\n\n// eslint-disable-next-line no-use-before-define\nfunction filterFeedbacks(feedbacks: Feedback[], filter: FeedbackFilter): Feedback[] {\n const filteredFeedbacks = feedbacks.filter((f) => {\n if (filter.name.length >= 3 && (f.contactName === undefined || !f.contactName.toLowerCase().includes(filter.name.toLowerCase()))) return false;\n if (filter.comments.length >= 3 && (f.comments === undefined || !f.comments.toLowerCase().includes(filter.comments.toLowerCase()))) return false;\n\n if (filter.foodRating.length > 0 && !filter.foodRating.includes(f.foodRating ?? 0)) return false;\n if (filter.serviceRating.length > 0 && !filter.serviceRating.includes(f.serviceRating ?? 0)) return false;\n if (filter.ambienceRating.length > 0 && !filter.ambienceRating.includes(f.ambienceRating ?? 0)) return false;\n if (filter.overallRating.length > 0 && !filter.overallRating.includes(f.overallRating ?? 0)) return false;\n return true;\n });\n return filteredFeedbacks;\n}\n\nexport class FeedbackState implements IFeedbackState {\n settings: FeedbackSettings | null = null;\n\n dateRange: DateRange = dateRangeFromPeriod(DateRangePeriod.Last90Days);\n\n filter: FeedbackFilter = {\n name: '',\n comments: '',\n foodRating: [1, 2, 3, 4, 5],\n serviceRating: [1, 2, 3, 4, 5],\n ambienceRating: [1, 2, 3, 4, 5],\n overallRating: [1, 2, 3, 4, 5],\n };\n\n selectedFeedback: Feedback | null = null;\n\n feedbacks: Feedback[] = [];\n\n filteredFeedbacks: Feedback[] = [];\n\n isLoading: boolean = false;\n\n isLoaded: boolean = false;\n\n isFullyLoaded: boolean = false;\n\n visiblePageStart: number = 0;\n\n visiblePageSize: number = 25;\n\n feedbackSortType: FeedbackSortType = FeedbackSortType.Created;\n\n feedbackSortDesc: boolean = true;\n\n feedbackCompareFnc: FeedbackSortFncType = Feedback.compareFnc(FeedbackSortType.Created);\n}\n\nconst mutations = >{\n RESET(state: FeedbackState) {\n Object.assign(state, new FeedbackState());\n },\n RESET_FEEDBACK(state: FeedbackState) {\n Object.assign(state, new FeedbackState());\n },\n UPDATE_FEEDBACK_SETTINGS(state: FeedbackState, p: { settings: FeedbackSettings }) {\n state.settings = p.settings;\n },\n UPDATE_FEEDBACK_SELECTED(state: FeedbackState, p: { feedback: Feedback|null }) {\n if (p.feedback !== undefined) state.selectedFeedback = p.feedback;\n },\n UPDATE_FEEDBACK_REFRESHED(state: FeedbackState, p: { feedbacks: Feedback[] }) {\n const newSelectedFeedback = p.feedbacks.find((f) => state.selectedFeedback?.id === f.id);\n if (newSelectedFeedback) state.selectedFeedback = newSelectedFeedback;\n\n deleteModelEntities(state.feedbacks, p.feedbacks);\n state.feedbacks.push(...p.feedbacks);\n state.filteredFeedbacks = filterFeedbacks(state.feedbacks, state.filter);\n state.filteredFeedbacks.sort(state.feedbackCompareFnc);\n console.log('UPDATE_FEEDBACK_REFRESHED: refreshed feedbacks=', p.feedbacks);\n },\n UPDATE_FEEDBACK_LOADED(state: FeedbackState, p: { dateRange?: DateRange, feedbacks?: Feedback[], additionalFeedbacks?: Feedback[], isLoading?: boolean, isLoaded?: boolean, isFullyLoaded?: boolean }) {\n if (p.dateRange) { state.dateRange = p.dateRange; }\n\n if (p.isLoading !== undefined) state.isLoading = p.isLoading;\n if (p.isLoaded !== undefined) state.isLoaded = p.isLoaded;\n if (p.isFullyLoaded !== undefined) state.isFullyLoaded = p.isFullyLoaded;\n\n if (p.feedbacks !== undefined) {\n state.feedbacks = [...p.feedbacks];\n state.filteredFeedbacks = [...p.feedbacks];\n }\n\n if (p.additionalFeedbacks !== undefined) {\n state.feedbacks.push(...p.additionalFeedbacks);\n state.filteredFeedbacks.push(...p.additionalFeedbacks);\n }\n\n if (state.isFullyLoaded) {\n state.filteredFeedbacks = filterFeedbacks(state.feedbacks, state.filter);\n state.filteredFeedbacks.sort(state.feedbackCompareFnc);\n }\n\n console.log('UPDATE_FEEDBACK_LOADED: ', `${state.feedbacks.length} feedbacks loaded`);\n },\n UPDATE_FEEDBACK_PAGE(state: FeedbackState, p: { pageSize?: number, pageStart?: number }) {\n if (p.pageSize) state.visiblePageSize = p.pageSize;\n if (p.pageStart !== undefined) state.visiblePageStart = p.pageStart;\n },\n APPLY_FEEDBACK_FILTER(state: FeedbackState, p: { filter: FeedbackFilter }) {\n state.filter = p.filter;\n state.filteredFeedbacks = filterFeedbacks(state.feedbacks, state.filter);\n state.filteredFeedbacks.sort(state.feedbackCompareFnc);\n },\n UPDATE_FEEDBACK_SORT(state: FeedbackState, p: { sortType?: FeedbackSortType, sortDesc?: boolean }) {\n if (p.sortType !== undefined) state.feedbackSortType = p.sortType;\n if (p.sortDesc !== undefined) state.feedbackSortDesc = p.sortDesc;\n\n state.feedbackCompareFnc = state.feedbackSortDesc ? Feedback.compareFncDesc(state.feedbackSortType) : Feedback.compareFnc(state.feedbackSortType);\n state.filteredFeedbacks.sort(state.feedbackCompareFnc);\n },\n};\n\nconst actions = >{\n async resetFeedback({ commit, rootGetters }) {\n commit('RESET_FEEDBACK');\n },\n async loadFeedback({\n state, rootState, commit, rootGetters,\n }, p?: { errorFnc?: (e: any) => void, dateRange?: DateRange }): Promise {\n if (!rootGetters.isLoaded || state.isLoading) return false;\n\n commit('UPDATE_FEEDBACK_LOADED', {\n dateRange: p?.dateRange, feedbacks: [], isLoading: true, isLoaded: false, isFullyLoaded: false,\n });\n\n if (!rootGetters.isFeedbackFeatureAllowed) return false;\n\n if (!state.settings) {\n const settings = await grpcClient.getFeedbackSettings(rootGetters as FeedbackSettingsMapping);\n commit('UPDATE_FEEDBACK_SETTINGS', { settings });\n }\n\n const onData = (additionalFeedbacks: Feedback[]) => {\n const isLoaded = true;\n const isFullyLoaded = additionalFeedbacks.length === 0;\n commit('UPDATE_FEEDBACK_LOADED', {\n additionalFeedbacks, isLoading: !isFullyLoaded, isLoaded, isFullyLoaded,\n });\n };\n\n const onError = (error: Error) => {\n commit('UPDATE_FEEDBACK_LOADED', { isLoading: false });\n if (p?.errorFnc) p.errorFnc(error);\n };\n\n grpcClient.listFeedbacks(\n dateIndexFromDate(state.dateRange.beginDate),\n dateIndexFromDate(state.dateRange.endDate),\n undefined,\n onData,\n onError,\n rootGetters as FeedbackMapping,\n );\n\n return true;\n },\n async refreshFeedback({\n state, dispatch, commit, rootGetters,\n }, p?: { errorFnc?: (e: any) => void }): Promise {\n if (!rootGetters.isLoaded || state.isLoading) return false;\n\n const dateRange = dateRangeFromPeriod(state.dateRange.period, state.dateRange.firstDayOfWeek);\n const areEqual = areDateRangesEqual(state.dateRange, dateRange);\n if (!areEqual) {\n commit('UPDATE_FEEDBACK_LOADED', { dateRange });\n }\n\n if (!rootGetters.isFeedbackFeatureAllowed) return false;\n\n // not loaded -> regular load\n if (!state.isFullyLoaded) {\n return dispatch('loadFeedback', {});\n }\n\n // refresh\n const onData = (feedbacks: Feedback[]) => {\n commit('UPDATE_FEEDBACK_REFRESHED', { feedbacks });\n };\n\n const newestDtCreate = state.feedbacks.reduce((maxdtc, f) => (maxdtc < f.created! ? f.created! : maxdtc), new Date(0));\n\n grpcClient.listFeedbacks(\n dateIndexFromDate(state.dateRange.beginDate),\n dateIndexFromDate(state.dateRange.endDate),\n newestDtCreate,\n onData,\n (error: Error) => { if (p?.errorFnc) p.errorFnc(error); },\n rootGetters as FeedbackMapping,\n );\n\n return true;\n },\n async feedbackApplyFilter({ rootState, commit }, filter: FeedbackFilter) {\n commit('APPLY_FEEDBACK_FILTER', { filter });\n },\n async updateFeedbackSort({ commit }, p: { sortType?: FeedbackSortType, sortDesc?: boolean }) {\n commit('UPDATE_FEEDBACK_SORT', p);\n },\n async updateFeedbackPage({ commit }, p: { pageSize?: number, pageStart?: number }) {\n commit('UPDATE_FEEDBACK_PAGE', p);\n },\n async getFeedback({ state, commit, rootGetters }, p: { id: number }): Promise {\n if (!rootGetters.isLoaded || !state.isLoaded) return undefined;\n const feedback = await grpcClient.getFeedback(p.id, rootGetters as FeedbackMapping);\n commit('UPDATE_FEEDBACK_REFRESHED', { feedbacks: [feedback] });\n return feedback;\n },\n async setSelectedFeedback({ state, commit, rootGetters }, p: { feedback: Feedback|null }) {\n commit('UPDATE_FEEDBACK_SELECTED', p);\n },\n async loadFeedbackSettings({ state, commit, rootGetters }): Promise {\n if (!rootGetters.isLoaded) return undefined;\n if (!rootGetters.isFeedbackFeatureAllowed) return undefined;\n const settings = await grpcClient.getFeedbackSettings(rootGetters as FeedbackSettingsMapping);\n commit('UPDATE_FEEDBACK_SETTINGS', { settings });\n return settings;\n },\n async setFeedbackSettings({ state, commit, rootGetters }, p: { settings: FeedbackSettings}): Promise {\n if (!rootGetters.isLoaded) return undefined;\n const settings = await grpcClient.setFeedbackSettings(p.settings, rootGetters as FeedbackSettingsMapping);\n commit('UPDATE_FEEDBACK_SETTINGS', { settings });\n return settings;\n },\n};\n\nconst getters = >{\n isFeedbackLoaded(state: FeedbackState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoaded && rootGetters.isLoaded;\n },\n isFeedbackLoading(state: FeedbackState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoading;\n },\n feedbackVisibleCount(state: FeedbackState): number {\n return state.filteredFeedbacks.length;\n },\n feedbackDateRange(state: FeedbackState): DateRange {\n return state.dateRange;\n },\n feedbackFilter(state: FeedbackState): FeedbackFilter {\n return state.filter;\n },\n feedbackVisibleFeedbacks(state: FeedbackState): Feedback[] {\n return state.filteredFeedbacks.slice(state.visiblePageStart, state.visiblePageStart + state.visiblePageSize);\n },\n selectedFeedback(state: FeedbackState): Feedback|undefined {\n return state.selectedFeedback ?? undefined;\n },\n feedbackSettings(state: FeedbackState): FeedbackSettings|undefined {\n return state.settings ?? undefined;\n },\n};\n\nconst FeedbackStore = {\n namespaced: false,\n state: new FeedbackState(),\n mutations,\n actions,\n getters,\n};\n\nexport default FeedbackStore;\n","/* eslint-disable object-curly-newline */\n/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\n\nimport { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport GiftcardProduct from '@/grpc-api/model/giftcard-product';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport Currency from '@/grpc-api/model/currency';\nimport { DateRange } from '@/services/date-range';\nimport GiftcardTransaction, { GiftcardTransactionFilter, GiftcardTransactionType, areGiftcardTransactionFiltersSame, defaultGiftcardTransactionFilter } from '@/grpc-api/model/giftcard-transaction';\nimport { dateIndexFromDate } from '@/services/time-utils';\nimport Giftcard, { GiftcardMapping } from '@/grpc-api/model/giftcard';\nimport IRootState, { IGiftcardsState } from './store-state';\n\nexport class GiftcardsState implements IGiftcardsState {\n product: GiftcardProduct | null = null;\n\n currencies: Currency[] = [];\n\n isLoaded: boolean = false;\n\n transactionFilter: GiftcardTransactionFilter = defaultGiftcardTransactionFilter();\n\n transactions: GiftcardTransaction[] = [];\n\n areTransactionsLoaded: boolean = false;\n}\n\nconst mutations = >{\n RESET(state: GiftcardsState) {\n Object.assign(state, new GiftcardsState());\n },\n RESET_GIFTCARDS(state: GiftcardsState) {\n Object.assign(state, new GiftcardsState());\n },\n RESET_GIFTCARD_TRANSACTIONS(state: GiftcardsState) {\n state.transactions = [];\n state.areTransactionsLoaded = false;\n },\n UPDATE_GIFTCARDS(state: GiftcardsState, p: {\n product?: GiftcardProduct | null, currencies?: Currency[], isLoaded?: boolean,\n transactionDateRange?: DateRange, transactionTypes?: GiftcardTransactionType[], transactionCodes?: string[], transactionCode?: string,\n transactions?: GiftcardTransaction[], areTransactionsLoaded?: boolean, }) {\n if (p.product !== undefined) state.product = p.product;\n if (p.currencies !== undefined) state.currencies = p.currencies;\n if (p.isLoaded !== undefined) state.isLoaded = p.isLoaded;\n\n console.log('giftcards product:', p.product);\n console.log('giftcards currencies:', p.currencies);\n\n if (p.transactionDateRange !== undefined) state.transactionFilter.dateRange = p.transactionDateRange;\n if (p.transactionTypes !== undefined) state.transactionFilter.types = p.transactionTypes;\n if (p.transactionCodes !== undefined) state.transactionFilter.codes = p.transactionCodes;\n if (p.transactionCode !== undefined) state.transactionFilter.code = p.transactionCode;\n\n if (p.transactions !== undefined) state.transactions.push(...p.transactions);\n if (p.areTransactionsLoaded !== undefined) state.areTransactionsLoaded = p.areTransactionsLoaded;\n\n console.log('giftcards transactions:', p.transactions);\n },\n};\n\nconst actions = >{\n resetGiftcards({ commit }) {\n commit('RESET_GIFTCARDS');\n },\n async loadGiftcardProduct({ state, commit, rootGetters }, p?: { force: true }): Promise<{ currencies: Currency[], product: GiftcardProduct } | undefined> {\n if (!rootGetters.isLoaded) return undefined;\n if (p?.force !== true && state.isLoaded) return { currencies: state.currencies, product: state.product! };\n\n const currencies = await grpcClient.listCurrencies();\n const product = await grpcClient.getGiftcardProduct();\n\n commit('UPDATE_GIFTCARDS', { currencies, product, isLoaded: true });\n\n return { currencies, product };\n },\n async updateGiftcardProduct({ state, commit, rootGetters }, p:{ product: GiftcardProduct }): Promise<{ currencies: Currency[], product: GiftcardProduct } | undefined> {\n if (!state.isLoaded) return undefined;\n const product = await grpcClient.updateGiftcardProduct(p.product);\n commit('UPDATE_GIFTCARDS', { product });\n\n return { currencies: state.currencies, product };\n },\n async loadGiftcardTransactions({ state, commit, rootGetters }) {\n if (!rootGetters.isLoaded || !state.isLoaded) return;\n\n commit('RESET_GIFTCARD_TRANSACTIONS');\n\n const thisFilter = { ...state.transactionFilter };\n\n const { dateRange, types, codes: filterCodes, code: filterCode } = state.transactionFilter;\n const codes = filterCodes.map((c) => c.replaceAll('-', ''));\n const code = filterCode.replaceAll('-', '');\n\n const beginDateIndex = dateIndexFromDate(dateRange.beginDate);\n const endDateIndex = dateIndexFromDate(dateRange.endDate);\n\n await grpcClient.listGiftcardTransactions(\n { beginDateIndex, endDateIndex, types, codes, code },\n (data: GiftcardTransaction[]) => {\n if (!areGiftcardTransactionFiltersSame(thisFilter, state.transactionFilter)) return;\n commit('UPDATE_GIFTCARDS', { transactions: data });\n },\n );\n if (!areGiftcardTransactionFiltersSame(thisFilter, state.transactionFilter)) return;\n commit('UPDATE_GIFTCARDS', { areTransactionsLoaded: true });\n },\n async updateGiftcardTransactions({ state, commit, dispatch }, p: { dateRange?: DateRange, types?: GiftcardTransactionType[], codes?: string[], code?: string }) {\n // save new params and reset transctions\n commit('UPDATE_GIFTCARDS', { transactionDateRange: p.dateRange, transactionTypes: p.types, transactionCodes: p.codes, transactionCode: p.code });\n\n // load transactions\n await dispatch('loadGiftcardTransactions');\n },\n async resetGiftcardTransactions({ state, commit, dispatch }) {\n const defaultFilter = defaultGiftcardTransactionFilter();\n await dispatch('updateGiftcardTransactions', { ...defaultFilter });\n },\n async getGiftcard({ state, commit, rootGetters }, p: { id?: number, code?: string }): Promise {\n if (!rootGetters.isLoaded || !state.isLoaded) return undefined;\n const giftcard = await grpcClient.getGiftcard(p, rootGetters as GiftcardMapping);\n return giftcard;\n },\n async redeemGiftcard({ state, commit, rootGetters }, p: { id: number, code: string, amount: number, balance: number, idempotencyKey?: string }): Promise {\n if (!rootGetters.isLoaded || !state.isLoaded) return undefined;\n const giftcard = await grpcClient.redeemGiftcard(p.id, p.code, p.amount, p.balance, { idempotencyKey: p.idempotencyKey }, rootGetters as GiftcardMapping);\n return giftcard;\n },\n};\n\nconst getters = >{\n giftcardsProduct(state, localGetters, rootState, rootGetters): GiftcardProduct | null {\n return state.product;\n },\n isGiftcardsLoaded(state) {\n return state.isLoaded;\n },\n giftcardsTransactionFilter(state) {\n return state.transactionFilter;\n },\n isGiftcardsTransactionFilter(state) {\n const defaultFilter = defaultGiftcardTransactionFilter();\n return !areGiftcardTransactionFiltersSame(state.transactionFilter, defaultFilter);\n },\n areGiftcardTransactionsLoaded(state) {\n return state.areTransactionsLoaded;\n },\n giftcardTransactions(state) {\n return state.transactions;\n },\n};\n\nconst ReservationSuggestionStore = {\n namespaced: false,\n state: new GiftcardsState(),\n mutations,\n actions,\n getters,\n};\n\nexport default ReservationSuggestionStore;\n","import * as pbm from '@/grpc-pb/employee_pb';\n\nimport ApiEmployee from '@/model/Employee';\n\nexport default class Employee extends ApiEmployee {\n toGrpcModel(): pbm.Employee {\n const o = new pbm.Employee();\n\n o.setId(this.id);\n o.setName(this.name);\n o.setOrder(this.order);\n\n return o;\n }\n\n static fromApiModel(o: ApiEmployee) {\n const e = new Employee();\n e.id = o.id;\n e.name = o.name;\n e.order = o.order;\n return e;\n }\n}\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\nimport { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport Contact, { ContactSortFncType, ContactSortType } from '@/grpc-api/model/contact';\nimport ContactFilter from '@/grpc-api/model/contact-filter';\nimport { Filter } from '@/services/filter/filter';\nimport {\n addToCountMap, deleteModelEntities, mergeSortedModelEntities, removeFromCountMap,\n} from '@/grpc-api/model/model-utils';\nimport { FilterConvert } from '@/services/filter/filter-convert';\nimport { OnErrorFnc } from '@/services/grpc-client-utils';\nimport { RpcError } from 'grpc-web';\nimport { ContactMapping } from '@/model/Contact';\nimport httpClient from '@/api/http-client';\nimport Reservation, { ReservationMapping } from '@/model/Reservation';\nimport Employee from '@/grpc-api/model/employee';\nimport { cloneModel, toMapById } from '@/model/model-utils';\nimport {\n searchContactRemove, searchContactReset, searchContactAdd, searchForContacts,\n} from '@/services/contact-search';\nimport { dialCodeByCountry } from '@/model/Country';\nimport { ApiError } from '@/api/api-error';\nimport IRootState, { IGuestbookState } from './store-state';\n\nexport class GuestbookState implements IGuestbookState {\n contacts: Contact[] = [];\n\n filteredContacts: Contact[] = [];\n\n filteredContactsById: Map = new Map();\n\n duplicateContactCountsByEmail: Map = new Map();\n\n duplicateContactCountsByPhone: Map = new Map();\n\n contactFilters: ContactFilter[] = [];\n\n contactFilter: ContactFilter = ContactFilter.DefaultFilter;\n\n filter: Filter | null = FilterConvert.fromJson(ContactFilter.DefaultFilter.data!);\n\n filterError: Error | null = null;\n\n isLoaded: boolean = false;\n\n isFullyLoaded: boolean = false;\n\n visiblePageStart: number = 0;\n\n visiblePageSize: number = 25;\n\n contactSortType: ContactSortType = ContactSortType.VisitCount;\n\n contactSortDesc: boolean = true;\n\n // eslint-disable-next-line class-methods-use-this\n contactCompareFnc: ContactSortFncType = (o1: Contact, o2: Contact) => -Contact.compareVisitCount(o1, o2);\n\n countryDialCode: string = '';\n\n fullTextFilterQuery: string = '';\n\n fullTextFilteredContacts: Contact[] | null = null;\n}\n\nfunction newContacts(state: GuestbookState) {\n state.duplicateContactCountsByEmail = new Map();\n state.duplicateContactCountsByPhone = new Map();\n addToCountMap(state.duplicateContactCountsByEmail, state.contacts, (c) => c.normalizedEmail());\n addToCountMap(state.duplicateContactCountsByPhone, state.contacts, (c) => c.normalizedPhone(state.countryDialCode));\n}\n\nfunction mergeContacts(state: GuestbookState, contacts: Contact[]) {\n const deletedContacts = deleteModelEntities(state.contacts, contacts);\n removeFromCountMap(state.duplicateContactCountsByEmail, deletedContacts, (c) => c.normalizedEmail());\n removeFromCountMap(state.duplicateContactCountsByPhone, deletedContacts, (c) => c.normalizedPhone(state.countryDialCode));\n\n const addedContacts = contacts.filter((c) => c.isDeleted !== true);\n state.contacts.push(...addedContacts);\n addToCountMap(state.duplicateContactCountsByEmail, addedContacts, (c) => c.normalizedEmail());\n addToCountMap(state.duplicateContactCountsByPhone, addedContacts, (c) => c.normalizedPhone(state.countryDialCode));\n}\n\nfunction newFilteredContacts(state: GuestbookState) {\n const filteredContacts = state.contacts.filter((c) => c.isDeleted !== true && state.filter?.check(c) === true);\n filteredContacts.sort(state.contactCompareFnc);\n state.filteredContacts = filteredContacts;\n state.filteredContactsById = toMapById(filteredContacts);\n searchContactAdd(filteredContacts);\n\n if (state.fullTextFilterQuery.length < 3) {\n state.fullTextFilteredContacts = null;\n } else {\n const contacts = searchForContacts(state.fullTextFilterQuery, state.filteredContactsById);\n state.fullTextFilteredContacts = contacts.sort(state.contactCompareFnc);\n }\n}\n\nfunction mergeFilteredContacts(state: GuestbookState, contacts: Contact[]) {\n const deletedContacts = deleteModelEntities(state.filteredContacts, contacts);\n deletedContacts.forEach((c) => state.filteredContactsById.delete(c.id));\n searchContactRemove(deletedContacts);\n\n const filteredContacts = contacts.filter((c) => c.isDeleted !== true && state.filter?.check(c) === true);\n filteredContacts.sort(state.contactCompareFnc);\n const addedContacts = mergeSortedModelEntities(state.filteredContacts, filteredContacts, state.contactCompareFnc);\n addedContacts.forEach((c) => state.filteredContactsById.set(c.id, c));\n searchContactAdd(filteredContacts);\n\n state.fullTextFilterQuery = '';\n state.fullTextFilteredContacts = null;\n}\n\nconst mutations = >{\n RESET(state: GuestbookState) {\n Object.assign(state, new GuestbookState());\n searchContactReset();\n },\n RESET_GUESTBOOK(state: GuestbookState) {\n Object.assign(state, new GuestbookState());\n searchContactReset();\n },\n // CLEAR_GUESTBOOK(state: GuestbookState) {\n // state.contacts = [];\n // state.filteredContacts = [];\n // state.duplicateContactCountsByEmail = new Map();\n // state.duplicateContactCountsByPhone = new Map();\n // state.contactFilters = [];\n // },\n UPDATE_GUESTBOOK_CONTACT(state: GuestbookState, p: { contact: Contact }) {\n mergeContacts(state, [p.contact]);\n mergeFilteredContacts(state, [p.contact]);\n\n console.log('UPDATE_GUESTBOOK_CONTACT: added contact=', p.contact);\n },\n UPDATE_GUESTBOOK_CONTACTS(state: GuestbookState, p: { contacts: Contact[] }) {\n mergeContacts(state, p.contacts);\n mergeFilteredContacts(state, p.contacts);\n\n console.log('UPDATE_GUESTBOOK_CONTACTS: added contacts=', p.contacts);\n },\n UPDATE_GUESTBOOK_CONTACT_FILTER(state: GuestbookState, p: { contactFilter: ContactFilter }) {\n deleteModelEntities(state.contactFilters, [p.contactFilter]);\n mergeSortedModelEntities(state.contactFilters, [p.contactFilter], ContactFilter.compare);\n\n if (state.contactFilter.id === p.contactFilter.id) {\n state.contactFilter = ContactFilter.DefaultFilter;\n state.filter = FilterConvert.fromJson(ContactFilter.DefaultFilter.data!);\n state.filterError = null;\n\n newFilteredContacts(state);\n }\n },\n UPDATE_GUESTBOOK(state: GuestbookState, p: {\n contacts?: Contact[], contactFilters?: ContactFilter[],\n isLoaded?: boolean, isFullyLoaded?: boolean,\n countryDialCode?: string,\n }) {\n if (p.countryDialCode) state.countryDialCode = p.countryDialCode;\n\n if (p.contacts) {\n state.contacts.push(...p.contacts);\n state.filteredContacts.push(...p.contacts);\n\n if (p.contacts.length === 0) {\n newContacts(state);\n newFilteredContacts(state);\n }\n }\n\n if (p.contactFilters) mergeSortedModelEntities(state.contactFilters, p.contactFilters.sort(ContactFilter.compare), ContactFilter.compare);\n\n if (p.isLoaded) state.isLoaded = p.isLoaded;\n if (p.isFullyLoaded) state.isFullyLoaded = p.isFullyLoaded;\n\n console.log('Guestbook contacts: ', `${state.contacts.length} contacts loaded`);\n console.log('Guestbook contact filters: ', state.contactFilters);\n },\n APPLY_GUESTBOOK_FILTER(state: GuestbookState, p: { contactFilter: ContactFilter }) {\n state.contactFilter = p.contactFilter;\n\n state.filter = null;\n state.filterError = null;\n\n try {\n if (p.contactFilter.data) state.filter = FilterConvert.fromJson(p.contactFilter.data);\n else state.filterError = new Error('no data');\n } catch (e) {\n state.filterError = e instanceof Error ? e : new Error('error');\n }\n\n newFilteredContacts(state);\n },\n UPDATE_GUESTBOOK_PAGE(state: GuestbookState, p: { pageSize?: number, pageStart?: number }) {\n if (p.pageSize) state.visiblePageSize = p.pageSize;\n if (p.pageStart !== undefined) state.visiblePageStart = p.pageStart;\n },\n UPDATE_GUESTBOOK_SORT(state: GuestbookState, p: { sortType?: ContactSortType, sortDesc?: boolean }) {\n if (p.sortType !== undefined) state.contactSortType = p.sortType;\n if (p.sortDesc !== undefined) state.contactSortDesc = p.sortDesc;\n\n state.contactCompareFnc = state.contactSortDesc ? Contact.compareFncDesc(state.contactSortType) : Contact.compareFnc(state.contactSortType);\n state.filteredContacts.sort(state.contactCompareFnc);\n\n if (state.fullTextFilteredContacts) state.fullTextFilteredContacts = state.fullTextFilteredContacts.sort(state.contactCompareFnc);\n },\n UPDATE_GUESTBOOK_FULLTEXT_FILTER(state: GuestbookState, p: { query?: string }) {\n if (p.query === undefined || state.fullTextFilterQuery === p.query) return;\n state.fullTextFilterQuery = p.query;\n\n if (state.fullTextFilterQuery.length < 3) {\n state.fullTextFilteredContacts = null;\n return;\n }\n\n const contacts = searchForContacts(state.fullTextFilterQuery, state.filteredContactsById);\n state.fullTextFilteredContacts = contacts.sort(state.contactCompareFnc);\n },\n};\n\nconst actions = >{\n async resetGuestbook({ commit, rootGetters }) {\n commit('RESET_GUESTBOOK');\n },\n async loadGuestbook({ rootState, commit, rootGetters }, p: { errorFnc: (e: any) => void }): Promise {\n if (!rootGetters.isLoaded) return false;\n\n let someContactsLoaded = false;\n let someContactFiltersLoaded = false;\n let allContactsLoaded = false;\n let allContactFiltersLoaded = false;\n\n commit('RESET_GUESTBOOK');\n\n const countryCode = rootState.settings.account.countryCode ?? '';\n const countryDialCode = dialCodeByCountry.get(countryCode) ?? '';\n commit('UPDATE_GUESTBOOK', { countryDialCode });\n\n const commitData = (cp: { contacts?: Contact[], contactFilters?: ContactFilter[]}) => {\n const isLoaded = (someContactsLoaded && allContactFiltersLoaded) || undefined;\n const isFullyLoaded = (allContactsLoaded && allContactFiltersLoaded) || undefined;\n commit('UPDATE_GUESTBOOK', { ...cp, isLoaded, isFullyLoaded });\n };\n\n await Promise.all([\n grpcClient.listContacts(\n (data: Contact[]) => {\n someContactsLoaded = true;\n if (data.length === 0) allContactsLoaded = true;\n commitData({ contacts: data });\n },\n (error: Error) => { p.errorFnc(error); },\n rootGetters as ContactMapping,\n ),\n grpcClient.listContactFilters(\n (data: ContactFilter[]) => {\n someContactFiltersLoaded = true;\n if (data.length === 0) allContactFiltersLoaded = true;\n commitData({ contactFilters: data });\n },\n (error: Error) => { p.errorFnc(error); },\n ),\n ]);\n\n return true;\n }, // ContactFilter\n async crudContactFilter(\n { commit, rootState, rootGetters },\n p: { contactFilter: ContactFilter, errorFnc: (e: any) => void, operation: string },\n ): Promise {\n if ((grpcClient as any)[p.operation] === undefined) throw new Error(`grpc operation '${p.operation}' error: not implemented`);\n if (!rootGetters.isLoaded) throw new Error(`grpc operation '${p.operation}' error: not loaded`);\n\n const contactFilter = await (grpcClient as any)[p.operation](\n p.contactFilter,\n );\n commit('UPDATE_GUESTBOOK_CONTACT_FILTER', { contactFilter });\n\n return contactFilter;\n },\n async guestbookCreateContactFilter({ dispatch }, p: any) { return dispatch('crudContactFilter', { ...p, operation: 'createContactFilter' }); },\n async guestbookGetContactFilter({ dispatch }, p: any) { return dispatch('crudContactFilter', { ...p, operation: 'getContactFilter' }); },\n async guestbookUpdateContactFilter({ dispatch }, p: any) { return dispatch('crudContactFilter', { ...p, operation: 'updateContactFilter' }); },\n async guestbookDeleteContactFilter({ dispatch }, p: any) { return dispatch('crudContactFilter', { ...p, operation: 'deleteContactFilter' }); },\n\n // Contact\n async crudContact(\n {\n state, rootState, commit, getters, rootGetters,\n },\n p: { contact: Contact, errorFnc: (e: any) => void, operation: string },\n ): Promise {\n if ((grpcClient as any)[p.operation] === undefined) throw new Error(`grpc operation '${p.operation}' error: not implemented`);\n if (!state.isFullyLoaded) throw new Error(`grpc operation '${p.operation}' error: not fully loaded`);\n\n const employee = getters.guestbookLastEmployee ?? undefined as Employee | undefined;\n const contact = await (grpcClient as any)[p.operation](\n p.contact,\n employee,\n rootGetters as ContactMapping,\n );\n commit('UPDATE_GUESTBOOK_CONTACT', { contact });\n\n return contact;\n },\n async guestbookCreateContact({ dispatch }, p: any) { return dispatch('crudContact', { ...p, operation: 'createContact' }); },\n async guestbookUpdateContact({ dispatch }, p: any) { return dispatch('crudContact', { ...p, operation: 'updateContact' }); },\n\n // ContactManager\n async guestbookDeleteContacts({\n rootState, commit, dispatch, getters, rootGetters,\n }, p: { contacts: Contact[], errorFnc: OnErrorFnc }) {\n const employee = getters.guestbookLastEmployee ?? undefined as Employee | undefined;\n const returnedContacts: Contact[] = [];\n\n await grpcClient.deleteContacts(\n p.contacts.map((c) => c.id),\n employee,\n (contacts: Contact[]) => { returnedContacts.push(...contacts); commit('UPDATE_GUESTBOOK_CONTACTS', { contacts }); },\n (error: ApiError) => { p.errorFnc(error); },\n );\n\n return returnedContacts;\n },\n\n async guestbookMergeContacts({\n rootState, commit, dispatch, getters, rootGetters,\n }, p: { contact: Contact, contacts: Contact[], errorFnc: OnErrorFnc }) {\n const employee = getters.guestbookLastEmployee ?? undefined as Employee | undefined;\n const returnedContacts: Contact[] = [];\n\n await grpcClient.mergeContacts(\n p.contact,\n employee,\n p.contacts.map((c) => c.id),\n (contacts: Contact[]) => { returnedContacts.push(...contacts); commit('UPDATE_GUESTBOOK_CONTACTS', { contacts }); },\n (error: ApiError) => { p.errorFnc(error); },\n rootGetters as ContactMapping,\n );\n\n return returnedContacts;\n },\n\n async guestbookSelectedContacts({ rootState, commit, rootGetters }, p: { contacts: Contact[], errorFnc: OnErrorFnc }) {\n const returnedContacts: Contact[] = [];\n await grpcClient.selectedContacts(\n p.contacts.map((c) => c.id),\n (contacts: Contact[]) => { returnedContacts.push(...contacts); /* commit('UPDATE_GUESTBOOK_CONTACTS', { contacts }); */ },\n (error: ApiError) => { p.errorFnc(error); },\n rootGetters as ContactMapping,\n );\n return returnedContacts;\n },\n\n async guestbookSearchContacts({ rootState, commit, rootGetters }, p: { filter: string, errorFnc: OnErrorFnc }) {\n const returnedContacts: Contact[] = [];\n await grpcClient.searchContacts(\n p.filter,\n (contacts: Contact[]) => { returnedContacts.push(...contacts); commit('UPDATE_GUESTBOOK_CONTACTS', { contacts }); },\n (error: ApiError) => { p.errorFnc(error); },\n rootGetters as ContactMapping,\n );\n return returnedContacts;\n },\n\n // Other\n async guestbookApplyContactFilter({ rootState, commit }, p: { contactFilter: ContactFilter }) {\n commit('APPLY_GUESTBOOK_FILTER', { contactFilter: p.contactFilter });\n },\n async guestbookPreviewContactFilter({ state }, p: { contactFilter: ContactFilter }) {\n if (!p.contactFilter.data) return 0;\n const filter = FilterConvert.fromJson(p.contactFilter.data);\n return filter.count(state.contacts);\n },\n async guestbookContactReservations({ state, rootGetters }, p: { contact: Contact }) {\n const query = `contactId:${p.contact.id}`;\n const update = await httpClient.search(query);\n const reservations = (update.reservations ?? []).map(\n (o) => new Reservation(o, rootGetters as ReservationMapping),\n );\n return reservations;\n },\n async updateGuestbookPage({ commit }, p: { pageSize?: number, pageStart?: number }) {\n commit('UPDATE_GUESTBOOK_PAGE', p);\n },\n async updateGuestbookSort({ commit }, p: { sortType?: ContactSortType, sortDesc?: boolean }) {\n commit('UPDATE_GUESTBOOK_SORT', p);\n },\n async updateGuestbookFullTextFilter({ commit }, p: { query?: string }) {\n commit('UPDATE_GUESTBOOK_FULLTEXT_FILTER', p);\n },\n};\n\nconst getters = >{\n isGuestbookLoaded(state: GuestbookState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoaded && rootGetters.isLoaded;\n },\n guestbookFilteredContacts(state: GuestbookState, localGetters: any, rootState: any, rootGetters: any): Contact[] {\n return state.filteredContacts;\n },\n guestbookLastEmployee(state: GuestbookState, localGetters: any, rootState: any, rootGetters: any): Employee | null {\n const ae = rootGetters.reservationLastEmployee;\n if (!ae) return null;\n return Employee.fromApiModel(ae);\n },\n guestbookDuplicatedMails(state: GuestbookState): string[] {\n const mails = [] as string[];\n state.duplicateContactCountsByEmail.forEach((count, key) => { if (count > 1) mails.push(key); });\n return mails;\n },\n guestbookDuplicatedPhones(state: GuestbookState): string[] {\n const phones = [] as string[];\n state.duplicateContactCountsByPhone.forEach((count, key) => { if (count > 1) phones.push(key); });\n return phones;\n },\n guestbookVisibleCount(state: GuestbookState): number {\n const contacts = state.fullTextFilteredContacts ?? state.filteredContacts;\n return contacts.length;\n },\n guestbookVisibleContacts(state: GuestbookState): Contact[] {\n const contacts = state.fullTextFilteredContacts ?? state.filteredContacts;\n return contacts.slice(state.visiblePageStart, state.visiblePageStart + state.visiblePageSize);\n },\n};\n\nconst GuestbookStore = {\n namespaced: false,\n state: new GuestbookState(),\n mutations,\n actions,\n getters,\n};\n\nexport default GuestbookStore;\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\nimport { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport { deleteModelEntities, mergeSortedModelEntities } from '@/grpc-api/model/model-utils';\nimport { searchContactReset } from '@/services/contact-search';\nimport MarketingCampaign, {\n MarketingCampaignFilter, MarketingCampaignMapping, areMarketingCampaignFiltersSame, defaultMarketingCampaignFilter,\n} from '@/grpc-api/model/marketing-campaign';\nimport ContactFilter from '@/grpc-api/model/contact-filter';\nimport { dateIndexFromDate } from '@/services/time-utils';\nimport { DateRange } from '@/services/date-range';\nimport HtmlTemplate from '@/grpc-api/model/html-template';\nimport MarketingCampaignSettings from '@/grpc-api/model/marketing-campaign-settings';\nimport RepeatableTimer from '@/services/repeatable-timer';\nimport IRootState, { IMarketingCampaignManagerState } from './store-state';\n\nexport class MarketingCampaignManagerState implements IMarketingCampaignManagerState {\n settings: MarketingCampaignSettings = new MarketingCampaignSettings();\n\n campaignFilter: MarketingCampaignFilter = defaultMarketingCampaignFilter();\n\n campaigns: MarketingCampaign[] = [];\n\n contactFilters: ContactFilter[] = [];\n\n htmlTemplates: HtmlTemplate[] = [];\n\n isLoaded: boolean = false;\n\n areCampaignsLoaded: boolean = false;\n}\n\nconst mutations = >{\n RESET(state: MarketingCampaignManagerState) {\n Object.assign(state, new MarketingCampaignManagerState());\n searchContactReset();\n },\n RESET_MARKETING_CAMPAIGN_MANAGER(state: MarketingCampaignManagerState) {\n Object.assign(state, new MarketingCampaignManagerState());\n searchContactReset();\n },\n RESET_MARKETING_CAMPAIGN_MANAGER_CAMPAIGNS(state: MarketingCampaignManagerState) {\n state.campaigns = [];\n state.areCampaignsLoaded = false;\n },\n UPDATE_MARKETING_CAMPAIGN_MANAGER(state: MarketingCampaignManagerState, p: {\n campaigns?: MarketingCampaign[], contactFilters?: ContactFilter[], htmlTemplates?: HtmlTemplate[], isLoaded?: boolean, areCampaignsLoaded?: boolean,\n dateRange?: DateRange, showArchived?: boolean,\n settings?: MarketingCampaignSettings,\n }) {\n if (p.settings) {\n state.settings = p.settings;\n }\n if (p.campaigns) {\n // handle campaign archive\n // eslint-disable-next-line no-param-reassign\n p.campaigns.forEach((c) => { if (!state.campaignFilter.showArchived && c.isArchived) c.isDeleted = true; });\n\n deleteModelEntities(state.campaigns, p.campaigns);\n mergeSortedModelEntities(state.campaigns, p.campaigns.sort(MarketingCampaign.compare), MarketingCampaign.compare);\n }\n if (p.htmlTemplates) {\n deleteModelEntities(state.htmlTemplates, p.htmlTemplates);\n mergeSortedModelEntities(state.htmlTemplates, p.htmlTemplates.sort(HtmlTemplate.compare), HtmlTemplate.compare);\n }\n\n if (p.contactFilters) {\n const contactFilters = p.contactFilters.filter((f) => f.order >= 0 || f.order < -10);\n deleteModelEntities(state.contactFilters, contactFilters);\n mergeSortedModelEntities(state.contactFilters, contactFilters.sort(ContactFilter.compare), ContactFilter.compare);\n }\n\n if (p.isLoaded !== undefined) state.isLoaded = p.isLoaded;\n if (p.areCampaignsLoaded !== undefined) state.areCampaignsLoaded = p.areCampaignsLoaded;\n\n if (p.dateRange !== undefined) state.campaignFilter.dateRange = p.dateRange;\n if (p.showArchived !== undefined) state.campaignFilter.showArchived = p.showArchived;\n\n console.log('settings=', p.settings);\n console.log('campaigns=', p.campaigns);\n console.log('contactFilters=', p.contactFilters);\n console.log('htmlTemplates=', p.htmlTemplates);\n },\n};\n\nconst actions = >{\n async resetMarketingCampaignManager({ commit }) {\n commit('RESET_MARKETING_CAMPAIGN_MANAGER');\n },\n async loadMarketingCampaignManager({ state, commit, rootGetters }) {\n if (!rootGetters.isLoaded) return;\n\n commit('RESET_MARKETING_CAMPAIGN_MANAGER');\n\n const { dateRange, showArchived } = state.campaignFilter;\n const beginDateIndex = dateIndexFromDate(dateRange.beginDate);\n const endDateIndex = dateIndexFromDate(dateRange.endDate);\n\n let allCampaignsLoaded = false;\n\n await Promise.all([\n // settings\n (async () => {\n const settings = await grpcClient.getMarketingCampaignSettings();\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { settings });\n })(),\n // campaigns\n grpcClient.listMarketingCampaigns({ beginDateIndex, endDateIndex, showArchived }, (data: MarketingCampaign[]) => {\n if (data.length === 0) allCampaignsLoaded = true;\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { campaigns: data, isFullyLoaded: state.isLoaded && allCampaignsLoaded });\n }, rootGetters),\n // contact filters\n grpcClient.listAllContactFilters((data: ContactFilter[]) => { commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { contactFilters: data }); }),\n // html templates\n grpcClient.listAllHtmlTemplates((data: HtmlTemplate[]) => {\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { htmlTemplates: data });\n }),\n ]);\n\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { isLoaded: true, isFullyLoaded: allCampaignsLoaded });\n },\n async loadMarketingCampaigns({ state, commit, rootGetters }, p?: { noReset: boolean }) {\n if (!rootGetters.isLoaded || !state.isLoaded) return;\n\n if (!p?.noReset) commit('RESET_MARKETING_CAMPAIGN_MANAGER_CAMPAIGNS');\n\n const thisFilter = { ...state.campaignFilter };\n\n const { dateRange, showArchived } = state.campaignFilter;\n const beginDateIndex = dateIndexFromDate(dateRange.beginDate);\n const endDateIndex = dateIndexFromDate(dateRange.endDate);\n\n await Promise.all([\n // settings\n (async () => {\n const settings = await grpcClient.getMarketingCampaignSettings();\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { settings });\n })(),\n // campaigns\n grpcClient.listMarketingCampaigns({ beginDateIndex, endDateIndex, showArchived }, (data: MarketingCampaign[]) => {\n if (!areMarketingCampaignFiltersSame(thisFilter, state.campaignFilter)) return;\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { campaigns: data, isFullyLoaded: data.length === 0 });\n }, rootGetters),\n ]);\n },\n async refreshMarketingCampaigns({ dispatch }) {\n dispatch('loadMarketingCampaigns', { noReset: true });\n },\n async updateMarketingCampaignFilter({ state, commit, dispatch }, p: { dateRange?: DateRange, showArchived?: boolean }) {\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { dateRange: p.dateRange, showArchived: p.showArchived });\n await dispatch('loadMarketingCampaigns');\n },\n async updateMarketingCampaign({ commit, rootGetters }, p: { campaign: MarketingCampaign }) {\n const campaign = await grpcClient.updateMarketingCampaign(p.campaign, rootGetters as MarketingCampaignMapping);\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { campaigns: [campaign] });\n return campaign;\n },\n async getMarketingCampaign({ commit, rootGetters }, p: { campaign: MarketingCampaign }) {\n const campaign = await grpcClient.getMarketingCampaign(p.campaign, rootGetters as MarketingCampaignMapping);\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { campaigns: [campaign] });\n return campaign;\n },\n async sendMarketingCampaign({ commit, rootGetters }, p: { campaign: MarketingCampaign, omitCampaignCheck: boolean }) {\n const campaign = await grpcClient.sendMarketingCampaign(p.campaign, p.omitCampaignCheck, rootGetters as MarketingCampaignMapping);\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { campaigns: [campaign] });\n\n await new Promise((resolve) => { setTimeout(resolve, 3000); });\n\n const settings = await grpcClient.getMarketingCampaignSettings();\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { settings });\n\n return campaign;\n },\n async archiveMarketingCampaign({ commit, rootGetters }, p: { campaign: MarketingCampaign }) {\n const campaign = await grpcClient.archiveMarketingCampaign(p.campaign, rootGetters as MarketingCampaignMapping);\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { campaigns: [campaign] });\n return campaign;\n },\n async deleteMarketingCampaign({ commit, rootGetters }, p: { campaign: MarketingCampaign }) {\n const campaign = await grpcClient.deleteMarketingCampaign(p.campaign, rootGetters as MarketingCampaignMapping);\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { campaigns: [campaign] });\n return campaign;\n },\n async testMarketingCampaign({ commit, rootGetters }, p: { campaign: MarketingCampaign, recipients: string[] }) {\n await grpcClient.testMarketingCampaign(p.campaign, p.recipients);\n return true;\n },\n async previewContactFilterForMarketingCampaign({ dispatch, commit, rootGetters }, p: { contactFilter: ContactFilter }) {\n const stats = await grpcClient.previewContactFilterForMarketingCampaign(p.contactFilter);\n return stats.matching;\n },\n\n // contact filter\n async crudMarketingCampaignManagerContactFilter(\n { commit, rootState, rootGetters },\n p: { contactFilter: ContactFilter, errorFnc: (e: any) => void, operation: string },\n ): Promise {\n if ((grpcClient as any)[p.operation] === undefined) throw new Error(`grpc operation '${p.operation}' error: not implemented`);\n if (!rootGetters.isLoaded) throw new Error(`grpc operation '${p.operation}' error: not loaded`);\n\n const contactFilter = await (grpcClient as any)[p.operation](\n p.contactFilter,\n );\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { contactFilters: [contactFilter] });\n\n return contactFilter;\n },\n async markeingCampaignManagerCreateContactFilter({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerContactFilter', { ...p, operation: 'createContactFilter' }); },\n async markeingCampaignManagerGetContactFilter({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerContactFilter', { ...p, operation: 'getContactFilter' }); },\n async markeingCampaignManagerUpdateContactFilter({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerContactFilter', { ...p, operation: 'updateContactFilter' }); },\n async markeingCampaignManagerDeleteContactFilter({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerContactFilter', { ...p, operation: 'deleteContactFilter' }); },\n\n // html templates\n async crudMarketingCampaignManagerHtmlTemplate(\n { commit, rootGetters },\n p: { htmlTemplate: HtmlTemplate, errorFnc: (e: any) => void, operation: string },\n ): Promise {\n if ((grpcClient as any)[p.operation] === undefined) throw new Error(`grpc operation '${p.operation}' error: not implemented`);\n if (!rootGetters.isLoaded) throw new Error(`grpc operation '${p.operation}' error: not loaded`);\n\n const htmlTemplate = await (grpcClient as any)[p.operation](p.htmlTemplate);\n commit('UPDATE_MARKETING_CAMPAIGN_MANAGER', { htmlTemplates: [htmlTemplate] });\n\n return htmlTemplate;\n },\n async marketingCampaignManagerCreateHtmlTemplate({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerHtmlTemplate', { ...p, operation: 'createHtmlTemplate' }); },\n async marketingCampaignManagerGetHtlTemplate({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerHtmlTemplate', { ...p, operation: 'getHtmlTemplate' }); },\n async marketingCampaignManagerUpdateHtmlTemplate({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerHtmlTemplate', { ...p, operation: 'updateHtmlTemplate' }); },\n async marketingCampaignManagerDeleteHtmlTemplate({ dispatch }, p: any) { return dispatch('crudMarketingCampaignManagerHtmlTemplate', { ...p, operation: 'deleteHtmlTemplate' }); },\n};\n\nconst getters = >{\n isMarketingCampaignManagerLoaded(state: MarketingCampaignManagerState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoaded;\n },\n areMarketingCampaignManagerCampaignsLoaded(state: MarketingCampaignManagerState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.areCampaignsLoaded;\n },\n marketingCampaignManagerFilter(state) {\n return state.campaignFilter;\n },\n marketingCampaignManagerCampaigns(state: MarketingCampaignManagerState, localGetters: any, rootState: any, rootGetters: any): MarketingCampaign[] {\n return state.campaigns;\n },\n marketingCampaignManagerContactFilters(state: MarketingCampaignManagerState, localGetters: any, rootState: any, rootGetters: any): ContactFilter[] {\n return state.contactFilters;\n },\n marketingCampaignManagerHtmlTemplates(state: MarketingCampaignManagerState, localGetters: any, rootState: any, rootGetters: any): HtmlTemplate[] {\n return state.htmlTemplates;\n },\n marketingCampaignSettings(state: MarketingCampaignManagerState, localGetters: any, rootState: any, rootGetters: any): MarketingCampaignSettings {\n return state.settings;\n },\n};\n\nconst MarketingCampaignManagerStore = {\n namespaced: false,\n state: new MarketingCampaignManagerState(),\n mutations,\n actions,\n getters,\n};\n\nexport default MarketingCampaignManagerStore;\n","/* eslint-disable no-use-before-define */\nimport { IDTOEventType } from '@/api/api-messenger';\nimport i18n from '@/plugins/i18n';\n\nexport default class MessageEventType {\n id: number;\n\n type: string;\n\n name: string;\n\n constructor(o: IDTOEventType) {\n this.id = o.eventTypeId;\n this.type = o.eventType;\n this.name = o.eventName;\n }\n\n get value() { return this.id; }\n\n get text() {\n const key = `code.message_event.${this.type}`;\n const text = i18n.t(key);\n return key !== text ? text : this.name;\n }\n\n get isTimedAfter() { return TimedAfterEventTypes.includes(this.type); }\n\n get isTimedBefore() { return TimedBeforeEventTypes.includes(this.type); }\n\n get isTimed() { return this.isTimedAfter || this.isTimedBefore; }\n\n get isWaitlist() { return WaitlistEventTypes.includes(this.type); }\n}\n\nexport const BuiltInEventTypes = [\n 'etc_insert:planned',\n 'etc_update:cancelled',\n 'etc_update:planned',\n 'etc_insert:waitlist',\n 'etc_update:waitlist',\n 'waitlist:notify',\n 'tbe_reminder',\n 'tbe_thankyou',\n];\n\nexport const TimedAfterEventTypes = [\n 'tbe_thankyou',\n];\n\nexport const TimedBeforeEventTypes = [\n 'tbe_reminder',\n];\n\nexport const WaitlistEventTypes = [\n 'etc_insert:waitlist',\n 'etc_update:waitlist',\n 'waitlist:notify',\n];\n","import { IDTOHandlebar } from '@/api/api-messenger';\n\nexport default class MessageHandlebar {\n id: number;\n\n name: string;\n\n expression: string;\n\n constructor(o: IDTOHandlebar) {\n this.id = o.handlebarId;\n this.name = o.name;\n this.expression = o.expression;\n }\n}\n","/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\n\nimport { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport httpClient from '@/api/http-client';\nimport { IDTOMessengerUpdate } from '@/api/api-messenger';\nimport MessageEventType, { BuiltInEventTypes } from '@/model/MessageEventType';\nimport MessageType from '@/model/MessageType';\nimport MessageHandlebar from '@/model/MessageHandlebar';\nimport MessageRule, { MessageRuleMapping } from '@/model/MessageRule';\nimport Campaign from '@/model/Campaign';\nimport {\n toModelEntities, mergeModelEntities, toMapById, toMapByField,\n} from '@/model/model-utils';\nimport IRootState, { IMessageCenterState } from './store-state';\n\nexport class MessageCenterState implements IMessageCenterState {\n eventTypes: MessageEventType[] = [];\n\n campaigns: Campaign[] = [];\n\n messageTypes: MessageType[] = [];\n\n handlebars: MessageHandlebar[] = [];\n\n rules: MessageRule[] = [];\n\n isLoaded: boolean = false;\n}\n\nconst mutations = >{\n RESET(state: MessageCenterState) {\n Object.assign(state, new MessageCenterState());\n },\n RESET_MESSAGE_CENTER(state: MessageCenterState) {\n Object.assign(state, new MessageCenterState());\n },\n UPDATE_MESSAGE_RULES(state: MessageCenterState, p: { rules: MessageRule[] }) {\n state.rules = p.rules;\n state.isLoaded = true;\n console.log('MC rules:', state.rules);\n },\n UPDATE_MESSAGE_CENTER(\n state: MessageCenterState,\n p: { eventTypes: MessageEventType[], campaigns: Campaign[], messageTypes: MessageType[],\n handlebars: MessageHandlebar[]},\n ) {\n state.eventTypes = p.eventTypes;\n state.campaigns = p.campaigns;\n state.messageTypes = p.messageTypes;\n state.handlebars = p.handlebars;\n\n console.log('MC eventTypes:', state.eventTypes);\n console.log('MC campaigns:', state.campaigns);\n console.log('MC messageTypes:', state.messageTypes);\n console.log('MC handlebars:', state.handlebars);\n },\n};\n\nconst actions = >{\n updateMessageRules({ commit, state, rootGetters }, update: IDTOMessengerUpdate) {\n console.log('updateMessageRules: ', update);\n\n let rules = (update.messageRules ?? []).map((o) => new MessageRule(o, rootGetters as MessageRuleMapping));\n rules = mergeModelEntities(state.rules, rules).filter(\n (o) => o.isDeleted !== true || o.isDefault === true,\n ); // keep default rules (inactive));\n\n commit('UPDATE_MESSAGE_RULES', { rules });\n },\n updateMessageCenter({ commit, rootGetters }, update: IDTOMessengerUpdate) {\n console.log('updateMessageCenter: ', update);\n\n const eventTypes = toModelEntities(MessageEventType, update.eventTypes);\n const campaigns = toModelEntities(Campaign, update.campaigns);\n const messageTypes = toModelEntities(MessageType, update.messageTypes);\n const handlebars = toModelEntities(MessageHandlebar, update.handlebars);\n\n commit('UPDATE_MESSAGE_CENTER', {\n eventTypes, campaigns, messageTypes, handlebars,\n });\n\n let rules = (update.messageRules ?? []).map((o) => new MessageRule(o, rootGetters as MessageRuleMapping));\n rules = rules.filter((o) => o.isDeleted !== true || o.isDefault === true); // keep default rules (inactive)\n\n commit('UPDATE_MESSAGE_RULES', { rules });\n },\n async resetMessageCenter({\n state, commit, dispatch, rootGetters,\n }) {\n commit('RESET_MESSAGE_CENTER');\n },\n async loadMessageCenter({\n state, commit, dispatch, rootGetters,\n }) {\n if (!rootGetters.isLoaded) return;\n const update = await httpClient.loadMessageCenter();\n dispatch('updateMessageCenter', update);\n },\n async sendMessageRule({ state, commit, dispatch }, p: { entity: MessageRule, delete: boolean }) {\n const dto = p.entity.toDto();\n if (p.delete) dto.isDeleted = true;\n else dto.isDeleted = false;\n const update = await httpClient.sendMessageRule(dto);\n dispatch('updateMessageRules', update);\n },\n};\n\nconst getters = >{\n eventTypesById(state: MessageCenterState) { return toMapById(state.eventTypes); },\n campaignsById(state: MessageCenterState) { return toMapById(state.campaigns); },\n handlebarsById(state: MessageCenterState) { return toMapById(state.handlebars); },\n messageTypesById(state: MessageCenterState) { return toMapById(state.messageTypes); },\n eventTypesByType(state: MessageCenterState) { return toMapByField(state.eventTypes, 'type'); },\n messageEventTypes(state: MessageCenterState): MessageEventType[] { return state.eventTypes; },\n builtinRules(state: MessageCenterState, localGetters: any, rootState: any, rootGetters: any): MessageRule[] {\n const types = BuiltInEventTypes;\n\n const builtinRuleMessageType = state.messageTypes.find((mt) => mt.isBuiltinRuleDefault);\n\n const rules = types.flatMap((type, index) => {\n let rule = state.rules.find((o) => o.isDefault && o.eventType?.type === type);\n if (rule) return rule;\n\n const eventType = localGetters.eventTypesByType.get(type);\n if (!eventType) return [];\n\n rule = new MessageRule();\n rule.id = -(index + 1000);\n rule.eventType = eventType;\n rule.isDefault = true;\n rule.isInactive = true;\n rule.messageType = builtinRuleMessageType;\n return rule;\n });\n\n // rules marked default only from backend\n const missingDefaultRules = state.rules.filter((o) => o.isDefault && !rules.includes(o));\n\n // filter out waitlist-related rules if waitlist is not enabled\n const wlOn = (rootState.settings.accountSettings.enableWaitlist && rootGetters.isWaitlistFeatureAllowed) as Boolean;\n const wlFilteredRules = [...rules, ...missingDefaultRules].filter((r) => r.eventType?.isWaitlist !== true || wlOn);\n\n return wlFilteredRules;\n },\n customRules(state: MessageCenterState, localGetters: any, rootState: any, rootGetters: any): MessageRule[] {\n return [\n ...state.rules.filter((o) => !o.isDefault && !o.isInactive),\n ...state.rules.filter((o) => !o.isDefault && o.isInactive),\n ];\n },\n isMessageCenterLoaded(state: MessageCenterState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoaded && rootGetters.isLoaded;\n },\n};\n\nconst MessageCenterStore = {\n namespaced: false,\n state: new MessageCenterState(),\n mutations,\n actions,\n getters,\n};\n\nexport default MessageCenterStore;\n","/* eslint-disable vue/max-len */\n/* eslint-disable max-len */\nimport { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport {\n dateFromDateAndTimeIndex, dateIndexFromDate,\n} from '@/services/time-utils';\nimport Tab from '@/model/Tab';\nimport i18n from '@/plugins/i18n';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport {\n CampaignReports, GuestsReports, FeedbackReports, TabsReportsResponse, ReportsParams, ServiceReports, MsgReports, MsgsReportsResponse, TabReports, WeekdayReports,\n} from '@/grpc-pb/reports_service_pb';\nimport { toMapByField } from '@/model/model-utils';\nimport { DateRange, DateRangePeriod, dateRangeFromPeriod } from '@/services/date-range';\nimport {\n reportsBinTypeFromDateRange, reportsForTabs, reportsListsSums,\n reportsDatesForSlots,\n reportsZipLists,\n reportsListPercentages,\n reportsListPercentagesTotal,\n reportsListSum,\n reportsListAveragesTotal,\n ChartData,\n PieChartData,\n reportsListAverages,\n CategoryType,\n reportsCategoryFromReportsParams,\n reportsForMsgTypes,\n reportsListsAveragesNoNeg,\n reportsListsAveragesTotalNoNeg,\n} from '@/services/reports-utils';\nimport { ReportsType } from '@/services/reports';\nimport ReportsCache from '@/services/reports-cache';\nimport { EmailMessageTypes, SmsMessageTypes } from '@/services/messages';\nimport IRootState, { IReportsState } from './store-state';\n\nexport const ReportsAllTabs = new Tab({ tabId: -1, tabName: i18n.tc('label.all_sections') });\nexport const ReportsOnlineTabs = new Tab({ tabId: -2, tabName: i18n.tc('label.online_sections') });\n\nexport class ReportsState implements IReportsState {\n reportsType: ReportsType = ReportsType.All;\n\n dateRange: DateRange = dateRangeFromPeriod(DateRangePeriod.ThisMonth);\n\n tab: Tab = ReportsAllTabs;\n\n byDtCreate: boolean = false;\n\n campaignName: string | null = null;\n\n isLoaded: boolean = false;\n\n tabReports: Map | null = null;\n\n previousTabReports: Map | null = null;\n\n msgReports: Map | null = null;\n\n tabReportsParams: ReportsParams.AsObject | null = null;\n\n previousTabReportsParams: ReportsParams.AsObject | null = null;\n\n msgReportsParams: ReportsParams.AsObject | null = null;\n}\n\nconst mutations = >{\n RESET(state: ReportsState) {\n Object.assign(state, new ReportsState());\n },\n RESET_REPORTS(state: ReportsState) {\n Object.assign(state, new ReportsState());\n },\n UPDATE_REPORTS(state: ReportsState, p: {\n reportsType?: ReportsType, dateRange?: DateRange,\n tab?: Tab, byDtCreate?: boolean, campaignName?: string,\n isLoaded?: boolean\n }) {\n if (p.reportsType !== undefined) state.reportsType = p.reportsType;\n if (p.dateRange !== undefined) state.dateRange = p.dateRange;\n if (p.tab !== undefined) state.tab = p.tab;\n if (p.byDtCreate !== undefined) state.byDtCreate = p.byDtCreate;\n if (p.campaignName !== undefined) state.campaignName = p.campaignName;\n if (p.isLoaded !== undefined) state.isLoaded = p.isLoaded;\n console.log('UPDATE_REPORTS: ', state.tab, state.byDtCreate, state.campaignName, state.dateRange, state.isLoaded);\n },\n UPDATE_REPORTS_TABS_MSGS(state: ReportsState, p: {\n tabReports?: Map,\n previousTabReports?: Map,\n msgReports?: Map,\n tabReportsParams?: ReportsParams.AsObject,\n previousTabReportsParams?: ReportsParams.AsObject,\n msgReportsParams?: ReportsParams.AsObject,\n }) {\n if (p.tabReports !== undefined) state.tabReports = p.tabReports;\n if (p.previousTabReports !== undefined) state.previousTabReports = p.previousTabReports;\n if (p.msgReports !== undefined) state.msgReports = p.msgReports;\n if (p.tabReportsParams !== undefined) state.tabReportsParams = p.tabReportsParams;\n if (p.previousTabReportsParams !== undefined) state.previousTabReportsParams = p.previousTabReportsParams;\n if (p.msgReportsParams !== undefined) state.msgReportsParams = p.msgReportsParams;\n console.log('UPDATE_REPORTS_TABS_MSGS: ', state.tabReportsParams, state.previousTabReportsParams, state.msgReportsParams);\n },\n};\n\nconst actions = >{\n async resetReports({ commit }) {\n commit('RESET_REPORTS');\n },\n async updateReports({ state, commit, dispatch }, p: { reportsType?: ReportsType, dateRange?: DateRange, tab?: Tab, byDtCreate?: boolean, campaignName?: string }) {\n const {\n reportsType, dateRange, tab, byDtCreate, campaignName,\n } = { ...p };\n\n // save changes\n commit('UPDATE_REPORTS', {\n reportsType, dateRange, tab, byDtCreate, campaignName,\n });\n\n if (!state.reportsType || !state.dateRange) return;\n\n // fetch params\n const {\n beginDate, endDate, previousBeginDate, previousEndDate,\n } = state.dateRange;\n\n const bdi = dateIndexFromDate(beginDate);\n const edi = dateIndexFromDate(endDate);\n const pbdi = previousBeginDate ? dateIndexFromDate(previousBeginDate) : undefined;\n const pedi = previousEndDate ? dateIndexFromDate(previousEndDate) : undefined;\n const bt = reportsBinTypeFromDateRange(state.dateRange);\n\n // find data in cache\n let isLoaded = false;\n let tabReports: Map | null = null;\n let previousTabReports: Map | null = null;\n let msgReports: Map | null = null;\n let tabReportsParams: ReportsParams.AsObject | null = null;\n let previousTabReportsParams: ReportsParams.AsObject | null = null;\n let msgReportsParams: ReportsParams.AsObject | null = null;\n\n if (state.reportsType === ReportsType.Messages) {\n // msg reports\n const entry = ReportsCache.findMsgReports(bdi, edi, bt, false);\n if (entry) {\n msgReports = entry.reports;\n msgReportsParams = entry.params;\n isLoaded = true;\n }\n } else {\n const exact = true; // state.reportsType === ReportsType.Weekdays;\n\n // tab reports\n const entry = ReportsCache.findTabReports(bdi, edi, bt, exact);\n if (entry) {\n tabReports = entry.reports;\n tabReportsParams = entry.params;\n isLoaded = true;\n }\n\n // previous tab reports\n if ([ReportsType.Reservations, ReportsType.Feedback].includes(state.reportsType) && pbdi && pedi) {\n const pentry = ReportsCache.findTabReports(pbdi, pedi, bt, exact);\n if (pentry) {\n previousTabReports = pentry.reports;\n previousTabReportsParams = pentry.params;\n } else {\n isLoaded = false;\n }\n }\n }\n\n commit('UPDATE_REPORTS_TABS_MSGS', {\n tabReports,\n previousTabReports,\n msgReports,\n tabReportsParams,\n previousTabReportsParams,\n msgReportsParams,\n });\n\n commit('UPDATE_REPORTS', { isLoaded });\n\n if (!isLoaded) await dispatch('loadReports');\n },\n async loadReports({\n state, commit, dispatch, rootGetters,\n }) {\n if (!rootGetters.isLoaded) return;\n\n // fetch params\n const {\n beginDate, endDate, previousBeginDate, previousEndDate,\n } = state.dateRange;\n\n const bdi = dateIndexFromDate(beginDate);\n const edi = dateIndexFromDate(endDate);\n const pbdi = previousBeginDate ? dateIndexFromDate(previousBeginDate) : undefined;\n const pedi = previousEndDate ? dateIndexFromDate(previousEndDate) : undefined;\n const bt = reportsBinTypeFromDateRange(state.dateRange);\n\n // load data\n let tabReports: Map | undefined;\n let previousTabReports: Map | undefined;\n let msgReports: Map | undefined;\n let tabReportsParams: ReportsParams.AsObject | undefined;\n let previousTabReportsParams: ReportsParams.AsObject | undefined;\n let msgReportsParams: ReportsParams.AsObject | undefined;\n\n let tabReportsPromise: Promise | undefined;\n let msgReportsPromise: Promise | undefined;\n let previousTabReportsPromise: Promise | undefined;\n\n if (state.reportsType === ReportsType.Messages) {\n // msg reports\n if (!state.msgReports) { msgReportsPromise = grpcClient.getMsgsReports(bdi, edi, bt); }\n } else {\n // tab reports\n if (!state.tabReports) { tabReportsPromise = grpcClient.getTabsReports(bdi, edi, bt); }\n // previous tab reports\n if (!state.previousTabReports && pbdi && pedi) { previousTabReportsPromise = grpcClient.getTabsReports(pbdi, pedi, bt); }\n }\n\n // await and proces responses\n if (msgReportsPromise) {\n const msgResponse = await msgReportsPromise;\n msgReports = toMapByField(msgResponse.toObject().msgReportsList, 'msgType');\n msgReportsParams = msgResponse.getParams()!.toObject();\n ReportsCache.addMsgReports(msgReports, msgReportsParams);\n }\n\n if (tabReportsPromise) {\n const guestResponse = await tabReportsPromise;\n tabReports = toMapByField(guestResponse.toObject().tabReportsList, 'tabId');\n tabReportsParams = guestResponse.getParams()!.toObject();\n ReportsCache.addTabReports(tabReports, tabReportsParams);\n }\n\n if (previousTabReportsPromise) {\n const guestResponse = await previousTabReportsPromise;\n previousTabReports = toMapByField(guestResponse.toObject().tabReportsList, 'tabId');\n previousTabReportsParams = guestResponse.getParams()!.toObject();\n ReportsCache.addTabReports(previousTabReports, previousTabReportsParams);\n }\n commit('UPDATE_REPORTS_TABS_MSGS', {\n tabReports,\n previousTabReports,\n msgReports,\n tabReportsParams,\n previousTabReportsParams,\n msgReportsParams,\n });\n\n commit('UPDATE_REPORTS', { isLoaded: true });\n },\n async setReportsDateRange({ dispatch }, dateRange: DateRange) {\n await dispatch('updateReports', { dateRange });\n },\n async setReportsTab({ dispatch }, tab: Tab) {\n await dispatch('updateReports', { tab });\n },\n async setReportsCampaignName({ dispatch }, campaignName: string) {\n await dispatch('updateReports', { campaignName });\n },\n async setReportsByDtCreate({ dispatch }, byDtCreate: boolean) {\n await dispatch('updateReports', { byDtCreate });\n },\n // eslint-disable-next-line no-empty-pattern\n updateReservationDates({ }, dateIndices: number[]) {\n ReportsCache.removeModified(dateIndices);\n },\n};\n\nconst getters = >{\n isReportsLoaded(state: ReportsState, localGetters: any, rootState: any, rootGetters: any) {\n return state.isLoaded && rootGetters.isLoaded;\n },\n reportsType(state: ReportsState): ReportsType {\n return state.reportsType;\n },\n reportsComparePrevious(state: ReportsState): boolean {\n return state.dateRange.previousBeginDate !== undefined && state.dateRange.previousEndDate !== undefined;\n },\n msgReportsCategory(state: ReportsState): { categoryType: CategoryType, category: Date[] } {\n if (!state.msgReportsParams) return { categoryType: CategoryType.DAY, category: [] };\n return reportsCategoryFromReportsParams(state.msgReportsParams, false);\n },\n tabReportsCategory(state: ReportsState): { categoryType: CategoryType, category: Date[] } {\n if (!state.tabReportsParams) return { categoryType: CategoryType.DAY, category: [] };\n return reportsCategoryFromReportsParams(state.tabReportsParams);\n },\n reportsEmails(state: ReportsState, localGetters: any): ChartData {\n if (!state.msgReportsParams || !state.msgReports) return {};\n\n const { categoryType, category } = localGetters.msgReportsCategory as { categoryType: CategoryType, category: Date[] };\n const reports = reportsForMsgTypes(EmailMessageTypes, state.msgReportsParams, state.msgReports);\n\n const dataset = reportsZipLists([reports.sentList, reports.errorsList]);\n const totals = [reportsListSum(reports.sentList), reportsListSum(reports.errorsList)];\n\n return {\n categoryType, category, dataset, totals,\n };\n },\n reportsSms(state: ReportsState, localGetters: any): ChartData {\n if (!state.msgReportsParams || !state.msgReports) return {};\n\n const { categoryType, category } = localGetters.msgReportsCategory as { categoryType: CategoryType, category: Date[] };\n const reports = reportsForMsgTypes(SmsMessageTypes, state.msgReportsParams, state.msgReports);\n\n const dataset = reportsZipLists([reports.sentList, reports.errorsList]);\n const totals = [reportsListSum(reports.sentList), reportsListSum(reports.errorsList)];\n\n return {\n categoryType, category, dataset, totals,\n };\n },\n reportsFilteredTabs(state: ReportsState, localGetters: any, rootState: any, rootGetters: any) {\n // valid tabs\n const tabs = new Set();\n rootState.settings.tabs.forEach((t: Tab) => {\n if (state.tab === ReportsAllTabs) tabs.add(t.id);\n else if (state.tab === ReportsOnlineTabs) {\n if (t.usingWeekdaysAndTimes) tabs.add(t.id);\n } else if (state.tab.id === t.id) tabs.add(t.id);\n });\n\n return tabs;\n },\n reportsTabReports(state: ReportsState, localGetters: any, rootState: any, rootGetters: any) {\n if (!state.tabReportsParams || !state.tabReports) return null;\n const tabs = localGetters.reportsFilteredTabs as Set;\n return reportsForTabs(tabs, state.tabReportsParams, state.tabReports);\n },\n reportsPreviousTabReports(state: ReportsState, localGetters: any, rootState: any, rootGetters: any) {\n if (!state.previousTabReportsParams || !state.previousTabReports) return null;\n const tabs = localGetters.reportsFilteredTabs as Set;\n return reportsForTabs(tabs, state.previousTabReportsParams, state.previousTabReports);\n },\n // guests\n reportsGuests(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const guests = (state.byDtCreate ? localGetters.reportsTabReports!.guestsDtc : localGetters.reportsTabReports!.guests) as GuestsReports.AsObject;\n const pguests = (state.byDtCreate ? localGetters.reportsPreviousTabReports?.guestsDtc : localGetters.reportsPreviousTabReports?.guests) as GuestsReports.AsObject;\n const lists = pguests ? [guests.guestsList, pguests.guestsList] : [guests.guestsList];\n const dataset = reportsZipLists(lists);\n const totals = lists.map((l) => reportsListSum(l));\n\n console.log('reportsGuests: ', { category, dataset, totals });\n return {\n categoryType, category, dataset, totals,\n };\n },\n reportsReservations(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const guests = (state.byDtCreate ? localGetters.reportsTabReports!.guestsDtc : localGetters.reportsTabReports!.guests) as GuestsReports.AsObject;\n const pguests = (state.byDtCreate ? localGetters.reportsPreviousTabReports?.guestsDtc : localGetters.reportsPreviousTabReports?.guests) as GuestsReports.AsObject;\n const lists = pguests ? [guests.reservationsList, pguests.reservationsList] : [guests.reservationsList];\n const dataset = reportsZipLists(lists);\n const totals = lists.map((l) => reportsListSum(l));\n\n console.log('reportsGuests: ', { category, dataset, totals });\n return {\n categoryType, category, dataset, totals,\n };\n },\n reportsReturning(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const guests = (state.byDtCreate ? localGetters.reportsTabReports!.guestsDtc : localGetters.reportsTabReports!.guests) as GuestsReports.AsObject;\n const pguests = (state.byDtCreate ? localGetters.reportsPreviousTabReports?.guestsDtc : localGetters.reportsPreviousTabReports?.guests) as GuestsReports.AsObject;\n\n const dataset = reportsZipLists(pguests\n ? [reportsListPercentages(guests.returningList, guests.reservationsList), reportsListPercentages(pguests.returningList, pguests.reservationsList)]\n : [reportsListPercentages(guests.returningList, guests.reservationsList)]);\n\n const totals = pguests\n ? [reportsListPercentagesTotal(guests.returningList, guests.reservationsList), reportsListPercentagesTotal(pguests.returningList, pguests.reservationsList)]\n : [reportsListPercentagesTotal(guests.returningList, guests.reservationsList)];\n\n return {\n categoryType, category, dataset, totals,\n };\n },\n reportsCancelations(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const guests = (state.byDtCreate ? localGetters.reportsTabReports!.guestsDtc : localGetters.reportsTabReports!.guests) as GuestsReports.AsObject;\n const pguests = (state.byDtCreate ? localGetters.reportsPreviousTabReports?.guestsDtc : localGetters.reportsPreviousTabReports?.guests) as GuestsReports.AsObject;\n\n const dataset = reportsZipLists(pguests\n ? [reportsListPercentages(guests.cancelationsList, guests.reservationsList), reportsListPercentages(pguests.cancelationsList, pguests.reservationsList)]\n : [reportsListPercentages(guests.cancelationsList, guests.reservationsList)]);\n\n const totals = pguests\n ? [reportsListPercentagesTotal(guests.cancelationsList, guests.reservationsList), reportsListPercentagesTotal(pguests.cancelationsList, pguests.reservationsList)]\n : [reportsListPercentagesTotal(guests.cancelationsList, guests.reservationsList)];\n\n return {\n categoryType, category, dataset, totals,\n };\n },\n reportsNoshows(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const guests = (state.byDtCreate ? localGetters.reportsTabReports!.guestsDtc : localGetters.reportsTabReports!.guests) as GuestsReports.AsObject;\n const pguests = (state.byDtCreate ? localGetters.reportsPreviousTabReports?.guestsDtc : localGetters.reportsPreviousTabReports?.guests) as GuestsReports.AsObject;\n\n const dataset = reportsZipLists(pguests\n ? [reportsListPercentages(guests.noshowsList, guests.reservationsList), reportsListPercentages(pguests.noshowsList, pguests.reservationsList)]\n : [reportsListPercentages(guests.noshowsList, guests.reservationsList)]);\n\n const totals = pguests\n ? [reportsListPercentagesTotal(guests.noshowsList, guests.reservationsList), reportsListPercentagesTotal(pguests.noshowsList, pguests.reservationsList)]\n : [reportsListPercentagesTotal(guests.noshowsList, guests.reservationsList)];\n\n return {\n categoryType, category, dataset, totals,\n };\n },\n reportsPartySizes(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const guests = (state.byDtCreate ? localGetters.reportsTabReports!.guestsDtc : localGetters.reportsTabReports!.guests) as GuestsReports.AsObject;\n const pguests = (state.byDtCreate ? localGetters.reportsPreviousTabReports?.guestsDtc : localGetters.reportsPreviousTabReports?.guests) as GuestsReports.AsObject;\n\n const dataset = reportsZipLists(pguests\n ? [reportsListAverages(guests.partySizeSumsList, guests.partySizeCountsList), reportsListAverages(pguests.partySizeSumsList, pguests.partySizeCountsList)]\n : [reportsListAverages(guests.partySizeSumsList, guests.partySizeCountsList)]);\n\n const totals = pguests\n ? [reportsListAveragesTotal(guests.partySizeSumsList, guests.partySizeCountsList), reportsListAveragesTotal(pguests.partySizeSumsList, pguests.partySizeCountsList)]\n : [reportsListAveragesTotal(guests.partySizeSumsList, guests.partySizeCountsList)];\n\n return {\n categoryType, category, dataset, totals,\n };\n },\n // online\n reportsCampaignsGuests(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const campaigns = state.byDtCreate\n ? localGetters.reportsTabReports!.campaignsDtcList as CampaignReports.AsObject[]\n : localGetters.reportsTabReports!.campaignsList as CampaignReports.AsObject[];\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const series = campaigns.map((c: CampaignReports.AsObject) => c.campaignName);\n const dataset = campaigns.map((c: CampaignReports.AsObject) => c.guestsList);\n const totals = dataset.map((l) => reportsListSum(l));\n const total = reportsListSum(totals);\n\n return {\n categoryType, category, series, dataset, totals, total,\n };\n },\n reportsCampaignsReservations(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const campaigns = state.byDtCreate\n ? localGetters.reportsTabReports!.campaignsDtcList as CampaignReports.AsObject[]\n : localGetters.reportsTabReports!.campaignsList as CampaignReports.AsObject[];\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const series = campaigns.map((c: CampaignReports.AsObject) => c.campaignName);\n const dataset = campaigns.map((c: CampaignReports.AsObject) => c.reservationsList);\n const totals = dataset.map((l) => reportsListSum(l));\n const total = reportsListSum(totals);\n\n return {\n categoryType, category, series, dataset, totals, total,\n };\n },\n reportsCampaignsDaysAdvance(state: ReportsState, localGetters: any): { dataset?: [Date, number][], total?: number } {\n if (!localGetters.reportsTabReports) return {};\n\n const dates = localGetters.tabReportsCategory.category as Date[];\n let daysAdvanceList: number[];\n let total: number;\n\n const campaigns = state.byDtCreate\n ? localGetters.reportsTabReports!.campaignsDtcList as CampaignReports.AsObject[]\n : localGetters.reportsTabReports!.campaignsList as CampaignReports.AsObject[];\n\n const campaign = campaigns.find((c) => c.campaignName === state.campaignName);\n\n if (campaign) {\n daysAdvanceList = reportsListsAveragesNoNeg([campaign.daysAdvanceSumsList], [campaign.daysAdvanceCountsList]);\n total = reportsListsAveragesTotalNoNeg([campaign.daysAdvanceSumsList], [campaign.daysAdvanceCountsList]);\n } else {\n const valueLists = campaigns.map((c) => c.daysAdvanceSumsList);\n const countLists = campaigns.map((c) => c.daysAdvanceCountsList);\n daysAdvanceList = reportsListsAveragesNoNeg(valueLists, countLists);\n total = reportsListsAveragesTotalNoNeg(valueLists, countLists);\n }\n\n const dataset = reportsZipLists([dates, daysAdvanceList], false) as [Date, number][];\n\n return { dataset, total };\n },\n // services\n reportsServices(state: ReportsState, localGetters: any, rootState: any, rootGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const servicesReports = localGetters.reportsTabReports!.servicesList as ServiceReports.AsObject[];\n const series = servicesReports.map((s) => s.serviceName);\n const lists = servicesReports.map((s: ServiceReports.AsObject) => s.reservationsList);\n const dataset = lists;\n const totals = lists.map((l) => reportsListSum(l));\n\n return {\n categoryType, category, series, dataset, totals,\n };\n },\n reportsServicesRevenue(state: ReportsState, localGetters: any, rootState: any, rootGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const servicesReports = localGetters.reportsTabReports!.servicesList as ServiceReports.AsObject[];\n const revenueListsByCurrencies = new Map();\n servicesReports.forEach((sr) => {\n let list = revenueListsByCurrencies.get(sr.revenueCurrency);\n if (!list) { list = []; revenueListsByCurrencies.set(sr.revenueCurrency, list); }\n list.push(sr.revenueSumsList);\n });\n\n const unsortedCurrencies = Array.from(revenueListsByCurrencies.keys());\n const unsortedDataset = Array.from(revenueListsByCurrencies.values()).map((rlbc) => reportsListsSums(rlbc));\n const unsortedTotals = unsortedDataset.map((list) => reportsListSum(list));\n const indeces = unsortedTotals.map((sum, i) => ({ sum, i })).sort((sumi1, sumi2) => sumi2.sum - sumi1.sum).map((sumi) => sumi.i);\n const series = indeces.map((i) => unsortedCurrencies[i]);\n const dataset = indeces.map((i) => unsortedDataset[i]);\n const totals = indeces.map((i) => unsortedTotals[i]);\n\n return {\n categoryType, category, series, dataset, totals,\n };\n },\n reportsServicesPie(state: ReportsState, localGetters: any, rootState: any, rootGetters: any): {\n datasetByReservations?: PieChartData,\n datasetByGuests?: PieChartData,\n datasetByRevenue?: PieChartData,\n } {\n if (!localGetters.reportsTabReports) return {};\n\n const servicesReports = localGetters.reportsTabReports!.servicesList as ServiceReports.AsObject[];\n\n const datasetByReservations = servicesReports.map((sr) => ({ value: reportsListSum(sr.reservationsList), name: sr.serviceName }));\n const datasetByGuests = servicesReports.map((sr) => ({ value: reportsListSum(sr.guestsList), name: sr.serviceName }));\n const datasetByRevenue = servicesReports.map((sr) => ({ value: reportsListSum(sr.revenueSumsList), name: sr.serviceName, unit: sr.revenueCurrency || ' ' }));\n\n return { datasetByReservations, datasetByGuests, datasetByRevenue };\n },\n // weekdays\n reportsWeekdaysAverageGuests(state: ReportsState, localGetters: any, rootState: any, rootGetters: any): { dataset?: [number, number, number][], category?: Date[] } {\n if (!localGetters.reportsTabReports) return {};\n\n // category\n const date = dateFromDateAndTimeIndex(state.tabReportsParams!.beginDate)!;\n const category = reportsDatesForSlots(date);\n\n // dataset\n const dataset = [] as [number, number, number][];\n const weekdaysReports = localGetters.reportsTabReports!.weekdaysList as WeekdayReports.AsObject[];\n weekdaysReports.forEach((wr, wd) => {\n const list = wr.guests?.guestsList ?? [];\n list.forEach((value, si) => {\n dataset.push([si, wd, value]);\n });\n });\n\n return { category, dataset };\n },\n reportsWeekdaysServices(state: ReportsState, localGetters: any, rootState: any, rootGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n // series from service reports\n const servicesReports = localGetters.reportsTabReports!.servicesList as ServiceReports.AsObject[];\n const series = servicesReports.map((sr) => sr.serviceName);\n\n // fetch weekday sums for every service\n const weekdaysReports = localGetters.reportsTabReports!.weekdaysList as WeekdayReports.AsObject[];\n const dataset = servicesReports.map((sr) => {\n const weekdaySums = weekdaysReports.map((wr) => {\n const fwdsr = wr.servicesList.find((wdsr) => (wdsr.serviceId === sr.serviceId) && (wdsr.revenueCurrency === sr.revenueCurrency));\n return reportsListSum(fwdsr?.reservationsList ?? []);\n });\n return weekdaySums;\n });\n\n return { series, dataset };\n },\n reportsWeekdaysServicesRevenue(state: ReportsState, localGetters: any, rootState: any, rootGetters: any): { series?: string[], dataset?: number[][] } {\n if (!localGetters.reportsTabReports) return {};\n\n // series from services revenue chart data (sorted by amount)\n const reportsServicesRevenue = localGetters.reportsServicesRevenue as ChartData;\n const series = reportsServicesRevenue.series ?? []; // currencies\n\n // fetch weekday revenue sums for every currency\n const weekdaysReports = localGetters.reportsTabReports!.weekdaysList as WeekdayReports.AsObject[];\n const dataset = series.map((curr) => {\n const weekdaySums = weekdaysReports.map((wr) => {\n // weekday services with curr\n const fwdsrs = wr.servicesList.filter((wdsr) => wdsr.revenueCurrency === curr);\n return reportsListSum(fwdsrs.map((fwdsr) => reportsListSum(fwdsr.revenueSumsList)));\n });\n return weekdaySums;\n });\n\n return { series, dataset };\n },\n reportsWeekdaysTabs(state: ReportsState, localGetters: any, rootState: any, rootGetters: any): { series?: string[], dataset?: number[][] } {\n if (!localGetters.reportsTabReports) return {};\n\n const allTabs = rootState.settings.tabs as Tab[];\n const tabIds = localGetters.reportsFilteredTabs as Set;\n const tabs = allTabs.filter((t) => tabIds.has(t.id));\n\n // series\n const series = tabs.map((t) => t.name);\n\n // fetch weekday sums for every tab\n const dataset = tabs.map((t) => {\n const weekdaysReports = state.tabReports!.get(t.id)?.weekdaysList;\n if (!weekdaysReports) return [0, 0, 0, 0, 0, 0, 0];\n\n const weekdaySums = weekdaysReports.map((wr) => {\n // actual tab weekday services\n const list = wr.guests?.guestsList; // might be undefined - direclty from api\n return list ? reportsListSum(list) : 0;\n });\n return weekdaySums;\n });\n\n return { series, dataset };\n },\n // feedback\n // reportsAllRatings(state: ReportsState, localGetters: any): ChartData {\n // if (!localGetters.reportsTabReports) return {};\n\n // const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n // const feedbacks = localGetters.reportsTabReports!.feedbacks as FeedbackReports.AsObject;\n // const pfeedbacks = localGetters.reportsPreviousTabReports?.feedbacks as FeedbackReports.AsObject;\n\n // const dataset = reportsZipLists(pfeedbacks\n // ? [reportsListAverages(feedbacks.overallSumsList, feedbacks.overallCountsList), reportsListAverages(pfeedbacks.overallSumsList, pfeedbacks.overallCountsList)]\n // : [\n // reportsListAverages(feedbacks.overallSumsList, feedbacks.overallCountsList),\n // reportsListAverages(feedbacks.foodSumsList, feedbacks.breakdownCountsList),\n // reportsListAverages(feedbacks.serviceSumsList, feedbacks.breakdownCountsList),\n // reportsListAverages(feedbacks.ambienceSumsList, feedbacks.breakdownCountsList),\n // ]);\n\n // const totals = pfeedbacks\n // ? [reportsListAveragesTotal(feedbacks.overallSumsList, feedbacks.overallCountsList), reportsListAveragesTotal(pfeedbacks.overallSumsList, pfeedbacks.overallCountsList)]\n // : [\n // reportsListAveragesTotal(feedbacks.overallSumsList, feedbacks.overallCountsList),\n // reportsListAveragesTotal(feedbacks.foodSumsList, feedbacks.breakdownCountsList),\n // reportsListAveragesTotal(feedbacks.serviceSumsList, feedbacks.breakdownCountsList),\n // reportsListAveragesTotal(feedbacks.ambienceSumsList, feedbacks.breakdownCountsList),\n // ];\n\n // return {\n // categoryType, category, dataset, totals,\n // };\n // },\n reportsOverallRatings(state: ReportsState, localGetters: any): ChartData {\n if (!localGetters.reportsTabReports) return {};\n\n const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n const feedbacks = localGetters.reportsTabReports!.feedbacks as FeedbackReports.AsObject;\n const pfeedbacks = localGetters.reportsPreviousTabReports?.feedbacks as FeedbackReports.AsObject;\n\n // const dataset = feedbacks.binsList.map((bin) => bin.overall?.starsList ?? [0, 0, 0, 0, 0]);\n // const dataset = feedbacks.binsList.reduce((sets, bin) => sets.forEach((s, i) => s + (bin.overall?.starsList[i] ?? 0)), [[], [], [], [], []]);\n const dataset = [1, 2, 3, 4, 5].map((_, i) => feedbacks.binsList.map((bin) => bin.overall?.starsList[i] ?? 0));\n const totals = feedbacks.binsList.reduce((sums, bin) => sums.map((s, i) => s + (bin.overall?.starsList[i] ?? 0)), [0, 0, 0, 0, 0]);\n const avgDataset = feedbacks.binsList.map((bin) => ((bin.overall?.starsList ?? []).reduce((wsum, cnt, rti) => wsum + (rti + 1) * cnt, 0) / (bin.overall?.starsList ?? []).reduce((sum, cnt) => sum + cnt, 0)) || 0);\n\n return {\n categoryType, category, dataset, totals, avgDataset,\n };\n },\n // reportsFoodRatings(state: ReportsState, localGetters: any): ChartData {\n // if (!localGetters.reportsTabReports) return {};\n\n // const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n // const feedbacks = localGetters.reportsTabReports!.feedbacks as FeedbackReports.AsObject;\n // const pfeedbacks = localGetters.reportsPreviousTabReports?.feedbacks as FeedbackReports.AsObject;\n\n // const dataset = reportsZipLists(pfeedbacks\n // ? [reportsListAverages(feedbacks.foodSumsList, feedbacks.breakdownCountsList), reportsListAverages(pfeedbacks.foodSumsList, pfeedbacks.breakdownCountsList)]\n // : [reportsListAverages(feedbacks.foodSumsList, feedbacks.breakdownCountsList)]);\n\n // const totals = pfeedbacks\n // ? [reportsListAveragesTotal(feedbacks.foodSumsList, feedbacks.breakdownCountsList), reportsListAveragesTotal(pfeedbacks.foodSumsList, pfeedbacks.breakdownCountsList)]\n // : [reportsListAveragesTotal(feedbacks.foodSumsList, feedbacks.breakdownCountsList)];\n\n // return {\n // categoryType, category, dataset, totals,\n // };\n // },\n // reportsServiceRatings(state: ReportsState, localGetters: any): ChartData {\n // if (!localGetters.reportsTabReports) return {};\n\n // const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n // const feedbacks = localGetters.reportsTabReports!.feedbacks as FeedbackReports.AsObject;\n // const pfeedbacks = localGetters.reportsPreviousTabReports?.feedbacks as FeedbackReports.AsObject;\n\n // const dataset = reportsZipLists(pfeedbacks\n // ? [reportsListAverages(feedbacks.serviceSumsList, feedbacks.breakdownCountsList), reportsListAverages(pfeedbacks.serviceSumsList, pfeedbacks.breakdownCountsList)]\n // : [reportsListAverages(feedbacks.serviceSumsList, feedbacks.breakdownCountsList)]);\n\n // const totals = pfeedbacks\n // ? [reportsListAveragesTotal(feedbacks.serviceSumsList, feedbacks.breakdownCountsList), reportsListAveragesTotal(pfeedbacks.serviceSumsList, pfeedbacks.breakdownCountsList)]\n // : [reportsListAveragesTotal(feedbacks.serviceSumsList, feedbacks.breakdownCountsList)];\n\n // return {\n // categoryType, category, dataset, totals,\n // };\n // },\n // reportsAmbienceRatings(state: ReportsState, localGetters: any): ChartData {\n // if (!localGetters.reportsTabReports) return {};\n\n // const { categoryType, category } = localGetters.tabReportsCategory as { categoryType: CategoryType, category: Date[] };\n // const feedbacks = localGetters.reportsTabReports!.feedbacks as FeedbackReports.AsObject;\n // const pfeedbacks = localGetters.reportsPreviousTabReports?.feedbacks as FeedbackReports.AsObject;\n\n // const dataset = reportsZipLists(pfeedbacks\n // ? [reportsListAverages(feedbacks.ambienceSumsList, feedbacks.breakdownCountsList), reportsListAverages(pfeedbacks.ambienceSumsList, pfeedbacks.breakdownCountsList)]\n // : [reportsListAverages(feedbacks.ambienceSumsList, feedbacks.breakdownCountsList)]);\n\n // const totals = pfeedbacks\n // ? [reportsListAveragesTotal(feedbacks.ambienceSumsList, feedbacks.breakdownCountsList), reportsListAveragesTotal(pfeedbacks.ambienceSumsList, pfeedbacks.breakdownCountsList)]\n // : [reportsListAveragesTotal(feedbacks.ambienceSumsList, feedbacks.breakdownCountsList)];\n\n // return {\n // categoryType, category, dataset, totals,\n // };\n // },\n};\n\nconst ReportsStore = {\n namespaced: false,\n state: new ReportsState(),\n mutations,\n actions,\n getters,\n};\n\nexport default ReportsStore;\n","/* eslint-disable max-len */\n/* eslint-disable vue/max-len */\nimport { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport { deleteModelEntities, mergeSortedModelEntities } from '@/grpc-api/model/model-utils';\nimport { OnErrorFnc } from '@/services/grpc-client-utils';\nimport { searchContactReset } from '@/services/contact-search';\nimport { ApiError } from '@/api/api-error';\nimport ReservationService, { ReservationServiceMapping } from '@/grpc-api/model/reservation-service';\nimport Currency from '@/grpc-api/model/currency';\nimport { toMapById } from '@/model/model-utils';\nimport IRootState, { IServiceManagerState } from './store-state';\n\nexport class ServiceManagerState implements IServiceManagerState {\n services: ReservationService[] = [];\n\n currencies: Currency[] = [];\n\n isLoaded: boolean = false;\n\n isFullyLoaded: boolean = false;\n}\n\nconst mutations = >{\n RESET(state: ServiceManagerState) {\n Object.assign(state, new ServiceManagerState());\n searchContactReset();\n },\n RESET_SERVICE_MANAGER(state: ServiceManagerState) {\n Object.assign(state, new ServiceManagerState());\n searchContactReset();\n },\n UPDATE_SERVICE_MANAGER(state: ServiceManagerState, p: { services?: ReservationService[], currencies?: Currency[], isLoaded?: boolean, isFullyLoaded?: boolean }) {\n if (p.services) {\n deleteModelEntities(state.services, p.services);\n mergeSortedModelEntities(state.services, p.services, ReservationService.compare);\n }\n if (p.currencies) state.currencies = p.currencies;\n\n if (p.isLoaded) state.isLoaded = p.isLoaded;\n if (p.isFullyLoaded) state.isFullyLoaded = p.isFullyLoaded;\n\n console.log('services=', p.services);\n console.log('currencies=', p.currencies);\n },\n};\n\nconst actions = >{\n async resetServiceManager({ commit }) {\n commit('RESET_SERVICE_MANAGER');\n },\n async loadServiceManager({ commit, rootGetters }) {\n if (!rootGetters.isLoaded) return;\n\n let isLoaded = false;\n let isFullyLoaded = false;\n\n commit('RESET_SERVICE_MANAGER');\n\n const currencies = await grpcClient.listCurrencies();\n commit('UPDATE_SERVICE_MANAGER', { currencies });\n\n await grpcClient.listReservationServices(\n (data: ReservationService[]) => { isLoaded = true; commit('UPDATE_SERVICE_MANAGER', { services: data, isLoaded, isFullyLoaded }); },\n rootGetters as ReservationServiceMapping,\n );\n isLoaded = true;\n isFullyLoaded = true;\n commit('UPDATE_SERVICE_MANAGER', { isLoaded, isFullyLoaded });\n },\n async serviceManagerReorderServices({ commit, rootGetters }, p: { services: ReservationService[] }) {\n await grpcClient.reorderReservationServices(\n p.services,\n (services: ReservationService[]) => { commit('UPDATE_SERVICE_MANAGER', { services }); },\n rootGetters as ReservationServiceMapping,\n );\n },\n async serviceManagerUpdateService({ commit, rootGetters }, p: { service: ReservationService }) {\n const returnedService = await grpcClient.updateReservationService(\n p.service,\n (services: ReservationService[]) => { commit('UPDATE_SERVICE_MANAGER', { services }); },\n rootGetters as ReservationServiceMapping,\n );\n return true;\n },\n};\n\nconst getters = >{\n isServiceManagerLoaded(state: ServiceManagerState, localGetters: any, rootState: any, rootGetters: any): boolean {\n return state.isLoaded && rootGetters.isLoaded;\n },\n serviceManagertServices(state: ServiceManagerState, localGetters: any, rootState: any, rootGetters: any): ReservationService[] {\n return state.services;\n },\n currenciesById(state: ServiceManagerState, localGetters: any, rootState: any, rootGetters: any): Map {\n return toMapById(state.currencies);\n },\n};\n\nconst ServiceManagerStore = {\n namespaced: false,\n state: new ServiceManagerState(),\n mutations,\n actions,\n getters,\n};\n\nexport default ServiceManagerStore;\n","import { IUserAccount } from '@/api/api-update';\n\nexport default class UserAccount {\n id: number;\n\n token: string;\n\n accountName: string;\n\n color: string;\n\n constructor(o?: IUserAccount) {\n this.id = o?.accountId ?? 0;\n this.token = o?.token ?? '';\n this.accountName = o?.accountName ?? 'N/A';\n this.color = o?.color?.toUpperCase() ?? '#3355FF';\n }\n}\n","/* eslint-disable no-param-reassign */\nimport {\n GetterTree, MutationTree, ActionTree, Commit,\n} from 'vuex';\nimport httpClient from '@/api/http-client';\nimport storage, { IStorageData } from '@/services/local-storage';\nimport UserAccount from '@/model/UserAccount';\nimport { IUpdate } from '@/api/api-update';\nimport { searchReset } from '@/services/search';\nimport { mergeToModelEntities } from '@/model/model-utils';\nimport ReportsCache from '@/services/reports-cache';\nimport IRootState, { ISessionState, ISetStoreState } from './store-state';\n\ninterface IAccountData {\n state: ISetStoreState,\n data: IStorageData;\n}\nconst cache = new Map();\n\nfunction resetState(commit: Commit, hard = false) {\n if (hard) { cache.clear(); }\n\n storage.clear();\n searchReset();\n ReportsCache.reset();\n\n commit('RESET');\n commit('search/RESET');\n commit('nameSearch/RESET');\n commit('phoneSearch/RESET');\n commit('emailSearch/RESET');\n}\n\nfunction cacheState(sstate: ISetStoreState) {\n // strip down reactive watchers\n // const s = {} as {[key: string]: any};\n // Object.keys(sstate).forEach((key) => {\n // s[key] = { ...(sstate as any)[key] };\n // });\n // const state = s as ISetStoreState;\n\n const state: ISetStoreState = {\n session: { ...sstate.session },\n update: { ...sstate.update },\n reservations: { ...sstate.reservations },\n codes: { ...sstate.codes },\n settings: { ...sstate.settings },\n };\n const data = { ...storage.getData() };\n cache.set(sstate.settings.account.id, { state, data });\n}\n\nfunction retrieveState(commit: Commit, id: number): boolean {\n const accountData = cache.get(id);\n if (!accountData) return false;\n\n console.log('retrieveState: ', accountData);\n\n storage.setData(accountData.data);\n commit('SET', { state: accountData.state });\n // commit('search/SET', { state });\n // commit('nameSearch/SET', { state });\n // commit('phoneSearch/SET', { state });\n // commit('emailSearch/SET', { state });\n return true;\n}\n\nexport class SessionState implements ISessionState {\n token: string | null = storage.getToken();\n\n username: string | null = storage.getUsername();\n\n timestamp: string | null = null;\n\n unixTimestamp: string | null = null;\n\n userAccounts: UserAccount[] = [];\n\n fcmToken: string | null = storage.getFcmToken();\n}\n\nconst mutations = >{\n RESET(state: SessionState) {\n Object.assign(state, new SessionState());\n },\n SET(state: SessionState, p: { state: ISetStoreState }) {\n if (!p.state.session) return;\n console.log('SET session:', p.state.session);\n Object.assign(state, p.state.session);\n },\n SET_USERNAME(state: SessionState, username: string | null) {\n if (state.username === username) return;\n state.username = username;\n storage.setUsername(username);\n },\n SET_TOKEN(state: SessionState, token: string | null) {\n if (state.token === token) return;\n state.token = token;\n storage.setToken(token);\n },\n SET_TIMESTAMP(state: SessionState, p: { timestamp?: string | null, unixTimestamp?: string | null}) {\n if (p.timestamp !== undefined) state.timestamp = p.timestamp;\n if (p.unixTimestamp !== undefined) state.unixTimestamp = p.unixTimestamp;\n },\n UPDATE_USER_ACCOUNTS(state: SessionState, p: { userAccounts: UserAccount[] }) {\n state.userAccounts = p.userAccounts;\n console.log('userAccounts:', state.userAccounts);\n },\n SET_FCM_TOKEN(state: SessionState, fcmToken: string | null) {\n if (state.fcmToken === fcmToken) return;\n state.fcmToken = fcmToken;\n storage.setFcmToken(fcmToken);\n },\n};\n\nconst actions = >{\n async login({ commit, dispatch }, p: { username: string, password: string }) {\n await httpClient.login(p.username, p.password);\n commit('SET_USERNAME', p.username);\n // dispatch('startAutoUpdate'); // done in main.vue in initialLoad()\n },\n\n async logout({ commit, dispatch }) {\n try {\n await httpClient.logout();\n } finally {\n resetState(commit, true);\n }\n },\n\n switchAccount({ rootState, commit }, p: { id: number, username: string, token: string }) {\n cacheState(rootState);\n resetState(commit);\n retrieveState(commit, p.id);\n commit('SET_TOKEN', p.token);\n commit('SET_USERNAME', p.username);\n // dispatch('startAutoUpdate'); // done in AccountSwitcher in changeAccount()\n },\n\n async openAccount({ state, commit, dispatch }, p: {\n username: string,\n password: string,\n firstname: string,\n companyName: string,\n phone: string,\n locale: string,\n promoCode: string }) {\n await httpClient.openAccount(p.username, p.password, p.firstname, p.companyName, p.phone, p.locale, p.promoCode);\n commit('SET_USERNAME', p.username);\n // dispatch('startAutoUpdate'); // done in RegisterAccountStep in submit()\n },\n async register(\n { state, commit, dispatch },\n p: { username: string, code: string },\n ) {\n await httpClient.register(p.username, p.code);\n },\n async deleteAccount({ state, commit, dispatch }, p?: {reason? : string}) {\n await httpClient.deleteAccount(p?.reason);\n resetState(commit, true);\n },\n updateUserAccounts({ state, commit }, update: IUpdate) {\n if (!update.userAccounts) return;\n\n console.log('updateUserAccounts');\n\n const userAccounts = mergeToModelEntities(\n UserAccount,\n update.isFullUpdate ? [] : state.userAccounts,\n update.userAccounts,\n { stringOrderField: 'accountName' },\n );\n\n this.commit('UPDATE_USER_ACCOUNTS', { userAccounts });\n },\n\n};\n\nconst getters = >{\n isLoggedIn(state: SessionState, localGetters: any, rootState: any) {\n return state.token !== null;\n },\n isRegistered(state, localGetters, rootState) {\n return rootState.settings.account.isRegistered === true;\n },\n isLoggedInAndRegistered(state: SessionState, localGetters: any, rootState: any) {\n return state.token !== null && rootState.settings.account.isRegistered === true;\n },\n token(state: SessionState, localGetters: any, rootState: any) {\n return state.token;\n },\n username(state: SessionState, localGetters: any, rootState: any) {\n return state.username;\n },\n userAccounts(state: SessionState, localGetters: any, rootState: any) {\n return state.userAccounts;\n },\n fcmToken(state: SessionState, localGetters: any, rootState: any) {\n return state.fcmToken;\n },\n};\n\nconst SessionStore = {\n namespaced: false,\n state: new SessionState(),\n mutations,\n actions,\n getters,\n};\n\nexport default SessionStore;\n","import { IUpdate } from '@/api/api-update';\n\nexport enum UpdateOriginator {\n None = 'none', // initial state\n\n Auto = 'auto', // update api call, auto updates\n Push = 'push', // update api call, push updates\n Normal = 'up', // update api call\n\n Other = 'xxx', // updates from other api call\n Reservation = 'res', // updates from reservation change api call\n DateAndTime = 'dt',\n DayNote = 'dn',\n SettingsSingle = 'sse',\n SettingsList = 'sle',\n SettingsTabItems = 'sti',\n SettingsFloorplan = 'sfp'\n}\n\nexport async function performUpdatesAction(\n dispatch: any,\n action: () => Promise,\n p?: { originator?: string},\n): Promise {\n let updates: IUpdate | undefined;\n const originator = p?.originator ?? UpdateOriginator.Other;\n dispatch('startProcessUpdates', { originator });\n try {\n updates = await action();\n dispatch('processUpdates', { updates, originator });\n } catch (e) {\n dispatch('processUpdatesError', { originator });\n throw e;\n }\n return updates;\n}\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport { IUpdate } from '@/api/api-update';\nimport httpClient from '@/api/http-client';\n\nimport {\n dateStringFromDate, dateFlooredToDate, dateByAddingDays, dateFromDateTimeString,\n isDateAfterDate, dateIndexFromDate, areDatesEqual, isDateBeforeDate,\n} from '@/services/time-utils';\nimport { UpdateOriginator } from '@/services/store-utils';\nimport IRootState, { ISetStoreState, IUpdateState } from './store-state';\n\nfunction isDateLoaded(state: IUpdateState, date: Date) {\n if (areDatesEqual(date, state.date) && state.isDateLoaded) return true;\n if (state.oldestReservationDate && isDateBeforeDate(date, state.oldestReservationDate)) return false;\n if (state.latestReservationDate && isDateAfterDate(date, state.latestReservationDate)) return false;\n if (areDatesEqual(date, state.date)) return state.isLoaded;\n return false;\n}\n\nexport class UpdateState implements IUpdateState {\n autoUpdateTimeInterval: number = 0;\n\n oldestReservationDate: Date | null = null;\n\n latestReservationDate: Date | null = null;\n\n date: Date = dateFlooredToDate(new Date());\n\n now: Date = new Date();\n\n dateIndex: number = dateIndexFromDate(this.date);\n\n updating: number = 0;\n\n isLoaded: boolean = false;\n\n isDateLoaded: boolean = false;\n\n updateError: Error | null = null;\n\n startUpdateDate: Date | null = null;\n\n updateDate: Date | null = null;\n\n updateErrorDate: Date | null = null;\n\n updateSuccessDate: Date | null = null;\n\n updateOriginator: string = UpdateOriginator.None;\n\n processing: number = 0;\n\n startProcessDate: Date | null = null;\n\n processDate: Date | null = null;\n\n processOriginator: string = UpdateOriginator.None;\n}\n\nconst mutations = >{\n RESET(state: UpdateState) {\n Object.assign(state, new UpdateState());\n },\n SET(state: UpdateState, p: { state: ISetStoreState }) {\n if (!p.state.update) return;\n console.log('SET update:', p.state.update);\n Object.assign(state, p.state.update);\n state.updateDate = null;\n },\n START_PROCESSING(state: UpdateState, p: { originator: string }) {\n state.processing += 1;\n state.startProcessDate = new Date();\n state.processOriginator = p.originator;\n },\n END_PROCESSING(state: UpdateState, p: {\n autoUpdateTimeInterval?: number, oldestReservationDate?: Date, latestReservationDate?: Date, originator: string\n }) {\n state.processing -= 1;\n state.processDate = new Date();\n state.processOriginator = p.originator;\n\n if (p.autoUpdateTimeInterval) state.autoUpdateTimeInterval = p.autoUpdateTimeInterval;\n if (p.oldestReservationDate !== undefined) {\n state.oldestReservationDate = dateFlooredToDate(dateByAddingDays(p.oldestReservationDate, 1));\n }\n if (p.latestReservationDate !== undefined) {\n state.latestReservationDate = dateFlooredToDate(dateByAddingDays(p.latestReservationDate, -1));\n }\n\n state.isDateLoaded = true;\n state.isLoaded = true;\n },\n CHANGE_DATE(state: UpdateState, date: Date) {\n state.date = dateFlooredToDate(date);\n state.dateIndex = dateIndexFromDate(state.date);\n state.isDateLoaded = false;\n },\n START_UPDATING(state: UpdateState, p: { originator: string}) {\n state.updating += 1;\n state.startUpdateDate = new Date();\n state.updateOriginator = p.originator;\n },\n END_UPDATING(state: UpdateState, p: { error?: Error, originator: string}) {\n state.updating -= 1;\n state.updateError = p.error ?? null;\n state.updateDate = new Date();\n if (p.error) state.updateErrorDate = state.updateDate;\n else state.updateSuccessDate = state.updateDate;\n state.updateOriginator = p.originator;\n },\n UPDATE_NOW(state: UpdateState) {\n state.now = new Date();\n console.log('UPDATE_NOW: ', state.now);\n },\n};\n\nconst actions = >{\n async update({\n state, commit, dispatch, rootGetters, rootState,\n }, p?: { date?: Date, originator?: string}) {\n if (!rootGetters.isLoggedIn/* ?? state.isUpdating */) return;\n\n const originator = p?.originator ?? UpdateOriginator.Normal;\n\n commit('START_PROCESSING', { originator });\n commit('START_UPDATING', { originator });\n try {\n let dateString: string | undefined;\n if (p?.date && !isDateLoaded(state, p.date)) dateString = dateStringFromDate(p.date) ?? undefined;\n\n const updates = await httpClient.getUpdates(dateString);\n dispatch('processUpdates', { updates, originator });\n\n commit('END_UPDATING', { originator });\n } catch (error) {\n commit('END_UPDATING', { error, originator });\n commit('END_PROCESSING', { originator });\n throw error;\n }\n },\n async changeToDate({ state, commit, dispatch }, date) {\n commit('CHANGE_DATE', date);\n if (!isDateLoaded(state, date)) await dispatch('update', { date }); else await dispatch('update');\n },\n async changeToNextDate({ state, commit, dispatch }) {\n await dispatch('changeToDate', dateByAddingDays(state.date, 1));\n },\n async changeToPreviousDate({ state, commit, dispatch }) {\n await dispatch('changeToDate', dateByAddingDays(state.date, -1));\n },\n startProcessUpdates({ state, commit, dispatch }, p: { originator?: string }) {\n const originator = p.originator ?? UpdateOriginator.Other;\n commit('START_PROCESSING', { originator });\n },\n processUpdatesError({ state, commit, dispatch }, p: { originator?: string }) {\n const originator = p.originator ?? UpdateOriginator.Other;\n commit('END_PROCESSING', { originator });\n },\n processUpdates({ state, commit, dispatch }, p: { updates: IUpdate, noroot?: boolean, originator?: string }) {\n console.log('processUpdates - is full updates:', p.updates.isFullUpdate);\n\n dispatch('updateAccount', p.updates);\n dispatch('updateUserAccounts', p.updates);\n dispatch('updateCodes', p.updates);\n dispatch('updateTabs', p.updates);\n dispatch('updateSettings', p.updates);\n dispatch('updateReservations', p.updates);\n\n // core entities are updated, refresh dependent entities\n dispatch('refresh', p.updates);\n\n if (p.noroot !== true) {\n const originator = p.originator ?? UpdateOriginator.Other;\n\n const autoUpdateTimeInterval = Number(p.updates.autoUpdateTimeInterval) || 0;\n\n const zeroOrIgnore = p.updates.isFullUpdate ? null : undefined;\n const oldestReservationDate = dateFromDateTimeString(p.updates.oldestReservationDate) ?? zeroOrIgnore;\n const latestReservationDate = dateFromDateTimeString(p.updates.latestReservationDate) ?? zeroOrIgnore;\n\n commit('END_PROCESSING', {\n autoUpdateTimeInterval, oldestReservationDate, latestReservationDate, originator,\n });\n }\n },\n refresh({ state, commit }, update: IUpdate) {\n console.log('update store refresh');\n },\n updateNow({ state, commit, dispatch }) {\n commit('UPDATE_NOW');\n return state.now;\n },\n};\n\nconst getters = >{\n selectedDate(state) { return state.date; },\n isUpdating(state) { return state.updating > 0; },\n isLoaded(state) { return state.isLoaded; },\n isDateLoaded(state) { return isDateLoaded(state, state.date); },\n now(state) { return state.now; },\n nowDate(state) { return dateFlooredToDate(state.now); },\n isToday(state, localGetters) { return areDatesEqual(state.date, localGetters.nowDate); },\n isTodayOrFuture(state, localGetters) { return !isDateBeforeDate(state.date, localGetters.nowDate); },\n isThisYear(state, localGetters) { return state.date.getFullYear() === localGetters.nowDate.getFullYear(); },\n};\n\nconst UpdateStore = {\n namespaced: false,\n state: new UpdateState(),\n mutations,\n actions,\n getters,\n};\n\nexport default UpdateStore;\n","import { dateFromDateAndTimeIndex } from '@/services/time-utils';\nimport DateAndTime from './DateAndTime';\nimport DayNote from './DayNote';\nimport Reservation, { ReservationStatus } from './Reservation';\n\nexport default class DateSlot {\n dateIndex: number;\n\n datesAndTimes: DateAndTime[] = [];\n\n reservations: Reservation[] = [];\n\n dayNotes: DayNote[] = [];\n\n confirmedCount: number = 0;\n\n nonConfirmedCount: number = 0;\n\n get date(): Date {\n return dateFromDateAndTimeIndex(this.dateIndex)!;\n }\n\n constructor(dateIndex: number) {\n this.dateIndex = dateIndex;\n }\n\n updateCounts() {\n this.confirmedCount = 0;\n this.nonConfirmedCount = 0;\n this.reservations.forEach((r) => {\n if ([ReservationStatus.Planned, ReservationStatus.Confirmed].includes(r.status)) this.confirmedCount += 1;\n if ([ReservationStatus.NonConfirmed].includes(r.status)) this.nonConfirmedCount += 1;\n });\n }\n}\n","/* eslint-disable no-param-reassign */\nimport Vue from 'vue';\nimport DateSlot from './DateSlot';\n\ninterface IWithDateTimeIndex { id: number; dateIndex: number; dateTimeIndex: number; isDeleted: boolean }\n\nfunction compare(o1: T, o2: T) {\n const diff = o1.dateTimeIndex - o2.dateTimeIndex;\n if (diff !== 0) return diff;\n return o1.id - o2.id;\n}\n\nfunction toSortedEntitiesByDateIndex(items: T[]): { [dateIndex: number]: T[] } {\n const map: { [dateIndex: number]: T[] } = {};\n items.forEach((o) => { map[o.dateIndex] = (map[o.dateIndex] ?? []).concat(o); });\n Object.values(map).forEach((os) => os.sort((o1, o2) => compare(o1, o2)));\n return map;\n}\n\nfunction mergeToMapById(entities: T[], map: { [id: number]: T }) {\n const newEntities: T[] = [];\n const deletedEntities: T[] = [];\n const modifiedEntities: T[] = [];\n\n entities.forEach((o) => {\n const old = map[o.id];\n if (!old) { // no old exist\n if (!o.isDeleted) { // new not marked as deleted -> add to map and new entities\n Vue.set(map, o.id, o);\n newEntities.push(o);\n } else { // new marked as deleted -> remove from map (but no old hence useless else branch)\n // Vue.delete(map, o.id);\n }\n } else if (old.dateTimeIndex !== o.dateTimeIndex) { // old exists but different times -> add old to deleted entities\n deletedEntities.push(old);\n if (!o.isDeleted) { // new not marked as deleted -> add new in map (replaces old) and in new entities\n Vue.set(map, o.id, o);\n newEntities.push(o);\n } else { // new marked as deleted -> remove old from map (new has different time and marked as deleted)\n Vue.delete(map, old.id);\n }\n } else if (old.dateTimeIndex === o.dateTimeIndex) { // old exists and has same time\n if (!o.isDeleted) { // not marked as deleted -> keep in map and add to modified entities\n Object.assign(old, o);\n modifiedEntities.push(o);\n } else { // old exists and has same time, marked as deleted -> remove from map and add to deleted entities\n Vue.delete(map, old.id);\n deletedEntities.push(old);\n }\n } else; // never happens\n });\n\n return { newEntities, deletedEntities, modifiedEntities };\n}\n\nfunction sortedIndex(entities: T[], entitity: T, startIndex: number): number {\n let low = startIndex;\n let high = entities.length;\n if (high === 0) return 0;\n\n while (low < high) {\n const mid = Math.floor((low + high) / 2);\n if (entities[mid].dateTimeIndex > entitity.dateTimeIndex) high = mid;\n else if (entities[mid].dateTimeIndex === entitity.dateTimeIndex && entities[mid].id >= entitity.id) high = mid;\n else low = mid + 1;\n }\n\n return high;\n}\n\nfunction mergeSortedEntities(entities: T[], newEntities: T[]) {\n let index = -1;\n newEntities.forEach((o) => {\n index = sortedIndex(entities, o, index + 1);\n entities.splice(index, 0, o);\n });\n}\n\nfunction deleteSortedEntities(entities: T[], deletedEntities: T[]) {\n let index = 0;\n deletedEntities.forEach((o) => {\n index = sortedIndex(entities, o, index);\n entities.splice(index, 1);\n });\n}\n\nfunction addDaySlotEntities(\n entities: T[],\n dateSlotField: keyof DateSlot,\n mapById: { [id: number]: T },\n dateSlotsByDateIndex: { [dateIndex: number]: any },\n p?: {},\n) {\n entities.forEach((o) => { Vue.set(mapById, o.id, o); });\n\n const indices = new Set();\n\n const mapNewByDateIndex = toSortedEntitiesByDateIndex(entities);\n Object.entries(mapNewByDateIndex).forEach(([di, nos]) => {\n indices.add(Number(di));\n\n let ds = dateSlotsByDateIndex[Number(di)];\n if (!ds) {\n ds = new DateSlot(Number(di));\n Vue.set(dateSlotsByDateIndex, Number(di), ds);\n }\n Vue.set(ds, dateSlotField, nos);\n });\n\n return indices;\n}\n\nfunction mergeDaySlotEntities(\n entities: T[],\n dateSlotField: keyof DateSlot,\n mapById: { [id: number]: T },\n dateSlotsByDateIndex: { [dateIndex: number]: any },\n p? : { noDeleted? : boolean },\n) {\n const { newEntities, deletedEntities, modifiedEntities } = mergeToMapById(entities, mapById);\n if (p?.noDeleted) console.assert(deletedEntities.length === 0, 'mergeEntities: entities.length !== 0');\n\n const indices = new Set();\n\n modifiedEntities.forEach((o) => indices.add(o.dateIndex));\n\n const mapDeletedByDateIndex = toSortedEntitiesByDateIndex(deletedEntities);\n Object.entries(mapDeletedByDateIndex).forEach(([di, dos]) => {\n indices.add(Number(di));\n\n const ds = dateSlotsByDateIndex[Number(di)];\n const os = ds[dateSlotField];\n console.assert(os.length !== 0, 'mapDeletedByDateIndex: entities.length === 0');\n if (os) deleteSortedEntities(os, dos);\n });\n\n const mapNewByDateIndex = toSortedEntitiesByDateIndex(newEntities);\n Object.entries(mapNewByDateIndex).forEach(([di, nos]) => {\n indices.add(Number(di));\n\n let ds = dateSlotsByDateIndex[Number(di)];\n if (!ds) {\n ds = new DateSlot(Number(di));\n Vue.set(dateSlotsByDateIndex, Number(di), ds);\n }\n const os = ds[dateSlotField];\n if (os.length !== 0) { mergeSortedEntities(os, nos); } else { ds[dateSlotField] = nos; }\n });\n\n return indices;\n}\n\n// eslint-disable-next-line import/prefer-default-export\nexport function updateDaySlotEntities(\n entities: T[],\n dateSlotField: keyof DateSlot,\n mapById: { [id: number]: T },\n dateSlotsByDateIndex: { [dateIndex: number]: any },\n p: { isFullUpdate?: boolean, noDeleted?: boolean},\n) {\n if (p.isFullUpdate) return addDaySlotEntities(entities, dateSlotField, mapById, dateSlotsByDateIndex, p);\n return mergeDaySlotEntities(entities, dateSlotField, mapById, dateSlotsByDateIndex, p);\n}\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport { IUpdate } from '@/api/api-update';\nimport httpClient from '@/api/http-client';\n\nimport Reservation, { ReservationMapping, ReservationStatus } from '@/model/Reservation';\nimport Employee from '@/model/Employee';\nimport DayNote from '@/model/DayNote';\n\nimport {\n setDateHoursMinutes, hourMinFromTimeText, isDateAfterDate,\n} from '@/services/time-utils';\nimport { toMapByField } from '@/model/model-utils';\n\nimport DateAndTime from '@/model/DateAndTime';\nimport TimeSlot from '@/model/TimeSlot';\nimport { InvalidStatusesForToday, InvalidStatuses } from '@/util/status';\nimport { updateDaySlotEntities } from '@/model/date-slot-utils';\nimport DateSlot from '@/model/DateSlot';\nimport { DEFAULT_SPLIT_LUNCH_DINNER_TIME } from '@/services/configuration';\nimport { searchUpdateReservations } from '@/services/search';\nimport {\n overbookedReservationsAndTabItemsForReservationId,\n toReservationsDuringSlot, toReservationsByTabItemAndSlot,\n} from '@/services/reservation-validation';\nimport OpeningHour from '@/model/OpeningHour';\nimport { timeSlotsFromHours } from '@/services/timestlot-utils';\nimport { performUpdatesAction, UpdateOriginator } from '@/services/store-utils';\nimport IRootState, { IReservationsState, ISetStoreState } from './store-state';\n\nexport class ReservationsState implements IReservationsState {\n dateSlotsByDateIndex: { [dateIndex: number]: DateSlot } = {};\n\n reservationsById: { [id: number]: Reservation } = {};\n\n dayNotesById: { [id: number]: DayNote } = {};\n\n datesAndTimesById: { [id: number]: DateAndTime } = {};\n}\n\nconst mutations = >{\n RESET(state: ReservationsState) {\n Object.assign(state, new ReservationsState());\n },\n SET(state: ReservationsState, p: { state: ISetStoreState }) {\n if (!p.state.reservations) return;\n console.log('SET reservations:', p.state.reservations);\n searchUpdateReservations(Object.values(p.state.reservations.reservationsById), state.reservationsById);\n Object.assign(state, p.state.reservations);\n },\n RESET_RESERVATIONS(state: ReservationsState) {\n Object.assign(state, new ReservationsState());\n },\n UPDATE_DAYNOTES(state: ReservationsState, p: { dayNotes: DayNote[], isFullUpdate: false }) {\n updateDaySlotEntities(p.dayNotes, 'dayNotes', state.dayNotesById, state.dateSlotsByDateIndex, p);\n console.log('dayNotes: ', state.dayNotesById);\n },\n UPDATE_DATESANDTIMES(state: ReservationsState, p: { datesAndTimes: DateAndTime[], isFullUpdate: false }) {\n updateDaySlotEntities(\n p.datesAndTimes,\n 'datesAndTimes',\n state.datesAndTimesById,\n state.dateSlotsByDateIndex,\n p,\n );\n console.log('datesAndTimes:', state.datesAndTimesById);\n },\n UPDATE_RESERVATIONS(state: ReservationsState, p: { reservations: Reservation[], isFullUpdate: false }) {\n searchUpdateReservations(p.reservations, state.reservationsById);\n\n const indices = updateDaySlotEntities(\n p.reservations,\n 'reservations',\n state.reservationsById,\n state.dateSlotsByDateIndex,\n p,\n );\n indices.forEach((di) => state.dateSlotsByDateIndex[di].updateCounts());\n console.log('reservations:', state.reservationsById);\n },\n REFRESH_RESERVATIONS(state: ReservationsState, p: { mapping: ReservationMapping }) {\n Object.values(state.reservationsById).forEach((r) => r.refresh(p.mapping));\n console.log('reservations refreshed:', state.reservationsById);\n },\n};\n\nconst actions = >{\n resetReservations({\n state, rootGetters, commit, dispatch,\n }, update: IUpdate) {\n commit('RESET_RESERVATIONS');\n },\n updateReservations({\n state, rootState, rootGetters, commit, dispatch,\n }, update: IUpdate) {\n // detect full update\n const { isFullUpdate } = update;\n if (isFullUpdate) commit('RESET_RESERVATIONS');\n\n // datesAndTimes\n if (update.datesAndTimes && update.datesAndTimes.length > 0) {\n console.log('updateDatesAndTimes');\n const datesAndTimes = (update.datesAndTimes ?? []).map((o) => new DateAndTime(o));\n commit('UPDATE_DATESANDTIMES', { datesAndTimes, isFullUpdate });\n }\n\n // dayNotes\n if (update.dayNotes && update.dayNotes.length > 0) {\n console.log('updateDayNotes');\n const dayNotes = update.dayNotes.map((o) => new DayNote(o));\n commit('UPDATE_DAYNOTES', { dayNotes, isFullUpdate });\n }\n\n // reservations\n if (update.reservations && update.reservations.length > 0) {\n console.log('updateReservations:', update.reservations);\n\n const reservations = update.reservations.map((o) => new Reservation(o, rootGetters as ReservationMapping));\n\n // add to search index first\n // searchUpdateReservations(reservations, state.reservationsById);\n\n commit('UPDATE_RESERVATIONS', { reservations, isFullUpdate });\n\n // update edited reservation\n dispatch('updateReservation');\n\n // update based on changed reservation dates\n const dateIndices = new Set();\n reservations.forEach((r) => dateIndices.add(r.dateIndex));\n if (rootState.reports?.isLoaded) {\n dispatch('updateReservationDates', Array.from(dateIndices.values()));\n }\n }\n },\n refresh({ state, commit, rootGetters }, update: IUpdate) {\n console.log('reservations store refresh');\n\n if (update.isFullUpdate) return;\n\n if (\n !update.tabs\n && !update.services\n && !update.employees\n && !update.labels) return;\n\n const mapping = rootGetters as ReservationMapping;\n commit('REFRESH_RESERVATIONS', { mapping });\n },\n\n async sendReservation(\n { state, commit, dispatch },\n p: { reservation: Reservation, employee?: Employee, forgetTabItems?: boolean, relocate?: boolean },\n ) {\n const dr = p.reservation.toDto();\n dr.employeeId = p.employee && p.employee.id;\n dr.employeeName = p.employee && p.employee.name;\n dr.forgetTabItems = p.forgetTabItems;\n\n if (p.relocate) dr.reservedTabItems = undefined;\n\n console.log('sendReservation: ', dr);\n\n await performUpdatesAction(\n dispatch,\n () => httpClient.sendReservation(dr),\n\n { originator: UpdateOriginator.Reservation },\n );\n },\n async sendDateAndTime({ state, commit, dispatch }, p: { entity: DateAndTime, delete: boolean }) {\n const dto = p.entity.toDto();\n if (p.delete) dto.isDeleted = true;\n await performUpdatesAction(\n dispatch,\n () => httpClient.sendDateAndTime(dto),\n\n { originator: UpdateOriginator.DateAndTime },\n );\n },\n async sendDayNote({ state, commit, dispatch }, p: { entity: DayNote }) {\n console.log('sendDayNote: ', p);\n const dto = p.entity.toDto();\n console.log('sendDayNote: ', dto);\n await performUpdatesAction(\n dispatch,\n () => httpClient.sendDayNote(dto),\n\n { originator: UpdateOriginator.DayNote },\n );\n },\n};\n\nconst getters = >{\n dateSlot(state, localGetters, rootState, rootGetters) {\n const { dateIndex } = rootState.update;\n const dateSlot = state.dateSlotsByDateIndex[dateIndex] ?? new DateSlot(dateIndex);\n console.log('dateSlot: ', dateSlot);\n return dateSlot;\n },\n datesAndTimes(state, localGetters, rootState, rootGetters) {\n return Object.values(state.datesAndTimesById);\n },\n datesAndTimesById(state, localGetters, rootState, rootGetters): Map {\n const map = new Map();\n Object.values(state.datesAndTimesById).forEach((dt) => map.set(dt.dateTimeIndex, dt));\n return map;\n },\n unreadReservationsByDate(state, localGetters, rootState, rootGetters) {\n const map = new Map();\n const sortedDateSlots = Object.values(state.dateSlotsByDateIndex).sort((a, b) => a.dateIndex - b.dateIndex);\n sortedDateSlots.forEach((ds) => {\n const reservations = ds.reservations.filter((o) => o.isUnread === true);\n if (reservations.length === 0) return;\n map.set(ds.date, reservations);\n });\n console.log('unread reservations: ', map);\n return map;\n },\n unreadReservationsCount(state, localGetters, rootState, rootGetters) {\n const unreadMap: Map = localGetters.unreadReservationsByDate;\n let count = 0;\n unreadMap.forEach((rs) => { count += rs.length; });\n return count;\n },\n dayDayNotes(state, localGetters, rootState, rootGetters) {\n const dayNotes = localGetters.dateSlot.dayNotes.filter((o: DayNote) => o.text) as DayNote[];\n const sortedDayNotes = dayNotes.sort((o1, o2) => o1.order - o2.order);\n console.log('day day notes: ', sortedDayNotes);\n return sortedDayNotes;\n },\n // all day reservations\n dayReservations(state, localGetters, rootState, rootGetters) {\n const { reservations } = localGetters.dateSlot;\n console.log('day reservations: ', reservations);\n return reservations;\n },\n // day no invalid reservations + blocks (tables view)\n dayValidReservationsAndBlocks(state, localGetters, rootState, rootGetters) {\n const predicate = (r: Reservation) => !InvalidStatuses.includes(r.status);\n return localGetters.dayReservations.filter(predicate);\n },\n // day reservations no blocks (guests view)\n dayReservationsNoBlocks(state, localGetters, rootState, rootGetters) {\n const predicate = (r: Reservation) => !r.isBlock;\n return localGetters.dayReservations.filter(predicate);\n },\n // day no invalid reservations no blocks (reservation validation)\n dayValidReservationsNoBlocks(state, localGetters, rootState, rootGetters) {\n const predicate = (r: Reservation) => !InvalidStatuses.includes(r.status) && !r.isBlock;\n return localGetters.dayReservations.filter(predicate);\n },\n isDayReservationNoBlock(state, localGetters) {\n const predicate = (r: Reservation) => !r.isBlock;\n return localGetters.dayReservations.some(predicate);\n },\n // day no invalid reservations for today no blocks (guests view)\n isDayValidForTodayReservationNoBlock(state, localGetters, rootState, rootGetters) {\n const invalidStatuses = rootGetters.isToday ? InvalidStatusesForToday : InvalidStatuses;\n const predicate = (r: Reservation) => !invalidStatuses.includes(r.status) && !r.isBlock;\n return localGetters.dayReservations.some(predicate);\n },\n // waiting list order\n orderForWaitingReservation(state, localGetters, rootState, rootGetters): Map {\n const predicate = (r: Reservation) => r.status === ReservationStatus.WaitingList;\n const waitingReservations = (localGetters.dayReservationsNoBlocks as Reservation[]).filter(predicate);\n const sortedWaitingReservations = waitingReservations.sort(\n (r1, r2) => {\n const diff = (r1.dateCreated?.getTime() ?? r1.id) - (r2.dateCreated?.getTime() ?? r2.id);\n return diff !== 0 ? diff : r1.id - r2.id;\n },\n );\n\n const map = new Map();\n sortedWaitingReservations.forEach((r, i) => { map.set(r.id, i + 1); });\n return map;\n },\n // availability\n dayTimeSlots(state, localGetters, rootState, rootGetters) {\n return timeSlotsFromHours(\n rootState.update.date,\n rootGetters.openingHoursInWeekdaysByTimeIndex,\n localGetters.datesAndTimesById,\n );\n },\n dayTimeSlotsBySlot(state, localGetters, rootState, rootGetters) {\n return toMapByField(localGetters.dayTimeSlots, 'slot');\n },\n isDayOpen(state, localGetters, rootState, rootGetters) {\n return localGetters.dayTimeSlots.some((o: TimeSlot) => o.isOpen);\n },\n // day stats\n dayStats(state, localGetters, rootState, rootGetters): {\n reservations: number, tables: number, guests: number, lunch: number, dinner: number\n } {\n const splitTime = rootState.settings.accountSettings.splitLunchDinnerTime ?? DEFAULT_SPLIT_LUNCH_DINNER_TIME;\n const hm = hourMinFromTimeText(splitTime) ?? hourMinFromTimeText(DEFAULT_SPLIT_LUNCH_DINNER_TIME)!;\n const splitDate = setDateHoursMinutes(rootState.update.date, hm.h, hm.m);\n\n const reservations: Reservation[] = rootGetters.filteredReservationsNoBlocks ?? [];\n\n const tables = new Set();\n let guests = 0;\n let lunch = 0;\n let dinner = 0;\n\n reservations.forEach((r) => {\n r.tabItems.forEach((t) => { tables.add(t.id); });\n guests += r.partySize;\n if (!isDateAfterDate(r.dateBegin, splitDate)) { lunch += r.partySize; } else dinner += r.partySize;\n });\n\n return {\n reservations: reservations.length,\n tables: tables.size,\n guests,\n lunch,\n dinner,\n };\n },\n // overbooking\n dayOverbookedReservationsAndTabItemsForReservationId(state, localGetters)\n : {\n overbookedReservationsForReservationId: Map>;\n overbookedTabItemsForReservationId: Map>;\n } {\n return overbookedReservationsAndTabItemsForReservationId(localGetters.dayValidReservationsAndBlocks);\n },\n dayOverbookedTabItemsForReservationId(state, localGetters): Map> {\n return localGetters.dayOverbookedReservationsAndTabItemsForReservationId.overbookedTabItemsForReservationId;\n },\n dayOverbookedReservationsForReservationId(state, localGetters): Map> {\n return localGetters.dayOverbookedReservationsAndTabItemsForReservationId.overbookedReservationsForReservationId;\n },\n dayOverbookedFlagsForReservationId(state, localGetters): Map {\n const ormap = localGetters.dayOverbookedReservationsForReservationId as Map>;\n const ofmap = new Map();\n\n ormap.forEach((orset, orid) => {\n const overbooked = (Array.from(orset) ?? []).some((rid) => rid < orid);\n if (overbooked) ofmap.set(orid, true);\n });\n\n return ofmap;\n },\n dayValidReservationsAndBlocksDuringSlot(state, localGetters, rootState, rootGetters): Map {\n return toReservationsDuringSlot(rootGetters.dayValidReservationsAndBlocks);\n },\n dayValidReservationsAndBlocksByTabItemAndSlot(state, localGetters, rootState, rootGetters)\n : Map {\n return toReservationsByTabItemAndSlot(rootGetters.dayValidReservationsAndBlocks);\n },\n // date slot stats\n openWeekdays(state, localGetters, rootState, rootGetters): boolean[] {\n const days = rootGetters.openingHoursInWeekdaysByTime as Set>[];\n return days.map((set) => set.size !== 0);\n },\n openDatesByDateIndex(state, localGetters, rootState, rootGetters): Map {\n const map = new Map();\n Object.values(state.dateSlotsByDateIndex).forEach((ds) => {\n if (ds.datesAndTimes.length === 0) return;\n if (ds.datesAndTimes.some((dt) => dt.isOpen === true)) { map.set(ds.dateIndex, true); }\n });\n\n return map;\n },\n};\n\nconst ReservationsStore = {\n namespaced: false,\n state: new ReservationsState(),\n mutations,\n actions,\n getters,\n};\n\nexport default ReservationsStore;\n","import { ILocale } from '@/api/api-update';\nimport i18n from '@/plugins/i18n';\n\nexport default class Locale {\n id: number;\n\n locale: string;\n\n language: string;\n\n constructor(o: ILocale) {\n this.id = new TextEncoder().encode(o.locale).reduce((sum, val, i) => sum + val * i * 256);\n this.locale = o.locale ?? '';\n this.language = i18n.t(`code.locale.${this.locale}`) as string;\n }\n\n get value() { return this.locale; }\n\n get text() { return this.language; }\n}\n","import { ITimeZone } from '@/api/api-update';\n\nexport default class TimeZone {\n id: number;\n\n name: string;\n\n countryCode: string;\n\n constructor(o: ITimeZone) {\n this.id = o.timeZoneId ?? 0;\n this.countryCode = o.countryCode ?? '';\n this.name = o.timeZoneName ?? '';\n }\n\n get value() { return this.id; }\n\n get text() { return this.name; }\n}\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport { IUpdate } from '@/api/api-update';\nimport Country, { countries } from '@/model/Country';\nimport Locale from '@/model/Locale';\nimport TimeZone from '@/model/TimeZone';\nimport { toModelEntities, toMapByField } from '@/model/model-utils';\nimport { strcmp } from '@/services/common';\nimport IRootState, { ICodesState, ISetStoreState } from './store-state';\n\nexport class CodesState implements ICodesState {\n locales: Locale[] = [];\n\n timezones: TimeZone[] = [];\n\n countries: Country[] = countries;\n}\n\nconst mutations = >{\n RESET(state: CodesState) {\n Object.assign(state, new CodesState());\n },\n SET(state: CodesState, p: { state: ISetStoreState }) {\n if (!p.state.codes) return;\n console.log('SET codes:', p.state.codes);\n Object.assign(state, p.state.codes);\n },\n UPDATE_CODES(state: CodesState, p: { locales: Locale[], timezones: TimeZone[] }) {\n state.locales = p.locales;\n state.timezones = p.timezones;\n },\n};\n\nconst actions = >{\n updateCodes({ commit }, update: IUpdate) {\n if (!update.locales && !update.timeZones) return;\n if (!update.isFullUpdate) throw Error('updateCodes: not full update');\n\n console.log('updateCodes');\n\n const p = {\n locales: toModelEntities(Locale, update.locales, { stringOrderField: 'locale' }),\n timezones: toModelEntities(TimeZone, update.timeZones, { stringOrderField: 'name' }),\n };\n\n commit('UPDATE_CODES', p);\n },\n};\n\nconst getters = >{\n localesByLocale(state) { return toMapByField(state.locales, 'locale'); },\n countryByCode(state) { return toMapByField(state.countries, 'code'); },\n sortedLocales(state) { return state.locales.sort((o1, o2) => strcmp(o1.text, o2.text)); },\n sortedCountries(state) { return state.countries.sort((o1, o2) => strcmp(o1.text, o2.text)); },\n sortedTimezones(state) { return state.timezones.sort((o1, o2) => strcmp(o1.text, o2.text)); },\n};\n\nconst CodesStore = {\n namespaced: false,\n state: new CodesState(),\n mutations,\n actions,\n getters,\n};\n\nexport default CodesStore;\n","import Tab from '@/model/Tab';\n\nexport interface IDTOFloorplan {\n account: {\n token: string,\n accountName: string,\n },\n tabs: {\n tabId: number,\n tabName: string,\n usingWeekdaysAndTimes?: boolean,\n tabDuration?: number,\n tabDurationMinimum?: number,\n tabItems: {\n itemId: number,\n itemNo: string,\n seats: number,\n shape?: string,\n posX?: number,\n posY?: number,\n rotation?: number,\n }[],\n }[],\n}\n\nexport function toFloorplanDTO(token: string, accountName: string, tabs: Tab[]): IDTOFloorplan {\n return {\n account: { token, accountName },\n tabs: tabs.map((t: Tab) => ({\n tabId: t.id,\n tabName: t.name,\n usingWeekdaysAndTimes: t.usingWeekdaysAndTimes,\n tabDuration: t.duration,\n tabDurationMinimum: t.minDuration,\n tabItems: t.tabItems.map((ti) => ({\n itemId: ti.id,\n itemNo: ti.no,\n seats: ti.seats,\n shape: ti.shape,\n posX: ti.posX,\n posY: ti.posY,\n rotation: ti.rotation,\n })),\n })),\n };\n}\n","/* eslint-disable import/no-cycle */\nimport {\n GetterTree, MutationTree, ActionTree, Dispatch,\n} from 'vuex';\nimport httpClient from '@/api/http-client';\nimport { IUpdate } from '@/api/api-update';\nimport Account, { BillingInfo, BillingInfoSMSStatus, BillingInfoSubscriptionStatus } from '@/model/Account';\nimport AccountSettings from '@/model/AccountSettings';\nimport Tab from '@/model/Tab';\nimport TabItem from '@/model/TabItem';\nimport Employee from '@/model/Employee';\nimport TagNote from '@/model/TagNote';\nimport Label from '@/model/Label';\nimport Service from '@/model/Service';\nimport User from '@/model/User';\nimport OpeningHour from '@/model/OpeningHour';\nimport DurationRule from '@/model/DurationRule';\nimport {\n mergeToModelEntities, toSaveModelItems, IApi, ISingleModel, IListModel,\n toMapById, toMapByFieldFirst, cloneModel,\n} from '@/model/model-utils';\nimport storage from '@/services/local-storage';\nimport { toFloorplanDTO } from '@/api/api-floorplan';\nimport AppStoreApp from '@/model/AppStoreApp';\nimport { activeApps, installApps } from '@/util/apps';\nimport GstplnApp, { GstplnAppCategory } from '@/components/apps/app';\nimport { isPaymentWarningBarInfo, isSMSWarningBarInfo, isSubWarningBarInfo } from '@/services/billing-utils';\nimport { hostedWidgetURL } from '@/services/configuration';\nimport { performUpdatesAction, UpdateOriginator } from '@/services/store-utils';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport IRootState, { ISetStoreState, ISettingsState } from './store-state';\n\nexport class SettingsState implements ISettingsState {\n account: Account = storage.getAccount() ?? new Account();\n\n accountSettings: AccountSettings = storage.getAccountSetting() ?? new AccountSettings();\n\n tabs: Tab[] = [];\n\n users: User[] = [];\n\n employees: Employee[] = [];\n\n tagNotes: TagNote[] = [];\n\n labels: Label[] = [];\n\n services: Service[] = [];\n\n openingHours: OpeningHour[] = [];\n\n durationRules: DurationRule[] = [];\n\n apps: AppStoreApp[] = [];\n\n gstplnApps: GstplnApp[] = [];\n}\n\nconst mutations = >{\n RESET(state: SettingsState) {\n Object.assign(state, new SettingsState());\n },\n SET(state: SettingsState, p: { state: ISetStoreState}) {\n if (!p.state.settings) return;\n console.log('SET settings:', p.state.settings);\n Object.assign(state, p.state.settings);\n },\n UPDATE_TABS(state: SettingsState, p: { tabs: Tab[] }) {\n state.tabs = p.tabs;\n console.log('tabs:', state.tabs);\n },\n UPDATE_ACCOUNT(state: SettingsState, p: { account: Account }) {\n state.account = p.account;\n console.log('account:', state.account);\n },\n UPDATE_SETTINGS(state: SettingsState, p: {\n accountSettings?: AccountSettings,\n users?: User[],\n employees?: Employee[],\n tagNotes?: TagNote[],\n labels?: Label[],\n services?: Service[],\n openingHours?: OpeningHour[],\n durationRules?: DurationRule[],\n apps?: AppStoreApp[],\n }) {\n if (p.accountSettings) state.accountSettings = p.accountSettings;\n if (p.users) state.users = p.users;\n if (p.employees) state.employees = p.employees;\n if (p.tagNotes) state.tagNotes = p.tagNotes;\n if (p.labels) state.labels = p.labels;\n if (p.services) state.services = p.services;\n if (p.openingHours) state.openingHours = p.openingHours;\n if (p.durationRules) state.durationRules = p.durationRules;\n if (p.apps) {\n state.apps = p.apps;\n state.gstplnApps = activeApps(p.apps);\n }\n\n console.log('accountSettings: ', state.accountSettings);\n console.log('users: ', state.users);\n console.log('employees: ', state.employees);\n console.log('tagNotes: ', state.tagNotes);\n console.log('labels: ', state.labels);\n console.log('services: ', state.services);\n console.log('openingHours: ', state.openingHours);\n console.log('durationRules: ', state.durationRules);\n console.log('apps: ', state.apps);\n },\n};\n\nasync function sendSingleEntity>(\n dispatch: Dispatch,\n entity: M,\n sendEntity: (dto: IApi) => Promise,\n isDeleted?: boolean,\n) {\n const dto = entity.toDto();\n if (isDeleted) dto.isDeleted = true;\n await performUpdatesAction(dispatch, () => sendEntity(dto), { originator: UpdateOriginator.SettingsSingle });\n}\n\nasync function sendListEntities>(\n dispatch: Dispatch,\n entities: M[],\n oldEntities: M[],\n sendEntities: (dtos: IApi[]) => Promise,\n) {\n const dtos = toSaveModelItems(entities, oldEntities);\n await performUpdatesAction(dispatch, () => sendEntities(dtos), { originator: UpdateOriginator.SettingsList });\n}\n\nconst actions = >{\n updateAccount({ commit }, update: IUpdate) {\n if (!update.account) return;\n\n console.log('updateAccount');\n\n const account = new Account(update.account);\n storage.setAccount(account ?? null);\n this.commit('UPDATE_ACCOUNT', { account });\n },\n updateTabs({ state, commit }, update: IUpdate) {\n if (!update.tabs) return;\n\n console.log('updateTabs');\n\n const oldTabs = update.isFullUpdate ? [] : state.tabs;\n const tabs = mergeToModelEntities(Tab, oldTabs, update.tabs);\n this.commit('UPDATE_TABS', { tabs });\n },\n updateSettings({ state, commit }, update: IUpdate) {\n if (true\n && !update.accountSettings\n && !update.accountUsers\n && !update.employees\n && !update.tagNotes\n && !update.labels\n && !update.services\n && !update.openingHours\n && !update.durationRules\n && !update.apps\n ) return;\n\n console.log('updateSettings');\n\n const ifu = update.isFullUpdate;\n\n const accountSettings = update.accountSettings && update.accountSettings[0]\n ? new AccountSettings(update.accountSettings[0]) : undefined;\n\n const users = mergeToModelEntities(User, ifu ? [] : state.users, update.accountUsers, { stringOrderField: 'name' });\n const employees = mergeToModelEntities(Employee, ifu ? [] : state.employees, update.employees);\n const tagNotes = mergeToModelEntities(TagNote, ifu ? [] : state.tagNotes, update.tagNotes);\n const labels = mergeToModelEntities(Label, ifu ? [] : state.labels, update.labels);\n const services = mergeToModelEntities(Service, ifu ? [] : state.services, update.services);\n const openingHours = mergeToModelEntities(OpeningHour, ifu ? [] : state.openingHours, update.openingHours);\n const durationRules = mergeToModelEntities(DurationRule, ifu ? [] : state.durationRules, update.durationRules);\n const apps = mergeToModelEntities(AppStoreApp, ifu ? [] : state.apps, update.apps);\n\n installApps(apps);\n\n storage.setAccountSetting(accountSettings ?? null);\n\n this.commit('UPDATE_SETTINGS', {\n accountSettings, users, employees, tagNotes, labels, services, openingHours, durationRules, apps,\n });\n },\n async sendAccount({ state, commit, dispatch }, p: { entity: Account }) {\n return sendSingleEntity(dispatch, p.entity, httpClient.sendAccount.bind(httpClient));\n },\n async sendUser({ state, commit, dispatch }, p: { entity: User, delete: boolean }) {\n return sendSingleEntity(dispatch, p.entity, httpClient.sendUser.bind(httpClient), p.delete);\n },\n async sendDurationRule({ state, commit, dispatch }, p: { entity: DurationRule, delete: boolean }) {\n return sendSingleEntity(dispatch, p.entity, httpClient.sendDurationRule.bind(httpClient), p.delete);\n },\n async sendAccountSettings({ state, commit, dispatch }, p: { entity: AccountSettings }) {\n return sendSingleEntity(dispatch, p.entity, httpClient.sendAccountSettings.bind(httpClient));\n },\n async sendTabs({ state, commit, dispatch }, p: { entities: Tab[] }) {\n return sendListEntities(dispatch, p.entities, state.tabs, httpClient.sendTabs.bind(httpClient));\n },\n async sendTabItems({ dispatch, getters }, p: { entities: TabItem[], tabId: number }) {\n const oldEntities = getters.tabsById.get(p.tabId).tabItems;\n const dtos = toSaveModelItems(p.entities, oldEntities);\n await performUpdatesAction(\n dispatch,\n () => httpClient.sendTabItems(p.tabId, dtos),\n\n { originator: UpdateOriginator.SettingsTabItems },\n );\n },\n async sendFloorplanTabItems({ dispatch, rootGetters, state }, p: { entities: TabItem[], tabId: number }) {\n const token = (rootGetters.token ?? '') as string;\n const accountName = state.account.accountName ?? '';\n const tabs = this.state.settings.tabs.map((t) => {\n if (t.id !== p.tabId) return t;\n const nt = cloneModel(t);\n nt.tabItems = p.entities;\n return nt;\n });\n\n const floorplan = toFloorplanDTO(token, accountName, tabs);\n await performUpdatesAction(\n dispatch,\n () => httpClient.sendFloorplan(floorplan),\n\n { originator: UpdateOriginator.SettingsFloorplan },\n );\n },\n async sendEmployees({ state, commit, dispatch }, p: { entities: Employee[] }) {\n return sendListEntities(dispatch, p.entities, state.employees, httpClient.sendEmployees.bind(httpClient));\n },\n async sendTagNotes({ state, commit, dispatch }, p: { entities: TagNote[] }) {\n return sendListEntities(dispatch, p.entities, state.tagNotes, httpClient.sendTagNotes.bind(httpClient));\n },\n async sendLabels({ state, commit, dispatch }, p: { entities: Label[] }) {\n return sendListEntities(dispatch, p.entities, state.labels, httpClient.sendLabels.bind(httpClient));\n },\n async sendServices({ state, commit, dispatch }, p: { entities: Service[] }) {\n return sendListEntities(dispatch, p.entities, state.services, httpClient.sendServices.bind(httpClient));\n },\n async sendOpeningHours({ state, commit, dispatch }, p: { entities: OpeningHour[] }) {\n return sendListEntities(dispatch, p.entities, state.openingHours, httpClient.sendOpeningHours.bind(httpClient));\n },\n\n async changePassword({ state, commit, dispatch }, p: { username: string, password: string, newPassword: string }) {\n const updates = await httpClient.changePassword(p.username, p.password, p.newPassword);\n dispatch('processUpdates', { updates, noroot: true });\n },\n async resetPassword({ state, commit, dispatch }, p: { username: string }) {\n const updates = await httpClient.resetPassword(p.username);\n dispatch('processUpdates', { updates, noroot: true });\n },\n async updateApp({ state, dispatch, getters }, p: { gstplnAppId: string, install: boolean, params?: string }) {\n const gstplnApps = getters.gstplnApps as GstplnApp[];\n\n const gapp = gstplnApps.find((o: GstplnApp) => o.id === p.gstplnAppId);\n if (gapp === undefined) throw Error(`Guestplan App ${p.gstplnAppId} not found`);\n\n const app = state.apps.find((o) => o.name === gapp.id);\n if (app === undefined) throw Error(`App with name ${p.gstplnAppId} not found`);\n\n const uapp = await grpcClient.updateApp(app.id, p.install, p.params);\n await dispatch('update');\n\n return uapp;\n },\n async getApp({ state, dispatch, getters }, p: { gstplnAppId: string, install: boolean }) {\n const gstplnApps = getters.gstplnApps as GstplnApp[];\n\n const gapp = gstplnApps.find((o: GstplnApp) => o.id === p.gstplnAppId);\n if (gapp === undefined) throw Error(`Guestplan App ${p.gstplnAppId} not found`);\n\n const app = state.apps.find((o) => o.name === gapp.id);\n if (app === undefined) throw Error(`App with name ${p.gstplnAppId} not found`);\n\n return grpcClient.getApp(app.id);\n },\n};\n\nconst getters = >{\n tabsById(state) { return toMapById(state.tabs); },\n tabItemsById(state) { return toMapById(state.tabs.flatMap((o) => o.tabItems)); },\n servicesById(state) { return toMapById(state.services); },\n employeesById(state) { return toMapById(state.employees); },\n labelsByText(state) { return toMapByFieldFirst(state.labels, 'text'); },\n openingHoursInWeekdaysByTimeIndex(state, localGetters, rootState, rootGetters): Map[] {\n const days = [...new Array(8)].map(() => new Map());\n state.openingHours.forEach((o) => days[o.weekdayNumber].set(o.timeIndex, o));\n return days;\n },\n maxOnlineCapacity(state, localGetters, rootState, rootGetters): number {\n return state.tabs.map((o) => (o.usingWeekdaysAndTimes ? o.capacity ?? 0 : 0)).reduce((a, b) => a + b, 0);\n },\n employeeNameIsNeeded(state, localGetters): boolean {\n const user = localGetters.activeUser as User | undefined;\n if (user?.sharedUser !== true) return false;\n return state.accountSettings.employeeNameIsNeeded ?? false;\n },\n timeZoneId(state): number | undefined {\n return state.account.timeZoneId;\n },\n activeUser(state): User | undefined {\n const user = state.users.find((o) => o.id === state.account.userId);\n console.log('activeUser: ', user);\n return user;\n },\n billingInfo(state): BillingInfo {\n console.log('billingInfo: ', state.account.proSubscriptionExpirationDate);\n return {\n subStatus: state.account.proStatus ?? BillingInfoSubscriptionStatus.None,\n data: state.account.proData,\n trialExpDate: state.account.proTrialExpirationDate,\n subExpDate: state.account.proSubscriptionExpirationDate,\n smsStatus: state.account.smsStatus ?? BillingInfoSMSStatus.None,\n smsBalance: state.account.smsBalance ?? 0,\n };\n },\n isBillingAllowed(state, localGetters): boolean {\n const user = localGetters.activeUser as User | undefined;\n return user?.allowBilling === true;\n },\n isReservationsAllowed(state, localGetters): boolean {\n const user = localGetters.activeUser as User | undefined;\n return user?.allowReservations === true;\n },\n isSettingsAllowed(state, localGetters): boolean {\n const user = localGetters.activeUser as User | undefined;\n return user?.allowSettings === true;\n },\n isBillingAppAccess(state, localGetters): boolean {\n const billingInfo = localGetters.billingInfo as BillingInfo;\n return billingInfo.subStatus !== BillingInfoSubscriptionStatus.None;\n },\n isBillingLanding(state, localGetters, rootState, rootGetters): boolean {\n const isLoaded = rootGetters.isLoaded as boolean;\n const appHasBilling = process.env.VUE_APP_HAS_BILLING === 'true';\n const billingInfo = localGetters.billingInfo as BillingInfo;\n return isLoaded && appHasBilling && [\n BillingInfoSubscriptionStatus.None,\n BillingInfoSubscriptionStatus.TrialExpired,\n BillingInfoSubscriptionStatus.SubExpired,\n BillingInfoSubscriptionStatus.SubExpiredPayment,\n ].includes(billingInfo.subStatus);\n },\n isBillingSubWarning(state, localGetters, rootState, rootGetters): boolean {\n const isLoaded = rootGetters.isLoaded as boolean;\n const appHasBilling = process.env.VUE_APP_HAS_BILLING === 'true';\n return isLoaded && appHasBilling && isSubWarningBarInfo(localGetters.billingInfo);\n },\n isBillingPaymentWarning(state, localGetters, rootState, rootGetters): boolean {\n const isLoaded = rootGetters.isLoaded as boolean;\n const appHasBilling = process.env.VUE_APP_HAS_BILLING === 'true';\n return isLoaded && appHasBilling && isPaymentWarningBarInfo(localGetters.billingInfo);\n },\n isBillingSMSWarning(state, localGetters, rootState, rootGetters): boolean {\n const isLoaded = rootGetters.isLoaded as boolean;\n const appHasBilling = process.env.VUE_APP_HAS_BILLING === 'true';\n return isLoaded && appHasBilling && isSMSWarningBarInfo(localGetters.billingInfo);\n },\n isBillingPageAllowed(state, localGetters, rootState, rootGetters): boolean {\n const isLoaded = rootGetters.isLoaded as boolean;\n const isVIP = localGetters.billingInfo.status === BillingInfoSubscriptionStatus.VIP;\n const appHasBilling = process.env.VUE_APP_HAS_BILLING === 'true';\n console.log('isBillingPageAllowed (loaded, vip, env): ', isLoaded, isVIP, appHasBilling);\n return appHasBilling && isLoaded && !isVIP;\n },\n isBillingSMSPageFull(state, localGetters, rootState, rootGetters): boolean {\n return localGetters.isBillingPageAllowed;\n },\n gstplnApps(state, localGetters, rootState, rootGetters): GstplnApp[] {\n const country = rootState.settings.account.countryCode;\n\n const gstplnApps = state.gstplnApps.filter((app) => {\n // app is installed -> allow\n if (app.installed) return true;\n\n if (!country) {\n // no country -> allow if no filter, otherwise disallow\n return app.disallowedCountries.length === 0 && app.allowedCountries.length === 0;\n }\n\n // if disallowd country -> do not allow\n if (app.disallowedCountries.includes(country)) return false;\n // allowed country or no allowed filter -> allow\n if (app.allowedCountries.length === 0 || app.allowedCountries.includes(country)) return true;\n\n return false;\n });\n\n // group the apps into categories ordered by enum order, then alphabethically\n const catOrd = Object.values(GstplnAppCategory) as string[];\n gstplnApps.sort(\n (a, b) => catOrd.indexOf(a.categories[0]) - catOrd.indexOf(b.categories[0]) || a.id.localeCompare(b.id),\n );\n\n return gstplnApps;\n },\n hostedWidgetURL(state) {\n const apiKey = state.account.defaultAccessKey;\n return apiKey ? hostedWidgetURL({ apiKey }) : undefined;\n },\n // allowed features and apps\n isFeedbackFeatureAllowed(state) {\n return state.account.features?.includes('feedback');\n },\n isGiftcardBackgroundFeatureAllowed(state) {\n return state.account.features?.includes('gcbackground');\n },\n isWaitlistFeatureAllowed(state) {\n return state.account.features?.includes('waitlist');\n },\n isNewsletterFeatureAllowed(state) {\n return state.account.features?.some((f) => f.startsWith('newsletter'));\n },\n};\n\nconst SettingsStore = {\n namespaced: false,\n state: new SettingsState(),\n mutations,\n actions,\n getters,\n};\n\nexport default SettingsStore;\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport { dateByAddingSeconds } from '@/services/time-utils';\nimport { UpdateOriginator } from '@/services/store-utils';\nimport IRootState, { IAutoUpdateState } from './store-state';\n\nconst AUTO_UPDATE_TIME_INTERVAL_MIN = 10.0;\nconst AUTO_UPDATE_TIME_INTERVAL_DEFAULT = 10.0;\nconst PUSH_UPDATE_MIN_DELAY = 2.0;\n\nexport class AutoUpdateState implements IAutoUpdateState {\n on: boolean = false;\n\n scheduleDate: Date | null = null;\n\n counter: number = 0;\n}\n\nconst mutations = >{\n RESET(state: AutoUpdateState) {\n Object.assign(state, new AutoUpdateState());\n },\n AUTO_SET_SCHEDULED(state: AutoUpdateState, scheduleDate: Date) {\n state.scheduleDate = scheduleDate;\n },\n AUTO_START_STOP(state: AutoUpdateState, on: boolean) {\n state.on = on;\n },\n AUTO_INCREMENT_COUNTER(state: AutoUpdateState, on: boolean) {\n state.counter += 1;\n },\n};\n\nconst actions = >{\n startAutoUpdate({ state, commit, rootGetters }): Date | null {\n if (state.on || !rootGetters.isLoggedIn) return null;\n commit('AUTO_START_STOP', true);\n\n if (!state.on) return null;\n return new Date();\n },\n stopAutoUpdate({ state, commit }, scheduleDate: Date) {\n commit('AUTO_START_STOP', false);\n },\n autoUpdateSetScheduled({ state, commit }, scheduleDate: Date) {\n commit('AUTO_SET_SCHEDULED', scheduleDate);\n },\n async performAutoUpdate({\n state, commit, dispatch, getters,\n }) {\n if (!state.on) {\n console.log('performAutoUpdate ERROR: autoupdate was off', state.on);\n return;\n }\n\n if (!state.scheduleDate || state.scheduleDate > new Date()) {\n console.log('performAutoUpdate ERROR: autoupdate was scheduled for later', state.scheduleDate);\n return;\n }\n\n try {\n await dispatch('update', { originator: UpdateOriginator.Auto });\n } finally {\n commit('AUTO_INCREMENT_COUNTER');\n }\n },\n};\n\nconst getters = >{\n autoUpdateNextDate(state, localGetters, rootState, rootGetters): Date | null {\n if (!state.on) return null;\n\n const lastUpdateDate = rootState.update.updateDate;\n if (!lastUpdateDate) return new Date();\n\n const offset = localGetters.autoUpdateTimeInterval as number;\n return dateByAddingSeconds(lastUpdateDate, offset);\n },\n autoUpdateTimeInterval(state, localGetters, rootState, rootGetters) {\n const forcedAutoUpdateTimeInterval = process.env.VUE_APP_FORCED_AUTO_UPDATE_TIME_INTERVAL;\n if (forcedAutoUpdateTimeInterval) return forcedAutoUpdateTimeInterval;\n\n const autoUpdateTimeInterval = rootState.update.autoUpdateTimeInterval ?? AUTO_UPDATE_TIME_INTERVAL_DEFAULT;\n return autoUpdateTimeInterval < AUTO_UPDATE_TIME_INTERVAL_MIN\n ? AUTO_UPDATE_TIME_INTERVAL_MIN\n : autoUpdateTimeInterval;\n },\n};\n\nconst AutoUpdateStore = {\n namespaced: false,\n state: new AutoUpdateState(),\n mutations,\n actions,\n getters,\n};\n\nexport default AutoUpdateStore;\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport Tab from '@/model/Tab';\nimport Reservation, { ReservationStatus } from '@/model/Reservation';\nimport { setDateHoursMinutes, hourMinFromTimeText } from '@/services/time-utils';\nimport { InvalidStatusesForToday, InvalidStatuses } from '@/util/status';\nimport { toSortedMapBySlot, mapBySlotToMapByTimeText } from '@/services/reservations-utils';\nimport IRootState, { IFilterState } from './store-state';\n\nconst FILTER_DEFAULT_FROM = '06:00';\nconst FILTER_DEFAULT_TO = '24:00';\nconst FILTER_DEFAULT_STATUS = ReservationStatus.Valid;\nconst FILTER_DEFAULT_TAB = null;\n\nexport class FilterState implements IFilterState {\n from: string = FILTER_DEFAULT_FROM;\n\n to: string = FILTER_DEFAULT_TO;\n\n status: ReservationStatus = FILTER_DEFAULT_STATUS;\n\n tab: Tab | null = FILTER_DEFAULT_TAB;\n\n tablesTab: Tab | null = FILTER_DEFAULT_TAB;\n\n floorplanTab: Tab | null = FILTER_DEFAULT_TAB;\n}\n\nconst mutations = >{\n SET_FILTER(\n state: IFilterState,\n p: { from?: string | null, to?: string | null, status?: ReservationStatus | null,\n tab?: Tab | null, tablesTab?: Tab | null, floorplanTab?: Tab | null },\n ) {\n if (p.from !== undefined) state.from = p.from ?? FILTER_DEFAULT_FROM;\n if (p.to !== undefined) state.to = p.to ?? FILTER_DEFAULT_TO;\n if (p.status !== undefined) state.status = p.status ?? FILTER_DEFAULT_STATUS;\n if (p.tab !== undefined) state.tab = p.tab ?? FILTER_DEFAULT_TAB;\n if (p.tablesTab !== undefined) state.tablesTab = p.tablesTab ?? FILTER_DEFAULT_TAB;\n if (p.floorplanTab !== undefined) state.floorplanTab = p.floorplanTab ?? FILTER_DEFAULT_TAB;\n },\n RESET(state: FilterState) {\n Object.assign(state, new FilterState());\n },\n RESET_FILTER(state: FilterState) {\n Object.assign(state, new FilterState());\n },\n};\n\nconst actions = >{\n applyFilter(\n { state, commit, dispatch },\n p: { from?: string | null, to?: string | null, status?: ReservationStatus | null, tab?: Tab | null },\n ) {\n commit('SET_FILTER', p);\n },\n resetFilter({ state, commit, dispatch }) {\n commit('RESET_FILTER');\n },\n applyAllFilter({ state, commit, dispatch }) {\n commit('RESET_FILTER');\n commit('SET_FILTER', { status: ReservationStatus.All });\n },\n};\n\nconst getters = >{\n filteredReservationsNoBlocks(state, localGetters, rootState, rootGetters): Reservation[] {\n const fhm = hourMinFromTimeText(state.from) ?? hourMinFromTimeText(FILTER_DEFAULT_FROM)!;\n const fromDate = setDateHoursMinutes(rootState.update.date, fhm.h, fhm.m);\n\n const thm = hourMinFromTimeText(state.to) ?? hourMinFromTimeText(FILTER_DEFAULT_TO)!;\n const toDate = setDateHoursMinutes(rootState.update.date, thm.h, thm.m);\n\n const { tab, status } = state;\n\n let invalid: ReservationStatus[];\n if (status === ReservationStatus.Valid) {\n invalid = rootGetters.isToday ? InvalidStatusesForToday : InvalidStatuses;\n }\n\n const dayReservationsNoBlocks = rootGetters.dayReservationsNoBlocks as Reservation[];\n const filteredReservations = dayReservationsNoBlocks.filter((r: Reservation) => {\n if (r.dateBegin < fromDate) return false;\n if (r.dateBegin > toDate) return false;\n if (tab && r.tab !== tab) return false;\n\n if (!r.status || status === ReservationStatus.All) return true;\n if (status !== ReservationStatus.Valid) return r.status === status;\n if (invalid.includes(r.status)) return false;\n\n return true;\n });\n\n console.log('filtered reservations:', filteredReservations);\n\n return filteredReservations;\n },\n isFilterFrom(state): boolean { return state.from !== FILTER_DEFAULT_FROM; },\n isFilterTo(state): boolean { return state.to !== FILTER_DEFAULT_TO; },\n isFilterStatus(state): boolean { return state.status !== FILTER_DEFAULT_STATUS; },\n isFilterTab(state): boolean { return state.tab !== FILTER_DEFAULT_TAB; },\n isFilter(state, localGetters, rootState, rootGetters): boolean {\n return !(\n state.from === FILTER_DEFAULT_FROM\n && state.to === FILTER_DEFAULT_TO\n && state.status === FILTER_DEFAULT_STATUS\n && state.tab === FILTER_DEFAULT_TAB\n );\n },\n isDayFilteredReservationNoBlock(state, localGetters) {\n return localGetters.filteredReservationsNoBlocks.length > 0;\n },\n filteredReservationsNoBlocksBySlot(state, localGetters) {\n const reservations: Reservation[] = localGetters.filteredReservationsNoBlocks;\n return toSortedMapBySlot(reservations);\n },\n filteredReservationsNoBlocksByTimeText(state, localGetters) {\n const mapByDateIndex = localGetters.filteredReservationsNoBlocksBySlot as Map;\n return mapBySlotToMapByTimeText(mapByDateIndex);\n },\n};\n\nconst FilterStore = {\n namespaced: false,\n state: new FilterState(),\n mutations,\n actions,\n getters,\n};\n\nexport default FilterStore;\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport Reservation, { ReservationMapping } from '@/model/Reservation';\nimport httpClient from '@/api/http-client';\nimport Contact from '@/model/Contact';\nimport { searchForReservations, SearchType } from '@/services/search';\nimport { toSortedMapByDateIndex, mapByDateIndexToMapByDate } from '@/services/reservations-utils';\nimport { toMapById } from '@/model/model-utils';\nimport IRootState, { ISearchState } from './store-state';\n\nexport class SearchState implements ISearchState {\n type: SearchType = SearchType.None;\n\n query: string = '';\n\n requestCount: number = 0;\n\n localReservations: Reservation[] = [];\n\n apiReservations: Reservation[] = [];\n}\n\nconst mutations = >{\n RESET(state: ISearchState) {\n Object.assign(state, new SearchState());\n },\n RESET_SEARCH(state: ISearchState) {\n Object.assign(state, new SearchState());\n },\n SET_SEARCH_QUERY(state: ISearchState, p: { query: string, type: SearchType }) {\n state.query = p.query;\n state.type = p.type;\n if (p.query.length < 3) { state.localReservations = []; state.apiReservations = []; }\n },\n CHANGE_SEARCH_REQUEST_COUNT(state: ISearchState, increment: boolean) {\n state.requestCount = increment ? state.requestCount + 1 : state.requestCount - 1;\n },\n SET_SEARCH_RESULTS(\n state: ISearchState,\n p: { query: string, localReservations?: Reservation[], apiReservations?: Reservation[]},\n ) {\n if (p.localReservations) state.localReservations = p.localReservations;\n if (p.apiReservations) state.apiReservations = p.apiReservations;\n },\n};\n\nconst actions = >{\n async search({\n state, commit, rootGetters, rootState, dispatch,\n }, p: { query: string, type: SearchType }) {\n if (state.query === p.query && state.type === p.type) return;\n\n console.log('SEARCH query:', p.query);\n commit('SET_SEARCH_QUERY', p);\n\n commit('CHANGE_SEARCH_REQUEST_COUNT', true);\n\n setTimeout(async () => {\n try {\n if (state.query !== p.query || p.query.length < 3 || state.type !== p.type) return;\n\n // get matching local reservations\n const { reservationsById } = rootState.reservations;\n const localReservations = searchForReservations(state.query, state.type, reservationsById);\n commit('SET_SEARCH_RESULTS', { localReservations });\n console.log('SEARCH LOCAL results:', localReservations);\n\n // get matching backend reservations\n console.log('SEARCH API start:', p.query);\n const update = await httpClient.search(p.query);\n const apiReservations = (update.reservations ?? []).map(\n (o) => new Reservation(o, rootGetters as ReservationMapping),\n );\n console.log('SEARCH API end:', p.query);\n\n if (state.query !== p.query || state.type !== p.type) return;\n\n commit('SET_SEARCH_RESULTS', { apiReservations });\n console.log('SEARCH API results:', apiReservations);\n } catch (e) {\n console.log('SEARCH API error:', e);\n } finally {\n commit('CHANGE_SEARCH_REQUEST_COUNT', false);\n }\n }, 500);\n },\n resetSearch({ state, commit, dispatch }) {\n console.log('reset search');\n commit('RESET_SEARCH');\n },\n};\n\nconst getters = >{\n searchReservations(state, localGetters, rootState, rootGetters): Reservation[] {\n const apiById = toMapById(state.apiReservations);\n const reservations = [...state.apiReservations, ...state.localReservations.filter((r) => !apiById.get(r.id))];\n return reservations;\n },\n searchReservationsByDateIndex(state, localGetters, rootState, rootGetters) {\n const reservations = localGetters.searchReservations as Reservation[];\n return toSortedMapByDateIndex(reservations);\n },\n searchAllReservationsByDate(state, localGetters, rootState, rootGetters) {\n const mapByDateIndex = localGetters.searchReservationsByDateIndex as Map;\n return mapByDateIndexToMapByDate(mapByDateIndex);\n },\n searchDayReservations(state, localGetters, rootState, rootGetters) {\n const map = localGetters.searchReservationsByDateIndex as Map;\n const dateIndex = rootState.update.dateIndex as number;\n return map.get(dateIndex) ?? [];\n },\n searchDayReservationsByDate(state, localGetters, rootState, rootGetters) {\n const reservations = localGetters.searchDayReservations as Reservation[];\n const date = rootState.update.date as Date;\n\n return new Map(reservations.length > 0 ? [[date, reservations]] : []);\n },\n searchContacts(state, localGetters, rootState, rootGetters): Contact[] {\n const searchReservations = localGetters.searchReservations as Reservation[];\n const importances = new Map();\n const contacts: Contact[] = [];\n searchReservations.forEach((r) => {\n if (!r.contact) return;\n let count = importances.get(r.contact.id);\n if (!count) {\n contacts.push(r.contact);\n count = r.contact.reservationCount ?? 1;\n if (count < 1) count = 1;\n importances.set(r.contact.id, count);\n }\n });\n\n const sortedContacts = contacts.sort((o1, o2) => {\n const res = importances.get(o2.id)! - importances.get(o1.id)!;\n if (res !== 0) return res;\n return o1.id - o2.id;\n });\n\n console.log('search contacts: ', sortedContacts);\n return sortedContacts;\n },\n isSearching(state, localGetters, rootState, rootGetters): boolean {\n return state.requestCount !== 0 && state.query.length >= 3;\n },\n};\n\nexport const SearchStore = {\n namespaced: true,\n state: new SearchState(),\n mutations,\n actions,\n getters,\n};\n\nexport const NameStore = {\n namespaced: true,\n state: new SearchState(),\n mutations,\n actions,\n getters,\n};\n\nexport const PhoneStore = {\n namespaced: true,\n state: new SearchState(),\n mutations,\n actions,\n getters,\n};\n\nexport const EmailStore = {\n namespaced: true,\n state: new SearchState(),\n mutations,\n actions,\n getters,\n};\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport Reservation, {\n ReservationMapping, ReservationStatus, ReservationSource, ReservationType,\n} from '@/model/Reservation';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport Employee from '@/model/Employee';\nimport {\n setDateHoursMinutes, flooredMinutes, getDateHoursMinutes, dateByAddingDays,\n hourMinFromTimeText, isDateAfterDate, hourMinFromSlot, areDatesEqual, dateFlooredToXMinutes,\n} from '@/services/time-utils';\nimport { DEFAULT_PARTY_SIZE, MIN_BEGIN_TIME } from '@/services/configuration';\nimport {\n ReservationError, validateReservation, validateReservationAvailability,\n overbookedTabItemsForReservation, unavailableTabItemsForReservation,\n} from '@/services/reservation-validation';\nimport Tab from '@/model/Tab';\nimport Contact from '@/model/Contact';\nimport storage from '@/services/local-storage';\nimport TabItem from '@/model/TabItem';\nimport TimeSlot from '@/model/TimeSlot';\nimport DurationRule from '@/model/DurationRule';\nimport Attachment from '@/model/Attachment';\nimport httpClient from '@/api/http-client';\nimport grpcClient from '@/grpc-api/grpc-client';\nimport { History, HistoryMessage, HistoryRecord } from '@/services/reservation-history';\nimport Message from '@/grpc-api/model/message';\nimport IRootState, { IReservationState } from '@/store/store-state';\n\nexport class ReservationState implements IReservationState {\n originalReservation: Reservation | null = null;\n\n editedReservation: Reservation | null = null;\n\n lastEmployee: Employee | null = storage.getLastEmployee();\n\n rememberEmployee: boolean = storage.getLastEmployee() !== null;\n\n forgetTabItems: boolean = false;\n\n keepOpen: boolean = false;\n\n confirmResolver: ((value: boolean) => void) | null = null;\n}\n\nconst mutations = >{\n RESET(state: ReservationState) {\n Object.assign(state, new ReservationState());\n },\n SET_RESERVATION(state: ReservationState, reservation: Reservation | undefined) {\n console.log('SET_RESERVATION: ', reservation);\n state.originalReservation = reservation || new Reservation();\n state.editedReservation = reservation ? cloneModel(reservation) : new Reservation();\n state.forgetTabItems = false;\n\n state.keepOpen = false;\n state.confirmResolver = null;\n },\n RESET_RESERVATION(state: ReservationState) {\n console.log('RESET_RESERVATION');\n state.originalReservation = null;\n state.editedReservation = null;\n state.forgetTabItems = false;\n\n state.keepOpen = false;\n state.confirmResolver = null;\n },\n UPDATE_ORIGINAL_RESERVATION(state: ReservationState, originalReservation: Reservation) {\n console.log('UPDATE_ORIGINAL_RESERVATION');\n if (!state.editedReservation) return;\n state.originalReservation = originalReservation;\n // dateEdited fix\n state.editedReservation.dateEdited = state.originalReservation.dateEdited;\n },\n SET_RESERVATION_ELEMENT(state: ReservationState, p: {\n partySize?: number, tab?: Tab, tabItems?: TabItem[], holdTabItems? :boolean,\n status?: ReservationStatus, reservationType?: ReservationType,\n date: Date, dateBegin: Date, dateEnd: Date, contact?: Contact,\n attachments?: Attachment[],\n durationRules?: DurationRule[],\n }) {\n console.log('SET_RESERVATION_ELEMENT: ', p);\n if (!state.editedReservation) return;\n\n if (p.partySize !== undefined) state.editedReservation.partySize = p.partySize;\n if (p.tab !== undefined) state.editedReservation.tab = p.tab;\n if (p.tabItems !== undefined) {\n state.editedReservation.tabItems = p.tabItems;\n state.editedReservation.tabItems.sort((o1, o2) => o1.order - o2.order);\n }\n if (p.holdTabItems !== undefined && !state.editedReservation.isBlock) {\n state.editedReservation.holdTabItems = p.holdTabItems;\n }\n if (p.status !== undefined) state.editedReservation.status = p.status;\n if (p.date !== undefined) state.editedReservation.setDate(p.date);\n if (p.dateBegin !== undefined) state.editedReservation.dateBegin = p.dateBegin;\n if (p.dateEnd !== undefined) state.editedReservation.dateEnd = p.dateEnd;\n if (p.contact !== undefined) state.editedReservation.contact = p.contact;\n if (p.attachments !== undefined) state.editedReservation.attachments = p.attachments;\n if (p.reservationType !== undefined) {\n state.editedReservation.bookingType = p.reservationType;\n\n if (p.reservationType === ReservationType.Reservation) {\n if (!p.status) state.editedReservation.status = ReservationStatus.Planned;\n if (!p.partySize && state.editedReservation.partySize === 0) {\n state.editedReservation.partySize = DEFAULT_PARTY_SIZE;\n }\n }\n\n if (p.reservationType === ReservationType.Block) {\n state.editedReservation.partySize = 0;\n state.editedReservation.status = ReservationStatus.Planned;\n } else if (state.editedReservation.partySize === 0) {\n state.editedReservation.partySize = state.editedReservation.tabItems.map(\n (o) => o.seats,\n ).reduce((a, b) => a + b, 0);\n }\n if (p.reservationType === ReservationType.Walkin) {\n state.editedReservation.dateBegin = dateFlooredToXMinutes(new Date(), 30);\n state.editedReservation.status = ReservationStatus.Seated;\n if (!p.partySize && state.editedReservation.partySize === 0) {\n state.editedReservation.partySize = DEFAULT_PARTY_SIZE;\n }\n }\n\n if (p.reservationType === ReservationType.Waitlist) {\n state.editedReservation.status = ReservationStatus.WaitingList;\n if (!p.partySize && state.editedReservation.partySize === 0) {\n state.editedReservation.partySize = DEFAULT_PARTY_SIZE;\n }\n }\n }\n\n // tab items must belong to the tab\n if ((p.tab !== undefined || p.tabItems !== undefined) && state.editedReservation.tabItems != null) {\n state.editedReservation.tabItems = state.editedReservation.tabItems.filter(\n (ti) => state.editedReservation?.tab?.tabItems.find((tti) => ti.id === tti.id),\n );\n }\n\n if (p.dateBegin !== undefined || p.dateEnd !== undefined || p.reservationType === ReservationType.Walkin) {\n state.editedReservation.updateSlotsAndTimes();\n }\n if (p.durationRules !== undefined && (!state.editedReservation.fixedEnding || p.dateBegin !== undefined\n || p.reservationType === ReservationType.Walkin)) {\n state.editedReservation.updateEndDateForReservation(p.durationRules);\n }\n },\n\n SET_EMPLOYEE(state: ReservationState, p: { employee: Employee, remember: boolean }) {\n console.log('SET_EMPLOYEE: ', p);\n\n state.lastEmployee = p.employee;\n state.rememberEmployee = p.remember;\n\n if (state.lastEmployee.id <= 0) state.lastEmployee.id = 0;\n\n storage.setLastEmployee(p.remember ? p.employee : null);\n },\n SET_FORGET(state: ReservationState, forget: boolean) {\n console.log('SET_FORGET: ', forget);\n state.forgetTabItems = forget;\n },\n SET_KEEP_OPEN(state: ReservationState, keepOpen: boolean) {\n console.log('SET_KEEP_OPEN: ', keepOpen);\n state.keepOpen = keepOpen;\n },\n SET_CONFIRM(state: ReservationState, confirmResolver: ((value: boolean) => void) | null) {\n console.log('SET_CONFIRM: ', confirmResolver != null);\n state.confirmResolver = confirmResolver;\n },\n};\n\nconst actions = >{\n editReservation({\n state, commit, rootState, rootGetters, dispatch,\n }, p: {\n reservation: Reservation\n } | {\n reservation: undefined,\n tab?: Tab,\n tabItems?: TabItem[],\n dateBegin?: Date,\n timeSlot?: number,\n partySize?: number,\n status?: ReservationStatus,\n contact?: Contact,\n bookingType?: ReservationType,\n }) {\n if (!rootGetters.isLoaded) return;\n\n let r: Reservation;\n\n if (!p.reservation) {\n let hm = getDateHoursMinutes(p.dateBegin ?? new Date());\n if (p.timeSlot) hm = hourMinFromSlot(p.timeSlot);\n if (hm.h < 6) hm = hourMinFromTimeText(MIN_BEGIN_TIME)!;\n\n r = new Reservation();\n r.partySize = p.partySize ?? DEFAULT_PARTY_SIZE;\n r.tab = p.tab ?? rootState.settings.tabs.find(Boolean) ?? null; // first tab or undefined;\n r.tabItems = p.tabItems ?? [];\n r.tabItems.sort((o1, o2) => o1.order - o2.order);\n r.status = p.status ?? ReservationStatus.Planned;\n r.dateBegin = setDateHoursMinutes(p.dateBegin ?? rootState.update.date, hm.h, flooredMinutes(hm.m));\n if (p.contact) r.contact = p.contact;\n\n r.bookingType = p.bookingType || ReservationType.Reservation;\n\n r.updateSlotsAndTimes();\n r.updateEndDateForReservation(rootState.settings.durationRules);\n } else {\n r = cloneModel(p.reservation);\n // remove tab items with id <= 0 (floating reservations)\n r.tabItems = r.tabItems.filter((ti) => ti.id > 0);\n }\n\n commit('SET_RESERVATION', r);\n },\n closeEditReservation({ state, commit, dispatch }) {\n commit('RESET_RESERVATION');\n },\n canCloseEditReservation({ state, commit, getters }): Promise {\n if (state.keepOpen) return Promise.resolve(false);\n if (!getters.isChangedEditReservation) {\n return Promise.resolve(true);\n }\n return new Promise((resolve) => { commit('SET_CONFIRM', resolve); });\n },\n confirmCloseEditReservation({ state, commit, getters }, confirm: boolean) {\n if (state.confirmResolver) state.confirmResolver(confirm);\n commit('SET_CONFIRM', null);\n },\n async sendEditReservation(\n {\n state, commit, dispatch, getters,\n },\n p: { cancel?: boolean, duplicate?: boolean, dateBegin?: Date, suggestedTabItems?: TabItem[] },\n ) {\n if (!state.editedReservation) return;\n\n const r = cloneModel(state.editedReservation);\n\n if (p.duplicate) { r.id = 0; r.setDate(p.dateBegin ?? r.dateBegin); }\n if (p.cancel) r.status = ReservationStatus.Cancelled;\n if (p.suggestedTabItems && r.tabItems.length === 0) r.tabItems = p.suggestedTabItems;\n if (r.isBlock) { r.partySize = 0; }\n\n const employee = getters.reservationLastEmployee ?? undefined as Employee | undefined;\n await dispatch('sendReservation', {\n reservation: r,\n employee,\n forgetTabItems: state.forgetTabItems ?? undefined,\n });\n },\n\n // update original reservation from api update\n updateReservation({\n state, rootState, commit, dispatch,\n }) {\n if (!state.editedReservation || !state.originalReservation || state.originalReservation.id <= 0) return;\n\n const originalReservation = rootState.reservations.reservationsById[state.originalReservation.id]\n ?? new Reservation();\n commit('UPDATE_ORIGINAL_RESERVATION', originalReservation);\n },\n\n setLastEmployee({ state, commit, dispatch }, p: { employee: Employee | null, remember: boolean }) {\n commit('SET_EMPLOYEE', p);\n },\n setForgetTabItems({ state, commit, dispatch }, forget: boolean) {\n commit('SET_FORGET', forget);\n },\n setReservationContact({ state, commit, dispatch }, contact: Contact) {\n commit('SET_RESERVATION_ELEMENT', { contact: cloneModel(contact) });\n },\n\n setReservationPartySize({ state, commit, rootState }, partySize: number) {\n commit('SET_RESERVATION_ELEMENT', { partySize, durationRules: rootState.settings.durationRules });\n },\n setReservationType({ state, commit, rootState }, reservationType: ReservationType) {\n const durationRules = reservationType === ReservationType.Walkin ? rootState.settings.durationRules : undefined;\n commit('SET_RESERVATION_ELEMENT', { reservationType, durationRules });\n },\n setReservationTab({ state, commit, rootState }, tab: Tab) {\n commit('SET_RESERVATION_ELEMENT', { tab, durationRules: rootState.settings.durationRules });\n },\n setReservationTabItems({ state, commit, rootState }, tabItems: TabItem[]) {\n commit('SET_RESERVATION_ELEMENT', { tabItems });\n },\n setReservationHoldTabItems({ state, commit, rootState }, holdTabItems: boolean) {\n commit('SET_RESERVATION_ELEMENT', { holdTabItems });\n },\n setReservationStatus({ state, commit, rootState }, status: ReservationStatus) {\n commit('SET_RESERVATION_ELEMENT', { status });\n },\n setReservationDate({ state, commit, rootState }, date: Date) {\n commit('SET_RESERVATION_ELEMENT', { date });\n },\n setReservationAttachments({ state, commit, rootState }, attachments: Attachment[]) {\n commit('SET_RESERVATION_ELEMENT', { attachments });\n },\n setReservationTimeBegin({ state, commit, rootState }, time: string) {\n if (!state.editedReservation) return;\n\n const hm = hourMinFromTimeText(time);\n if (!hm) return;\n\n const dateBegin = setDateHoursMinutes(state.editedReservation.dateBegin, hm.h, hm.m);\n\n commit('SET_RESERVATION_ELEMENT', { dateBegin, durationRules: rootState.settings.durationRules });\n },\n setReservationTimeEnd({ state, commit, rootState }, time: string) {\n if (!state.editedReservation) return;\n\n const hm = hourMinFromTimeText(time);\n if (!hm) return;\n\n const { dateBegin } = state.editedReservation;\n let dateEnd = setDateHoursMinutes(dateBegin, hm.h, hm.m);\n if (!isDateAfterDate(dateEnd, dateBegin)) dateEnd = dateByAddingDays(dateEnd, +1);\n\n commit('SET_RESERVATION_ELEMENT', { dateEnd });\n },\n\n setReservationFromDragDropReservation({ state, commit, rootGetters }) {\n const ddr = rootGetters.dragDropReservation;\n if (!ddr || !state.editedReservation || ddr.id !== state.editedReservation.id) return;\n\n const {\n tab, tabItems, dateBegin, dateEnd,\n } = ddr;\n commit('SET_RESERVATION_ELEMENT', {\n tab, tabItems, dateBegin, dateEnd,\n });\n },\n setReservationFromContextStatusChange({ state, commit, rootGetters }, r: Reservation) {\n if (!state.editedReservation || !state.originalReservation || r.id !== state.editedReservation.id) return;\n\n // change also end date if affected by status change\n const dateEnd = areDatesEqual(state.originalReservation.dateEnd, r.dateEnd) ? undefined : r.dateEnd;\n\n commit('SET_RESERVATION_ELEMENT', { status: r.status, dateEnd });\n },\n async keepReservationChangeToDate({ state, commit, dispatch }, date) {\n commit('SET_KEEP_OPEN', true);\n try {\n await dispatch('changeToDate', date);\n } finally {\n commit('SET_KEEP_OPEN', false);\n }\n },\n async getContactReservations({ state, commit, rootGetters }): Promise {\n const contact = state.editedReservation?.contact;\n\n if (!contact?.id) return [];\n\n const query = `contactId:${contact.id}`;\n const update = await httpClient.search(query);\n const reservations = (update.reservations ?? []).map(\n (o) => new Reservation(o, rootGetters as ReservationMapping),\n );\n\n return reservations;\n },\n async getReservationHistory({ state, commit, rootGetters }): Promise {\n if (!state.editedReservation || !state.originalReservation || state.originalReservation.id <= 0) {\n return { records: [], messages: [] };\n }\n\n const { records, messages } = await grpcClient.getReservationHistory(state.originalReservation.id);\n\n return {\n records: records.map((s) => JSON.parse(s) as HistoryRecord) ?? [],\n messages: messages.map((s) => JSON.parse(s) as HistoryMessage) ?? [],\n };\n },\n // reservation message\n async sendReservationMessage({ state, commit, rootGetters }, p: { message: Message }) {\n await grpcClient.sendMessage(p.message);\n return true;\n },\n};\n\nconst getters = >{\n editReservation(state, localGetters, rootState, rootGetters) {\n const isddv = rootGetters.isDragDropValid;\n const ddr = rootGetters.dragDropReservation;\n if (!isddv || !ddr || !state.editedReservation || ddr.id !== state.editedReservation.id) {\n return state.editedReservation;\n }\n\n const er = cloneModel(state.editedReservation);\n\n er.tab = ddr.tab;\n er.tabItems = ddr.tabItems;\n er.dateBegin = ddr.dateBegin;\n er.dateEnd = ddr.dateEnd;\n er.updateSlotsAndTimes();\n\n return er;\n },\n originalReservation(state, localGetters, rootState, rootGetters) {\n return state.originalReservation;\n },\n isEditReservation(state, localGetters, rootState, rootGetters) {\n return state.editedReservation !== null;\n },\n editReservationId(state, localGetters, rootState, rootGetters) {\n return state.editedReservation?.id;\n },\n isChangedEditReservation(state, localGetters, rootState, rootGetters) {\n if (!state.editedReservation || !state.originalReservation) return false;\n return !isModelEqualToModel(state.editedReservation, state.originalReservation);\n },\n keepEditReservation(state, localGetters, rootState, rootGetters) {\n return state.keepOpen;\n },\n isConfirmCloseEditReservation(state, localGetters, rootState, rootGetters) {\n return state.confirmResolver !== null;\n },\n // basic validation\n reservationValidationErrors(state, localGetters, rootState, rootGetters): ReservationError[] {\n if (!state.editedReservation) return [];\n return validateReservation(state.editedReservation);\n },\n // availability validation\n reservationAvailabilityValidationErrors(state, localGetters, rootState, rootGetters): ReservationError[] {\n if (!state.editedReservation) return [];\n\n const reservations = rootGetters.dayValidReservationsNoBlocks as Reservation[];\n const timeSlot = rootGetters.dayTimeSlotsBySlot.get(state.editedReservation.slotBegin) as TimeSlot;\n const reservationsDuringSlot = rootGetters.dayValidReservationsAndBlocksDuringSlot as Map;\n const defaultMaxGuestsPerTime = rootState.settings.accountSettings.defaultMaxGuestsPerTime as number;\n const defaultMaxReservationsPerTime = rootState.settings.accountSettings.defaultMaxReservationsPerTime as number;\n\n return validateReservationAvailability(\n state.editedReservation,\n timeSlot,\n reservations,\n reservationsDuringSlot,\n { defaultMaxGuestsPerTime, defaultMaxReservationsPerTime },\n );\n },\n reservationOverbookedTabItems(state, localGetters, rootState, rootGetters): TabItem[] {\n if (!state.editedReservation) return [];\n const reservationsByTabItemAndSlot = rootGetters.dayValidReservationsAndBlocksByTabItemAndSlot;\n return overbookedTabItemsForReservation(state.editedReservation, reservationsByTabItemAndSlot);\n },\n reservationUnavailableTabItems(state, localGetters, rootState, rootGetters): TabItem[] {\n if (!state.editedReservation) return [];\n const reservationsDuringSlot = rootGetters.dayValidReservationsAndBlocksDuringSlot as Map;\n return unavailableTabItemsForReservation(state.editedReservation, reservationsDuringSlot);\n },\n reservationLastEmployee(state, localGetters, rootState, rootGetters): Employee | null {\n const employeeNameIsNeeded = rootGetters.employeeNameIsNeeded as boolean;\n const employee = employeeNameIsNeeded ? state.lastEmployee : null;\n return employee;\n },\n isReservationMessageAllowed(state, localGetters, rootState, rootGetters) {\n return state.originalReservation\n && (state.originalReservation.contact.email || state.originalReservation.contact.phone)\n && state.originalReservation.contact.email === state.editedReservation?.contact.email\n && state.originalReservation.contact.phone === state.editedReservation?.contact.phone;\n },\n};\n\nconst ReservationStore = {\n namespaced: false,\n state: new ReservationState(),\n mutations,\n actions,\n getters,\n};\n\nexport default ReservationStore;\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport httpClient from '@/api/http-client';\nimport Reservation, { ReservationType } from '@/model/Reservation';\nimport TabItem from '@/model/TabItem';\nimport { cloneModel, isModelEqualToModel } from '@/model/model-utils';\nimport { InvalidStatuses } from '@/util/status';\nimport IRootState, { IReservationSuggestionsState } from './store-state';\n\n// reservation significantly modified?\nfunction areSame(r1: Reservation | null, r2: Reservation | null) {\n return r1?.id === r2?.id\n && r1?.tab === r2?.tab\n && r1?.dateBegin === r2?.dateBegin\n && r1?.dateEnd === r2?.dateEnd\n && r1?.partySize === r2?.partySize\n && r1?.tabItems.length === r2?.tabItems.length\n && r1?.tabItems.every((ti) => r2?.tabItems.includes(ti))\n && r1?.status === r2?.status;\n}\n\nfunction isRelevant(r: Reservation | null) {\n return r !== null && r.tabItems.length === 0 && r.partySize > 0 && !InvalidStatuses.includes(r.status);\n}\n\nexport class ReservationSuggestionsState implements IReservationSuggestionsState {\n reservation: Reservation | null = null;\n\n tabItems: TabItem[] | null = null;\n\n requestCount = 0;\n}\n\nconst mutations = >{\n RESET(state: ReservationSuggestionsState) {\n Object.assign(state, new ReservationSuggestionsState());\n },\n SET_SUGGESTIONS_RESERVATION(state: ReservationSuggestionsState, reservation: Reservation | null) {\n state.reservation = reservation ? cloneModel(reservation) : null;\n },\n CHANGE_SUGGESTIONS_REQUEST_COUNT(state: ReservationSuggestionsState, increment: boolean) {\n state.requestCount = increment ? state.requestCount + 1 : state.requestCount - 1;\n },\n SET_SUGGESTIONS_RESULTS(\n state: ReservationSuggestionsState,\n p: { tabItems: TabItem[] | null },\n ) {\n if (p.tabItems) state.tabItems = p.tabItems;\n },\n RESET_SUGGESTIONS_RESULTS(state: ReservationSuggestionsState) {\n state.tabItems = null;\n },\n};\n\nconst actions = >{\n async suggest({\n state, commit, rootState, rootGetters,\n }, p: { reservation: Reservation | null }) {\n console.log('suggest:', p.reservation, state.reservation);\n\n if (p.reservation?.isBlock) {\n commit('RESET_SUGGESTIONS_RESULTS');\n return;\n }\n\n const isModified = !areSame(state.reservation, p.reservation);\n\n // set suggestions reservation (even if not modified)\n commit('SET_SUGGESTIONS_RESERVATION', p.reservation);\n\n // reset results when modified\n if (isModified) {\n commit('RESET_SUGGESTIONS_RESULTS');\n }\n\n // ask for suggestions?\n if (!(rootState.settings.accountSettings.tableAllocation ?? false)) return;\n if (!isModified || !isRelevant(state.reservation)) return;\n\n // do api request\n commit('CHANGE_SUGGESTIONS_REQUEST_COUNT', true);\n\n const reservation = cloneModel(p.reservation!);\n\n setTimeout(async () => {\n try {\n if (!isModelEqualToModel(reservation, p.reservation!)) return; // reservation has changed -> skip\n const dto = p.reservation!.toDto();\n\n const tabItemIds = await httpClient.suggestTables(dto);\n\n console.log('SUGGESTIONS results:', tabItemIds);\n\n if (areSame(state.reservation, p.reservation)) {\n const tabItemsById = rootGetters.tabItemsById as Map;\n const tabItems = [] as TabItem[];\n tabItemIds.forEach((id) => { const ti = tabItemsById.get(id); if (ti) tabItems.push(ti); });\n tabItems.sort((o1, o2) => o1.order - o2.order);\n commit('SET_SUGGESTIONS_RESULTS', { tabItems });\n }\n } catch (e) {\n console.log('SUGGESTIONS API error:', e);\n } finally {\n commit('CHANGE_SUGGESTIONS_REQUEST_COUNT', false);\n }\n }, 500);\n },\n};\n\nconst getters = >{\n suggestedTabItems(state, localGetters, rootState, rootGetters): TabItem[] | null {\n return state.tabItems;\n },\n isSuggestingTabItems(state, localGetters, rootState, rootGetters): boolean {\n return state.requestCount !== 0 && isRelevant(state.reservation);\n },\n};\n\nconst ReservationSuggestionStore = {\n namespaced: false,\n state: new ReservationSuggestionsState(),\n mutations,\n actions,\n getters,\n};\n\nexport default ReservationSuggestionStore;\n","import TabItem, { TAB_ITEM_DUMMY_ID } from '@/model/TabItem';\nimport Tab from '@/model/Tab';\n\nexport function x() {}\n\nexport function suggestedDropTabItems(partySize: number, tab: Tab, tabItemId: number): TabItem[] {\n const tabItems = [] as TabItem[];\n\n let seats = 0;\n let ti = tab.tabItems.findIndex((o) => o.id === tabItemId);\n\n if (ti === -1 || tab.tabItems[ti].id <= TAB_ITEM_DUMMY_ID) return [];\n\n while (seats < partySize) {\n const tabItem = tab.tabItems[ti];\n if (!tabItem) break;\n tabItems.push(tabItem);\n seats += tabItem.seats;\n ti += 1;\n }\n\n if (seats < partySize) {\n return [];\n }\n\n return tabItems;\n}\n","import Reservation from '@/model/Reservation';\nimport { MutationTree, GetterTree, ActionTree } from 'vuex';\nimport TabItem from '@/model/TabItem';\nimport Tab from '@/model/Tab';\nimport { suggestedDropTabItems } from '@/services/drag-drop-utils';\nimport { endDateForReservation } from '@/services/reservation-utils';\nimport { cloneModel } from '@/model/model-utils';\nimport { overbookedReservationsForReservation } from '@/services/reservation-validation';\nimport IRootState, { IDragDropState } from './store-state';\n\nexport class DragDropState implements IDragDropState {\n reservation: Reservation | null = null;\n\n tab: Tab | null = null;\n\n tabItems: TabItem[] = [];\n}\n\nconst mutations = >{\n RESET(state: DragDropState) {\n Object.assign(state, new DragDropState());\n },\n SET_DRAGDROP_RESERVATION(state: DragDropState, reservation?: Reservation | null) {\n state.reservation = reservation ?? null;\n },\n SET_DRAGDROP_TAB_TABITEMS(state: DragDropState, p: { tab?: Tab | null, tabItems?: TabItem[]}) {\n state.tab = p.tab ?? null;\n state.tabItems = p.tabItems ?? [];\n },\n};\n\nconst actions = >{\n startDragDrop({ state, commit, rootGetters }, reservation: Reservation | undefined) {\n commit('SET_DRAGDROP_RESERVATION', reservation);\n },\n moveDragDrop({\n state, commit, dispatch, rootGetters,\n }, p: { tabId: number, tabItemId: number }) {\n if (state.reservation === null) return;\n\n const tab = rootGetters.tabsById.get(p.tabId);\n if (!tab) {\n commit('SET_DRAGDROP_TAB_TABITEMS');\n return;\n }\n\n const tabItems = suggestedDropTabItems(state.reservation.partySize, tab, p.tabItemId);\n\n commit('SET_DRAGDROP_TAB_TABITEMS', { tab, tabItems });\n },\n endDragDrop({ commit, dispatch }, ok: boolean) {\n if (ok) {\n dispatch('setReservationFromDragDropReservation');\n }\n commit('SET_DRAGDROP_RESERVATION', null);\n },\n updateReservation({ state, rootState, commit }) {\n if (!state.reservation || state.reservation.id === 0) return;\n\n state.reservation = rootState.reservations.reservationsById[state.reservation.id] ?? null;\n },\n};\n\nconst getters = >{\n isDragDrop(state, localGetters, rootState, rootGetters) {\n return state.reservation !== null;\n },\n isDragDropValid(state, localGetters, rootState, rootGetters) {\n return state.reservation !== null && state.tab !== null && state.tabItems.length > 0;\n },\n isDragDropChanged(state, localGetters, rootState, rootGetters) {\n return state.reservation?.tab?.id !== state.tab?.id\n || state.reservation?.tabItems.length !== state.tabItems.length\n || state.reservation?.tabItems.some((ti, i) => ti.id !== state.tabItems[i].id);\n },\n dragDropTab(state, localGetters, rootState, rootGetters): Tab | null {\n return state.tab;\n },\n dragDropTabItems(state, localGetters, rootState, rootGetters): TabItem[] {\n return state.tabItems;\n },\n dragDropDateEnd(state, localGetters, rootState, rootGetters): Date | null {\n if (state.reservation === null) return null;\n // const rules = rootState.settings.durationRules;\n // const date = endDateForReservation(state.reservation.dateBegin, state.tab, state.reservation.partySize, rules);\n const date = state.reservation.dateEnd;\n return date;\n },\n dragDropReservation(state, localGetters, rootState, rootGetters): Reservation | null {\n if (state.reservation === null) return null;\n\n const dr = cloneModel(state.reservation);\n\n dr.dateEnd = localGetters.dragDropDateEnd;\n dr.updateSlotsAndTimes();\n dr.tab = state.tab;\n dr.tabItems = state.tabItems;\n\n return dr;\n },\n dragDropConflictReservations(state, localGetters, rootState, rootGetters): Reservation[] {\n if (state.reservation === null) return [];\n return overbookedReservationsForReservation(\n state.reservation,\n rootGetters.dayValidReservationsAndBlocksByTabItemAndSlot,\n );\n },\n};\n\nconst DragDropStore = {\n namespaced: false,\n state: new DragDropState(),\n mutations,\n actions,\n getters,\n};\n\nexport default DragDropStore;\n","import { GetterTree, MutationTree, ActionTree } from 'vuex';\nimport { dateByAddingSeconds } from '@/services/time-utils';\nimport { UpdateOriginator } from '@/services/store-utils';\nimport IRootState, { IPushUpdateState } from './store-state';\n\nexport class PushUpdateState implements IPushUpdateState {\n requestTimestamp: number = 0;\n\n processTimestamp: number = 0;\n\n counter: number = 0;\n}\n\nconst mutations = >{\n RESET(state: PushUpdateState) {\n Object.assign(state, new PushUpdateState());\n },\n PUSH_SET_TIMESTAMP(state: PushUpdateState, p: { requestTimestamp?: number, processTimestamp?: number }) {\n if (p.requestTimestamp !== undefined) state.requestTimestamp = p.requestTimestamp;\n if (p.processTimestamp !== undefined) state.processTimestamp = p.processTimestamp;\n },\n PUSH_INCREMENT_COUNTER(state: PushUpdateState) {\n state.counter += 1;\n },\n};\n\nconst actions = >{\n setPushUpdateTimestamp({ state, commit, rootGetters }, p: { timestamp: number }) {\n if (state.requestTimestamp >= p.timestamp) return;\n commit('PUSH_SET_TIMESTAMP', { requestTimestamp: p.timestamp });\n },\n async performPushUpdate({\n state, commit, dispatch, getters,\n }) {\n if (!getters.pushUpdateRequestTimestamp) return;\n\n const processTimestamp = state.requestTimestamp;\n\n try {\n await dispatch('update', { originator: UpdateOriginator.Push });\n } finally {\n commit('PUSH_INCREMENT_COUNTER');\n if (state.processTimestamp < processTimestamp) commit('PUSH_SET_TIMESTAMP', { processTimestamp });\n }\n },\n};\n\nconst getters = >{\n pushUpdateRequestTimestamp(state, localGetters, rootState, rootGetters): number | null {\n // update not allowed now -> wait\n if (!rootState.autoUpdate.on || rootState.update.processing || rootState.update.updating) return null;\n\n // push update already attempted\n if (state.processTimestamp === state.requestTimestamp) return null;\n\n // push update not needed\n const updateTimestamp = parseFloat(rootState.session.unixTimestamp ?? '0');\n if (!updateTimestamp || updateTimestamp >= state.requestTimestamp) return null;\n\n return state.requestTimestamp;\n },\n};\n\nconst PushUpdateStore = {\n namespaced: false,\n state: new PushUpdateState(),\n mutations,\n actions,\n getters,\n};\n\nexport default PushUpdateStore;\n","// eslint-disable-next-line max-classes-per-file\nimport Vue from 'vue';\nimport Vuex, { StoreOptions } from 'vuex';\n\nimport httpClient, { IHttpClientState } from '@/api/http-client';\nimport grpcClient, { IGrpcClientState } from '@/grpc-api/grpc-client';\nimport Reservation from '@/model/Reservation';\nimport SessionStore from './session-store';\nimport UpdateStore from './update-store';\nimport ReservationsStore from './reservations-store';\nimport CodesStore from './codes-store';\nimport SettingsStore from './settings-store';\nimport AutoUpdateStore from './autoupdate-store';\nimport FilterStore from './filter-store';\nimport IStoreState from './store-state';\nimport {\n SearchStore, NameStore, PhoneStore, EmailStore,\n} from './search-store';\nimport ReservationStore from './reservation-store';\nimport ReservationSuggestionStore from './reservation-suggestions-store';\nimport DragDropStore from './drag-drop-store';\nimport DashboardStore from './dashboard-store';\nimport BillingStore from './billing-store';\nimport ReportsStore from './reports-store';\nimport PushUpdateStore from './pushupdate-store';\nimport MessageCenterStore from './message-center-store';\nimport AllocationsStore from './allocations-store';\nimport GuestbookStore from './guestbook-store';\nimport CampaignFilterStore from './campaign-filter-store';\nimport ServiceManagerStore from './service-manager-store';\nimport GiftcardsStore from './giftcards-store';\nimport FeedbackStore from './feedback-store';\nimport MarketingCampaignManagerStore from './marketing-campaign-manager-store';\n\nVue.use(Vuex);\n\nconst store = new Vuex.Store(\n {\n // strict: (process.env.NODE_ENV === 'development'),\n modules: {\n session: SessionStore,\n update: UpdateStore,\n reservations: ReservationsStore,\n codes: CodesStore,\n settings: SettingsStore,\n autoUpdate: AutoUpdateStore,\n pushUpdate: PushUpdateStore,\n filter: FilterStore,\n search: SearchStore,\n nameSearch: NameStore,\n phoneSearch: PhoneStore,\n emailSearch: EmailStore,\n reservation: ReservationStore,\n reservationSuggestions: ReservationSuggestionStore,\n dragDrop: DragDropStore,\n\n messageCenter: MessageCenterStore,\n allocations: AllocationsStore,\n guestbook: GuestbookStore,\n serviceManager: ServiceManagerStore,\n campaignFilter: CampaignFilterStore,\n billing: BillingStore,\n dashboard: DashboardStore,\n reports: ReportsStore,\n giftcards: GiftcardsStore,\n feedback: FeedbackStore,\n marketingCampaigManager: MarketingCampaignManagerStore,\n },\n } as StoreOptions,\n);\n\n// force http client to read and write session data through store\nhttpClient.state = new class implements IHttpClientState {\n // eslint-disable-next-line class-methods-use-this\n get store() { return store; }\n\n get token() { return this.store.state.session.token ?? undefined; }\n\n set token(token: string | undefined) { this.store.commit('SET_TOKEN', token); }\n\n get unixTimestamp() { return this.store.state.session.unixTimestamp ?? undefined; }\n\n set unixTimestamp(uts: string | undefined) { this.store.commit('SET_TIMESTAMP', { unixTimestamp: uts ?? null }); }\n\n get timestamp() { return this.store.state.session.timestamp ?? undefined; }\n\n set timestamp(ts: string | undefined) { this.store.commit('SET_TIMESTAMP', { timestamp: ts ?? null }); }\n\n get accountID() { return this.store.state.settings.account.id || undefined; }\n\n get fcmToken() { return this.store.state.session.fcmToken || undefined; }\n}();\n\n// force http client to read and write session data through store\ngrpcClient.state = new class implements IGrpcClientState {\n // eslint-disable-next-line class-methods-use-this\n get store() { return store; }\n\n get token() { return this.store.state.session.token ?? undefined; }\n\n set token(token: string | undefined) { this.store.commit('SET_TOKEN', token); }\n}();\n\nexport default store;\n\nexport { DashboardAllTabs, DashboardOnlineTabs } from './dashboard-store';\n\n// watch for edited reservation changes\nstore.watch(\n (state) => state.reservation.editedReservation,\n (reservation) => { store.dispatch('suggest', { reservation }); },\n { deep: true },\n);\n","import GstplnApp from '@/components/apps/app';\nimport AppStoreApp from '@/model/AppStoreApp';\n\nlet apps: GstplnApp[] = [];\n\nexport function initializeApps(as: GstplnApp[]) {\n apps = as;\n}\n\nexport function installApps(asas: AppStoreApp[]) {\n apps.forEach((app) => {\n let isInstalled = false;\n\n const a = asas.find((asa) => asa.name === app.apiName);\n if (a) isInstalled = a.isInstalled;\n\n // if (process.env.VUE_APP_SHOW_ALL_APPS === 'true') isInstalled = true;\n\n try {\n if (app.installed && !isInstalled) app.uninstall();\n if (!app.installed && isInstalled) app.install();\n } catch (e) {\n console.log('installApps error', e);\n }\n });\n}\n\nexport function activeApps(asas: AppStoreApp[]): GstplnApp[] {\n if (process.env.VUE_APP_SHOW_ALL_APPS === 'true') return apps;\n\n const disabledApps = process.env.VUE_APP_HIDE_APPS?.split(',') || [];\n return apps.flatMap((app) => {\n const a = asas.find((asa) => asa.name === app.apiName && !disabledApps.includes(app.id));\n return a === undefined ? [] : app;\n });\n}\n","// eslint-disable-next-line import/prefer-default-export\nexport function isSafariOS(): boolean {\n const ua = navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n const webkit = !!ua.match(/WebKit/i);\n const iOSSafari = iOS && webkit && !ua.match(/CriOS/i);\n return iOSSafari;\n}\n\nexport function isSafari(): boolean {\n const ua = navigator.userAgent;\n return !!ua.match(/webkit\\W(?!.*chrome).*safari\\W/i);\n}\n\nexport function capitalize(s:string | null): string {\n if (typeof s !== 'string') return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nexport function removeInvisibleUnicodeCharacters(input: string): string {\n const charactersToRemove: string[] = [\n '\\u0000', // NULL\n '\\u0001', // START OF HEADING\n '\\u0002', // START OF TEXT\n '\\u0003', // END OF TEXT\n '\\u0004', // END OF TRANSMISSION\n '\\u0005', // ENQUIRY\n '\\u0006', // ACKNOWLEDGE\n '\\u0007', // BELL\n '\\u0008', // BACKSPACE\n '\\u0009', // HORIZONTAL TAB\n '\\u000A', // LINE FEED (NEW LINE)\n '\\u000B', // VERTICAL TAB\n '\\u000C', // FORM FEED\n '\\u000D', // CARRIAGE RETURN\n '\\u000E', // SHIFT OUT\n '\\u000F', // SHIFT IN\n '\\u0010', // DATA LINK ESCAPE\n '\\u0011', // DEVICE CONTROL 1\n '\\u0012', // DEVICE CONTROL 2\n '\\u0013', // DEVICE CONTROL 3\n '\\u0014', // DEVICE CONTROL 4\n '\\u0015', // NEGATIVE ACKNOWLEDGE\n '\\u0016', // SYNCHRONOUS IDLE\n '\\u0017', // END OF TRANSMISSION BLOCK\n '\\u0018', // CANCEL\n '\\u0019', // END OF MEDIUM\n '\\u001A', // SUBSTITUTE\n '\\u001B', // ESCAPE\n '\\u001C', // FILE SEPARATOR\n '\\u001D', // GROUP SEPARATOR\n '\\u001E', // RECORD SEPARATOR\n '\\u001F', // UNIT SEPARATOR\n '\\u0020', // SPACE\n '\\u00A0', // NO-BREAK SPACE\n '\\u1680', // OGHAM SPACE MARK\n '\\u2000', // EN QUAD\n '\\u2001', // EM QUAD\n '\\u2002', // EN SPACE\n '\\u2003', // EM SPACE\n '\\u2004', // THREE-PER-EM SPACE\n '\\u2005', // FOUR-PER-EM SPACE\n '\\u2006', // SIX-PER-EM SPACE\n '\\u2007', // FIGURE SPACE\n '\\u2008', // PUNCTUATION SPACE\n '\\u2009', // THIN SPACE\n '\\u200A', // HAIR SPACE\n '\\u200B', // ZERO WIDTH SPACE\n '\\u200C', // ZERO WIDTH NON-JOINER\n '\\u200D', // ZERO WIDTH JOINER\n '\\u2028', // LINE SEPARATOR\n '\\u2029', // PARAGRAPH SEPARATOR\n '\\u202F', // NARROW NO-BREAK SPACE\n '\\u205F', // MEDIUM MATHEMATICAL SPACE\n '\\u3000', // IDEOGRAPHIC SPACE\n '\\uFEFF', // ZERO WIDTH NO-BREAK SPACE (BYTE ORDER MARK)\n '\\u00AD', // SOFT HYPHEN\n '\\u034F', // COMBINING GRAPHEME JOINER\n '\\u061C', // ARABIC LETTER MARK\n '\\u115F', // HANGUL CHOSEONG FILLER\n '\\u1160', // HANGUL JUNGSEONG FILLER\n '\\u17B4', // KHMER VOWEL INHERENT AQ\n '\\u180E', // MONGOLIAN VOWEL SEPARATOR\n '\\u2800', // BRAILLE PATTERN BLANK\n '\\u3164', // HANGUL FILLER\n '\\uFFA0', // HALFWIDTH HANGUL FILLER\n '\\u1D159', // MUSICAL SYMBOL NULL NOTEHEAD\n '\\u1D173', // MUSICAL SYMBOL BEGIN BEAM\n '\\u1D174', // MUSICAL SYMBOL END BEAM\n '\\u1D175', // MUSICAL SYMBOL BEGIN TIE\n '\\u1D176', // MUSICAL SYMBOL END TIE\n '\\u1D177', // MUSICAL SYMBOL BEGIN SLUR\n '\\u1D178', // MUSICAL SYMBOL END SLUR\n '\\u1D179', // MUSICAL SYMBOL BEGIN PHRASE\n '\\u1D17A', // MUSICAL SYMBOL END PHRASE\n '\\u200E', // LEFT-TO-RIGHT MARK\n '\\u200F', // RIGHT-TO-LEFT MARK\n '\\u202A', // LEFT-TO-RIGHT EMBEDDING\n '\\u202B', // RIGHT-TO-LEFT EMBEDDING\n '\\u202C', // POP DIRECTIONAL FORMATTING\n '\\u202D', // LEFT-TO-RIGHT OVERRIDE\n '\\u202E', // RIGHT-TO-LEFT OVERRIDE\n '\\u2060', // WORD JOINER (ZERO WIDTH NO-BREAK SPACE)\n '\\u2061', // FUNCTION APPLICATION\n '\\u2062', // INVISIBLE TIMES\n '\\u2063', // INVISIBLE SEPARATOR\n '\\u2064', // INVISIBLE PLUS\n '\\u2066', // LEFT-TO-RIGHT ISOLATE\n '\\u2067', // RIGHT-TO-LEFT ISOLATE\n '\\u2068', // FIRST STRONG ISOLATE\n '\\u2069', // POP DIRECTIONAL ISOLATE\n '\\u206A', // INHIBIT SYMMETRIC SWAPPING\n '\\u206B', // ACTIVATE SYMMETRIC SWAPPING\n '\\u206C', // INHIBIT ARABIC FORM SHAPING\n '\\u206D', // ACTIVATE ARABIC FORM SHAPING\n '\\u206E', // NATIONAL DIGIT SHAPES\n '\\u206F', // NOMINAL DIGIT SHAPES\n ];\n\n const characterSetToRemove = new Set(charactersToRemove);\n const filteredScalars = Array.from(input).filter((char) => !characterSetToRemove.has(char));\n const cleanString = filteredScalars.join('');\n\n return cleanString;\n}\n","import i18n from '@/plugins/i18n';\nimport { TranslateResult } from 'vue-i18n';\n\nexport interface MenuItem {\n icon?: string,\n filledIcon?: string,\n text: string|TranslateResult,\n link?:string,\n labelBadge?: string,\n subitems?: MenuItem[]\n disabled?:boolean\n}\nexport function reportsMenuItems(): MenuItem[] {\n const reportsMenu = [\n { text: i18n.t('title.reservations'), link: '/report/reservations' },\n { text: i18n.t('title.weekdays'), link: '/report/weekdays' },\n { text: i18n.t('title.services'), link: '/report/services' },\n { text: i18n.t('title.feedback'), link: '/report/feedback' },\n { text: i18n.t('title.messages'), link: '/report/messages' },\n ];\n\n return reportsMenu;\n}\n\nexport function newsletterMenuItems(): MenuItem[] {\n return [\n { text: i18n.t('title.newsletter_campaigns'), link: '/newsletter/campaigns' },\n { text: i18n.t('title.newsletter_library'), link: '/newsletter/library' },\n ];\n}\n\nexport function reservationMenuItems(): MenuItem[] {\n return [\n {\n icon: 'mdi-account-group-outline',\n filledIcon: 'mdi-account-group',\n text: i18n.t('title.guests'),\n link: '/guests',\n },\n { icon: 'mdi-chart-timeline', text: i18n.t('title.tables'), link: '/tables' },\n { icon: 'mdi-table-chair', text: i18n.t('label.floor_plan'), link: '/floor' },\n ];\n}\n\nexport function settingsMenuItems(p: { billingPageAllowed?: boolean}): MenuItem[] {\n const settingsMenu = [\n {\n text: i18n.t('title.account'),\n subitems: [\n { text: i18n.t('title.general'), link: '/settings/general' },\n ],\n },\n\n { text: i18n.t('title.users'), link: '/settings/users' },\n { text: i18n.t('title.sections'), link: '/settings/sections' },\n { text: i18n.t('title.online_reservations'), link: '/settings/online' },\n {\n text: i18n.t('title.opening_hours'),\n subitems: [\n { text: i18n.t('title.set_opening_hours'), link: '/settings/hours' },\n { text: i18n.t('title.set_special_hours'), link: '/settings/special-hours' },\n ],\n },\n { text: i18n.t('title.service_manager'), link: '/settings/service-manager' },\n { text: i18n.t('title.feedback'), link: '/settings/feedback' },\n {\n text: i18n.t('title.message_center'),\n subitems: [\n { text: i18n.t('title.messages'), link: '/settings/message-center' },\n { text: i18n.t('title.sms'), link: '/settings/sms' },\n ],\n },\n {\n text: i18n.t('title.preferences'),\n subitems: [\n { text: i18n.t('title.manage_employee_names'), link: '/settings/employees' },\n { text: i18n.t('title.manage_tags'), link: '/settings/tagnotes' },\n { text: i18n.t('title.manage_reservation_labels'), link: '/settings/labels' },\n { text: i18n.t('title.advanced_settings'), link: '/settings/advanced' },\n ],\n },\n ];\n\n if (p.billingPageAllowed) {\n settingsMenu[0].subitems?.push({ text: i18n.t('title.billing'), link: '/settings/billing' });\n // settingsMenu[6].subitems?.push({ text: i18n.t('title.sms_notifications'), link: '/settings/sms' });\n }\n\n return settingsMenu;\n}\n","import i18n from '@/plugins/i18n';\nimport { ReservationStatus } from '@/model/Reservation';\n\nexport const AllStatuses = [\n ReservationStatus.Planned,\n ReservationStatus.Seated,\n ReservationStatus.CheckedIn,\n ReservationStatus.CheckedOut,\n ReservationStatus.Confirmed,\n ReservationStatus.NonConfirmed,\n ReservationStatus.WaitingList,\n ReservationStatus.Cancelled,\n ReservationStatus.NoShow,\n ReservationStatus.Spam,\n ReservationStatus.Deleted,\n];\n\nexport const InvalidStatuses = [\n ReservationStatus.WaitingList,\n ReservationStatus.Cancelled,\n ReservationStatus.NoShow,\n ReservationStatus.Spam,\n ReservationStatus.Deleted,\n];\n\nexport const InvalidStatusesForToday = [...InvalidStatuses, ReservationStatus.CheckedOut];\n\nexport const EmployeeNotNeededStatuses = [\n ReservationStatus.CheckedIn, ReservationStatus.Seated, ReservationStatus.CheckedOut];\n\nexport const WaitingListReservationStatuses = [ReservationStatus.WaitingList];\n\nfunction statusToListItem(status: ReservationStatus) {\n if (status === ReservationStatus.Separator) return { divider: true };\n return { text: i18n.t(`code.status.${status}`), value: status };\n}\n\nexport function reservationStatusAllItems() {\n return [\n ReservationStatus.Valid, ReservationStatus.All, ReservationStatus.Separator,\n ReservationStatus.Planned, ReservationStatus.Seated, ReservationStatus.Separator,\n ReservationStatus.CheckedIn, ReservationStatus.CheckedOut, ReservationStatus.Separator,\n ReservationStatus.Confirmed, ReservationStatus.NonConfirmed, ReservationStatus.Separator,\n ReservationStatus.WaitingList, ReservationStatus.Separator,\n ReservationStatus.Cancelled, ReservationStatus.NoShow, ReservationStatus.Spam, ReservationStatus.Deleted,\n ].map((o) => statusToListItem(o));\n}\n\nexport function reservationStatusItems() {\n return [\n ReservationStatus.Planned, ReservationStatus.Seated, ReservationStatus.Separator,\n ReservationStatus.CheckedIn, ReservationStatus.CheckedOut, ReservationStatus.Separator,\n ReservationStatus.Confirmed, ReservationStatus.NonConfirmed, ReservationStatus.Separator,\n ReservationStatus.WaitingList, ReservationStatus.Separator,\n ReservationStatus.Cancelled, ReservationStatus.NoShow, ReservationStatus.Spam, ReservationStatus.Deleted,\n ].map((o) => statusToListItem(o));\n}\n\nexport function nextStatusesForStatus(status: ReservationStatus): ReservationStatus[] {\n switch (status) {\n case ReservationStatus.Planned:\n return [ReservationStatus.Seated, ReservationStatus.CheckedIn, ReservationStatus.CheckedOut];\n case ReservationStatus.Seated:\n return [ReservationStatus.CheckedOut];\n\n case ReservationStatus.CheckedIn:\n return [ReservationStatus.Seated, ReservationStatus.CheckedOut];\n case ReservationStatus.CheckedOut:\n return [];\n\n case ReservationStatus.Confirmed:\n return [ReservationStatus.Seated, ReservationStatus.CheckedIn, ReservationStatus.CheckedOut];\n case ReservationStatus.NonConfirmed:\n return [ReservationStatus.Confirmed];\n\n case ReservationStatus.WaitingList:\n return [ReservationStatus.Planned, ReservationStatus.Seated, ReservationStatus.CheckedIn];\n\n // case ReservationStatus.Cancelled: return [];\n // case ReservationStatus.Deleted: return [];\n // case ReservationStatus.NoShow: return [];\n // case ReservationStatus.Spam: return [];\n\n default: return [];\n }\n}\n\nexport function nextStatusItems(status: ReservationStatus) {\n return nextStatusesForStatus(status).map((o) => statusToListItem(o));\n}\n\nexport function nextStatusItemsBlock(status: ReservationStatus) {\n return [statusToListItem(ReservationStatus.Cancelled)];\n}\n","// source: app.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.App', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.App = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.App, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.App.displayName = 'proto.grpc.api.v1.App';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.App.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.App.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.App} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.App.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n isinstalled: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),\n showasmenuitem: jspb.Message.getBooleanFieldWithDefault(msg, 4, false),\n params: jspb.Message.getFieldWithDefault(msg, 5, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.App}\n */\nproto.grpc.api.v1.App.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.App;\n return proto.grpc.api.v1.App.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.App} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.App}\n */\nproto.grpc.api.v1.App.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsinstalled(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setShowasmenuitem(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setParams(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.App.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.App.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.App} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.App.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getIsinstalled();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n f = message.getShowasmenuitem();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n f = message.getParams();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.App.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.App} returns this\n */\nproto.grpc.api.v1.App.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.grpc.api.v1.App.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.App} returns this\n */\nproto.grpc.api.v1.App.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional bool isInstalled = 3;\n * @return {boolean}\n */\nproto.grpc.api.v1.App.prototype.getIsinstalled = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.App} returns this\n */\nproto.grpc.api.v1.App.prototype.setIsinstalled = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\n/**\n * optional bool showAsMenuItem = 4;\n * @return {boolean}\n */\nproto.grpc.api.v1.App.prototype.getShowasmenuitem = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.App} returns this\n */\nproto.grpc.api.v1.App.prototype.setShowasmenuitem = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\n/**\n * optional string params = 5;\n * @return {string}\n */\nproto.grpc.api.v1.App.prototype.getParams = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.App} returns this\n */\nproto.grpc.api.v1.App.prototype.setParams = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: apps_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar app_pb = require('./app_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./apps_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.AppsServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.AppsServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.AppRequest,\n * !proto.grpc.api.v1.AppResponse>}\n */\nconst methodDescriptor_AppsService_getApp = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.AppsService/getApp',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.AppRequest,\n proto.grpc.api.v1.AppResponse,\n /**\n * @param {!proto.grpc.api.v1.AppRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.AppResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.AppRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.AppResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.AppsServiceClient.prototype.getApp =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.AppsService/getApp',\n request,\n metadata || {},\n methodDescriptor_AppsService_getApp,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.AppRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.AppsServicePromiseClient.prototype.getApp =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.AppsService/getApp',\n request,\n metadata || {},\n methodDescriptor_AppsService_getApp);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.AppRequest,\n * !proto.grpc.api.v1.AppResponse>}\n */\nconst methodDescriptor_AppsService_updateApp = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.AppsService/updateApp',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.AppRequest,\n proto.grpc.api.v1.AppResponse,\n /**\n * @param {!proto.grpc.api.v1.AppRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.AppResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.AppRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.AppResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.AppsServiceClient.prototype.updateApp =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.AppsService/updateApp',\n request,\n metadata || {},\n methodDescriptor_AppsService_updateApp,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.AppRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.AppsServicePromiseClient.prototype.updateApp =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.AppsService/updateApp',\n request,\n metadata || {},\n methodDescriptor_AppsService_updateApp);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.AppRequest,\n * !proto.grpc.api.v1.AppResponse>}\n */\nconst methodDescriptor_AppsService_installApp = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.AppsService/installApp',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.AppRequest,\n proto.grpc.api.v1.AppResponse,\n /**\n * @param {!proto.grpc.api.v1.AppRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.AppResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.AppRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.AppResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.AppsServiceClient.prototype.installApp =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.AppsService/installApp',\n request,\n metadata || {},\n methodDescriptor_AppsService_installApp,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.AppRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.AppsServicePromiseClient.prototype.installApp =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.AppsService/installApp',\n request,\n metadata || {},\n methodDescriptor_AppsService_installApp);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: apps_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar app_pb = require('./app_pb.js');\ngoog.object.extend(proto, app_pb);\ngoog.exportSymbol('proto.grpc.api.v1.AppRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.AppResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.AppRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.AppRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.AppRequest.displayName = 'proto.grpc.api.v1.AppRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.AppResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.AppResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.AppResponse.displayName = 'proto.grpc.api.v1.AppResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.AppRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.AppRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.AppRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.AppRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n app: (f = msg.getApp()) && app_pb.App.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.AppRequest}\n */\nproto.grpc.api.v1.AppRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.AppRequest;\n return proto.grpc.api.v1.AppRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.AppRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.AppRequest}\n */\nproto.grpc.api.v1.AppRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new app_pb.App;\n reader.readMessage(value,app_pb.App.deserializeBinaryFromReader);\n msg.setApp(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.AppRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.AppRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.AppRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.AppRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getApp();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n app_pb.App.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional App app = 1;\n * @return {?proto.grpc.api.v1.App}\n */\nproto.grpc.api.v1.AppRequest.prototype.getApp = function() {\n return /** @type{?proto.grpc.api.v1.App} */ (\n jspb.Message.getWrapperField(this, app_pb.App, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.App|undefined} value\n * @return {!proto.grpc.api.v1.AppRequest} returns this\n*/\nproto.grpc.api.v1.AppRequest.prototype.setApp = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.AppRequest} returns this\n */\nproto.grpc.api.v1.AppRequest.prototype.clearApp = function() {\n return this.setApp(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.AppRequest.prototype.hasApp = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.AppResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.AppResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.AppResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.AppResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n app: (f = msg.getApp()) && app_pb.App.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.AppResponse}\n */\nproto.grpc.api.v1.AppResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.AppResponse;\n return proto.grpc.api.v1.AppResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.AppResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.AppResponse}\n */\nproto.grpc.api.v1.AppResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new app_pb.App;\n reader.readMessage(value,app_pb.App.deserializeBinaryFromReader);\n msg.setApp(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.AppResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.AppResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.AppResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.AppResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getApp();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n app_pb.App.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional App app = 1;\n * @return {?proto.grpc.api.v1.App}\n */\nproto.grpc.api.v1.AppResponse.prototype.getApp = function() {\n return /** @type{?proto.grpc.api.v1.App} */ (\n jspb.Message.getWrapperField(this, app_pb.App, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.App|undefined} value\n * @return {!proto.grpc.api.v1.AppResponse} returns this\n*/\nproto.grpc.api.v1.AppResponse.prototype.setApp = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.AppResponse} returns this\n */\nproto.grpc.api.v1.AppResponse.prototype.clearApp = function() {\n return this.setApp(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.AppResponse.prototype.hasApp = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: campaign.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.Campaign', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Campaign = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.Campaign, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Campaign.displayName = 'proto.grpc.api.v1.Campaign';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Campaign.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Campaign.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Campaign} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Campaign.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n subdomain: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Campaign}\n */\nproto.grpc.api.v1.Campaign.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Campaign;\n return proto.grpc.api.v1.Campaign.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Campaign} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Campaign}\n */\nproto.grpc.api.v1.Campaign.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setSubdomain(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Campaign.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Campaign.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Campaign} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Campaign.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getSubdomain();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Campaign.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Campaign} returns this\n */\nproto.grpc.api.v1.Campaign.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string subdomain = 2;\n * @return {string}\n */\nproto.grpc.api.v1.Campaign.prototype.getSubdomain = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Campaign} returns this\n */\nproto.grpc.api.v1.Campaign.prototype.setSubdomain = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: contact_filter.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.ContactFilter', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactFilter = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactFilter, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactFilter.displayName = 'proto.grpc.api.v1.ContactFilter';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactFilter.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactFilter.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactFilter} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilter.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n order: jspb.Message.getFieldWithDefault(msg, 2, 0),\n name: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n data: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n isdeleted: jspb.Message.getBooleanFieldWithDefault(msg, 5, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactFilter}\n */\nproto.grpc.api.v1.ContactFilter.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactFilter;\n return proto.grpc.api.v1.ContactFilter.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactFilter} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactFilter}\n */\nproto.grpc.api.v1.ContactFilter.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setOrder(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setData(value);\n break;\n case 5:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsdeleted(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactFilter.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactFilter.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactFilter} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilter.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getOrder();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getData();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getIsdeleted();\n if (f) {\n writer.writeBool(\n 5,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.ContactFilter.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ContactFilter} returns this\n */\nproto.grpc.api.v1.ContactFilter.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int32 order = 2;\n * @return {number}\n */\nproto.grpc.api.v1.ContactFilter.prototype.getOrder = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ContactFilter} returns this\n */\nproto.grpc.api.v1.ContactFilter.prototype.setOrder = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional string name = 3;\n * @return {string}\n */\nproto.grpc.api.v1.ContactFilter.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ContactFilter} returns this\n */\nproto.grpc.api.v1.ContactFilter.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string data = 4;\n * @return {string}\n */\nproto.grpc.api.v1.ContactFilter.prototype.getData = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ContactFilter} returns this\n */\nproto.grpc.api.v1.ContactFilter.prototype.setData = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional bool isDeleted = 5;\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactFilter.prototype.getIsdeleted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ContactFilter} returns this\n */\nproto.grpc.api.v1.ContactFilter.prototype.setIsdeleted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 5, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: contact_manager_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar contact_pb = require('./contact_pb.js')\n\nvar employee_pb = require('./employee_pb.js')\n\nvar contact_filter_pb = require('./contact_filter_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./contact_manager_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ContactServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ContactServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactIdRequest,\n * !proto.grpc.api.v1.ContactResponse>}\n */\nconst methodDescriptor_ContactService_get = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactService/get',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactIdRequest,\n proto.grpc.api.v1.ContactResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactServiceClient.prototype.get =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactService/get',\n request,\n metadata || {},\n methodDescriptor_ContactService_get,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactServicePromiseClient.prototype.get =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactService/get',\n request,\n metadata || {},\n methodDescriptor_ContactService_get);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactRequest,\n * !proto.grpc.api.v1.ContactResponse>}\n */\nconst methodDescriptor_ContactService_create = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactService/create',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactRequest,\n proto.grpc.api.v1.ContactResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactServiceClient.prototype.create =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactService/create',\n request,\n metadata || {},\n methodDescriptor_ContactService_create,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactServicePromiseClient.prototype.create =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactService/create',\n request,\n metadata || {},\n methodDescriptor_ContactService_create);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactRequest,\n * !proto.grpc.api.v1.ContactResponse>}\n */\nconst methodDescriptor_ContactService_update = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactService/update',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactRequest,\n proto.grpc.api.v1.ContactResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactServiceClient.prototype.update =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactService/update',\n request,\n metadata || {},\n methodDescriptor_ContactService_update,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactServicePromiseClient.prototype.update =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactService/update',\n request,\n metadata || {},\n methodDescriptor_ContactService_update);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactIdRequest,\n * !proto.grpc.api.v1.ContactResponse>}\n */\nconst methodDescriptor_ContactService_delete = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactService/delete',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactIdRequest,\n proto.grpc.api.v1.ContactResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactServiceClient.prototype.delete =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactService/delete',\n request,\n metadata || {},\n methodDescriptor_ContactService_delete,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactServicePromiseClient.prototype.delete =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactService/delete',\n request,\n metadata || {},\n methodDescriptor_ContactService_delete);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactListRequest,\n * !proto.grpc.api.v1.ContactListResponse>}\n */\nconst methodDescriptor_ContactService_list = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactService/list',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.ContactListRequest,\n proto.grpc.api.v1.ContactListResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactListRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactListResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactListRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactServiceClient.prototype.list =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactService/list',\n request,\n metadata || {},\n methodDescriptor_ContactService_list);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactListRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactServicePromiseClient.prototype.list =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactService/list',\n request,\n metadata || {},\n methodDescriptor_ContactService_list);\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ContactFilterServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ContactFilterServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactFilterIdRequest,\n * !proto.grpc.api.v1.ContactFilterResponse>}\n */\nconst methodDescriptor_ContactFilterService_get = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactFilterService/get',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactFilterIdRequest,\n proto.grpc.api.v1.ContactFilterResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactFilterResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactFilterResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactFilterServiceClient.prototype.get =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/get',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_get,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactFilterServicePromiseClient.prototype.get =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/get',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_get);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactFilterRequest,\n * !proto.grpc.api.v1.ContactFilterResponse>}\n */\nconst methodDescriptor_ContactFilterService_create = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactFilterService/create',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactFilterRequest,\n proto.grpc.api.v1.ContactFilterResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactFilterRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactFilterResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactFilterResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactFilterServiceClient.prototype.create =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/create',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_create,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactFilterServicePromiseClient.prototype.create =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/create',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_create);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactFilterRequest,\n * !proto.grpc.api.v1.ContactFilterResponse>}\n */\nconst methodDescriptor_ContactFilterService_update = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactFilterService/update',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactFilterRequest,\n proto.grpc.api.v1.ContactFilterResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactFilterRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactFilterResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactFilterResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactFilterServiceClient.prototype.update =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/update',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_update,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactFilterServicePromiseClient.prototype.update =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/update',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_update);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactFilterIdRequest,\n * !proto.grpc.api.v1.ContactFilterResponse>}\n */\nconst methodDescriptor_ContactFilterService_delete = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactFilterService/delete',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ContactFilterIdRequest,\n proto.grpc.api.v1.ContactFilterResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactFilterResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.ContactFilterResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactFilterServiceClient.prototype.delete =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/delete',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_delete,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ContactFilterServicePromiseClient.prototype.delete =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/delete',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_delete);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ContactFilterListRequest,\n * !proto.grpc.api.v1.ContactFilterListResponse>}\n */\nconst methodDescriptor_ContactFilterService_list = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactFilterService/list',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.ContactFilterListRequest,\n proto.grpc.api.v1.ContactFilterListResponse,\n /**\n * @param {!proto.grpc.api.v1.ContactFilterListRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactFilterListResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterListRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactFilterServiceClient.prototype.list =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/list',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_list);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ContactFilterListRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactFilterServicePromiseClient.prototype.list =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactFilterService/list',\n request,\n metadata || {},\n methodDescriptor_ContactFilterService_list);\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ContactManagerServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ContactManagerServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.SelectedContactsRequest,\n * !proto.grpc.api.v1.ContactListResponse>}\n */\nconst methodDescriptor_ContactManagerService_selectedContacts = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactManagerService/selectedContacts',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.SelectedContactsRequest,\n proto.grpc.api.v1.ContactListResponse,\n /**\n * @param {!proto.grpc.api.v1.SelectedContactsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactListResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.SelectedContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServiceClient.prototype.selectedContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/selectedContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_selectedContacts);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.SelectedContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServicePromiseClient.prototype.selectedContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/selectedContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_selectedContacts);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MergeContactsRequest,\n * !proto.grpc.api.v1.ContactListResponse>}\n */\nconst methodDescriptor_ContactManagerService_mergeContacts = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactManagerService/mergeContacts',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.MergeContactsRequest,\n proto.grpc.api.v1.ContactListResponse,\n /**\n * @param {!proto.grpc.api.v1.MergeContactsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactListResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MergeContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServiceClient.prototype.mergeContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/mergeContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_mergeContacts);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MergeContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServicePromiseClient.prototype.mergeContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/mergeContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_mergeContacts);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.DeleteContactsRequest,\n * !proto.grpc.api.v1.ContactListResponse>}\n */\nconst methodDescriptor_ContactManagerService_deleteContacts = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactManagerService/deleteContacts',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.DeleteContactsRequest,\n proto.grpc.api.v1.ContactListResponse,\n /**\n * @param {!proto.grpc.api.v1.DeleteContactsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactListResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.DeleteContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServiceClient.prototype.deleteContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/deleteContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_deleteContacts);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.DeleteContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServicePromiseClient.prototype.deleteContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/deleteContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_deleteContacts);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.SearchContactsRequest,\n * !proto.grpc.api.v1.ContactListResponse>}\n */\nconst methodDescriptor_ContactManagerService_searchContacts = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ContactManagerService/searchContacts',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.SearchContactsRequest,\n proto.grpc.api.v1.ContactListResponse,\n /**\n * @param {!proto.grpc.api.v1.SearchContactsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ContactListResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.SearchContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServiceClient.prototype.searchContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/searchContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_searchContacts);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.SearchContactsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ContactManagerServicePromiseClient.prototype.searchContacts =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ContactManagerService/searchContacts',\n request,\n metadata || {},\n methodDescriptor_ContactManagerService_searchContacts);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: contact_manager_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar contact_pb = require('./contact_pb.js');\ngoog.object.extend(proto, contact_pb);\nvar employee_pb = require('./employee_pb.js');\ngoog.object.extend(proto, employee_pb);\nvar contact_filter_pb = require('./contact_filter_pb.js');\ngoog.object.extend(proto, contact_filter_pb);\ngoog.exportSymbol('proto.grpc.api.v1.ContactFilterIdRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactFilterListRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactFilterListResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactFilterRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactFilterResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactIdRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactListRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactListResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.DeleteContactsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MergeContactsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.SearchContactsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.SelectedContactsRequest', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactRequest.displayName = 'proto.grpc.api.v1.ContactRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactIdRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactIdRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactIdRequest.displayName = 'proto.grpc.api.v1.ContactIdRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactListRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactListRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactListRequest.displayName = 'proto.grpc.api.v1.ContactListRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactResponse.displayName = 'proto.grpc.api.v1.ContactResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactListResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactListResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactListResponse.displayName = 'proto.grpc.api.v1.ContactListResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactFilterRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactFilterRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactFilterRequest.displayName = 'proto.grpc.api.v1.ContactFilterRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactFilterIdRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactFilterIdRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactFilterIdRequest.displayName = 'proto.grpc.api.v1.ContactFilterIdRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactFilterListRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactFilterListRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactFilterListRequest.displayName = 'proto.grpc.api.v1.ContactFilterListRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactFilterResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactFilterResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactFilterResponse.displayName = 'proto.grpc.api.v1.ContactFilterResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ContactFilterListResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ContactFilterListResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ContactFilterListResponse.displayName = 'proto.grpc.api.v1.ContactFilterListResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.SelectedContactsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.SelectedContactsRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.SelectedContactsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.SelectedContactsRequest.displayName = 'proto.grpc.api.v1.SelectedContactsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MergeContactsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.MergeContactsRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.MergeContactsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MergeContactsRequest.displayName = 'proto.grpc.api.v1.MergeContactsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.DeleteContactsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.DeleteContactsRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.DeleteContactsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.DeleteContactsRequest.displayName = 'proto.grpc.api.v1.DeleteContactsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.SearchContactsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.SearchContactsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.SearchContactsRequest.displayName = 'proto.grpc.api.v1.SearchContactsRequest';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n contact: (f = msg.getContact()) && contact_pb.Contact.toObject(includeInstance, f),\n employee: (f = msg.getEmployee()) && employee_pb.Employee.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactRequest}\n */\nproto.grpc.api.v1.ContactRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactRequest;\n return proto.grpc.api.v1.ContactRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactRequest}\n */\nproto.grpc.api.v1.ContactRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new contact_pb.Contact;\n reader.readMessage(value,contact_pb.Contact.deserializeBinaryFromReader);\n msg.setContact(value);\n break;\n case 3:\n var value = new employee_pb.Employee;\n reader.readMessage(value,employee_pb.Employee.deserializeBinaryFromReader);\n msg.setEmployee(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContact();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n contact_pb.Contact.serializeBinaryToWriter\n );\n }\n f = message.getEmployee();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n employee_pb.Employee.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Contact contact = 1;\n * @return {?proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.ContactRequest.prototype.getContact = function() {\n return /** @type{?proto.grpc.api.v1.Contact} */ (\n jspb.Message.getWrapperField(this, contact_pb.Contact, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Contact|undefined} value\n * @return {!proto.grpc.api.v1.ContactRequest} returns this\n*/\nproto.grpc.api.v1.ContactRequest.prototype.setContact = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactRequest} returns this\n */\nproto.grpc.api.v1.ContactRequest.prototype.clearContact = function() {\n return this.setContact(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactRequest.prototype.hasContact = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * optional Employee employee = 3;\n * @return {?proto.grpc.api.v1.Employee}\n */\nproto.grpc.api.v1.ContactRequest.prototype.getEmployee = function() {\n return /** @type{?proto.grpc.api.v1.Employee} */ (\n jspb.Message.getWrapperField(this, employee_pb.Employee, 3));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Employee|undefined} value\n * @return {!proto.grpc.api.v1.ContactRequest} returns this\n*/\nproto.grpc.api.v1.ContactRequest.prototype.setEmployee = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactRequest} returns this\n */\nproto.grpc.api.v1.ContactRequest.prototype.clearEmployee = function() {\n return this.setEmployee(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactRequest.prototype.hasEmployee = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactIdRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactIdRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactIdRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactIdRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 2, 0),\n employee: (f = msg.getEmployee()) && employee_pb.Employee.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactIdRequest}\n */\nproto.grpc.api.v1.ContactIdRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactIdRequest;\n return proto.grpc.api.v1.ContactIdRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactIdRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactIdRequest}\n */\nproto.grpc.api.v1.ContactIdRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 3:\n var value = new employee_pb.Employee;\n reader.readMessage(value,employee_pb.Employee.deserializeBinaryFromReader);\n msg.setEmployee(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactIdRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactIdRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactIdRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactIdRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getEmployee();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n employee_pb.Employee.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional int64 id = 2;\n * @return {number}\n */\nproto.grpc.api.v1.ContactIdRequest.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ContactIdRequest} returns this\n */\nproto.grpc.api.v1.ContactIdRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional Employee employee = 3;\n * @return {?proto.grpc.api.v1.Employee}\n */\nproto.grpc.api.v1.ContactIdRequest.prototype.getEmployee = function() {\n return /** @type{?proto.grpc.api.v1.Employee} */ (\n jspb.Message.getWrapperField(this, employee_pb.Employee, 3));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Employee|undefined} value\n * @return {!proto.grpc.api.v1.ContactIdRequest} returns this\n*/\nproto.grpc.api.v1.ContactIdRequest.prototype.setEmployee = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactIdRequest} returns this\n */\nproto.grpc.api.v1.ContactIdRequest.prototype.clearEmployee = function() {\n return this.setEmployee(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactIdRequest.prototype.hasEmployee = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactListRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactListRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactListRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactListRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactListRequest}\n */\nproto.grpc.api.v1.ContactListRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactListRequest;\n return proto.grpc.api.v1.ContactListRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactListRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactListRequest}\n */\nproto.grpc.api.v1.ContactListRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactListRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactListRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactListRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactListRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n contact: (f = msg.getContact()) && contact_pb.Contact.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactResponse}\n */\nproto.grpc.api.v1.ContactResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactResponse;\n return proto.grpc.api.v1.ContactResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactResponse}\n */\nproto.grpc.api.v1.ContactResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new contact_pb.Contact;\n reader.readMessage(value,contact_pb.Contact.deserializeBinaryFromReader);\n msg.setContact(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContact();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n contact_pb.Contact.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Contact contact = 1;\n * @return {?proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.ContactResponse.prototype.getContact = function() {\n return /** @type{?proto.grpc.api.v1.Contact} */ (\n jspb.Message.getWrapperField(this, contact_pb.Contact, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Contact|undefined} value\n * @return {!proto.grpc.api.v1.ContactResponse} returns this\n*/\nproto.grpc.api.v1.ContactResponse.prototype.setContact = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactResponse} returns this\n */\nproto.grpc.api.v1.ContactResponse.prototype.clearContact = function() {\n return this.setContact(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactResponse.prototype.hasContact = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactListResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactListResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactListResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactListResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n contact: (f = msg.getContact()) && contact_pb.Contact.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactListResponse}\n */\nproto.grpc.api.v1.ContactListResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactListResponse;\n return proto.grpc.api.v1.ContactListResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactListResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactListResponse}\n */\nproto.grpc.api.v1.ContactListResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new contact_pb.Contact;\n reader.readMessage(value,contact_pb.Contact.deserializeBinaryFromReader);\n msg.setContact(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactListResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactListResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactListResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactListResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContact();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n contact_pb.Contact.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Contact contact = 1;\n * @return {?proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.ContactListResponse.prototype.getContact = function() {\n return /** @type{?proto.grpc.api.v1.Contact} */ (\n jspb.Message.getWrapperField(this, contact_pb.Contact, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Contact|undefined} value\n * @return {!proto.grpc.api.v1.ContactListResponse} returns this\n*/\nproto.grpc.api.v1.ContactListResponse.prototype.setContact = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactListResponse} returns this\n */\nproto.grpc.api.v1.ContactListResponse.prototype.clearContact = function() {\n return this.setContact(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactListResponse.prototype.hasContact = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactFilterRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactFilterRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactFilterRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n contactfilter: (f = msg.getContactfilter()) && contact_filter_pb.ContactFilter.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactFilterRequest}\n */\nproto.grpc.api.v1.ContactFilterRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactFilterRequest;\n return proto.grpc.api.v1.ContactFilterRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactFilterRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactFilterRequest}\n */\nproto.grpc.api.v1.ContactFilterRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new contact_filter_pb.ContactFilter;\n reader.readMessage(value,contact_filter_pb.ContactFilter.deserializeBinaryFromReader);\n msg.setContactfilter(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactFilterRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactFilterRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactFilterRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContactfilter();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n contact_filter_pb.ContactFilter.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ContactFilter contactFilter = 1;\n * @return {?proto.grpc.api.v1.ContactFilter}\n */\nproto.grpc.api.v1.ContactFilterRequest.prototype.getContactfilter = function() {\n return /** @type{?proto.grpc.api.v1.ContactFilter} */ (\n jspb.Message.getWrapperField(this, contact_filter_pb.ContactFilter, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ContactFilter|undefined} value\n * @return {!proto.grpc.api.v1.ContactFilterRequest} returns this\n*/\nproto.grpc.api.v1.ContactFilterRequest.prototype.setContactfilter = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactFilterRequest} returns this\n */\nproto.grpc.api.v1.ContactFilterRequest.prototype.clearContactfilter = function() {\n return this.setContactfilter(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactFilterRequest.prototype.hasContactfilter = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactFilterIdRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactFilterIdRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterIdRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactFilterIdRequest}\n */\nproto.grpc.api.v1.ContactFilterIdRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactFilterIdRequest;\n return proto.grpc.api.v1.ContactFilterIdRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactFilterIdRequest}\n */\nproto.grpc.api.v1.ContactFilterIdRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactFilterIdRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactFilterIdRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactFilterIdRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterIdRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 2;\n * @return {number}\n */\nproto.grpc.api.v1.ContactFilterIdRequest.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ContactFilterIdRequest} returns this\n */\nproto.grpc.api.v1.ContactFilterIdRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactFilterListRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactFilterListRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactFilterListRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterListRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactFilterListRequest}\n */\nproto.grpc.api.v1.ContactFilterListRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactFilterListRequest;\n return proto.grpc.api.v1.ContactFilterListRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactFilterListRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactFilterListRequest}\n */\nproto.grpc.api.v1.ContactFilterListRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactFilterListRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactFilterListRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactFilterListRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterListRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactFilterResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactFilterResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactFilterResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n contactfilter: (f = msg.getContactfilter()) && contact_filter_pb.ContactFilter.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactFilterResponse}\n */\nproto.grpc.api.v1.ContactFilterResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactFilterResponse;\n return proto.grpc.api.v1.ContactFilterResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactFilterResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactFilterResponse}\n */\nproto.grpc.api.v1.ContactFilterResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new contact_filter_pb.ContactFilter;\n reader.readMessage(value,contact_filter_pb.ContactFilter.deserializeBinaryFromReader);\n msg.setContactfilter(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactFilterResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactFilterResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactFilterResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContactfilter();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n contact_filter_pb.ContactFilter.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ContactFilter contactFilter = 1;\n * @return {?proto.grpc.api.v1.ContactFilter}\n */\nproto.grpc.api.v1.ContactFilterResponse.prototype.getContactfilter = function() {\n return /** @type{?proto.grpc.api.v1.ContactFilter} */ (\n jspb.Message.getWrapperField(this, contact_filter_pb.ContactFilter, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ContactFilter|undefined} value\n * @return {!proto.grpc.api.v1.ContactFilterResponse} returns this\n*/\nproto.grpc.api.v1.ContactFilterResponse.prototype.setContactfilter = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactFilterResponse} returns this\n */\nproto.grpc.api.v1.ContactFilterResponse.prototype.clearContactfilter = function() {\n return this.setContactfilter(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactFilterResponse.prototype.hasContactfilter = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ContactFilterListResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ContactFilterListResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ContactFilterListResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterListResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n contactfilter: (f = msg.getContactfilter()) && contact_filter_pb.ContactFilter.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ContactFilterListResponse}\n */\nproto.grpc.api.v1.ContactFilterListResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ContactFilterListResponse;\n return proto.grpc.api.v1.ContactFilterListResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ContactFilterListResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ContactFilterListResponse}\n */\nproto.grpc.api.v1.ContactFilterListResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = new contact_filter_pb.ContactFilter;\n reader.readMessage(value,contact_filter_pb.ContactFilter.deserializeBinaryFromReader);\n msg.setContactfilter(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ContactFilterListResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ContactFilterListResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ContactFilterListResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ContactFilterListResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContactfilter();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n contact_filter_pb.ContactFilter.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ContactFilter contactFilter = 2;\n * @return {?proto.grpc.api.v1.ContactFilter}\n */\nproto.grpc.api.v1.ContactFilterListResponse.prototype.getContactfilter = function() {\n return /** @type{?proto.grpc.api.v1.ContactFilter} */ (\n jspb.Message.getWrapperField(this, contact_filter_pb.ContactFilter, 2));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ContactFilter|undefined} value\n * @return {!proto.grpc.api.v1.ContactFilterListResponse} returns this\n*/\nproto.grpc.api.v1.ContactFilterListResponse.prototype.setContactfilter = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ContactFilterListResponse} returns this\n */\nproto.grpc.api.v1.ContactFilterListResponse.prototype.clearContactfilter = function() {\n return this.setContactfilter(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ContactFilterListResponse.prototype.hasContactfilter = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.SelectedContactsRequest.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.SelectedContactsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.SelectedContactsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.SelectedContactsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.SelectedContactsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n idsList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.SelectedContactsRequest}\n */\nproto.grpc.api.v1.SelectedContactsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.SelectedContactsRequest;\n return proto.grpc.api.v1.SelectedContactsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.SelectedContactsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.SelectedContactsRequest}\n */\nproto.grpc.api.v1.SelectedContactsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt64() : [reader.readInt64()]);\n for (var i = 0; i < values.length; i++) {\n msg.addIds(values[i]);\n }\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.SelectedContactsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.SelectedContactsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.SelectedContactsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.SelectedContactsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getIdsList();\n if (f.length > 0) {\n writer.writePackedInt64(\n 2,\n f\n );\n }\n};\n\n\n/**\n * repeated int64 ids = 2;\n * @return {!Array}\n */\nproto.grpc.api.v1.SelectedContactsRequest.prototype.getIdsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.SelectedContactsRequest} returns this\n */\nproto.grpc.api.v1.SelectedContactsRequest.prototype.setIdsList = function(value) {\n return jspb.Message.setField(this, 2, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.SelectedContactsRequest} returns this\n */\nproto.grpc.api.v1.SelectedContactsRequest.prototype.addIds = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.SelectedContactsRequest} returns this\n */\nproto.grpc.api.v1.SelectedContactsRequest.prototype.clearIdsList = function() {\n return this.setIdsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.MergeContactsRequest.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MergeContactsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MergeContactsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MergeContactsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n contact: (f = msg.getContact()) && contact_pb.Contact.toObject(includeInstance, f),\n idsList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,\n employee: (f = msg.getEmployee()) && employee_pb.Employee.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MergeContactsRequest}\n */\nproto.grpc.api.v1.MergeContactsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MergeContactsRequest;\n return proto.grpc.api.v1.MergeContactsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MergeContactsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MergeContactsRequest}\n */\nproto.grpc.api.v1.MergeContactsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new contact_pb.Contact;\n reader.readMessage(value,contact_pb.Contact.deserializeBinaryFromReader);\n msg.setContact(value);\n break;\n case 2:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt64() : [reader.readInt64()]);\n for (var i = 0; i < values.length; i++) {\n msg.addIds(values[i]);\n }\n break;\n case 3:\n var value = new employee_pb.Employee;\n reader.readMessage(value,employee_pb.Employee.deserializeBinaryFromReader);\n msg.setEmployee(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MergeContactsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MergeContactsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MergeContactsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContact();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n contact_pb.Contact.serializeBinaryToWriter\n );\n }\n f = message.getIdsList();\n if (f.length > 0) {\n writer.writePackedInt64(\n 2,\n f\n );\n }\n f = message.getEmployee();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n employee_pb.Employee.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Contact contact = 1;\n * @return {?proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.getContact = function() {\n return /** @type{?proto.grpc.api.v1.Contact} */ (\n jspb.Message.getWrapperField(this, contact_pb.Contact, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Contact|undefined} value\n * @return {!proto.grpc.api.v1.MergeContactsRequest} returns this\n*/\nproto.grpc.api.v1.MergeContactsRequest.prototype.setContact = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MergeContactsRequest} returns this\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.clearContact = function() {\n return this.setContact(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.hasContact = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated int64 ids = 2;\n * @return {!Array}\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.getIdsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.MergeContactsRequest} returns this\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.setIdsList = function(value) {\n return jspb.Message.setField(this, 2, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.MergeContactsRequest} returns this\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.addIds = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.MergeContactsRequest} returns this\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.clearIdsList = function() {\n return this.setIdsList([]);\n};\n\n\n/**\n * optional Employee employee = 3;\n * @return {?proto.grpc.api.v1.Employee}\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.getEmployee = function() {\n return /** @type{?proto.grpc.api.v1.Employee} */ (\n jspb.Message.getWrapperField(this, employee_pb.Employee, 3));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Employee|undefined} value\n * @return {!proto.grpc.api.v1.MergeContactsRequest} returns this\n*/\nproto.grpc.api.v1.MergeContactsRequest.prototype.setEmployee = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MergeContactsRequest} returns this\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.clearEmployee = function() {\n return this.setEmployee(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MergeContactsRequest.prototype.hasEmployee = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.DeleteContactsRequest.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.DeleteContactsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.DeleteContactsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DeleteContactsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n idsList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f,\n employee: (f = msg.getEmployee()) && employee_pb.Employee.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.DeleteContactsRequest}\n */\nproto.grpc.api.v1.DeleteContactsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.DeleteContactsRequest;\n return proto.grpc.api.v1.DeleteContactsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.DeleteContactsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.DeleteContactsRequest}\n */\nproto.grpc.api.v1.DeleteContactsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt64() : [reader.readInt64()]);\n for (var i = 0; i < values.length; i++) {\n msg.addIds(values[i]);\n }\n break;\n case 3:\n var value = new employee_pb.Employee;\n reader.readMessage(value,employee_pb.Employee.deserializeBinaryFromReader);\n msg.setEmployee(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.DeleteContactsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.DeleteContactsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DeleteContactsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getIdsList();\n if (f.length > 0) {\n writer.writePackedInt64(\n 2,\n f\n );\n }\n f = message.getEmployee();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n employee_pb.Employee.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated int64 ids = 2;\n * @return {!Array}\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.getIdsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.DeleteContactsRequest} returns this\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.setIdsList = function(value) {\n return jspb.Message.setField(this, 2, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.DeleteContactsRequest} returns this\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.addIds = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.DeleteContactsRequest} returns this\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.clearIdsList = function() {\n return this.setIdsList([]);\n};\n\n\n/**\n * optional Employee employee = 3;\n * @return {?proto.grpc.api.v1.Employee}\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.getEmployee = function() {\n return /** @type{?proto.grpc.api.v1.Employee} */ (\n jspb.Message.getWrapperField(this, employee_pb.Employee, 3));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Employee|undefined} value\n * @return {!proto.grpc.api.v1.DeleteContactsRequest} returns this\n*/\nproto.grpc.api.v1.DeleteContactsRequest.prototype.setEmployee = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.DeleteContactsRequest} returns this\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.clearEmployee = function() {\n return this.setEmployee(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.DeleteContactsRequest.prototype.hasEmployee = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.SearchContactsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.SearchContactsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.SearchContactsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.SearchContactsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n filter: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.SearchContactsRequest}\n */\nproto.grpc.api.v1.SearchContactsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.SearchContactsRequest;\n return proto.grpc.api.v1.SearchContactsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.SearchContactsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.SearchContactsRequest}\n */\nproto.grpc.api.v1.SearchContactsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setFilter(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.SearchContactsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.SearchContactsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.SearchContactsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.SearchContactsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getFilter();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string filter = 1;\n * @return {string}\n */\nproto.grpc.api.v1.SearchContactsRequest.prototype.getFilter = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.SearchContactsRequest} returns this\n */\nproto.grpc.api.v1.SearchContactsRequest.prototype.setFilter = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: contact.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.Contact', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ContactTitle', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Contact = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.Contact, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Contact.displayName = 'proto.grpc.api.v1.Contact';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Contact.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Contact.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Contact} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Contact.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n phone: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n email: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n address: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n postalcode: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n city: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n state: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n country: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n companyname: jspb.Message.getFieldWithDefault(msg, 10, \"\"),\n reservationcount: jspb.Message.getFieldWithDefault(msg, 11, 0),\n isvip: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),\n preferredlanguage: jspb.Message.getFieldWithDefault(msg, 13, \"\"),\n birthday: jspb.Message.getFieldWithDefault(msg, 14, 0),\n newslettersubscription: jspb.Message.getBooleanFieldWithDefault(msg, 15, false),\n notes: jspb.Message.getFieldWithDefault(msg, 16, \"\"),\n title: jspb.Message.getFieldWithDefault(msg, 17, \"\"),\n visitcount: jspb.Message.getFieldWithDefault(msg, 18, 0),\n lastvisit: jspb.Message.getFieldWithDefault(msg, 19, 0),\n isdeleted: jspb.Message.getBooleanFieldWithDefault(msg, 20, false),\n dtcreate: jspb.Message.getFieldWithDefault(msg, 21, 0),\n dtupdate: jspb.Message.getFieldWithDefault(msg, 22, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.Contact.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Contact;\n return proto.grpc.api.v1.Contact.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Contact} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.Contact.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setPhone(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setEmail(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setAddress(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setPostalcode(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setCity(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setState(value);\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.setCountry(value);\n break;\n case 10:\n var value = /** @type {string} */ (reader.readString());\n msg.setCompanyname(value);\n break;\n case 11:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setReservationcount(value);\n break;\n case 12:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsvip(value);\n break;\n case 13:\n var value = /** @type {string} */ (reader.readString());\n msg.setPreferredlanguage(value);\n break;\n case 14:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setBirthday(value);\n break;\n case 15:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setNewslettersubscription(value);\n break;\n case 16:\n var value = /** @type {string} */ (reader.readString());\n msg.setNotes(value);\n break;\n case 17:\n var value = /** @type {string} */ (reader.readString());\n msg.setTitle(value);\n break;\n case 18:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setVisitcount(value);\n break;\n case 19:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setLastvisit(value);\n break;\n case 20:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsdeleted(value);\n break;\n case 21:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtcreate(value);\n break;\n case 22:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtupdate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Contact.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Contact.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Contact} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Contact.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getPhone();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getEmail();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getAddress();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getPostalcode();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getCity();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getState();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getCountry();\n if (f.length > 0) {\n writer.writeString(\n 9,\n f\n );\n }\n f = message.getCompanyname();\n if (f.length > 0) {\n writer.writeString(\n 10,\n f\n );\n }\n f = message.getReservationcount();\n if (f !== 0) {\n writer.writeInt32(\n 11,\n f\n );\n }\n f = message.getIsvip();\n if (f) {\n writer.writeBool(\n 12,\n f\n );\n }\n f = message.getPreferredlanguage();\n if (f.length > 0) {\n writer.writeString(\n 13,\n f\n );\n }\n f = message.getBirthday();\n if (f !== 0) {\n writer.writeInt32(\n 14,\n f\n );\n }\n f = message.getNewslettersubscription();\n if (f) {\n writer.writeBool(\n 15,\n f\n );\n }\n f = message.getNotes();\n if (f.length > 0) {\n writer.writeString(\n 16,\n f\n );\n }\n f = message.getTitle();\n if (f.length > 0) {\n writer.writeString(\n 17,\n f\n );\n }\n f = message.getVisitcount();\n if (f !== 0) {\n writer.writeInt32(\n 18,\n f\n );\n }\n f = message.getLastvisit();\n if (f !== 0) {\n writer.writeInt64(\n 19,\n f\n );\n }\n f = message.getIsdeleted();\n if (f) {\n writer.writeBool(\n 20,\n f\n );\n }\n f = message.getDtcreate();\n if (f !== 0) {\n writer.writeInt64(\n 21,\n f\n );\n }\n f = message.getDtupdate();\n if (f !== 0) {\n writer.writeInt64(\n 22,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Contact.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 2;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string phone = 3;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getPhone = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setPhone = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string email = 4;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getEmail = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setEmail = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string address = 5;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getAddress = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setAddress = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string postalCode = 6;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getPostalcode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setPostalcode = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string city = 7;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getCity = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setCity = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional string state = 8;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getState = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setState = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * optional string country = 9;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getCountry = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setCountry = function(value) {\n return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * optional string companyName = 10;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getCompanyname = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setCompanyname = function(value) {\n return jspb.Message.setProto3StringField(this, 10, value);\n};\n\n\n/**\n * optional int32 reservationCount = 11;\n * @return {number}\n */\nproto.grpc.api.v1.Contact.prototype.getReservationcount = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setReservationcount = function(value) {\n return jspb.Message.setProto3IntField(this, 11, value);\n};\n\n\n/**\n * optional bool isVIP = 12;\n * @return {boolean}\n */\nproto.grpc.api.v1.Contact.prototype.getIsvip = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setIsvip = function(value) {\n return jspb.Message.setProto3BooleanField(this, 12, value);\n};\n\n\n/**\n * optional string preferredLanguage = 13;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getPreferredlanguage = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setPreferredlanguage = function(value) {\n return jspb.Message.setProto3StringField(this, 13, value);\n};\n\n\n/**\n * optional int32 birthday = 14;\n * @return {number}\n */\nproto.grpc.api.v1.Contact.prototype.getBirthday = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 14, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setBirthday = function(value) {\n return jspb.Message.setProto3IntField(this, 14, value);\n};\n\n\n/**\n * optional bool newsletterSubscription = 15;\n * @return {boolean}\n */\nproto.grpc.api.v1.Contact.prototype.getNewslettersubscription = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 15, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setNewslettersubscription = function(value) {\n return jspb.Message.setProto3BooleanField(this, 15, value);\n};\n\n\n/**\n * optional string notes = 16;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getNotes = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 16, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setNotes = function(value) {\n return jspb.Message.setProto3StringField(this, 16, value);\n};\n\n\n/**\n * optional string title = 17;\n * @return {string}\n */\nproto.grpc.api.v1.Contact.prototype.getTitle = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 17, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setTitle = function(value) {\n return jspb.Message.setProto3StringField(this, 17, value);\n};\n\n\n/**\n * optional int32 visitCount = 18;\n * @return {number}\n */\nproto.grpc.api.v1.Contact.prototype.getVisitcount = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 18, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setVisitcount = function(value) {\n return jspb.Message.setProto3IntField(this, 18, value);\n};\n\n\n/**\n * optional int64 lastVisit = 19;\n * @return {number}\n */\nproto.grpc.api.v1.Contact.prototype.getLastvisit = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 19, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setLastvisit = function(value) {\n return jspb.Message.setProto3IntField(this, 19, value);\n};\n\n\n/**\n * optional bool isDeleted = 20;\n * @return {boolean}\n */\nproto.grpc.api.v1.Contact.prototype.getIsdeleted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 20, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setIsdeleted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 20, value);\n};\n\n\n/**\n * optional int64 dtCreate = 21;\n * @return {number}\n */\nproto.grpc.api.v1.Contact.prototype.getDtcreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 21, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setDtcreate = function(value) {\n return jspb.Message.setProto3IntField(this, 21, value);\n};\n\n\n/**\n * optional int64 dtUpdate = 22;\n * @return {number}\n */\nproto.grpc.api.v1.Contact.prototype.getDtupdate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 22, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Contact} returns this\n */\nproto.grpc.api.v1.Contact.prototype.setDtupdate = function(value) {\n return jspb.Message.setProto3IntField(this, 22, value);\n};\n\n\n/**\n * @enum {number}\n */\nproto.grpc.api.v1.ContactTitle = {\n CONTACT_TITLE_UNSPECIFIED: 0,\n CONTACT_TITLE_MR: 1,\n CONTACT_TITLE_MS: 2,\n CONTACT_TITLE_MRS: 3,\n CONTACT_TITLE_MISS: 4,\n CONTACT_TITLE_FAM: 5\n};\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: currency.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.Currency', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Currency = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.Currency, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Currency.displayName = 'proto.grpc.api.v1.Currency';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Currency.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Currency.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Currency} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Currency.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n code: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n hasdecimals: jspb.Message.getBooleanFieldWithDefault(msg, 3, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Currency}\n */\nproto.grpc.api.v1.Currency.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Currency;\n return proto.grpc.api.v1.Currency.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Currency} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Currency}\n */\nproto.grpc.api.v1.Currency.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setCode(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setHasdecimals(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Currency.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Currency.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Currency} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Currency.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getCode();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getHasdecimals();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Currency.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Currency} returns this\n */\nproto.grpc.api.v1.Currency.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string code = 2;\n * @return {string}\n */\nproto.grpc.api.v1.Currency.prototype.getCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Currency} returns this\n */\nproto.grpc.api.v1.Currency.prototype.setCode = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional bool hasDecimals = 3;\n * @return {boolean}\n */\nproto.grpc.api.v1.Currency.prototype.getHasdecimals = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Currency} returns this\n */\nproto.grpc.api.v1.Currency.prototype.setHasdecimals = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: dashboard.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.DashboardAvailability', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.DashboardAvailability = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.DashboardAvailability, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.DashboardAvailability.displayName = 'proto.grpc.api.v1.DashboardAvailability';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.DashboardAvailability.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.DashboardAvailability} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DashboardAvailability.toObject = function(includeInstance, msg) {\n var f, obj = {\n date: jspb.Message.getFieldWithDefault(msg, 1, 0),\n weekday: jspb.Message.getFieldWithDefault(msg, 2, 0),\n isavailable: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),\n data: jspb.Message.getFieldWithDefault(msg, 4, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.DashboardAvailability}\n */\nproto.grpc.api.v1.DashboardAvailability.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.DashboardAvailability;\n return proto.grpc.api.v1.DashboardAvailability.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.DashboardAvailability} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.DashboardAvailability}\n */\nproto.grpc.api.v1.DashboardAvailability.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setDate(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setWeekday(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsavailable(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setData(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.DashboardAvailability.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.DashboardAvailability} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DashboardAvailability.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDate();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n f = message.getWeekday();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getIsavailable();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n f = message.getData();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional int32 date = 1;\n * @return {number}\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.getDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.DashboardAvailability} returns this\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.setDate = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int32 weekday = 2;\n * @return {number}\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.getWeekday = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.DashboardAvailability} returns this\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.setWeekday = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional bool isAvailable = 3;\n * @return {boolean}\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.getIsavailable = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.DashboardAvailability} returns this\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.setIsavailable = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\n/**\n * optional string data = 4;\n * @return {string}\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.getData = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.DashboardAvailability} returns this\n */\nproto.grpc.api.v1.DashboardAvailability.prototype.setData = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: dashboard_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar dashboard_pb = require('./dashboard_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./dashboard_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.DashboardServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.DashboardServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.DashboardAvailabilityRequest,\n * !proto.grpc.api.v1.DashboardAvailabilityResponse>}\n */\nconst methodDescriptor_DashboardService_getAvailability = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.DashboardService/getAvailability',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.DashboardAvailabilityRequest,\n proto.grpc.api.v1.DashboardAvailabilityResponse,\n /**\n * @param {!proto.grpc.api.v1.DashboardAvailabilityRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.DashboardAvailabilityResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.DashboardAvailabilityRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.DashboardAvailabilityResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.DashboardServiceClient.prototype.getAvailability =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.DashboardService/getAvailability',\n request,\n metadata || {},\n methodDescriptor_DashboardService_getAvailability,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.DashboardAvailabilityRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.DashboardServicePromiseClient.prototype.getAvailability =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.DashboardService/getAvailability',\n request,\n metadata || {},\n methodDescriptor_DashboardService_getAvailability);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: dashboard_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar dashboard_pb = require('./dashboard_pb.js');\ngoog.object.extend(proto, dashboard_pb);\ngoog.exportSymbol('proto.grpc.api.v1.DashboardAvailabilityRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.DashboardAvailabilityResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.DashboardAvailabilityRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.DashboardAvailabilityRequest.displayName = 'proto.grpc.api.v1.DashboardAvailabilityRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.DashboardAvailabilityResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.DashboardAvailabilityResponse.displayName = 'proto.grpc.api.v1.DashboardAvailabilityResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.DashboardAvailabilityRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.DashboardAvailabilityRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n date: jspb.Message.getFieldWithDefault(msg, 1, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.DashboardAvailabilityRequest}\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.DashboardAvailabilityRequest;\n return proto.grpc.api.v1.DashboardAvailabilityRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.DashboardAvailabilityRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.DashboardAvailabilityRequest}\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setDate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.DashboardAvailabilityRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.DashboardAvailabilityRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getDate();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional int32 date = 1;\n * @return {number}\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.prototype.getDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.DashboardAvailabilityRequest} returns this\n */\nproto.grpc.api.v1.DashboardAvailabilityRequest.prototype.setDate = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.DashboardAvailabilityResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.DashboardAvailabilityResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n availability: (f = msg.getAvailability()) && dashboard_pb.DashboardAvailability.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.DashboardAvailabilityResponse}\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.DashboardAvailabilityResponse;\n return proto.grpc.api.v1.DashboardAvailabilityResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.DashboardAvailabilityResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.DashboardAvailabilityResponse}\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new dashboard_pb.DashboardAvailability;\n reader.readMessage(value,dashboard_pb.DashboardAvailability.deserializeBinaryFromReader);\n msg.setAvailability(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.DashboardAvailabilityResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.DashboardAvailabilityResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAvailability();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n dashboard_pb.DashboardAvailability.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional DashboardAvailability availability = 1;\n * @return {?proto.grpc.api.v1.DashboardAvailability}\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.prototype.getAvailability = function() {\n return /** @type{?proto.grpc.api.v1.DashboardAvailability} */ (\n jspb.Message.getWrapperField(this, dashboard_pb.DashboardAvailability, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.DashboardAvailability|undefined} value\n * @return {!proto.grpc.api.v1.DashboardAvailabilityResponse} returns this\n*/\nproto.grpc.api.v1.DashboardAvailabilityResponse.prototype.setAvailability = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.DashboardAvailabilityResponse} returns this\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.prototype.clearAvailability = function() {\n return this.setAvailability(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.DashboardAvailabilityResponse.prototype.hasAvailability = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: employee.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.Employee', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Employee = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.Employee, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Employee.displayName = 'proto.grpc.api.v1.Employee';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Employee.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Employee.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Employee} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Employee.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n name: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n order: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Employee}\n */\nproto.grpc.api.v1.Employee.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Employee;\n return proto.grpc.api.v1.Employee.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Employee} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Employee}\n */\nproto.grpc.api.v1.Employee.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setOrder(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Employee.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Employee.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Employee} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Employee.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getOrder();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Employee.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Employee} returns this\n */\nproto.grpc.api.v1.Employee.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string name = 3;\n * @return {string}\n */\nproto.grpc.api.v1.Employee.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Employee} returns this\n */\nproto.grpc.api.v1.Employee.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional int64 order = 2;\n * @return {number}\n */\nproto.grpc.api.v1.Employee.prototype.getOrder = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Employee} returns this\n */\nproto.grpc.api.v1.Employee.prototype.setOrder = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: empty.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.EmptyRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.EmptyResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.EmptyRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.EmptyRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.EmptyRequest.displayName = 'proto.grpc.api.v1.EmptyRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.EmptyResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.EmptyResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.EmptyResponse.displayName = 'proto.grpc.api.v1.EmptyResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.EmptyRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.EmptyRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.EmptyRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.EmptyRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.EmptyRequest}\n */\nproto.grpc.api.v1.EmptyRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.EmptyRequest;\n return proto.grpc.api.v1.EmptyRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.EmptyRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.EmptyRequest}\n */\nproto.grpc.api.v1.EmptyRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.EmptyRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.EmptyRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.EmptyRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.EmptyRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.EmptyResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.EmptyResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.EmptyResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.EmptyResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.EmptyResponse}\n */\nproto.grpc.api.v1.EmptyResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.EmptyResponse;\n return proto.grpc.api.v1.EmptyResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.EmptyResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.EmptyResponse}\n */\nproto.grpc.api.v1.EmptyResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.EmptyResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.EmptyResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.EmptyResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.EmptyResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: feedback.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar reservation_pb = require('./reservation_pb.js');\ngoog.object.extend(proto, reservation_pb);\ngoog.exportSymbol('proto.grpc.api.v1.Feedback', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Feedback = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.Feedback, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Feedback.displayName = 'proto.grpc.api.v1.Feedback';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Feedback.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Feedback.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Feedback} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Feedback.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n reservationId: jspb.Message.getFieldWithDefault(msg, 2, 0),\n foodRating: jspb.Message.getFieldWithDefault(msg, 3, 0),\n serviceRating: jspb.Message.getFieldWithDefault(msg, 4, 0),\n ambienceRating: jspb.Message.getFieldWithDefault(msg, 5, 0),\n overallRating: jspb.Message.getFieldWithDefault(msg, 6, 0),\n comments: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n dtCreate: jspb.Message.getFieldWithDefault(msg, 8, 0),\n isPublic: jspb.Message.getBooleanFieldWithDefault(msg, 9, false),\n reservationDtBegin: jspb.Message.getFieldWithDefault(msg, 10, 0),\n contactName: jspb.Message.getFieldWithDefault(msg, 11, \"\"),\n contactReservationCount: jspb.Message.getFieldWithDefault(msg, 12, 0),\n dtRepliedAt: jspb.Message.getFieldWithDefault(msg, 13, 0),\n reservation: (f = msg.getReservation()) && reservation_pb.Reservation.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Feedback}\n */\nproto.grpc.api.v1.Feedback.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Feedback;\n return proto.grpc.api.v1.Feedback.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Feedback} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Feedback}\n */\nproto.grpc.api.v1.Feedback.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setReservationId(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setFoodRating(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setServiceRating(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setAmbienceRating(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setOverallRating(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setComments(value);\n break;\n case 8:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtCreate(value);\n break;\n case 9:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsPublic(value);\n break;\n case 10:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setReservationDtBegin(value);\n break;\n case 11:\n var value = /** @type {string} */ (reader.readString());\n msg.setContactName(value);\n break;\n case 12:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setContactReservationCount(value);\n break;\n case 13:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtRepliedAt(value);\n break;\n case 14:\n var value = new reservation_pb.Reservation;\n reader.readMessage(value,reservation_pb.Reservation.deserializeBinaryFromReader);\n msg.setReservation(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Feedback.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Feedback.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Feedback} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Feedback.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getReservationId();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getFoodRating();\n if (f !== 0) {\n writer.writeInt32(\n 3,\n f\n );\n }\n f = message.getServiceRating();\n if (f !== 0) {\n writer.writeInt32(\n 4,\n f\n );\n }\n f = message.getAmbienceRating();\n if (f !== 0) {\n writer.writeInt32(\n 5,\n f\n );\n }\n f = message.getOverallRating();\n if (f !== 0) {\n writer.writeInt32(\n 6,\n f\n );\n }\n f = message.getComments();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getDtCreate();\n if (f !== 0) {\n writer.writeInt64(\n 8,\n f\n );\n }\n f = message.getIsPublic();\n if (f) {\n writer.writeBool(\n 9,\n f\n );\n }\n f = message.getReservationDtBegin();\n if (f !== 0) {\n writer.writeInt64(\n 10,\n f\n );\n }\n f = message.getContactName();\n if (f.length > 0) {\n writer.writeString(\n 11,\n f\n );\n }\n f = message.getContactReservationCount();\n if (f !== 0) {\n writer.writeInt32(\n 12,\n f\n );\n }\n f = message.getDtRepliedAt();\n if (f !== 0) {\n writer.writeInt64(\n 13,\n f\n );\n }\n f = message.getReservation();\n if (f != null) {\n writer.writeMessage(\n 14,\n f,\n reservation_pb.Reservation.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 reservation_id = 2;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getReservationId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setReservationId = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int32 food_rating = 3;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getFoodRating = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setFoodRating = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int32 service_rating = 4;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getServiceRating = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setServiceRating = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional int32 ambience_rating = 5;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getAmbienceRating = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setAmbienceRating = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional int32 overall_rating = 6;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getOverallRating = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setOverallRating = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\n/**\n * optional string comments = 7;\n * @return {string}\n */\nproto.grpc.api.v1.Feedback.prototype.getComments = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setComments = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional int64 dt_create = 8;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getDtCreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setDtCreate = function(value) {\n return jspb.Message.setProto3IntField(this, 8, value);\n};\n\n\n/**\n * optional bool is_public = 9;\n * @return {boolean}\n */\nproto.grpc.api.v1.Feedback.prototype.getIsPublic = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 9, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setIsPublic = function(value) {\n return jspb.Message.setProto3BooleanField(this, 9, value);\n};\n\n\n/**\n * optional int64 reservation_dt_begin = 10;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getReservationDtBegin = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setReservationDtBegin = function(value) {\n return jspb.Message.setProto3IntField(this, 10, value);\n};\n\n\n/**\n * optional string contact_name = 11;\n * @return {string}\n */\nproto.grpc.api.v1.Feedback.prototype.getContactName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setContactName = function(value) {\n return jspb.Message.setProto3StringField(this, 11, value);\n};\n\n\n/**\n * optional int32 contact_reservation_count = 12;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getContactReservationCount = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 12, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setContactReservationCount = function(value) {\n return jspb.Message.setProto3IntField(this, 12, value);\n};\n\n\n/**\n * optional int64 dt_replied_at = 13;\n * @return {number}\n */\nproto.grpc.api.v1.Feedback.prototype.getDtRepliedAt = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 13, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.setDtRepliedAt = function(value) {\n return jspb.Message.setProto3IntField(this, 13, value);\n};\n\n\n/**\n * optional Reservation reservation = 14;\n * @return {?proto.grpc.api.v1.Reservation}\n */\nproto.grpc.api.v1.Feedback.prototype.getReservation = function() {\n return /** @type{?proto.grpc.api.v1.Reservation} */ (\n jspb.Message.getWrapperField(this, reservation_pb.Reservation, 14));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Reservation|undefined} value\n * @return {!proto.grpc.api.v1.Feedback} returns this\n*/\nproto.grpc.api.v1.Feedback.prototype.setReservation = function(value) {\n return jspb.Message.setWrapperField(this, 14, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.Feedback} returns this\n */\nproto.grpc.api.v1.Feedback.prototype.clearReservation = function() {\n return this.setReservation(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.Feedback.prototype.hasReservation = function() {\n return jspb.Message.getField(this, 14) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: feedback_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar empty_pb = require('./empty_pb.js')\n\nvar feedback_pb = require('./feedback_pb.js')\n\nvar reservation_pb = require('./reservation_pb.js')\n\nvar feedback_settings_pb = require('./feedback_settings_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./feedback_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.FeedbackServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.FeedbackServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.FeedbackGetFeedbackRequest,\n * !proto.grpc.api.v1.FeedbackFeedbackResponse>}\n */\nconst methodDescriptor_FeedbackService_getFeedback = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.FeedbackService/getFeedback',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.FeedbackGetFeedbackRequest,\n proto.grpc.api.v1.FeedbackFeedbackResponse,\n /**\n * @param {!proto.grpc.api.v1.FeedbackGetFeedbackRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.FeedbackFeedbackResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackGetFeedbackRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.FeedbackFeedbackResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.FeedbackServiceClient.prototype.getFeedback =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/getFeedback',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_getFeedback,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackGetFeedbackRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.FeedbackServicePromiseClient.prototype.getFeedback =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/getFeedback',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_getFeedback);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.FeedbackListFeedbacksRequest,\n * !proto.grpc.api.v1.FeedbackListFeedbackResponse>}\n */\nconst methodDescriptor_FeedbackService_listFeedbacks = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.FeedbackService/listFeedbacks',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.FeedbackListFeedbacksRequest,\n proto.grpc.api.v1.FeedbackListFeedbackResponse,\n /**\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.FeedbackListFeedbackResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.FeedbackServiceClient.prototype.listFeedbacks =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.FeedbackService/listFeedbacks',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_listFeedbacks);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.FeedbackServicePromiseClient.prototype.listFeedbacks =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.FeedbackService/listFeedbacks',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_listFeedbacks);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.FeedbackGetReservationRequest,\n * !proto.grpc.api.v1.FeedbackReservationResponse>}\n */\nconst methodDescriptor_FeedbackService_getReservation = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.FeedbackService/getReservation',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.FeedbackGetReservationRequest,\n proto.grpc.api.v1.FeedbackReservationResponse,\n /**\n * @param {!proto.grpc.api.v1.FeedbackGetReservationRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.FeedbackReservationResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackGetReservationRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.FeedbackReservationResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.FeedbackServiceClient.prototype.getReservation =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/getReservation',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_getReservation,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackGetReservationRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.FeedbackServicePromiseClient.prototype.getReservation =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/getReservation',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_getReservation);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.EmptyRequest,\n * !proto.grpc.api.v1.FeedbackSettingsResponse>}\n */\nconst methodDescriptor_FeedbackService_getSettings = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.FeedbackService/getSettings',\n grpc.web.MethodType.UNARY,\n empty_pb.EmptyRequest,\n proto.grpc.api.v1.FeedbackSettingsResponse,\n /**\n * @param {!proto.grpc.api.v1.EmptyRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.FeedbackSettingsResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.FeedbackSettingsResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.FeedbackServiceClient.prototype.getSettings =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/getSettings',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_getSettings,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.FeedbackServicePromiseClient.prototype.getSettings =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/getSettings',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_getSettings);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.FeedbackSetSettingsRequest,\n * !proto.grpc.api.v1.FeedbackSettingsResponse>}\n */\nconst methodDescriptor_FeedbackService_setSettings = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.FeedbackService/setSettings',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.FeedbackSetSettingsRequest,\n proto.grpc.api.v1.FeedbackSettingsResponse,\n /**\n * @param {!proto.grpc.api.v1.FeedbackSetSettingsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.FeedbackSettingsResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackSetSettingsRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.FeedbackSettingsResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.FeedbackServiceClient.prototype.setSettings =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/setSettings',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_setSettings,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackSetSettingsRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.FeedbackServicePromiseClient.prototype.setSettings =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.FeedbackService/setSettings',\n request,\n metadata || {},\n methodDescriptor_FeedbackService_setSettings);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: feedback_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar empty_pb = require('./empty_pb.js');\ngoog.object.extend(proto, empty_pb);\nvar feedback_pb = require('./feedback_pb.js');\ngoog.object.extend(proto, feedback_pb);\nvar reservation_pb = require('./reservation_pb.js');\ngoog.object.extend(proto, reservation_pb);\nvar feedback_settings_pb = require('./feedback_settings_pb.js');\ngoog.object.extend(proto, feedback_settings_pb);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackFeedbackResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackGetFeedbackRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackGetReservationRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackListFeedbackResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackListFeedbacksParams', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackListFeedbacksRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackReservationResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackSetSettingsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackSettingsResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackGetFeedbackRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackGetFeedbackRequest.displayName = 'proto.grpc.api.v1.FeedbackGetFeedbackRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackFeedbackResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackFeedbackResponse.displayName = 'proto.grpc.api.v1.FeedbackFeedbackResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackListFeedbacksParams, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackListFeedbacksParams.displayName = 'proto.grpc.api.v1.FeedbackListFeedbacksParams';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackListFeedbacksRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackListFeedbacksRequest.displayName = 'proto.grpc.api.v1.FeedbackListFeedbacksRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackListFeedbackResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackListFeedbackResponse.displayName = 'proto.grpc.api.v1.FeedbackListFeedbackResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackGetReservationRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackGetReservationRequest.displayName = 'proto.grpc.api.v1.FeedbackGetReservationRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackReservationResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackReservationResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackReservationResponse.displayName = 'proto.grpc.api.v1.FeedbackReservationResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackSetSettingsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackSetSettingsRequest.displayName = 'proto.grpc.api.v1.FeedbackSetSettingsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackSettingsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackSettingsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackSettingsResponse.displayName = 'proto.grpc.api.v1.FeedbackSettingsResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackGetFeedbackRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackGetFeedbackRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n feedbackId: jspb.Message.getFieldWithDefault(msg, 1, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackGetFeedbackRequest}\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackGetFeedbackRequest;\n return proto.grpc.api.v1.FeedbackGetFeedbackRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackGetFeedbackRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackGetFeedbackRequest}\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setFeedbackId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackGetFeedbackRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackGetFeedbackRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getFeedbackId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional int64 feedback_id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.prototype.getFeedbackId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.FeedbackGetFeedbackRequest} returns this\n */\nproto.grpc.api.v1.FeedbackGetFeedbackRequest.prototype.setFeedbackId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackFeedbackResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackFeedbackResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n feedback: (f = msg.getFeedback()) && feedback_pb.Feedback.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackFeedbackResponse}\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackFeedbackResponse;\n return proto.grpc.api.v1.FeedbackFeedbackResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackFeedbackResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackFeedbackResponse}\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new feedback_pb.Feedback;\n reader.readMessage(value,feedback_pb.Feedback.deserializeBinaryFromReader);\n msg.setFeedback(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackFeedbackResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackFeedbackResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getFeedback();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n feedback_pb.Feedback.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Feedback feedback = 1;\n * @return {?proto.grpc.api.v1.Feedback}\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.prototype.getFeedback = function() {\n return /** @type{?proto.grpc.api.v1.Feedback} */ (\n jspb.Message.getWrapperField(this, feedback_pb.Feedback, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Feedback|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackFeedbackResponse} returns this\n*/\nproto.grpc.api.v1.FeedbackFeedbackResponse.prototype.setFeedback = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackFeedbackResponse} returns this\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.prototype.clearFeedback = function() {\n return this.setFeedback(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackFeedbackResponse.prototype.hasFeedback = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackListFeedbacksParams.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksParams} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.toObject = function(includeInstance, msg) {\n var f, obj = {\n beginDate: jspb.Message.getFieldWithDefault(msg, 1, 0),\n endDate: jspb.Message.getFieldWithDefault(msg, 2, 0),\n sinceDtCreate: jspb.Message.getFieldWithDefault(msg, 3, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksParams}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackListFeedbacksParams;\n return proto.grpc.api.v1.FeedbackListFeedbacksParams.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksParams} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksParams}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setBeginDate(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setEndDate(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setSinceDtCreate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackListFeedbacksParams.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksParams} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getBeginDate();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n f = message.getEndDate();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getSinceDtCreate();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional int32 begin_date = 1;\n * @return {number}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.getBeginDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksParams} returns this\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.setBeginDate = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int32 end_date = 2;\n * @return {number}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.getEndDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksParams} returns this\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.setEndDate = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 since_dt_create = 3;\n * @return {number}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.getSinceDtCreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksParams} returns this\n */\nproto.grpc.api.v1.FeedbackListFeedbacksParams.prototype.setSinceDtCreate = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackListFeedbacksRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n params: (f = msg.getParams()) && proto.grpc.api.v1.FeedbackListFeedbacksParams.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksRequest}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackListFeedbacksRequest;\n return proto.grpc.api.v1.FeedbackListFeedbacksRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksRequest}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.FeedbackListFeedbacksParams;\n reader.readMessage(value,proto.grpc.api.v1.FeedbackListFeedbacksParams.deserializeBinaryFromReader);\n msg.setParams(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackListFeedbacksRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getParams();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.FeedbackListFeedbacksParams.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional FeedbackListFeedbacksParams params = 1;\n * @return {?proto.grpc.api.v1.FeedbackListFeedbacksParams}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.prototype.getParams = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackListFeedbacksParams} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.FeedbackListFeedbacksParams, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackListFeedbacksParams|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} returns this\n*/\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.prototype.setParams = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbacksRequest} returns this\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.prototype.clearParams = function() {\n return this.setParams(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackListFeedbacksRequest.prototype.hasParams = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackListFeedbackResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackListFeedbackResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n feedback: (f = msg.getFeedback()) && feedback_pb.Feedback.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbackResponse}\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackListFeedbackResponse;\n return proto.grpc.api.v1.FeedbackListFeedbackResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackListFeedbackResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbackResponse}\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new feedback_pb.Feedback;\n reader.readMessage(value,feedback_pb.Feedback.deserializeBinaryFromReader);\n msg.setFeedback(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackListFeedbackResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackListFeedbackResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getFeedback();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n feedback_pb.Feedback.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Feedback feedback = 1;\n * @return {?proto.grpc.api.v1.Feedback}\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.prototype.getFeedback = function() {\n return /** @type{?proto.grpc.api.v1.Feedback} */ (\n jspb.Message.getWrapperField(this, feedback_pb.Feedback, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Feedback|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackListFeedbackResponse} returns this\n*/\nproto.grpc.api.v1.FeedbackListFeedbackResponse.prototype.setFeedback = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackListFeedbackResponse} returns this\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.prototype.clearFeedback = function() {\n return this.setFeedback(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackListFeedbackResponse.prototype.hasFeedback = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackGetReservationRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackGetReservationRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n feedbackId: jspb.Message.getFieldWithDefault(msg, 1, 0),\n reservationId: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackGetReservationRequest}\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackGetReservationRequest;\n return proto.grpc.api.v1.FeedbackGetReservationRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackGetReservationRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackGetReservationRequest}\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setFeedbackId(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setReservationId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackGetReservationRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackGetReservationRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getFeedbackId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getReservationId();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 feedback_id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.prototype.getFeedbackId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.FeedbackGetReservationRequest} returns this\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.prototype.setFeedbackId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 reservation_id = 2;\n * @return {number}\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.prototype.getReservationId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.FeedbackGetReservationRequest} returns this\n */\nproto.grpc.api.v1.FeedbackGetReservationRequest.prototype.setReservationId = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackReservationResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackReservationResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackReservationResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReservationResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n reservation: (f = msg.getReservation()) && reservation_pb.Reservation.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackReservationResponse}\n */\nproto.grpc.api.v1.FeedbackReservationResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackReservationResponse;\n return proto.grpc.api.v1.FeedbackReservationResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackReservationResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackReservationResponse}\n */\nproto.grpc.api.v1.FeedbackReservationResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new reservation_pb.Reservation;\n reader.readMessage(value,reservation_pb.Reservation.deserializeBinaryFromReader);\n msg.setReservation(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackReservationResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackReservationResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackReservationResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReservationResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getReservation();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n reservation_pb.Reservation.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Reservation reservation = 1;\n * @return {?proto.grpc.api.v1.Reservation}\n */\nproto.grpc.api.v1.FeedbackReservationResponse.prototype.getReservation = function() {\n return /** @type{?proto.grpc.api.v1.Reservation} */ (\n jspb.Message.getWrapperField(this, reservation_pb.Reservation, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Reservation|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackReservationResponse} returns this\n*/\nproto.grpc.api.v1.FeedbackReservationResponse.prototype.setReservation = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackReservationResponse} returns this\n */\nproto.grpc.api.v1.FeedbackReservationResponse.prototype.clearReservation = function() {\n return this.setReservation(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackReservationResponse.prototype.hasReservation = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackSetSettingsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackSetSettingsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n settings: (f = msg.getSettings()) && feedback_settings_pb.FeedbackSettings.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackSetSettingsRequest}\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackSetSettingsRequest;\n return proto.grpc.api.v1.FeedbackSetSettingsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackSetSettingsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackSetSettingsRequest}\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new feedback_settings_pb.FeedbackSettings;\n reader.readMessage(value,feedback_settings_pb.FeedbackSettings.deserializeBinaryFromReader);\n msg.setSettings(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackSetSettingsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackSetSettingsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSettings();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n feedback_settings_pb.FeedbackSettings.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional FeedbackSettings settings = 1;\n * @return {?proto.grpc.api.v1.FeedbackSettings}\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.prototype.getSettings = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackSettings} */ (\n jspb.Message.getWrapperField(this, feedback_settings_pb.FeedbackSettings, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackSettings|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackSetSettingsRequest} returns this\n*/\nproto.grpc.api.v1.FeedbackSetSettingsRequest.prototype.setSettings = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackSetSettingsRequest} returns this\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.prototype.clearSettings = function() {\n return this.setSettings(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackSetSettingsRequest.prototype.hasSettings = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackSettingsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackSettingsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n settings: (f = msg.getSettings()) && feedback_settings_pb.FeedbackSettings.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackSettingsResponse}\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackSettingsResponse;\n return proto.grpc.api.v1.FeedbackSettingsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackSettingsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackSettingsResponse}\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new feedback_settings_pb.FeedbackSettings;\n reader.readMessage(value,feedback_settings_pb.FeedbackSettings.deserializeBinaryFromReader);\n msg.setSettings(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackSettingsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackSettingsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSettings();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n feedback_settings_pb.FeedbackSettings.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional FeedbackSettings settings = 1;\n * @return {?proto.grpc.api.v1.FeedbackSettings}\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.prototype.getSettings = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackSettings} */ (\n jspb.Message.getWrapperField(this, feedback_settings_pb.FeedbackSettings, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackSettings|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackSettingsResponse} returns this\n*/\nproto.grpc.api.v1.FeedbackSettingsResponse.prototype.setSettings = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackSettingsResponse} returns this\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.prototype.clearSettings = function() {\n return this.setSettings(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackSettingsResponse.prototype.hasSettings = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: feedback_settings.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackSettings', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackSettings = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackSettings, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackSettings.displayName = 'proto.grpc.api.v1.FeedbackSettings';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackSettings.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackSettings} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackSettings.toObject = function(includeInstance, msg) {\n var f, obj = {\n enabled: jspb.Message.getBooleanFieldWithDefault(msg, 2, false),\n useBreakdown: jspb.Message.getBooleanFieldWithDefault(msg, 3, false),\n noRuleError: jspb.Message.getBooleanFieldWithDefault(msg, 4, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackSettings}\n */\nproto.grpc.api.v1.FeedbackSettings.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackSettings;\n return proto.grpc.api.v1.FeedbackSettings.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackSettings} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackSettings}\n */\nproto.grpc.api.v1.FeedbackSettings.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setEnabled(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setUseBreakdown(value);\n break;\n case 4:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setNoRuleError(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackSettings.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackSettings} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackSettings.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getEnabled();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n f = /** @type {boolean} */ (jspb.Message.getField(message, 3));\n if (f != null) {\n writer.writeBool(\n 3,\n f\n );\n }\n f = message.getNoRuleError();\n if (f) {\n writer.writeBool(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional bool enabled = 2;\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.getEnabled = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.FeedbackSettings} returns this\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.setEnabled = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n/**\n * optional bool use_breakdown = 3;\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.getUseBreakdown = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.FeedbackSettings} returns this\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.setUseBreakdown = function(value) {\n return jspb.Message.setField(this, 3, value);\n};\n\n\n/**\n * Clears the field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackSettings} returns this\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.clearUseBreakdown = function() {\n return jspb.Message.setField(this, 3, undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.hasUseBreakdown = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional bool no_rule_error = 4;\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.getNoRuleError = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 4, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.FeedbackSettings} returns this\n */\nproto.grpc.api.v1.FeedbackSettings.prototype.setNoRuleError = function(value) {\n return jspb.Message.setProto3BooleanField(this, 4, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: giftcard.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar giftcard_transaction_pb = require('./giftcard_transaction_pb.js');\ngoog.object.extend(proto, giftcard_transaction_pb);\nvar contact_pb = require('./contact_pb.js');\ngoog.object.extend(proto, contact_pb);\ngoog.exportSymbol('proto.grpc.api.v1.Giftcard', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardRecipient', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardRecipient = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardRecipient, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardRecipient.displayName = 'proto.grpc.api.v1.GiftcardRecipient';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Giftcard = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.Giftcard.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.Giftcard, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Giftcard.displayName = 'proto.grpc.api.v1.Giftcard';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardRecipient.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardRecipient} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardRecipient.toObject = function(includeInstance, msg) {\n var f, obj = {\n giftcardMessage: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n email: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n name: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n dtDelivery: jspb.Message.getFieldWithDefault(msg, 4, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardRecipient}\n */\nproto.grpc.api.v1.GiftcardRecipient.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardRecipient;\n return proto.grpc.api.v1.GiftcardRecipient.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardRecipient} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardRecipient}\n */\nproto.grpc.api.v1.GiftcardRecipient.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setGiftcardMessage(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setEmail(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtDelivery(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardRecipient.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardRecipient} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardRecipient.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getGiftcardMessage();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getEmail();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getDtDelivery();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional string giftcard_message = 1;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.getGiftcardMessage = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardRecipient} returns this\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.setGiftcardMessage = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string email = 2;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.getEmail = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardRecipient} returns this\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.setEmail = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string name = 3;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardRecipient} returns this\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional int64 dt_delivery = 4;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.getDtDelivery = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardRecipient} returns this\n */\nproto.grpc.api.v1.GiftcardRecipient.prototype.setDtDelivery = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.Giftcard.repeatedFields_ = [20];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Giftcard.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Giftcard.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Giftcard} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Giftcard.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n title: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n description: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n backgroundImageUrl: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n serviceId: jspb.Message.getFieldWithDefault(msg, 5, 0),\n locale: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n balance: jspb.Message.getFieldWithDefault(msg, 7, 0),\n currency: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n status: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n code: jspb.Message.getFieldWithDefault(msg, 10, \"\"),\n color: jspb.Message.getFieldWithDefault(msg, 11, \"\"),\n dtCreate: jspb.Message.getFieldWithDefault(msg, 12, 0),\n dtUpdate: jspb.Message.getFieldWithDefault(msg, 13, 0),\n dtExpiry: jspb.Message.getFieldWithDefault(msg, 14, 0),\n price: jspb.Message.getFieldWithDefault(msg, 15, 0),\n showLogo: jspb.Message.getBooleanFieldWithDefault(msg, 16, false),\n footerText: jspb.Message.getFieldWithDefault(msg, 17, \"\"),\n recipient: (f = msg.getRecipient()) && proto.grpc.api.v1.GiftcardRecipient.toObject(includeInstance, f),\n contact: (f = msg.getContact()) && contact_pb.Contact.toObject(includeInstance, f),\n transactionsList: jspb.Message.toObjectList(msg.getTransactionsList(),\n giftcard_transaction_pb.GiftcardTransaction.toObject, includeInstance),\n isExpired: jspb.Message.getBooleanFieldWithDefault(msg, 21, false),\n dtExpiryMil: jspb.Message.getFieldWithDefault(msg, 22, 0),\n issuedByAccountId: jspb.Message.getFieldWithDefault(msg, 23, 0),\n issuedByAccountName: jspb.Message.getFieldWithDefault(msg, 24, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Giftcard}\n */\nproto.grpc.api.v1.Giftcard.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Giftcard;\n return proto.grpc.api.v1.Giftcard.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Giftcard} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Giftcard}\n */\nproto.grpc.api.v1.Giftcard.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setTitle(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setDescription(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setBackgroundImageUrl(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setServiceId(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setLocale(value);\n break;\n case 7:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setBalance(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setCurrency(value);\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.setStatus(value);\n break;\n case 10:\n var value = /** @type {string} */ (reader.readString());\n msg.setCode(value);\n break;\n case 11:\n var value = /** @type {string} */ (reader.readString());\n msg.setColor(value);\n break;\n case 12:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtCreate(value);\n break;\n case 13:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtUpdate(value);\n break;\n case 14:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtExpiry(value);\n break;\n case 15:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setPrice(value);\n break;\n case 16:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setShowLogo(value);\n break;\n case 17:\n var value = /** @type {string} */ (reader.readString());\n msg.setFooterText(value);\n break;\n case 18:\n var value = new proto.grpc.api.v1.GiftcardRecipient;\n reader.readMessage(value,proto.grpc.api.v1.GiftcardRecipient.deserializeBinaryFromReader);\n msg.setRecipient(value);\n break;\n case 19:\n var value = new contact_pb.Contact;\n reader.readMessage(value,contact_pb.Contact.deserializeBinaryFromReader);\n msg.setContact(value);\n break;\n case 20:\n var value = new giftcard_transaction_pb.GiftcardTransaction;\n reader.readMessage(value,giftcard_transaction_pb.GiftcardTransaction.deserializeBinaryFromReader);\n msg.addTransactions(value);\n break;\n case 21:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsExpired(value);\n break;\n case 22:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setDtExpiryMil(value);\n break;\n case 23:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setIssuedByAccountId(value);\n break;\n case 24:\n var value = /** @type {string} */ (reader.readString());\n msg.setIssuedByAccountName(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Giftcard.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Giftcard.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Giftcard} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Giftcard.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getTitle();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getDescription();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getBackgroundImageUrl();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getServiceId();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getLocale();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getBalance();\n if (f !== 0) {\n writer.writeInt32(\n 7,\n f\n );\n }\n f = message.getCurrency();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getStatus();\n if (f.length > 0) {\n writer.writeString(\n 9,\n f\n );\n }\n f = message.getCode();\n if (f.length > 0) {\n writer.writeString(\n 10,\n f\n );\n }\n f = message.getColor();\n if (f.length > 0) {\n writer.writeString(\n 11,\n f\n );\n }\n f = message.getDtCreate();\n if (f !== 0) {\n writer.writeInt64(\n 12,\n f\n );\n }\n f = message.getDtUpdate();\n if (f !== 0) {\n writer.writeInt64(\n 13,\n f\n );\n }\n f = message.getDtExpiry();\n if (f !== 0) {\n writer.writeInt64(\n 14,\n f\n );\n }\n f = message.getPrice();\n if (f !== 0) {\n writer.writeInt32(\n 15,\n f\n );\n }\n f = message.getShowLogo();\n if (f) {\n writer.writeBool(\n 16,\n f\n );\n }\n f = message.getFooterText();\n if (f.length > 0) {\n writer.writeString(\n 17,\n f\n );\n }\n f = message.getRecipient();\n if (f != null) {\n writer.writeMessage(\n 18,\n f,\n proto.grpc.api.v1.GiftcardRecipient.serializeBinaryToWriter\n );\n }\n f = message.getContact();\n if (f != null) {\n writer.writeMessage(\n 19,\n f,\n contact_pb.Contact.serializeBinaryToWriter\n );\n }\n f = message.getTransactionsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 20,\n f,\n giftcard_transaction_pb.GiftcardTransaction.serializeBinaryToWriter\n );\n }\n f = message.getIsExpired();\n if (f) {\n writer.writeBool(\n 21,\n f\n );\n }\n f = message.getDtExpiryMil();\n if (f !== 0) {\n writer.writeInt32(\n 22,\n f\n );\n }\n f = message.getIssuedByAccountId();\n if (f !== 0) {\n writer.writeInt64(\n 23,\n f\n );\n }\n f = message.getIssuedByAccountName();\n if (f.length > 0) {\n writer.writeString(\n 24,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string title = 2;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getTitle = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setTitle = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string description = 3;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getDescription = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setDescription = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string background_image_url = 4;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getBackgroundImageUrl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setBackgroundImageUrl = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional int64 service_id = 5;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getServiceId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setServiceId = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional string locale = 6;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getLocale = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setLocale = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional int32 balance = 7;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getBalance = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setBalance = function(value) {\n return jspb.Message.setProto3IntField(this, 7, value);\n};\n\n\n/**\n * optional string currency = 8;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getCurrency = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setCurrency = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * optional string status = 9;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getStatus = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setStatus = function(value) {\n return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * optional string code = 10;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setCode = function(value) {\n return jspb.Message.setProto3StringField(this, 10, value);\n};\n\n\n/**\n * optional string color = 11;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getColor = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setColor = function(value) {\n return jspb.Message.setProto3StringField(this, 11, value);\n};\n\n\n/**\n * optional int64 dt_create = 12;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getDtCreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 12, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setDtCreate = function(value) {\n return jspb.Message.setProto3IntField(this, 12, value);\n};\n\n\n/**\n * optional int64 dt_update = 13;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getDtUpdate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 13, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setDtUpdate = function(value) {\n return jspb.Message.setProto3IntField(this, 13, value);\n};\n\n\n/**\n * optional int64 dt_expiry = 14;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getDtExpiry = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 14, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setDtExpiry = function(value) {\n return jspb.Message.setProto3IntField(this, 14, value);\n};\n\n\n/**\n * optional int32 price = 15;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getPrice = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 15, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setPrice = function(value) {\n return jspb.Message.setProto3IntField(this, 15, value);\n};\n\n\n/**\n * optional bool show_logo = 16;\n * @return {boolean}\n */\nproto.grpc.api.v1.Giftcard.prototype.getShowLogo = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 16, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setShowLogo = function(value) {\n return jspb.Message.setProto3BooleanField(this, 16, value);\n};\n\n\n/**\n * optional string footer_text = 17;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getFooterText = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 17, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setFooterText = function(value) {\n return jspb.Message.setProto3StringField(this, 17, value);\n};\n\n\n/**\n * optional GiftcardRecipient recipient = 18;\n * @return {?proto.grpc.api.v1.GiftcardRecipient}\n */\nproto.grpc.api.v1.Giftcard.prototype.getRecipient = function() {\n return /** @type{?proto.grpc.api.v1.GiftcardRecipient} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.GiftcardRecipient, 18));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GiftcardRecipient|undefined} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n*/\nproto.grpc.api.v1.Giftcard.prototype.setRecipient = function(value) {\n return jspb.Message.setWrapperField(this, 18, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.clearRecipient = function() {\n return this.setRecipient(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.Giftcard.prototype.hasRecipient = function() {\n return jspb.Message.getField(this, 18) != null;\n};\n\n\n/**\n * optional Contact contact = 19;\n * @return {?proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.Giftcard.prototype.getContact = function() {\n return /** @type{?proto.grpc.api.v1.Contact} */ (\n jspb.Message.getWrapperField(this, contact_pb.Contact, 19));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Contact|undefined} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n*/\nproto.grpc.api.v1.Giftcard.prototype.setContact = function(value) {\n return jspb.Message.setWrapperField(this, 19, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.clearContact = function() {\n return this.setContact(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.Giftcard.prototype.hasContact = function() {\n return jspb.Message.getField(this, 19) != null;\n};\n\n\n/**\n * repeated GiftcardTransaction transactions = 20;\n * @return {!Array}\n */\nproto.grpc.api.v1.Giftcard.prototype.getTransactionsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, giftcard_transaction_pb.GiftcardTransaction, 20));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n*/\nproto.grpc.api.v1.Giftcard.prototype.setTransactionsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 20, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardTransaction=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GiftcardTransaction}\n */\nproto.grpc.api.v1.Giftcard.prototype.addTransactions = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 20, opt_value, proto.grpc.api.v1.GiftcardTransaction, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.clearTransactionsList = function() {\n return this.setTransactionsList([]);\n};\n\n\n/**\n * optional bool is_expired = 21;\n * @return {boolean}\n */\nproto.grpc.api.v1.Giftcard.prototype.getIsExpired = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 21, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setIsExpired = function(value) {\n return jspb.Message.setProto3BooleanField(this, 21, value);\n};\n\n\n/**\n * optional int32 dt_expiry_mil = 22;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getDtExpiryMil = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 22, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setDtExpiryMil = function(value) {\n return jspb.Message.setProto3IntField(this, 22, value);\n};\n\n\n/**\n * optional int64 issued_by_account_id = 23;\n * @return {number}\n */\nproto.grpc.api.v1.Giftcard.prototype.getIssuedByAccountId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 23, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setIssuedByAccountId = function(value) {\n return jspb.Message.setProto3IntField(this, 23, value);\n};\n\n\n/**\n * optional string issued_by_account_name = 24;\n * @return {string}\n */\nproto.grpc.api.v1.Giftcard.prototype.getIssuedByAccountName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 24, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Giftcard} returns this\n */\nproto.grpc.api.v1.Giftcard.prototype.setIssuedByAccountName = function(value) {\n return jspb.Message.setProto3StringField(this, 24, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: giftcard_product.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardProduct', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardProduct = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.GiftcardProduct.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardProduct, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardProduct.displayName = 'proto.grpc.api.v1.GiftcardProduct';\n}\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.GiftcardProduct.repeatedFields_ = [13,14];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardProduct.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardProduct} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardProduct.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n code: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n title: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n description: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n backgroundImageUrl: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n serviceId: jspb.Message.getFieldWithDefault(msg, 6, 0),\n locale: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n isActive: jspb.Message.getBooleanFieldWithDefault(msg, 8, false),\n color: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n expirePeriodInMonths: jspb.Message.getFieldWithDefault(msg, 10, 0),\n showLogo: jspb.Message.getBooleanFieldWithDefault(msg, 11, false),\n footerText: jspb.Message.getFieldWithDefault(msg, 12, \"\"),\n pricesList: (f = jspb.Message.getRepeatedField(msg, 13)) == null ? undefined : f,\n feesList: (f = jspb.Message.getRepeatedField(msg, 14)) == null ? undefined : f,\n currency: jspb.Message.getFieldWithDefault(msg, 15, \"\"),\n stripeAccountExist: jspb.Message.getBooleanFieldWithDefault(msg, 16, false),\n stripeAccountActive: jspb.Message.getBooleanFieldWithDefault(msg, 17, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardProduct}\n */\nproto.grpc.api.v1.GiftcardProduct.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardProduct;\n return proto.grpc.api.v1.GiftcardProduct.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardProduct} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardProduct}\n */\nproto.grpc.api.v1.GiftcardProduct.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setCode(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setTitle(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setDescription(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setBackgroundImageUrl(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setServiceId(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setLocale(value);\n break;\n case 8:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsActive(value);\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.setColor(value);\n break;\n case 10:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setExpirePeriodInMonths(value);\n break;\n case 11:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setShowLogo(value);\n break;\n case 12:\n var value = /** @type {string} */ (reader.readString());\n msg.setFooterText(value);\n break;\n case 13:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt64() : [reader.readInt64()]);\n for (var i = 0; i < values.length; i++) {\n msg.addPrices(values[i]);\n }\n break;\n case 14:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt64() : [reader.readInt64()]);\n for (var i = 0; i < values.length; i++) {\n msg.addFees(values[i]);\n }\n break;\n case 15:\n var value = /** @type {string} */ (reader.readString());\n msg.setCurrency(value);\n break;\n case 16:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setStripeAccountExist(value);\n break;\n case 17:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setStripeAccountActive(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardProduct.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardProduct} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardProduct.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getCode();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getTitle();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getDescription();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getBackgroundImageUrl();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getServiceId();\n if (f !== 0) {\n writer.writeInt64(\n 6,\n f\n );\n }\n f = message.getLocale();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getIsActive();\n if (f) {\n writer.writeBool(\n 8,\n f\n );\n }\n f = message.getColor();\n if (f.length > 0) {\n writer.writeString(\n 9,\n f\n );\n }\n f = message.getExpirePeriodInMonths();\n if (f !== 0) {\n writer.writeInt32(\n 10,\n f\n );\n }\n f = message.getShowLogo();\n if (f) {\n writer.writeBool(\n 11,\n f\n );\n }\n f = message.getFooterText();\n if (f.length > 0) {\n writer.writeString(\n 12,\n f\n );\n }\n f = message.getPricesList();\n if (f.length > 0) {\n writer.writePackedInt64(\n 13,\n f\n );\n }\n f = message.getFeesList();\n if (f.length > 0) {\n writer.writePackedInt64(\n 14,\n f\n );\n }\n f = message.getCurrency();\n if (f.length > 0) {\n writer.writeString(\n 15,\n f\n );\n }\n f = message.getStripeAccountExist();\n if (f) {\n writer.writeBool(\n 16,\n f\n );\n }\n f = message.getStripeAccountActive();\n if (f) {\n writer.writeBool(\n 17,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string code = 2;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setCode = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string title = 3;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getTitle = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setTitle = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string description = 4;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getDescription = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setDescription = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string background_image_url = 5;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getBackgroundImageUrl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setBackgroundImageUrl = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional int64 service_id = 6;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getServiceId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setServiceId = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\n/**\n * optional string locale = 7;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getLocale = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setLocale = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional bool is_active = 8;\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getIsActive = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 8, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setIsActive = function(value) {\n return jspb.Message.setProto3BooleanField(this, 8, value);\n};\n\n\n/**\n * optional string color = 9;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getColor = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setColor = function(value) {\n return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * optional int32 expire_period_in_months = 10;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getExpirePeriodInMonths = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setExpirePeriodInMonths = function(value) {\n return jspb.Message.setProto3IntField(this, 10, value);\n};\n\n\n/**\n * optional bool show_logo = 11;\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getShowLogo = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 11, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setShowLogo = function(value) {\n return jspb.Message.setProto3BooleanField(this, 11, value);\n};\n\n\n/**\n * optional string footer_text = 12;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getFooterText = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setFooterText = function(value) {\n return jspb.Message.setProto3StringField(this, 12, value);\n};\n\n\n/**\n * repeated int64 prices = 13;\n * @return {!Array}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getPricesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 13));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setPricesList = function(value) {\n return jspb.Message.setField(this, 13, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.addPrices = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 13, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.clearPricesList = function() {\n return this.setPricesList([]);\n};\n\n\n/**\n * repeated int64 fees = 14;\n * @return {!Array}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getFeesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 14));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setFeesList = function(value) {\n return jspb.Message.setField(this, 14, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.addFees = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 14, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.clearFeesList = function() {\n return this.setFeesList([]);\n};\n\n\n/**\n * optional string currency = 15;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getCurrency = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 15, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setCurrency = function(value) {\n return jspb.Message.setProto3StringField(this, 15, value);\n};\n\n\n/**\n * optional bool stripe_account_exist = 16;\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getStripeAccountExist = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 16, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setStripeAccountExist = function(value) {\n return jspb.Message.setProto3BooleanField(this, 16, value);\n};\n\n\n/**\n * optional bool stripe_account_active = 17;\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.getStripeAccountActive = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 17, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.GiftcardProduct} returns this\n */\nproto.grpc.api.v1.GiftcardProduct.prototype.setStripeAccountActive = function(value) {\n return jspb.Message.setProto3BooleanField(this, 17, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: giftcard_transaction.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardTransaction', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardTransaction.GiftcardTransactionType', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardTransaction = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardTransaction, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardTransaction.displayName = 'proto.grpc.api.v1.GiftcardTransaction';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardTransaction.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardTransaction} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardTransaction.toObject = function(includeInstance, msg) {\n var f, obj = {\n type: jspb.Message.getFieldWithDefault(msg, 1, 0),\n amount: jspb.Message.getFieldWithDefault(msg, 2, 0),\n currency: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n date: jspb.Message.getFieldWithDefault(msg, 4, 0),\n giftcardId: jspb.Message.getFieldWithDefault(msg, 5, 0),\n giftcardCode: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n giftcardIssuedByAccountId: jspb.Message.getFieldWithDefault(msg, 7, 0),\n giftcardIssuedByAccountName: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n executedByAccountId: jspb.Message.getFieldWithDefault(msg, 9, 0),\n executedByAccountName: jspb.Message.getFieldWithDefault(msg, 10, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardTransaction}\n */\nproto.grpc.api.v1.GiftcardTransaction.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardTransaction;\n return proto.grpc.api.v1.GiftcardTransaction.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardTransaction} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardTransaction}\n */\nproto.grpc.api.v1.GiftcardTransaction.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {!proto.grpc.api.v1.GiftcardTransaction.GiftcardTransactionType} */ (reader.readEnum());\n msg.setType(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setAmount(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setCurrency(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDate(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGiftcardId(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setGiftcardCode(value);\n break;\n case 7:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGiftcardIssuedByAccountId(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setGiftcardIssuedByAccountName(value);\n break;\n case 9:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setExecutedByAccountId(value);\n break;\n case 10:\n var value = /** @type {string} */ (reader.readString());\n msg.setExecutedByAccountName(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardTransaction.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardTransaction} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardTransaction.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getType();\n if (f !== 0.0) {\n writer.writeEnum(\n 1,\n f\n );\n }\n f = message.getAmount();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getCurrency();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getDate();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n f = message.getGiftcardId();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getGiftcardCode();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getGiftcardIssuedByAccountId();\n if (f !== 0) {\n writer.writeInt64(\n 7,\n f\n );\n }\n f = message.getGiftcardIssuedByAccountName();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getExecutedByAccountId();\n if (f !== 0) {\n writer.writeInt64(\n 9,\n f\n );\n }\n f = message.getExecutedByAccountName();\n if (f.length > 0) {\n writer.writeString(\n 10,\n f\n );\n }\n};\n\n\n/**\n * @enum {number}\n */\nproto.grpc.api.v1.GiftcardTransaction.GiftcardTransactionType = {\n NONE: 0,\n SALE: 1,\n FEE: 2,\n REDEEM: 3,\n EXPIRATION: 4\n};\n\n/**\n * optional GiftcardTransactionType type = 1;\n * @return {!proto.grpc.api.v1.GiftcardTransaction.GiftcardTransactionType}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getType = function() {\n return /** @type {!proto.grpc.api.v1.GiftcardTransaction.GiftcardTransactionType} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardTransaction.GiftcardTransactionType} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setType = function(value) {\n return jspb.Message.setProto3EnumField(this, 1, value);\n};\n\n\n/**\n * optional int32 amount = 2;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getAmount = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setAmount = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional string currency = 3;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getCurrency = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setCurrency = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional int64 date = 4;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setDate = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional int64 giftcard_id = 5;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getGiftcardId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setGiftcardId = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional string giftcard_code = 6;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getGiftcardCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setGiftcardCode = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional int64 giftcard_issued_by_account_id = 7;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getGiftcardIssuedByAccountId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setGiftcardIssuedByAccountId = function(value) {\n return jspb.Message.setProto3IntField(this, 7, value);\n};\n\n\n/**\n * optional string giftcard_issued_by_account_name = 8;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getGiftcardIssuedByAccountName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setGiftcardIssuedByAccountName = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * optional int64 executed_by_account_id = 9;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getExecutedByAccountId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setExecutedByAccountId = function(value) {\n return jspb.Message.setProto3IntField(this, 9, value);\n};\n\n\n/**\n * optional string executed_by_account_name = 10;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.getExecutedByAccountName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardTransaction} returns this\n */\nproto.grpc.api.v1.GiftcardTransaction.prototype.setExecutedByAccountName = function(value) {\n return jspb.Message.setProto3StringField(this, 10, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: giftcards_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar empty_pb = require('./empty_pb.js')\n\nvar giftcard_pb = require('./giftcard_pb.js')\n\nvar giftcard_product_pb = require('./giftcard_product_pb.js')\n\nvar giftcard_transaction_pb = require('./giftcard_transaction_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./giftcards_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.GiftcardsServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.GiftcardsServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.EmptyRequest,\n * !proto.grpc.api.v1.GiftcardsProductResponse>}\n */\nconst methodDescriptor_GiftcardsService_getProduct = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.GiftcardsService/getProduct',\n grpc.web.MethodType.UNARY,\n empty_pb.EmptyRequest,\n proto.grpc.api.v1.GiftcardsProductResponse,\n /**\n * @param {!proto.grpc.api.v1.EmptyRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.GiftcardsProductResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.GiftcardsProductResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServiceClient.prototype.getProduct =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/getProduct',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_getProduct,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.GiftcardsServicePromiseClient.prototype.getProduct =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/getProduct',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_getProduct);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.GiftcardsProductRequets,\n * !proto.grpc.api.v1.GiftcardsProductResponse>}\n */\nconst methodDescriptor_GiftcardsService_updateProduct = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.GiftcardsService/updateProduct',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.GiftcardsProductRequets,\n proto.grpc.api.v1.GiftcardsProductResponse,\n /**\n * @param {!proto.grpc.api.v1.GiftcardsProductRequets} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.GiftcardsProductResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsProductRequets} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.GiftcardsProductResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServiceClient.prototype.updateProduct =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/updateProduct',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_updateProduct,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsProductRequets} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.GiftcardsServicePromiseClient.prototype.updateProduct =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/updateProduct',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_updateProduct);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.GiftcardsListTransactionsRequest,\n * !proto.grpc.api.v1.GiftcardsListTransactionsResponse>}\n */\nconst methodDescriptor_GiftcardsService_listTransactions = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.GiftcardsService/listTransactions',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.GiftcardsListTransactionsRequest,\n proto.grpc.api.v1.GiftcardsListTransactionsResponse,\n /**\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.GiftcardsListTransactionsResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServiceClient.prototype.listTransactions =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/listTransactions',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_listTransactions);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServicePromiseClient.prototype.listTransactions =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/listTransactions',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_listTransactions);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.GiftcardsListGiftcardsRequest,\n * !proto.grpc.api.v1.GiftcardsListGiftcardsResponse>}\n */\nconst methodDescriptor_GiftcardsService_listGiftcards = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.GiftcardsService/listGiftcards',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.GiftcardsListGiftcardsRequest,\n proto.grpc.api.v1.GiftcardsListGiftcardsResponse,\n /**\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.GiftcardsListGiftcardsResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServiceClient.prototype.listGiftcards =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/listGiftcards',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_listGiftcards);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServicePromiseClient.prototype.listGiftcards =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/listGiftcards',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_listGiftcards);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.GiftcardsGetGiftcardRequest,\n * !proto.grpc.api.v1.GiftcardsGiftcardResponse>}\n */\nconst methodDescriptor_GiftcardsService_getGiftcard = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.GiftcardsService/getGiftcard',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.GiftcardsGetGiftcardRequest,\n proto.grpc.api.v1.GiftcardsGiftcardResponse,\n /**\n * @param {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.GiftcardsGiftcardResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.GiftcardsGiftcardResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServiceClient.prototype.getGiftcard =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/getGiftcard',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_getGiftcard,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.GiftcardsServicePromiseClient.prototype.getGiftcard =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/getGiftcard',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_getGiftcard);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest,\n * !proto.grpc.api.v1.GiftcardsGiftcardResponse>}\n */\nconst methodDescriptor_GiftcardsService_redeemGiftcard = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.GiftcardsService/redeemGiftcard',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest,\n proto.grpc.api.v1.GiftcardsGiftcardResponse,\n /**\n * @param {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.GiftcardsGiftcardResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.GiftcardsGiftcardResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.GiftcardsServiceClient.prototype.redeemGiftcard =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/redeemGiftcard',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_redeemGiftcard,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.GiftcardsServicePromiseClient.prototype.redeemGiftcard =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.GiftcardsService/redeemGiftcard',\n request,\n metadata || {},\n methodDescriptor_GiftcardsService_redeemGiftcard);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: giftcards_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar empty_pb = require('./empty_pb.js');\ngoog.object.extend(proto, empty_pb);\nvar giftcard_pb = require('./giftcard_pb.js');\ngoog.object.extend(proto, giftcard_pb);\nvar giftcard_product_pb = require('./giftcard_product_pb.js');\ngoog.object.extend(proto, giftcard_product_pb);\nvar giftcard_transaction_pb = require('./giftcard_transaction_pb.js');\ngoog.object.extend(proto, giftcard_transaction_pb);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsGetGiftcardRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsGiftcardResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsListGiftcardsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsListGiftcardsResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsListTransactionsParams', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsListTransactionsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsListTransactionsResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsProductRequets', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsProductResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsProductRequets = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsProductRequets, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsProductRequets.displayName = 'proto.grpc.api.v1.GiftcardsProductRequets';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsProductResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsProductResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsProductResponse.displayName = 'proto.grpc.api.v1.GiftcardsProductResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.GiftcardsListTransactionsParams.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsListTransactionsParams, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsListTransactionsParams.displayName = 'proto.grpc.api.v1.GiftcardsListTransactionsParams';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsListTransactionsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsListTransactionsRequest.displayName = 'proto.grpc.api.v1.GiftcardsListTransactionsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsListTransactionsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsListTransactionsResponse.displayName = 'proto.grpc.api.v1.GiftcardsListTransactionsResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.GiftcardsListGiftcardsRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsListGiftcardsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsListGiftcardsRequest.displayName = 'proto.grpc.api.v1.GiftcardsListGiftcardsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsListGiftcardsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsListGiftcardsResponse.displayName = 'proto.grpc.api.v1.GiftcardsListGiftcardsResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.displayName = 'proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsGetGiftcardRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsGetGiftcardRequest.displayName = 'proto.grpc.api.v1.GiftcardsGetGiftcardRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.GiftcardsGiftcardResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GiftcardsGiftcardResponse.displayName = 'proto.grpc.api.v1.GiftcardsGiftcardResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsProductRequets.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsProductRequets.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsProductRequets} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsProductRequets.toObject = function(includeInstance, msg) {\n var f, obj = {\n product: (f = msg.getProduct()) && giftcard_product_pb.GiftcardProduct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsProductRequets}\n */\nproto.grpc.api.v1.GiftcardsProductRequets.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsProductRequets;\n return proto.grpc.api.v1.GiftcardsProductRequets.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsProductRequets} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsProductRequets}\n */\nproto.grpc.api.v1.GiftcardsProductRequets.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new giftcard_product_pb.GiftcardProduct;\n reader.readMessage(value,giftcard_product_pb.GiftcardProduct.deserializeBinaryFromReader);\n msg.setProduct(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsProductRequets.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsProductRequets.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsProductRequets} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsProductRequets.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProduct();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n giftcard_product_pb.GiftcardProduct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional GiftcardProduct product = 1;\n * @return {?proto.grpc.api.v1.GiftcardProduct}\n */\nproto.grpc.api.v1.GiftcardsProductRequets.prototype.getProduct = function() {\n return /** @type{?proto.grpc.api.v1.GiftcardProduct} */ (\n jspb.Message.getWrapperField(this, giftcard_product_pb.GiftcardProduct, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GiftcardProduct|undefined} value\n * @return {!proto.grpc.api.v1.GiftcardsProductRequets} returns this\n*/\nproto.grpc.api.v1.GiftcardsProductRequets.prototype.setProduct = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.GiftcardsProductRequets} returns this\n */\nproto.grpc.api.v1.GiftcardsProductRequets.prototype.clearProduct = function() {\n return this.setProduct(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardsProductRequets.prototype.hasProduct = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsProductResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsProductResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsProductResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsProductResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n product: (f = msg.getProduct()) && giftcard_product_pb.GiftcardProduct.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsProductResponse}\n */\nproto.grpc.api.v1.GiftcardsProductResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsProductResponse;\n return proto.grpc.api.v1.GiftcardsProductResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsProductResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsProductResponse}\n */\nproto.grpc.api.v1.GiftcardsProductResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new giftcard_product_pb.GiftcardProduct;\n reader.readMessage(value,giftcard_product_pb.GiftcardProduct.deserializeBinaryFromReader);\n msg.setProduct(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsProductResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsProductResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsProductResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsProductResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProduct();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n giftcard_product_pb.GiftcardProduct.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional GiftcardProduct product = 1;\n * @return {?proto.grpc.api.v1.GiftcardProduct}\n */\nproto.grpc.api.v1.GiftcardsProductResponse.prototype.getProduct = function() {\n return /** @type{?proto.grpc.api.v1.GiftcardProduct} */ (\n jspb.Message.getWrapperField(this, giftcard_product_pb.GiftcardProduct, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GiftcardProduct|undefined} value\n * @return {!proto.grpc.api.v1.GiftcardsProductResponse} returns this\n*/\nproto.grpc.api.v1.GiftcardsProductResponse.prototype.setProduct = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.GiftcardsProductResponse} returns this\n */\nproto.grpc.api.v1.GiftcardsProductResponse.prototype.clearProduct = function() {\n return this.setProduct(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardsProductResponse.prototype.hasProduct = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.repeatedFields_ = [3,4];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsListTransactionsParams.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsParams} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.toObject = function(includeInstance, msg) {\n var f, obj = {\n beginDate: jspb.Message.getFieldWithDefault(msg, 1, 0),\n endDate: jspb.Message.getFieldWithDefault(msg, 2, 0),\n typesList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,\n giftcardCodesList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,\n giftcardCode: jspb.Message.getFieldWithDefault(msg, 5, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsListTransactionsParams;\n return proto.grpc.api.v1.GiftcardsListTransactionsParams.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsParams} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setBeginDate(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setEndDate(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.addTypes(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.addGiftcardCodes(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setGiftcardCode(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsListTransactionsParams.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsParams} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getBeginDate();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n f = message.getEndDate();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getTypesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 3,\n f\n );\n }\n f = message.getGiftcardCodesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 4,\n f\n );\n }\n f = message.getGiftcardCode();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n};\n\n\n/**\n * optional int32 begin_date = 1;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.getBeginDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.setBeginDate = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int32 end_date = 2;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.getEndDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.setEndDate = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * repeated string types = 3;\n * @return {!Array}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.getTypesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 3));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.setTypesList = function(value) {\n return jspb.Message.setField(this, 3, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.addTypes = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 3, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.clearTypesList = function() {\n return this.setTypesList([]);\n};\n\n\n/**\n * repeated string giftcard_codes = 4;\n * @return {!Array}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.getGiftcardCodesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.setGiftcardCodesList = function(value) {\n return jspb.Message.setField(this, 4, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.addGiftcardCodes = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 4, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.clearGiftcardCodesList = function() {\n return this.setGiftcardCodesList([]);\n};\n\n\n/**\n * optional string giftcard_code = 5;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.getGiftcardCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsParams} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsParams.prototype.setGiftcardCode = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsListTransactionsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n params: (f = msg.getParams()) && proto.grpc.api.v1.GiftcardsListTransactionsParams.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsRequest}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsListTransactionsRequest;\n return proto.grpc.api.v1.GiftcardsListTransactionsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsRequest}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.GiftcardsListTransactionsParams;\n reader.readMessage(value,proto.grpc.api.v1.GiftcardsListTransactionsParams.deserializeBinaryFromReader);\n msg.setParams(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsListTransactionsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getParams();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.GiftcardsListTransactionsParams.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional GiftcardsListTransactionsParams params = 1;\n * @return {?proto.grpc.api.v1.GiftcardsListTransactionsParams}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.prototype.getParams = function() {\n return /** @type{?proto.grpc.api.v1.GiftcardsListTransactionsParams} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.GiftcardsListTransactionsParams, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GiftcardsListTransactionsParams|undefined} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} returns this\n*/\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.prototype.setParams = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.prototype.clearParams = function() {\n return this.setParams(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsRequest.prototype.hasParams = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsListTransactionsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n params: (f = msg.getParams()) && proto.grpc.api.v1.GiftcardsListTransactionsParams.toObject(includeInstance, f),\n transaction: (f = msg.getTransaction()) && giftcard_transaction_pb.GiftcardTransaction.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsResponse}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsListTransactionsResponse;\n return proto.grpc.api.v1.GiftcardsListTransactionsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsResponse}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.GiftcardsListTransactionsParams;\n reader.readMessage(value,proto.grpc.api.v1.GiftcardsListTransactionsParams.deserializeBinaryFromReader);\n msg.setParams(value);\n break;\n case 2:\n var value = new giftcard_transaction_pb.GiftcardTransaction;\n reader.readMessage(value,giftcard_transaction_pb.GiftcardTransaction.deserializeBinaryFromReader);\n msg.setTransaction(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsListTransactionsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsListTransactionsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getParams();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.GiftcardsListTransactionsParams.serializeBinaryToWriter\n );\n }\n f = message.getTransaction();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n giftcard_transaction_pb.GiftcardTransaction.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional GiftcardsListTransactionsParams params = 1;\n * @return {?proto.grpc.api.v1.GiftcardsListTransactionsParams}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.getParams = function() {\n return /** @type{?proto.grpc.api.v1.GiftcardsListTransactionsParams} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.GiftcardsListTransactionsParams, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GiftcardsListTransactionsParams|undefined} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsResponse} returns this\n*/\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.setParams = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsResponse} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.clearParams = function() {\n return this.setParams(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.hasParams = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * optional GiftcardTransaction transaction = 2;\n * @return {?proto.grpc.api.v1.GiftcardTransaction}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.getTransaction = function() {\n return /** @type{?proto.grpc.api.v1.GiftcardTransaction} */ (\n jspb.Message.getWrapperField(this, giftcard_transaction_pb.GiftcardTransaction, 2));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GiftcardTransaction|undefined} value\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsResponse} returns this\n*/\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.setTransaction = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.GiftcardsListTransactionsResponse} returns this\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.clearTransaction = function() {\n return this.setTransaction(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardsListTransactionsResponse.prototype.hasTransaction = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsListGiftcardsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n statusesList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsListGiftcardsRequest;\n return proto.grpc.api.v1.GiftcardsListGiftcardsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.addStatuses(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsListGiftcardsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getStatusesList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated string statuses = 1;\n * @return {!Array}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.prototype.getStatusesList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.prototype.setStatusesList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.prototype.addStatuses = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsRequest.prototype.clearStatusesList = function() {\n return this.setStatusesList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsListGiftcardsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n giftcard: (f = msg.getGiftcard()) && giftcard_pb.Giftcard.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsResponse}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsListGiftcardsResponse;\n return proto.grpc.api.v1.GiftcardsListGiftcardsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsResponse}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new giftcard_pb.Giftcard;\n reader.readMessage(value,giftcard_pb.Giftcard.deserializeBinaryFromReader);\n msg.setGiftcard(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsListGiftcardsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsListGiftcardsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getGiftcard();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n giftcard_pb.Giftcard.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Giftcard giftcard = 1;\n * @return {?proto.grpc.api.v1.Giftcard}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.prototype.getGiftcard = function() {\n return /** @type{?proto.grpc.api.v1.Giftcard} */ (\n jspb.Message.getWrapperField(this, giftcard_pb.Giftcard, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Giftcard|undefined} value\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsResponse} returns this\n*/\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.prototype.setGiftcard = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.GiftcardsListGiftcardsResponse} returns this\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.prototype.clearGiftcard = function() {\n return this.setGiftcard(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardsListGiftcardsResponse.prototype.hasGiftcard = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n giftcardId: jspb.Message.getFieldWithDefault(msg, 1, 0),\n giftcardCode: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n amount: jspb.Message.getFieldWithDefault(msg, 3, 0),\n balance: jspb.Message.getFieldWithDefault(msg, 4, 0),\n idempotencyKey: jspb.Message.getFieldWithDefault(msg, 5, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest;\n return proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGiftcardId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setGiftcardCode(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setAmount(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setBalance(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setIdempotencyKey(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getGiftcardId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getGiftcardCode();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getAmount();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getBalance();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n f = message.getIdempotencyKey();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n};\n\n\n/**\n * optional int64 giftcard_id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.getGiftcardId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.setGiftcardId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string giftcard_code = 2;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.getGiftcardCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.setGiftcardCode = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional int64 amount = 3;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.getAmount = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.setAmount = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int64 balance = 4;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.getBalance = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.setBalance = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional string idempotency_key = 5;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.getIdempotencyKey = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardsRedeemGiftcardRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsRedeemGiftcardRequest.prototype.setIdempotencyKey = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsGetGiftcardRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n giftcardId: jspb.Message.getFieldWithDefault(msg, 1, 0),\n giftcardCode: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest}\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsGetGiftcardRequest;\n return proto.grpc.api.v1.GiftcardsGetGiftcardRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest}\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGiftcardId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setGiftcardCode(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsGetGiftcardRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getGiftcardId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getGiftcardCode();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 giftcard_id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.prototype.getGiftcardId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.prototype.setGiftcardId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string giftcard_code = 2;\n * @return {string}\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.prototype.getGiftcardCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.GiftcardsGetGiftcardRequest} returns this\n */\nproto.grpc.api.v1.GiftcardsGetGiftcardRequest.prototype.setGiftcardCode = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GiftcardsGiftcardResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GiftcardsGiftcardResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n giftcard: (f = msg.getGiftcard()) && giftcard_pb.Giftcard.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GiftcardsGiftcardResponse}\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GiftcardsGiftcardResponse;\n return proto.grpc.api.v1.GiftcardsGiftcardResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GiftcardsGiftcardResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GiftcardsGiftcardResponse}\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new giftcard_pb.Giftcard;\n reader.readMessage(value,giftcard_pb.Giftcard.deserializeBinaryFromReader);\n msg.setGiftcard(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GiftcardsGiftcardResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GiftcardsGiftcardResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getGiftcard();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n giftcard_pb.Giftcard.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Giftcard giftcard = 1;\n * @return {?proto.grpc.api.v1.Giftcard}\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.prototype.getGiftcard = function() {\n return /** @type{?proto.grpc.api.v1.Giftcard} */ (\n jspb.Message.getWrapperField(this, giftcard_pb.Giftcard, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Giftcard|undefined} value\n * @return {!proto.grpc.api.v1.GiftcardsGiftcardResponse} returns this\n*/\nproto.grpc.api.v1.GiftcardsGiftcardResponse.prototype.setGiftcard = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.GiftcardsGiftcardResponse} returns this\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.prototype.clearGiftcard = function() {\n return this.setGiftcard(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.GiftcardsGiftcardResponse.prototype.hasGiftcard = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: history_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./history_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.HistoryServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.HistoryServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.HistoryRequest,\n * !proto.grpc.api.v1.HistoryResponse>}\n */\nconst methodDescriptor_HistoryService_getHistory = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.HistoryService/getHistory',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.HistoryRequest,\n proto.grpc.api.v1.HistoryResponse,\n /**\n * @param {!proto.grpc.api.v1.HistoryRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.HistoryResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.HistoryRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.HistoryResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.HistoryServiceClient.prototype.getHistory =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.HistoryService/getHistory',\n request,\n metadata || {},\n methodDescriptor_HistoryService_getHistory,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HistoryRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.HistoryServicePromiseClient.prototype.getHistory =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.HistoryService/getHistory',\n request,\n metadata || {},\n methodDescriptor_HistoryService_getHistory);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: history_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.HistoryRecord', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.HistoryRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.HistoryResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HistoryRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HistoryRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HistoryRequest.displayName = 'proto.grpc.api.v1.HistoryRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HistoryRecord = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HistoryRecord, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HistoryRecord.displayName = 'proto.grpc.api.v1.HistoryRecord';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HistoryResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.HistoryResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.HistoryResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HistoryResponse.displayName = 'proto.grpc.api.v1.HistoryResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HistoryRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HistoryRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HistoryRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HistoryRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n reservationid: jspb.Message.getFieldWithDefault(msg, 1, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HistoryRequest}\n */\nproto.grpc.api.v1.HistoryRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HistoryRequest;\n return proto.grpc.api.v1.HistoryRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HistoryRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HistoryRequest}\n */\nproto.grpc.api.v1.HistoryRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setReservationid(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HistoryRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HistoryRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HistoryRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HistoryRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getReservationid();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional int32 reservationId = 1;\n * @return {number}\n */\nproto.grpc.api.v1.HistoryRequest.prototype.getReservationid = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.HistoryRequest} returns this\n */\nproto.grpc.api.v1.HistoryRequest.prototype.setReservationid = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HistoryRecord.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HistoryRecord.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HistoryRecord} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HistoryRecord.toObject = function(includeInstance, msg) {\n var f, obj = {\n json: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HistoryRecord}\n */\nproto.grpc.api.v1.HistoryRecord.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HistoryRecord;\n return proto.grpc.api.v1.HistoryRecord.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HistoryRecord} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HistoryRecord}\n */\nproto.grpc.api.v1.HistoryRecord.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setJson(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HistoryRecord.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HistoryRecord.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HistoryRecord} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HistoryRecord.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getJson();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string json = 1;\n * @return {string}\n */\nproto.grpc.api.v1.HistoryRecord.prototype.getJson = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HistoryRecord} returns this\n */\nproto.grpc.api.v1.HistoryRecord.prototype.setJson = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.HistoryResponse.repeatedFields_ = [1,2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HistoryResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HistoryResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HistoryResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HistoryResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n recordsList: jspb.Message.toObjectList(msg.getRecordsList(),\n proto.grpc.api.v1.HistoryRecord.toObject, includeInstance),\n messagesList: jspb.Message.toObjectList(msg.getMessagesList(),\n proto.grpc.api.v1.HistoryRecord.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HistoryResponse}\n */\nproto.grpc.api.v1.HistoryResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HistoryResponse;\n return proto.grpc.api.v1.HistoryResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HistoryResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HistoryResponse}\n */\nproto.grpc.api.v1.HistoryResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.HistoryRecord;\n reader.readMessage(value,proto.grpc.api.v1.HistoryRecord.deserializeBinaryFromReader);\n msg.addRecords(value);\n break;\n case 2:\n var value = new proto.grpc.api.v1.HistoryRecord;\n reader.readMessage(value,proto.grpc.api.v1.HistoryRecord.deserializeBinaryFromReader);\n msg.addMessages(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HistoryResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HistoryResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HistoryResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HistoryResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getRecordsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.grpc.api.v1.HistoryRecord.serializeBinaryToWriter\n );\n }\n f = message.getMessagesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 2,\n f,\n proto.grpc.api.v1.HistoryRecord.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated HistoryRecord records = 1;\n * @return {!Array}\n */\nproto.grpc.api.v1.HistoryResponse.prototype.getRecordsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.HistoryRecord, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.HistoryResponse} returns this\n*/\nproto.grpc.api.v1.HistoryResponse.prototype.setRecordsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HistoryRecord=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.HistoryRecord}\n */\nproto.grpc.api.v1.HistoryResponse.prototype.addRecords = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.grpc.api.v1.HistoryRecord, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.HistoryResponse} returns this\n */\nproto.grpc.api.v1.HistoryResponse.prototype.clearRecordsList = function() {\n return this.setRecordsList([]);\n};\n\n\n/**\n * repeated HistoryRecord messages = 2;\n * @return {!Array}\n */\nproto.grpc.api.v1.HistoryResponse.prototype.getMessagesList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.HistoryRecord, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.HistoryResponse} returns this\n*/\nproto.grpc.api.v1.HistoryResponse.prototype.setMessagesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HistoryRecord=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.HistoryRecord}\n */\nproto.grpc.api.v1.HistoryResponse.prototype.addMessages = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.grpc.api.v1.HistoryRecord, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.HistoryResponse} returns this\n */\nproto.grpc.api.v1.HistoryResponse.prototype.clearMessagesList = function() {\n return this.setMessagesList([]);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: html_template.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.HtmlTemplate', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HtmlTemplate = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HtmlTemplate, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HtmlTemplate.displayName = 'proto.grpc.api.v1.HtmlTemplate';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HtmlTemplate.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HtmlTemplate} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplate.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n type: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n name: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n design: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n html: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n plaintext: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n params: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n preview: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n dtCreate: jspb.Message.getFieldWithDefault(msg, 9, 0),\n dtUpdate: jspb.Message.getFieldWithDefault(msg, 10, 0),\n isDeleted: jspb.Message.getBooleanFieldWithDefault(msg, 11, false),\n isDefault: jspb.Message.getBooleanFieldWithDefault(msg, 12, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HtmlTemplate}\n */\nproto.grpc.api.v1.HtmlTemplate.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HtmlTemplate;\n return proto.grpc.api.v1.HtmlTemplate.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HtmlTemplate} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HtmlTemplate}\n */\nproto.grpc.api.v1.HtmlTemplate.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setType(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setDesign(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setHtml(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setPlaintext(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setParams(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setPreview(value);\n break;\n case 9:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtCreate(value);\n break;\n case 10:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtUpdate(value);\n break;\n case 11:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsDeleted(value);\n break;\n case 12:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsDefault(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HtmlTemplate.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HtmlTemplate} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplate.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getType();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getDesign();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getHtml();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getPlaintext();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getParams();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getPreview();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getDtCreate();\n if (f !== 0) {\n writer.writeInt64(\n 9,\n f\n );\n }\n f = message.getDtUpdate();\n if (f !== 0) {\n writer.writeInt64(\n 10,\n f\n );\n }\n f = message.getIsDeleted();\n if (f) {\n writer.writeBool(\n 11,\n f\n );\n }\n f = message.getIsDefault();\n if (f) {\n writer.writeBool(\n 12,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string type = 2;\n * @return {string}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getType = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setType = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string name = 3;\n * @return {string}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string design = 4;\n * @return {string}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getDesign = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setDesign = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string html = 5;\n * @return {string}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getHtml = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setHtml = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string plaintext = 6;\n * @return {string}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getPlaintext = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setPlaintext = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string params = 7;\n * @return {string}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getParams = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setParams = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional string preview = 8;\n * @return {string}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getPreview = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setPreview = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * optional int64 dt_create = 9;\n * @return {number}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getDtCreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setDtCreate = function(value) {\n return jspb.Message.setProto3IntField(this, 9, value);\n};\n\n\n/**\n * optional int64 dt_update = 10;\n * @return {number}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getDtUpdate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setDtUpdate = function(value) {\n return jspb.Message.setProto3IntField(this, 10, value);\n};\n\n\n/**\n * optional bool is_deleted = 11;\n * @return {boolean}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getIsDeleted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 11, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setIsDeleted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 11, value);\n};\n\n\n/**\n * optional bool is_default = 12;\n * @return {boolean}\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.getIsDefault = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.HtmlTemplate} returns this\n */\nproto.grpc.api.v1.HtmlTemplate.prototype.setIsDefault = function(value) {\n return jspb.Message.setProto3BooleanField(this, 12, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: html_template_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar html_template_pb = require('./html_template_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./html_template_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.HtmlTemplateServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.HtmlTemplateServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.HtmlTemplateIdRequest,\n * !proto.grpc.api.v1.HtmlTemplateResponse>}\n */\nconst methodDescriptor_HtmlTemplateService_get = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.HtmlTemplateService/get',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.HtmlTemplateIdRequest,\n proto.grpc.api.v1.HtmlTemplateResponse,\n /**\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.HtmlTemplateResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.HtmlTemplateResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.HtmlTemplateServiceClient.prototype.get =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/get',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_get,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.HtmlTemplateServicePromiseClient.prototype.get =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/get',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_get);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.HtmlTemplateRequest,\n * !proto.grpc.api.v1.HtmlTemplateResponse>}\n */\nconst methodDescriptor_HtmlTemplateService_create = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.HtmlTemplateService/create',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.HtmlTemplateRequest,\n proto.grpc.api.v1.HtmlTemplateResponse,\n /**\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.HtmlTemplateResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.HtmlTemplateResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.HtmlTemplateServiceClient.prototype.create =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/create',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_create,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.HtmlTemplateServicePromiseClient.prototype.create =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/create',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_create);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.HtmlTemplateRequest,\n * !proto.grpc.api.v1.HtmlTemplateResponse>}\n */\nconst methodDescriptor_HtmlTemplateService_update = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.HtmlTemplateService/update',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.HtmlTemplateRequest,\n proto.grpc.api.v1.HtmlTemplateResponse,\n /**\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.HtmlTemplateResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.HtmlTemplateResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.HtmlTemplateServiceClient.prototype.update =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/update',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_update,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.HtmlTemplateServicePromiseClient.prototype.update =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/update',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_update);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.HtmlTemplateIdRequest,\n * !proto.grpc.api.v1.HtmlTemplateResponse>}\n */\nconst methodDescriptor_HtmlTemplateService_delete = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.HtmlTemplateService/delete',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.HtmlTemplateIdRequest,\n proto.grpc.api.v1.HtmlTemplateResponse,\n /**\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.HtmlTemplateResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.HtmlTemplateResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.HtmlTemplateServiceClient.prototype.delete =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/delete',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_delete,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.HtmlTemplateServicePromiseClient.prototype.delete =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/delete',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_delete);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.HtmlTemplateListRequest,\n * !proto.grpc.api.v1.HtmlTemplateListResponse>}\n */\nconst methodDescriptor_HtmlTemplateService_list = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.HtmlTemplateService/list',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.HtmlTemplateListRequest,\n proto.grpc.api.v1.HtmlTemplateListResponse,\n /**\n * @param {!proto.grpc.api.v1.HtmlTemplateListRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.HtmlTemplateListResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateListRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.HtmlTemplateServiceClient.prototype.list =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/list',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_list);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.HtmlTemplateListRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.HtmlTemplateServicePromiseClient.prototype.list =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.HtmlTemplateService/list',\n request,\n metadata || {},\n methodDescriptor_HtmlTemplateService_list);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: html_template_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar html_template_pb = require('./html_template_pb.js');\ngoog.object.extend(proto, html_template_pb);\ngoog.exportSymbol('proto.grpc.api.v1.HtmlTemplateIdRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.HtmlTemplateListRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.HtmlTemplateListResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.HtmlTemplateRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.HtmlTemplateResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HtmlTemplateRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HtmlTemplateRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HtmlTemplateRequest.displayName = 'proto.grpc.api.v1.HtmlTemplateRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HtmlTemplateIdRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HtmlTemplateIdRequest.displayName = 'proto.grpc.api.v1.HtmlTemplateIdRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HtmlTemplateListRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HtmlTemplateListRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HtmlTemplateListRequest.displayName = 'proto.grpc.api.v1.HtmlTemplateListRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HtmlTemplateResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HtmlTemplateResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HtmlTemplateResponse.displayName = 'proto.grpc.api.v1.HtmlTemplateResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.HtmlTemplateListResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.HtmlTemplateListResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.HtmlTemplateListResponse.displayName = 'proto.grpc.api.v1.HtmlTemplateListResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HtmlTemplateRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HtmlTemplateRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n htmltemplate: (f = msg.getHtmltemplate()) && html_template_pb.HtmlTemplate.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HtmlTemplateRequest}\n */\nproto.grpc.api.v1.HtmlTemplateRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HtmlTemplateRequest;\n return proto.grpc.api.v1.HtmlTemplateRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HtmlTemplateRequest}\n */\nproto.grpc.api.v1.HtmlTemplateRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new html_template_pb.HtmlTemplate;\n reader.readMessage(value,html_template_pb.HtmlTemplate.deserializeBinaryFromReader);\n msg.setHtmltemplate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HtmlTemplateRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HtmlTemplateRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HtmlTemplateRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getHtmltemplate();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n html_template_pb.HtmlTemplate.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional HtmlTemplate htmlTemplate = 1;\n * @return {?proto.grpc.api.v1.HtmlTemplate}\n */\nproto.grpc.api.v1.HtmlTemplateRequest.prototype.getHtmltemplate = function() {\n return /** @type{?proto.grpc.api.v1.HtmlTemplate} */ (\n jspb.Message.getWrapperField(this, html_template_pb.HtmlTemplate, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.HtmlTemplate|undefined} value\n * @return {!proto.grpc.api.v1.HtmlTemplateRequest} returns this\n*/\nproto.grpc.api.v1.HtmlTemplateRequest.prototype.setHtmltemplate = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.HtmlTemplateRequest} returns this\n */\nproto.grpc.api.v1.HtmlTemplateRequest.prototype.clearHtmltemplate = function() {\n return this.setHtmltemplate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.HtmlTemplateRequest.prototype.hasHtmltemplate = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HtmlTemplateIdRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HtmlTemplateIdRequest}\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HtmlTemplateIdRequest;\n return proto.grpc.api.v1.HtmlTemplateIdRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HtmlTemplateIdRequest}\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HtmlTemplateIdRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HtmlTemplateIdRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 2;\n * @return {number}\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.HtmlTemplateIdRequest} returns this\n */\nproto.grpc.api.v1.HtmlTemplateIdRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HtmlTemplateListRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HtmlTemplateListRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HtmlTemplateListRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateListRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HtmlTemplateListRequest}\n */\nproto.grpc.api.v1.HtmlTemplateListRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HtmlTemplateListRequest;\n return proto.grpc.api.v1.HtmlTemplateListRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HtmlTemplateListRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HtmlTemplateListRequest}\n */\nproto.grpc.api.v1.HtmlTemplateListRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HtmlTemplateListRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HtmlTemplateListRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HtmlTemplateListRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateListRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HtmlTemplateResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HtmlTemplateResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HtmlTemplateResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n htmltemplate: (f = msg.getHtmltemplate()) && html_template_pb.HtmlTemplate.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HtmlTemplateResponse}\n */\nproto.grpc.api.v1.HtmlTemplateResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HtmlTemplateResponse;\n return proto.grpc.api.v1.HtmlTemplateResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HtmlTemplateResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HtmlTemplateResponse}\n */\nproto.grpc.api.v1.HtmlTemplateResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new html_template_pb.HtmlTemplate;\n reader.readMessage(value,html_template_pb.HtmlTemplate.deserializeBinaryFromReader);\n msg.setHtmltemplate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HtmlTemplateResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HtmlTemplateResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HtmlTemplateResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getHtmltemplate();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n html_template_pb.HtmlTemplate.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional HtmlTemplate htmlTemplate = 1;\n * @return {?proto.grpc.api.v1.HtmlTemplate}\n */\nproto.grpc.api.v1.HtmlTemplateResponse.prototype.getHtmltemplate = function() {\n return /** @type{?proto.grpc.api.v1.HtmlTemplate} */ (\n jspb.Message.getWrapperField(this, html_template_pb.HtmlTemplate, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.HtmlTemplate|undefined} value\n * @return {!proto.grpc.api.v1.HtmlTemplateResponse} returns this\n*/\nproto.grpc.api.v1.HtmlTemplateResponse.prototype.setHtmltemplate = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.HtmlTemplateResponse} returns this\n */\nproto.grpc.api.v1.HtmlTemplateResponse.prototype.clearHtmltemplate = function() {\n return this.setHtmltemplate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.HtmlTemplateResponse.prototype.hasHtmltemplate = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.HtmlTemplateListResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.HtmlTemplateListResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n htmltemplate: (f = msg.getHtmltemplate()) && html_template_pb.HtmlTemplate.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.HtmlTemplateListResponse}\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.HtmlTemplateListResponse;\n return proto.grpc.api.v1.HtmlTemplateListResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.HtmlTemplateListResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.HtmlTemplateListResponse}\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new html_template_pb.HtmlTemplate;\n reader.readMessage(value,html_template_pb.HtmlTemplate.deserializeBinaryFromReader);\n msg.setHtmltemplate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.HtmlTemplateListResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.HtmlTemplateListResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getHtmltemplate();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n html_template_pb.HtmlTemplate.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional HtmlTemplate htmlTemplate = 1;\n * @return {?proto.grpc.api.v1.HtmlTemplate}\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.prototype.getHtmltemplate = function() {\n return /** @type{?proto.grpc.api.v1.HtmlTemplate} */ (\n jspb.Message.getWrapperField(this, html_template_pb.HtmlTemplate, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.HtmlTemplate|undefined} value\n * @return {!proto.grpc.api.v1.HtmlTemplateListResponse} returns this\n*/\nproto.grpc.api.v1.HtmlTemplateListResponse.prototype.setHtmltemplate = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.HtmlTemplateListResponse} returns this\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.prototype.clearHtmltemplate = function() {\n return this.setHtmltemplate(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.HtmlTemplateListResponse.prototype.hasHtmltemplate = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: marketing_campaign_manager_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar empty_pb = require('./empty_pb.js')\n\nvar marketing_campaign_pb = require('./marketing_campaign_pb.js')\n\nvar marketing_campaign_settings_pb = require('./marketing_campaign_settings_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./marketing_campaign_manager_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignIdRequest,\n * !proto.grpc.api.v1.MarketingCampaignResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_getCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/getCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignIdRequest,\n proto.grpc.api.v1.MarketingCampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.getCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/getCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_getCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.getCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/getCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_getCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignRequest,\n * !proto.grpc.api.v1.MarketingCampaignResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_createCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/createCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignRequest,\n proto.grpc.api.v1.MarketingCampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.createCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/createCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_createCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.createCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/createCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_createCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignRequest,\n * !proto.grpc.api.v1.MarketingCampaignResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_updateCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/updateCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignRequest,\n proto.grpc.api.v1.MarketingCampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.updateCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/updateCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_updateCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.updateCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/updateCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_updateCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignIdRequest,\n * !proto.grpc.api.v1.MarketingCampaignResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_deleteCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/deleteCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignIdRequest,\n proto.grpc.api.v1.MarketingCampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.deleteCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/deleteCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_deleteCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.deleteCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/deleteCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_deleteCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ListCampaignsRequest,\n * !proto.grpc.api.v1.MarketingCampaignResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_listCampaigns = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/listCampaigns',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.ListCampaignsRequest,\n proto.grpc.api.v1.MarketingCampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.ListCampaignsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ListCampaignsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.listCampaigns =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/listCampaigns',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_listCampaigns);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ListCampaignsRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.listCampaigns =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/listCampaigns',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_listCampaigns);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignSendRequest,\n * !proto.grpc.api.v1.MarketingCampaignResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_sendCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/sendCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignSendRequest,\n proto.grpc.api.v1.MarketingCampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignSendRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignSendRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.sendCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/sendCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_sendCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignSendRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.sendCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/sendCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_sendCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignArchiveRequest,\n * !proto.grpc.api.v1.MarketingCampaignResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_archiveCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/archiveCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignArchiveRequest,\n proto.grpc.api.v1.MarketingCampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.archiveCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/archiveCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_archiveCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.archiveCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/archiveCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_archiveCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest,\n * !proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_previewContactFilter = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/previewContactFilter',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest,\n proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.previewContactFilter =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/previewContactFilter',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_previewContactFilter,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.previewContactFilter =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/previewContactFilter',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_previewContactFilter);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.MarketingCampaignTestRequest,\n * !proto.grpc.api.v1.EmptyResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_testCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/testCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.MarketingCampaignTestRequest,\n empty_pb.EmptyResponse,\n /**\n * @param {!proto.grpc.api.v1.MarketingCampaignTestRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n empty_pb.EmptyResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignTestRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.EmptyResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.testCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/testCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_testCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaignTestRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.testCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/testCampaign',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_testCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.EmptyRequest,\n * !proto.grpc.api.v1.MarketingCampaignSettingsResponse>}\n */\nconst methodDescriptor_MarketingCampaignManagerService_getSettings = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MarketingCampaignManagerService/getSettings',\n grpc.web.MethodType.UNARY,\n empty_pb.EmptyRequest,\n proto.grpc.api.v1.MarketingCampaignSettingsResponse,\n /**\n * @param {!proto.grpc.api.v1.EmptyRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MarketingCampaignSettingsResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MarketingCampaignSettingsResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MarketingCampaignManagerServiceClient.prototype.getSettings =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/getSettings',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_getSettings,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MarketingCampaignManagerServicePromiseClient.prototype.getSettings =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MarketingCampaignManagerService/getSettings',\n request,\n metadata || {},\n methodDescriptor_MarketingCampaignManagerService_getSettings);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: marketing_campaign_manager_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar empty_pb = require('./empty_pb.js');\ngoog.object.extend(proto, empty_pb);\nvar marketing_campaign_pb = require('./marketing_campaign_pb.js');\ngoog.object.extend(proto, marketing_campaign_pb);\nvar marketing_campaign_settings_pb = require('./marketing_campaign_settings_pb.js');\ngoog.object.extend(proto, marketing_campaign_settings_pb);\ngoog.exportSymbol('proto.grpc.api.v1.ListCampaignsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ListCampaignsRequestParams', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignArchiveRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignIdRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignSendRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignSettingsResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignTestRequest', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignIdRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignIdRequest.displayName = 'proto.grpc.api.v1.MarketingCampaignIdRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignRequest.displayName = 'proto.grpc.api.v1.MarketingCampaignRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.MarketingCampaignTestRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignTestRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignTestRequest.displayName = 'proto.grpc.api.v1.MarketingCampaignTestRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignArchiveRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignArchiveRequest.displayName = 'proto.grpc.api.v1.MarketingCampaignArchiveRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignSendRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignSendRequest.displayName = 'proto.grpc.api.v1.MarketingCampaignSendRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignResponse.displayName = 'proto.grpc.api.v1.MarketingCampaignResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ListCampaignsRequestParams = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ListCampaignsRequestParams, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ListCampaignsRequestParams.displayName = 'proto.grpc.api.v1.ListCampaignsRequestParams';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ListCampaignsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ListCampaignsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ListCampaignsRequest.displayName = 'proto.grpc.api.v1.ListCampaignsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.displayName = 'proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.displayName = 'proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignSettingsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignSettingsResponse.displayName = 'proto.grpc.api.v1.MarketingCampaignSettingsResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignIdRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignIdRequest}\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignIdRequest;\n return proto.grpc.api.v1.MarketingCampaignIdRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignIdRequest}\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignIdRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignIdRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaignIdRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignIdRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n marketingCampaign: (f = msg.getMarketingCampaign()) && marketing_campaign_pb.MarketingCampaign.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignRequest}\n */\nproto.grpc.api.v1.MarketingCampaignRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignRequest;\n return proto.grpc.api.v1.MarketingCampaignRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignRequest}\n */\nproto.grpc.api.v1.MarketingCampaignRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new marketing_campaign_pb.MarketingCampaign;\n reader.readMessage(value,marketing_campaign_pb.MarketingCampaign.deserializeBinaryFromReader);\n msg.setMarketingCampaign(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMarketingCampaign();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n marketing_campaign_pb.MarketingCampaign.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional MarketingCampaign marketing_campaign = 1;\n * @return {?proto.grpc.api.v1.MarketingCampaign}\n */\nproto.grpc.api.v1.MarketingCampaignRequest.prototype.getMarketingCampaign = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign} */ (\n jspb.Message.getWrapperField(this, marketing_campaign_pb.MarketingCampaign, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaignRequest} returns this\n*/\nproto.grpc.api.v1.MarketingCampaignRequest.prototype.setMarketingCampaign = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaignRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignRequest.prototype.clearMarketingCampaign = function() {\n return this.setMarketingCampaign(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaignRequest.prototype.hasMarketingCampaign = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignTestRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignTestRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n recipientsList: (f = jspb.Message.getRepeatedField(msg, 2)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignTestRequest}\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignTestRequest;\n return proto.grpc.api.v1.MarketingCampaignTestRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignTestRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignTestRequest}\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.addRecipients(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignTestRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignTestRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getRecipientsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaignTestRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * repeated string recipients = 2;\n * @return {!Array}\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.getRecipientsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.MarketingCampaignTestRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.setRecipientsList = function(value) {\n return jspb.Message.setField(this, 2, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.MarketingCampaignTestRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.addRecipients = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 2, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.MarketingCampaignTestRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignTestRequest.prototype.clearRecipientsList = function() {\n return this.setRecipientsList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignArchiveRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n isAchived: jspb.Message.getBooleanFieldWithDefault(msg, 2, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignArchiveRequest}\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignArchiveRequest;\n return proto.grpc.api.v1.MarketingCampaignArchiveRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignArchiveRequest}\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsAchived(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignArchiveRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getIsAchived();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool is_achived = 2;\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.prototype.getIsAchived = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.MarketingCampaignArchiveRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignArchiveRequest.prototype.setIsAchived = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignSendRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignSendRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n omitCampaignCheck: jspb.Message.getBooleanFieldWithDefault(msg, 2, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignSendRequest}\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignSendRequest;\n return proto.grpc.api.v1.MarketingCampaignSendRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignSendRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignSendRequest}\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setOmitCampaignCheck(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignSendRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignSendRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getOmitCampaignCheck();\n if (f) {\n writer.writeBool(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaignSendRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional bool omit_campaign_check = 2;\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.prototype.getOmitCampaignCheck = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 2, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.MarketingCampaignSendRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignSendRequest.prototype.setOmitCampaignCheck = function(value) {\n return jspb.Message.setProto3BooleanField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n marketingCampaign: (f = msg.getMarketingCampaign()) && marketing_campaign_pb.MarketingCampaign.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignResponse}\n */\nproto.grpc.api.v1.MarketingCampaignResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignResponse;\n return proto.grpc.api.v1.MarketingCampaignResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignResponse}\n */\nproto.grpc.api.v1.MarketingCampaignResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new marketing_campaign_pb.MarketingCampaign;\n reader.readMessage(value,marketing_campaign_pb.MarketingCampaign.deserializeBinaryFromReader);\n msg.setMarketingCampaign(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMarketingCampaign();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n marketing_campaign_pb.MarketingCampaign.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional MarketingCampaign marketing_campaign = 1;\n * @return {?proto.grpc.api.v1.MarketingCampaign}\n */\nproto.grpc.api.v1.MarketingCampaignResponse.prototype.getMarketingCampaign = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign} */ (\n jspb.Message.getWrapperField(this, marketing_campaign_pb.MarketingCampaign, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaignResponse} returns this\n*/\nproto.grpc.api.v1.MarketingCampaignResponse.prototype.setMarketingCampaign = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaignResponse} returns this\n */\nproto.grpc.api.v1.MarketingCampaignResponse.prototype.clearMarketingCampaign = function() {\n return this.setMarketingCampaign(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaignResponse.prototype.hasMarketingCampaign = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ListCampaignsRequestParams.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ListCampaignsRequestParams} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.toObject = function(includeInstance, msg) {\n var f, obj = {\n beginDate: jspb.Message.getFieldWithDefault(msg, 1, 0),\n endDate: jspb.Message.getFieldWithDefault(msg, 2, 0),\n showArchived: jspb.Message.getBooleanFieldWithDefault(msg, 3, false)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ListCampaignsRequestParams}\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ListCampaignsRequestParams;\n return proto.grpc.api.v1.ListCampaignsRequestParams.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ListCampaignsRequestParams} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ListCampaignsRequestParams}\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setBeginDate(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setEndDate(value);\n break;\n case 3:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setShowArchived(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ListCampaignsRequestParams.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ListCampaignsRequestParams} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getBeginDate();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n f = message.getEndDate();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getShowArchived();\n if (f) {\n writer.writeBool(\n 3,\n f\n );\n }\n};\n\n\n/**\n * optional int32 begin_date = 1;\n * @return {number}\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.getBeginDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ListCampaignsRequestParams} returns this\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.setBeginDate = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int32 end_date = 2;\n * @return {number}\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.getEndDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ListCampaignsRequestParams} returns this\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.setEndDate = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional bool show_archived = 3;\n * @return {boolean}\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.getShowArchived = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 3, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ListCampaignsRequestParams} returns this\n */\nproto.grpc.api.v1.ListCampaignsRequestParams.prototype.setShowArchived = function(value) {\n return jspb.Message.setProto3BooleanField(this, 3, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ListCampaignsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ListCampaignsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ListCampaignsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ListCampaignsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n params: (f = msg.getParams()) && proto.grpc.api.v1.ListCampaignsRequestParams.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ListCampaignsRequest}\n */\nproto.grpc.api.v1.ListCampaignsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ListCampaignsRequest;\n return proto.grpc.api.v1.ListCampaignsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ListCampaignsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ListCampaignsRequest}\n */\nproto.grpc.api.v1.ListCampaignsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.ListCampaignsRequestParams;\n reader.readMessage(value,proto.grpc.api.v1.ListCampaignsRequestParams.deserializeBinaryFromReader);\n msg.setParams(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ListCampaignsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ListCampaignsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ListCampaignsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ListCampaignsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getParams();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.ListCampaignsRequestParams.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ListCampaignsRequestParams params = 1;\n * @return {?proto.grpc.api.v1.ListCampaignsRequestParams}\n */\nproto.grpc.api.v1.ListCampaignsRequest.prototype.getParams = function() {\n return /** @type{?proto.grpc.api.v1.ListCampaignsRequestParams} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.ListCampaignsRequestParams, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ListCampaignsRequestParams|undefined} value\n * @return {!proto.grpc.api.v1.ListCampaignsRequest} returns this\n*/\nproto.grpc.api.v1.ListCampaignsRequest.prototype.setParams = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ListCampaignsRequest} returns this\n */\nproto.grpc.api.v1.ListCampaignsRequest.prototype.clearParams = function() {\n return this.setParams(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ListCampaignsRequest.prototype.hasParams = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n contactFilterData: jspb.Message.getFieldWithDefault(msg, 1, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest;\n return proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setContactFilterData(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getContactFilterData();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n};\n\n\n/**\n * optional string contact_filter_data = 1;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.prototype.getContactFilterData = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest} returns this\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterRequest.prototype.setContactFilterData = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n audienceStats: (f = msg.getAudienceStats()) && marketing_campaign_pb.MarketingCampaign.AudienceStats.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse;\n return proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new marketing_campaign_pb.MarketingCampaign.AudienceStats;\n reader.readMessage(value,marketing_campaign_pb.MarketingCampaign.AudienceStats.deserializeBinaryFromReader);\n msg.setAudienceStats(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAudienceStats();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n marketing_campaign_pb.MarketingCampaign.AudienceStats.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional MarketingCampaign.AudienceStats audience_stats = 1;\n * @return {?proto.grpc.api.v1.MarketingCampaign.AudienceStats}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.prototype.getAudienceStats = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign.AudienceStats} */ (\n jspb.Message.getWrapperField(this, marketing_campaign_pb.MarketingCampaign.AudienceStats, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign.AudienceStats|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse} returns this\n*/\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.prototype.setAudienceStats = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse} returns this\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.prototype.clearAudienceStats = function() {\n return this.setAudienceStats(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaignPreviewContactFilterResponse.prototype.hasAudienceStats = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignSettingsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignSettingsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n settings: (f = msg.getSettings()) && marketing_campaign_settings_pb.MarketingCampaignSettings.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignSettingsResponse}\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignSettingsResponse;\n return proto.grpc.api.v1.MarketingCampaignSettingsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignSettingsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignSettingsResponse}\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new marketing_campaign_settings_pb.MarketingCampaignSettings;\n reader.readMessage(value,marketing_campaign_settings_pb.MarketingCampaignSettings.deserializeBinaryFromReader);\n msg.setSettings(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignSettingsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignSettingsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getSettings();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n marketing_campaign_settings_pb.MarketingCampaignSettings.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional MarketingCampaignSettings settings = 1;\n * @return {?proto.grpc.api.v1.MarketingCampaignSettings}\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.prototype.getSettings = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaignSettings} */ (\n jspb.Message.getWrapperField(this, marketing_campaign_settings_pb.MarketingCampaignSettings, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaignSettings|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaignSettingsResponse} returns this\n*/\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.prototype.setSettings = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaignSettingsResponse} returns this\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.prototype.clearSettings = function() {\n return this.setSettings(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaignSettingsResponse.prototype.hasSettings = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: marketing_campaign.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaign', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaign.AudienceStats', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaign.ConversionStats', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaign.DeliveryStats', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaign.EngagementStats', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaign.PublishStats', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaign.Status', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaign = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaign, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaign.displayName = 'proto.grpc.api.v1.MarketingCampaign';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaign.AudienceStats, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaign.AudienceStats.displayName = 'proto.grpc.api.v1.MarketingCampaign.AudienceStats';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaign.PublishStats, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaign.PublishStats.displayName = 'proto.grpc.api.v1.MarketingCampaign.PublishStats';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaign.DeliveryStats, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaign.DeliveryStats.displayName = 'proto.grpc.api.v1.MarketingCampaign.DeliveryStats';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaign.EngagementStats, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaign.EngagementStats.displayName = 'proto.grpc.api.v1.MarketingCampaign.EngagementStats';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaign.ConversionStats, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaign.ConversionStats.displayName = 'proto.grpc.api.v1.MarketingCampaign.ConversionStats';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaign.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaign} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n locale: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n title: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n subject: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n contactFilterId: jspb.Message.getFieldWithDefault(msg, 5, 0),\n contactFilterName: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n contactFilterData: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n templateName: jspb.Message.getFieldWithDefault(msg, 8, \"\"),\n templateDesign: jspb.Message.getFieldWithDefault(msg, 9, \"\"),\n templateHtml: jspb.Message.getFieldWithDefault(msg, 10, \"\"),\n templatePlaintext: jspb.Message.getFieldWithDefault(msg, 11, \"\"),\n templatePreview: jspb.Message.getFieldWithDefault(msg, 12, \"\"),\n previewText: jspb.Message.getFieldWithDefault(msg, 13, \"\"),\n status: jspb.Message.getFieldWithDefault(msg, 14, 0),\n dtCreate: jspb.Message.getFieldWithDefault(msg, 15, 0),\n dtUpdate: jspb.Message.getFieldWithDefault(msg, 16, 0),\n dtSend: jspb.Message.getFieldWithDefault(msg, 17, 0),\n dtProcessed: jspb.Message.getFieldWithDefault(msg, 18, 0),\n isArchived: jspb.Message.getBooleanFieldWithDefault(msg, 19, false),\n isDeleted: jspb.Message.getBooleanFieldWithDefault(msg, 20, false),\n audienceStats: (f = msg.getAudienceStats()) && proto.grpc.api.v1.MarketingCampaign.AudienceStats.toObject(includeInstance, f),\n publishStats: (f = msg.getPublishStats()) && proto.grpc.api.v1.MarketingCampaign.PublishStats.toObject(includeInstance, f),\n deliveryStats: (f = msg.getDeliveryStats()) && proto.grpc.api.v1.MarketingCampaign.DeliveryStats.toObject(includeInstance, f),\n engagementStats: (f = msg.getEngagementStats()) && proto.grpc.api.v1.MarketingCampaign.EngagementStats.toObject(includeInstance, f),\n conversionStats: (f = msg.getConversionStats()) && proto.grpc.api.v1.MarketingCampaign.ConversionStats.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaign}\n */\nproto.grpc.api.v1.MarketingCampaign.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaign;\n return proto.grpc.api.v1.MarketingCampaign.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaign} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaign}\n */\nproto.grpc.api.v1.MarketingCampaign.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setLocale(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setTitle(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setSubject(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setContactFilterId(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setContactFilterName(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setContactFilterData(value);\n break;\n case 8:\n var value = /** @type {string} */ (reader.readString());\n msg.setTemplateName(value);\n break;\n case 9:\n var value = /** @type {string} */ (reader.readString());\n msg.setTemplateDesign(value);\n break;\n case 10:\n var value = /** @type {string} */ (reader.readString());\n msg.setTemplateHtml(value);\n break;\n case 11:\n var value = /** @type {string} */ (reader.readString());\n msg.setTemplatePlaintext(value);\n break;\n case 12:\n var value = /** @type {string} */ (reader.readString());\n msg.setTemplatePreview(value);\n break;\n case 13:\n var value = /** @type {string} */ (reader.readString());\n msg.setPreviewText(value);\n break;\n case 14:\n var value = /** @type {!proto.grpc.api.v1.MarketingCampaign.Status} */ (reader.readEnum());\n msg.setStatus(value);\n break;\n case 15:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtCreate(value);\n break;\n case 16:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtUpdate(value);\n break;\n case 17:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtSend(value);\n break;\n case 18:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtProcessed(value);\n break;\n case 19:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsArchived(value);\n break;\n case 20:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsDeleted(value);\n break;\n case 21:\n var value = new proto.grpc.api.v1.MarketingCampaign.AudienceStats;\n reader.readMessage(value,proto.grpc.api.v1.MarketingCampaign.AudienceStats.deserializeBinaryFromReader);\n msg.setAudienceStats(value);\n break;\n case 22:\n var value = new proto.grpc.api.v1.MarketingCampaign.PublishStats;\n reader.readMessage(value,proto.grpc.api.v1.MarketingCampaign.PublishStats.deserializeBinaryFromReader);\n msg.setPublishStats(value);\n break;\n case 23:\n var value = new proto.grpc.api.v1.MarketingCampaign.DeliveryStats;\n reader.readMessage(value,proto.grpc.api.v1.MarketingCampaign.DeliveryStats.deserializeBinaryFromReader);\n msg.setDeliveryStats(value);\n break;\n case 24:\n var value = new proto.grpc.api.v1.MarketingCampaign.EngagementStats;\n reader.readMessage(value,proto.grpc.api.v1.MarketingCampaign.EngagementStats.deserializeBinaryFromReader);\n msg.setEngagementStats(value);\n break;\n case 25:\n var value = new proto.grpc.api.v1.MarketingCampaign.ConversionStats;\n reader.readMessage(value,proto.grpc.api.v1.MarketingCampaign.ConversionStats.deserializeBinaryFromReader);\n msg.setConversionStats(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaign.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaign} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getLocale();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getTitle();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getSubject();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getContactFilterId();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getContactFilterName();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getContactFilterData();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getTemplateName();\n if (f.length > 0) {\n writer.writeString(\n 8,\n f\n );\n }\n f = message.getTemplateDesign();\n if (f.length > 0) {\n writer.writeString(\n 9,\n f\n );\n }\n f = message.getTemplateHtml();\n if (f.length > 0) {\n writer.writeString(\n 10,\n f\n );\n }\n f = message.getTemplatePlaintext();\n if (f.length > 0) {\n writer.writeString(\n 11,\n f\n );\n }\n f = message.getTemplatePreview();\n if (f.length > 0) {\n writer.writeString(\n 12,\n f\n );\n }\n f = message.getPreviewText();\n if (f.length > 0) {\n writer.writeString(\n 13,\n f\n );\n }\n f = message.getStatus();\n if (f !== 0.0) {\n writer.writeEnum(\n 14,\n f\n );\n }\n f = message.getDtCreate();\n if (f !== 0) {\n writer.writeInt64(\n 15,\n f\n );\n }\n f = message.getDtUpdate();\n if (f !== 0) {\n writer.writeInt64(\n 16,\n f\n );\n }\n f = message.getDtSend();\n if (f !== 0) {\n writer.writeInt64(\n 17,\n f\n );\n }\n f = message.getDtProcessed();\n if (f !== 0) {\n writer.writeInt64(\n 18,\n f\n );\n }\n f = message.getIsArchived();\n if (f) {\n writer.writeBool(\n 19,\n f\n );\n }\n f = message.getIsDeleted();\n if (f) {\n writer.writeBool(\n 20,\n f\n );\n }\n f = message.getAudienceStats();\n if (f != null) {\n writer.writeMessage(\n 21,\n f,\n proto.grpc.api.v1.MarketingCampaign.AudienceStats.serializeBinaryToWriter\n );\n }\n f = message.getPublishStats();\n if (f != null) {\n writer.writeMessage(\n 22,\n f,\n proto.grpc.api.v1.MarketingCampaign.PublishStats.serializeBinaryToWriter\n );\n }\n f = message.getDeliveryStats();\n if (f != null) {\n writer.writeMessage(\n 23,\n f,\n proto.grpc.api.v1.MarketingCampaign.DeliveryStats.serializeBinaryToWriter\n );\n }\n f = message.getEngagementStats();\n if (f != null) {\n writer.writeMessage(\n 24,\n f,\n proto.grpc.api.v1.MarketingCampaign.EngagementStats.serializeBinaryToWriter\n );\n }\n f = message.getConversionStats();\n if (f != null) {\n writer.writeMessage(\n 25,\n f,\n proto.grpc.api.v1.MarketingCampaign.ConversionStats.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * @enum {number}\n */\nproto.grpc.api.v1.MarketingCampaign.Status = {\n STATUS_NONE: 0,\n STATUS_DRAFT: 1,\n STATUS_SCHEDULED: 2,\n STATUS_PROCESSING: 3,\n STATUS_SENT: 4,\n STATUS_ABANDONED: 5,\n STATUS_FAILURE: 6\n};\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaign.AudienceStats.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaign.AudienceStats} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.toObject = function(includeInstance, msg) {\n var f, obj = {\n all: jspb.Message.getFieldWithDefault(msg, 1, 0),\n matching: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaign.AudienceStats}\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaign.AudienceStats;\n return proto.grpc.api.v1.MarketingCampaign.AudienceStats.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaign.AudienceStats} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaign.AudienceStats}\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setAll(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setMatching(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaign.AudienceStats.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaign.AudienceStats} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAll();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getMatching();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 all = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.prototype.getAll = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.AudienceStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.prototype.setAll = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 matching = 2;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.prototype.getMatching = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.AudienceStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.AudienceStats.prototype.setMatching = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaign.PublishStats.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaign.PublishStats} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.toObject = function(includeInstance, msg) {\n var f, obj = {\n all: jspb.Message.getFieldWithDefault(msg, 1, 0),\n scheduled: jspb.Message.getFieldWithDefault(msg, 2, 0),\n sent: jspb.Message.getFieldWithDefault(msg, 3, 0),\n processing: jspb.Message.getFieldWithDefault(msg, 4, 0),\n abandoned: jspb.Message.getFieldWithDefault(msg, 5, 0),\n failure: jspb.Message.getFieldWithDefault(msg, 6, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaign.PublishStats;\n return proto.grpc.api.v1.MarketingCampaign.PublishStats.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaign.PublishStats} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setAll(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setScheduled(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setSent(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setProcessing(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setAbandoned(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setFailure(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaign.PublishStats.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaign.PublishStats} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAll();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getScheduled();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getSent();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getProcessing();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n f = message.getAbandoned();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getFailure();\n if (f !== 0) {\n writer.writeInt64(\n 6,\n f\n );\n }\n};\n\n\n/**\n * optional int64 all = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.getAll = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.setAll = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 scheduled = 2;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.getScheduled = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.setScheduled = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 sent = 3;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.getSent = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.setSent = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int64 processing = 4;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.getProcessing = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.setProcessing = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional int64 abandoned = 5;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.getAbandoned = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.setAbandoned = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional int64 failure = 6;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.getFailure = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.PublishStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.PublishStats.prototype.setFailure = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaign.DeliveryStats.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.toObject = function(includeInstance, msg) {\n var f, obj = {\n processed: jspb.Message.getFieldWithDefault(msg, 1, 0),\n dropped: jspb.Message.getFieldWithDefault(msg, 2, 0),\n delivered: jspb.Message.getFieldWithDefault(msg, 3, 0),\n deferred: jspb.Message.getFieldWithDefault(msg, 4, 0),\n bounce: jspb.Message.getFieldWithDefault(msg, 5, 0),\n blocked: jspb.Message.getFieldWithDefault(msg, 6, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaign.DeliveryStats;\n return proto.grpc.api.v1.MarketingCampaign.DeliveryStats.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setProcessed(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDropped(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDelivered(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDeferred(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setBounce(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setBlocked(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaign.DeliveryStats.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getProcessed();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getDropped();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getDelivered();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getDeferred();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n f = message.getBounce();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getBlocked();\n if (f !== 0) {\n writer.writeInt64(\n 6,\n f\n );\n }\n};\n\n\n/**\n * optional int64 processed = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.getProcessed = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.setProcessed = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 dropped = 2;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.getDropped = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.setDropped = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 delivered = 3;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.getDelivered = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.setDelivered = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int64 deferred = 4;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.getDeferred = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.setDeferred = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional int64 bounce = 5;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.getBounce = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.setBounce = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional int64 blocked = 6;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.getBlocked = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.DeliveryStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.DeliveryStats.prototype.setBlocked = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaign.EngagementStats.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.toObject = function(includeInstance, msg) {\n var f, obj = {\n open: jspb.Message.getFieldWithDefault(msg, 1, 0),\n uniqueOpen: jspb.Message.getFieldWithDefault(msg, 2, 0),\n click: jspb.Message.getFieldWithDefault(msg, 3, 0),\n uniqueClick: jspb.Message.getFieldWithDefault(msg, 4, 0),\n spam: jspb.Message.getFieldWithDefault(msg, 5, 0),\n unsubscribe: jspb.Message.getFieldWithDefault(msg, 6, 0),\n groupUnsubscribe: jspb.Message.getFieldWithDefault(msg, 7, 0),\n groupResubscribe: jspb.Message.getFieldWithDefault(msg, 8, 0),\n widgetOpen: jspb.Message.getFieldWithDefault(msg, 9, 0),\n uniqueWidgetOpen: jspb.Message.getFieldWithDefault(msg, 10, 0),\n widgetReservation: jspb.Message.getFieldWithDefault(msg, 11, 0),\n uniqueWidgetReservation: jspb.Message.getFieldWithDefault(msg, 12, 0),\n widgetUnsubscribe: jspb.Message.getFieldWithDefault(msg, 13, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaign.EngagementStats;\n return proto.grpc.api.v1.MarketingCampaign.EngagementStats.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setOpen(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setUniqueOpen(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setClick(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setUniqueClick(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setSpam(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setUnsubscribe(value);\n break;\n case 7:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGroupUnsubscribe(value);\n break;\n case 8:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGroupResubscribe(value);\n break;\n case 9:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setWidgetOpen(value);\n break;\n case 10:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setUniqueWidgetOpen(value);\n break;\n case 11:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setWidgetReservation(value);\n break;\n case 12:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setUniqueWidgetReservation(value);\n break;\n case 13:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setWidgetUnsubscribe(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaign.EngagementStats.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getOpen();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getUniqueOpen();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getClick();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getUniqueClick();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n f = message.getSpam();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getUnsubscribe();\n if (f !== 0) {\n writer.writeInt64(\n 6,\n f\n );\n }\n f = message.getGroupUnsubscribe();\n if (f !== 0) {\n writer.writeInt64(\n 7,\n f\n );\n }\n f = message.getGroupResubscribe();\n if (f !== 0) {\n writer.writeInt64(\n 8,\n f\n );\n }\n f = message.getWidgetOpen();\n if (f !== 0) {\n writer.writeInt64(\n 9,\n f\n );\n }\n f = message.getUniqueWidgetOpen();\n if (f !== 0) {\n writer.writeInt64(\n 10,\n f\n );\n }\n f = message.getWidgetReservation();\n if (f !== 0) {\n writer.writeInt64(\n 11,\n f\n );\n }\n f = message.getUniqueWidgetReservation();\n if (f !== 0) {\n writer.writeInt64(\n 12,\n f\n );\n }\n f = message.getWidgetUnsubscribe();\n if (f !== 0) {\n writer.writeInt64(\n 13,\n f\n );\n }\n};\n\n\n/**\n * optional int64 open = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getOpen = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setOpen = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 unique_open = 2;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getUniqueOpen = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setUniqueOpen = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 click = 3;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getClick = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setClick = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int64 unique_click = 4;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getUniqueClick = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setUniqueClick = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional int64 spam = 5;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getSpam = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setSpam = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional int64 unsubscribe = 6;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getUnsubscribe = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setUnsubscribe = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\n/**\n * optional int64 group_unsubscribe = 7;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getGroupUnsubscribe = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 7, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setGroupUnsubscribe = function(value) {\n return jspb.Message.setProto3IntField(this, 7, value);\n};\n\n\n/**\n * optional int64 group_resubscribe = 8;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getGroupResubscribe = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setGroupResubscribe = function(value) {\n return jspb.Message.setProto3IntField(this, 8, value);\n};\n\n\n/**\n * optional int64 widget_open = 9;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getWidgetOpen = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setWidgetOpen = function(value) {\n return jspb.Message.setProto3IntField(this, 9, value);\n};\n\n\n/**\n * optional int64 unique_widget_open = 10;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getUniqueWidgetOpen = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setUniqueWidgetOpen = function(value) {\n return jspb.Message.setProto3IntField(this, 10, value);\n};\n\n\n/**\n * optional int64 widget_reservation = 11;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getWidgetReservation = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setWidgetReservation = function(value) {\n return jspb.Message.setProto3IntField(this, 11, value);\n};\n\n\n/**\n * optional int64 unique_widget_reservation = 12;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getUniqueWidgetReservation = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 12, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setUniqueWidgetReservation = function(value) {\n return jspb.Message.setProto3IntField(this, 12, value);\n};\n\n\n/**\n * optional int64 widget_unsubscribe = 13;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.getWidgetUnsubscribe = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 13, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.EngagementStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.EngagementStats.prototype.setWidgetUnsubscribe = function(value) {\n return jspb.Message.setProto3IntField(this, 13, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaign.ConversionStats.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.toObject = function(includeInstance, msg) {\n var f, obj = {\n all: jspb.Message.getFieldWithDefault(msg, 1, 0),\n imminent: jspb.Message.getFieldWithDefault(msg, 2, 0),\n uniqueAll: jspb.Message.getFieldWithDefault(msg, 3, 0),\n uniqueImminent: jspb.Message.getFieldWithDefault(msg, 4, 0),\n guestsAll: jspb.Message.getFieldWithDefault(msg, 5, 0),\n guestsImminent: jspb.Message.getFieldWithDefault(msg, 6, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaign.ConversionStats;\n return proto.grpc.api.v1.MarketingCampaign.ConversionStats.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setAll(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setImminent(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setUniqueAll(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setUniqueImminent(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGuestsAll(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setGuestsImminent(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaign.ConversionStats.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAll();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getImminent();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getUniqueAll();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getUniqueImminent();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n f = message.getGuestsAll();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getGuestsImminent();\n if (f !== 0) {\n writer.writeInt64(\n 6,\n f\n );\n }\n};\n\n\n/**\n * optional int64 all = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.getAll = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.setAll = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 imminent = 2;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.getImminent = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.setImminent = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 unique_all = 3;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.getUniqueAll = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.setUniqueAll = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int64 unique_imminent = 4;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.getUniqueImminent = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.setUniqueImminent = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional int64 guests_all = 5;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.getGuestsAll = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.setGuestsAll = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional int64 guests_imminent = 6;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.getGuestsImminent = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign.ConversionStats} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.ConversionStats.prototype.setGuestsImminent = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string locale = 2;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getLocale = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setLocale = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string title = 3;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getTitle = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setTitle = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string subject = 4;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getSubject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setSubject = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional int64 contact_filter_id = 5;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getContactFilterId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setContactFilterId = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional string contact_filter_name = 6;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getContactFilterName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setContactFilterName = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * optional string contact_filter_data = 7;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getContactFilterData = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setContactFilterData = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional string template_name = 8;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getTemplateName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 8, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setTemplateName = function(value) {\n return jspb.Message.setProto3StringField(this, 8, value);\n};\n\n\n/**\n * optional string template_design = 9;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getTemplateDesign = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 9, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setTemplateDesign = function(value) {\n return jspb.Message.setProto3StringField(this, 9, value);\n};\n\n\n/**\n * optional string template_html = 10;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getTemplateHtml = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 10, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setTemplateHtml = function(value) {\n return jspb.Message.setProto3StringField(this, 10, value);\n};\n\n\n/**\n * optional string template_plaintext = 11;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getTemplatePlaintext = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 11, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setTemplatePlaintext = function(value) {\n return jspb.Message.setProto3StringField(this, 11, value);\n};\n\n\n/**\n * optional string template_preview = 12;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getTemplatePreview = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 12, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setTemplatePreview = function(value) {\n return jspb.Message.setProto3StringField(this, 12, value);\n};\n\n\n/**\n * optional string preview_text = 13;\n * @return {string}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getPreviewText = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setPreviewText = function(value) {\n return jspb.Message.setProto3StringField(this, 13, value);\n};\n\n\n/**\n * optional Status status = 14;\n * @return {!proto.grpc.api.v1.MarketingCampaign.Status}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getStatus = function() {\n return /** @type {!proto.grpc.api.v1.MarketingCampaign.Status} */ (jspb.Message.getFieldWithDefault(this, 14, 0));\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MarketingCampaign.Status} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setStatus = function(value) {\n return jspb.Message.setProto3EnumField(this, 14, value);\n};\n\n\n/**\n * optional int64 dt_create = 15;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getDtCreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 15, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setDtCreate = function(value) {\n return jspb.Message.setProto3IntField(this, 15, value);\n};\n\n\n/**\n * optional int64 dt_update = 16;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getDtUpdate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 16, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setDtUpdate = function(value) {\n return jspb.Message.setProto3IntField(this, 16, value);\n};\n\n\n/**\n * optional int64 dt_send = 17;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getDtSend = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 17, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setDtSend = function(value) {\n return jspb.Message.setProto3IntField(this, 17, value);\n};\n\n\n/**\n * optional int64 dt_processed = 18;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getDtProcessed = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 18, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setDtProcessed = function(value) {\n return jspb.Message.setProto3IntField(this, 18, value);\n};\n\n\n/**\n * optional bool is_archived = 19;\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getIsArchived = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 19, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setIsArchived = function(value) {\n return jspb.Message.setProto3BooleanField(this, 19, value);\n};\n\n\n/**\n * optional bool is_deleted = 20;\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getIsDeleted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 20, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.setIsDeleted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 20, value);\n};\n\n\n/**\n * optional AudienceStats audience_stats = 21;\n * @return {?proto.grpc.api.v1.MarketingCampaign.AudienceStats}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getAudienceStats = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign.AudienceStats} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.MarketingCampaign.AudienceStats, 21));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign.AudienceStats|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n*/\nproto.grpc.api.v1.MarketingCampaign.prototype.setAudienceStats = function(value) {\n return jspb.Message.setWrapperField(this, 21, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.clearAudienceStats = function() {\n return this.setAudienceStats(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.hasAudienceStats = function() {\n return jspb.Message.getField(this, 21) != null;\n};\n\n\n/**\n * optional PublishStats publish_stats = 22;\n * @return {?proto.grpc.api.v1.MarketingCampaign.PublishStats}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getPublishStats = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign.PublishStats} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.MarketingCampaign.PublishStats, 22));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign.PublishStats|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n*/\nproto.grpc.api.v1.MarketingCampaign.prototype.setPublishStats = function(value) {\n return jspb.Message.setWrapperField(this, 22, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.clearPublishStats = function() {\n return this.setPublishStats(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.hasPublishStats = function() {\n return jspb.Message.getField(this, 22) != null;\n};\n\n\n/**\n * optional DeliveryStats delivery_stats = 23;\n * @return {?proto.grpc.api.v1.MarketingCampaign.DeliveryStats}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getDeliveryStats = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign.DeliveryStats} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.MarketingCampaign.DeliveryStats, 23));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign.DeliveryStats|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n*/\nproto.grpc.api.v1.MarketingCampaign.prototype.setDeliveryStats = function(value) {\n return jspb.Message.setWrapperField(this, 23, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.clearDeliveryStats = function() {\n return this.setDeliveryStats(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.hasDeliveryStats = function() {\n return jspb.Message.getField(this, 23) != null;\n};\n\n\n/**\n * optional EngagementStats engagement_stats = 24;\n * @return {?proto.grpc.api.v1.MarketingCampaign.EngagementStats}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getEngagementStats = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign.EngagementStats} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.MarketingCampaign.EngagementStats, 24));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign.EngagementStats|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n*/\nproto.grpc.api.v1.MarketingCampaign.prototype.setEngagementStats = function(value) {\n return jspb.Message.setWrapperField(this, 24, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.clearEngagementStats = function() {\n return this.setEngagementStats(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.hasEngagementStats = function() {\n return jspb.Message.getField(this, 24) != null;\n};\n\n\n/**\n * optional ConversionStats conversion_stats = 25;\n * @return {?proto.grpc.api.v1.MarketingCampaign.ConversionStats}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.getConversionStats = function() {\n return /** @type{?proto.grpc.api.v1.MarketingCampaign.ConversionStats} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.MarketingCampaign.ConversionStats, 25));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.MarketingCampaign.ConversionStats|undefined} value\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n*/\nproto.grpc.api.v1.MarketingCampaign.prototype.setConversionStats = function(value) {\n return jspb.Message.setWrapperField(this, 25, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MarketingCampaign} returns this\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.clearConversionStats = function() {\n return this.setConversionStats(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MarketingCampaign.prototype.hasConversionStats = function() {\n return jspb.Message.getField(this, 25) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: marketing_campaign_settings.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.MarketingCampaignSettings', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MarketingCampaignSettings = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.MarketingCampaignSettings, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MarketingCampaignSettings.displayName = 'proto.grpc.api.v1.MarketingCampaignSettings';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MarketingCampaignSettings.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MarketingCampaignSettings} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignSettings.toObject = function(includeInstance, msg) {\n var f, obj = {\n allowedMessages: jspb.Message.getFieldWithDefault(msg, 2, 0),\n createdMessages: jspb.Message.getFieldWithDefault(msg, 3, 0),\n dtQuotaReset: jspb.Message.getFieldWithDefault(msg, 4, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MarketingCampaignSettings}\n */\nproto.grpc.api.v1.MarketingCampaignSettings.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MarketingCampaignSettings;\n return proto.grpc.api.v1.MarketingCampaignSettings.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MarketingCampaignSettings} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MarketingCampaignSettings}\n */\nproto.grpc.api.v1.MarketingCampaignSettings.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setAllowedMessages(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setCreatedMessages(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtQuotaReset(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MarketingCampaignSettings.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MarketingCampaignSettings} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MarketingCampaignSettings.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getAllowedMessages();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getCreatedMessages();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getDtQuotaReset();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n};\n\n\n/**\n * optional int64 allowed_messages = 2;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.getAllowedMessages = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaignSettings} returns this\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.setAllowedMessages = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 created_messages = 3;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.getCreatedMessages = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaignSettings} returns this\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.setCreatedMessages = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int64 dt_quota_reset = 4;\n * @return {number}\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.getDtQuotaReset = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.MarketingCampaignSettings} returns this\n */\nproto.grpc.api.v1.MarketingCampaignSettings.prototype.setDtQuotaReset = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: message.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.Message', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.Message.MessageType', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Message = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.Message, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Message.displayName = 'proto.grpc.api.v1.Message';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Message.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Message.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Message} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Message.toObject = function(includeInstance, msg) {\n var f, obj = {\n reservationId: jspb.Message.getFieldWithDefault(msg, 1, 0),\n messageType: jspb.Message.getFieldWithDefault(msg, 2, 0),\n subject: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n body: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n sendBcc: jspb.Message.getBooleanFieldWithDefault(msg, 5, false),\n feedbackId: jspb.Message.getFieldWithDefault(msg, 6, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Message}\n */\nproto.grpc.api.v1.Message.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Message;\n return proto.grpc.api.v1.Message.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Message} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Message}\n */\nproto.grpc.api.v1.Message.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setReservationId(value);\n break;\n case 2:\n var value = /** @type {!proto.grpc.api.v1.Message.MessageType} */ (reader.readEnum());\n msg.setMessageType(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setSubject(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setBody(value);\n break;\n case 5:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setSendBcc(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setFeedbackId(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Message.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Message.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Message} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Message.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getReservationId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getMessageType();\n if (f !== 0.0) {\n writer.writeEnum(\n 2,\n f\n );\n }\n f = message.getSubject();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getBody();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getSendBcc();\n if (f) {\n writer.writeBool(\n 5,\n f\n );\n }\n f = message.getFeedbackId();\n if (f !== 0) {\n writer.writeInt64(\n 6,\n f\n );\n }\n};\n\n\n/**\n * @enum {number}\n */\nproto.grpc.api.v1.Message.MessageType = {\n NONE: 0,\n SENDGRID: 1,\n SMS: 3\n};\n\n/**\n * optional int64 reservation_id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Message.prototype.getReservationId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Message} returns this\n */\nproto.grpc.api.v1.Message.prototype.setReservationId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional MessageType message_type = 2;\n * @return {!proto.grpc.api.v1.Message.MessageType}\n */\nproto.grpc.api.v1.Message.prototype.getMessageType = function() {\n return /** @type {!proto.grpc.api.v1.Message.MessageType} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.Message.MessageType} value\n * @return {!proto.grpc.api.v1.Message} returns this\n */\nproto.grpc.api.v1.Message.prototype.setMessageType = function(value) {\n return jspb.Message.setProto3EnumField(this, 2, value);\n};\n\n\n/**\n * optional string subject = 3;\n * @return {string}\n */\nproto.grpc.api.v1.Message.prototype.getSubject = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Message} returns this\n */\nproto.grpc.api.v1.Message.prototype.setSubject = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * optional string body = 4;\n * @return {string}\n */\nproto.grpc.api.v1.Message.prototype.getBody = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Message} returns this\n */\nproto.grpc.api.v1.Message.prototype.setBody = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional bool send_bcc = 5;\n * @return {boolean}\n */\nproto.grpc.api.v1.Message.prototype.getSendBcc = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 5, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Message} returns this\n */\nproto.grpc.api.v1.Message.prototype.setSendBcc = function(value) {\n return jspb.Message.setProto3BooleanField(this, 5, value);\n};\n\n\n/**\n * optional int64 feedback_id = 6;\n * @return {number}\n */\nproto.grpc.api.v1.Message.prototype.getFeedbackId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Message} returns this\n */\nproto.grpc.api.v1.Message.prototype.setFeedbackId = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: message_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar empty_pb = require('./empty_pb.js')\n\nvar message_pb = require('./message_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./message_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.MessageServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.MessageServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.SendMessageRequest,\n * !proto.grpc.api.v1.EmptyResponse>}\n */\nconst methodDescriptor_MessageService_sendMessage = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.MessageService/sendMessage',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.SendMessageRequest,\n empty_pb.EmptyResponse,\n /**\n * @param {!proto.grpc.api.v1.SendMessageRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n empty_pb.EmptyResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.SendMessageRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.EmptyResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.MessageServiceClient.prototype.sendMessage =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.MessageService/sendMessage',\n request,\n metadata || {},\n methodDescriptor_MessageService_sendMessage,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.SendMessageRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.MessageServicePromiseClient.prototype.sendMessage =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.MessageService/sendMessage',\n request,\n metadata || {},\n methodDescriptor_MessageService_sendMessage);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: message_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar empty_pb = require('./empty_pb.js');\ngoog.object.extend(proto, empty_pb);\nvar message_pb = require('./message_pb.js');\ngoog.object.extend(proto, message_pb);\ngoog.exportSymbol('proto.grpc.api.v1.SendMessageRequest', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.SendMessageRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.SendMessageRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.SendMessageRequest.displayName = 'proto.grpc.api.v1.SendMessageRequest';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.SendMessageRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.SendMessageRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.SendMessageRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.SendMessageRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n message: (f = msg.getMessage()) && message_pb.Message.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.SendMessageRequest}\n */\nproto.grpc.api.v1.SendMessageRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.SendMessageRequest;\n return proto.grpc.api.v1.SendMessageRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.SendMessageRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.SendMessageRequest}\n */\nproto.grpc.api.v1.SendMessageRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new message_pb.Message;\n reader.readMessage(value,message_pb.Message.deserializeBinaryFromReader);\n msg.setMessage(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.SendMessageRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.SendMessageRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.SendMessageRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.SendMessageRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMessage();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n message_pb.Message.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Message message = 1;\n * @return {?proto.grpc.api.v1.Message}\n */\nproto.grpc.api.v1.SendMessageRequest.prototype.getMessage = function() {\n return /** @type{?proto.grpc.api.v1.Message} */ (\n jspb.Message.getWrapperField(this, message_pb.Message, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Message|undefined} value\n * @return {!proto.grpc.api.v1.SendMessageRequest} returns this\n*/\nproto.grpc.api.v1.SendMessageRequest.prototype.setMessage = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.SendMessageRequest} returns this\n */\nproto.grpc.api.v1.SendMessageRequest.prototype.clearMessage = function() {\n return this.setMessage(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.SendMessageRequest.prototype.hasMessage = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: reorder.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.ReorderEntity', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReorderRequest', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReorderEntity = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReorderEntity, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReorderEntity.displayName = 'proto.grpc.api.v1.ReorderEntity';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReorderRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.ReorderRequest.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReorderRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReorderRequest.displayName = 'proto.grpc.api.v1.ReorderRequest';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReorderEntity.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReorderEntity.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReorderEntity} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReorderEntity.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n order: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReorderEntity}\n */\nproto.grpc.api.v1.ReorderEntity.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReorderEntity;\n return proto.grpc.api.v1.ReorderEntity.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReorderEntity} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReorderEntity}\n */\nproto.grpc.api.v1.ReorderEntity.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setOrder(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReorderEntity.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReorderEntity.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReorderEntity} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReorderEntity.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getOrder();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.ReorderEntity.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReorderEntity} returns this\n */\nproto.grpc.api.v1.ReorderEntity.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int32 order = 2;\n * @return {number}\n */\nproto.grpc.api.v1.ReorderEntity.prototype.getOrder = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReorderEntity} returns this\n */\nproto.grpc.api.v1.ReorderEntity.prototype.setOrder = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.ReorderRequest.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReorderRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReorderRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReorderRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReorderRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n entitiesList: jspb.Message.toObjectList(msg.getEntitiesList(),\n proto.grpc.api.v1.ReorderEntity.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReorderRequest}\n */\nproto.grpc.api.v1.ReorderRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReorderRequest;\n return proto.grpc.api.v1.ReorderRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReorderRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReorderRequest}\n */\nproto.grpc.api.v1.ReorderRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.ReorderEntity;\n reader.readMessage(value,proto.grpc.api.v1.ReorderEntity.deserializeBinaryFromReader);\n msg.addEntities(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReorderRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReorderRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReorderRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReorderRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getEntitiesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.grpc.api.v1.ReorderEntity.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated ReorderEntity entities = 1;\n * @return {!Array}\n */\nproto.grpc.api.v1.ReorderRequest.prototype.getEntitiesList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.ReorderEntity, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ReorderRequest} returns this\n*/\nproto.grpc.api.v1.ReorderRequest.prototype.setEntitiesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReorderEntity=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ReorderEntity}\n */\nproto.grpc.api.v1.ReorderRequest.prototype.addEntities = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.grpc.api.v1.ReorderEntity, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ReorderRequest} returns this\n */\nproto.grpc.api.v1.ReorderRequest.prototype.clearEntitiesList = function() {\n return this.setEntitiesList([]);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: reports_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./reports_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ReportsServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ReportsServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ReportsRequest,\n * !proto.grpc.api.v1.TabsReportsResponse>}\n */\nconst methodDescriptor_ReportsService_getTabsReports = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ReportsService/getTabsReports',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ReportsRequest,\n proto.grpc.api.v1.TabsReportsResponse,\n /**\n * @param {!proto.grpc.api.v1.ReportsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.TabsReportsResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ReportsRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.TabsReportsResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ReportsServiceClient.prototype.getTabsReports =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ReportsService/getTabsReports',\n request,\n metadata || {},\n methodDescriptor_ReportsService_getTabsReports,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReportsRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ReportsServicePromiseClient.prototype.getTabsReports =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ReportsService/getTabsReports',\n request,\n metadata || {},\n methodDescriptor_ReportsService_getTabsReports);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ReportsRequest,\n * !proto.grpc.api.v1.MsgsReportsResponse>}\n */\nconst methodDescriptor_ReportsService_getMsgsReports = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ReportsService/getMsgsReports',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.ReportsRequest,\n proto.grpc.api.v1.MsgsReportsResponse,\n /**\n * @param {!proto.grpc.api.v1.ReportsRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.MsgsReportsResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ReportsRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.MsgsReportsResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ReportsServiceClient.prototype.getMsgsReports =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.ReportsService/getMsgsReports',\n request,\n metadata || {},\n methodDescriptor_ReportsService_getMsgsReports,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReportsRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.ReportsServicePromiseClient.prototype.getMsgsReports =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.ReportsService/getMsgsReports',\n request,\n metadata || {},\n methodDescriptor_ReportsService_getMsgsReports);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: reports_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.CampaignReports', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackReports', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackReportsBin', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.FeedbackReportsBinStars', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.GuestsReports', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MsgReports', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.MsgsReportsResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReportsParams', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReportsParams.ReportsBinType', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReportsRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ServiceReports', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.TabReports', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.TabsReportsResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.WeekdayReports', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReportsParams = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReportsParams, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReportsParams.displayName = 'proto.grpc.api.v1.ReportsParams';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReportsRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReportsRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReportsRequest.displayName = 'proto.grpc.api.v1.ReportsRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.GuestsReports = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.GuestsReports.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.GuestsReports, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.GuestsReports.displayName = 'proto.grpc.api.v1.GuestsReports';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.CampaignReports = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.CampaignReports.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.CampaignReports, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.CampaignReports.displayName = 'proto.grpc.api.v1.CampaignReports';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ServiceReports = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.ServiceReports.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.ServiceReports, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ServiceReports.displayName = 'proto.grpc.api.v1.ServiceReports';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.WeekdayReports = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.WeekdayReports.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.WeekdayReports, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.WeekdayReports.displayName = 'proto.grpc.api.v1.WeekdayReports';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackReportsBinStars = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.FeedbackReportsBinStars.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackReportsBinStars, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackReportsBinStars.displayName = 'proto.grpc.api.v1.FeedbackReportsBinStars';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackReportsBin = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackReportsBin, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackReportsBin.displayName = 'proto.grpc.api.v1.FeedbackReportsBin';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.FeedbackReports = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.FeedbackReports.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.FeedbackReports, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.FeedbackReports.displayName = 'proto.grpc.api.v1.FeedbackReports';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.TabReports = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.TabReports.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.TabReports, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.TabReports.displayName = 'proto.grpc.api.v1.TabReports';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MsgReports = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.MsgReports.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.MsgReports, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MsgReports.displayName = 'proto.grpc.api.v1.MsgReports';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.TabsReportsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.TabsReportsResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.TabsReportsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.TabsReportsResponse.displayName = 'proto.grpc.api.v1.TabsReportsResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.MsgsReportsResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.MsgsReportsResponse.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.MsgsReportsResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.MsgsReportsResponse.displayName = 'proto.grpc.api.v1.MsgsReportsResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReportsParams.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReportsParams.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReportsParams} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReportsParams.toObject = function(includeInstance, msg) {\n var f, obj = {\n beginDate: jspb.Message.getFieldWithDefault(msg, 2, 0),\n endDate: jspb.Message.getFieldWithDefault(msg, 3, 0),\n binType: jspb.Message.getFieldWithDefault(msg, 4, 0),\n bins: jspb.Message.getFieldWithDefault(msg, 5, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReportsParams}\n */\nproto.grpc.api.v1.ReportsParams.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReportsParams;\n return proto.grpc.api.v1.ReportsParams.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReportsParams} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReportsParams}\n */\nproto.grpc.api.v1.ReportsParams.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setBeginDate(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setEndDate(value);\n break;\n case 4:\n var value = /** @type {!proto.grpc.api.v1.ReportsParams.ReportsBinType} */ (reader.readEnum());\n msg.setBinType(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setBins(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReportsParams.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReportsParams.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReportsParams} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReportsParams.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getBeginDate();\n if (f !== 0) {\n writer.writeInt32(\n 2,\n f\n );\n }\n f = message.getEndDate();\n if (f !== 0) {\n writer.writeInt32(\n 3,\n f\n );\n }\n f = message.getBinType();\n if (f !== 0.0) {\n writer.writeEnum(\n 4,\n f\n );\n }\n f = message.getBins();\n if (f !== 0) {\n writer.writeInt32(\n 5,\n f\n );\n }\n};\n\n\n/**\n * @enum {number}\n */\nproto.grpc.api.v1.ReportsParams.ReportsBinType = {\n NONE: 0,\n BY_HOURS: 1,\n BY_DAYS: 2,\n BY_MONTHS: 3,\n BY_YEARS: 4,\n OVER_DAY: 12,\n OVER_YEAR: 14\n};\n\n/**\n * optional int32 begin_date = 2;\n * @return {number}\n */\nproto.grpc.api.v1.ReportsParams.prototype.getBeginDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReportsParams} returns this\n */\nproto.grpc.api.v1.ReportsParams.prototype.setBeginDate = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int32 end_date = 3;\n * @return {number}\n */\nproto.grpc.api.v1.ReportsParams.prototype.getEndDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReportsParams} returns this\n */\nproto.grpc.api.v1.ReportsParams.prototype.setEndDate = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional ReportsBinType bin_type = 4;\n * @return {!proto.grpc.api.v1.ReportsParams.ReportsBinType}\n */\nproto.grpc.api.v1.ReportsParams.prototype.getBinType = function() {\n return /** @type {!proto.grpc.api.v1.ReportsParams.ReportsBinType} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReportsParams.ReportsBinType} value\n * @return {!proto.grpc.api.v1.ReportsParams} returns this\n */\nproto.grpc.api.v1.ReportsParams.prototype.setBinType = function(value) {\n return jspb.Message.setProto3EnumField(this, 4, value);\n};\n\n\n/**\n * optional int32 bins = 5;\n * @return {number}\n */\nproto.grpc.api.v1.ReportsParams.prototype.getBins = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReportsParams} returns this\n */\nproto.grpc.api.v1.ReportsParams.prototype.setBins = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReportsRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReportsRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReportsRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReportsRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n params: (f = msg.getParams()) && proto.grpc.api.v1.ReportsParams.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReportsRequest}\n */\nproto.grpc.api.v1.ReportsRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReportsRequest;\n return proto.grpc.api.v1.ReportsRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReportsRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReportsRequest}\n */\nproto.grpc.api.v1.ReportsRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.ReportsParams;\n reader.readMessage(value,proto.grpc.api.v1.ReportsParams.deserializeBinaryFromReader);\n msg.setParams(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReportsRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReportsRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReportsRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReportsRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getParams();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.ReportsParams.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ReportsParams params = 1;\n * @return {?proto.grpc.api.v1.ReportsParams}\n */\nproto.grpc.api.v1.ReportsRequest.prototype.getParams = function() {\n return /** @type{?proto.grpc.api.v1.ReportsParams} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.ReportsParams, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ReportsParams|undefined} value\n * @return {!proto.grpc.api.v1.ReportsRequest} returns this\n*/\nproto.grpc.api.v1.ReportsRequest.prototype.setParams = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ReportsRequest} returns this\n */\nproto.grpc.api.v1.ReportsRequest.prototype.clearParams = function() {\n return this.setParams(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ReportsRequest.prototype.hasParams = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.GuestsReports.repeatedFields_ = [3,4,5,6,7,8,9];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.GuestsReports.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.GuestsReports.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.GuestsReports} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GuestsReports.toObject = function(includeInstance, msg) {\n var f, obj = {\n reservationsList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,\n guestsList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,\n returningList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,\n cancelationsList: (f = jspb.Message.getRepeatedField(msg, 6)) == null ? undefined : f,\n noshowsList: (f = jspb.Message.getRepeatedField(msg, 7)) == null ? undefined : f,\n partySizeSumsList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 8)) == null ? undefined : f,\n partySizeCountsList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 9)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.GuestsReports}\n */\nproto.grpc.api.v1.GuestsReports.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.GuestsReports;\n return proto.grpc.api.v1.GuestsReports.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.GuestsReports} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.GuestsReports}\n */\nproto.grpc.api.v1.GuestsReports.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 3:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addReservations(values[i]);\n }\n break;\n case 4:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addGuests(values[i]);\n }\n break;\n case 5:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addReturning(values[i]);\n }\n break;\n case 6:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addCancelations(values[i]);\n }\n break;\n case 7:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addNoshows(values[i]);\n }\n break;\n case 8:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedFloat() : [reader.readFloat()]);\n for (var i = 0; i < values.length; i++) {\n msg.addPartySizeSums(values[i]);\n }\n break;\n case 9:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedFloat() : [reader.readFloat()]);\n for (var i = 0; i < values.length; i++) {\n msg.addPartySizeCounts(values[i]);\n }\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.GuestsReports.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.GuestsReports} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.GuestsReports.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getReservationsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 3,\n f\n );\n }\n f = message.getGuestsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 4,\n f\n );\n }\n f = message.getReturningList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 5,\n f\n );\n }\n f = message.getCancelationsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 6,\n f\n );\n }\n f = message.getNoshowsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 7,\n f\n );\n }\n f = message.getPartySizeSumsList();\n if (f.length > 0) {\n writer.writePackedFloat(\n 8,\n f\n );\n }\n f = message.getPartySizeCountsList();\n if (f.length > 0) {\n writer.writePackedFloat(\n 9,\n f\n );\n }\n};\n\n\n/**\n * repeated int32 reservations = 3;\n * @return {!Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.getReservationsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 3));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.setReservationsList = function(value) {\n return jspb.Message.setField(this, 3, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.addReservations = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 3, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.clearReservationsList = function() {\n return this.setReservationsList([]);\n};\n\n\n/**\n * repeated int32 guests = 4;\n * @return {!Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.getGuestsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.setGuestsList = function(value) {\n return jspb.Message.setField(this, 4, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.addGuests = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 4, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.clearGuestsList = function() {\n return this.setGuestsList([]);\n};\n\n\n/**\n * repeated int32 returning = 5;\n * @return {!Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.getReturningList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.setReturningList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.addReturning = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.clearReturningList = function() {\n return this.setReturningList([]);\n};\n\n\n/**\n * repeated int32 cancelations = 6;\n * @return {!Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.getCancelationsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 6));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.setCancelationsList = function(value) {\n return jspb.Message.setField(this, 6, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.addCancelations = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 6, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.clearCancelationsList = function() {\n return this.setCancelationsList([]);\n};\n\n\n/**\n * repeated int32 noshows = 7;\n * @return {!Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.getNoshowsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 7));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.setNoshowsList = function(value) {\n return jspb.Message.setField(this, 7, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.addNoshows = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 7, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.clearNoshowsList = function() {\n return this.setNoshowsList([]);\n};\n\n\n/**\n * repeated float party_size_sums = 8;\n * @return {!Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.getPartySizeSumsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedFloatingPointField(this, 8));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.setPartySizeSumsList = function(value) {\n return jspb.Message.setField(this, 8, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.addPartySizeSums = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 8, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.clearPartySizeSumsList = function() {\n return this.setPartySizeSumsList([]);\n};\n\n\n/**\n * repeated float party_size_counts = 9;\n * @return {!Array}\n */\nproto.grpc.api.v1.GuestsReports.prototype.getPartySizeCountsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedFloatingPointField(this, 9));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.setPartySizeCountsList = function(value) {\n return jspb.Message.setField(this, 9, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.addPartySizeCounts = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 9, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.GuestsReports} returns this\n */\nproto.grpc.api.v1.GuestsReports.prototype.clearPartySizeCountsList = function() {\n return this.setPartySizeCountsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.CampaignReports.repeatedFields_ = [3,4,5,6];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.CampaignReports.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.CampaignReports.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.CampaignReports} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CampaignReports.toObject = function(includeInstance, msg) {\n var f, obj = {\n campaignName: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n reservationsList: (f = jspb.Message.getRepeatedField(msg, 3)) == null ? undefined : f,\n guestsList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,\n daysAdvanceSumsList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 5)) == null ? undefined : f,\n daysAdvanceCountsList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 6)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.CampaignReports}\n */\nproto.grpc.api.v1.CampaignReports.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.CampaignReports;\n return proto.grpc.api.v1.CampaignReports.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.CampaignReports} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.CampaignReports}\n */\nproto.grpc.api.v1.CampaignReports.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setCampaignName(value);\n break;\n case 3:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addReservations(values[i]);\n }\n break;\n case 4:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addGuests(values[i]);\n }\n break;\n case 5:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedFloat() : [reader.readFloat()]);\n for (var i = 0; i < values.length; i++) {\n msg.addDaysAdvanceSums(values[i]);\n }\n break;\n case 6:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedFloat() : [reader.readFloat()]);\n for (var i = 0; i < values.length; i++) {\n msg.addDaysAdvanceCounts(values[i]);\n }\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.CampaignReports.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.CampaignReports.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.CampaignReports} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CampaignReports.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getCampaignName();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getReservationsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 3,\n f\n );\n }\n f = message.getGuestsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 4,\n f\n );\n }\n f = message.getDaysAdvanceSumsList();\n if (f.length > 0) {\n writer.writePackedFloat(\n 5,\n f\n );\n }\n f = message.getDaysAdvanceCountsList();\n if (f.length > 0) {\n writer.writePackedFloat(\n 6,\n f\n );\n }\n};\n\n\n/**\n * optional string campaign_name = 2;\n * @return {string}\n */\nproto.grpc.api.v1.CampaignReports.prototype.getCampaignName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.setCampaignName = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * repeated int32 reservations = 3;\n * @return {!Array}\n */\nproto.grpc.api.v1.CampaignReports.prototype.getReservationsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 3));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.setReservationsList = function(value) {\n return jspb.Message.setField(this, 3, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.addReservations = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 3, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.clearReservationsList = function() {\n return this.setReservationsList([]);\n};\n\n\n/**\n * repeated int32 guests = 4;\n * @return {!Array}\n */\nproto.grpc.api.v1.CampaignReports.prototype.getGuestsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.setGuestsList = function(value) {\n return jspb.Message.setField(this, 4, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.addGuests = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 4, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.clearGuestsList = function() {\n return this.setGuestsList([]);\n};\n\n\n/**\n * repeated float days_advance_sums = 5;\n * @return {!Array}\n */\nproto.grpc.api.v1.CampaignReports.prototype.getDaysAdvanceSumsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedFloatingPointField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.setDaysAdvanceSumsList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.addDaysAdvanceSums = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.clearDaysAdvanceSumsList = function() {\n return this.setDaysAdvanceSumsList([]);\n};\n\n\n/**\n * repeated float days_advance_counts = 6;\n * @return {!Array}\n */\nproto.grpc.api.v1.CampaignReports.prototype.getDaysAdvanceCountsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedFloatingPointField(this, 6));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.setDaysAdvanceCountsList = function(value) {\n return jspb.Message.setField(this, 6, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.addDaysAdvanceCounts = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 6, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.CampaignReports} returns this\n */\nproto.grpc.api.v1.CampaignReports.prototype.clearDaysAdvanceCountsList = function() {\n return this.setDaysAdvanceCountsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.ServiceReports.repeatedFields_ = [4,5,6,7];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ServiceReports.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ServiceReports.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ServiceReports} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ServiceReports.toObject = function(includeInstance, msg) {\n var f, obj = {\n serviceId: jspb.Message.getFieldWithDefault(msg, 1, 0),\n serviceName: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n revenueCurrency: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n reservationsList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,\n guestsList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f,\n revenueSumsList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 6)) == null ? undefined : f,\n revenueCountsList: (f = jspb.Message.getRepeatedFloatingPointField(msg, 7)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ServiceReports}\n */\nproto.grpc.api.v1.ServiceReports.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ServiceReports;\n return proto.grpc.api.v1.ServiceReports.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ServiceReports} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ServiceReports}\n */\nproto.grpc.api.v1.ServiceReports.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setServiceId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setServiceName(value);\n break;\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setRevenueCurrency(value);\n break;\n case 4:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addReservations(values[i]);\n }\n break;\n case 5:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addGuests(values[i]);\n }\n break;\n case 6:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedFloat() : [reader.readFloat()]);\n for (var i = 0; i < values.length; i++) {\n msg.addRevenueSums(values[i]);\n }\n break;\n case 7:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedFloat() : [reader.readFloat()]);\n for (var i = 0; i < values.length; i++) {\n msg.addRevenueCounts(values[i]);\n }\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ServiceReports.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ServiceReports.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ServiceReports} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ServiceReports.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getServiceId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getServiceName();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getRevenueCurrency();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getReservationsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 4,\n f\n );\n }\n f = message.getGuestsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 5,\n f\n );\n }\n f = message.getRevenueSumsList();\n if (f.length > 0) {\n writer.writePackedFloat(\n 6,\n f\n );\n }\n f = message.getRevenueCountsList();\n if (f.length > 0) {\n writer.writePackedFloat(\n 7,\n f\n );\n }\n};\n\n\n/**\n * optional int64 service_id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.ServiceReports.prototype.getServiceId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.setServiceId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string service_name = 2;\n * @return {string}\n */\nproto.grpc.api.v1.ServiceReports.prototype.getServiceName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.setServiceName = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional string revenue_currency = 3;\n * @return {string}\n */\nproto.grpc.api.v1.ServiceReports.prototype.getRevenueCurrency = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.setRevenueCurrency = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * repeated int32 reservations = 4;\n * @return {!Array}\n */\nproto.grpc.api.v1.ServiceReports.prototype.getReservationsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.setReservationsList = function(value) {\n return jspb.Message.setField(this, 4, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.addReservations = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 4, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.clearReservationsList = function() {\n return this.setReservationsList([]);\n};\n\n\n/**\n * repeated int32 guests = 5;\n * @return {!Array}\n */\nproto.grpc.api.v1.ServiceReports.prototype.getGuestsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.setGuestsList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.addGuests = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.clearGuestsList = function() {\n return this.setGuestsList([]);\n};\n\n\n/**\n * repeated float revenue_sums = 6;\n * @return {!Array}\n */\nproto.grpc.api.v1.ServiceReports.prototype.getRevenueSumsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedFloatingPointField(this, 6));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.setRevenueSumsList = function(value) {\n return jspb.Message.setField(this, 6, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.addRevenueSums = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 6, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.clearRevenueSumsList = function() {\n return this.setRevenueSumsList([]);\n};\n\n\n/**\n * repeated float revenue_counts = 7;\n * @return {!Array}\n */\nproto.grpc.api.v1.ServiceReports.prototype.getRevenueCountsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedFloatingPointField(this, 7));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.setRevenueCountsList = function(value) {\n return jspb.Message.setField(this, 7, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.addRevenueCounts = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 7, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ServiceReports} returns this\n */\nproto.grpc.api.v1.ServiceReports.prototype.clearRevenueCountsList = function() {\n return this.setRevenueCountsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.WeekdayReports.repeatedFields_ = [5];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.WeekdayReports.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.WeekdayReports.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.WeekdayReports} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.WeekdayReports.toObject = function(includeInstance, msg) {\n var f, obj = {\n weekday: jspb.Message.getFieldWithDefault(msg, 1, 0),\n guests: (f = msg.getGuests()) && proto.grpc.api.v1.GuestsReports.toObject(includeInstance, f),\n servicesList: jspb.Message.toObjectList(msg.getServicesList(),\n proto.grpc.api.v1.ServiceReports.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.WeekdayReports}\n */\nproto.grpc.api.v1.WeekdayReports.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.WeekdayReports;\n return proto.grpc.api.v1.WeekdayReports.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.WeekdayReports} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.WeekdayReports}\n */\nproto.grpc.api.v1.WeekdayReports.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setWeekday(value);\n break;\n case 3:\n var value = new proto.grpc.api.v1.GuestsReports;\n reader.readMessage(value,proto.grpc.api.v1.GuestsReports.deserializeBinaryFromReader);\n msg.setGuests(value);\n break;\n case 5:\n var value = new proto.grpc.api.v1.ServiceReports;\n reader.readMessage(value,proto.grpc.api.v1.ServiceReports.deserializeBinaryFromReader);\n msg.addServices(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.WeekdayReports.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.WeekdayReports.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.WeekdayReports} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.WeekdayReports.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getWeekday();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n f = message.getGuests();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n proto.grpc.api.v1.GuestsReports.serializeBinaryToWriter\n );\n }\n f = message.getServicesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 5,\n f,\n proto.grpc.api.v1.ServiceReports.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional int32 weekday = 1;\n * @return {number}\n */\nproto.grpc.api.v1.WeekdayReports.prototype.getWeekday = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.WeekdayReports} returns this\n */\nproto.grpc.api.v1.WeekdayReports.prototype.setWeekday = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional GuestsReports guests = 3;\n * @return {?proto.grpc.api.v1.GuestsReports}\n */\nproto.grpc.api.v1.WeekdayReports.prototype.getGuests = function() {\n return /** @type{?proto.grpc.api.v1.GuestsReports} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.GuestsReports, 3));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GuestsReports|undefined} value\n * @return {!proto.grpc.api.v1.WeekdayReports} returns this\n*/\nproto.grpc.api.v1.WeekdayReports.prototype.setGuests = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.WeekdayReports} returns this\n */\nproto.grpc.api.v1.WeekdayReports.prototype.clearGuests = function() {\n return this.setGuests(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.WeekdayReports.prototype.hasGuests = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * repeated ServiceReports services = 5;\n * @return {!Array}\n */\nproto.grpc.api.v1.WeekdayReports.prototype.getServicesList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.ServiceReports, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.WeekdayReports} returns this\n*/\nproto.grpc.api.v1.WeekdayReports.prototype.setServicesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 5, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ServiceReports=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ServiceReports}\n */\nproto.grpc.api.v1.WeekdayReports.prototype.addServices = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.grpc.api.v1.ServiceReports, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.WeekdayReports} returns this\n */\nproto.grpc.api.v1.WeekdayReports.prototype.clearServicesList = function() {\n return this.setServicesList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackReportsBinStars.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackReportsBinStars} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.toObject = function(includeInstance, msg) {\n var f, obj = {\n starsList: (f = jspb.Message.getRepeatedField(msg, 1)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackReportsBinStars}\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackReportsBinStars;\n return proto.grpc.api.v1.FeedbackReportsBinStars.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackReportsBinStars} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackReportsBinStars}\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addStars(values[i]);\n }\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackReportsBinStars.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackReportsBinStars} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getStarsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 1,\n f\n );\n }\n};\n\n\n/**\n * repeated int32 stars = 1;\n * @return {!Array}\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.prototype.getStarsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.FeedbackReportsBinStars} returns this\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.prototype.setStarsList = function(value) {\n return jspb.Message.setField(this, 1, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.FeedbackReportsBinStars} returns this\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.prototype.addStars = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 1, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.FeedbackReportsBinStars} returns this\n */\nproto.grpc.api.v1.FeedbackReportsBinStars.prototype.clearStarsList = function() {\n return this.setStarsList([]);\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackReportsBin.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackReportsBin} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReportsBin.toObject = function(includeInstance, msg) {\n var f, obj = {\n overall: (f = msg.getOverall()) && proto.grpc.api.v1.FeedbackReportsBinStars.toObject(includeInstance, f),\n food: (f = msg.getFood()) && proto.grpc.api.v1.FeedbackReportsBinStars.toObject(includeInstance, f),\n service: (f = msg.getService()) && proto.grpc.api.v1.FeedbackReportsBinStars.toObject(includeInstance, f),\n ambience: (f = msg.getAmbience()) && proto.grpc.api.v1.FeedbackReportsBinStars.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackReportsBin}\n */\nproto.grpc.api.v1.FeedbackReportsBin.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackReportsBin;\n return proto.grpc.api.v1.FeedbackReportsBin.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackReportsBin} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackReportsBin}\n */\nproto.grpc.api.v1.FeedbackReportsBin.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.FeedbackReportsBinStars;\n reader.readMessage(value,proto.grpc.api.v1.FeedbackReportsBinStars.deserializeBinaryFromReader);\n msg.setOverall(value);\n break;\n case 2:\n var value = new proto.grpc.api.v1.FeedbackReportsBinStars;\n reader.readMessage(value,proto.grpc.api.v1.FeedbackReportsBinStars.deserializeBinaryFromReader);\n msg.setFood(value);\n break;\n case 3:\n var value = new proto.grpc.api.v1.FeedbackReportsBinStars;\n reader.readMessage(value,proto.grpc.api.v1.FeedbackReportsBinStars.deserializeBinaryFromReader);\n msg.setService(value);\n break;\n case 4:\n var value = new proto.grpc.api.v1.FeedbackReportsBinStars;\n reader.readMessage(value,proto.grpc.api.v1.FeedbackReportsBinStars.deserializeBinaryFromReader);\n msg.setAmbience(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackReportsBin.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackReportsBin} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReportsBin.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getOverall();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.FeedbackReportsBinStars.serializeBinaryToWriter\n );\n }\n f = message.getFood();\n if (f != null) {\n writer.writeMessage(\n 2,\n f,\n proto.grpc.api.v1.FeedbackReportsBinStars.serializeBinaryToWriter\n );\n }\n f = message.getService();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n proto.grpc.api.v1.FeedbackReportsBinStars.serializeBinaryToWriter\n );\n }\n f = message.getAmbience();\n if (f != null) {\n writer.writeMessage(\n 4,\n f,\n proto.grpc.api.v1.FeedbackReportsBinStars.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional FeedbackReportsBinStars overall = 1;\n * @return {?proto.grpc.api.v1.FeedbackReportsBinStars}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.getOverall = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackReportsBinStars} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.FeedbackReportsBinStars, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackReportsBinStars|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n*/\nproto.grpc.api.v1.FeedbackReportsBin.prototype.setOverall = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.clearOverall = function() {\n return this.setOverall(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.hasOverall = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * optional FeedbackReportsBinStars food = 2;\n * @return {?proto.grpc.api.v1.FeedbackReportsBinStars}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.getFood = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackReportsBinStars} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.FeedbackReportsBinStars, 2));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackReportsBinStars|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n*/\nproto.grpc.api.v1.FeedbackReportsBin.prototype.setFood = function(value) {\n return jspb.Message.setWrapperField(this, 2, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.clearFood = function() {\n return this.setFood(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.hasFood = function() {\n return jspb.Message.getField(this, 2) != null;\n};\n\n\n/**\n * optional FeedbackReportsBinStars service = 3;\n * @return {?proto.grpc.api.v1.FeedbackReportsBinStars}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.getService = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackReportsBinStars} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.FeedbackReportsBinStars, 3));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackReportsBinStars|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n*/\nproto.grpc.api.v1.FeedbackReportsBin.prototype.setService = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.clearService = function() {\n return this.setService(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.hasService = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * optional FeedbackReportsBinStars ambience = 4;\n * @return {?proto.grpc.api.v1.FeedbackReportsBinStars}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.getAmbience = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackReportsBinStars} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.FeedbackReportsBinStars, 4));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackReportsBinStars|undefined} value\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n*/\nproto.grpc.api.v1.FeedbackReportsBin.prototype.setAmbience = function(value) {\n return jspb.Message.setWrapperField(this, 4, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.FeedbackReportsBin} returns this\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.clearAmbience = function() {\n return this.setAmbience(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.FeedbackReportsBin.prototype.hasAmbience = function() {\n return jspb.Message.getField(this, 4) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.FeedbackReports.repeatedFields_ = [1];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.FeedbackReports.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.FeedbackReports.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.FeedbackReports} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReports.toObject = function(includeInstance, msg) {\n var f, obj = {\n binsList: jspb.Message.toObjectList(msg.getBinsList(),\n proto.grpc.api.v1.FeedbackReportsBin.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.FeedbackReports}\n */\nproto.grpc.api.v1.FeedbackReports.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.FeedbackReports;\n return proto.grpc.api.v1.FeedbackReports.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.FeedbackReports} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.FeedbackReports}\n */\nproto.grpc.api.v1.FeedbackReports.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.FeedbackReportsBin;\n reader.readMessage(value,proto.grpc.api.v1.FeedbackReportsBin.deserializeBinaryFromReader);\n msg.addBins(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.FeedbackReports.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.FeedbackReports.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.FeedbackReports} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.FeedbackReports.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getBinsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 1,\n f,\n proto.grpc.api.v1.FeedbackReportsBin.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * repeated FeedbackReportsBin bins = 1;\n * @return {!Array}\n */\nproto.grpc.api.v1.FeedbackReports.prototype.getBinsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.FeedbackReportsBin, 1));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.FeedbackReports} returns this\n*/\nproto.grpc.api.v1.FeedbackReports.prototype.setBinsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 1, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.FeedbackReportsBin=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.FeedbackReportsBin}\n */\nproto.grpc.api.v1.FeedbackReports.prototype.addBins = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.grpc.api.v1.FeedbackReportsBin, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.FeedbackReports} returns this\n */\nproto.grpc.api.v1.FeedbackReports.prototype.clearBinsList = function() {\n return this.setBinsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.TabReports.repeatedFields_ = [4,5,6,14];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.TabReports.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.TabReports.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.TabReports} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.TabReports.toObject = function(includeInstance, msg) {\n var f, obj = {\n tabId: jspb.Message.getFieldWithDefault(msg, 1, 0),\n guests: (f = msg.getGuests()) && proto.grpc.api.v1.GuestsReports.toObject(includeInstance, f),\n campaignsList: jspb.Message.toObjectList(msg.getCampaignsList(),\n proto.grpc.api.v1.CampaignReports.toObject, includeInstance),\n servicesList: jspb.Message.toObjectList(msg.getServicesList(),\n proto.grpc.api.v1.ServiceReports.toObject, includeInstance),\n weekdaysList: jspb.Message.toObjectList(msg.getWeekdaysList(),\n proto.grpc.api.v1.WeekdayReports.toObject, includeInstance),\n guestsDtc: (f = msg.getGuestsDtc()) && proto.grpc.api.v1.GuestsReports.toObject(includeInstance, f),\n campaignsDtcList: jspb.Message.toObjectList(msg.getCampaignsDtcList(),\n proto.grpc.api.v1.CampaignReports.toObject, includeInstance),\n feedbacks: (f = msg.getFeedbacks()) && proto.grpc.api.v1.FeedbackReports.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.TabReports}\n */\nproto.grpc.api.v1.TabReports.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.TabReports;\n return proto.grpc.api.v1.TabReports.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.TabReports} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.TabReports}\n */\nproto.grpc.api.v1.TabReports.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setTabId(value);\n break;\n case 3:\n var value = new proto.grpc.api.v1.GuestsReports;\n reader.readMessage(value,proto.grpc.api.v1.GuestsReports.deserializeBinaryFromReader);\n msg.setGuests(value);\n break;\n case 4:\n var value = new proto.grpc.api.v1.CampaignReports;\n reader.readMessage(value,proto.grpc.api.v1.CampaignReports.deserializeBinaryFromReader);\n msg.addCampaigns(value);\n break;\n case 5:\n var value = new proto.grpc.api.v1.ServiceReports;\n reader.readMessage(value,proto.grpc.api.v1.ServiceReports.deserializeBinaryFromReader);\n msg.addServices(value);\n break;\n case 6:\n var value = new proto.grpc.api.v1.WeekdayReports;\n reader.readMessage(value,proto.grpc.api.v1.WeekdayReports.deserializeBinaryFromReader);\n msg.addWeekdays(value);\n break;\n case 13:\n var value = new proto.grpc.api.v1.GuestsReports;\n reader.readMessage(value,proto.grpc.api.v1.GuestsReports.deserializeBinaryFromReader);\n msg.setGuestsDtc(value);\n break;\n case 14:\n var value = new proto.grpc.api.v1.CampaignReports;\n reader.readMessage(value,proto.grpc.api.v1.CampaignReports.deserializeBinaryFromReader);\n msg.addCampaignsDtc(value);\n break;\n case 21:\n var value = new proto.grpc.api.v1.FeedbackReports;\n reader.readMessage(value,proto.grpc.api.v1.FeedbackReports.deserializeBinaryFromReader);\n msg.setFeedbacks(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.TabReports.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.TabReports.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.TabReports} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.TabReports.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getTabId();\n if (f !== 0) {\n writer.writeInt32(\n 1,\n f\n );\n }\n f = message.getGuests();\n if (f != null) {\n writer.writeMessage(\n 3,\n f,\n proto.grpc.api.v1.GuestsReports.serializeBinaryToWriter\n );\n }\n f = message.getCampaignsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 4,\n f,\n proto.grpc.api.v1.CampaignReports.serializeBinaryToWriter\n );\n }\n f = message.getServicesList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 5,\n f,\n proto.grpc.api.v1.ServiceReports.serializeBinaryToWriter\n );\n }\n f = message.getWeekdaysList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 6,\n f,\n proto.grpc.api.v1.WeekdayReports.serializeBinaryToWriter\n );\n }\n f = message.getGuestsDtc();\n if (f != null) {\n writer.writeMessage(\n 13,\n f,\n proto.grpc.api.v1.GuestsReports.serializeBinaryToWriter\n );\n }\n f = message.getCampaignsDtcList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 14,\n f,\n proto.grpc.api.v1.CampaignReports.serializeBinaryToWriter\n );\n }\n f = message.getFeedbacks();\n if (f != null) {\n writer.writeMessage(\n 21,\n f,\n proto.grpc.api.v1.FeedbackReports.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional int32 tab_id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.TabReports.prototype.getTabId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.setTabId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional GuestsReports guests = 3;\n * @return {?proto.grpc.api.v1.GuestsReports}\n */\nproto.grpc.api.v1.TabReports.prototype.getGuests = function() {\n return /** @type{?proto.grpc.api.v1.GuestsReports} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.GuestsReports, 3));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GuestsReports|undefined} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n*/\nproto.grpc.api.v1.TabReports.prototype.setGuests = function(value) {\n return jspb.Message.setWrapperField(this, 3, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.clearGuests = function() {\n return this.setGuests(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.TabReports.prototype.hasGuests = function() {\n return jspb.Message.getField(this, 3) != null;\n};\n\n\n/**\n * repeated CampaignReports campaigns = 4;\n * @return {!Array}\n */\nproto.grpc.api.v1.TabReports.prototype.getCampaignsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.CampaignReports, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n*/\nproto.grpc.api.v1.TabReports.prototype.setCampaignsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 4, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.CampaignReports=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.CampaignReports}\n */\nproto.grpc.api.v1.TabReports.prototype.addCampaigns = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 4, opt_value, proto.grpc.api.v1.CampaignReports, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.clearCampaignsList = function() {\n return this.setCampaignsList([]);\n};\n\n\n/**\n * repeated ServiceReports services = 5;\n * @return {!Array}\n */\nproto.grpc.api.v1.TabReports.prototype.getServicesList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.ServiceReports, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n*/\nproto.grpc.api.v1.TabReports.prototype.setServicesList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 5, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ServiceReports=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ServiceReports}\n */\nproto.grpc.api.v1.TabReports.prototype.addServices = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 5, opt_value, proto.grpc.api.v1.ServiceReports, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.clearServicesList = function() {\n return this.setServicesList([]);\n};\n\n\n/**\n * repeated WeekdayReports weekdays = 6;\n * @return {!Array}\n */\nproto.grpc.api.v1.TabReports.prototype.getWeekdaysList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.WeekdayReports, 6));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n*/\nproto.grpc.api.v1.TabReports.prototype.setWeekdaysList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 6, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.WeekdayReports=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.WeekdayReports}\n */\nproto.grpc.api.v1.TabReports.prototype.addWeekdays = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 6, opt_value, proto.grpc.api.v1.WeekdayReports, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.clearWeekdaysList = function() {\n return this.setWeekdaysList([]);\n};\n\n\n/**\n * optional GuestsReports guests_dtc = 13;\n * @return {?proto.grpc.api.v1.GuestsReports}\n */\nproto.grpc.api.v1.TabReports.prototype.getGuestsDtc = function() {\n return /** @type{?proto.grpc.api.v1.GuestsReports} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.GuestsReports, 13));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.GuestsReports|undefined} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n*/\nproto.grpc.api.v1.TabReports.prototype.setGuestsDtc = function(value) {\n return jspb.Message.setWrapperField(this, 13, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.clearGuestsDtc = function() {\n return this.setGuestsDtc(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.TabReports.prototype.hasGuestsDtc = function() {\n return jspb.Message.getField(this, 13) != null;\n};\n\n\n/**\n * repeated CampaignReports campaigns_dtc = 14;\n * @return {!Array}\n */\nproto.grpc.api.v1.TabReports.prototype.getCampaignsDtcList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.CampaignReports, 14));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n*/\nproto.grpc.api.v1.TabReports.prototype.setCampaignsDtcList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 14, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.CampaignReports=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.CampaignReports}\n */\nproto.grpc.api.v1.TabReports.prototype.addCampaignsDtc = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 14, opt_value, proto.grpc.api.v1.CampaignReports, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.clearCampaignsDtcList = function() {\n return this.setCampaignsDtcList([]);\n};\n\n\n/**\n * optional FeedbackReports feedbacks = 21;\n * @return {?proto.grpc.api.v1.FeedbackReports}\n */\nproto.grpc.api.v1.TabReports.prototype.getFeedbacks = function() {\n return /** @type{?proto.grpc.api.v1.FeedbackReports} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.FeedbackReports, 21));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.FeedbackReports|undefined} value\n * @return {!proto.grpc.api.v1.TabReports} returns this\n*/\nproto.grpc.api.v1.TabReports.prototype.setFeedbacks = function(value) {\n return jspb.Message.setWrapperField(this, 21, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.TabReports} returns this\n */\nproto.grpc.api.v1.TabReports.prototype.clearFeedbacks = function() {\n return this.setFeedbacks(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.TabReports.prototype.hasFeedbacks = function() {\n return jspb.Message.getField(this, 21) != null;\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.MsgReports.repeatedFields_ = [4,5];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MsgReports.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MsgReports.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MsgReports} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MsgReports.toObject = function(includeInstance, msg) {\n var f, obj = {\n msgType: jspb.Message.getFieldWithDefault(msg, 3, \"\"),\n sentList: (f = jspb.Message.getRepeatedField(msg, 4)) == null ? undefined : f,\n errorsList: (f = jspb.Message.getRepeatedField(msg, 5)) == null ? undefined : f\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MsgReports}\n */\nproto.grpc.api.v1.MsgReports.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MsgReports;\n return proto.grpc.api.v1.MsgReports.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MsgReports} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MsgReports}\n */\nproto.grpc.api.v1.MsgReports.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 3:\n var value = /** @type {string} */ (reader.readString());\n msg.setMsgType(value);\n break;\n case 4:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addSent(values[i]);\n }\n break;\n case 5:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addErrors(values[i]);\n }\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MsgReports.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MsgReports.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MsgReports} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MsgReports.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getMsgType();\n if (f.length > 0) {\n writer.writeString(\n 3,\n f\n );\n }\n f = message.getSentList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 4,\n f\n );\n }\n f = message.getErrorsList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 5,\n f\n );\n }\n};\n\n\n/**\n * optional string msg_type = 3;\n * @return {string}\n */\nproto.grpc.api.v1.MsgReports.prototype.getMsgType = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 3, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.MsgReports} returns this\n */\nproto.grpc.api.v1.MsgReports.prototype.setMsgType = function(value) {\n return jspb.Message.setProto3StringField(this, 3, value);\n};\n\n\n/**\n * repeated int32 sent = 4;\n * @return {!Array}\n */\nproto.grpc.api.v1.MsgReports.prototype.getSentList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 4));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.MsgReports} returns this\n */\nproto.grpc.api.v1.MsgReports.prototype.setSentList = function(value) {\n return jspb.Message.setField(this, 4, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.MsgReports} returns this\n */\nproto.grpc.api.v1.MsgReports.prototype.addSent = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 4, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.MsgReports} returns this\n */\nproto.grpc.api.v1.MsgReports.prototype.clearSentList = function() {\n return this.setSentList([]);\n};\n\n\n/**\n * repeated int32 errors = 5;\n * @return {!Array}\n */\nproto.grpc.api.v1.MsgReports.prototype.getErrorsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 5));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.MsgReports} returns this\n */\nproto.grpc.api.v1.MsgReports.prototype.setErrorsList = function(value) {\n return jspb.Message.setField(this, 5, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.MsgReports} returns this\n */\nproto.grpc.api.v1.MsgReports.prototype.addErrors = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 5, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.MsgReports} returns this\n */\nproto.grpc.api.v1.MsgReports.prototype.clearErrorsList = function() {\n return this.setErrorsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.TabsReportsResponse.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.TabsReportsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.TabsReportsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.TabsReportsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n params: (f = msg.getParams()) && proto.grpc.api.v1.ReportsParams.toObject(includeInstance, f),\n tabReportsList: jspb.Message.toObjectList(msg.getTabReportsList(),\n proto.grpc.api.v1.TabReports.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.TabsReportsResponse}\n */\nproto.grpc.api.v1.TabsReportsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.TabsReportsResponse;\n return proto.grpc.api.v1.TabsReportsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.TabsReportsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.TabsReportsResponse}\n */\nproto.grpc.api.v1.TabsReportsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.ReportsParams;\n reader.readMessage(value,proto.grpc.api.v1.ReportsParams.deserializeBinaryFromReader);\n msg.setParams(value);\n break;\n case 2:\n var value = new proto.grpc.api.v1.TabReports;\n reader.readMessage(value,proto.grpc.api.v1.TabReports.deserializeBinaryFromReader);\n msg.addTabReports(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.TabsReportsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.TabsReportsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.TabsReportsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getParams();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.ReportsParams.serializeBinaryToWriter\n );\n }\n f = message.getTabReportsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 2,\n f,\n proto.grpc.api.v1.TabReports.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ReportsParams params = 1;\n * @return {?proto.grpc.api.v1.ReportsParams}\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.getParams = function() {\n return /** @type{?proto.grpc.api.v1.ReportsParams} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.ReportsParams, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ReportsParams|undefined} value\n * @return {!proto.grpc.api.v1.TabsReportsResponse} returns this\n*/\nproto.grpc.api.v1.TabsReportsResponse.prototype.setParams = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.TabsReportsResponse} returns this\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.clearParams = function() {\n return this.setParams(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.hasParams = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated TabReports tab_reports = 2;\n * @return {!Array}\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.getTabReportsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.TabReports, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.TabsReportsResponse} returns this\n*/\nproto.grpc.api.v1.TabsReportsResponse.prototype.setTabReportsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.TabReports=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.TabReports}\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.addTabReports = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.grpc.api.v1.TabReports, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.TabsReportsResponse} returns this\n */\nproto.grpc.api.v1.TabsReportsResponse.prototype.clearTabReportsList = function() {\n return this.setTabReportsList([]);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.MsgsReportsResponse.repeatedFields_ = [2];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.MsgsReportsResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.MsgsReportsResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MsgsReportsResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n params: (f = msg.getParams()) && proto.grpc.api.v1.ReportsParams.toObject(includeInstance, f),\n msgReportsList: jspb.Message.toObjectList(msg.getMsgReportsList(),\n proto.grpc.api.v1.MsgReports.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.MsgsReportsResponse}\n */\nproto.grpc.api.v1.MsgsReportsResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.MsgsReportsResponse;\n return proto.grpc.api.v1.MsgsReportsResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.MsgsReportsResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.MsgsReportsResponse}\n */\nproto.grpc.api.v1.MsgsReportsResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new proto.grpc.api.v1.ReportsParams;\n reader.readMessage(value,proto.grpc.api.v1.ReportsParams.deserializeBinaryFromReader);\n msg.setParams(value);\n break;\n case 2:\n var value = new proto.grpc.api.v1.MsgReports;\n reader.readMessage(value,proto.grpc.api.v1.MsgReports.deserializeBinaryFromReader);\n msg.addMsgReports(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.MsgsReportsResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.MsgsReportsResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.MsgsReportsResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getParams();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n proto.grpc.api.v1.ReportsParams.serializeBinaryToWriter\n );\n }\n f = message.getMsgReportsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 2,\n f,\n proto.grpc.api.v1.MsgReports.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ReportsParams params = 1;\n * @return {?proto.grpc.api.v1.ReportsParams}\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.getParams = function() {\n return /** @type{?proto.grpc.api.v1.ReportsParams} */ (\n jspb.Message.getWrapperField(this, proto.grpc.api.v1.ReportsParams, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ReportsParams|undefined} value\n * @return {!proto.grpc.api.v1.MsgsReportsResponse} returns this\n*/\nproto.grpc.api.v1.MsgsReportsResponse.prototype.setParams = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.MsgsReportsResponse} returns this\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.clearParams = function() {\n return this.setParams(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.hasParams = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n/**\n * repeated MsgReports msg_reports = 2;\n * @return {!Array}\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.getMsgReportsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.MsgReports, 2));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.MsgsReportsResponse} returns this\n*/\nproto.grpc.api.v1.MsgsReportsResponse.prototype.setMsgReportsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 2, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.MsgReports=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.MsgReports}\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.addMsgReports = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 2, opt_value, proto.grpc.api.v1.MsgReports, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.MsgsReportsResponse} returns this\n */\nproto.grpc.api.v1.MsgsReportsResponse.prototype.clearMsgReportsList = function() {\n return this.setMsgReportsList([]);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: reservation.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar contact_pb = require('./contact_pb.js');\ngoog.object.extend(proto, contact_pb);\ngoog.exportSymbol('proto.grpc.api.v1.Reservation', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReservationAttachment', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReservationStatus', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReservationType', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReservationAttachment = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReservationAttachment, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReservationAttachment.displayName = 'proto.grpc.api.v1.ReservationAttachment';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.Reservation = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.Reservation.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.Reservation, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.Reservation.displayName = 'proto.grpc.api.v1.Reservation';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReservationAttachment.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReservationAttachment.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReservationAttachment} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationAttachment.toObject = function(includeInstance, msg) {\n var f, obj = {\n name: jspb.Message.getFieldWithDefault(msg, 1, \"\"),\n url: jspb.Message.getFieldWithDefault(msg, 2, \"\")\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReservationAttachment}\n */\nproto.grpc.api.v1.ReservationAttachment.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReservationAttachment;\n return proto.grpc.api.v1.ReservationAttachment.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReservationAttachment} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReservationAttachment}\n */\nproto.grpc.api.v1.ReservationAttachment.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {string} */ (reader.readString());\n msg.setName(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setUrl(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReservationAttachment.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReservationAttachment.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReservationAttachment} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationAttachment.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getName();\n if (f.length > 0) {\n writer.writeString(\n 1,\n f\n );\n }\n f = message.getUrl();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional string name = 1;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationAttachment.prototype.getName = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 1, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationAttachment} returns this\n */\nproto.grpc.api.v1.ReservationAttachment.prototype.setName = function(value) {\n return jspb.Message.setProto3StringField(this, 1, value);\n};\n\n\n/**\n * optional string url = 2;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationAttachment.prototype.getUrl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationAttachment} returns this\n */\nproto.grpc.api.v1.ReservationAttachment.prototype.setUrl = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.Reservation.repeatedFields_ = [29,31];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.Reservation.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.Reservation.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.Reservation} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Reservation.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n accountId: jspb.Message.getFieldWithDefault(msg, 2, 0),\n contactId: jspb.Message.getFieldWithDefault(msg, 3, 0),\n tabId: jspb.Message.getFieldWithDefault(msg, 4, 0),\n campaignId: jspb.Message.getFieldWithDefault(msg, 5, 0),\n serviceId: jspb.Message.getFieldWithDefault(msg, 6, 0),\n reservationCode: jspb.Message.getFieldWithDefault(msg, 7, \"\"),\n dtBegin: jspb.Message.getFieldWithDefault(msg, 8, 0),\n dtEnd: jspb.Message.getFieldWithDefault(msg, 9, 0),\n endFixed: jspb.Message.getBooleanFieldWithDefault(msg, 10, false),\n partySize: jspb.Message.getFieldWithDefault(msg, 11, 0),\n holdTabItems: jspb.Message.getBooleanFieldWithDefault(msg, 12, false),\n reservationType: jspb.Message.getFieldWithDefault(msg, 13, 0),\n reservationStatus: jspb.Message.getFieldWithDefault(msg, 14, 0),\n reservationLabel: jspb.Message.getFieldWithDefault(msg, 15, \"\"),\n reservationCampaign: jspb.Message.getFieldWithDefault(msg, 16, \"\"),\n dtPreReserved: jspb.Message.getFieldWithDefault(msg, 17, 0),\n isStarred: jspb.Message.getBooleanFieldWithDefault(msg, 18, false),\n isFlagged: jspb.Message.getBooleanFieldWithDefault(msg, 19, false),\n isUnread: jspb.Message.getBooleanFieldWithDefault(msg, 20, false),\n employeeIdCreate: jspb.Message.getFieldWithDefault(msg, 21, 0),\n employeeIdLastEdit: jspb.Message.getFieldWithDefault(msg, 22, 0),\n dtCreate: jspb.Message.getFieldWithDefault(msg, 23, 0),\n dtUpdate: jspb.Message.getFieldWithDefault(msg, 24, 0),\n syncIsNeeded: jspb.Message.getBooleanFieldWithDefault(msg, 25, false),\n noteText: jspb.Message.getFieldWithDefault(msg, 26, \"\"),\n paymentInfo: jspb.Message.getFieldWithDefault(msg, 27, \"\"),\n rating: jspb.Message.getFieldWithDefault(msg, 28, 0),\n tabItemsIdsList: (f = jspb.Message.getRepeatedField(msg, 29)) == null ? undefined : f,\n contact: (f = msg.getContact()) && contact_pb.Contact.toObject(includeInstance, f),\n attachmentsList: jspb.Message.toObjectList(msg.getAttachmentsList(),\n proto.grpc.api.v1.ReservationAttachment.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.Reservation}\n */\nproto.grpc.api.v1.Reservation.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.Reservation;\n return proto.grpc.api.v1.Reservation.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.Reservation} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.Reservation}\n */\nproto.grpc.api.v1.Reservation.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setAccountId(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setContactId(value);\n break;\n case 4:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setTabId(value);\n break;\n case 5:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setCampaignId(value);\n break;\n case 6:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setServiceId(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.setReservationCode(value);\n break;\n case 8:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtBegin(value);\n break;\n case 9:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtEnd(value);\n break;\n case 10:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setEndFixed(value);\n break;\n case 11:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setPartySize(value);\n break;\n case 12:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setHoldTabItems(value);\n break;\n case 13:\n var value = /** @type {!proto.grpc.api.v1.ReservationType} */ (reader.readEnum());\n msg.setReservationType(value);\n break;\n case 14:\n var value = /** @type {!proto.grpc.api.v1.ReservationStatus} */ (reader.readEnum());\n msg.setReservationStatus(value);\n break;\n case 15:\n var value = /** @type {string} */ (reader.readString());\n msg.setReservationLabel(value);\n break;\n case 16:\n var value = /** @type {string} */ (reader.readString());\n msg.setReservationCampaign(value);\n break;\n case 17:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtPreReserved(value);\n break;\n case 18:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsStarred(value);\n break;\n case 19:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsFlagged(value);\n break;\n case 20:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsUnread(value);\n break;\n case 21:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setEmployeeIdCreate(value);\n break;\n case 22:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setEmployeeIdLastEdit(value);\n break;\n case 23:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtCreate(value);\n break;\n case 24:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtUpdate(value);\n break;\n case 25:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setSyncIsNeeded(value);\n break;\n case 26:\n var value = /** @type {string} */ (reader.readString());\n msg.setNoteText(value);\n break;\n case 27:\n var value = /** @type {string} */ (reader.readString());\n msg.setPaymentInfo(value);\n break;\n case 28:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setRating(value);\n break;\n case 29:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt64() : [reader.readInt64()]);\n for (var i = 0; i < values.length; i++) {\n msg.addTabItemsIds(values[i]);\n }\n break;\n case 30:\n var value = new contact_pb.Contact;\n reader.readMessage(value,contact_pb.Contact.deserializeBinaryFromReader);\n msg.setContact(value);\n break;\n case 31:\n var value = new proto.grpc.api.v1.ReservationAttachment;\n reader.readMessage(value,proto.grpc.api.v1.ReservationAttachment.deserializeBinaryFromReader);\n msg.addAttachments(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.Reservation.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.Reservation.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.Reservation} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.Reservation.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getAccountId();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n f = message.getContactId();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getTabId();\n if (f !== 0) {\n writer.writeInt64(\n 4,\n f\n );\n }\n f = message.getCampaignId();\n if (f !== 0) {\n writer.writeInt64(\n 5,\n f\n );\n }\n f = message.getServiceId();\n if (f !== 0) {\n writer.writeInt64(\n 6,\n f\n );\n }\n f = message.getReservationCode();\n if (f.length > 0) {\n writer.writeString(\n 7,\n f\n );\n }\n f = message.getDtBegin();\n if (f !== 0) {\n writer.writeInt64(\n 8,\n f\n );\n }\n f = message.getDtEnd();\n if (f !== 0) {\n writer.writeInt64(\n 9,\n f\n );\n }\n f = message.getEndFixed();\n if (f) {\n writer.writeBool(\n 10,\n f\n );\n }\n f = message.getPartySize();\n if (f !== 0) {\n writer.writeInt32(\n 11,\n f\n );\n }\n f = message.getHoldTabItems();\n if (f) {\n writer.writeBool(\n 12,\n f\n );\n }\n f = message.getReservationType();\n if (f !== 0.0) {\n writer.writeEnum(\n 13,\n f\n );\n }\n f = message.getReservationStatus();\n if (f !== 0.0) {\n writer.writeEnum(\n 14,\n f\n );\n }\n f = message.getReservationLabel();\n if (f.length > 0) {\n writer.writeString(\n 15,\n f\n );\n }\n f = message.getReservationCampaign();\n if (f.length > 0) {\n writer.writeString(\n 16,\n f\n );\n }\n f = message.getDtPreReserved();\n if (f !== 0) {\n writer.writeInt64(\n 17,\n f\n );\n }\n f = message.getIsStarred();\n if (f) {\n writer.writeBool(\n 18,\n f\n );\n }\n f = message.getIsFlagged();\n if (f) {\n writer.writeBool(\n 19,\n f\n );\n }\n f = message.getIsUnread();\n if (f) {\n writer.writeBool(\n 20,\n f\n );\n }\n f = message.getEmployeeIdCreate();\n if (f !== 0) {\n writer.writeInt64(\n 21,\n f\n );\n }\n f = message.getEmployeeIdLastEdit();\n if (f !== 0) {\n writer.writeInt64(\n 22,\n f\n );\n }\n f = message.getDtCreate();\n if (f !== 0) {\n writer.writeInt64(\n 23,\n f\n );\n }\n f = message.getDtUpdate();\n if (f !== 0) {\n writer.writeInt64(\n 24,\n f\n );\n }\n f = message.getSyncIsNeeded();\n if (f) {\n writer.writeBool(\n 25,\n f\n );\n }\n f = message.getNoteText();\n if (f.length > 0) {\n writer.writeString(\n 26,\n f\n );\n }\n f = message.getPaymentInfo();\n if (f.length > 0) {\n writer.writeString(\n 27,\n f\n );\n }\n f = message.getRating();\n if (f !== 0) {\n writer.writeInt32(\n 28,\n f\n );\n }\n f = message.getTabItemsIdsList();\n if (f.length > 0) {\n writer.writePackedInt64(\n 29,\n f\n );\n }\n f = message.getContact();\n if (f != null) {\n writer.writeMessage(\n 30,\n f,\n contact_pb.Contact.serializeBinaryToWriter\n );\n }\n f = message.getAttachmentsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 31,\n f,\n proto.grpc.api.v1.ReservationAttachment.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 account_id = 2;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getAccountId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setAccountId = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n/**\n * optional int64 contact_id = 3;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getContactId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setContactId = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional int64 tab_id = 4;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getTabId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 4, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setTabId = function(value) {\n return jspb.Message.setProto3IntField(this, 4, value);\n};\n\n\n/**\n * optional int64 campaign_id = 5;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getCampaignId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 5, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setCampaignId = function(value) {\n return jspb.Message.setProto3IntField(this, 5, value);\n};\n\n\n/**\n * optional int64 service_id = 6;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getServiceId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 6, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setServiceId = function(value) {\n return jspb.Message.setProto3IntField(this, 6, value);\n};\n\n\n/**\n * optional string reservation_code = 7;\n * @return {string}\n */\nproto.grpc.api.v1.Reservation.prototype.getReservationCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 7, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setReservationCode = function(value) {\n return jspb.Message.setProto3StringField(this, 7, value);\n};\n\n\n/**\n * optional int64 dt_begin = 8;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getDtBegin = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 8, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setDtBegin = function(value) {\n return jspb.Message.setProto3IntField(this, 8, value);\n};\n\n\n/**\n * optional int64 dt_end = 9;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getDtEnd = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setDtEnd = function(value) {\n return jspb.Message.setProto3IntField(this, 9, value);\n};\n\n\n/**\n * optional bool end_fixed = 10;\n * @return {boolean}\n */\nproto.grpc.api.v1.Reservation.prototype.getEndFixed = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 10, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setEndFixed = function(value) {\n return jspb.Message.setProto3BooleanField(this, 10, value);\n};\n\n\n/**\n * optional int32 party_size = 11;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getPartySize = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setPartySize = function(value) {\n return jspb.Message.setProto3IntField(this, 11, value);\n};\n\n\n/**\n * optional bool hold_tab_items = 12;\n * @return {boolean}\n */\nproto.grpc.api.v1.Reservation.prototype.getHoldTabItems = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 12, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setHoldTabItems = function(value) {\n return jspb.Message.setProto3BooleanField(this, 12, value);\n};\n\n\n/**\n * optional ReservationType reservation_type = 13;\n * @return {!proto.grpc.api.v1.ReservationType}\n */\nproto.grpc.api.v1.Reservation.prototype.getReservationType = function() {\n return /** @type {!proto.grpc.api.v1.ReservationType} */ (jspb.Message.getFieldWithDefault(this, 13, 0));\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReservationType} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setReservationType = function(value) {\n return jspb.Message.setProto3EnumField(this, 13, value);\n};\n\n\n/**\n * optional ReservationStatus reservation_status = 14;\n * @return {!proto.grpc.api.v1.ReservationStatus}\n */\nproto.grpc.api.v1.Reservation.prototype.getReservationStatus = function() {\n return /** @type {!proto.grpc.api.v1.ReservationStatus} */ (jspb.Message.getFieldWithDefault(this, 14, 0));\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReservationStatus} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setReservationStatus = function(value) {\n return jspb.Message.setProto3EnumField(this, 14, value);\n};\n\n\n/**\n * optional string reservation_label = 15;\n * @return {string}\n */\nproto.grpc.api.v1.Reservation.prototype.getReservationLabel = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 15, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setReservationLabel = function(value) {\n return jspb.Message.setProto3StringField(this, 15, value);\n};\n\n\n/**\n * optional string reservation_campaign = 16;\n * @return {string}\n */\nproto.grpc.api.v1.Reservation.prototype.getReservationCampaign = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 16, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setReservationCampaign = function(value) {\n return jspb.Message.setProto3StringField(this, 16, value);\n};\n\n\n/**\n * optional int64 dt_pre_reserved = 17;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getDtPreReserved = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 17, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setDtPreReserved = function(value) {\n return jspb.Message.setProto3IntField(this, 17, value);\n};\n\n\n/**\n * optional bool is_starred = 18;\n * @return {boolean}\n */\nproto.grpc.api.v1.Reservation.prototype.getIsStarred = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 18, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setIsStarred = function(value) {\n return jspb.Message.setProto3BooleanField(this, 18, value);\n};\n\n\n/**\n * optional bool is_flagged = 19;\n * @return {boolean}\n */\nproto.grpc.api.v1.Reservation.prototype.getIsFlagged = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 19, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setIsFlagged = function(value) {\n return jspb.Message.setProto3BooleanField(this, 19, value);\n};\n\n\n/**\n * optional bool is_unread = 20;\n * @return {boolean}\n */\nproto.grpc.api.v1.Reservation.prototype.getIsUnread = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 20, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setIsUnread = function(value) {\n return jspb.Message.setProto3BooleanField(this, 20, value);\n};\n\n\n/**\n * optional int64 employee_id_create = 21;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getEmployeeIdCreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 21, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setEmployeeIdCreate = function(value) {\n return jspb.Message.setProto3IntField(this, 21, value);\n};\n\n\n/**\n * optional int64 employee_id_last_edit = 22;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getEmployeeIdLastEdit = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 22, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setEmployeeIdLastEdit = function(value) {\n return jspb.Message.setProto3IntField(this, 22, value);\n};\n\n\n/**\n * optional int64 dt_create = 23;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getDtCreate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 23, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setDtCreate = function(value) {\n return jspb.Message.setProto3IntField(this, 23, value);\n};\n\n\n/**\n * optional int64 dt_update = 24;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getDtUpdate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 24, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setDtUpdate = function(value) {\n return jspb.Message.setProto3IntField(this, 24, value);\n};\n\n\n/**\n * optional bool sync_is_needed = 25;\n * @return {boolean}\n */\nproto.grpc.api.v1.Reservation.prototype.getSyncIsNeeded = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 25, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setSyncIsNeeded = function(value) {\n return jspb.Message.setProto3BooleanField(this, 25, value);\n};\n\n\n/**\n * optional string note_text = 26;\n * @return {string}\n */\nproto.grpc.api.v1.Reservation.prototype.getNoteText = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 26, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setNoteText = function(value) {\n return jspb.Message.setProto3StringField(this, 26, value);\n};\n\n\n/**\n * optional string payment_info = 27;\n * @return {string}\n */\nproto.grpc.api.v1.Reservation.prototype.getPaymentInfo = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 27, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setPaymentInfo = function(value) {\n return jspb.Message.setProto3StringField(this, 27, value);\n};\n\n\n/**\n * optional int32 rating = 28;\n * @return {number}\n */\nproto.grpc.api.v1.Reservation.prototype.getRating = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 28, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setRating = function(value) {\n return jspb.Message.setProto3IntField(this, 28, value);\n};\n\n\n/**\n * repeated int64 tab_items_ids = 29;\n * @return {!Array}\n */\nproto.grpc.api.v1.Reservation.prototype.getTabItemsIdsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 29));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.setTabItemsIdsList = function(value) {\n return jspb.Message.setField(this, 29, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.addTabItemsIds = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 29, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.clearTabItemsIdsList = function() {\n return this.setTabItemsIdsList([]);\n};\n\n\n/**\n * optional Contact contact = 30;\n * @return {?proto.grpc.api.v1.Contact}\n */\nproto.grpc.api.v1.Reservation.prototype.getContact = function() {\n return /** @type{?proto.grpc.api.v1.Contact} */ (\n jspb.Message.getWrapperField(this, contact_pb.Contact, 30));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Contact|undefined} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n*/\nproto.grpc.api.v1.Reservation.prototype.setContact = function(value) {\n return jspb.Message.setWrapperField(this, 30, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.clearContact = function() {\n return this.setContact(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.Reservation.prototype.hasContact = function() {\n return jspb.Message.getField(this, 30) != null;\n};\n\n\n/**\n * repeated ReservationAttachment attachments = 31;\n * @return {!Array}\n */\nproto.grpc.api.v1.Reservation.prototype.getAttachmentsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.ReservationAttachment, 31));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.Reservation} returns this\n*/\nproto.grpc.api.v1.Reservation.prototype.setAttachmentsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 31, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReservationAttachment=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ReservationAttachment}\n */\nproto.grpc.api.v1.Reservation.prototype.addAttachments = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 31, opt_value, proto.grpc.api.v1.ReservationAttachment, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.Reservation} returns this\n */\nproto.grpc.api.v1.Reservation.prototype.clearAttachmentsList = function() {\n return this.setAttachmentsList([]);\n};\n\n\n/**\n * @enum {number}\n */\nproto.grpc.api.v1.ReservationStatus = {\n NONE: 0,\n PLANNED: 1,\n SEATED: 2,\n CHECKED_IN: 3,\n CHECKED_OUT: 4,\n CONFIRMED: 5,\n NON_CONFIRMED: 6,\n WAITING_LIST: 7,\n CANCELLED: 8,\n NOSHOW: 9,\n SPAM: 10,\n DELETED: 11,\n PENDING: 12\n};\n\n/**\n * @enum {number}\n */\nproto.grpc.api.v1.ReservationType = {\n NONE: 0,\n ONLINE: 1,\n USER: 2\n};\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","// source: reservation_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\ngoog.exportSymbol('proto.grpc.api.v1.ReservationService', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReservationServiceBlackout', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReservationServiceBlackout = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReservationServiceBlackout, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReservationServiceBlackout.displayName = 'proto.grpc.api.v1.ReservationServiceBlackout';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReservationService = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, proto.grpc.api.v1.ReservationService.repeatedFields_, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReservationService, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReservationService.displayName = 'proto.grpc.api.v1.ReservationService';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReservationServiceBlackout.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReservationServiceBlackout.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReservationServiceBlackout} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationServiceBlackout.toObject = function(includeInstance, msg) {\n var f, obj = {\n blackoutStartDate: jspb.Message.getFieldWithDefault(msg, 1, 0),\n blackoutEndDate: jspb.Message.getFieldWithDefault(msg, 2, 0)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReservationServiceBlackout}\n */\nproto.grpc.api.v1.ReservationServiceBlackout.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReservationServiceBlackout;\n return proto.grpc.api.v1.ReservationServiceBlackout.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReservationServiceBlackout} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReservationServiceBlackout}\n */\nproto.grpc.api.v1.ReservationServiceBlackout.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setBlackoutStartDate(value);\n break;\n case 2:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setBlackoutEndDate(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReservationServiceBlackout.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReservationServiceBlackout.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReservationServiceBlackout} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationServiceBlackout.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getBlackoutStartDate();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getBlackoutEndDate();\n if (f !== 0) {\n writer.writeInt64(\n 2,\n f\n );\n }\n};\n\n\n/**\n * optional int64 blackout_start_date = 1;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationServiceBlackout.prototype.getBlackoutStartDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationServiceBlackout} returns this\n */\nproto.grpc.api.v1.ReservationServiceBlackout.prototype.setBlackoutStartDate = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional int64 blackout_end_date = 2;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationServiceBlackout.prototype.getBlackoutEndDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 2, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationServiceBlackout} returns this\n */\nproto.grpc.api.v1.ReservationServiceBlackout.prototype.setBlackoutEndDate = function(value) {\n return jspb.Message.setProto3IntField(this, 2, value);\n};\n\n\n\n/**\n * List of repeated fields within this message type.\n * @private {!Array}\n * @const\n */\nproto.grpc.api.v1.ReservationService.repeatedFields_ = [7,8,35];\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReservationService.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReservationService.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReservationService} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationService.toObject = function(includeInstance, msg) {\n var f, obj = {\n id: jspb.Message.getFieldWithDefault(msg, 1, 0),\n code: jspb.Message.getFieldWithDefault(msg, 2, \"\"),\n order: jspb.Message.getFieldWithDefault(msg, 3, 0),\n title: jspb.Message.getFieldWithDefault(msg, 4, \"\"),\n description: jspb.Message.getFieldWithDefault(msg, 5, \"\"),\n imageUrl: jspb.Message.getFieldWithDefault(msg, 6, \"\"),\n tagsList: (f = jspb.Message.getRepeatedField(msg, 7)) == null ? undefined : f,\n weekDayList: (f = jspb.Message.getRepeatedField(msg, 8)) == null ? undefined : f,\n startDate: jspb.Message.getFieldWithDefault(msg, 9, 0),\n endDate: jspb.Message.getFieldWithDefault(msg, 10, 0),\n minPartySize: jspb.Message.getFieldWithDefault(msg, 11, 0),\n maxPartySize: jspb.Message.getFieldWithDefault(msg, 12, 0),\n startTime: jspb.Message.getFieldWithDefault(msg, 13, \"\"),\n endTime: jspb.Message.getFieldWithDefault(msg, 14, \"\"),\n tabId: jspb.Message.getFieldWithDefault(msg, 15, 0),\n duration: jspb.Message.getFieldWithDefault(msg, 16, 0),\n locale: jspb.Message.getFieldWithDefault(msg, 17, \"\"),\n isPromoted: jspb.Message.getBooleanFieldWithDefault(msg, 18, false),\n isRequired: jspb.Message.getBooleanFieldWithDefault(msg, 19, false),\n isCreditcardRequired: jspb.Message.getBooleanFieldWithDefault(msg, 20, false),\n price: jspb.Message.getFieldWithDefault(msg, 21, 0),\n isPricePerPerson: jspb.Message.getBooleanFieldWithDefault(msg, 22, false),\n currencyId: jspb.Message.getFieldWithDefault(msg, 23, 0),\n dtCreated: jspb.Message.getFieldWithDefault(msg, 24, 0),\n dtUpdate: jspb.Message.getFieldWithDefault(msg, 25, 0),\n isDeleted: jspb.Message.getBooleanFieldWithDefault(msg, 26, false),\n minMinutesInAdvance: jspb.Message.getFieldWithDefault(msg, 27, 0),\n minMinutesToModify: jspb.Message.getFieldWithDefault(msg, 28, 0),\n maxParallelBookings: jspb.Message.getFieldWithDefault(msg, 31, 0),\n isActive: jspb.Message.getBooleanFieldWithDefault(msg, 32, false),\n color: jspb.Message.getFieldWithDefault(msg, 33, \"\"),\n isDeposit: jspb.Message.getBooleanFieldWithDefault(msg, 34, false),\n blackoutsList: jspb.Message.toObjectList(msg.getBlackoutsList(),\n proto.grpc.api.v1.ReservationServiceBlackout.toObject, includeInstance)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReservationService}\n */\nproto.grpc.api.v1.ReservationService.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReservationService;\n return proto.grpc.api.v1.ReservationService.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReservationService} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReservationService}\n */\nproto.grpc.api.v1.ReservationService.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setId(value);\n break;\n case 2:\n var value = /** @type {string} */ (reader.readString());\n msg.setCode(value);\n break;\n case 3:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setOrder(value);\n break;\n case 4:\n var value = /** @type {string} */ (reader.readString());\n msg.setTitle(value);\n break;\n case 5:\n var value = /** @type {string} */ (reader.readString());\n msg.setDescription(value);\n break;\n case 6:\n var value = /** @type {string} */ (reader.readString());\n msg.setImageUrl(value);\n break;\n case 7:\n var value = /** @type {string} */ (reader.readString());\n msg.addTags(value);\n break;\n case 8:\n var values = /** @type {!Array} */ (reader.isDelimited() ? reader.readPackedInt32() : [reader.readInt32()]);\n for (var i = 0; i < values.length; i++) {\n msg.addWeekDay(values[i]);\n }\n break;\n case 9:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setStartDate(value);\n break;\n case 10:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setEndDate(value);\n break;\n case 11:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setMinPartySize(value);\n break;\n case 12:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setMaxPartySize(value);\n break;\n case 13:\n var value = /** @type {string} */ (reader.readString());\n msg.setStartTime(value);\n break;\n case 14:\n var value = /** @type {string} */ (reader.readString());\n msg.setEndTime(value);\n break;\n case 15:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setTabId(value);\n break;\n case 16:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setDuration(value);\n break;\n case 17:\n var value = /** @type {string} */ (reader.readString());\n msg.setLocale(value);\n break;\n case 18:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsPromoted(value);\n break;\n case 19:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsRequired(value);\n break;\n case 20:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsCreditcardRequired(value);\n break;\n case 21:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setPrice(value);\n break;\n case 22:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsPricePerPerson(value);\n break;\n case 23:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setCurrencyId(value);\n break;\n case 24:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtCreated(value);\n break;\n case 25:\n var value = /** @type {number} */ (reader.readInt64());\n msg.setDtUpdate(value);\n break;\n case 26:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsDeleted(value);\n break;\n case 27:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setMinMinutesInAdvance(value);\n break;\n case 28:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setMinMinutesToModify(value);\n break;\n case 31:\n var value = /** @type {number} */ (reader.readInt32());\n msg.setMaxParallelBookings(value);\n break;\n case 32:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsActive(value);\n break;\n case 33:\n var value = /** @type {string} */ (reader.readString());\n msg.setColor(value);\n break;\n case 34:\n var value = /** @type {boolean} */ (reader.readBool());\n msg.setIsDeposit(value);\n break;\n case 35:\n var value = new proto.grpc.api.v1.ReservationServiceBlackout;\n reader.readMessage(value,proto.grpc.api.v1.ReservationServiceBlackout.deserializeBinaryFromReader);\n msg.addBlackouts(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReservationService.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReservationService.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReservationService} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationService.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getId();\n if (f !== 0) {\n writer.writeInt64(\n 1,\n f\n );\n }\n f = message.getCode();\n if (f.length > 0) {\n writer.writeString(\n 2,\n f\n );\n }\n f = message.getOrder();\n if (f !== 0) {\n writer.writeInt64(\n 3,\n f\n );\n }\n f = message.getTitle();\n if (f.length > 0) {\n writer.writeString(\n 4,\n f\n );\n }\n f = message.getDescription();\n if (f.length > 0) {\n writer.writeString(\n 5,\n f\n );\n }\n f = message.getImageUrl();\n if (f.length > 0) {\n writer.writeString(\n 6,\n f\n );\n }\n f = message.getTagsList();\n if (f.length > 0) {\n writer.writeRepeatedString(\n 7,\n f\n );\n }\n f = message.getWeekDayList();\n if (f.length > 0) {\n writer.writePackedInt32(\n 8,\n f\n );\n }\n f = message.getStartDate();\n if (f !== 0) {\n writer.writeInt64(\n 9,\n f\n );\n }\n f = message.getEndDate();\n if (f !== 0) {\n writer.writeInt64(\n 10,\n f\n );\n }\n f = message.getMinPartySize();\n if (f !== 0) {\n writer.writeInt32(\n 11,\n f\n );\n }\n f = message.getMaxPartySize();\n if (f !== 0) {\n writer.writeInt32(\n 12,\n f\n );\n }\n f = message.getStartTime();\n if (f.length > 0) {\n writer.writeString(\n 13,\n f\n );\n }\n f = message.getEndTime();\n if (f.length > 0) {\n writer.writeString(\n 14,\n f\n );\n }\n f = message.getTabId();\n if (f !== 0) {\n writer.writeInt64(\n 15,\n f\n );\n }\n f = message.getDuration();\n if (f !== 0) {\n writer.writeInt32(\n 16,\n f\n );\n }\n f = message.getLocale();\n if (f.length > 0) {\n writer.writeString(\n 17,\n f\n );\n }\n f = message.getIsPromoted();\n if (f) {\n writer.writeBool(\n 18,\n f\n );\n }\n f = message.getIsRequired();\n if (f) {\n writer.writeBool(\n 19,\n f\n );\n }\n f = message.getIsCreditcardRequired();\n if (f) {\n writer.writeBool(\n 20,\n f\n );\n }\n f = message.getPrice();\n if (f !== 0) {\n writer.writeInt64(\n 21,\n f\n );\n }\n f = message.getIsPricePerPerson();\n if (f) {\n writer.writeBool(\n 22,\n f\n );\n }\n f = message.getCurrencyId();\n if (f !== 0) {\n writer.writeInt64(\n 23,\n f\n );\n }\n f = message.getDtCreated();\n if (f !== 0) {\n writer.writeInt64(\n 24,\n f\n );\n }\n f = message.getDtUpdate();\n if (f !== 0) {\n writer.writeInt64(\n 25,\n f\n );\n }\n f = message.getIsDeleted();\n if (f) {\n writer.writeBool(\n 26,\n f\n );\n }\n f = message.getMinMinutesInAdvance();\n if (f !== 0) {\n writer.writeInt32(\n 27,\n f\n );\n }\n f = message.getMinMinutesToModify();\n if (f !== 0) {\n writer.writeInt32(\n 28,\n f\n );\n }\n f = message.getMaxParallelBookings();\n if (f !== 0) {\n writer.writeInt32(\n 31,\n f\n );\n }\n f = message.getIsActive();\n if (f) {\n writer.writeBool(\n 32,\n f\n );\n }\n f = message.getColor();\n if (f.length > 0) {\n writer.writeString(\n 33,\n f\n );\n }\n f = message.getIsDeposit();\n if (f) {\n writer.writeBool(\n 34,\n f\n );\n }\n f = message.getBlackoutsList();\n if (f.length > 0) {\n writer.writeRepeatedMessage(\n 35,\n f,\n proto.grpc.api.v1.ReservationServiceBlackout.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional int64 id = 1;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setId = function(value) {\n return jspb.Message.setProto3IntField(this, 1, value);\n};\n\n\n/**\n * optional string code = 2;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getCode = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setCode = function(value) {\n return jspb.Message.setProto3StringField(this, 2, value);\n};\n\n\n/**\n * optional int64 order = 3;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getOrder = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 3, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setOrder = function(value) {\n return jspb.Message.setProto3IntField(this, 3, value);\n};\n\n\n/**\n * optional string title = 4;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getTitle = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 4, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setTitle = function(value) {\n return jspb.Message.setProto3StringField(this, 4, value);\n};\n\n\n/**\n * optional string description = 5;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getDescription = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 5, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setDescription = function(value) {\n return jspb.Message.setProto3StringField(this, 5, value);\n};\n\n\n/**\n * optional string image_url = 6;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getImageUrl = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 6, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setImageUrl = function(value) {\n return jspb.Message.setProto3StringField(this, 6, value);\n};\n\n\n/**\n * repeated string tags = 7;\n * @return {!Array}\n */\nproto.grpc.api.v1.ReservationService.prototype.getTagsList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 7));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setTagsList = function(value) {\n return jspb.Message.setField(this, 7, value || []);\n};\n\n\n/**\n * @param {string} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.addTags = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 7, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.clearTagsList = function() {\n return this.setTagsList([]);\n};\n\n\n/**\n * repeated int32 week_day = 8;\n * @return {!Array}\n */\nproto.grpc.api.v1.ReservationService.prototype.getWeekDayList = function() {\n return /** @type {!Array} */ (jspb.Message.getRepeatedField(this, 8));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setWeekDayList = function(value) {\n return jspb.Message.setField(this, 8, value || []);\n};\n\n\n/**\n * @param {number} value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.addWeekDay = function(value, opt_index) {\n return jspb.Message.addToRepeatedField(this, 8, value, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.clearWeekDayList = function() {\n return this.setWeekDayList([]);\n};\n\n\n/**\n * optional int64 start_date = 9;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getStartDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 9, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setStartDate = function(value) {\n return jspb.Message.setProto3IntField(this, 9, value);\n};\n\n\n/**\n * optional int64 end_date = 10;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getEndDate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 10, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setEndDate = function(value) {\n return jspb.Message.setProto3IntField(this, 10, value);\n};\n\n\n/**\n * optional int32 min_party_size = 11;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getMinPartySize = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 11, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setMinPartySize = function(value) {\n return jspb.Message.setProto3IntField(this, 11, value);\n};\n\n\n/**\n * optional int32 max_party_size = 12;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getMaxPartySize = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 12, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setMaxPartySize = function(value) {\n return jspb.Message.setProto3IntField(this, 12, value);\n};\n\n\n/**\n * optional string start_time = 13;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getStartTime = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 13, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setStartTime = function(value) {\n return jspb.Message.setProto3StringField(this, 13, value);\n};\n\n\n/**\n * optional string end_time = 14;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getEndTime = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 14, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setEndTime = function(value) {\n return jspb.Message.setProto3StringField(this, 14, value);\n};\n\n\n/**\n * optional int64 tab_id = 15;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getTabId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 15, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setTabId = function(value) {\n return jspb.Message.setProto3IntField(this, 15, value);\n};\n\n\n/**\n * optional int32 duration = 16;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getDuration = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 16, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setDuration = function(value) {\n return jspb.Message.setProto3IntField(this, 16, value);\n};\n\n\n/**\n * optional string locale = 17;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getLocale = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 17, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setLocale = function(value) {\n return jspb.Message.setProto3StringField(this, 17, value);\n};\n\n\n/**\n * optional bool is_promoted = 18;\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationService.prototype.getIsPromoted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 18, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setIsPromoted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 18, value);\n};\n\n\n/**\n * optional bool is_required = 19;\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationService.prototype.getIsRequired = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 19, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setIsRequired = function(value) {\n return jspb.Message.setProto3BooleanField(this, 19, value);\n};\n\n\n/**\n * optional bool is_creditcard_required = 20;\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationService.prototype.getIsCreditcardRequired = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 20, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setIsCreditcardRequired = function(value) {\n return jspb.Message.setProto3BooleanField(this, 20, value);\n};\n\n\n/**\n * optional int64 price = 21;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getPrice = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 21, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setPrice = function(value) {\n return jspb.Message.setProto3IntField(this, 21, value);\n};\n\n\n/**\n * optional bool is_price_per_person = 22;\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationService.prototype.getIsPricePerPerson = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 22, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setIsPricePerPerson = function(value) {\n return jspb.Message.setProto3BooleanField(this, 22, value);\n};\n\n\n/**\n * optional int64 currency_id = 23;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getCurrencyId = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 23, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setCurrencyId = function(value) {\n return jspb.Message.setProto3IntField(this, 23, value);\n};\n\n\n/**\n * optional int64 dt_created = 24;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getDtCreated = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 24, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setDtCreated = function(value) {\n return jspb.Message.setProto3IntField(this, 24, value);\n};\n\n\n/**\n * optional int64 dt_update = 25;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getDtUpdate = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 25, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setDtUpdate = function(value) {\n return jspb.Message.setProto3IntField(this, 25, value);\n};\n\n\n/**\n * optional bool is_deleted = 26;\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationService.prototype.getIsDeleted = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 26, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setIsDeleted = function(value) {\n return jspb.Message.setProto3BooleanField(this, 26, value);\n};\n\n\n/**\n * optional int32 min_minutes_in_advance = 27;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getMinMinutesInAdvance = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 27, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setMinMinutesInAdvance = function(value) {\n return jspb.Message.setProto3IntField(this, 27, value);\n};\n\n\n/**\n * optional int32 min_minutes_to_modify = 28;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getMinMinutesToModify = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 28, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setMinMinutesToModify = function(value) {\n return jspb.Message.setProto3IntField(this, 28, value);\n};\n\n\n/**\n * optional int32 max_parallel_bookings = 31;\n * @return {number}\n */\nproto.grpc.api.v1.ReservationService.prototype.getMaxParallelBookings = function() {\n return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 31, 0));\n};\n\n\n/**\n * @param {number} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setMaxParallelBookings = function(value) {\n return jspb.Message.setProto3IntField(this, 31, value);\n};\n\n\n/**\n * optional bool is_active = 32;\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationService.prototype.getIsActive = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 32, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setIsActive = function(value) {\n return jspb.Message.setProto3BooleanField(this, 32, value);\n};\n\n\n/**\n * optional string color = 33;\n * @return {string}\n */\nproto.grpc.api.v1.ReservationService.prototype.getColor = function() {\n return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 33, \"\"));\n};\n\n\n/**\n * @param {string} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setColor = function(value) {\n return jspb.Message.setProto3StringField(this, 33, value);\n};\n\n\n/**\n * optional bool is_deposit = 34;\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationService.prototype.getIsDeposit = function() {\n return /** @type {boolean} */ (jspb.Message.getBooleanFieldWithDefault(this, 34, false));\n};\n\n\n/**\n * @param {boolean} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.setIsDeposit = function(value) {\n return jspb.Message.setProto3BooleanField(this, 34, value);\n};\n\n\n/**\n * repeated ReservationServiceBlackout blackouts = 35;\n * @return {!Array}\n */\nproto.grpc.api.v1.ReservationService.prototype.getBlackoutsList = function() {\n return /** @type{!Array} */ (\n jspb.Message.getRepeatedWrapperField(this, proto.grpc.api.v1.ReservationServiceBlackout, 35));\n};\n\n\n/**\n * @param {!Array} value\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n*/\nproto.grpc.api.v1.ReservationService.prototype.setBlackoutsList = function(value) {\n return jspb.Message.setRepeatedWrapperField(this, 35, value);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReservationServiceBlackout=} opt_value\n * @param {number=} opt_index\n * @return {!proto.grpc.api.v1.ReservationServiceBlackout}\n */\nproto.grpc.api.v1.ReservationService.prototype.addBlackouts = function(opt_value, opt_index) {\n return jspb.Message.addToRepeatedWrapperField(this, 35, opt_value, proto.grpc.api.v1.ReservationServiceBlackout, opt_index);\n};\n\n\n/**\n * Clears the list making it empty but non-null.\n * @return {!proto.grpc.api.v1.ReservationService} returns this\n */\nproto.grpc.api.v1.ReservationService.prototype.clearBlackoutsList = function() {\n return this.setBlackoutsList([]);\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: service_manager_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar empty_pb = require('./empty_pb.js')\n\nvar reorder_pb = require('./reorder_pb.js')\n\nvar reservation_service_pb = require('./reservation_service_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./service_manager_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ServiceManagerServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.ServiceManagerServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ReservationServiceRequest,\n * !proto.grpc.api.v1.ReservationServiceResponse>}\n */\nconst methodDescriptor_ServiceManagerService_updateService = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ServiceManagerService/updateService',\n grpc.web.MethodType.SERVER_STREAMING,\n proto.grpc.api.v1.ReservationServiceRequest,\n proto.grpc.api.v1.ReservationServiceResponse,\n /**\n * @param {!proto.grpc.api.v1.ReservationServiceRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ReservationServiceResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ReservationServiceRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ServiceManagerServiceClient.prototype.updateService =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ServiceManagerService/updateService',\n request,\n metadata || {},\n methodDescriptor_ServiceManagerService_updateService);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReservationServiceRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ServiceManagerServicePromiseClient.prototype.updateService =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ServiceManagerService/updateService',\n request,\n metadata || {},\n methodDescriptor_ServiceManagerService_updateService);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.EmptyRequest,\n * !proto.grpc.api.v1.ReservationServiceResponse>}\n */\nconst methodDescriptor_ServiceManagerService_listServices = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ServiceManagerService/listServices',\n grpc.web.MethodType.SERVER_STREAMING,\n empty_pb.EmptyRequest,\n proto.grpc.api.v1.ReservationServiceResponse,\n /**\n * @param {!proto.grpc.api.v1.EmptyRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ReservationServiceResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ServiceManagerServiceClient.prototype.listServices =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ServiceManagerService/listServices',\n request,\n metadata || {},\n methodDescriptor_ServiceManagerService_listServices);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ServiceManagerServicePromiseClient.prototype.listServices =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ServiceManagerService/listServices',\n request,\n metadata || {},\n methodDescriptor_ServiceManagerService_listServices);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.ReorderRequest,\n * !proto.grpc.api.v1.ReservationServiceResponse>}\n */\nconst methodDescriptor_ServiceManagerService_reorderServices = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.ServiceManagerService/reorderServices',\n grpc.web.MethodType.SERVER_STREAMING,\n reorder_pb.ReorderRequest,\n proto.grpc.api.v1.ReservationServiceResponse,\n /**\n * @param {!proto.grpc.api.v1.ReorderRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.ReservationServiceResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.ReorderRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ServiceManagerServiceClient.prototype.reorderServices =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ServiceManagerService/reorderServices',\n request,\n metadata || {},\n methodDescriptor_ServiceManagerService_reorderServices);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.ReorderRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.ServiceManagerServicePromiseClient.prototype.reorderServices =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.ServiceManagerService/reorderServices',\n request,\n metadata || {},\n methodDescriptor_ServiceManagerService_reorderServices);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: service_manager_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar empty_pb = require('./empty_pb.js');\ngoog.object.extend(proto, empty_pb);\nvar reorder_pb = require('./reorder_pb.js');\ngoog.object.extend(proto, reorder_pb);\nvar reservation_service_pb = require('./reservation_service_pb.js');\ngoog.object.extend(proto, reservation_service_pb);\ngoog.exportSymbol('proto.grpc.api.v1.ReservationServiceRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.ReservationServiceResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReservationServiceRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReservationServiceRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReservationServiceRequest.displayName = 'proto.grpc.api.v1.ReservationServiceRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.ReservationServiceResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.ReservationServiceResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.ReservationServiceResponse.displayName = 'proto.grpc.api.v1.ReservationServiceResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReservationServiceRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReservationServiceRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReservationServiceRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationServiceRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n service: (f = msg.getService()) && reservation_service_pb.ReservationService.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReservationServiceRequest}\n */\nproto.grpc.api.v1.ReservationServiceRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReservationServiceRequest;\n return proto.grpc.api.v1.ReservationServiceRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReservationServiceRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReservationServiceRequest}\n */\nproto.grpc.api.v1.ReservationServiceRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new reservation_service_pb.ReservationService;\n reader.readMessage(value,reservation_service_pb.ReservationService.deserializeBinaryFromReader);\n msg.setService(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReservationServiceRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReservationServiceRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReservationServiceRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationServiceRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getService();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n reservation_service_pb.ReservationService.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ReservationService service = 1;\n * @return {?proto.grpc.api.v1.ReservationService}\n */\nproto.grpc.api.v1.ReservationServiceRequest.prototype.getService = function() {\n return /** @type{?proto.grpc.api.v1.ReservationService} */ (\n jspb.Message.getWrapperField(this, reservation_service_pb.ReservationService, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ReservationService|undefined} value\n * @return {!proto.grpc.api.v1.ReservationServiceRequest} returns this\n*/\nproto.grpc.api.v1.ReservationServiceRequest.prototype.setService = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ReservationServiceRequest} returns this\n */\nproto.grpc.api.v1.ReservationServiceRequest.prototype.clearService = function() {\n return this.setService(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationServiceRequest.prototype.hasService = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.ReservationServiceResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.ReservationServiceResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.ReservationServiceResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationServiceResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n service: (f = msg.getService()) && reservation_service_pb.ReservationService.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.ReservationServiceResponse}\n */\nproto.grpc.api.v1.ReservationServiceResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.ReservationServiceResponse;\n return proto.grpc.api.v1.ReservationServiceResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.ReservationServiceResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.ReservationServiceResponse}\n */\nproto.grpc.api.v1.ReservationServiceResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new reservation_service_pb.ReservationService;\n reader.readMessage(value,reservation_service_pb.ReservationService.deserializeBinaryFromReader);\n msg.setService(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.ReservationServiceResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.ReservationServiceResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.ReservationServiceResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.ReservationServiceResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getService();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n reservation_service_pb.ReservationService.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional ReservationService service = 1;\n * @return {?proto.grpc.api.v1.ReservationService}\n */\nproto.grpc.api.v1.ReservationServiceResponse.prototype.getService = function() {\n return /** @type{?proto.grpc.api.v1.ReservationService} */ (\n jspb.Message.getWrapperField(this, reservation_service_pb.ReservationService, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.ReservationService|undefined} value\n * @return {!proto.grpc.api.v1.ReservationServiceResponse} returns this\n*/\nproto.grpc.api.v1.ReservationServiceResponse.prototype.setService = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.ReservationServiceResponse} returns this\n */\nproto.grpc.api.v1.ReservationServiceResponse.prototype.clearService = function() {\n return this.setService(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.ReservationServiceResponse.prototype.hasService = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","/**\n * @fileoverview gRPC-Web generated client stub for grpc.api.v1\n * @enhanceable\n * @public\n */\n\n// Code generated by protoc-gen-grpc-web. DO NOT EDIT.\n// versions:\n// \tprotoc-gen-grpc-web v1.5.0\n// \tprotoc v3.20.1\n// source: settings_service.proto\n\n\n/* eslint-disable */\n// @ts-nocheck\n\n\n\nconst grpc = {};\ngrpc.web = require('grpc-web');\n\n\nvar empty_pb = require('./empty_pb.js')\n\nvar campaign_pb = require('./campaign_pb.js')\n\nvar currency_pb = require('./currency_pb.js')\nconst proto = {};\nproto.grpc = {};\nproto.grpc.api = {};\nproto.grpc.api.v1 = require('./settings_service_pb.js');\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.SettingsServiceClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @param {string} hostname\n * @param {?Object} credentials\n * @param {?grpc.web.ClientOptions} options\n * @constructor\n * @struct\n * @final\n */\nproto.grpc.api.v1.SettingsServicePromiseClient =\n function(hostname, credentials, options) {\n if (!options) options = {};\n options.format = 'text';\n\n /**\n * @private @const {!grpc.web.GrpcWebClientBase} The client\n */\n this.client_ = new grpc.web.GrpcWebClientBase(options);\n\n /**\n * @private @const {string} The hostname\n */\n this.hostname_ = hostname.replace(/\\/+$/, '');\n\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.EmptyRequest,\n * !proto.grpc.api.v1.CampaignResponse>}\n */\nconst methodDescriptor_SettingsService_getDefaultCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.SettingsService/getDefaultCampaign',\n grpc.web.MethodType.UNARY,\n empty_pb.EmptyRequest,\n proto.grpc.api.v1.CampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.EmptyRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.CampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.CampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.SettingsServiceClient.prototype.getDefaultCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.SettingsService/getDefaultCampaign',\n request,\n metadata || {},\n methodDescriptor_SettingsService_getDefaultCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.SettingsServicePromiseClient.prototype.getDefaultCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.SettingsService/getDefaultCampaign',\n request,\n metadata || {},\n methodDescriptor_SettingsService_getDefaultCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.CampaignRequest,\n * !proto.grpc.api.v1.EmptyResponse>}\n */\nconst methodDescriptor_SettingsService_testDefaultCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.SettingsService/testDefaultCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.CampaignRequest,\n empty_pb.EmptyResponse,\n /**\n * @param {!proto.grpc.api.v1.CampaignRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n empty_pb.EmptyResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.CampaignRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.EmptyResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.SettingsServiceClient.prototype.testDefaultCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.SettingsService/testDefaultCampaign',\n request,\n metadata || {},\n methodDescriptor_SettingsService_testDefaultCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.CampaignRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.SettingsServicePromiseClient.prototype.testDefaultCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.SettingsService/testDefaultCampaign',\n request,\n metadata || {},\n methodDescriptor_SettingsService_testDefaultCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.CampaignRequest,\n * !proto.grpc.api.v1.CampaignResponse>}\n */\nconst methodDescriptor_SettingsService_updateDefaultCampaign = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.SettingsService/updateDefaultCampaign',\n grpc.web.MethodType.UNARY,\n proto.grpc.api.v1.CampaignRequest,\n proto.grpc.api.v1.CampaignResponse,\n /**\n * @param {!proto.grpc.api.v1.CampaignRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.CampaignResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.CampaignRequest} request The\n * request proto\n * @param {?Object} metadata User defined\n * call metadata\n * @param {function(?grpc.web.RpcError, ?proto.grpc.api.v1.CampaignResponse)}\n * callback The callback function(error, response)\n * @return {!grpc.web.ClientReadableStream|undefined}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.SettingsServiceClient.prototype.updateDefaultCampaign =\n function(request, metadata, callback) {\n return this.client_.rpcCall(this.hostname_ +\n '/grpc.api.v1.SettingsService/updateDefaultCampaign',\n request,\n metadata || {},\n methodDescriptor_SettingsService_updateDefaultCampaign,\n callback);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.CampaignRequest} request The\n * request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!Promise}\n * Promise that resolves to the response\n */\nproto.grpc.api.v1.SettingsServicePromiseClient.prototype.updateDefaultCampaign =\n function(request, metadata) {\n return this.client_.unaryCall(this.hostname_ +\n '/grpc.api.v1.SettingsService/updateDefaultCampaign',\n request,\n metadata || {},\n methodDescriptor_SettingsService_updateDefaultCampaign);\n};\n\n\n/**\n * @const\n * @type {!grpc.web.MethodDescriptor<\n * !proto.grpc.api.v1.EmptyRequest,\n * !proto.grpc.api.v1.CurrencyResponse>}\n */\nconst methodDescriptor_SettingsService_listCurrencies = new grpc.web.MethodDescriptor(\n '/grpc.api.v1.SettingsService/listCurrencies',\n grpc.web.MethodType.SERVER_STREAMING,\n empty_pb.EmptyRequest,\n proto.grpc.api.v1.CurrencyResponse,\n /**\n * @param {!proto.grpc.api.v1.EmptyRequest} request\n * @return {!Uint8Array}\n */\n function(request) {\n return request.serializeBinary();\n },\n proto.grpc.api.v1.CurrencyResponse.deserializeBinary\n);\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.SettingsServiceClient.prototype.listCurrencies =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.SettingsService/listCurrencies',\n request,\n metadata || {},\n methodDescriptor_SettingsService_listCurrencies);\n};\n\n\n/**\n * @param {!proto.grpc.api.v1.EmptyRequest} request The request proto\n * @param {?Object=} metadata User defined\n * call metadata\n * @return {!grpc.web.ClientReadableStream}\n * The XHR Node Readable Stream\n */\nproto.grpc.api.v1.SettingsServicePromiseClient.prototype.listCurrencies =\n function(request, metadata) {\n return this.client_.serverStreaming(this.hostname_ +\n '/grpc.api.v1.SettingsService/listCurrencies',\n request,\n metadata || {},\n methodDescriptor_SettingsService_listCurrencies);\n};\n\n\nmodule.exports = proto.grpc.api.v1;\n\n","// source: settings_service.proto\n/**\n * @fileoverview\n * @enhanceable\n * @suppress {missingRequire} reports error on implicit type usages.\n * @suppress {messageConventions} JS Compiler reports an error if a variable or\n * field starts with 'MSG_' and isn't a translatable message.\n * @public\n */\n// GENERATED CODE -- DO NOT EDIT!\n/* eslint-disable */\n// @ts-nocheck\n\nvar jspb = require('google-protobuf');\nvar goog = jspb;\nvar global = (function() { return this || window || global || self || Function('return this')(); }).call(null);\n\nvar empty_pb = require('./empty_pb.js');\ngoog.object.extend(proto, empty_pb);\nvar campaign_pb = require('./campaign_pb.js');\ngoog.object.extend(proto, campaign_pb);\nvar currency_pb = require('./currency_pb.js');\ngoog.object.extend(proto, currency_pb);\ngoog.exportSymbol('proto.grpc.api.v1.CampaignRequest', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.CampaignResponse', null, global);\ngoog.exportSymbol('proto.grpc.api.v1.CurrencyResponse', null, global);\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.CampaignRequest = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.CampaignRequest, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.CampaignRequest.displayName = 'proto.grpc.api.v1.CampaignRequest';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.CampaignResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.CampaignResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.CampaignResponse.displayName = 'proto.grpc.api.v1.CampaignResponse';\n}\n/**\n * Generated by JsPbCodeGenerator.\n * @param {Array=} opt_data Optional initial data array, typically from a\n * server response, or constructed directly in Javascript. The array is used\n * in place and becomes part of the constructed object. It is not cloned.\n * If no data is provided, the constructed object will be empty, but still\n * valid.\n * @extends {jspb.Message}\n * @constructor\n */\nproto.grpc.api.v1.CurrencyResponse = function(opt_data) {\n jspb.Message.initialize(this, opt_data, 0, -1, null, null);\n};\ngoog.inherits(proto.grpc.api.v1.CurrencyResponse, jspb.Message);\nif (goog.DEBUG && !COMPILED) {\n /**\n * @public\n * @override\n */\n proto.grpc.api.v1.CurrencyResponse.displayName = 'proto.grpc.api.v1.CurrencyResponse';\n}\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.CampaignRequest.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.CampaignRequest.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.CampaignRequest} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CampaignRequest.toObject = function(includeInstance, msg) {\n var f, obj = {\n campaign: (f = msg.getCampaign()) && campaign_pb.Campaign.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.CampaignRequest}\n */\nproto.grpc.api.v1.CampaignRequest.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.CampaignRequest;\n return proto.grpc.api.v1.CampaignRequest.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.CampaignRequest} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.CampaignRequest}\n */\nproto.grpc.api.v1.CampaignRequest.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new campaign_pb.Campaign;\n reader.readMessage(value,campaign_pb.Campaign.deserializeBinaryFromReader);\n msg.setCampaign(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.CampaignRequest.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.CampaignRequest.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.CampaignRequest} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CampaignRequest.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getCampaign();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n campaign_pb.Campaign.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Campaign campaign = 1;\n * @return {?proto.grpc.api.v1.Campaign}\n */\nproto.grpc.api.v1.CampaignRequest.prototype.getCampaign = function() {\n return /** @type{?proto.grpc.api.v1.Campaign} */ (\n jspb.Message.getWrapperField(this, campaign_pb.Campaign, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Campaign|undefined} value\n * @return {!proto.grpc.api.v1.CampaignRequest} returns this\n*/\nproto.grpc.api.v1.CampaignRequest.prototype.setCampaign = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.CampaignRequest} returns this\n */\nproto.grpc.api.v1.CampaignRequest.prototype.clearCampaign = function() {\n return this.setCampaign(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.CampaignRequest.prototype.hasCampaign = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.CampaignResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.CampaignResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.CampaignResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CampaignResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n campaign: (f = msg.getCampaign()) && campaign_pb.Campaign.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.CampaignResponse}\n */\nproto.grpc.api.v1.CampaignResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.CampaignResponse;\n return proto.grpc.api.v1.CampaignResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.CampaignResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.CampaignResponse}\n */\nproto.grpc.api.v1.CampaignResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new campaign_pb.Campaign;\n reader.readMessage(value,campaign_pb.Campaign.deserializeBinaryFromReader);\n msg.setCampaign(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.CampaignResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.CampaignResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.CampaignResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CampaignResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getCampaign();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n campaign_pb.Campaign.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Campaign campaign = 1;\n * @return {?proto.grpc.api.v1.Campaign}\n */\nproto.grpc.api.v1.CampaignResponse.prototype.getCampaign = function() {\n return /** @type{?proto.grpc.api.v1.Campaign} */ (\n jspb.Message.getWrapperField(this, campaign_pb.Campaign, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Campaign|undefined} value\n * @return {!proto.grpc.api.v1.CampaignResponse} returns this\n*/\nproto.grpc.api.v1.CampaignResponse.prototype.setCampaign = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.CampaignResponse} returns this\n */\nproto.grpc.api.v1.CampaignResponse.prototype.clearCampaign = function() {\n return this.setCampaign(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.CampaignResponse.prototype.hasCampaign = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\n\n\n\nif (jspb.Message.GENERATE_TO_OBJECT) {\n/**\n * Creates an object representation of this proto.\n * Field names that are reserved in JavaScript and will be renamed to pb_name.\n * Optional fields that are not set will be set to undefined.\n * To access a reserved field use, foo.pb_, eg, foo.pb_default.\n * For the list of reserved names please see:\n * net/proto2/compiler/js/internal/generator.cc#kKeyword.\n * @param {boolean=} opt_includeInstance Deprecated. whether to include the\n * JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @return {!Object}\n */\nproto.grpc.api.v1.CurrencyResponse.prototype.toObject = function(opt_includeInstance) {\n return proto.grpc.api.v1.CurrencyResponse.toObject(opt_includeInstance, this);\n};\n\n\n/**\n * Static version of the {@see toObject} method.\n * @param {boolean|undefined} includeInstance Deprecated. Whether to include\n * the JSPB instance for transitional soy proto support:\n * http://goto/soy-param-migration\n * @param {!proto.grpc.api.v1.CurrencyResponse} msg The msg instance to transform.\n * @return {!Object}\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CurrencyResponse.toObject = function(includeInstance, msg) {\n var f, obj = {\n currency: (f = msg.getCurrency()) && currency_pb.Currency.toObject(includeInstance, f)\n };\n\n if (includeInstance) {\n obj.$jspbMessageInstance = msg;\n }\n return obj;\n};\n}\n\n\n/**\n * Deserializes binary data (in protobuf wire format).\n * @param {jspb.ByteSource} bytes The bytes to deserialize.\n * @return {!proto.grpc.api.v1.CurrencyResponse}\n */\nproto.grpc.api.v1.CurrencyResponse.deserializeBinary = function(bytes) {\n var reader = new jspb.BinaryReader(bytes);\n var msg = new proto.grpc.api.v1.CurrencyResponse;\n return proto.grpc.api.v1.CurrencyResponse.deserializeBinaryFromReader(msg, reader);\n};\n\n\n/**\n * Deserializes binary data (in protobuf wire format) from the\n * given reader into the given message object.\n * @param {!proto.grpc.api.v1.CurrencyResponse} msg The message object to deserialize into.\n * @param {!jspb.BinaryReader} reader The BinaryReader to use.\n * @return {!proto.grpc.api.v1.CurrencyResponse}\n */\nproto.grpc.api.v1.CurrencyResponse.deserializeBinaryFromReader = function(msg, reader) {\n while (reader.nextField()) {\n if (reader.isEndGroup()) {\n break;\n }\n var field = reader.getFieldNumber();\n switch (field) {\n case 1:\n var value = new currency_pb.Currency;\n reader.readMessage(value,currency_pb.Currency.deserializeBinaryFromReader);\n msg.setCurrency(value);\n break;\n default:\n reader.skipField();\n break;\n }\n }\n return msg;\n};\n\n\n/**\n * Serializes the message to binary data (in protobuf wire format).\n * @return {!Uint8Array}\n */\nproto.grpc.api.v1.CurrencyResponse.prototype.serializeBinary = function() {\n var writer = new jspb.BinaryWriter();\n proto.grpc.api.v1.CurrencyResponse.serializeBinaryToWriter(this, writer);\n return writer.getResultBuffer();\n};\n\n\n/**\n * Serializes the given message to binary data (in protobuf wire\n * format), writing to the given BinaryWriter.\n * @param {!proto.grpc.api.v1.CurrencyResponse} message\n * @param {!jspb.BinaryWriter} writer\n * @suppress {unusedLocalVariables} f is only used for nested messages\n */\nproto.grpc.api.v1.CurrencyResponse.serializeBinaryToWriter = function(message, writer) {\n var f = undefined;\n f = message.getCurrency();\n if (f != null) {\n writer.writeMessage(\n 1,\n f,\n currency_pb.Currency.serializeBinaryToWriter\n );\n }\n};\n\n\n/**\n * optional Currency currency = 1;\n * @return {?proto.grpc.api.v1.Currency}\n */\nproto.grpc.api.v1.CurrencyResponse.prototype.getCurrency = function() {\n return /** @type{?proto.grpc.api.v1.Currency} */ (\n jspb.Message.getWrapperField(this, currency_pb.Currency, 1));\n};\n\n\n/**\n * @param {?proto.grpc.api.v1.Currency|undefined} value\n * @return {!proto.grpc.api.v1.CurrencyResponse} returns this\n*/\nproto.grpc.api.v1.CurrencyResponse.prototype.setCurrency = function(value) {\n return jspb.Message.setWrapperField(this, 1, value);\n};\n\n\n/**\n * Clears the message field making it undefined.\n * @return {!proto.grpc.api.v1.CurrencyResponse} returns this\n */\nproto.grpc.api.v1.CurrencyResponse.prototype.clearCurrency = function() {\n return this.setCurrency(undefined);\n};\n\n\n/**\n * Returns whether this field is set.\n * @return {boolean}\n */\nproto.grpc.api.v1.CurrencyResponse.prototype.hasCurrency = function() {\n return jspb.Message.getField(this, 1) != null;\n};\n\n\ngoog.object.extend(exports, proto.grpc.api.v1);\n","var map = {\n\t\"./cs.json\": 83571,\n\t\"./de.json\": 95894,\n\t\"./en.json\": 44174,\n\t\"./fr.json\": 94605,\n\t\"./it.json\": 83672,\n\t\"./nl.json\": 34943,\n\t\"./sk.json\": 10347,\n\t\"./xx.json\": 16777\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5432;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"122\":\"b65f85f5\",\"227\":\"94e0c369\",\"366\":\"04a9dddb\",\"386\":\"7f6a5a3b\",\"416\":\"8f61860c\",\"529\":\"51e207d0\",\"575\":\"414299c5\",\"601\":\"3ffc3636\",\"614\":\"596d6691\",\"649\":\"3f4a1b3c\",\"716\":\"1f8a008d\",\"725\":\"695dce83\",\"752\":\"fefa631e\",\"779\":\"8e9ec212\",\"800\":\"8be71014\",\"829\":\"dc949366\",\"853\":\"1cdb61d6\",\"889\":\"51e2ea66\",\"892\":\"ebac8a80\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"122\":\"44be6bec\",\"227\":\"6ac0b791\",\"386\":\"28d39185\",\"529\":\"6ac0b791\",\"704\":\"2e982660\",\"716\":\"2cab58d3\",\"829\":\"4c052821\",\"892\":\"4bf3b5cc\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"gstpln-webapp:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","var createStylesheet = function(chunkId, fullhref, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tdocument.head.appendChild(linkTag);\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"122\":1,\"227\":1,\"386\":1,\"529\":1,\"704\":1,\"716\":1,\"829\":1,\"892\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(704 != chunkId) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkgstpln_webapp\"] = self[\"webpackChunkgstpln_webapp\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(9134); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["_setup","attrs","on","_vm","staticClass","click","staticRenderFns","_c","_defineComponent","__name","props","unlocked","type","Boolean","required","disabled","default","plans","Array","emits","setup","__props","emit","vuetify","useVuetify","upgradeDialog","ref","value","badgeColor","computed","theme","dark","__sfc","PaywallUpgradeDialog","component","render","$event","disableEsc","model","dialog","$$v","expression","key","index","confirmColor","_v","Vue","extend","name","mixins","DialogClosable","title","String","message","undefined","confirmTitle","cancelTitle","hideCancel","data","methods","onClick","ret","this","$emit","scopedSlots","_u","rules","errors","label","updateValue","callback","staticStyle","items","watch","val","$refs","save","UploadDialogMode","fn","replaceImage","deleteImage","close","mode","proxy","Object","imageSrc","filenamePrefix","helpLabel","deleteConfirmationLabel","stencilProps","maxWidth","Number","cropperRef","previewImage","fileRecords","length","UPLOAD_FORM","PREVIEW","URL","createObjectURL","file","EDIT","async","canvas","getResult","shouldResize","width","fileName","uuidv4","getBlob","ratio","height","rCanvas","document","createElement","pica","Pica","resize","then","result","toBlob","Promise","resolve","blob","File","showConfirmationDialog","i18n","tc","action","Cropper","_s","preventDefault","onClickOk","inputValue","onClickCancel","labelTitle","textfieldPrefix","textfieldSuffix","noAutoClose","debounceValidation","visible","setTimeout","tfElm","inputField","input","focus","created","reset","observer","form","isValid","validate","fullscreen","cardHeight","cardMaxHeight","class","cardClass","containerClass","fluid","_t","scrollable","persistent","contentClass","scrollContent","scrollToBottom","scrollDiv","scrollTop","scrollHeight","_self","_setupProxy","$t","isVIP","upgradePlanAction","router","useRouter","push","store","state","settings","account","proStatus","BillingInfoSubscriptionStatus","VIP","map","p","toUpperCase","slice","join","i18nn","t","errorMessages","_e","linkInputDialog","editorToggleLink","linkUrl","editor","richtextAllowed","isBoldMark","chain","toggleBold","run","isItalicMark","toggleItalic","setHorizontalRule","isHyperlink","view","selection","empty","unsetLink","dense","hint","Handlebar","Node","create","group","atom","inline","selectable","renderHTML","node","HTMLAttributes","mergeAttributes","addAttributes","id","parseHTML","elm","getAttribute","attributes","innerText","tag","addCommands","insertHandlebar","options","commands","insertContent","className","textWithHandlebarsToHtml","text","handlebars","newtext","forEach","handlebar","r","replace","RegExp","htmlToTextWithHandlebars","handlebarsById","startsWith","substring","endsWith","regexp","match","replacement","get","__default__","defineComponent","components","EditorContent","InputDialog","encodeLinebreak","$vuetify","isActive","$tstore","messageCenter","getters","getHTML","setContent","Editor","extensions","StarterKit","Link","content","onUpdate","newContent","replaceAll","beforeDestroy","destroy","href","toggleLink","target","__injectCSSVars__","_useCssVars","__setup__","ctx","validationMode","style","breadcrumbs","HelpHeader","gutter","gutterMd","gutterLg","subtitle","hideDivider","gutterXl","color","showSwatches","swatches","menu","currency","Currency","EUR","currencies","billingCurrencies","currencyText","billingCurrencyText","currenciesItems","curr","mounted","setCurrency","clearable","fmtDateStringFromDate8601","formatFn","Function","hideDetails","outlined","minDate","date","dateStringFromDate8601","formattedDate","d","dateFromDateString8601","clear","formattedCurrentDateRange","pickerDate","dateChanged","breakpoint","xsOnly","shiftPeriod","formattedEditedDateRange","previousPeriod","formattedEditedPreviousDateRange","previousPeriodDisabled","contentStyle","disableFuture","beginDate","dateFlooredToDate","Date","endDate","previousBeginDate","previousEndDate","period","DateRangePeriod","Today","debouncedApply","periods","DateRangePeriodsPast","DateRangePeriods","createPickerItems","selectPeriod","Custom","editedDateRange","dateRange","firstDayOfWeek","$localized","formattedDateRange","main","previous","editedError","reportsValidateDateRange","debounce","apply","periodFromDateRangeDates","areDatesEqual","recalculatePreviousPeriod","periodChanged","begin","end","dateRangeDatesFromPeriod","shiftedDateRangeFromPeriodAndRange","previousPeriodChanged","isVisible","_l","status","editReservationClicked","x","y","reservation","isBlock","nextStatusItemsBlock","nextStatusItems","endDateTextForCheckedOut","endDateForCheckedOut","endDateText","hourMinText","$i18n","toString","mapActions","setReservationStatus","cloneModel","setStatus","ok","performSaveAction","sendReservation","setReservationFromContextStatusChange","tryEditReservation","$router","isCheckedOutStatus","s","ReservationStatus","CheckedOut","colorForStatus","contextMenu","refInFor","editable","isTabItemSelected","zoom","removeTable","tableSize","onRightClick","stopPropagation","selected","shape","tabItem","fill","strokeColor","seats","partySize","titleFontSize","titleStrokeColor","titleYpos","titleColor","partySizeYpos","changeTableShape","fillColor","w","h","tableSeats","n","seat","i","origin","isOverflow","occupied","e","overflow","horizontal","path","orientation","FloorplanShapeOverflow","FloorplanShapeSeat","eSeatCount","wSeatCount","TableSeatType","HEADSEAT","Math","ceil","eSeatToDraw","min","wSeatToDraw","seatSpacing","seatSpacingWidth","ts","occupiedSeats","seatsForE","seatsForW","rotation","seatsToDraw","anglePerSeat","FloorplanShapeTableRect","FloorplanShapeTableRound","TimeTableStripedFill","reservations","upcomingReservations","overbooked","no","find","upcomingReservation","holdTabItems","CheckedIn","Seated","NonConfirmed","partySizeTitle","nameText","subtitleYpos","start","dateBegin","dateEnd","subtitleColor","subtitleStrokeColor","darkenColor","posX","posY","a","ROUNDED","SQUARED","trunc","select","rotateCcw","rotateCw","c","FP_CANVAS_SNAP","ti","originTopScroll","originLeftScroll","destroyInteract","initInteract","interact","draggable","modifiers","snap","targets","offset","range","Infinity","relativePoints","inertia","autoScroll","container","getElementById","margin","distance","interval","speed","evt","canvasWrapperElm","scrollLeft","tabItemId","parseInt","dataset","diffY","diffX","moveTabItem","tabId","modelChanged","unset","sizeForTabItem","rotateTable","angle","placeTable","maxCanvasRect","getBoundingClientRect","findIndex","size","bbox","BoundingBox","x1","y1","x2","isOverlappingTables","some","tSize","tBbox","overlaps","FloorplanTable","StatusContextMenu","EditableCanvas","tabItems","ongoingReservations","selectedTabItemIds","overbookedTabItemIds","isLoaded","canvasOffset","marginLeft","marginTop","abs","isSetUp","selectedTabItemId","tabItemVue","tabItemEl","$el","scrollIntoViewIfNeeded","beforeMount","tabItemSelected","reservationsForTable","deselect","includes","isTabItemOverbooked","upcomingReservationsForTable","showContextMenu","clientX","clientY","backgroundColor","textColor","compact","isFlagged","unreadReservations","nativeOn","isStarred","searchResult","notesText","partySizeText","contact","domProps","colorStatusButton","slotData","statuses","Reservation","reservationStatusItems","itemClicked","StatusSelectionMenu","ReservationChips","HideableBadge","waitlistListOrder","overbookedTabItems","Set","isWalkin","bookingType","ReservationType","Walkin","waitlistBadgeContent","waitlistBadgeVisible","WaitingList","Planned","Confirmed","Cancelled","Spam","Deleted","NoShow","tablesHtmlText","has","statusButtonOutlined","statusChanged","markAsRead","isUnread","reservationEntries","getTime","fullDateText","dateReservations","GuestListRow","GuestListHeaderRow","Map","showUnread","entries","from","sortedEntries","sort","o1","o2","selectedChange","reservationId","res","values","flat","retVal","forceGuestsRoute","service","noLabel","noService","noAttachments","contrastForColor","collapsable","rawName","accountName","accounts","switcherActive","accountInitials","accName","split","runes","miniVariant","newAccountName","newUserName","userName","username","userAccounts","accountColor","currentAccountId","scrollIntoView","behavior","scrollMode","block","changeAccount","performAction","stopAutoUpdates","dispatch","token","go","startTodayUpdatesAsync","startAutoUpdates","AccountAvatar","isSearching","query","GuestResultsList","resultsByDate","SearchType","AllReservations","$set","dateOfBirthChange","contactTitleItems","ContactTitle","Mr","Ms","Fam","o","UnsavedGuard","contactTitles","newc","Contact","oldc","confirmationDialogVisible","isReservationEditing","editReservation","countries","sortedCountries","languages","sortedLocales","totalVisitsText","reservationCount","isChanged","isModelEqualToModel","isReservationsAllowed","defaultCC","country","code","countryCode","changedEmail","$nextTick","email","removeInvisibleUnicodeCharacters","trim","formatBirthday","dateText","dateOfBirth","cancel","MessageType","ValidationObserver","isEmail","emailSubject","updateMessage","field","Message","constructor","EMAIL","messageType","feedbackId","subject","body","sendBcc","toGrpcModel","pbm","setMessageType","SENDGRID","SMS","setReservationId","setFeedbackId","setSubject","setBody","setSendBcc","messageTypes","directMessageFields","emailBody","smsBody","isSMS","smsMessagesCount","count","characterPerMessage","messages","contentForField","localized","notes","isContentForField","sendMessage","toast","error","performDispatchAction","success","RichTextEditor","slot","newEmployeeName","rememberMe","employees","lastEmployee","rememberEmployee","setErrors","employee","remember","Employee","employeeId","employeeName","setLastEmployee","handleUnsavedChanges","reservationsByDate","mapByDateIndex","toSortedMapByDateIndex","mapByDate","mapByDateIndexToMapByDate","shouldClose","deleteConfirmText","reason","otherReason","deleteFieldRef","deleteEnabled","onMounted","deleteAccount","reasonIndex","reasonText","sidebarToggle","zoomLevels","scale","FloorplanTablePreview","placeTabItem","FloorplanCanvas","FloorplanEditSidebar","tab","oldTabItems","sidebarVisible","tabsById","fpCanvas","confirmCancel","entities","helpText","currentRoute","add","directives","changeOrder","item","DataTableInputDialog","tables","oldTables","headers","align","sortable","event","oldIndex","newIndex","movedItem","splice","table","suggestedTabItem","remove","filter","bankTransferAllowed","bankTransferOnTop","PaymentMethodBankTransfer","showControls","paymentMethodInfos","pmi","cardInfo","PaymentMethodCard","paymentMethod","ID","active","sepaDebitInfo","PaymentMethodSepaDebit","PaymentMethodUnknown","PaymentMethodLayout","logoSrc","showInactiveChip","showDelete","paymentMethodInfo","exp","number","generatedFromType","showPaymentMethodMandate","pm","paymentMethodID","mandate","url","newWin","window","open","stepChanged","stepNo","completedSteps","stepKeys","PaymentWizardStepKey","paymentDetailsPrices","NewPaymentMethod","vatInfo","addressLine1","embedded","params","validateVatNumberFormat","args","isNew","isBillingCustomer","BillingConvert","customerToJson","stateInfo","isEUCountry","isOriginCountry","loadCustomer","toDTOCustomer","billingCustomer","billingGuessedCountry","streetAddress","city","postalCode","countryState","autofillCountry","httpClient","getCountryCode","submit","customer","vatNumber","locale","hideSuccess","addStep","inject","paymentWizardStep","complete","PaymentWizardMode","BillingDetails","submitText","submitAction","invoiceInfo","InvoiceDetails","disallowPaymentMethods","PaymentMethods","paymentMethodsKey","paymentInvoice","clientSecret","activatePaymentMethod","disableActivatePaymentMethod","hideActivatePaymentMethod","disallowNewPaymentMethod","allowedPaymentMethodTypes","paymentMethodChanged","paymentMethodActivateChanged","PAYMENT_METHOD_BANK_TRANSFER","NEW_PAYMENT_METHOD","PaymentContextMode","stripe","getStripe","publishableKey","process","loadStripe","createPaymentElements","invoice","Error","boxShadow","border","appearanceLight","variables","colorPrimary","colorPrimaryText","borderRadius","appearanceDark","colorBackground","colorTextSecondary","appearance","darkTheme","elemenOptionsMode","amount","amountRemaining","paymentMethodTypes","pmt","PaymentMethodType","CustomerBalance","elemenOptionsClientSecret","paymentElemenOptions","layout","defaultCollapsed","defaultValues","billingDetails","address","line1","line2","postal_code","elements","confirmSetup","paymentMethodIDOrElements","activate","invoiceID","payment_method","submitError","location","lastIndexOf","return_url","response","redirect","confirmParams","handlePaymentResponse","confirmPayment","paymentIntent","setupIntent","decline_code","declineCode","paymentError","intentErrorText","intent","next_action","offSession","setup_future_usage","preparePayment","SubscriptionModify","SubscriptionCreate","priceID","previewInvoice","invoiceOnly","Prices","priceIDs","Invoice","isOffSession","usage","IntentUsage","OffSession","balance","cashBalance","cashBalances","cb","amountDue","effectiveAmountDue","submitPayment","setupNewPaymentMethod","methodAlreadyActivated","paymentMethodType","deactivatePaymentMethod","idempotencyKey","prorationDate","subscription","InvoiceStatus","Draft","invoiceOpen","IntentStatus","RequiresPaymentMethod","RequiresConfirmation","RequiresAction","None","nextAction","displayIBANBankTransferInstructions","bankTransfer","intentID","cancelPayment","shortDescription","discountInfo","di","ii","discountInfos","iidi","discount","subscriptionPriceInfo","toReversed","amountNumber","priceInfo","price","product","ProductType","Subscription","intervalPeriodically","reduce","odi","discountAmount","PaymentMethodsList","disallowNew","hideActivate","disableActivate","incactive","disallowInactive","handleError","actionShowError","paymentElement","getElement","unmount","paymentElementFocused","activityIndicator","show","hide","mount","oldValue","defaultActivate","hideTitle","newElements","newPaymentMethodType","customerBalanceStatus","CustomerBalanceStatus","Granted","otherThanBankTransferAllowed","activePaymentMethodID","invoceMode","paymentMethodsVisible","newPaymentMethodVisible","disallowNewInactive","forceActivate","newPaymentMethodText","paymentMethods","billingPaymentMethods","infos","apmi","ci","immediate","onNewComplete","finishedSetupIntent","PaymentElement","prices","expose","paymentContext","info","getInvoiceInfo","createContext","SubscriptionStatus","Ended","context","flatMap","prepare","warningText","finishedInvoice","payText","futureProrationDate","PaymentDetails","submitColor","prepareAction","cancelAction","visibleInfos","subscriptionInfo","intentInfo","bankTransferInfo","mandateInfo","PaymentResultSuccessLayout","icon","iconColor","slots","footerPath","useSlots","invoiceState","processing","paid","footeri18nPath","subscriptionState","paidUntil","awaitingPayment","sentInvoice","creditorInfo","showSetup","lastError","getIntentInfo","isIntentError","bankTransferInstructionsInfo","billingSubscription","Active","getSubscriptionInfo","reference","PaymentSuccess","PaymentSuccessIntent","PaymentSuccessInvoice","PaymentSuccessSubscription","PaymentSuccessBankTransferInstructions","PaymentSuccessMandateInstructions","finishedIntent","paymentDetailsPrice","paymentDetailsPreviewInvoice","paymentDetailsInvoice","paymentSuccessInvoice","paymentSuccessIntent","paymentMethodsClientSecret","steps","disabledSteps","editableSteps","step","stepMap","set","sk","provide","dsk","handleResult","nextTick","submitStep","PlanSelector","createSteps","keys","Result","onBeforeMount","selectedIntervalIndex","PlanDetailsCard","selectPrice","currencySelectorEnabled","showDiscount","isLowest","features","currentPlan","integerPart","amt","fractionPart","featuresPro","featuresBusiness","featuresUltimate","featuresArray","selectedCurrency","currentSubscriptionLevel","subscriptionTierLevel","currentSubscriptionUpgradableLevel","subscriptionUpgradableLevel","products","billingSubscriptionPriceProducts","intervals","sortedSubscriptionIntervals","selectedInterval","at","productPriceWithInterval","intervalCount","priceInfos","selectedPrice","dinfos","pi","every","offerExpiresDescription","validUntilOrDurationDescription","billingGuessedCurrency","hideSubmit","CurrencyPicker","patternId","patternTransform","fillLight","fillDark","webpackContext","req","webpackContextResolve","__webpack_require__","module","exports","PriceInterval","CollectionMethod","PaymentMethodCardBrand","DiscountDuration","toProducts","json","cast","JSON","parse","toCustomer","customerToDto","vatNumberStatus","stringify","uncast","toPaymentMethod","toSetupIntent","toPaymentIntent","toInvoice","toInvoices","toPaymentMethods","toSMSProduct","smsProductToJson","toCountry","invalidValue","typ","jsonToJSProps","jsonToJS","js","jsToJSONProps","jsToJSON","transform","getProps","transformPrimitive","transformUnion","typs","l","_","transformEnum","cases","indexOf","transformArray","isArray","el","transformDate","isNaN","valueOf","transformObject","additional","getOwnPropertyNames","prop","v","prototype","hasOwnProperty","call","typeMap","unionMembers","arrayItems","u","Product","Price","Customer","CashBalance","SubscriptionInfo","SMSProduct","InvoiceLine","SetupIntent","PaymentIntent","Mandate","PaymentMethod","Card","SepaDebit","Country","Discount","PaymentIntentNextAction","NextActionDisplayIBANBankTransferInstructions","ApiErrorCode","ApiError","fromError","metadata","errorCode","grpc_offset","apiError","unknown","isLogoutError","LogoutErrors","token_not_valid","token_not_found_or_expired_or_already_registered","app_update_required","registered","rvalue","permission_denied","giftcard_not_found","giftcard_expired","giftcard_balance_insufficient","giftcard_redeem_error","campaign_manager_allowance_reached","boolFromValue","defaultValue","numberFromValue","MessengerConvert","toMessangerResponse","toMessageRulesResponse","messangerResponseToJson","IDTOMessageRulesResponse","IDTOMessengerResponse","IDTOMessageRulesUpdate","IDTOMessengerUpdate","IDTOCampaign","IDTOEventType","IDTOHandlebar","IDTOMessageRule","IDTOMessageTemplate","IDTOMessageType","AllocationsConvert","toAllocationsResponse","allocationsResponseToJson","IDTOAllocationsResponse","IDTOAllocationsUpdate","IDTOAllocation","Convert","toGuestStats","guestStatsToJson","m","GuestStats","TimeStats","CampaignFilterConvert","toCampaignFilterResponse","campaignFilterResponseToJson","IDTOCampaignFilterResponse","IDTOCampaignFilterUpdate","IDTOCampaignFilter","BillingConnectConvert","toAccount","accountToDto","accountToJson","Account","baseURL","baseURLv2","HttpClient","axios","responseType","missing_token_error","timeStamp","timestamp","unixTimeStamp","unixTimestamp","FCMToken","fcmToken","clientConfigV2","config","transformResponse","VUE_APP_DEBUG_AUTH_HEADER","accountID","Authorization","warning","handleToken","no_token_error","openAccount","password","firstname","companyName","phone","promoCode","getCountry","keyToOpen","region","timeZone","timeZoneID","client","post","register","registrationCode","login","logout","processUpdateResponse","smile","isFullUpdate","retryCount","full_update_needed","getUpdates","update","singleReservationDate","sendSingleEntity","entity","sendAccount","sendAccountSettings","accountSettings","sendUser","user","sendDurationRule","rule","sendDateAndTime","dateAndTime","sendDayNote","dayNote","sendListEntities","fname","extraParams","sendTabs","tabs","sendTabItems","sendEmployees","sendTagNotes","tags","sendLabels","labels","sendServices","services","sendOpeningHours","openingHours","changePassword","newPassword","resetPassword","search","q","suggestTables","dtBegin","dtEnd","sendFloorplan","loadAllocations","allocationsResponse","allocations","sendAllocations","loadMessageCenter","messengerResponse","no_updates","sendMessageRule","messageRulesResponse","installApp","app","loadCampaignFilter","capaignFilterResponse","sendCampaignFilter","campaignFilters","getStats","dateIndexFrom","dateIndexTo","clientV2","guestsStats","DashboardConvert","uploadFile","accessKey","onProgressFnc","apiFile","lastModified","formData","FormData","append","onUploadProgress","imageUrl","uploadImageFile","uploadAttachmentFile","validateEmailAddress","emailAddress","valid","requestExport","exportType","exportPeriod","exportFormat","Blob","getBilling","createdAfter","invoicesLimit","limit","responses","invoices","smsProduct","getProducts","sendCustomerRequest","getCustomer","createCustomer","updateCustomer","createSubscription","updateSubscription","cancelSubscription","deleteSubscription","getInvoices","previewSubscription","getPaymentMethod","method","getPaymentMethods","addPaymentMethod","paymentIntentID","deletePaymentMethod","finishPaymentMethod","timeout","createPaymentInvoice","finalizePaymentInvoice","confirm","finishPaymentInvoice","deletePaymentInvoice","getInvoice","getSMSProduct","createSMSProduct","updateSMSProduct","sendConnectAccountRequest","getConnectAccount","createConnectAccount","GstplnAppCategory","GstplnApp","vue","hasMenuItem","appConfigRoute","configComponentImportFnc","configBeforeInstall","routeConfig","categories","allowedCountries","disallowedCountries","install","installRoute","loadConfigComponent","loadRouteComponent","installed","uninstall","uninstallRoute","rc","titleKey","addRoute","route","meta","apiName","description","configComponentLoaded","configComponent","routeComponentsLoaded","f","confirmAction","DlgConst","ConfirmationDialog","propsData","$on","$destroy","mountEl","appendChild","$mount","fullSwatchPalette","useLocalized","getCurrentInstance","useToast","$toast","y2","MIN_DATA_COUNT","MAX_DATA_COUNT","grpcStreamOp","ModelType","fromGrpcRespParams","onData","onError","dataCount","maxDataCount","reject","resolved","promise","rej","handleData","fromGrpcResponse","waitForEnd","handleEnd","stream","grpcStreamOpAll","allData","grpcUnaryOp","servis","unaryCallback","resp","StatusCode","OK","grpcUnaryOpEx","transformFnc","fncParams","Campaign","subdomain","getCampaign","fromGrpcModel","getId","getSubdomain","setId","setSubdomain","App","ApiApp","getApp","getName","isInstalled","getIsinstalled","getParams","setName","setIsinstalled","setParams","hasDecimals","getCurrency","getCode","getHasdecimals","setCode","setHasdecimals","GiftcardRecipient","getEmail","dtDelivery","getDtDelivery","giftcardMessage","getGiftcardMessage","Giftcard","getGiftcard","getTitle","getDescription","backgroundImageUrl","getBackgroundImageUrl","serviceId","getServiceId","getLocale","getBalance","getStatus","getColor","dtCreate","getDtCreate","dtUpdate","getDtUpdate","getPrice","showLogo","getShowLogo","recipient","getRecipient","getContact","transactions","getTransactionsList","GiftcardTransaction","isExpired","getIsExpired","dtExpiry","dateFromDateString","getDtExpiryMil","issuedByAccountId","getIssuedByAccountId","issuedByAccountName","getIssuedByAccountName","GrpcClient","pbcms","pbds","pbrs","pbss","pbhs","pbms","pbas","pbsms","pbgcs","pbfbs","pbmcms","pbhts","authorization","listContacts","pbcm","contactService","createContact","setContact","setEmployee","updateContact","createContactFilter","cf","setContactfilter","ContactFilter","contactFilterService","getContactFilter","updateContactFilter","deleteContactFilter","listContactFilters","selectedContacts","ids","setIdsList","contactManagerService","mergeContacts","deleteContacts","searchContacts","setFilter","getAvailability","dateIndex","pbd","setDate","DashboardAvailability","dashboardService","getTabsReports","beginDateIndex","endDateIndex","binType","pbr","setBeginDate","setEndDate","setBinType","reportsService","getMsgsReports","getDefaultCampaign","EmptyRequest","settingsService","testDefaultCampaign","pbs","setCampaign","updateDefaultCampaign","getReservationHistory","pbh","setReservationid","historyService","records","getRecordsList","hr","getJson","getMessagesList","setMessage","messageService","appId","pba","setApp","appsService","updateApp","listReservationServices","ReservationService","serviceManagerService","reorderReservationServices","ReorderRequest","rentity","ReorderEntity","setOrder","order","addEntities","updateReservationService","pbsm","setService","listCurrencies","getGiftcardProduct","GiftcardProduct","giftcardsService","updateGiftcardProduct","pbgc","setProduct","listGiftcardTransactions","types","setTypesList","codes","setGiftcardCodesList","setGiftcardCode","setGiftcardId","redeemGiftcard","setAmount","setBalance","setIdempotencyKey","listFeedbacks","since","pbfb","setSinceDtCreate","unixFromDate","Feedback","feedbackService","getFeedback","getFeedbackReservation","getFeedbackSettings","FeedbackSettings","setFeedbackSettings","setSettings","updateMarketingCampaign","campaign","pbmcm","setMarketingCampaign","MarketingCampaign","marketingCampaignManagerService","listMarketingCampaigns","setShowArchived","showArchived","listAllContactFilters","getMarketingCampaign","sendMarketingCampaign","omitCampaignCheck","setOmitCampaignCheck","archiveMarketingCampaign","setIsAchived","isArchived","deleteMarketingCampaign","previewContactFilterForMarketingCampaign","contactFilter","setContactFilterData","getAudienceStats","toObject","testMarketingCampaign","recipients","setRecipientsList","getMarketingCampaignSettings","MarketingCampaignSettings","createHtmlTemplate","et","pbht","setHtmltemplate","HtmlTemplate","htmlTemplateService","getHtmlTemplate","updateHtmlTemplate","deleteHtmlTemplate","listHtmlTemplates","listAllHtmlTemplates","isDefault","compare","getContactfilter","getOrder","getData","isDeleted","getIsdeleted","setData","setIsdeleted","FilterDescriptor","FilterRuleDescriptor","StringFilterRuleDescriptor","FilterFieldType","FilterNumberRuleTypes","BoolFilterRuleDescriptor","DateFilterRuleDescriptor","DateNoYear","FilterDateRuleTypes","NumberFilterRuleDescriptor","FilterCathegoricalRuleTypes","FilterSpecialCategoryOperandType","Language","FilterConvert","toJson","Filter","newFilterFrom3Rules","defineRules","narrowRules","excludeRules","FilterRule","newFilterFieldRule","FilterRuleType","IsEmpty","Equal","FilterDateOperand","ThisMonth","PreviousMonth","IsNotEmpty","AllContactFilter","EmptyContactFilter","RecentContactFilter","EmailNotEmptyContactFilter","ContactSortType","ApiContact","getPhone","getAddress","getPostalcode","getCity","getState","getCompanyname","getReservationcount","getIsvip","preferredLanguage","getPreferredlanguage","getBirthday","newsletterSubscription","getNewslettersubscription","getNotes","lastVisit","dateFromDateTimeString","getLastvisit","visitCount","getVisitcount","countryByCode","updated","getDtupdate","setPhone","setEmail","setAddress","setCity","setState","setCompanyname","setReservationcount","setIsvip","setPreferredlanguage","setBirthday","dateStringFromDate","setNewslettersubscription","setNotes","setTitle","setCountry","compareName","strcmp","compareCompany","compareEmail","comparePhone","compareLastVisit","compareVisitCount","compareFnc","Name","CompanyName","Email","Phone","LastVisit","VisitCount","compareFncDesc","fnc","normalizedEmail","toLowerCase","normalizedPhone","dialCode","DashboardAvailabilityFlag","DashboardLimitReason","dateFromDateAndTimeIndex","getDate","weekday","getWeekday","isAvailable","getIsavailable","toChartData","tabids","slotLimits","lastps","maxps","prmap","srs","sr","tr","si","slotFromMinutes","minutesFromTimeString","pr","prs","xs","xe","chartFlag","YES","MIXED","NO_ALLOCATIONS","daySlotCount","DAY_TIME_SLOTS_COUNT","MORNING_TIME_SLOTS_COUNT","osa","results","flag","NO_CLOSED","lr","lrp","ld","ps","nsa","delete","il","ilr","imin","iminr","imax","imaxr","NO_LIMITED","ri","ril","rilr","sl","slr","getSettings","enabled","getEnabled","noRuleError","getNoRuleError","hasUseBreakdown","useBreakdown","getUseBreakdown","setEnabled","setUseBreakdown","FeedbackSortType","getReservationId","foodRating","getFoodRating","serviceRating","getServiceRating","ambienceRating","getAmbienceRating","overallRating","getOverallRating","comments","getComments","isPublic","getIsPublic","reservationDtBegin","getReservationDtBegin","contactName","getContactName","contactReservationCount","getContactReservationCount","replied","getDtRepliedAt","getReservation","cmpnumf","attrf","cmpstrf","Food","Service","Ambience","Overall","Created","Replied","Visited","Comments","getProduct","bgUrl","getIsActive","bgColor","expireMonths","getExpirePeriodInMonths","footerText","getFooterText","amounts","getPricesList","stripeAccountExist","getStripeAccountExist","stripeAccountActive","getStripeAccountActive","setDescription","setBackgroundImageUrl","setServiceId","setLocale","setIsActive","setColor","setExpirePeriodInMonths","setShowLogo","setFooterText","setPricesList","clone","copy","assign","GiftcardTransactionType","getTransaction","getType","NONE","SALE","Sale","FEE","Fee","REDEEM","Redeem","EXPIRATION","Expiration","getAmount","giftcardId","getGiftcardId","giftcardCode","getGiftcardCode","giftcardIssuedByAccountId","getGiftcardIssuedByAccountId","giftcardIssuedByAccountName","getGiftcardIssuedByAccountName","executedByAccountId","getExecutedByAccountId","executedByAccountName","getExecutedByAccountName","defaultGiftcardTransactionFilter","dateRangeFromPeriod","Last90Days","areGiftcardTransactionFiltersSame","getHtmltemplate","design","html","preview","plaintext","getDesign","getPreview","getIsDeleted","getIsDefault","setDesign","setHtml","setPlaintext","setIsDeleted","areHtmlTemplatesSame","mcs","allowedMessages","getAllowedMessages","createdMessages","getCreatedMessages","dateQuotaReset","getDtQuotaReset","MarketingCampaignStatus","dtSend","canArchive","Sent","Abandoned","Failure","canDelete","recipientCount","audienceStats","matching","publishStats","sent","Scheduled","Processing","mc","getSubject","previewText","getPreviewText","marketingCampaignManagerContactFilters","getContactFilterId","templateName","getTemplateName","templateDesign","getTemplateDesign","templateHtml","getTemplateHtml","templatePlaintext","getTemplatePlaintext","templatePreview","getTemplatePreview","getDtSend","dtProcessed","getDtProcessed","getIsArchived","astats","all","getAll","getMatching","pstats","getPublishStats","scheduled","getScheduled","getSent","getProcessing","abandoned","getAbandoned","failure","getFailure","dstats","getDeliveryStats","deliveryStats","processed","getProcessed","dropped","getDropped","delivered","getDelivered","deferred","getDeferred","bounce","getBounce","blocked","getBlocked","estats","getEngagementStats","engagementStats","getOpen","unique_open","getUniqueOpen","getClick","unique_click","getUniqueClick","spam","getSpam","unsubscribe","getUnsubscribe","group_unsubscribe","getGroupUnsubscribe","group_resubscribe","getGroupResubscribe","widget_open","getWidgetOpen","unique_widget_open","getUniqueWidgetOpen","widget_reservation","getWidgetReservation","unique_widget_reservation","getUniqueWidgetReservation","widget_unsubscribe","getWidgetUnsubscribe","cstats","getConversionStats","conversionStats","imminent","getImminent","unique_all","getUniqueAll","unique_imminent","getUniqueImminent","guests_all","getGuestsAll","guests_imminent","getGuestsImminent","setPreviewText","setContactFilterId","setContactFilterName","setTemplateName","setTemplateDesign","setTemplateHtml","setTemplatePlaintext","d1","d2","defaultMarketingCampaignFilter","areMarketingCampaignFiltersSame","startIndex","predicate","sortedIndex","equal","low","high","mid","floor","mergeSortedModelEntities","newEntities","addedEntities","deleteModelEntities","deleteEntities","newEntitiesById","toMapById","deletedEntities","addToCountMap","keyf","removeFromCountMap","ApiService","getService","getTagsList","getImageUrl","localStartDate","localDateAsInUnixUTCYMD","getStartDate","localEndDate","getEndDate","localStartTime","getStartTime","localEndTime","getEndTime","minPartySize","getMinPartySize","maxPartySize","getMaxPartySize","weekDays","getWeekDayList","duration","getDuration","isPricePerPerson","getIsPricePerPerson","isPromoted","getIsPromoted","isRequired","getIsRequired","minMinutesInAdvance","getMinMinutesInAdvance","minMinutesToModify","getMinMinutesToModify","maxParallelBookings","getMaxParallelBookings","isDeposit","getIsDeposit","getTabId","NaN","currenciesById","getCurrencyId","blackouts","getBlackoutsList","bo","blackoutStartDate","getBlackoutStartDate","blackoutEndDate","getBlackoutEndDate","setTagsList","setImageUrl","setStartDate","unixUTCAsInLocalDateYMD","setStartTime","setEndTime","setMinPartySize","setMaxPartySize","setWeekDayList","setTabId","setDuration","setPrice","setIsPricePerPerson","setCurrencyId","setIsPromoted","setIsRequired","setMinMinutesInAdvance","setMinMinutesToModify","setMaxParallelBookings","setIsDeposit","setBlackoutsList","b","setBlackoutStartDate","setBlackoutEndDate","Attachment","ApiAttachment","getUrl","ApiReservation","reservationTypeValues","ReservationSource","Online","User","reservationStatusValues","getPartySize","getDtBegin","getDtEnd","fixedEnding","getEndFixed","getHoldTabItems","reservationType","getReservationType","getReservationCode","getReservationStatus","getIsStarred","getIsFlagged","getIsUnread","dateCreated","dateEdited","servicesById","employeeCreated","employeesById","getEmployeeIdCreate","employeeEdited","getEmployeeIdLastEdit","reservationCampaign","getReservationCampaign","getReservationLabel","labelsByText","Label","labelText","reservedTabItems","getTabItemsIdsList","tabItemsById","getNoteText","paymentInfo","getPaymentInfo","fixedPaymentInfo","attachments","getAttachmentsList","rating","getRating","updateBookingType","updateSlotsAndTimes","validEmailAddressRegex","requestEmailAddress","requestResolvers","validateEmailAddressDebounced","rr","leading","trailing","max","min_value","max_value","alpha_num","integer","numeric","goodPasswordRx","formattedTgt","hourMinTextFrom24hr","_target_","vals","descriptor","filterDescriptor","validateRule","cc","isValidPhoneNumber","phoneRegex","stripRegex","stripped","conv","num","parseFloat","minVal","maxVal","div","predMin","predMax","currencyString","ReorderTable","bind","vnode","handle","animation","child","Sortable","getElementsByTagName","snackbarColor","snackbar","updateAvailable","deferredEvent","addEventListener","navigator","userAgent","installPrompt","prompt","outcome","userChoice","isInstallable","instance","CampaignFilterApp","super","Extensions","ExportApp","StripeApp","Payments","StripeConnectApp","DyflexisApp","Integrations","SimpleCampaignApp","GiftcardsApp","AnnoncerApp","BookDinnersApp","BookingPartners","createApps","apps","BooqPlannerApp","initializeApps","activityCounter","useActivityIndicator","showActivity","overlay","$root","useBrowserHacks","applyBrowserhackScrollbar","scrollbarWidth","offsetWidth","clientWidth","documentElement","classList","removeChild","browserhackClass","isSafariOS","useToastInit","snackbarText","snackbarIcon","snackbarTextColor","snackbarTimeout","showSuccess","messge","showError","showSuccessDelayed","successDelayed","usePwaUpdate","refreshing","registration","refreshApp","waiting","postMessage","reload","updateBecameAvailable","detail","serviceWorker","once","visibilityState","getRegistration","console","usePwaInstall","BrowserhackScrollbar","defineAsyncComponent","timeZoneCountry","tzid","timeZoneId","sortedTimezones","tz","setLanguage","updateDocumentLanguage","lang","updateDocumentTheme","updatePageTitle","appTitle","version","createComment","billingDialogClosed","billingDialogOpened","welcomeClosed","subWarningBarInfo","languagePrompt","routeMeta","unreadReservationsCount","toggleCalendar","miniMenu","drawer","reservationDrawerTransitionEnd","reservationDrawerStateChanged","reservationDrawer","billingDialogVisible","logoutConfirmation","hasDatePicker","calendarDrawer","welcomeFabClosed","isTouchDevice","newReservation","isSameDay","fabType","inlineHelpAllowed","fab","matchMedia","matches","isDateSameIgnoringTime","walkin","link","GMenuItem","MainMenuGroup","settingsGroup","settingItems","subitem","labelBadge","appsGroup","appsMenuItems","pwaDebug","supportedLanguages","colorForIcon","badge","to","tooltip","filledIcon","$route","menuItems","clicked","mobileVariant","smAndDown","unreadReservationsBadge","unread","billingPageAllowed","isBillingPageAllowed","settingsMenuItems","reportsItems","reportsMenuItems","gstplnApps","menuApps","ai","appMenuItems","subitems","collapseMenu","settingsClicked","appsClicked","changeLanguage","tryCloseEditReservation","AccountSwitcher","reservationMenuItems","newsletterMenuItems","wsURL","HeartBeatInterval","WatchDogInterval","MinHeartBeatInterval","websocket","heartBeatTimer","Timer","sendHeardBeat","lastHeartBeat","watchDogTimer","reconnect","lastWatchDog","session","isLoggedIn","rootGetters","pushUpdateRequestTimestamp","debouncedUpdate","maxWait","debouncedConnect","connect","disconnect","ws","WebsocketBuilder","withProtocols","withBackoff","ExponentialBackoff","onOpen","ev","wsOpen","onClose","wsClose","onMessage","wsMessage","onRetry","build","schedule","isWebsocketOpened","underlyingWebsocket","readyState","OPEN","dateByAddingSeconds","notification","now","diff","dateDiff","next","send","StepType","doStepAction","fabVisible","menuExpanded","CONTACT_INFO","TABLES","OPENING_HOURS","BRAND","hostedFormUrl","hostedWidgetURL","isStep","useSetupContact","useSetupTables","useSetupBranding","useSetupHours","unfinishedSteps","acc","cur","handler","isOnlySimpleHours","openingHoursInWeekdaysByTimeIndex","FLOORPLAN","ONLINE_RESERVATION","toggleMenu","skipSteps","skip","ValidatedTextField","olda","unwatch","locales","timezones","newValue","setupTables","setupFloorplan","tabItemsDialog","TablesDialog","FloorplanEditDialog","floorplanDialog","oldTabs","closeDialogs","closeURLEditor","widgetSubdomain","openURLEditor","urlEditorVisible","widgetDomain","WIDGET_DOMAIN","widgetDocumentationURL","nc","testCampaign","lazy","loadCampaign","saveURLEditor","updateCampaign","grpcClient","already_exists","subdomain_already_exists","invalid_argument","subdomain_invalid","slotStep","bounds","changeSlot","bookingIntervalChanged","bookingInterval","oldHours","bookingIntervals","simpleHoursInWeekdays","days","weekdays","hours","is30minInterval","day","weekdayNumber","weekdayNumberFromDateDay","sh","SimpleHour","isOpen","beginSlot","endSlot","hoursFromSimpleHoursInWeekdays","hourMaps","openingHoursToSimpleHoursInWeekdays","guessIntervalFromHoursInWeekdays","changeOpen","roundedSimpleHoursInWeekdays","timeFromSlot","niceTimeTextFromSlot","WelcomeStepWelcome","WelcomeStepAccount","WelcomeStepTables","WelcomeStepOnlineAlt","WelcomeStepHours","stepLabels","finishStep","nextStep","stepComponent","navKey","smsWarningBarInfo","paymentWarningBarInfo","warningBarInfo","switchToNewLanguage","storage","setLanguagePromptDisplayed","top","left","screenActive","activeUser","privacyScreenTimeout","timer","activityHandler","clearTimeout","events","onBeforeUnmount","removeEventListener","firebaseAppCfg","apiKey","authDomain","projectId","storageBucket","messagingSenderId","fcmVapidKey","requestFcmNotificationPermission","firebase","initializeApp","messaging","getMessaging","getToken","vapidKey","serviceWorkerRegistration","currentToken","commit","catch","err","HistoryItemType","HistoryItemSubtype","HistoryItemFlag","installBar","getPwaBarDismissCount","dismissBar","setPwaBarDismissCount","SearchList","MainFloatingButton","MainMenu","Welcome","OnboardingSteps","BillingWarningBar","LanguageSwitchDialog","PrivacyScreenView","PwaInstallBar","MainFooter","BillingDialog","mdAndUp","lgAndUp","reservationDrawerDismissAllowed","manualCalendarState","searchMenu","showFooter","welcomeOpened","privacyLeftOffset","miniMenuAllowed","billingSettingsVisible","isBillingLanding","billingCanClose","welcomeVisible","isBillingAppAccess","useSetupWelcome","welcomeFabVisible","isChangedReservation","isChangedEditReservation","reservationEditorActive","isEditReservation","isToday","isThisYear","dayMonthText","shortDayMonthText","shortWeekdayYearText","unreadReservationsByDate","updateError","isRegistered","isBillingWarning","isBillingSubWarning","isBillingSMSWarning","isBillingPaymentWarning","$store","billingInfo","isBillingAllowed","authRequired","public","scrollY","position","scrollTo","initialLoad","getLanguagePromptDisplayed","browserLang","otherLangs","getLanguage","obj","calendarDateSelected","nextDay","previousDay","toggleDarkMode","showHelp","helpUrl","docsLocale","extraDocsLocales","createWalkin","fileUploadDialog","contactDialogVisible","employeeDialogVisible","contactMessageDialog","discardChanges","dismissChanges","warningsDialogVisible","confirmationMessage","cancelBookingConfirmationVisible","clearContactConfirmationVisible","clearContact","duplicateBookingDialogVisible","duplicateBookingDate","formatReservationDate","duplicateBookingDateChanged","reservationTypeItems","offsetY","saveBooking","partySizeChanged","timeBeginChanged","updateName","updateEmail","contactMessageDialogEnabled","addTagNote","attachmentsPanels","colorForItem","originator","change","textParams","valueText","timeStringFromDate","simpleCheck","phr","fieldKey","textKey","ivals","pkey","bookingTypeCheck","defaultBookingType","party_size","Block","idCheck","excludeFields","boolCheck","tabItemsIdCheck","old","reserved_tab_item_ids","tid","added","removed","attachmentCheck","reservation_attachments","att","attachment_url","attachment_name","modifiedNames","addedNames","removedNames","changes","dateCheck","dateValueText","diffCheck","Diff","diffs","cleanupSemantic","htmlValue","prettyHtml","changeChecks","contact_id","contact_name","contact_email","contact_phone","tab_id","tab_name","service_id","service_name","dt_begin","dt_end","end_fixed","hold_tab_items","reservation_note","reservation_status","reservation_label","campaign_id","reservation_campaign","is_starred","is_flagged","reserved_tab_items","booking_type","historyRecordToItem","chf","fields","ch","ef","isCreated","dt_update","dt_create","subtype","Modified","employee_edit","campaign_name","Record","flags","shortDateTimeText","timeIndex","hidden","historyMessageToItem","mr","Other","SmsMessageTypes","message_type","EmailMessageTypes","subTextKey","is_undeliverable","MessageLogStatus","Send","SendX","subItems","eventNameKey","event_type","eventNameText","eventName","event_name","StatusSend","Blocked","StatusBlocked","Bounce","StatusFailure","Invalid","StatusInvalid","Delivered","StatusDelivered","StatusUndeliverable","statusKey","statusText","historyToItems","history","historyRecords","campaignName","keepItems","employee_edit_id","ritems","hi","TypeOnline","historyMessages","mitems","mi","iorder","siorder","i1","i2","SubmitBookingType","historyIncomplete","iconForItem","StatusBounced","upload","onBeforeDelete","fileRecord","k","filenames","urls","fr","serviceManagerAccessKey","futureUrls","uploads","searchName","contactBlur","searchPhone","contactPhone","searchEmail","contactEmail","ContactAutocompleteRow","focusName","searchContactChanged","hasContact","nameContacts","isNameSearch","nameSearch","ContactName","contacts","phoneContacts","isPhoneSearch","phoneSearch","ContactPhone","emailContacts","isEmailSearch","emailSearch","isSearchingForName","isSearchingForPhone","isSearchingForEmail","searchNameWasEmpty","nameValidationProvider","syncValue","searchContactNameChanged","phoneValidationProvider","searchContactPhoneChanged","emailValidationProvider","searchContactEmailChanged","deep","syncContactWithFields","contactChanged","partySizes","maxHeight","otherPartySizeButtonText","holdTabItemsVisible","holdTabItemsChanged","autoTabItemsDisabled","autoTabItems","tabItemsDisabled","toggleCheckbox","isUnavailable","selectedTabItems","selectAll","arguments","selectAllChecked","lastTabItems","reservationTabItems","unavailableTabItems","reservationUnavailableTabItems","tableAllocationDisabled","tableAllocation","autoTabItemsVisible","updateAutoTabItems","checkboxComparator","lhs","rhs","autoTabItemsChanged","tagNotes","updateStatus","EmployeeDialog","PartySizePicker","TabItemMenu","ContactDetailsDialog","TagNoteMenu","ContactAutocomplete","FileUploadDialog","ReservationResultsDialog","ReservationHistoryDialog","ReservationStatusSelect","ReservationItemSelect","ContactMessageDialog","unsavedGuard","submitBookingType","none","showHistoryDialogVisible","contactWithReservations","contactReservations","reservationResultsDialog","extraErrorMessages","reservationTypes","Waitlist","emptyReservation","oldr","originalReservation","isSuggestedTabItems","isErrors","isReservationErrors","validationErrors","suggestedTabItems","isSuggestingTabItems","tabItemsText","timeBegin","timeEnd","employeeNameIsNeeded","smartDateText","reservationValidationErrors","reservationAvailabilityValidationErrors","ReservationErrorType","TabItemsOverbooked","AvailabilityNoAllocation","TabItemsMissing","reservationOverbookedTabItems","unsavedChangesDialogVisible","isConfirmCloseEditReservation","isReservationMessageAllowed","oldl","storeDate","reservationTypeChanged","keyDown","keyCode","time","timeEndChanged","tabChanged","Warnings","reservationErrorTexts","PartySizeErrors","DateErrors","TabErrors","TabItemsErrors","DateBeginErrors","DateEndErrors","NameErrors","PhoneErrors","EmailErrors","extraMessages","cancelBooking","duplicateBooking","duplicate","submitSaveOrDuplicate","warninigs","sendEditReservation","closeEditReservation","confirmCloseEditReservation","fieldVue","note","tagValue","dotText","selectionStart","startPos","endPos","selectionEnd","duplicateBookingCanceled","deleteAttachment","attachmentsUploaded","showContactReservations","showHistory","updatePhone","clearContactClicked","use","VCalendar","componentPrefix","light","fromPage","month","year","currentDate","dates","startDate","dateByAddingMonths","nowDate","isDateBeforeDate","dateByAddingDays","dateSlots","dateSlotsByDateIndex","dateIndexFromDate","confirmedDates","ds","confirmedCount","nonConfirmedDates","nonConfirmedCount","closedDates","isOpenFromHours","datesAndTimesById","dot","highlight","fillMode","calendar","picker","move","goToDate","dayclick","activeElement","blur","goToToday","previousMonths","nextMonths","updateFromPage","page","keydown","displayTime","allowedMinutes","appendOuterIcon","typedTime","enteringHours","minutes","typedMin","normalizeMinutesToAllowed","round15","padStart","round","selectingHour","setPeriod","VCol","cols","VDivider","filled","hasBottomBar","$attrs","tooltipTitle","buttonClass","plugin","VueLocalizedFormatter","defineProperties","activity","ActivityIndicatorPlugin","$activity","ToastPlugin","ready","cached","updatefound","dispatchEvent","CustomEvent","offline","productionTip","MainView","ReservationView","CalendarView","ValidationProvider","TimePickerField","DatePickerField","ColorPickerField","MenuItem","ModalDialog","SectionHeader","RowFormDivider","FilledButton","ToolbarContainer","TooltipIconButton","SettingsForm","SettingsGroup","VueFileAgent","directive","VueLocalizedFormatterPlugin","defineProperty","setupValidation","useSettingsBreadcrumbs","currentPageTitle","pieces","part","exact","beforeRouteLeave","preventNav","$once","returnValue","BillingInfoSMSStatus","accountId","website","facebook","instagram","yelp","youtube","tripadvisor","tiktok","userId","isPremium","upgradeIsNeeded","defaultAccessKey","logoLink","proSubscriptionExpirationDate","dateFromUTCDateTimeSecondsString","bProSubscriptionExpirationDate","proTrialExpirationDate","bProTrialExpirationDate","bSubscriptionInfo","smsStatus","smsBalance","stripeDepositFee","toDto","dto","subscriptionExpirationDate","proData","fromData","fixDate","DefaultSplitLunchDinnerTime","DefaultSendThankYouAtSpecificTime","DefaultSendReminderAtSpecificTime","DefaultDefaultMaxPartySize","DefaultDefaultMinPartySize","DefaultMinMinutesInAdvance","DefaultMinMinutesToModify","DefaultMaxTimeForToday","DefaultMaxDaysInAdvance","DefaultAllocateWithEmptySeats","DefaultMaxGuestsPerTime","DefaultMaxReservationsPerTime","AccountSetting","accountSettingsId","allocateWithEmptySeats","autoDarkMode","autoDarkModeEnd","autoDarkModeStart","defaultMaxPartySize","defaultMinPartySize","markAlwaysAsRead","markCancelledAsRead","maxDaysInAdvance","defaultMaxGuestsPerTime","defaultMaxReservationsPerTime","maxTimeForToday","sendReminderAtSpecificTime","sendReminderDaysInAdvance","sendThankYouAtSpecificTime","sendThankYouDaysAfter","showLunchDinner","splitLunchDinnerTime","reserveWithGoogle","enableFeedback","widgetUseFeedbackBreakdown","enableWaitlist","enableReconfirmation","Allocation","allocationId","allocationOrder","isForbidden","Tab","allocatedTabItems","tableIdsString","isError","tableNos","AppStoreApp","appName","showAsMenuItem","attachmentName","attachmentUrl","campaignId","CampaignFilter","dateFrom","stringOrder","dateTimeStringFromDate","dateTo","filterId","dtFrom","dtTo","campaignsById","compareCampaignFilter","contactId","contactNotes","refresh","dialCodeByCountry","dial_code","DateAndTime","HourSlot","dateAndTimeId","iIsOpen","minimumPartySize","maximumPartySize","maximumGuests","maximumReservations","fixedEndingInMinutes","fromDateAndSlot","dt","timeIndexFromSlot","dateTimeIndexFromDateAndTimeIndex","dateTimeIndex","timeStringFromDateTimeIndex","DayNote","dayNoteId","dayNoteDate","dayNoteText","dayNoteColor","dtLastEdit","DurationRule","durationRuleId","partySizeFrom","partySizeTo","timeFrom","timeTo","additionalDuration","timeNumberFrom","timeNumberFromText","timeNumberTo","employeeOrder","isSpecial","profileId","sprintf","isCustom","clearParams","labelId","labelOrder","labelColor","MessageRule","messageRuleId","isInactive","sendAtSpecificTime","sendDaysInAdvance","sendDaysAfter","eventType","eventTypesById","eventTypeId","messageTypesById","messageTypeId","templates","toModelEntities","MessageTemplate","messageTemplates","stringOrderField","messageTemplateId","messageLayoutId","messageDescription","MessageTypeChannel","channel","OTHER","isBuiltinRuleDefault","OpeningHour","timeIndexFromTime","fromDateString","timeString","moment","substr","fromWeekdayAndSlot","wd","format","minutesFromTimeIndex","capDateEnd","reservationCode","reservationStatus","dtEdit","employeeIdCreate","employeeIdEdit","reservationLabel","waitlistFlexibleBefore","waitlistFlexibleAfter","zstr","minutesFromDate","slotBegin","slotEnd","bookingCap","dateByAddingMinutes","capTimeEnd","capSlotEnd","updateEndDateForReservation","durationRules","endDateForReservation","tabText","tablesText","waitlistFlexibleStartText","timeIndexFromMinutes","forgetTabItems","hasTabItem","addTabItem","removeTabItem","setTabItems","tti","bh","bm","getDateHoursMinutes","setDateHoursMinutes","eh","em","serviceOrder","tabOrder","tabName","tabDuration","minDuration","tabDurationMinimum","capacity","tabCapacity","usingWeekdaysAndTimes","TabItem","TAB_ITEM_DUMMY_ID","itemId","itemOrder","itemNo","isDummy","lastNo","nextNo","uniqueMinId","TagNote","tagNoteId","tagNoteText","tagNoteOrder","TimeSlot","dateAndTimeIndex","openingHour","updateHourSlots","ohOpen","shOpen","hour","allowSignIn","allowReservations","allowAvailability","allowDayNotes","allowSettings","allowBilling","sharedUser","toMapByField","toMapByFieldFirst","groupByField","mergeModelEntities","oldEntities","mergedEntities","apiEntities","undeletedApiEntities","modelEntities","mapping","validEntities","idField","compareFn","orderedEntities","mergeToModelEntities","newValidEntities","toSaveModelItems","newItems","oldItems","newById","deleteItems","oldById","modifyItems","deletedDtos","modifiedDtos","countryLocaleMap","AD","AE","AF","AG","AI","AL","AM","AO","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HN","HR","HT","HU","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","XK","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SS","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","ZA","ZM","ZW","CS","AN","getLocaleTraits","localeName","loc","fdow","localeData","formattedTime","hc","df","updateLangauge","constructedLocale","supportedLocales","localeForCountry","traits","closestEngLocale","engLocales","VueI18n","extraLocales","langsAndLocales","loadLocaleMessages","require","supported","matched","savedLanguage","defaultDateFormats","full","long","short","shorter","minute","second","dateTimeFormats","pluralizationRules","choice","choicesLength","cs","fallbackLocale","numberFormats","en","silentTranslationWarn","silentFallbackWarn","opts","formatted","set24HrFormat","is24hr","timeFormat","hourMinFormat","hourMinSecFormat","firstDayWk","wkDays","weekdaysShort","capitalize","concat","longWeekdays","stringFromDate","timeParts","setHours","setMinutes","shortDateText","veryShortDateText","veryShortDayMonthText","dateTimeText","numericDateTimeText","monthText","monthYearText","hourMinSecText","durationFromSeconds","seconds","minStr","hourStr","dayStr","getHourMinFormat","getTimeFormat","daysBetween","daysBetweenDates","wkday","hideDecimal","Intl","NumberFormat","minimumFractionDigits","maximumFractionDigits","currencySymbolInfo","parts","formatToParts","currencyIdx","integerIdx","prefix","symbol","guestplan","themes","primary","secondary","accent","brand","booq","Vuetify","nl","de","it","current","icons","iconfont","IconGuestplan","IconWalkOutline","PlaceholderType","smAndUp","stats","guests","showLunchDinnerStats","lunch","dinner","filterVisible","hasFilter","showNoReservation","showClearFilter","clearFilter","applyAllFilter","reservationsByTime","edited","waitingListOrderForReservation","orderForWaitingReservation","overbookedTabItemsForReservation","dayOverbookedTabItemsForReservationId","reservationsById","changeFilterTimeFrom","filterTimeTo","changeFilterTimeTo","changeFilterSection","changeFilterStatus","filterTimeFrom","filterSection","filterStatus","ClosableDialog","filterStatusItems","reservationStatusAllItems","statusItems","filterSectionItems","divider","filterTimeFromDirty","isFilterFrom","filterTimeToDirty","isFilterTo","filterStatusDirty","isFilterStatus","filterSectionDirty","isFilterTab","resetFilter","applyFilter","isStatus","filterText","Valid","waitlistDialog","selectedDayNote","dayNoteDialog","closeDayNoteDialog","deleteDayNoteConfirmation","waitlistClicked","dayNotes","barColor","onEdit","onDelete","dayDayNotes","dn","printVisible","daynoteVisible","waitlistPopout","waitlistReservations","dayReservations","removeDayNote","editDayNote","addDayNote","saveSelectedDayNote","removeSelectedDayNote","ReservationForExport","dateEndText","dayStats","showDayStats","reservationsBySlot","toSortedMapBySlot","reservationsByTimeMap","mapBySlotToMapByTimeText","print","totalGuests","rendered","Mustache","templateGuests","noReservations","printedOn","noName","ends","printDebug","VUE_APP_DEBUG_EXPORT_PRINT_DIALOG","reportDate","printDate","write","DayNoteBar","DayNoteEditDialog","MainToolbar","debouncePreviousDay","debounceNextDay","createNewReservation","buttonTitle","GuestList","ReservationsToolbar","GuestFilter","GuestFilterCompactBar","GuestListPlaceholder","KeyboardControl","filteredReservationsNoBlocks","filteredReservationsNoBlocksByTimeText","isFilter","showNotOpen","placeholderType","NOT_OPEN","NO_RESERVATION","CLEAR_FILTER","showAllFilter","ALL_FILTER","isDateLoaded","isDayOpen","isDayReservationNoBlock","isDayValidForTodayReservationNoBlock","isDayFilteredReservationNoBlock","NOT_LOADED","filterBtnClicked","applyWaitlistFilter","tabFilterChanged","dayParts","dayPart","timetableEntities","timeSlots","gotoDayPart","relocateConfirmation","allocateNoTabItemsReservations","rss","tis","lastr","nti","tmReservations","notiReservations","cr","notiReservationsByTabs","tmTabs","nrs","ctab","tiid","headerMousedown","rowMouseUp","touchMoved","touchEnd","closedSlot","rowHeight","slotWidth","createPopover","hidePopover","rowSpanForEvent","timelineEnd","moveEventElement","scroll","webkitTransform","setAttribute","resetEventElement","linkedReservations","querySelectorAll","resid","dragMoveListener","contains","originalScroll","dx","dy","rect","getClientRects","elementsAtPoint","elementsFromPoint","timeRow","tabid","tabitemid","moveDrag","dragEndListener","dnd","cancelDrag","parentTabItemId","parentElement","parentY","endDrag","buttons","currentTarget","resId","canDrag","pointerEvents","holdDuration","styleCursor","hold","lockAxis","restrictRect","restriction","contentElm","getElementsByClassName","bottom","right","listeners","destroyed","hideErrors","isDragDrop","startDragDrop","moveDragDrop","isDragDropValid","dragDropReservation","crs","dragDropConflictReservations","fcrs","endDragDrop","minTouchHoldDuration","minStartDragTimeout","asideWidth","headerHeight","scrollLockZoneSize","temporaryReservationId","unwatchEditReservation","temporaryReservation","longTouchCb","temporaryCtx","lastSlot","originTabItemId","originTabId","originTimeSlot","currentTabItemId","currentTimeSlot","scrollLock","tabItemIndexById","updateTemporaryHandler","cancelEdit","forceScroll","direction","scrollableElm","clearTemporaryReservation","beginIndex","endIndex","tabItemIndex","incr","updateTemporaryReservation","onStart","timeSlot","slotForPosition","onDrag","isTemporaryReservation","overElem","scrollElm","xOffset","yOffset","onEnd","editTemporaryReservation","rowMouseDown","rowMouseMoved","mouseLeave","touchStart","targetTouches","changedTouches","hourMinFromSlot","isWalkIn","isWalkInReservation","mdAndDown","timelineStart","isScrolling","currentScrollOffset","scrollableContainer","offsetForDayPart","currentTimeOffset","getTimetablePosition","scrollListener","setTimetablePosition","element","increment","currentTime","easeInOutQuad","animateScroll","hourOffset","dayPartForOffset","currentHour","dPart","mouseMove","isNarrowWidth","gapColor","gapOpacity","bgOpacity","bgPathGap","bgPath","partysizeBgPath","rowSpan","root","gapBorderColor","hoverTimeout","startTime","minutesFromStart","asMinutes","offsetFromStart","endTime","reservationGap","isMovementBlocked","hasTabItems","colorForLabel","capLimit","cp","mouseEnter","hideIndicator","refreshInterval","initialRefreshTimeout","updatePosition","clearInterval","setInterval","scheduleHidePopover","mouseIsOver","mouseInsidePopover","hasExtraInfo","hideTimeout","boundary","tt","createPopper","placement","strategy","padding","altAxis","baseSlotWidth","TimeTableEvent","TimeTableClosedSlot","TimeTableIndicator","TimeTableTooltip","DayPartMixin","DragDrop","DragNewReservation","closedSlots","headerDragX","headerDragScrollOrigin","reservationsInt","$data","reservationsByTabItem","tidx","dayOverbookedFlagsMap","dayOverbookedFlagsForReservationId","prev","scrollValue","prevSlot","rid","eventClicked","isOngoing","isOngoingReservation","tStartIndex","headerMouseup","screenX","headerMouseover","tableAllocationCTAVisible","dialogVisible","userSettingsAllowed","TimeTableGrid","TableAllocationCTA","filterVisibleReq","relocateConfirmationMessage","reservationsToRelocate","heightOverrideForFooter","tablesTab","heightForAppBar","tabFilter","dayValidReservationsAndBlocks","closed","bci","eci","dayTimeSlots","firstSlot","findLastIndex","DEFAULT_TIMETABLE_START_TIME","DEFAULT_TIMETABLE_END_TIME","clamp","TIME_SLOTS_COUNT","setTimetableZoom","getTimetableZoom","applySafariFix","isSafari","showRelocateConfirmation","relocateReservations","relocate","scrollToNow","updateGotoDayPart","canvasMaximized","timeSlotMax","timeSlotMin","timeTrackingClick","selectedResId","FloorplanViewSidebar","timeTracking","timeTrackingInterval","editedReservationId","floorplanTab","ongoingReservationsForTabItem","upcomingReservationsForTabItem","durationForReservation","minutesFromSlot","ovebooked","rs","timeSlotText","timeTrackerUpdate","nowSlot","slotForFirstReservation","setFloorplanZoom","getFloorplanZoom","reservationSelected","timeSlotChanged","handleTimeTracker","sorted","language","resetPasswordHintConfirmed","showPromoAlert","promoAlertMessage","fullName","passwordLength","indicatorColor","passwordStrengthScore","strengthIndex","strength","colors","passwordStrength","strengths","securePasswordRx","PasswordTextField","businessName","showPromo","promoOk","ae","promo_code_not_valid","promo_code_already_exists","activationCode","resend","focusOtp","RegisterAccountStep","VerifyAccountStep","isSignup","signup","ResetPasswordDialog","CreateAccountDialog","LoginGuestplan","LoginBooq","failedAttempts","createAccount","resetPasswordHint","createAccountVisible","setDarkAllowed","user_not_found","uploadDialog","updateLogoLink","deleteAccountDialog","placeholder","useStoreWatch","resetCb","__","useUnsavedGuard","onBeforeRouteLeave","observerRef","timezoneItems","tzItems","prevKey","header","acctSettings","image","copyAccountId","ImageUploadDialog","DeleteAccountDialog","ImagePreviewField","useMinutesInAdvanceItems","useSeatingTimeItems","useTimeInAdvanceItems","partysizes","useBookingCaps","useLanguages","emptySeatItems","useDaysInAdvanceItems","AccountSettings","seatItems","edit","SettingsBreadcrumbs","computedHeaders","users","deleteConfirmation","changePasswordDialog","resetConfirmation","confirmPassword","ChangePasswordDialog","oldu","privacyItems","$tc","userOptions","back","filterFieldExpanded","isSettingsAllowed","selectFilter","markDuplicities","showMergeContacts","showDeleteContactsConfirmation","updateSearchTerm","saveContact","mergeDialogVisible","editedContactFilter","filterDialogVisible","saveContactFilter","reservationsByContactDialog","editedContact","itemsPerPageOptions","sortBy","sortDesc","noSort","updateSortDesc","editContact","updatePage","newContactReservation","listContactReservations","deleteFilterConfirmation","isNewFilter","cfrownoop","cfrow","addRule","ruleModified","hasAdvancedRule","advancedVisibleToggle","matchContactCount","$scopedSlots","ruleField","ruleFieldChanged","ruleTypesInfo","ruleType","ruleOperand","lastRow","ruleDescriptor","ruleFieldsInfo","allowedFieldsInfo","allowedRuleTypesInfo","isOperand","isFilterFieldNoOperandType","ruleOperandsInfo","specialCategoryOperandsType","allowedOperandsInfo","ruleOperandType","fieldtype","FilterFieldRule","fieldType","operand","ruleDescriptors","rd","allowedRuleTypes","validateOperand","ruleTypeChanged","ruleOperandChanged","ContactsFilterValueRow","lastid","editValidation","changed","fromJson","get3Rules","removeRule","deleteFilter","allOptionsSame","fieldValue","fd","sideSelected","displayedFieldDescriptors","side","readOnly","selectedSide","ContactsMergeRow","sideSelection","fieldDescriptors","descriptors","allOptionsMerged","filters","allowEdit","canEditFilter","defaultFilters","customFilters","contactFilters","noDevider","clickAppendOuter","nameWithCopyText","copyText","trimmed","iscopy","copyNumber","ContactsFilterDialog","ContactsMergeDialog","ContactFilterSelect","employeeDialogSubmitAction","filterable","guestbookVisibleContacts","guestbook","isDefaultFilter","DefaultFilter","colorsForEmail","mails","guestbookDuplicatedMails","colorsForPhone","phones","guestbookDuplicatedPhones","contactEmailColors","contactPhoneColors","itemCount","guestbookVisibleCount","searchTerm","fullTextFilterQuery","loadStoreModule","GuestbookStore","load","unloadStoreModule","isGuestbookLoaded","streamLoad","showEmpoyeeDialogIfNeeded","newContact","rethrow","contact_upcomming_last_visit","sc","addFilter","duplicateFilter","editFilter","resetSelection","changedContactFilter","pagination","pageSize","itemsPerPage","pageStart","updateSortBy","sortType","desc","isChangedChange","nameField","extraColumn","nameHeaderText","noDataText","storeEntities","onSave","onAdd","onIsChangedChange","extraColumnItem","SettingsList","isSelectable","dayIndex","daySlots","profiles","slotButtonMouseDown","profile","resetMenuItemSelected","newProfileDialog","partySizeList","hs","endingTimeList","HourSlotProfile","profilesFromHours","hourSlots","hashCode","imul","charCodeAt","colorsForProfiles","profileForColorIndex","colorsByProfileId","colorIndex","remainingProfiles","remainingColors","pop","HourSlotMenuItemType","CLOSED","CUSTOM","CUSTOM_NEW","RESET","AllocationsDialogMode","HourSlotsProfileDialog","enableReset","gridWidth","activeSlotIndex","hourSlot","itemsPerRow","titleForClosedSlot","slotNr","colorForProfileId","colorForSlot","btn","activator","onResize","gridRow","openMenu","slotIndex","openMenuItemSelected","closedMenuItemSelected","customMenuItemSelected","customProfileSelected","menuProfileSelected","textColorForSlot","HourSlotsGrid","SettingsButtonBlock","ohmap","oh","profilesById","profileSelected","hourIndex","IDOrHourSlot","copyFrom","newHours","dayHours","newDayHours","customHoursConfirmation","isSimple","newSectionDialog","newSectionName","sections","oldSections","showNewSection","section","newSection","allocationsDialog","tablesDialog","DurationRulesDialog","durationRulesDialog","minSeatingTimes","editRuleDialog","allDay","additionalTimeItems","durationRule","oldRule","guestsItems","changeAllDay","toAllDay","EditDurationRuleDialog","editedRule","oldRules","closeEditRuleDialog","deleteRule","confirmRuleDelete","done","guestsDialog","closeTableCombinationDialog","dtClassForItem","editAllocations","deleteDialogVisible","forbid","showDeleteDialog","oldAllocations","selectedItemId","allowReorder","DisallowedAllocations","allowForbid","allocationsByPartySize","AllowedAllocations","allowedAllocationsByPartySize","disallowedAllocationsByPartySize","tabItemSelection","partySizeItems","partySizeSelection","groupedTabItems","displayValue","counterVal","selectedSeats","groupTabItems","TabItemAllocationRow","allok","allocation","GuestsAllocationsDialog","TableCombinationDialog","addTableCombinationDialog","guestsPartySize","isErrorWithinAllocations","allocationsCount","useRoute","oldSection","seatingTimes","bookingCaps","st","mst","resetAllocations","AllocationsStore","allocationsDialogMode","showAllocationsDialog","showAllowedAllocationsDialog","showDisallowedAllocationsDialog","floorplan","maxCapacity","maxCapacitySlider","updateCapacity","onlineValue","changeSeatingTime","TabAllocationsDialog","isWaitlistFeatureAllowed","qrcodeDescription","qrcode","createCode","logo","src","QrcodeWithLogos","toCanvas","dataUrl","toDataURL","saveImage","toImage","downloadImage","internalValue","qrDialogVisible","maxOnlineCapacity","maxGuestsItems","maxReservationsItems","as","WebsiteQrDialog","PaywallSwitch","cellClass","colorForServiceStatus","labelForServiceStatus","serviceManagertServices","isServiceManagerLoaded","saveItem","duplicateService","deleteService","svc","ServiceManagerStore","uploadImage","limitPeriodSet","ServiceManagerConditionalPanel","blackoutSetChanged","blackoutEndDateChange","stripeConfigured","stripeConnectConfigured","fixedDurationSet","limitParallelSet","priceChanged","amtToCents","centsToAmt","convertedAmount","serviceLoaded","oldService","weekDaysChanged","saved","widgetLink","serviceCode","fmtShortDate","clearButton","fixedDurationSetChanged","limitPeriodChanged","blackoutSet","blackoutStartDateChange","blackout","delayedBlur","addBlackoutRow","deleteBlackoutRow","idx","serviceManager","configureStripe","stripeSet","stripeSetChanged","limitParallelSetChanged","limitParallelItems","dup","refObserver","copySvcCode","AmountField","saveButtonVisible","alertInfo","senderHint","autorenewEnabled","balanceNotificationEnabled","balanceNotificationThreshold","selectedPriceID","paymentWizardVisible","closePaymentWizard","option","replaceMerge","themeDark","themeLight","PieChart","TitleComponent","TooltipComponent","LegendComponent","VChart","isDark","createDataset","grid","xAxis","axisLabel","yAxis","series","showBackground","itemStyle","cursor","labelLayout","moveOverlap","SmsBalanceChart","PaymentWizard","sender","autorenewPriceID","paymentWizardPrices","purchaseButtonTitle","isInitialOrder","pricesInfo","isBillingSMSPageFull","latestInvoiceStatus","billingSMSPriceProduct","pricesForProductAndCurrency","priceText","isBillingLoaded","saveButtonEnabled","latestInvoiceError","Open","billingSMSProduct","BillingStore","force","firstPriceID","startPayment","autorenewChanged","api","spi","prevDay","timeMenu","closeConfirmation","dateString","getDay","shmap","dateSlot","datesAndTimes","dti","updateDate","closeSlots","closeOrResetSlots","resetSlots","showDetails","isDisabled","MessageCenterRulesTable","customRules","builtinRules","MessageCenterStore","isMessageCenterLoaded","messageChannel","evenType","tabSelected","setShowDetails","availabilityHidden","makeReservation","datasetSeated","datasetIncoming","datasetSeatedLimit","datasetIncomingLimit","datasetSeatedLimitVisible","datasetIncomingLimitVisible","updateDataset","dsIncoming","dsSeated","incomingLimitGradient","barGap","zlevel","lineStyle","emphasis","areaStyle","colorStops","trigger","axisPointer","axis","formatter","tooltipString","cont","marker","seriesName","extraCssText","legend","selectedMode","splitNumber","splitLine","minorSplitLine","minorTick","listValues","listTitles","noValuesLabel","dayAvailability","dayLimits","dataDetails","limitDetails","darkMode","formatPoint","wrapfnc","line","states","isPlus","dataIndex","maxc","slotc","timeText","durationText","VUE_APP_SHOW_DASHBOARD_DETAILS","extra","splitArea","visualMap","inRange","showLabel","calculable","orient","val1","val2","hoverLink","borderWidth","borderColor","shadowBlur","shadowColor","createHours","tm","createPartySizes","createData","tabIds","HourlyGuestsCard","NumericListCard","AvailablePartySizeCard","dashboard","DashboardOnlineTabs","DashboardAllTabs","dashboardReservations","dashboardDayAvailability","dashboardGuestsPerTime","isTodayOrFuture","dashboardIsOnlineTab","availabilityDisabled","isDashboardDayAvailabilityLoaded","availabilityTabs","guestsPerTime","sd","isFinite","guestsForSections","dashboardGuestsForSections","g","lunchDinnerForSections","dashboardLunchDinnerForSections","guestsForServices","dashboardGuestsForServices","guestsForLabels","dashboardGuestsForLabels","gr","dashboardDayStats","DashboardStore","setTab","returning","compareSeries","totals","cancellations","noshows","categoryType","campaignGuests","total","campaignReservations","isImproved","LineChart","category","inverseMetric","unit","compareValues","isSame","totalValues","categoryData","smooth","opacity","encode","source","dimensions","rotate","extraOptions","extraOption","extraOptionSelected","containLabel","isdecimal","fdigits","toFixed","valueFormatter","axisTick","showMinLabel","showMaxLabel","allowShowBy","DateRangePickerField","showByItems","reports","showBy","reportsbyDtCreate","byDtCreate","allowComparePrevious","reportsType","ReportsType","Reservations","ReportsOnlineTabs","ReportsAllTabs","ReportsStore","fmtDate","thisYear","getFullYear","dateRangeSelected","setDateRange","showBySelected","setCampaignsByDtCreate","performActionEx","errorPrefix","hideActivityIndicator","SimpleLineChart","MiniDataChart","ReportsToolbar","StackedLineChart","reportsComparePrevious","reportsReservations","reportsGuests","reportsCampaignsReservations","reportsCampaignsGuests","reportsReturning","reportsCancelations","reportsNoshows","reportsPartySizes","servicesRevenue","reportsServicesPie","ticket","percent","radius","avoidLabelOverlap","totalValue","BarChart","seriesRevenue","datasetRevenue","sum","stack","yAxisIndex","confine","pos","dom","viewSize","contentSize","appendToBody","ServicesRevenueChart","MiniPieChart","reportsServices","reportsServicesRevenue","Services","remap","reverse","weekdayStartAtMondayFromDateDay","j","wk","ScatterChart","ChartHelpTooltip","maxValue","symbolSize","animationDelay","head","axisValueLabel","AvgGuestsWeekdayChart","WeekdaysBarChart","isAccurate","dr","ndr","makeWholeWeeks","isWholeWeeks","averageGuests","reportsWeekdaysAverageGuests","reportsWeekdaysServices","reportsWeekdaysServicesRevenue","reportsWeekdaysTabs","Weekdays","makeAccurate","avgSeries","avgColors","barWidth","connectNulls","axisLine","alignTicks","ratingChartData","feedbacks","reportsTabReports","pfeedbacks","reportsPreviousTabReports","categoryDates","tabReportsCategory","binsList","bin","starsList","wsum","cnt","rti","pdata","avgDataset","repeat","RatingsBarChart","overall","food","ambience","emails","email_series","sms_series","sms","reportsSms","reportsEmails","Messages","templateEditDialog","eventTypes","smsMessageLength","template","oldt","localesByLocale","placeholders","localeChanged","MessageCenterTemplateDialog","campaigns","messageEventTypes","customTemplates","sortedLanguages","sendBccAllowed","allowExtraTimeText","isTimed","editTemplate","addTemplate","removeTemplate","updateTemplate","isNewTemplate","isPwa","usePwa","copyToken","registrationActive","debugInfo","user_agent","is_pwa","checkForUpdates","FeedbackRatingSelect","selectedFeedback","messageDialog","FeedbackRatingChip","_b","_g","colorForRating","ratings","ratingsChanged","n1","n2","showReservation","feedback","formatRepliedOnDate","changeToDate","closeMessageDialog","NewModalDialog","RepeatableTimer","stop","timerId","restart","isFeedbackFeatureAllowed","refreshTimeout","feedbackFilter","filterInactive","detailsDialog","showFeedbackDetail","replyClicked","feedbackSettings","feedbackVisibleFeedbacks","filterDateRange","feedbackDateRange","filterDateRangeSelected","filterDateRangeDisabled","isFeedbackLoading","isFeedbackLoaded","debouncedRefresh","FeedbackStore","FeedbackDetailsDialog","PaywallButton","changeEnable","changeUseBreakdown","olds","newSettings","configureMessage","changeShowArchived","selectedMarketingCampaign","archiveCampaign","deleteCampaign","charts","gauge","skeleton","fillHeight","previewImg","previewIframe","renderImage","iframe","srcdoc","onload","contentDocument","html2canvas","allowTaint","imageTimeout","useCORS","imageDataUrl","$slots","or","ctr","ctor","FunnelChart","gap","maxSize","textBorderColor","textBorderWidth","NewsletterResultsCard","startAngle","endAngle","center","pointer","offsetCenter","fontSize","valueAnimation","colorForCampaignStatus","saveAsTemplate","htmlTemplate","es","fvalues","uniqueOpen","uniqueClick","uniqueReservations","fv","funnel","rv","nom","den","tg","HtmlImage","EmailPreviewFrame","NewsletterFunnelChart","NewsletterGaugeChart","marketingCampaignSettings","useNewsletterFeatureAllowed","isNewsletterFeatureAllowed","newCampaign","showCampaignDetail","campaignToSelect","marketingCampaignManagerCampaigns","marketingCampaignManagerFilter","isMarketingCampaignManagerLoaded","tryUnloadStoreModule","archivedCampaign","refreshTimer","CampaignManagerStore","NewsletterCampaignDetailDialog","NewsletterQuotaBar","saveCampaign","testRecipientsDialog","editorTemplate","saveTemplate","contactFilterDialogVisible","contactFilterHintText","selectContactFilter","pickTestRecipients","editCampaignTemplate","templateLocale","saveBtnText","resolveUploadPromise","rejectUploadPromise","onUpload","toJsonExport","toHtmlExport","toHtmlPreview","toPlaintext","emailEditorCallbacks","svcData","bookingLink","emailEditorData","logoUrl","contactDetails","socials","documentLang","devMode","InitApp","DestroyApp","cardCols","cardColsSm","cardColsMd","cardColsLg","allowActions","selectTemplate","duplicateTemplate","deleteTemplate","renameTemplate","currentUserEmail","sortedRecipients","toSorted","localeCompare","campaignLoaded","oldCampaign","oldTemplate","canSaveOrSend","marketingCampaignManagerHtmlTemplates","editedContactFilterMatchContactCount","selectedContactFilterMatchContactCount","removeCampaignTemplate","savec","savedCampaign","sendCampaign","performValidation","sendAction","successText","campaign_manager_similar_campaign_found","testRecipients","changedFilter","addContactFilter","duplicateContactFilter","editContactFilter","NewsletterTemplateEditorDialog","TemplateGridView","NewsletterTestEmailRecipientsDialog","renameTemplateAction","currentTemplateName","editedTemplate","MarketingCampaignManagerStore","editorVisible","audienceDialogVisible","newTemplateDialog","selectedTemplate","previewVisible","currentFilter","newsletter","filterItems","didSelectTemplate","templateId","ne","se","categoryFilter","showOnlyInstalled","configDialogVisible","configDialogParams","loading","installing","uninstalling","configScreenComponent","configuring","gstplnAppId","configure","closeConfigDialog","saveConfigDialog","updateConfigDialog","goToApp","installedApps","filteredApps","appCards","setAppCard","ac","$props","onBeforeUpdate","appCard","AppCard","Router","base","routes","GuestsView","TablesView","FloorView","LoginView","ContactsView","NewsletterCampaignsView","NewsletterTemplateLibraryView","NewsletterComposeView","NewsletterSettingsView","AccountView","AdvancedSettingsView","UsersView","UserView","EmployeesView","LabelsView","TagNotesView","OpeningHours","SimpleOpeningHours","Sections","Section","OnlineSettings","Settings","SpecialHours","SettingsFeedback","Sms","MessageCenter","MessageCenterRuleEditor","ServiceManager","ServiceManagerEditor","Apps","Dashboard","Search","UnreadReservations","ReportReservations","ReportServices","ReportWeekdays","ReportFeedback","ReportMessages","PwaInfo","beforeEach","isSingle","single","payment_intent","setup_intent","isDarkAllowed","shm","hourMinFromTimeText","ehm","today","changeDark","framework","accountSetting","getAccountSetting","allow","updateResolve","updateReject","finishUpdatePromise","resultOrReason","scheduleAutoUpdate","nextUpdateDate","autoUpdateNextDate","yearlyAmount","Day","Week","Month","Year","billingAmountText","fixedAmount","atext","sign","USD","GBP","intervalText","itext","intervalPeriodicallyText","paymentMethodName","Unknown","card","Amex","Diners","Discover","JCB","Mastercard","Unionpay","Visa","Ideal","Sofort","Bancontact","paymentMethodLogo","genereatedFromType","sepaDebit","gft","last4","expMonth","expYear","branchCode","bankCode","balanceText","balances","ba","bc","customerInfo","street","productName","dinfo","quantity","ended","canceled","Canceled","canceledAt","AwaitingPayment","collectionMethod","SendInvoice","scheduledStartDate","scheduledPrice","scheduledDiscount","invoiceColor","Paid","Uncollectible","errorFromIntent","lastErrorType","lastErrorCode","lastDeclineCode","Succeeded","ie","mandateUrl","mandateReference","isSetup","appliedBalance","startingBalance","endingBalance","subscriptionProrationInFuture","applied","invoiceLineItemInfo","pinfo","discounts","lines","tax","dueDate","subscriptionProrationDate","amountDueNumber","appliedBalanceNumber","paymentStatus","dicountOff","percentOff","amountOff","off","dicountDuration","Once","Forever","Repeating","durationInMonths","dicountValidUntil","discountValidUntilDescription","discountDurationDescription","discoutOfferExpiresDescription","expiresAt","discountShortDescription","discountLongDescription","validUntil","originalAmount","discountedAmount","durationDescription","validUntilDescription","longDescription","subscriptionActions","maxTierLevel","upgrade","subscribe","ActiveSubscriptionStatuses","isSubscriptionActive","preferedCountryCurrency","eur","gbp","eu","isSubWarningBarInfo","TrialActive","SubActive","subStatus","billingAllowed","trialExpText","trialExpDate","subExpText","subExpDate","extraText","infoKey","navLinkKey","buttonKey","TrialWillExpire","TrialExpired","SubWillExpire","SubWillExpirePayment","SubExpired","SubExpiredPayment","isSMSWarningBarInfo","PaymentError","LowBalance","ZeroBalance","isPaymentWarningBarInfo","patterns","un","pattern","test","formatIBAN","iban","accountHolderName","BIC","IBAN","formattedIBAN","addressLine2","p1","p2","yearly","originalYearly","monthly","originalMonthly","monthlyAmount","originalMonthlyAmount","pp","maxSubscriptionTierLevel","imap","sortedIntervals","e1","e2","parseColor","R","G","B","rgb","RR","brightness","s1","s2","array","lower","upper","cnumber","DEFAULT_PARTY_SIZE","DEFAULT_TAB_DURATION","MIN_BEGIN_TIME","MAX_BEGIN_TIME","MAX_END_TIME","DEFAULT_SPLIT_LUNCH_DINNER_TIME","SERVICE_WIDGET_DOMAIN","ContactFields","toSearchContact","searchCreate","rindex","elasticlunr","addField","saveDocument","pipeline","cindex","searchContactAdd","addDoc","searchContactRemove","removeDocByRef","searchContactReset","searchForContacts","contactsById","expand","bool","Separator","ThisWeek","LastWeek","NextWeek","LastMonth","NextMonth","ThisYear","LastYear","NextYear","Last30Days","SpecialDateRangePeriods","CustomMonth","CustomYear","areDateRangesEqual","dr1","dr2","formattedDateInterval","dateFlooredToMonth","getMonth","Yesterday","Tomorrow","dateFlooredToWeek","Next30Days","Next90Days","dateFlooredToYear","dateByAddingYears","isFullMonth","isFullYear","roend","daysInBetweenDates","newPeriod","firstwd","lastwd","diffb","diffe","ifl","toFilter","fromFilter","fromRule","ifilter","toRule","newFilter","irule","isFilterBoolRuleType","ir","newFilterBoolRule","isFilterFieldRuleType","IFilter","IRule","FilterSpecialCategoryOperandTypes","FilterStringRuleTypes","NotEqual","Contains","LessThen","GreaterThen","FilterBooleanRuleTypes","IsSet","IsNotSet","checkOperand","fieldText","ruleTypes","operands","allowedOperands","FilterDateOperandsWithSeparators","FilterDateNoYearOperandsWithSeparators","isEmptyOperand","isSpecialOperand","FilterDateOperands","FilterDateNoYearOperands","rt","ruleTypeText","operandText","FilterOperandSeparator","PreviousWeek","PreviousYear","dateOperandText","textop","FieldDateOperation","FieldOperation","beginTime","isDateOperand","EqualDateFieldOperation","check","neg","EqualDateNoYearFieldOperation","dateWithYear","zeroAsNull","fixOperand","Operation","NoOperation","IsSetFieldOperation","IsEmptyFieldOperation","EqualFieldOperation","ContainsFieldOperation","GreaterThenFieldOperation","LessThenFieldOperation","NoFilterCheckFnc","object","FilterBoolRuleTypes","True","False","And","Nand","Or","Nor","FilterFieldRuleTypes","FilterFieldNoOperandTypes","FilterRuleContext","preparedCheck","fbr","FilterBoolRule","ffr","operation","operationFromType","op","FILTER_VERSION","set3Rules","newFilterFromRule","objects","simpleHours","hourMap","osh","special","bs","Storage","getFcmToken","getUsername","getAccount","floorplanZoom","timetableZoom","timetablePosition","getLastEmployee","getCameraOnboarded","cameraOnboarded","getCameraActive","cameraActive","dashboardShowDetails","languagePromptDisplayed","pwaBarDismissCount","setToken","saveData","setFcmToken","setUsername","setAccount","setAccountSetting","setCameraOnboarded","setCameraActive","setDashboardShowDetails","localStorage","setItem","getItem","SendGrid","SMTP","MessageBird","clientsByModule","reloadAction","clients","resetAction","dateFlooredToMinutes","KEEP_TIME","Cache","tabReportsEntries","MsgReportsEntries","resetTimeout","scheduleReset","removeOld","mints","re","removeModified","dateIndices","isaffected","addTabReports","entry","addMsgReports","findTabReports","forceExact","ReportsParams","ReportsBinType","OVER_DAY","OVER_YEAR","findMsgReports","ReportsCache","CategoryType","reportsBinTypeFromDateRange","BY_DAYS","reportsBinsFromDateRange","bins","BY_HOURS","hoursInBetweenDates","BY_MONTHS","monthsInBetweenDates","BY_YEARS","yearsInBetweenDates","reportsDatesForSlots","reportsCategoryFromReportsParams","startAt6","DAY","HOUR","MONTH","setDateYearMonth","reportsForMsgTypes","msgTypes","reportsParams","msgReports","addArray","da","sa","msgType","sentList","errorsList","mt","reportsForTabs","tabReports","addLists","dobj","sobj","createLists","guestsLists","campaignLists","serviceLists","guestsDtc","campaignsList","campaignsDtcList","servicesList","weekdaysList","bi","revenueCurrency","serviceName","wdi","sls","c1","c2","sortServices","ss","revenues","revenueSumsList","wdl","addCurrency","reportsZipLists","lists","addIndex","list","reportsListSum","reportsListsSums","reportsListSumWithMask","mask","reportsListsSumsWithMask","listi","reportsListPercentages","nomList","denList","reportsListPercentagesTotal","reportsListAverages","counts","reportsListAveragesTotal","reportsListsAveragesNoNeg","valueLists","countLists","masks","valueSums","countSums","reportsListsAveragesTotalNoNeg","rp","startTimeNumber","isDateAfterDate","dateFlooredToXMinutes","PartySizeHigh","NameMissing","PhoneMissing","EmailMissing","AvailabilityMaxGuestsExceeded","AvailabilityMaxReservationsExceeded","AvailabilityOutsideHours","AvailabilityNoCapacity","TabMissing","BlockTabItemsMissing","DateBeginMissing","DateBeginLow","DateBeginHigh","DateEndMissing","DateEndLow","DateEndHigh","reservationErrorText","param","PartySizeMissing","texts","validateReservation","minbt","maxbt","maxet","minbd","maxbd","maxed","validateReservationAvailability","reservationsDuringSlot","totalReservations","toReservationsByTabItemAndSlot","overbookedReservationsForReservation","osrs","osr","overbookedReservationsAndTabItemsForReservationId","rmap","timap","overbookedReservationsForReservationId","overbookedTabItemsForReservationId","toReservationsDuringSlot","unavailableTabItemsForReservation","sortedItems","mapByDateTimeIndex","mapByTime","ReservationFields","toSearchReservation","tokens","token2","token3","searchUpdateReservations","rdoc","updateDoc","searchReset","searchForReservations","boost","ContactEmail","DayReservations","resmap","score","resft","r1","r2","DTI_DATETIME_DATE_OFFSET","DTI_DATE_LIMIT","TIME_SLOT_MINUTES","TIME_SLOTS_PER_HOUR","dateFromString","utc","utcOffset","toDate","sm","rest","getHours","getMinutes","ndate","months","years","newDate","setFullYear","monthDay","flooredMinutes","mins","stot","fixedDate","unix","UTC","getUTCFullYear","getUTCMonth","getUTCDate","scheduleDate","lastUpdateDate","timeSlotsFromHours","datesAndTimesByDateTimeIndex","errorText","pdot","edot","delayedSuccess","delayed","errorFnc","dispatchParams","hideError","AllocationsState","mutations","RESET_ALLOCATIONS","UPDATE_ALLOCATIONS","actions","updates","dtos","namespaced","fixPrice","productID","fixInvoices","BillingState","RESET_BILLING","UPDATE_BILLING","openInvoices","latest","latestIndex","tokeep","BILLING_SET_INVOICES_LIMIT","UPDATE_BILLING_INVOICES","ni","oi","resetBilling","billingSetInvoicesLimit","loadBilling","rootState","cust","billingLoadInvoices","billingCreateCustomer","billingUpdateCustomer","billingLoadSMSProduct","billingCreateSMSProduct","billingUpdateSMSProduct","billingCreateSubscription","billingUpdateSubscription","billingCancelSubscription","billingDeleteSubscription","billingPreviewSubscription","billingAddPaymentMethod","billingFinishPaymentMethod","billingGetPaymentMethod","billingDeletePaymentMethod","billingActivatePaymentMethod","billingCreatePaymentInvoice","billingFinalizePaymentInvoice","billingFinishPaymentInvoice","billingDeletePaymentInvoice","billingGetInvoice","localGetters","billingMaxSubscriptionTierLevel","currencySet","billingSubscriptionDueInvoices","overDue","billingSubscriptionOpenInvoices","generatedBySubscription","billingInvoices","billingLatestInvoice","currs","billingAllInvoicesLoaded","CampaignFilterState","RESET_CAMPAIGN_FILTER","UPDATE_CAMPAIGN_FILTER","resetCampaignFilter","campaignFilter","isCampaignFilterLoaded","CampaignFilterStore","DashboardState","RESET_DASHBOARD","UPDATE_DASHBOARD","UPDATE_DASHBOARD_AVAILABILITY","isDayAvailability","isDayAvailabilityLoaded","SET_DASHBOARD_AUX","resetDashboard","setDashboardDate","setDashboardTab","loadDashboardAvailability","isDashboardLoaded","dashboardTimeSlots","InvalidStatuses","dashboardFilteredReservations","onlineTabs","sdata","smap","ma","mar","Capacity","MaxGuestsSpecialHour","MaxGuestsOpeningHour","MaxGuestsDefault","MaxReservationsSpecialHour","MaxReservationsOpeningHour","MaxReservationsDefault","MinPartySizeSpecialHour","MinPartySizeOpeningHour","MinPartySizeDefault","MaxPartySizeSpecialHour","MaxPartySizeOpeningHour","MaxPartySizeDefault","ClosedSpecialHour","ClosedOpeningHour","tdata","splitTime","hm","splitDate","labeledReservations","labeledGuests","serviceReservations","serviceGuests","dashboardGuestsForTagNotes","matchTagsText","trs","mtg","lrs","dashboardGuestsForSource","tmap","cmap","tkey","ckey","cdata","tentries","centries","filterFeedbacks","filteredFeedbacks","FeedbackState","RESET_FEEDBACK","UPDATE_FEEDBACK_SETTINGS","UPDATE_FEEDBACK_SELECTED","UPDATE_FEEDBACK_REFRESHED","newSelectedFeedback","feedbackCompareFnc","UPDATE_FEEDBACK_LOADED","isLoading","isFullyLoaded","additionalFeedbacks","UPDATE_FEEDBACK_PAGE","visiblePageSize","visiblePageStart","APPLY_FEEDBACK_FILTER","UPDATE_FEEDBACK_SORT","feedbackSortType","feedbackSortDesc","resetFeedback","loadFeedback","refreshFeedback","areEqual","newestDtCreate","maxdtc","feedbackApplyFilter","updateFeedbackSort","updateFeedbackPage","setSelectedFeedback","loadFeedbackSettings","feedbackVisibleCount","GiftcardsState","RESET_GIFTCARDS","RESET_GIFTCARD_TRANSACTIONS","areTransactionsLoaded","UPDATE_GIFTCARDS","transactionDateRange","transactionFilter","transactionTypes","transactionCodes","transactionCode","resetGiftcards","loadGiftcardProduct","loadGiftcardTransactions","thisFilter","filterCodes","filterCode","updateGiftcardTransactions","resetGiftcardTransactions","defaultFilter","giftcard","giftcardsProduct","isGiftcardsLoaded","giftcardsTransactionFilter","isGiftcardsTransactionFilter","areGiftcardTransactionsLoaded","giftcardTransactions","ReservationSuggestionStore","ApiEmployee","fromApiModel","GuestbookState","newContacts","duplicateContactCountsByEmail","duplicateContactCountsByPhone","countryDialCode","deletedContacts","addedContacts","newFilteredContacts","filteredContacts","contactCompareFnc","filteredContactsById","fullTextFilteredContacts","mergeFilteredContacts","RESET_GUESTBOOK","UPDATE_GUESTBOOK_CONTACT","UPDATE_GUESTBOOK_CONTACTS","UPDATE_GUESTBOOK_CONTACT_FILTER","filterError","UPDATE_GUESTBOOK","APPLY_GUESTBOOK_FILTER","UPDATE_GUESTBOOK_PAGE","UPDATE_GUESTBOOK_SORT","contactSortType","contactSortDesc","UPDATE_GUESTBOOK_FULLTEXT_FILTER","resetGuestbook","loadGuestbook","someContactsLoaded","someContactFiltersLoaded","allContactsLoaded","allContactFiltersLoaded","commitData","crudContactFilter","guestbookCreateContactFilter","guestbookGetContactFilter","guestbookUpdateContactFilter","guestbookDeleteContactFilter","crudContact","guestbookLastEmployee","guestbookCreateContact","guestbookUpdateContact","guestbookDeleteContacts","returnedContacts","guestbookMergeContacts","guestbookSelectedContacts","guestbookSearchContacts","guestbookApplyContactFilter","guestbookPreviewContactFilter","guestbookContactReservations","updateGuestbookPage","updateGuestbookSort","updateGuestbookFullTextFilter","guestbookFilteredContacts","reservationLastEmployee","MarketingCampaignManagerState","RESET_MARKETING_CAMPAIGN_MANAGER","RESET_MARKETING_CAMPAIGN_MANAGER_CAMPAIGNS","areCampaignsLoaded","UPDATE_MARKETING_CAMPAIGN_MANAGER","htmlTemplates","resetMarketingCampaignManager","loadMarketingCampaignManager","allCampaignsLoaded","loadMarketingCampaigns","noReset","refreshMarketingCampaigns","updateMarketingCampaignFilter","crudMarketingCampaignManagerContactFilter","markeingCampaignManagerCreateContactFilter","markeingCampaignManagerGetContactFilter","markeingCampaignManagerUpdateContactFilter","markeingCampaignManagerDeleteContactFilter","crudMarketingCampaignManagerHtmlTemplate","marketingCampaignManagerCreateHtmlTemplate","marketingCampaignManagerGetHtlTemplate","marketingCampaignManagerUpdateHtmlTemplate","marketingCampaignManagerDeleteHtmlTemplate","areMarketingCampaignManagerCampaignsLoaded","MessageEventType","isTimedAfter","TimedAfterEventTypes","isTimedBefore","TimedBeforeEventTypes","isWaitlist","WaitlistEventTypes","BuiltInEventTypes","MessageHandlebar","handlebarId","MessageCenterState","RESET_MESSAGE_CENTER","UPDATE_MESSAGE_RULES","UPDATE_MESSAGE_CENTER","updateMessageRules","messageRules","updateMessageCenter","resetMessageCenter","eventTypesByType","builtinRuleMessageType","missingDefaultRules","wlOn","wlFilteredRules","ReportsState","All","RESET_REPORTS","UPDATE_REPORTS","UPDATE_REPORTS_TABS_MSGS","previousTabReports","tabReportsParams","previousTabReportsParams","msgReportsParams","resetReports","updateReports","bdi","edi","pbdi","pedi","bt","pentry","loadReports","tabReportsPromise","msgReportsPromise","previousTabReportsPromise","msgResponse","msgReportsList","guestResponse","tabReportsList","setReportsDateRange","setReportsTab","setReportsCampaignName","setReportsByDtCreate","updateReservationDates","isReportsLoaded","msgReportsCategory","reportsFilteredTabs","pguests","guestsList","reservationsList","returningList","cancelationsList","noshowsList","partySizeSumsList","partySizeCountsList","reportsCampaignsDaysAdvance","daysAdvanceList","daysAdvanceSumsList","daysAdvanceCountsList","servicesReports","revenueListsByCurrencies","unsortedCurrencies","unsortedDataset","rlbc","unsortedTotals","indeces","sumi1","sumi2","sumi","datasetByReservations","datasetByGuests","datasetByRevenue","weekdaysReports","wr","weekdaySums","fwdsr","wdsr","fwdsrs","allTabs","reportsOverallRatings","sums","ServiceManagerState","RESET_SERVICE_MANAGER","UPDATE_SERVICE_MANAGER","resetServiceManager","loadServiceManager","serviceManagerReorderServices","serviceManagerUpdateService","UserAccount","cache","resetState","hard","cacheState","sstate","retrieveState","accountData","SessionState","SET","SET_USERNAME","SET_TOKEN","SET_TIMESTAMP","UPDATE_USER_ACCOUNTS","SET_FCM_TOKEN","switchAccount","updateUserAccounts","isLoggedInAndRegistered","SessionStore","UpdateOriginator","performUpdatesAction","oldestReservationDate","latestReservationDate","UpdateState","START_PROCESSING","startProcessDate","processOriginator","END_PROCESSING","processDate","autoUpdateTimeInterval","CHANGE_DATE","START_UPDATING","updating","startUpdateDate","updateOriginator","END_UPDATING","updateErrorDate","updateSuccessDate","UPDATE_NOW","Normal","changeToNextDate","changeToPreviousDate","startProcessUpdates","processUpdatesError","processUpdates","noroot","zeroOrIgnore","updateNow","selectedDate","isUpdating","UpdateStore","DateSlot","updateCounts","toSortedEntitiesByDateIndex","os","mergeToMapById","modifiedEntities","entitity","mergeSortedEntities","deleteSortedEntities","addDaySlotEntities","dateSlotField","mapById","indices","mapNewByDateIndex","nos","mergeDaySlotEntities","mapDeletedByDateIndex","dos","updateDaySlotEntities","ReservationsState","RESET_RESERVATIONS","UPDATE_DAYNOTES","dayNotesById","UPDATE_DATESANDTIMES","UPDATE_RESERVATIONS","REFRESH_RESERVATIONS","resetReservations","updateReservations","sortedDateSlots","unreadMap","sortedDayNotes","dayReservationsNoBlocks","dayValidReservationsNoBlocks","invalidStatuses","InvalidStatusesForToday","waitingReservations","sortedWaitingReservations","dayTimeSlotsBySlot","dayOverbookedReservationsAndTabItemsForReservationId","dayOverbookedReservationsForReservationId","ormap","ofmap","orset","orid","dayValidReservationsAndBlocksDuringSlot","dayValidReservationsAndBlocksByTabItemAndSlot","openWeekdays","openingHoursInWeekdaysByTime","openDatesByDateIndex","ReservationsStore","Locale","TextEncoder","TimeZone","timeZoneName","CodesState","UPDATE_CODES","updateCodes","timeZones","CodesStore","toFloorplanDTO","SettingsState","UPDATE_TABS","UPDATE_ACCOUNT","UPDATE_SETTINGS","activeApps","sendEntity","SettingsSingle","sendEntities","updateAccount","updateTabs","updateSettings","accountUsers","ifu","installApps","SettingsTabItems","sendFloorplanTabItems","nt","SettingsFloorplan","gapp","uapp","appHasBilling","catOrd","isGiftcardBackgroundFeatureAllowed","SettingsStore","AUTO_UPDATE_TIME_INTERVAL_MIN","AUTO_UPDATE_TIME_INTERVAL_DEFAULT","AutoUpdateState","AUTO_SET_SCHEDULED","AUTO_START_STOP","AUTO_INCREMENT_COUNTER","counter","startAutoUpdate","stopAutoUpdate","autoUpdateSetScheduled","performAutoUpdate","Auto","forcedAutoUpdateTimeInterval","VUE_APP_FORCED_AUTO_UPDATE_TIME_INTERVAL","AutoUpdateStore","FILTER_DEFAULT_FROM","FILTER_DEFAULT_TO","FILTER_DEFAULT_STATUS","FILTER_DEFAULT_TAB","FilterState","SET_FILTER","RESET_FILTER","fhm","fromDate","thm","invalid","filteredReservations","filteredReservationsNoBlocksBySlot","FilterStore","SearchState","RESET_SEARCH","SET_SEARCH_QUERY","localReservations","apiReservations","CHANGE_SEARCH_REQUEST_COUNT","requestCount","SET_SEARCH_RESULTS","resetSearch","searchReservations","apiById","searchReservationsByDateIndex","searchAllReservationsByDate","searchDayReservations","searchDayReservationsByDate","importances","sortedContacts","SearchStore","NameStore","PhoneStore","EmailStore","ReservationState","SET_RESERVATION","editedReservation","keepOpen","confirmResolver","RESET_RESERVATION","UPDATE_ORIGINAL_RESERVATION","SET_RESERVATION_ELEMENT","SET_EMPLOYEE","SET_FORGET","forget","SET_KEEP_OPEN","SET_CONFIRM","canCloseEditReservation","updateReservation","setForgetTabItems","setReservationContact","setReservationPartySize","setReservationType","setReservationTab","setReservationTabItems","setReservationHoldTabItems","setReservationDate","setReservationAttachments","setReservationTimeBegin","setReservationTimeEnd","setReservationFromDragDropReservation","ddr","keepReservationChangeToDate","getContactReservations","sendReservationMessage","isddv","er","editReservationId","keepEditReservation","reservationsByTabItemAndSlot","ReservationStore","areSame","isRelevant","ReservationSuggestionsState","SET_SUGGESTIONS_RESERVATION","CHANGE_SUGGESTIONS_REQUEST_COUNT","SET_SUGGESTIONS_RESULTS","RESET_SUGGESTIONS_RESULTS","suggest","isModified","tabItemIds","suggestedDropTabItems","DragDropState","SET_DRAGDROP_RESERVATION","SET_DRAGDROP_TAB_TABITEMS","isDragDropChanged","dragDropTab","dragDropTabItems","dragDropDateEnd","DragDropStore","PushUpdateState","PUSH_SET_TIMESTAMP","requestTimestamp","processTimestamp","PUSH_INCREMENT_COUNTER","setPushUpdateTimestamp","performPushUpdate","Push","autoUpdate","updateTimestamp","PushUpdateStore","Vuex","modules","pushUpdate","reservationSuggestions","dragDrop","billing","giftcards","GiftcardsStore","marketingCampaigManager","uts","asas","asa","VUE_APP_SHOW_ALL_APPS","disabledApps","VUE_APP_HIDE_APPS","ua","iOS","webkit","iOSSafari","charAt","charactersToRemove","characterSetToRemove","filteredScalars","char","cleanString","reportsMenu","settingsMenu","statusToListItem","nextStatusesForStatus","jspb","goog","global","self","exportSymbol","proto","grpc","v1","opt_data","initialize","inherits","DEBUG","COMPILED","displayName","GENERATE_TO_OBJECT","opt_includeInstance","includeInstance","msg","getFieldWithDefault","isinstalled","getBooleanFieldWithDefault","showasmenuitem","$jspbMessageInstance","deserializeBinary","bytes","reader","BinaryReader","deserializeBinaryFromReader","nextField","isEndGroup","getFieldNumber","readInt64","readString","readBool","setShowasmenuitem","skipField","serializeBinary","writer","BinaryWriter","serializeBinaryToWriter","getResultBuffer","writeInt64","writeString","writeBool","getShowasmenuitem","setProto3IntField","setProto3StringField","setProto3BooleanField","web","AppsServiceClient","hostname","credentials","client_","GrpcWebClientBase","hostname_","AppsServicePromiseClient","methodDescriptor_AppsService_getApp","MethodDescriptor","MethodType","UNARY","AppRequest","AppResponse","request","rpcCall","unaryCall","methodDescriptor_AppsService_updateApp","methodDescriptor_AppsService_installApp","app_pb","readMessage","writeMessage","getWrapperField","setWrapperField","clearApp","hasApp","getField","isdeleted","readInt32","writeInt32","ContactServiceClient","ContactServicePromiseClient","methodDescriptor_ContactService_get","ContactIdRequest","ContactResponse","methodDescriptor_ContactService_create","ContactRequest","methodDescriptor_ContactService_update","methodDescriptor_ContactService_delete","methodDescriptor_ContactService_list","SERVER_STREAMING","ContactListRequest","ContactListResponse","serverStreaming","ContactFilterServiceClient","ContactFilterServicePromiseClient","methodDescriptor_ContactFilterService_get","ContactFilterIdRequest","ContactFilterResponse","methodDescriptor_ContactFilterService_create","ContactFilterRequest","methodDescriptor_ContactFilterService_update","methodDescriptor_ContactFilterService_delete","methodDescriptor_ContactFilterService_list","ContactFilterListRequest","ContactFilterListResponse","ContactManagerServiceClient","ContactManagerServicePromiseClient","methodDescriptor_ContactManagerService_selectedContacts","SelectedContactsRequest","methodDescriptor_ContactManagerService_mergeContacts","MergeContactsRequest","methodDescriptor_ContactManagerService_deleteContacts","DeleteContactsRequest","methodDescriptor_ContactManagerService_searchContacts","SearchContactsRequest","contact_pb","employee_pb","contact_filter_pb","repeatedFields_","getEmployee","clearEmployee","hasEmployee","contactfilter","clearContactfilter","hasContactfilter","idsList","getRepeatedField","isDelimited","readPackedInt64","addIds","getIdsList","writePackedInt64","setField","opt_index","addToRepeatedField","clearIdsList","getFilter","postalcode","companyname","reservationcount","isvip","preferredlanguage","birthday","newslettersubscription","visitcount","lastvisit","dtcreate","dtupdate","setPostalcode","setVisitcount","setLastvisit","setDtcreate","setDtupdate","getDtcreate","CONTACT_TITLE_UNSPECIFIED","CONTACT_TITLE_MR","CONTACT_TITLE_MS","CONTACT_TITLE_MRS","CONTACT_TITLE_MISS","CONTACT_TITLE_FAM","hasdecimals","isavailable","setWeekday","setIsavailable","DashboardServiceClient","DashboardServicePromiseClient","methodDescriptor_DashboardService_getAvailability","DashboardAvailabilityRequest","DashboardAvailabilityResponse","dashboard_pb","availability","setAvailability","clearAvailability","hasAvailability","EmptyResponse","reservation_pb","dtRepliedAt","setFoodRating","setServiceRating","setAmbienceRating","setOverallRating","setComments","setDtCreate","setIsPublic","setReservationDtBegin","setContactName","setContactReservationCount","setDtRepliedAt","setReservation","clearReservation","hasReservation","empty_pb","FeedbackServiceClient","FeedbackServicePromiseClient","methodDescriptor_FeedbackService_getFeedback","FeedbackGetFeedbackRequest","FeedbackFeedbackResponse","methodDescriptor_FeedbackService_listFeedbacks","FeedbackListFeedbacksRequest","FeedbackListFeedbackResponse","methodDescriptor_FeedbackService_getReservation","FeedbackGetReservationRequest","FeedbackReservationResponse","methodDescriptor_FeedbackService_getSettings","FeedbackSettingsResponse","methodDescriptor_FeedbackService_setSettings","FeedbackSetSettingsRequest","feedback_pb","feedback_settings_pb","FeedbackListFeedbacksParams","getFeedbackId","setFeedback","clearFeedback","hasFeedback","sinceDtCreate","getBeginDate","getSinceDtCreate","hasParams","clearSettings","hasSettings","setNoRuleError","clearUseBreakdown","giftcard_transaction_pb","setGiftcardMessage","setDtDelivery","transactionsList","toObjectList","dtExpiryMil","setDtUpdate","setDtExpiry","setRecipient","addTransactions","setIsExpired","setDtExpiryMil","setIssuedByAccountId","setIssuedByAccountName","getDtExpiry","writeRepeatedMessage","clearRecipient","hasRecipient","getRepeatedWrapperField","setTransactionsList","setRepeatedWrapperField","opt_value","addToRepeatedWrapperField","clearTransactionsList","expirePeriodInMonths","pricesList","feesList","addPrices","addFees","setStripeAccountExist","setStripeAccountActive","getFeesList","clearPricesList","setFeesList","clearFeesList","readEnum","setType","setGiftcardIssuedByAccountId","setGiftcardIssuedByAccountName","setExecutedByAccountId","setExecutedByAccountName","writeEnum","setProto3EnumField","GiftcardsServiceClient","GiftcardsServicePromiseClient","methodDescriptor_GiftcardsService_getProduct","GiftcardsProductResponse","methodDescriptor_GiftcardsService_updateProduct","GiftcardsProductRequets","updateProduct","methodDescriptor_GiftcardsService_listTransactions","GiftcardsListTransactionsRequest","GiftcardsListTransactionsResponse","listTransactions","methodDescriptor_GiftcardsService_listGiftcards","GiftcardsListGiftcardsRequest","GiftcardsListGiftcardsResponse","listGiftcards","methodDescriptor_GiftcardsService_getGiftcard","GiftcardsGetGiftcardRequest","GiftcardsGiftcardResponse","methodDescriptor_GiftcardsService_redeemGiftcard","GiftcardsRedeemGiftcardRequest","giftcard_pb","giftcard_product_pb","GiftcardsListTransactionsParams","clearProduct","hasProduct","typesList","giftcardCodesList","addTypes","addGiftcardCodes","getTypesList","writeRepeatedString","getGiftcardCodesList","clearTypesList","clearGiftcardCodesList","transaction","setTransaction","clearTransaction","hasTransaction","statusesList","addStatuses","getStatusesList","setStatusesList","clearStatusesList","setGiftcard","clearGiftcard","hasGiftcard","getIdempotencyKey","HistoryServiceClient","HistoryServicePromiseClient","methodDescriptor_HistoryService_getHistory","HistoryRequest","HistoryResponse","getHistory","HistoryRecord","reservationid","getReservationid","setJson","recordsList","messagesList","addRecords","addMessages","setRecordsList","clearRecordsList","setMessagesList","clearMessagesList","setPreview","setIsDefault","getHtml","getPlaintext","HtmlTemplateServiceClient","HtmlTemplateServicePromiseClient","methodDescriptor_HtmlTemplateService_get","HtmlTemplateIdRequest","HtmlTemplateResponse","methodDescriptor_HtmlTemplateService_create","HtmlTemplateRequest","methodDescriptor_HtmlTemplateService_update","methodDescriptor_HtmlTemplateService_delete","methodDescriptor_HtmlTemplateService_list","HtmlTemplateListRequest","HtmlTemplateListResponse","html_template_pb","htmltemplate","clearHtmltemplate","hasHtmltemplate","MarketingCampaignManagerServiceClient","MarketingCampaignManagerServicePromiseClient","methodDescriptor_MarketingCampaignManagerService_getCampaign","MarketingCampaignIdRequest","MarketingCampaignResponse","methodDescriptor_MarketingCampaignManagerService_createCampaign","MarketingCampaignRequest","createCampaign","methodDescriptor_MarketingCampaignManagerService_updateCampaign","methodDescriptor_MarketingCampaignManagerService_deleteCampaign","methodDescriptor_MarketingCampaignManagerService_listCampaigns","ListCampaignsRequest","listCampaigns","methodDescriptor_MarketingCampaignManagerService_sendCampaign","MarketingCampaignSendRequest","methodDescriptor_MarketingCampaignManagerService_archiveCampaign","MarketingCampaignArchiveRequest","methodDescriptor_MarketingCampaignManagerService_previewContactFilter","MarketingCampaignPreviewContactFilterRequest","MarketingCampaignPreviewContactFilterResponse","previewContactFilter","methodDescriptor_MarketingCampaignManagerService_testCampaign","MarketingCampaignTestRequest","methodDescriptor_MarketingCampaignManagerService_getSettings","MarketingCampaignSettingsResponse","marketing_campaign_pb","marketing_campaign_settings_pb","ListCampaignsRequestParams","marketingCampaign","clearMarketingCampaign","hasMarketingCampaign","recipientsList","addRecipients","getRecipientsList","clearRecipientsList","isAchived","getIsAchived","getOmitCampaignCheck","getShowArchived","contactFilterData","getContactFilterData","AudienceStats","setAudienceStats","clearAudienceStats","hasAudienceStats","PublishStats","DeliveryStats","EngagementStats","ConversionStats","contactFilterId","contactFilterName","setTemplatePreview","setDtSend","setDtProcessed","setIsArchived","setPublishStats","setDeliveryStats","setEngagementStats","setConversionStats","getContactFilterName","Status","STATUS_NONE","STATUS_DRAFT","STATUS_SCHEDULED","STATUS_PROCESSING","STATUS_SENT","STATUS_ABANDONED","STATUS_FAILURE","setAll","setMatching","setScheduled","setSent","setProcessing","setAbandoned","setFailure","setProcessed","setDropped","setDelivered","setDeferred","setBounce","setBlocked","groupUnsubscribe","groupResubscribe","widgetOpen","uniqueWidgetOpen","widgetReservation","uniqueWidgetReservation","widgetUnsubscribe","setOpen","setUniqueOpen","setClick","setUniqueClick","setSpam","setUnsubscribe","setGroupUnsubscribe","setGroupResubscribe","setWidgetOpen","setUniqueWidgetOpen","setWidgetReservation","setUniqueWidgetReservation","setWidgetUnsubscribe","uniqueAll","uniqueImminent","guestsAll","guestsImminent","setImminent","setUniqueAll","setUniqueImminent","setGuestsAll","setGuestsImminent","clearPublishStats","hasPublishStats","clearDeliveryStats","hasDeliveryStats","clearEngagementStats","hasEngagementStats","clearConversionStats","hasConversionStats","dtQuotaReset","setAllowedMessages","setCreatedMessages","setDtQuotaReset","getMessageType","getBody","getSendBcc","MessageServiceClient","MessageServicePromiseClient","methodDescriptor_MessageService_sendMessage","SendMessageRequest","message_pb","getMessage","clearMessage","hasMessage","entitiesList","getEntitiesList","setEntitiesList","clearEntitiesList","ReportsServiceClient","ReportsServicePromiseClient","methodDescriptor_ReportsService_getTabsReports","ReportsRequest","TabsReportsResponse","methodDescriptor_ReportsService_getMsgsReports","MsgsReportsResponse","GuestsReports","CampaignReports","ServiceReports","WeekdayReports","FeedbackReportsBinStars","FeedbackReportsBin","FeedbackReports","TabReports","MsgReports","setBins","getBinType","getBins","getRepeatedFloatingPointField","readPackedInt32","addReservations","addGuests","addReturning","addCancelations","addNoshows","readPackedFloat","readFloat","addPartySizeSums","addPartySizeCounts","getReservationsList","writePackedInt32","getGuestsList","getReturningList","getCancelationsList","getNoshowsList","getPartySizeSumsList","writePackedFloat","getPartySizeCountsList","setReservationsList","clearReservationsList","setGuestsList","clearGuestsList","setReturningList","clearReturningList","setCancelationsList","clearCancelationsList","setNoshowsList","clearNoshowsList","setPartySizeSumsList","clearPartySizeSumsList","setPartySizeCountsList","clearPartySizeCountsList","setCampaignName","addDaysAdvanceSums","addDaysAdvanceCounts","getCampaignName","getDaysAdvanceSumsList","getDaysAdvanceCountsList","setDaysAdvanceSumsList","clearDaysAdvanceSumsList","setDaysAdvanceCountsList","clearDaysAdvanceCountsList","revenueCountsList","setServiceName","setRevenueCurrency","addRevenueSums","addRevenueCounts","getServiceName","getRevenueCurrency","getRevenueSumsList","getRevenueCountsList","setRevenueSumsList","clearRevenueSumsList","setRevenueCountsList","clearRevenueCountsList","getGuests","getServicesList","setGuests","addServices","clearGuests","hasGuests","setServicesList","clearServicesList","addStars","getStarsList","setStarsList","clearStarsList","getOverall","getFood","getAmbience","setOverall","setFood","setAmbience","clearOverall","hasOverall","clearFood","hasFood","clearService","hasService","clearAmbience","hasAmbience","getBinsList","addBins","setBinsList","clearBinsList","getCampaignsList","getWeekdaysList","getGuestsDtc","getCampaignsDtcList","getFeedbacks","addCampaigns","addWeekdays","setGuestsDtc","addCampaignsDtc","setFeedbacks","setCampaignsList","clearCampaignsList","setWeekdaysList","clearWeekdaysList","clearGuestsDtc","hasGuestsDtc","setCampaignsDtcList","clearCampaignsDtcList","clearFeedbacks","hasFeedbacks","setMsgType","addSent","addErrors","getMsgType","getSentList","getErrorsList","setSentList","clearSentList","setErrorsList","clearErrorsList","getTabReportsList","setTabReportsList","clearTabReportsList","getMsgReportsList","setMsgReportsList","clearMsgReportsList","ReservationAttachment","setUrl","endFixed","dtPreReserved","employeeIdLastEdit","syncIsNeeded","noteText","tabItemsIdsList","attachmentsList","setAccountId","setContactId","setCampaignId","setReservationCode","setDtBegin","setDtEnd","setEndFixed","setPartySize","setHoldTabItems","setReservationLabel","setReservationCampaign","setDtPreReserved","setIsStarred","setIsFlagged","setIsUnread","setEmployeeIdCreate","setEmployeeIdLastEdit","setSyncIsNeeded","setNoteText","setPaymentInfo","setRating","addTabItemsIds","addAttachments","getAccountId","getContactId","getCampaignId","getDtPreReserved","getSyncIsNeeded","setTabItemsIdsList","clearTabItemsIdsList","setAttachmentsList","clearAttachmentsList","PLANNED","SEATED","CHECKED_IN","CHECKED_OUT","CONFIRMED","NON_CONFIRMED","WAITING_LIST","CANCELLED","NOSHOW","SPAM","DELETED","PENDING","ONLINE","USER","ReservationServiceBlackout","tagsList","weekDayList","isCreditcardRequired","currencyId","dtCreated","blackoutsList","addTags","addWeekDay","setIsCreditcardRequired","setDtCreated","addBlackouts","getIsCreditcardRequired","getDtCreated","clearTagsList","clearWeekDayList","clearBlackoutsList","reorder_pb","ServiceManagerServiceClient","ServiceManagerServicePromiseClient","methodDescriptor_ServiceManagerService_updateService","ReservationServiceRequest","ReservationServiceResponse","updateService","methodDescriptor_ServiceManagerService_listServices","listServices","methodDescriptor_ServiceManagerService_reorderServices","reorderServices","reservation_service_pb","SettingsServiceClient","SettingsServicePromiseClient","methodDescriptor_SettingsService_getDefaultCampaign","CampaignResponse","methodDescriptor_SettingsService_testDefaultCampaign","CampaignRequest","methodDescriptor_SettingsService_updateDefaultCampaign","methodDescriptor_SettingsService_listCurrencies","CurrencyResponse","campaign_pb","currency_pb","clearCampaign","hasCampaign","clearCurrency","hasCurrency","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","O","chunkIds","priority","notFulfilled","fulfilled","getter","__esModule","definition","enumerable","chunkId","promises","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","charset","onScriptComplete","onerror","doneFns","parentNode","Symbol","toStringTag","nmd","paths","children","createStylesheet","fullhref","linkTag","rel","onLinkComplete","errorType","realHref","findStylesheet","existingLinkTags","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","loadingEnded","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}