@feedmepos/mf-hrm-portal 2.3.0-dev.17 → 2.3.0-dev.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (234) hide show
  1. package/dist/{ApprovalCodeList-CQp5AXmP.js → ApprovalCodeList-INrLNl4W.js} +7 -7
  2. package/dist/{AuditLogList-CBOp_hDR.js → AuditLogList-BDgSBAPi.js} +5 -5
  3. package/dist/{ConditionBuilderForm.vue_vue_type_script_setup_true_lang-_2_usHCJ.js → ConditionBuilderForm.vue_vue_type_script_setup_true_lang-BQS6Y708.js} +2 -2
  4. package/dist/{EmployeeList-1vR0zMMp.js → EmployeeList-DsuNI7P7.js} +264 -254
  5. package/dist/{FormItem.vue_vue_type_script_setup_true_lang-NR_aWS7l.js → FormItem.vue_vue_type_script_setup_true_lang-DPT2FoIc.js} +6 -6
  6. package/dist/{GrantUserList-CmeAG1Gy.js → GrantUserList-Bmgie1HE.js} +8 -8
  7. package/dist/{Main-DTAb8QWQ.js → Main-B1e9eyqv.js} +11 -11
  8. package/dist/{Main-DLh6VmQX.js → Main-BKt8r7Ut.js} +8 -8
  9. package/dist/{Main-BUTiZtwj.js → Main-SBhiLPdR.js} +5 -5
  10. package/dist/{PermissionSetList-BtaX2k3V.js → PermissionSetList-CMOKTS_m.js} +18 -19
  11. package/dist/{PortalPermissionEditor.vue_vue_type_script_setup_true_lang-B6dR75q1.js → PortalPermissionEditor.vue_vue_type_script_setup_true_lang-K1Ad4e-f.js} +767 -767
  12. package/dist/{PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-DQcgZ0nF.js → PortalUserSearcher.vue_vue_type_style_index_0_scoped_827dfd60_lang-XHuHin8t.js} +1 -1
  13. package/dist/{RoleList-Qyyi7w2u.js → RoleList-DcbQo51I.js} +20 -21
  14. package/dist/SelectFilter-ATOm0hdn.js +269 -0
  15. package/dist/{TeamMemberList-CC_okKtX.js → TeamMemberList-Bvjq14lE.js} +24 -25
  16. package/dist/{TimesheetList-ULjiy1OT.js → TimesheetList-CybTPHdT.js} +10 -10
  17. package/dist/{TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-D9xXvYuA.js → TimesheetList.vue_vue_type_style_index_0_scoped_63294af2_lang-CGmVMnqS.js} +3 -3
  18. package/dist/{app-COD0IHk1.js → app-CEcv-vMB.js} +2893 -3966
  19. package/dist/app.js +1 -1
  20. package/dist/{approval-code-BXUiojPH.js → approval-code-jIjkeVEb.js} +1 -1
  21. package/dist/{dayjs.min-jNfjc_8X.js → dayjs.min-yw8fgQPr.js} +1 -1
  22. package/dist/{employee-Db1gyZQZ.js → employee-ByRgP_2p.js} +28 -29
  23. package/dist/{grant-user-CBJ3gEgW.js → grant-user-SNiDV22U.js} +1 -1
  24. package/dist/{iteration-z1uPD-7T.js → iteration-B3Z1Ojal.js} +1 -1
  25. package/dist/{lodash-uwLYB3oL.js → lodash-D2BUlQJ1.js} +1 -1
  26. package/dist/{restaurant-D2mfKHaH.js → restaurant-BTpBmfBV.js} +224 -230
  27. package/dist/{role-BhO6Cl-l.js → role-_BDO50Cj.js} +2 -2
  28. package/dist/{rule-BZ340_dr.js → rule-FuP71XrW.js} +36 -36
  29. package/dist/src/api/restaurant/index.d.ts +0 -2
  30. package/dist/src/composables/useDiscardConfirm.d.ts +1 -3
  31. package/dist/src/composables/useMessage.d.ts +2 -8
  32. package/dist/src/router/shared.d.ts +1 -4
  33. package/dist/src/types/employee.d.ts +0 -1
  34. package/dist/src/views/audit-log/locales/index.d.ts +0 -252
  35. package/dist/src/views/team/components/PortalConditionForm.vue.d.ts +2 -2
  36. package/dist/src/views/team/condition-builders/ConditionBuilderForm.vue.d.ts +2 -2
  37. package/dist/style.css +1 -1
  38. package/dist/tsconfig.app.tsbuildinfo +1 -1
  39. package/dist/{useAppStore-DZCdxlCd.js → useAppStore-DCwd8GWN.js} +1 -1
  40. package/dist/useDiscardConfirm-DPhEV6v0.js +157 -0
  41. package/dist/{useLoading-Nygx2zn8.js → useLoading-CXzTpIVv.js} +1 -1
  42. package/dist/{useReportPermissions-BjkeMcNA.js → useReportPermissions-5AYWAQ8e.js} +3 -3
  43. package/package.json +2 -4
  44. package/dist/ResponsiveContextMenu.vue_vue_type_script_setup_true_lang-mSJFKo7r.js +0 -132
  45. package/dist/ScheduleAddPositionModal.vue_vue_type_script_setup_true_lang-EPVMITc0.js +0 -532
  46. package/dist/ScheduleGeneralPage-CjZ8OFnN.js +0 -776
  47. package/dist/ScheduleModal.vue_vue_type_script_setup_true_lang-KOLBDv21.js +0 -2430
  48. package/dist/SchedulePage-BWpgAx3a.js +0 -18831
  49. package/dist/SchedulePositionPage-Cu6rRBlZ.js +0 -262
  50. package/dist/SelectFilter-D58Vrs_W.js +0 -264
  51. package/dist/object-Dwyg2LgX.js +0 -16
  52. package/dist/src/api/schedule/index.d.ts +0 -63
  53. package/dist/src/components/layout/PortalShell.vue.d.ts +0 -12
  54. package/dist/src/components/layout/withScheduleShell.d.ts +0 -10
  55. package/dist/src/types/schedule.d.ts +0 -23
  56. package/dist/src/views/scheduling/ScheduleGeneralPage.vue.d.ts +0 -3
  57. package/dist/src/views/scheduling/SchedulePage.vue.d.ts +0 -3
  58. package/dist/src/views/scheduling/SchedulePositionPage.vue.d.ts +0 -3
  59. package/dist/src/views/scheduling/components/ScheduleAddEmployeeIdentitySection.vue.d.ts +0 -6
  60. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModal.vue.d.ts +0 -12
  61. package/dist/src/views/scheduling/components/ScheduleAddEmployeeModeStep.vue.d.ts +0 -6
  62. package/dist/src/views/scheduling/components/ScheduleAddEmployeePosAccessSection.vue.d.ts +0 -6
  63. package/dist/src/views/scheduling/components/ScheduleAddEmployeePositionsSection.vue.d.ts +0 -10
  64. package/dist/src/views/scheduling/components/ScheduleAddEmployeeSchedulingSection.vue.d.ts +0 -6
  65. package/dist/src/views/scheduling/components/ScheduleAddPickPopover.vue.d.ts +0 -6
  66. package/dist/src/views/scheduling/components/ScheduleAddPositionModal.vue.d.ts +0 -6
  67. package/dist/src/views/scheduling/components/ScheduleAreaRows.vue.d.ts +0 -39
  68. package/dist/src/views/scheduling/components/ScheduleAutoScheduleDetailsModal.vue.d.ts +0 -6
  69. package/dist/src/views/scheduling/components/ScheduleAutoScheduleModal.vue.d.ts +0 -10
  70. package/dist/src/views/scheduling/components/ScheduleBoardAreaRows.vue.d.ts +0 -24
  71. package/dist/src/views/scheduling/components/ScheduleBoardEditOverlays.vue.d.ts +0 -17
  72. package/dist/src/views/scheduling/components/ScheduleBoardEmployeeRows.vue.d.ts +0 -31
  73. package/dist/src/views/scheduling/components/ScheduleBoardGridHeader.vue.d.ts +0 -24
  74. package/dist/src/views/scheduling/components/ScheduleBoardInteractionOverlays.vue.d.ts +0 -32
  75. package/dist/src/views/scheduling/components/ScheduleBoardOnboardingOverlays.vue.d.ts +0 -26
  76. package/dist/src/views/scheduling/components/ScheduleBoardRails.vue.d.ts +0 -17
  77. package/dist/src/views/scheduling/components/ScheduleBoardToolbar.vue.d.ts +0 -38
  78. package/dist/src/views/scheduling/components/ScheduleBoardUtilityOverlays.vue.d.ts +0 -22
  79. package/dist/src/views/scheduling/components/ScheduleButton.vue.d.ts +0 -23
  80. package/dist/src/views/scheduling/components/ScheduleChangeEmployeeModal.vue.d.ts +0 -8
  81. package/dist/src/views/scheduling/components/ScheduleCloneOutletModal.vue.d.ts +0 -6
  82. package/dist/src/views/scheduling/components/ScheduleCoach.vue.d.ts +0 -6
  83. package/dist/src/views/scheduling/components/ScheduleCompletionDialog.vue.d.ts +0 -15
  84. package/dist/src/views/scheduling/components/ScheduleConfirmModal.vue.d.ts +0 -35
  85. package/dist/src/views/scheduling/components/ScheduleContextMenu.vue.d.ts +0 -17
  86. package/dist/src/views/scheduling/components/ScheduleCostRail.vue.d.ts +0 -8
  87. package/dist/src/views/scheduling/components/ScheduleCostRailEmptyArt.vue.d.ts +0 -2
  88. package/dist/src/views/scheduling/components/ScheduleDateRangePopover.vue.d.ts +0 -6
  89. package/dist/src/views/scheduling/components/ScheduleDayNotePopover.vue.d.ts +0 -6
  90. package/dist/src/views/scheduling/components/ScheduleDayTimeline.vue.d.ts +0 -12
  91. package/dist/src/views/scheduling/components/ScheduleDemandRow.vue.d.ts +0 -23
  92. package/dist/src/views/scheduling/components/ScheduleDemandSheet.vue.d.ts +0 -10
  93. package/dist/src/views/scheduling/components/ScheduleDotsIcon.vue.d.ts +0 -2
  94. package/dist/src/views/scheduling/components/ScheduleEmployeeDetailPanel.vue.d.ts +0 -12
  95. package/dist/src/views/scheduling/components/ScheduleEmployeeIdentity.vue.d.ts +0 -17
  96. package/dist/src/views/scheduling/components/ScheduleExportPreview.vue.d.ts +0 -7
  97. package/dist/src/views/scheduling/components/ScheduleFilterBar.vue.d.ts +0 -18
  98. package/dist/src/views/scheduling/components/ScheduleGapPopover.vue.d.ts +0 -6
  99. package/dist/src/views/scheduling/components/ScheduleGridHeader.vue.d.ts +0 -18
  100. package/dist/src/views/scheduling/components/ScheduleGridSkeleton.vue.d.ts +0 -2
  101. package/dist/src/views/scheduling/components/ScheduleLeaveEditModal.vue.d.ts +0 -6
  102. package/dist/src/views/scheduling/components/ScheduleLoadState.vue.d.ts +0 -9
  103. package/dist/src/views/scheduling/components/ScheduleModal.vue.d.ts +0 -26
  104. package/dist/src/views/scheduling/components/ScheduleOnboardingAssignPositionModal.vue.d.ts +0 -6
  105. package/dist/src/views/scheduling/components/ScheduleOnboardingClosedDayConfirm.vue.d.ts +0 -6
  106. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandDays.vue.d.ts +0 -6
  107. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandFooter.vue.d.ts +0 -6
  108. package/dist/src/views/scheduling/components/ScheduleOnboardingDemandHeader.vue.d.ts +0 -6
  109. package/dist/src/views/scheduling/components/ScheduleOnboardingDoneArt.vue.d.ts +0 -2
  110. package/dist/src/views/scheduling/components/ScheduleOnboardingHoursProfileNotice.vue.d.ts +0 -10
  111. package/dist/src/views/scheduling/components/ScheduleOnboardingPositions.vue.d.ts +0 -6
  112. package/dist/src/views/scheduling/components/ScheduleOnboardingReview.vue.d.ts +0 -6
  113. package/dist/src/views/scheduling/components/ScheduleOnboardingSettings.vue.d.ts +0 -6
  114. package/dist/src/views/scheduling/components/ScheduleOnboardingWelcome.vue.d.ts +0 -11
  115. package/dist/src/views/scheduling/components/ScheduleOnboardingWizard.vue.d.ts +0 -9
  116. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardFooter.vue.d.ts +0 -6
  117. package/dist/src/views/scheduling/components/ScheduleOnboardingWizardHeader.vue.d.ts +0 -11
  118. package/dist/src/views/scheduling/components/SchedulePublishModal.vue.d.ts +0 -8
  119. package/dist/src/views/scheduling/components/SchedulePublishShareArt.vue.d.ts +0 -2
  120. package/dist/src/views/scheduling/components/ScheduleReviewBar.vue.d.ts +0 -12
  121. package/dist/src/views/scheduling/components/ScheduleSelect.vue.d.ts +0 -70
  122. package/dist/src/views/scheduling/components/ScheduleSelectExistingEmployeeModal.vue.d.ts +0 -6
  123. package/dist/src/views/scheduling/components/ScheduleSetupBanner.vue.d.ts +0 -12
  124. package/dist/src/views/scheduling/components/ScheduleShiftCell.vue.d.ts +0 -35
  125. package/dist/src/views/scheduling/components/ScheduleShiftHeadcountEditor.vue.d.ts +0 -10
  126. package/dist/src/views/scheduling/components/ScheduleShiftImpact.vue.d.ts +0 -6
  127. package/dist/src/views/scheduling/components/ScheduleShiftMoreOptions.vue.d.ts +0 -8
  128. package/dist/src/views/scheduling/components/ScheduleShiftPopover.vue.d.ts +0 -16
  129. package/dist/src/views/scheduling/components/ScheduleShiftRepeatDaysRow.vue.d.ts +0 -8
  130. package/dist/src/views/scheduling/components/ScheduleShiftSegmentsEditor.vue.d.ts +0 -8
  131. package/dist/src/views/scheduling/components/ScheduleShiftWhoPicker.vue.d.ts +0 -25
  132. package/dist/src/views/scheduling/components/ScheduleStaffRail.vue.d.ts +0 -16
  133. package/dist/src/views/scheduling/components/ScheduleStaffRows.vue.d.ts +0 -50
  134. package/dist/src/views/scheduling/components/ScheduleStatsRow.vue.d.ts +0 -12
  135. package/dist/src/views/scheduling/components/ScheduleSwapShiftsModal.vue.d.ts +0 -8
  136. package/dist/src/views/scheduling/components/ScheduleTimePickerPopover.vue.d.ts +0 -6
  137. package/dist/src/views/scheduling/components/ScheduleTopbar.vue.d.ts +0 -20
  138. package/dist/src/views/scheduling/composables/auto-schedule-mapping.d.ts +0 -33
  139. package/dist/src/views/scheduling/composables/onboarding-constants.d.ts +0 -5
  140. package/dist/src/views/scheduling/composables/onboarding-hours.d.ts +0 -7
  141. package/dist/src/views/scheduling/composables/onboarding-types.d.ts +0 -51
  142. package/dist/src/views/scheduling/composables/remyPrompt.d.ts +0 -15
  143. package/dist/src/views/scheduling/composables/schedule-add-employee-form.d.ts +0 -82
  144. package/dist/src/views/scheduling/composables/schedule-board-helpers.d.ts +0 -63
  145. package/dist/src/views/scheduling/composables/schedule-breaks.d.ts +0 -9
  146. package/dist/src/views/scheduling/composables/schedule-calendar.d.ts +0 -7
  147. package/dist/src/views/scheduling/composables/schedule-cost.d.ts +0 -19
  148. package/dist/src/views/scheduling/composables/schedule-day-meta.d.ts +0 -21
  149. package/dist/src/views/scheduling/composables/schedule-demand-domain.d.ts +0 -23
  150. package/dist/src/views/scheduling/composables/schedule-employee-profile.d.ts +0 -7
  151. package/dist/src/views/scheduling/composables/schedule-error.d.ts +0 -3
  152. package/dist/src/views/scheduling/composables/schedule-export-matrix.d.ts +0 -14
  153. package/dist/src/views/scheduling/composables/schedule-popover-position.d.ts +0 -16
  154. package/dist/src/views/scheduling/composables/schedule-quick-pick.d.ts +0 -22
  155. package/dist/src/views/scheduling/composables/schedule-shift-time.d.ts +0 -26
  156. package/dist/src/views/scheduling/composables/schedule-time.d.ts +0 -8
  157. package/dist/src/views/scheduling/composables/schedule-week-cache.d.ts +0 -7
  158. package/dist/src/views/scheduling/composables/useCollapsedList.d.ts +0 -9
  159. package/dist/src/views/scheduling/composables/useRemyAppStore.d.ts +0 -16
  160. package/dist/src/views/scheduling/composables/useScheduleAddEmployee.d.ts +0 -119
  161. package/dist/src/views/scheduling/composables/useScheduleAddPick.d.ts +0 -73
  162. package/dist/src/views/scheduling/composables/useScheduleAreaBoard.d.ts +0 -50
  163. package/dist/src/views/scheduling/composables/useScheduleAreaDragDrop.d.ts +0 -12
  164. package/dist/src/views/scheduling/composables/useScheduleAssignmentMutations.d.ts +0 -13
  165. package/dist/src/views/scheduling/composables/useScheduleAutoSchedule.d.ts +0 -296
  166. package/dist/src/views/scheduling/composables/useScheduleBoard.d.ts +0 -611
  167. package/dist/src/views/scheduling/composables/useScheduleCellState.d.ts +0 -27
  168. package/dist/src/views/scheduling/composables/useScheduleClashDetection.d.ts +0 -28
  169. package/dist/src/views/scheduling/composables/useScheduleCloneOutletModal.d.ts +0 -21
  170. package/dist/src/views/scheduling/composables/useScheduleCoach.d.ts +0 -80
  171. package/dist/src/views/scheduling/composables/useScheduleCopyWeek.d.ts +0 -12
  172. package/dist/src/views/scheduling/composables/useScheduleCostRail.d.ts +0 -60
  173. package/dist/src/views/scheduling/composables/useScheduleDayNote.d.ts +0 -44
  174. package/dist/src/views/scheduling/composables/useScheduleDayTimeline.d.ts +0 -97
  175. package/dist/src/views/scheduling/composables/useScheduleDemand.d.ts +0 -59
  176. package/dist/src/views/scheduling/composables/useScheduleDemandRow.d.ts +0 -47
  177. package/dist/src/views/scheduling/composables/useScheduleDemandSheet.d.ts +0 -166
  178. package/dist/src/views/scheduling/composables/useScheduleDragDrop.d.ts +0 -55
  179. package/dist/src/views/scheduling/composables/useScheduleEmployeeAccess.d.ts +0 -24
  180. package/dist/src/views/scheduling/composables/useScheduleEmployeeAvailability.d.ts +0 -13
  181. package/dist/src/views/scheduling/composables/useScheduleEmployeeCandidates.d.ts +0 -30
  182. package/dist/src/views/scheduling/composables/useScheduleEmployeeCompensation.d.ts +0 -7
  183. package/dist/src/views/scheduling/composables/useScheduleEmployeeForm.d.ts +0 -22
  184. package/dist/src/views/scheduling/composables/useScheduleEmployeeIdentity.d.ts +0 -50
  185. package/dist/src/views/scheduling/composables/useScheduleEmployeeMenu.d.ts +0 -38
  186. package/dist/src/views/scheduling/composables/useScheduleEmployeePersistence.d.ts +0 -30
  187. package/dist/src/views/scheduling/composables/useScheduleEmployeeProfile.d.ts +0 -16
  188. package/dist/src/views/scheduling/composables/useScheduleEmployeeValidation.d.ts +0 -18
  189. package/dist/src/views/scheduling/composables/useScheduleExport.d.ts +0 -51
  190. package/dist/src/views/scheduling/composables/useScheduleFilterBar.d.ts +0 -14
  191. package/dist/src/views/scheduling/composables/useScheduleGapPopover.d.ts +0 -79
  192. package/dist/src/views/scheduling/composables/useScheduleLeave.d.ts +0 -59
  193. package/dist/src/views/scheduling/composables/useScheduleLegend.d.ts +0 -15
  194. package/dist/src/views/scheduling/composables/useScheduleOnboardingAvailability.d.ts +0 -58
  195. package/dist/src/views/scheduling/composables/useScheduleOnboardingDemand.d.ts +0 -45
  196. package/dist/src/views/scheduling/composables/useScheduleOnboardingEmployees.d.ts +0 -231
  197. package/dist/src/views/scheduling/composables/useScheduleOnboardingFlow.d.ts +0 -9
  198. package/dist/src/views/scheduling/composables/useScheduleOnboardingHours.d.ts +0 -15
  199. package/dist/src/views/scheduling/composables/useScheduleOnboardingNavigation.d.ts +0 -11
  200. package/dist/src/views/scheduling/composables/useScheduleOnboardingPersistence.d.ts +0 -13
  201. package/dist/src/views/scheduling/composables/useScheduleOnboardingWizard.d.ts +0 -1520
  202. package/dist/src/views/scheduling/composables/useScheduleOutlet.d.ts +0 -24
  203. package/dist/src/views/scheduling/composables/useSchedulePageActions.d.ts +0 -18
  204. package/dist/src/views/scheduling/composables/useSchedulePageBootstrap.d.ts +0 -9
  205. package/dist/src/views/scheduling/composables/useSchedulePageCellActions.d.ts +0 -21
  206. package/dist/src/views/scheduling/composables/useSchedulePageCellDrop.d.ts +0 -18
  207. package/dist/src/views/scheduling/composables/useSchedulePageClearActions.d.ts +0 -21
  208. package/dist/src/views/scheduling/composables/useSchedulePageEmployeeActions.d.ts +0 -22
  209. package/dist/src/views/scheduling/composables/useSchedulePageOverlays.d.ts +0 -21
  210. package/dist/src/views/scheduling/composables/useSchedulePdfExport.d.ts +0 -19
  211. package/dist/src/views/scheduling/composables/useSchedulePositionModal.d.ts +0 -55
  212. package/dist/src/views/scheduling/composables/useSchedulePositions.d.ts +0 -35
  213. package/dist/src/views/scheduling/composables/useSchedulePublish.d.ts +0 -126
  214. package/dist/src/views/scheduling/composables/useSchedulePublishPersistence.d.ts +0 -11
  215. package/dist/src/views/scheduling/composables/useScheduleRangeCalendar.d.ts +0 -27
  216. package/dist/src/views/scheduling/composables/useScheduleRoster.d.ts +0 -313
  217. package/dist/src/views/scheduling/composables/useScheduleSettings.d.ts +0 -40
  218. package/dist/src/views/scheduling/composables/useScheduleSetupBanner.d.ts +0 -17
  219. package/dist/src/views/scheduling/composables/useScheduleShiftActions.d.ts +0 -240
  220. package/dist/src/views/scheduling/composables/useScheduleShiftDraft.d.ts +0 -63
  221. package/dist/src/views/scheduling/composables/useScheduleShiftPersistence.d.ts +0 -17
  222. package/dist/src/views/scheduling/composables/useScheduleShiftPopover.d.ts +0 -255
  223. package/dist/src/views/scheduling/composables/useScheduleStatsRow.d.ts +0 -27
  224. package/dist/src/views/scheduling/composables/useScheduleTimePicker.d.ts +0 -49
  225. package/dist/src/views/scheduling/composables/useScheduleTour.d.ts +0 -95
  226. package/dist/src/views/scheduling/composables/useScheduleViewportFit.d.ts +0 -9
  227. package/dist/src/views/scheduling/country-rules/index.d.ts +0 -29
  228. package/dist/src/views/scheduling/data.d.ts +0 -123
  229. package/dist/src/views/scheduling/locales/index.d.ts +0 -688
  230. package/dist/src/views/scheduling/schedule-constants.d.ts +0 -7
  231. package/dist/src/views/scheduling/schedule-state.d.ts +0 -767
  232. package/dist/src/views/scheduling/schedule-store.d.ts +0 -135
  233. package/dist/src/views/scheduling/types.d.ts +0 -380
  234. package/dist/useDiscardConfirm-CzZSPyvh.js +0 -28
@@ -1,2430 +0,0 @@
1
- import { onMounted as Le, onBeforeUnmount as Ie, ref as P, reactive as T, shallowRef as we, watch as Te, computed as Y, defineComponent as Re, createElementBlock as k, openBlock as b, renderSlot as Ve, useAttrs as ua, nextTick as Pe, normalizeClass as pe, createElementVNode as x, createBlock as da, mergeProps as ca, toDisplayString as W, Teleport as ma, createCommentVNode as z, withDirectives as ya, vModelText as pa, Fragment as He, renderList as fa, createTextVNode as ha, withModifiers as va, normalizeStyle as ga } from "vue";
2
- import { useRoute as Da, useRouter as wa } from "vue-router";
3
- import { useCoreStore as Ke } from "@feedmepos/mf-common";
4
- import { g, b as h, u as Ha } from "./restaurant-D2mfKHaH.js";
5
- import { E as be, u as Ge } from "./employee-Db1gyZQZ.js";
6
- import { t as Oe, q as Aa } from "./rule-BZ340_dr.js";
7
- function jn(e) {
8
- let a = null;
9
- function t() {
10
- if (!a) return;
11
- a.style.height = "";
12
- const n = a.getBoundingClientRect().top;
13
- a.style.height = `${Math.max(0, window.innerHeight - n)}px`;
14
- }
15
- Le(() => {
16
- var n;
17
- a = ((n = e.value) == null ? void 0 : n.closest(".sch-page")) ?? null, t(), window.addEventListener("resize", t);
18
- }), Ie(() => {
19
- window.removeEventListener("resize", t), a && (a.style.height = "");
20
- });
21
- }
22
- function ke(e) {
23
- const [a, t] = String(e || "0:0").split(":").map(Number);
24
- return (Number.isFinite(a) ? a : 0) * 60 + (Number.isFinite(t) ? t : 0);
25
- }
26
- function Ea(e) {
27
- const a = Math.max(0, Math.min(1439, Math.round(e)));
28
- return `${String(Math.floor(a / 60)).padStart(2, "0")}:${String(a % 60).padStart(2, "0")}`;
29
- }
30
- function Pa(e, a) {
31
- const t = ke(e);
32
- let n = ke(a);
33
- return n <= t && (n += 1440), [t, n];
34
- }
35
- function je(e, a) {
36
- const [t, n] = Pa(e, a);
37
- return Math.max(0, n - t);
38
- }
39
- function ba(e) {
40
- const a = (ke(e) % 1440 + 1440) % 1440, t = Math.floor(a / 60), n = a % 60, s = t < 12 ? "am" : "pm", i = t % 12 || 12;
41
- return n ? `${i}:${String(n).padStart(2, "0")}${s}` : `${i}${s}`;
42
- }
43
- function Qn(e) {
44
- return ba(Ea(e % 1440));
45
- }
46
- function Qe(e) {
47
- const a = Array.isArray(e) ? e : e == null ? void 0 : e.breaks;
48
- return a != null && a.length ? a.reduce((t, n) => {
49
- if (n.type === "DURATION") return t + n.minutes;
50
- const [s, i] = n.startTime.split(":").map(Number), [r, o] = n.endTime.split(":").map(Number);
51
- let d = r * 60 + o - (s * 60 + i);
52
- return d < 0 && (d += 24 * 60), t + d;
53
- }, 0) : Math.max(0, e && !Array.isArray(e) ? e.breakMins ?? 0 : 0);
54
- }
55
- function Xn(e, a) {
56
- var s;
57
- const t = a ?? je(e.start, e.end), n = (s = e.breaks) != null && s.length ? e.breaks.reduce((i, r) => i + (r.breakPayType === "UNPAID" ? Qe([r]) : 0), 0) : Math.max(0, e.breakMins ?? 0);
58
- return Math.max(0, t - Math.min(t, n));
59
- }
60
- function Jn(e) {
61
- const a = Math.max(0, Math.round(e ?? 0));
62
- return a ? [{ type: "DURATION", minutes: a, breakPayType: "UNPAID" }] : [];
63
- }
64
- const te = 500, ka = 10, $e = 6, Zn = 1500, Xe = 1e6, H = {
65
- async completeOnboarding(e, a) {
66
- return g(
67
- await h(`restaurants/${e}/schedules`).post("onboarding", a)
68
- );
69
- },
70
- async listEmployeeProfiles(e) {
71
- return g(
72
- await h("schedules").get("employees", {
73
- params: e != null && e.length ? { ids: e.join(",") } : void 0
74
- })
75
- );
76
- },
77
- async listEmployeeConfigs(e) {
78
- return g(
79
- await h(`restaurants/${e}/schedules`).get("employee-configs")
80
- );
81
- },
82
- async saveEmployeeConfigs(e, a) {
83
- return g(
84
- await h(`restaurants/${e}/schedules`).post(
85
- "employee-configs/reorder",
86
- a
87
- )
88
- );
89
- },
90
- async getSettings(e) {
91
- return g(
92
- await h(`restaurants/${e}/schedules`).get("settings")
93
- );
94
- },
95
- async saveSettings(e, a) {
96
- return g(
97
- await h(`restaurants/${e}/schedules`).post("settings", a)
98
- );
99
- },
100
- async generateAutoSchedule(e, a) {
101
- return g(
102
- await h(`restaurants/${e}/schedules`).post(
103
- "auto-schedule/generate",
104
- a
105
- )
106
- );
107
- },
108
- async getAutoScheduleCapabilities(e) {
109
- return g(
110
- await h(`restaurants/${e}/schedules`).get(
111
- "auto-schedule/capabilities"
112
- )
113
- );
114
- },
115
- async applyAutoSchedule(e, a) {
116
- return g(
117
- await h(`restaurants/${e}/schedules`).post(
118
- "auto-schedule/apply",
119
- a
120
- )
121
- );
122
- },
123
- /** One outlet's whole board over `[from, to]` (inclusive, 'YYYY-MM-DD'). */
124
- async readBoard(e, a, t) {
125
- return g(
126
- await h(`restaurants/${e}/schedules`).get("board", {
127
- params: { from: a, to: t }
128
- })
129
- );
130
- },
131
- async createTimeOff(e, a) {
132
- return g(
133
- await h(`restaurants/${e}/schedules`).post("time-off", a)
134
- );
135
- },
136
- async updateTimeOffStatus(e, a, t) {
137
- return g(
138
- await h(`restaurants/${e}/schedules`).post(
139
- `time-off/${a}/status`,
140
- t
141
- )
142
- );
143
- },
144
- async deleteTimeOff(e, a) {
145
- await h(`restaurants/${e}/schedules`).delete(`time-off/${a}`);
146
- },
147
- /** Creates or updates the employee's shared business-level scheduling profile. */
148
- async createEmployeeProfile(e, a) {
149
- return g(await h("schedules").post("employees", a));
150
- },
151
- /** Edits the employee's shared business-level scheduling profile. */
152
- async updateEmployeeProfile(e, a, t) {
153
- return g(
154
- await h("schedules").post("employees", { employeeId: a, ...t })
155
- );
156
- },
157
- async validatePosAccess(e) {
158
- await h("schedules").post("employees/validate-pos-access", e);
159
- },
160
- /** Positions are shared across the business. */
161
- async createPosition(e) {
162
- return g(await h("schedules").post("positions", e));
163
- },
164
- async updatePosition(e, a) {
165
- return g(await h("schedules").post(`positions/${e}`, a));
166
- },
167
- /** Deleting one position is `deletePositions` with a single-id array — the backend's
168
- * `DELETE positions/:id` route is gone; this is now `DELETE positions?ids=`. */
169
- async deletePosition(e) {
170
- await h("schedules").delete("positions", {
171
- params: { ids: e }
172
- });
173
- },
174
- /** Creates one flat demand interval. */
175
- async createDemand(e, a) {
176
- return g(
177
- await h(`restaurants/${e}/schedules`).post("demands", a)
178
- );
179
- },
180
- /** Deletes a batch of demands in one request — e.g. `saveDemand` replacing a whole
181
- * day/weekday's demand rows wholesale. Deleting one demand is just this with a single-id
182
- * array. */
183
- async deleteDemands(e, a) {
184
- return g(
185
- await h(`restaurants/${e}/schedules`).delete("demands", {
186
- params: { ids: a.join(",") }
187
- })
188
- );
189
- },
190
- /** Atomically replaces one date/weekday's flattened demand rows. */
191
- async replaceDemands(e, a) {
192
- return g(
193
- await h(`restaurants/${e}/schedules`).post(
194
- "demands/replace",
195
- a
196
- )
197
- );
198
- },
199
- /** Atomically replaces several date/weekday demand generations. */
200
- async bulkReplaceDemands(e, a) {
201
- return g(
202
- await h(`restaurants/${e}/schedules`).post(
203
- "demands/bulk-replace",
204
- a
205
- )
206
- );
207
- },
208
- /** Replaces one date's note/holiday-mark. All three fields back to empty/false clears it. */
209
- async saveScheduleDay(e, a, t) {
210
- return g(
211
- await h(`restaurants/${e}/schedules`).post(
212
- `days/${a}`,
213
- t
214
- )
215
- );
216
- },
217
- /** A one-off shift assignment. */
218
- async createAssignment(e, a) {
219
- return g(
220
- await h(`restaurants/${e}/schedules`).post("assignments", a)
221
- );
222
- },
223
- async updateAssignment(e, a, t) {
224
- return g(
225
- await h(`restaurants/${e}/schedules`).patch(
226
- `assignments/${a}`,
227
- t
228
- )
229
- );
230
- },
231
- /** Atomically applies assignment updates, creates, and deletes used by moves and swaps. */
232
- async bulkSaveAssignments(e, a) {
233
- return g(
234
- await h(`restaurants/${e}/schedules`).post(
235
- "assignments/bulk",
236
- a
237
- )
238
- );
239
- },
240
- /** Replaces demand and/or assignments in one backend transaction. */
241
- async copySchedule(e, a) {
242
- return g(
243
- await h(`restaurants/${e}/schedules`).post("copy", a)
244
- );
245
- },
246
- /** Clears demand and/or assignments in one backend transaction. */
247
- async clearSchedule(e, a) {
248
- return g(
249
- await h(`restaurants/${e}/schedules`).post("clear", a)
250
- );
251
- },
252
- /** Deletes a batch of assignments in one request — e.g. a shift split into several segments
253
- * getting replaced wholesale. Deleting one assignment is just this with a single-id
254
- * array. */
255
- async deleteAssignments(e, a) {
256
- return g(
257
- await h(`restaurants/${e}/schedules`).delete("assignments", {
258
- params: { ids: a.join(",") }
259
- })
260
- );
261
- },
262
- /** Flips a batch of assignments to one status in a single request — e.g. Publish sending
263
- * every DRAFT shift on the board to PUBLISHED at once. */
264
- async bulkUpdateAssignmentStatus(e, a) {
265
- return g(
266
- await h(`restaurants/${e}/schedules`).patch(
267
- "assignments/bulk-status",
268
- a
269
- )
270
- );
271
- }
272
- }, Je = {
273
- payload: we(null),
274
- loading: P(!1),
275
- rosterLoading: P(!1),
276
- loadError: P(null),
277
- scheduleSetupCompleted: P(!1),
278
- dataVersion: P(0),
279
- outletId: P(""),
280
- restaurantEmployees: P([]),
281
- employeeConfigs: P([]),
282
- employeeOutletIds: we({}),
283
- businessEmployees: we([]),
284
- positions: T([]),
285
- positionRecords: T([]),
286
- rolePositions: T({}),
287
- outlet: T({ name: "" }),
288
- locationOptions: T([]),
289
- locationLabelById: T({}),
290
- departmentOptions: T([]),
291
- compensationGroupOptions: T([]),
292
- compensationGroupMeta: T({}),
293
- existingStaff: T([]),
294
- shiftTemplates: T([]),
295
- rules: T({
296
- coverage: {},
297
- openFrom: "00:00",
298
- openTo: "24:00",
299
- dayHours: Array.from({ length: 7 }, () => []),
300
- payRate: {
301
- NORMAL: { overtime: 1.5 },
302
- REST_DAY: { regular: 1, overtime: 2 },
303
- PUBLIC_HOLIDAY: { regular: 2, overtime: 3 }
304
- },
305
- salesForecast: 0,
306
- closedWeekdays: [],
307
- labourTarget: 0,
308
- budgetFromSales: !1,
309
- budget: 0,
310
- otCapHours: null,
311
- workingHours: {
312
- minHoursPerDay: null,
313
- maxHoursPerDay: 8,
314
- maxHoursPerWeek: 45
315
- },
316
- otBudget: 0,
317
- notify: {
318
- waConnected: !1,
319
- waNumber: "",
320
- waDisplayName: "",
321
- defaults: { wa: !1, push: !1, email: !1 }
322
- }
323
- })
324
- }, {
325
- payload: l,
326
- loading: xe,
327
- rosterLoading: Ye,
328
- loadError: fe,
329
- scheduleSetupCompleted: Ze,
330
- dataVersion: G,
331
- outletId: m,
332
- restaurantEmployees: re,
333
- employeeConfigs: F,
334
- employeeOutletIds: qe,
335
- businessEmployees: Ae,
336
- positions: Na,
337
- positionRecords: B,
338
- rolePositions: qn,
339
- outlet: Ca,
340
- locationOptions: Be,
341
- locationLabelById: oe,
342
- compensationGroupMeta: eo,
343
- existingStaff: ao,
344
- shiftTemplates: to,
345
- rules: N
346
- } = Je;
347
- function Sa() {
348
- const e = Je.rules;
349
- Object.keys(e.coverage).forEach((a) => delete e.coverage[a]), e.openFrom = "00:00", e.openTo = "24:00", e.dayHours.splice(0, e.dayHours.length, ...Array.from({ length: 7 }, () => [])), Object.assign(e.payRate.NORMAL, { overtime: 1.5 }), Object.assign(e.payRate.REST_DAY, { regular: 1, overtime: 2 }), Object.assign(e.payRate.PUBLIC_HOLIDAY, { regular: 2, overtime: 3 }), e.salesForecast = 0, e.closedWeekdays.splice(0, e.closedWeekdays.length), e.labourTarget = 0, e.budgetFromSales = !1, e.budget = 0, e.otCapHours = null, e.workingHours = {
350
- minHoursPerDay: null,
351
- maxHoursPerDay: 8,
352
- maxHoursPerWeek: 45
353
- }, e.otBudget = 0, Object.assign(e.notify, {
354
- waConnected: !1,
355
- waNumber: "",
356
- waDisplayName: "",
357
- defaults: { wa: !1, push: !1, email: !1 }
358
- });
359
- }
360
- const Ne = 7;
361
- function Ma(e) {
362
- const a = e.getFullYear(), t = String(e.getMonth() + 1).padStart(2, "0"), n = String(e.getDate()).padStart(2, "0");
363
- return `${a}-${t}-${n}`;
364
- }
365
- function se(e, a) {
366
- const t = new Date(e);
367
- return t.setDate(t.getDate() + a), t;
368
- }
369
- function Ce(e) {
370
- const a = new Date(e);
371
- return a.setHours(0, 0, 0, 0), a.setDate(a.getDate() - (a.getDay() + 6) % 7), a;
372
- }
373
- function no(e, a = /* @__PURE__ */ new Date()) {
374
- const t = se(Ce(a), e * Ne);
375
- return Array.from({ length: Ne }, (n, s) => se(t, s));
376
- }
377
- function oo(e, a) {
378
- const t = (i) => Date.UTC(i.getFullYear(), i.getMonth(), i.getDate()), n = t(Ce(e)), s = t(Ce(a));
379
- return Math.trunc((s - n) / (Ne * 24 * 60 * 60 * 1e3));
380
- }
381
- const j = Ma;
382
- let Q = null, X = null, V = null, ne = 0, he = null;
383
- function _e(e) {
384
- return e === m.value ? !1 : (Sa(), m.value = e, l.value = null, Q = null, X = null, fe.value = null, he = null, Ze.value = !1, re.value = [], F.value = [], V = null, ne += 1, G.value += 1, !0);
385
- }
386
- async function Se(e) {
387
- if (!(!e || he === e)) {
388
- Ye.value = !0;
389
- try {
390
- await La(e);
391
- } finally {
392
- Ye.value = !1;
393
- }
394
- }
395
- }
396
- async function La(e) {
397
- const a = await be.readEmployeesPage({
398
- limit: te,
399
- offset: 0,
400
- restaurantIds: [e]
401
- });
402
- e === m.value && (re.value = a.items, F.value = await H.listEmployeeConfigs(e), he = e, G.value += 1, $a().then((t) => {
403
- e === m.value && (qe.value = t, G.value += 1);
404
- }));
405
- }
406
- async function Ia(e) {
407
- const a = m.value;
408
- if (!a || !e.length) return;
409
- const t = await H.saveEmployeeConfigs(a, { configs: e });
410
- F.value = t, G.value += 1;
411
- }
412
- async function so(e) {
413
- const a = m.value;
414
- if (!a) throw new Error("No outlet selected");
415
- const t = await H.saveSettings(a, e);
416
- return m.value === a && l.value && (l.value = { ...l.value, settings: t }), t;
417
- }
418
- async function Ta(e, a) {
419
- const t = F.value.find((s) => s.employeeId === e), n = (t == null ? void 0 : t.displayOrder) ?? (a && F.value.some((s) => s.displayOrder !== null) ? Math.max(
420
- 0,
421
- ...F.value.filter(
422
- (s) => s.displayOrder !== null
423
- ).map((s) => s.displayOrder)
424
- ) + 100 : null);
425
- await Ia([{ employeeId: e, enabled: a, displayOrder: n }]);
426
- }
427
- async function Me() {
428
- const e = m.value;
429
- e && (he = null, await Se(e));
430
- }
431
- async function Ra(e, a) {
432
- const t = Ge(), n = (await K(!0)).find((o) => o._id === e);
433
- if (!n) throw new Error("Could not find this employee");
434
- const s = n.restaurantRole.map((o) => ({
435
- restaurantId: o.restaurantId,
436
- roleId: o.roleId
437
- })), i = a(s);
438
- if (!i.length)
439
- throw new Error(
440
- "An employee must keep at least 1 location, otherwise they are deleted. To delete them, use the Employee page."
441
- );
442
- (n.isMasterUser ? "master" : "user") === "master" ? await t.updateMasterEmployee(e, {
443
- user: { name: n.name, passcode: n.passcode, code: n.code ?? "" },
444
- roles: i,
445
- previousRoles: s
446
- }) : await t.updateEmployee(e, {
447
- user: { name: n.name, passcode: n.passcode },
448
- roles: i,
449
- previousRoles: s
450
- }), await K(!0);
451
- }
452
- async function io(e, a, t = "", n = !0) {
453
- const s = [...new Set(a.filter(Boolean))];
454
- s.length && (await Ra(e, (i) => [
455
- ...i.filter((r) => !s.includes(r.restaurantId)),
456
- ...s.map((r) => ({ restaurantId: r, roleId: t }))
457
- ]), n && m.value && s.includes(m.value) && await Ta(e, !0), await Me());
458
- }
459
- async function ro(e, a) {
460
- const t = Ge(), n = (await K(!0)).find(
461
- (p) => p._id === e
462
- );
463
- if (!n) throw new Error("Could not find this employee");
464
- const s = (p) => p.slice().sort((D, C) => D.restaurantId.localeCompare(C.restaurantId)).map((D) => `${D.restaurantId}:${D.roleId}`).join("|"), i = s(n.restaurantRole) !== s(a.roles), r = n.name !== a.name || n.passcode !== a.passcode || n.isMasterUser !== a.masterUser || a.masterUser && (n.code ?? "") !== a.masterCode;
465
- if (!i && !r) return;
466
- const o = n.restaurantRole.map((p) => ({
467
- restaurantId: p.restaurantId,
468
- roleId: p.roleId
469
- })), d = n.isMasterUser ? (await Oe.readTeamMembers()).find((p) => p.doc.posUserId === e) : void 0;
470
- if (d) {
471
- const p = Aa(), D = p.getPermissionAssignmentByUserId(d.id) ?? await p.readPermissionAssignmentByUserId(d.id), C = a.masterUser ? {
472
- code: a.masterCode,
473
- name: a.name,
474
- passcode: a.passcode,
475
- roles: a.roles
476
- } : null;
477
- await Oe.updateTeamMember(d.id, {
478
- permissions: d.permissions,
479
- customPermissions: (D == null ? void 0 : D.customPermissions) ?? d.permissions,
480
- permissionSetIds: (D == null ? void 0 : D.permissionSetIds) ?? d.doc.permissionSetIds ?? [],
481
- posUser: C
482
- }), await K(!0), await Me();
483
- return;
484
- }
485
- if (a.masterUser) {
486
- const p = {
487
- user: { name: a.name, passcode: a.passcode, code: a.masterCode },
488
- roles: a.roles,
489
- previousRoles: o
490
- };
491
- n.isMasterUser ? await t.updateMasterEmployee(e, p) : await t.migrateToMasterUser(e, p);
492
- } else
493
- n.isMasterUser ? await t.updateMasterEmployee(e, {
494
- user: { name: n.name, passcode: n.passcode, code: n.code ?? "" },
495
- roles: [],
496
- previousRoles: o
497
- }) : await t.updateEmployee(e, {
498
- user: { name: a.name, passcode: a.passcode },
499
- roles: a.roles,
500
- previousRoles: o
501
- });
502
- await K(!0), await Me();
503
- }
504
- let ae = null;
505
- async function Oa() {
506
- const e = await be.readEmployeesPage({
507
- limit: te,
508
- offset: 0,
509
- includeEmptyPasscode: !0
510
- }), a = Math.min(ka, Math.ceil(e.total / te)), t = await Promise.all(
511
- Array.from(
512
- { length: Math.max(0, a - 1) },
513
- (n, s) => be.readEmployeesPage({
514
- limit: te,
515
- offset: (s + 1) * te,
516
- includeEmptyPasscode: !0
517
- })
518
- )
519
- );
520
- return [...e.items, ...t.flatMap((n) => n.items)];
521
- }
522
- function K(e = !1) {
523
- if (!e) {
524
- if (ae) return ae;
525
- if (Ae.value.length) return Promise.resolve(Ae.value);
526
- }
527
- const a = Oa().then((t) => (Ae.value = t, t)).finally(() => {
528
- ae === a && (ae = null);
529
- });
530
- return ae = a, a;
531
- }
532
- async function $a() {
533
- const e = {};
534
- try {
535
- (await K()).forEach((a) => {
536
- e[a._id] = [...new Set(a.restaurantRole.map((t) => t.restaurantId))];
537
- });
538
- } catch {
539
- return e;
540
- }
541
- return e;
542
- }
543
- function Fe(e, a) {
544
- return Q !== null && X !== null && Q <= e && X >= a;
545
- }
546
- async function xa(e) {
547
- const a = j(e), t = j(se(e, 6));
548
- Fe(a, t) || V && (await V, Fe(a, t)) || await ea(
549
- se(e, -7 * $e),
550
- se(e, 7 * $e)
551
- );
552
- }
553
- async function lo() {
554
- !Q || !X || await ea(/* @__PURE__ */ new Date(`${Q}T00:00:00`), /* @__PURE__ */ new Date(`${X}T00:00:00`));
555
- }
556
- async function uo(e) {
557
- if (!m.value) throw new Error("No outlet selected");
558
- const a = await H.createEmployeeProfile(m.value, e);
559
- l.value && (l.value.employees.push(a), G.value += 1);
560
- }
561
- async function co(e) {
562
- await H.validatePosAccess(e);
563
- }
564
- async function mo(e, a) {
565
- if (!m.value) throw new Error("No outlet selected");
566
- const t = await H.updateEmployeeProfile(m.value, e, a);
567
- if (l.value) {
568
- const n = l.value.employees.findIndex((s) => s.employeeId === e);
569
- n > -1 && (l.value = {
570
- ...l.value,
571
- employees: l.value.employees.map((s, i) => i === n ? t : s)
572
- });
573
- }
574
- }
575
- async function yo(e) {
576
- const a = await H.createPosition(e);
577
- l.value && (l.value = { ...l.value, positions: [...l.value.positions, a] });
578
- }
579
- async function po(e, a) {
580
- const t = await H.updatePosition(e, a);
581
- if (l.value) {
582
- const n = l.value.positions.find((i) => i.id === e), s = (i) => i.positionId === e || !i.positionId && i.positionName === (n == null ? void 0 : n.name);
583
- l.value = {
584
- ...l.value,
585
- positions: l.value.positions.map((i) => i.id === e ? t : i),
586
- employees: l.value.employees.map((i) => ({
587
- ...i,
588
- primaryPosition: i.primaryPosition && s(i.primaryPosition) ? { ...i.primaryPosition, positionName: t.name } : i.primaryPosition,
589
- secondaryPositions: i.secondaryPositions.map(
590
- (r) => s(r) ? { ...r, positionName: t.name } : r
591
- )
592
- }))
593
- };
594
- }
595
- }
596
- async function fo(e) {
597
- await H.deletePosition(e), l.value && (l.value = {
598
- ...l.value,
599
- positions: l.value.positions.filter((a) => a.id !== e)
600
- });
601
- }
602
- async function ho(e, a) {
603
- var s;
604
- if (!m.value) throw new Error("No outlet selected");
605
- const t = (s = l.value) == null ? void 0 : s.days.find((i) => i.date === e), n = await H.saveScheduleDay(m.value, e, {
606
- ...a,
607
- expectedUpdatedAt: a.expectedUpdatedAt ?? (t == null ? void 0 : t.updatedAt)
608
- });
609
- if (l.value) {
610
- const i = l.value.days.filter((r) => r.date !== e);
611
- n && i.push(n), l.value = { ...l.value, days: i };
612
- }
613
- }
614
- function Ya(e) {
615
- const a = e.periods.flatMap((t) => {
616
- const n = (t.roles ?? []).filter((r) => r.positionName && r.headcount > 0), s = n.reduce((r, o) => r + o.headcount, 0), i = {
617
- startTime: t.startTime,
618
- endTime: t.endTime
619
- };
620
- return [
621
- ...n.map((r) => ({
622
- ...i,
623
- headcount: r.headcount,
624
- position: { positionId: r.positionId, positionName: r.positionName }
625
- })),
626
- ...t.headcount > s ? [{ ...i, headcount: t.headcount - s }] : []
627
- ];
628
- });
629
- return {
630
- date: e.date,
631
- demands: a
632
- };
633
- }
634
- async function vo(e) {
635
- if (!m.value) throw new Error("No outlet selected");
636
- if (!e.length) return;
637
- const a = e.map(Ya), t = e.length === 1 ? await H.replaceDemands(m.value, a[0]) : await H.bulkReplaceDemands(m.value, { replacements: a });
638
- if (l.value) {
639
- const n = new Set(e.map((i) => i.date)), s = l.value.demands.filter((i) => i.date === null || !n.has(i.date));
640
- l.value = { ...l.value, demands: [...s, ...t] };
641
- }
642
- }
643
- async function go(e) {
644
- if (!m.value) throw new Error("No outlet selected");
645
- return H.generateAutoSchedule(m.value, e);
646
- }
647
- async function Do() {
648
- if (!m.value) throw new Error("No outlet selected");
649
- return H.getAutoScheduleCapabilities(m.value);
650
- }
651
- async function wo(e) {
652
- if (!m.value) throw new Error("No outlet selected");
653
- return H.applyAutoSchedule(m.value, e);
654
- }
655
- async function Ho(e) {
656
- if (!m.value) throw new Error("No outlet selected");
657
- const a = await H.bulkSaveAssignments(m.value, e);
658
- if (l.value) {
659
- const t = new Set(e.deleteIds), n = new Map(
660
- l.value.assignments.filter((s) => !t.has(s.id)).map((s) => [s.id, s])
661
- );
662
- a.updated.forEach((s) => n.set(s.id, s)), a.created.forEach((s) => n.set(s.id, s)), l.value = { ...l.value, assignments: [...n.values()] };
663
- }
664
- return a;
665
- }
666
- async function Ao(e) {
667
- if (!m.value) throw new Error("No outlet selected");
668
- return H.copySchedule(m.value, e);
669
- }
670
- async function Eo(e) {
671
- var t;
672
- if (!m.value) throw new Error("No outlet selected");
673
- const a = await H.clearSchedule(m.value, e);
674
- if (l.value) {
675
- const n = new Set(
676
- (((t = e.demand) == null ? void 0 : t.replacements) ?? []).map((r) => r.date)
677
- ), s = new Set(a.deletedAssignmentIds), i = a.demand;
678
- l.value = {
679
- ...l.value,
680
- demands: [
681
- ...l.value.demands.filter((r) => r.date === null || !n.has(r.date)),
682
- ...i
683
- ],
684
- assignments: l.value.assignments.filter((r) => !s.has(r.id))
685
- };
686
- }
687
- return a;
688
- }
689
- async function Po(e) {
690
- if (!m.value) throw new Error("No outlet selected");
691
- if (e.length && (await H.deleteAssignments(m.value, e), l.value)) {
692
- const a = new Set(e);
693
- l.value = {
694
- ...l.value,
695
- assignments: l.value.assignments.filter((t) => !a.has(t.id))
696
- };
697
- }
698
- }
699
- async function bo(e) {
700
- if (!m.value) throw new Error("No outlet selected");
701
- const a = await H.createTimeOff(m.value, e);
702
- return l.value && (l.value = { ...l.value, timeOff: [...l.value.timeOff, a] }), a;
703
- }
704
- async function ko(e, a) {
705
- if (!m.value) throw new Error("No outlet selected");
706
- const t = await H.updateTimeOffStatus(m.value, e, a);
707
- return t && l.value && (l.value = {
708
- ...l.value,
709
- timeOff: l.value.timeOff.map((n) => n.id === e ? t : n)
710
- }), t;
711
- }
712
- async function No(e) {
713
- if (!m.value) throw new Error("No outlet selected");
714
- await H.deleteTimeOff(m.value, e), l.value && (l.value = {
715
- ...l.value,
716
- timeOff: l.value.timeOff.filter((a) => a.id !== e)
717
- });
718
- }
719
- async function Co(e) {
720
- if (!m.value) throw new Error("No outlet selected");
721
- const a = await H.bulkUpdateAssignmentStatus(m.value, e);
722
- if (l.value && a.length) {
723
- const t = new Map(a.map((n) => [n.id, n]));
724
- l.value = {
725
- ...l.value,
726
- assignments: l.value.assignments.map(
727
- (n) => t.get(n.id) ?? n
728
- )
729
- };
730
- }
731
- return a;
732
- }
733
- async function ea(e, a) {
734
- const t = m.value;
735
- if (!t) {
736
- fe.value = "No outlet selected";
737
- return;
738
- }
739
- const n = j(e), s = j(a), i = ++ne;
740
- xe.value = !0, fe.value = null;
741
- const r = (async () => {
742
- try {
743
- const o = await H.readBoard(t, n, s);
744
- if (m.value !== t || i !== ne) return;
745
- l.value = o, Ze.value = o.settings.setupCompleted, Q = n, X = s, G.value += 1;
746
- } catch (o) {
747
- if (m.value !== t || i !== ne) return;
748
- fe.value = o instanceof Error ? o.message : "Could not load the schedule";
749
- } finally {
750
- m.value === t && i === ne && (xe.value = !1);
751
- }
752
- })();
753
- V = r;
754
- try {
755
- await r;
756
- } finally {
757
- V === r && (V = null);
758
- }
759
- }
760
- const Ba = "AE", _a = "Asia/Dubai", Fa = {
761
- NORMAL: {
762
- overtime: 1.25
763
- },
764
- REST_DAY: {
765
- regular: 1,
766
- overtime: 2
767
- },
768
- PUBLIC_HOLIDAY: {
769
- regular: 2.5,
770
- overtime: 1.5
771
- }
772
- }, Ua = {
773
- maxHoursPerMonth: null
774
- }, Wa = {
775
- fullTime: {
776
- minHoursPerDay: null,
777
- maxHoursPerDay: 8,
778
- maxHoursPerWeek: 48
779
- },
780
- partTime: {
781
- maxHoursPerWeek: 32
782
- }
783
- }, za = [
784
- {
785
- month: 1,
786
- day: 1,
787
- name: "New Year's Day"
788
- },
789
- {
790
- month: 12,
791
- day: 2,
792
- name: "UAE National Day"
793
- },
794
- {
795
- month: 12,
796
- day: 3,
797
- name: "UAE National Day Holiday"
798
- }
799
- ], Va = {
800
- 2026: {
801
- "2026-01-01": "Gregorian New Year",
802
- "2026-03-20": "Eid Al-Fitr Holiday",
803
- "2026-03-21": "Eid Al-Fitr Holiday",
804
- "2026-03-22": "Eid Al-Fitr Holiday",
805
- "2026-05-26": "Arafat Day",
806
- "2026-05-27": "Eid Al-Adha Holiday",
807
- "2026-05-28": "Eid Al-Adha Holiday",
808
- "2026-05-29": "Eid Al-Adha Holiday",
809
- "2026-06-17": "Islamic New Year",
810
- "2026-08-26": "Prophet Muhammad's Birthday",
811
- "2026-12-02": "UAE National Day",
812
- "2026-12-03": "UAE National Day Holiday"
813
- },
814
- 2027: {
815
- "2027-01-01": "Gregorian New Year",
816
- "2027-03-08": "Eid Al-Fitr Holiday",
817
- "2027-03-09": "Eid Al-Fitr Holiday",
818
- "2027-03-10": "Eid Al-Fitr Holiday",
819
- "2027-03-11": "Eid Al-Fitr Holiday",
820
- "2027-05-15": "Arafat Day",
821
- "2027-05-16": "Eid Al-Adha Holiday",
822
- "2027-05-17": "Eid Al-Adha Holiday",
823
- "2027-05-18": "Eid Al-Adha Holiday",
824
- "2027-06-06": "Islamic New Year",
825
- "2027-08-14": "Prophet Muhammad's Birthday",
826
- "2027-12-02": "UAE National Day",
827
- "2027-12-03": "UAE National Day Holiday"
828
- }
829
- }, Ka = {
830
- countryCode: Ba,
831
- timezone: _a,
832
- payRate: Fa,
833
- overtime: Ua,
834
- workingHours: Wa,
835
- recurringPublicHolidays: za,
836
- publicHolidays: Va
837
- }, Ga = "BN", ja = "Asia/Brunei", Qa = {
838
- NORMAL: {
839
- overtime: 1.5
840
- },
841
- REST_DAY: {
842
- regular: 1,
843
- overtime: 2
844
- },
845
- PUBLIC_HOLIDAY: {
846
- regular: 2,
847
- overtime: 3
848
- }
849
- }, Xa = {
850
- maxHoursPerMonth: 72
851
- }, Ja = {
852
- fullTime: {
853
- minHoursPerDay: null,
854
- maxHoursPerDay: 8,
855
- maxHoursPerWeek: 44
856
- },
857
- partTime: {
858
- maxHoursPerWeek: 30
859
- }
860
- }, Za = [
861
- {
862
- month: 1,
863
- day: 1,
864
- name: "New Year's Day"
865
- },
866
- {
867
- month: 2,
868
- day: 23,
869
- name: "National Day"
870
- },
871
- {
872
- month: 5,
873
- day: 1,
874
- name: "International Labour Day"
875
- },
876
- {
877
- month: 7,
878
- day: 15,
879
- name: "Sultan's Birthday"
880
- },
881
- {
882
- month: 12,
883
- day: 25,
884
- name: "Christmas Day"
885
- }
886
- ], qa = {
887
- 2026: {
888
- "2026-01-01": "New Year's Day",
889
- "2026-02-17": "Chinese New Year",
890
- "2026-02-23": "National Day",
891
- "2026-03-07": "Nuzul Al-Quran",
892
- "2026-03-20": "Hari Raya Aidilfitri",
893
- "2026-03-21": "Hari Raya Aidilfitri Holiday",
894
- "2026-03-22": "Hari Raya Aidilfitri Holiday",
895
- "2026-05-01": "International Labour Day",
896
- "2026-05-27": "Hari Raya Aidiladha",
897
- "2026-06-17": "Islamic New Year",
898
- "2026-07-15": "Sultan's Birthday",
899
- "2026-08-25": "Prophet Muhammad's Birthday",
900
- "2026-12-25": "Christmas Day"
901
- },
902
- 2027: {
903
- "2027-01-01": "New Year's Day",
904
- "2027-02-06": "Chinese New Year",
905
- "2027-02-23": "National Day",
906
- "2027-03-07": "Nuzul Al-Quran",
907
- "2027-03-10": "Hari Raya Aidilfitri",
908
- "2027-03-11": "Hari Raya Aidilfitri Holiday",
909
- "2027-05-01": "International Labour Day",
910
- "2027-05-17": "Hari Raya Aidiladha",
911
- "2027-06-06": "Islamic New Year",
912
- "2027-07-15": "Sultan's Birthday",
913
- "2027-08-15": "Prophet Muhammad's Birthday",
914
- "2027-12-25": "Christmas Day"
915
- }
916
- }, et = {
917
- countryCode: Ga,
918
- timezone: ja,
919
- payRate: Qa,
920
- overtime: Xa,
921
- workingHours: Ja,
922
- recurringPublicHolidays: Za,
923
- publicHolidays: qa
924
- }, at = "ID", tt = "Asia/Jakarta", nt = {
925
- NORMAL: {
926
- overtime: 1.5
927
- },
928
- REST_DAY: {
929
- regular: 1,
930
- overtime: 2
931
- },
932
- PUBLIC_HOLIDAY: {
933
- regular: 2,
934
- overtime: 2
935
- }
936
- }, ot = {
937
- maxHoursPerMonth: 72
938
- }, st = {
939
- fullTime: {
940
- minHoursPerDay: null,
941
- maxHoursPerDay: 8,
942
- maxHoursPerWeek: 40
943
- },
944
- partTime: {
945
- maxHoursPerWeek: null
946
- }
947
- }, it = [
948
- {
949
- month: 1,
950
- day: 1,
951
- name: "New Year's Day"
952
- },
953
- {
954
- month: 5,
955
- day: 1,
956
- name: "International Labour Day"
957
- },
958
- {
959
- month: 8,
960
- day: 17,
961
- name: "Independence Day"
962
- },
963
- {
964
- month: 12,
965
- day: 25,
966
- name: "Christmas Day"
967
- }
968
- ], rt = {
969
- 2026: {
970
- "2026-01-01": "New Year's Day",
971
- "2026-01-16": "Isra Mi'raj",
972
- "2026-02-17": "Chinese New Year",
973
- "2026-03-19": "Nyepi",
974
- "2026-03-21": "Eid al-Fitr",
975
- "2026-03-22": "Eid al-Fitr Holiday",
976
- "2026-04-03": "Good Friday",
977
- "2026-04-05": "Easter Sunday",
978
- "2026-05-01": "International Labour Day",
979
- "2026-05-14": "Ascension Day",
980
- "2026-05-27": "Eid al-Adha",
981
- "2026-05-31": "Vesak Day",
982
- "2026-06-01": "Pancasila Day",
983
- "2026-06-16": "Islamic New Year",
984
- "2026-08-17": "Independence Day",
985
- "2026-08-25": "Prophet Muhammad's Birthday",
986
- "2026-12-25": "Christmas Day"
987
- },
988
- 2027: {
989
- "2027-01-01": "New Year's Day",
990
- "2027-01-05": "Isra Mi'raj",
991
- "2027-02-06": "Chinese New Year",
992
- "2027-03-08": "Nyepi",
993
- "2027-03-10": "Eid al-Fitr",
994
- "2027-03-11": "Eid al-Fitr Holiday",
995
- "2027-03-26": "Good Friday",
996
- "2027-03-28": "Easter Sunday",
997
- "2027-05-01": "International Labour Day",
998
- "2027-05-06": "Ascension Day",
999
- "2027-05-17": "Eid al-Adha",
1000
- "2027-05-20": "Vesak Day",
1001
- "2027-06-01": "Pancasila Day",
1002
- "2027-06-06": "Islamic New Year",
1003
- "2027-08-15": "Prophet Muhammad's Birthday",
1004
- "2027-08-17": "Independence Day",
1005
- "2027-12-25": "Christmas Day",
1006
- "2027-12-26": "Isra Mi'raj"
1007
- }
1008
- }, lt = {
1009
- countryCode: at,
1010
- timezone: tt,
1011
- payRate: nt,
1012
- overtime: ot,
1013
- workingHours: st,
1014
- recurringPublicHolidays: it,
1015
- publicHolidays: rt
1016
- }, ut = "MO", dt = "Asia/Macau", ct = {
1017
- NORMAL: {
1018
- overtime: 1.5
1019
- },
1020
- REST_DAY: {
1021
- regular: 1,
1022
- overtime: 2
1023
- },
1024
- PUBLIC_HOLIDAY: {
1025
- regular: 2,
1026
- overtime: 3
1027
- }
1028
- }, mt = {
1029
- maxHoursPerMonth: null
1030
- }, yt = {
1031
- fullTime: {
1032
- minHoursPerDay: null,
1033
- maxHoursPerDay: 8,
1034
- maxHoursPerWeek: 48
1035
- },
1036
- partTime: {
1037
- maxHoursPerWeek: null
1038
- }
1039
- }, pt = [
1040
- {
1041
- month: 1,
1042
- day: 1,
1043
- name: "New Year's Day"
1044
- },
1045
- {
1046
- month: 5,
1047
- day: 1,
1048
- name: "Labour Day"
1049
- },
1050
- {
1051
- month: 10,
1052
- day: 1,
1053
- name: "National Day"
1054
- },
1055
- {
1056
- month: 12,
1057
- day: 20,
1058
- name: "Macao Special Administrative Region Establishment Day"
1059
- },
1060
- {
1061
- month: 12,
1062
- day: 25,
1063
- name: "Christmas Day"
1064
- }
1065
- ], ft = {
1066
- 2026: {
1067
- "2026-01-01": "New Year's Day",
1068
- "2026-02-17": "Lunar New Year's Day",
1069
- "2026-02-18": "Second day of Lunar New Year",
1070
- "2026-02-19": "Third day of Lunar New Year",
1071
- "2026-04-03": "Good Friday",
1072
- "2026-04-04": "Day before Easter",
1073
- "2026-04-05": "Cheng Ming Festival",
1074
- "2026-04-06": "Compensatory rest day",
1075
- "2026-04-07": "Compensatory rest day",
1076
- "2026-05-01": "Labour Day",
1077
- "2026-05-24": "Buddha's Birthday",
1078
- "2026-05-25": "Compensatory rest day",
1079
- "2026-06-19": "Dragon Boat Festival",
1080
- "2026-09-26": "Day following Mid-Autumn Festival",
1081
- "2026-09-28": "Compensatory rest day",
1082
- "2026-10-01": "National Day",
1083
- "2026-10-02": "Day following National Day",
1084
- "2026-10-18": "Chong Yeung Festival",
1085
- "2026-10-19": "Compensatory rest day",
1086
- "2026-11-02": "All Souls' Day",
1087
- "2026-12-08": "Immaculate Conception",
1088
- "2026-12-20": "Macao SAR Establishment Day",
1089
- "2026-12-21": "Compensatory rest day",
1090
- "2026-12-22": "Winter Solstice",
1091
- "2026-12-24": "Christmas Eve",
1092
- "2026-12-25": "Christmas Day"
1093
- },
1094
- 2027: {
1095
- "2027-01-01": "New Year's Day",
1096
- "2027-02-06": "Lunar New Year's Day",
1097
- "2027-02-07": "Second day of Lunar New Year",
1098
- "2027-02-08": "Third day of Lunar New Year",
1099
- "2027-02-09": "Compensatory rest day",
1100
- "2027-02-10": "Compensatory rest day",
1101
- "2027-03-26": "Good Friday",
1102
- "2027-03-27": "Day before Easter",
1103
- "2027-03-29": "Compensatory rest day",
1104
- "2027-04-05": "Cheng Ming Festival",
1105
- "2027-05-01": "Labour Day",
1106
- "2027-05-03": "Compensatory rest day",
1107
- "2027-05-13": "Buddha's Birthday",
1108
- "2027-06-09": "Dragon Boat Festival",
1109
- "2027-09-16": "Day following Mid-Autumn Festival",
1110
- "2027-10-01": "National Day",
1111
- "2027-10-02": "Day following National Day",
1112
- "2027-10-04": "Compensatory rest day",
1113
- "2027-10-08": "Chong Yeung Festival",
1114
- "2027-11-02": "All Souls' Day",
1115
- "2027-12-08": "Immaculate Conception",
1116
- "2027-12-20": "Macao SAR Establishment Day",
1117
- "2027-12-22": "Winter Solstice",
1118
- "2027-12-24": "Christmas Eve",
1119
- "2027-12-25": "Christmas Day",
1120
- "2027-12-27": "Compensatory rest day"
1121
- }
1122
- }, ht = {
1123
- countryCode: ut,
1124
- timezone: dt,
1125
- payRate: ct,
1126
- overtime: mt,
1127
- workingHours: yt,
1128
- recurringPublicHolidays: pt,
1129
- publicHolidays: ft
1130
- }, vt = "MV", gt = "Indian/Maldives", Dt = {
1131
- NORMAL: {
1132
- overtime: 1.5
1133
- },
1134
- REST_DAY: {
1135
- regular: 1,
1136
- overtime: 2
1137
- },
1138
- PUBLIC_HOLIDAY: {
1139
- regular: 2,
1140
- overtime: 3
1141
- }
1142
- }, wt = {
1143
- maxHoursPerMonth: null
1144
- }, Ht = {
1145
- fullTime: {
1146
- minHoursPerDay: null,
1147
- maxHoursPerDay: 8,
1148
- maxHoursPerWeek: 48
1149
- },
1150
- partTime: {
1151
- maxHoursPerWeek: null
1152
- }
1153
- }, At = [
1154
- {
1155
- month: 1,
1156
- day: 1,
1157
- name: "New Year's Day"
1158
- },
1159
- {
1160
- month: 5,
1161
- day: 1,
1162
- name: "Labour Day"
1163
- },
1164
- {
1165
- month: 7,
1166
- day: 26,
1167
- name: "Independence Day"
1168
- },
1169
- {
1170
- month: 11,
1171
- day: 3,
1172
- name: "Victory Day"
1173
- },
1174
- {
1175
- month: 11,
1176
- day: 11,
1177
- name: "Republic Day"
1178
- }
1179
- ], Et = {
1180
- 2026: {
1181
- "2026-01-01": "New Year's Day",
1182
- "2026-03-20": "Eid al-Fitr Holiday",
1183
- "2026-03-21": "Eid al-Fitr Holiday",
1184
- "2026-03-22": "Eid al-Fitr Holiday",
1185
- "2026-05-01": "Labour Day",
1186
- "2026-05-26": "Arafah Day",
1187
- "2026-05-27": "Eid al-Adha Holiday",
1188
- "2026-05-28": "Eid al-Adha Holiday",
1189
- "2026-05-29": "Eid al-Adha Holiday",
1190
- "2026-06-17": "Islamic New Year",
1191
- "2026-07-26": "Independence Day",
1192
- "2026-07-27": "Independence Day Holiday",
1193
- "2026-08-14": "National Day",
1194
- "2026-08-25": "Prophet Muhammad's Birthday",
1195
- "2026-09-13": "The Day Maldives Embraced Islam",
1196
- "2026-11-03": "Victory Day",
1197
- "2026-11-11": "Republic Day"
1198
- },
1199
- 2027: {
1200
- "2027-01-01": "New Year's Day",
1201
- "2027-03-10": "Eid al-Fitr Holiday",
1202
- "2027-03-11": "Eid al-Fitr Holiday",
1203
- "2027-05-01": "Labour Day",
1204
- "2027-05-15": "Arafah Day",
1205
- "2027-05-16": "Eid al-Adha Holiday",
1206
- "2027-05-17": "Eid al-Adha Holiday",
1207
- "2027-05-18": "Eid al-Adha Holiday",
1208
- "2027-06-06": "Islamic New Year",
1209
- "2027-07-26": "Independence Day",
1210
- "2027-07-27": "Independence Day Holiday",
1211
- "2027-08-14": "National Day",
1212
- "2027-08-15": "Prophet Muhammad's Birthday",
1213
- "2027-09-03": "The Day Maldives Embraced Islam",
1214
- "2027-11-03": "Victory Day",
1215
- "2027-11-11": "Republic Day"
1216
- }
1217
- }, Pt = {
1218
- countryCode: vt,
1219
- timezone: gt,
1220
- payRate: Dt,
1221
- overtime: wt,
1222
- workingHours: Ht,
1223
- recurringPublicHolidays: At,
1224
- publicHolidays: Et
1225
- }, bt = "MY", kt = "Asia/Kuala_Lumpur", Nt = {
1226
- NORMAL: {
1227
- overtime: 1.5
1228
- },
1229
- REST_DAY: {
1230
- regular: 1,
1231
- overtime: 2
1232
- },
1233
- PUBLIC_HOLIDAY: {
1234
- regular: 2,
1235
- overtime: 3
1236
- }
1237
- }, Ct = {
1238
- maxHoursPerMonth: 104
1239
- }, St = {
1240
- fullTime: {
1241
- minHoursPerDay: null,
1242
- maxHoursPerDay: 8,
1243
- maxHoursPerWeek: 45
1244
- },
1245
- partTime: {
1246
- maxHoursPerWeek: 31.5
1247
- }
1248
- }, Mt = [
1249
- {
1250
- month: 1,
1251
- day: 1,
1252
- name: "New Year's Day"
1253
- },
1254
- {
1255
- month: 5,
1256
- day: 1,
1257
- name: "Labour Day"
1258
- },
1259
- {
1260
- month: 8,
1261
- day: 31,
1262
- name: "Merdeka Day"
1263
- },
1264
- {
1265
- month: 9,
1266
- day: 16,
1267
- name: "Malaysia Day"
1268
- },
1269
- {
1270
- month: 12,
1271
- day: 25,
1272
- name: "Christmas Day"
1273
- }
1274
- ], Lt = {
1275
- 2026: {
1276
- "2026-01-01": "New Year's Day",
1277
- "2026-02-17": "Chinese New Year",
1278
- "2026-02-18": "Chinese New Year Holiday",
1279
- "2026-03-07": "Nuzul Al-Quran",
1280
- "2026-03-20": "Hari Raya Aidilfitri",
1281
- "2026-03-21": "Hari Raya Aidilfitri Holiday",
1282
- "2026-03-22": "Hari Raya Aidilfitri Holiday",
1283
- "2026-03-23": "Hari Raya Aidilfitri Holiday",
1284
- "2026-05-01": "Labour Day",
1285
- "2026-05-27": "Hari Raya Haji",
1286
- "2026-05-31": "Wesak Day",
1287
- "2026-06-01": "Agong's Birthday",
1288
- "2026-06-17": "Awal Muharram",
1289
- "2026-08-25": "Prophet Muhammad's Birthday",
1290
- "2026-08-31": "Merdeka Day",
1291
- "2026-09-16": "Malaysia Day",
1292
- "2026-11-08": "Deepavali",
1293
- "2026-12-25": "Christmas Day"
1294
- },
1295
- 2027: {
1296
- "2027-01-01": "New Year's Day",
1297
- "2027-02-06": "Chinese New Year",
1298
- "2027-02-07": "Chinese New Year Holiday",
1299
- "2027-03-10": "Hari Raya Aidilfitri",
1300
- "2027-03-11": "Hari Raya Aidilfitri Holiday",
1301
- "2027-05-01": "Labour Day",
1302
- "2027-05-17": "Hari Raya Haji",
1303
- "2027-05-20": "Wesak Day",
1304
- "2027-06-01": "Agong's Birthday",
1305
- "2027-06-06": "Awal Muharram",
1306
- "2027-08-15": "Prophet Muhammad's Birthday",
1307
- "2027-08-31": "Merdeka Day",
1308
- "2027-09-16": "Malaysia Day",
1309
- "2027-10-28": "Deepavali",
1310
- "2027-12-25": "Christmas Day"
1311
- }
1312
- }, It = {
1313
- countryCode: bt,
1314
- timezone: kt,
1315
- payRate: Nt,
1316
- overtime: Ct,
1317
- workingHours: St,
1318
- recurringPublicHolidays: Mt,
1319
- publicHolidays: Lt
1320
- }, Tt = "PK", Rt = "Asia/Karachi", Ot = {
1321
- NORMAL: {
1322
- overtime: 1.5
1323
- },
1324
- REST_DAY: {
1325
- regular: 1,
1326
- overtime: 2
1327
- },
1328
- PUBLIC_HOLIDAY: {
1329
- regular: 2,
1330
- overtime: 3
1331
- }
1332
- }, $t = {
1333
- maxHoursPerMonth: null
1334
- }, xt = {
1335
- fullTime: {
1336
- minHoursPerDay: null,
1337
- maxHoursPerDay: 9,
1338
- maxHoursPerWeek: 48
1339
- },
1340
- partTime: {
1341
- maxHoursPerWeek: null
1342
- }
1343
- }, Yt = [
1344
- {
1345
- month: 1,
1346
- day: 1,
1347
- name: "New Year's Day"
1348
- },
1349
- {
1350
- month: 2,
1351
- day: 5,
1352
- name: "Kashmir Day"
1353
- },
1354
- {
1355
- month: 3,
1356
- day: 23,
1357
- name: "Pakistan Day"
1358
- },
1359
- {
1360
- month: 5,
1361
- day: 1,
1362
- name: "Labour Day"
1363
- },
1364
- {
1365
- month: 8,
1366
- day: 14,
1367
- name: "Independence Day"
1368
- },
1369
- {
1370
- month: 12,
1371
- day: 25,
1372
- name: "Quaid-e-Azam Day and Christmas Day"
1373
- }
1374
- ], Bt = {
1375
- 2026: {
1376
- "2026-01-01": "New Year's Day",
1377
- "2026-02-05": "Kashmir Day",
1378
- "2026-03-23": "Pakistan Day",
1379
- "2026-05-01": "Labour Day",
1380
- "2026-06-27": "Eid al-Adha",
1381
- "2026-06-28": "Eid al-Adha Holiday",
1382
- "2026-06-29": "Eid al-Adha Holiday",
1383
- "2026-08-14": "Independence Day",
1384
- "2026-08-25": "Eid Milad-un-Nabi",
1385
- "2026-12-25": "Quaid-e-Azam Day and Christmas Day"
1386
- },
1387
- 2027: {
1388
- "2027-01-01": "New Year's Day",
1389
- "2027-02-05": "Kashmir Day",
1390
- "2027-03-23": "Pakistan Day",
1391
- "2027-05-01": "Labour Day",
1392
- "2027-05-17": "Eid al-Adha",
1393
- "2027-05-18": "Eid al-Adha Holiday",
1394
- "2027-05-19": "Eid al-Adha Holiday",
1395
- "2027-08-14": "Independence Day",
1396
- "2027-08-15": "Eid Milad-un-Nabi",
1397
- "2027-12-25": "Quaid-e-Azam Day and Christmas Day"
1398
- }
1399
- }, _t = {
1400
- countryCode: Tt,
1401
- timezone: Rt,
1402
- payRate: Ot,
1403
- overtime: $t,
1404
- workingHours: xt,
1405
- recurringPublicHolidays: Yt,
1406
- publicHolidays: Bt
1407
- }, Ft = "SG", Ut = "Asia/Singapore", Wt = {
1408
- NORMAL: {
1409
- overtime: 1.5
1410
- },
1411
- REST_DAY: {
1412
- regular: 1,
1413
- overtime: 2
1414
- },
1415
- PUBLIC_HOLIDAY: {
1416
- regular: 2,
1417
- overtime: 1.5
1418
- }
1419
- }, zt = {
1420
- maxHoursPerMonth: 72
1421
- }, Vt = {
1422
- fullTime: {
1423
- minHoursPerDay: null,
1424
- maxHoursPerDay: 12,
1425
- maxHoursPerWeek: 44
1426
- },
1427
- partTime: {
1428
- maxHoursPerWeek: 35
1429
- }
1430
- }, Kt = [
1431
- {
1432
- month: 1,
1433
- day: 1,
1434
- name: "New Year's Day"
1435
- },
1436
- {
1437
- month: 5,
1438
- day: 1,
1439
- name: "Labour Day"
1440
- },
1441
- {
1442
- month: 8,
1443
- day: 9,
1444
- name: "National Day"
1445
- },
1446
- {
1447
- month: 12,
1448
- day: 25,
1449
- name: "Christmas Day"
1450
- }
1451
- ], Gt = {
1452
- 2026: {
1453
- "2026-01-01": "New Year's Day",
1454
- "2026-02-17": "Chinese New Year's Day",
1455
- "2026-02-18": "Chinese New Year's Holiday",
1456
- "2026-03-21": "Hari Raya Puasa",
1457
- "2026-04-03": "Good Friday",
1458
- "2026-05-01": "Labour Day",
1459
- "2026-05-27": "Hari Raya Haji",
1460
- "2026-05-31": "Vesak Day",
1461
- "2026-06-01": "Vesak Day Holiday",
1462
- "2026-08-09": "National Day",
1463
- "2026-08-10": "National Day Holiday",
1464
- "2026-11-08": "Deepavali",
1465
- "2026-11-09": "Deepavali Holiday",
1466
- "2026-12-25": "Christmas Day"
1467
- },
1468
- 2027: {
1469
- "2027-01-01": "New Year's Day",
1470
- "2027-02-06": "Chinese New Year's Day",
1471
- "2027-02-07": "Chinese New Year's Holiday",
1472
- "2027-02-08": "Chinese New Year Holiday",
1473
- "2027-03-10": "Hari Raya Puasa",
1474
- "2027-03-26": "Good Friday",
1475
- "2027-05-01": "Labour Day",
1476
- "2027-05-17": "Hari Raya Haji",
1477
- "2027-05-20": "Vesak Day",
1478
- "2027-08-09": "National Day",
1479
- "2027-10-28": "Deepavali",
1480
- "2027-12-25": "Christmas Day"
1481
- }
1482
- }, jt = {
1483
- countryCode: Ft,
1484
- timezone: Ut,
1485
- payRate: Wt,
1486
- overtime: zt,
1487
- workingHours: Vt,
1488
- recurringPublicHolidays: Kt,
1489
- publicHolidays: Gt
1490
- }, Qt = "TH", Xt = "Asia/Bangkok", Jt = {
1491
- NORMAL: {
1492
- overtime: 1.5
1493
- },
1494
- REST_DAY: {
1495
- regular: 1,
1496
- overtime: 2
1497
- },
1498
- PUBLIC_HOLIDAY: {
1499
- regular: 2,
1500
- overtime: 3
1501
- }
1502
- }, Zt = {
1503
- maxHoursPerMonth: 36
1504
- }, qt = {
1505
- fullTime: {
1506
- minHoursPerDay: null,
1507
- maxHoursPerDay: 8,
1508
- maxHoursPerWeek: 48
1509
- },
1510
- partTime: {
1511
- maxHoursPerWeek: null
1512
- }
1513
- }, en = [
1514
- {
1515
- month: 1,
1516
- day: 1,
1517
- name: "New Year's Day"
1518
- },
1519
- {
1520
- month: 4,
1521
- day: 6,
1522
- name: "Chakri Memorial Day"
1523
- },
1524
- {
1525
- month: 5,
1526
- day: 1,
1527
- name: "National Labour Day"
1528
- },
1529
- {
1530
- month: 7,
1531
- day: 28,
1532
- name: "King's Birthday"
1533
- },
1534
- {
1535
- month: 8,
1536
- day: 12,
1537
- name: "Queen Mother's Birthday"
1538
- },
1539
- {
1540
- month: 10,
1541
- day: 13,
1542
- name: "Memorial Day"
1543
- },
1544
- {
1545
- month: 12,
1546
- day: 5,
1547
- name: "King Bhumibol's Birthday"
1548
- },
1549
- {
1550
- month: 12,
1551
- day: 10,
1552
- name: "Constitution Day"
1553
- },
1554
- {
1555
- month: 12,
1556
- day: 31,
1557
- name: "New Year's Eve"
1558
- }
1559
- ], an = {
1560
- 2026: {
1561
- "2026-01-01": "New Year's Day",
1562
- "2026-03-03": "Makha Bucha Day",
1563
- "2026-04-06": "Chakri Memorial Day",
1564
- "2026-04-13": "Songkran Festival",
1565
- "2026-04-14": "Songkran Festival",
1566
- "2026-04-15": "Songkran Festival",
1567
- "2026-05-01": "National Labour Day",
1568
- "2026-05-04": "Coronation Day",
1569
- "2026-05-13": "Royal Ploughing Ceremony",
1570
- "2026-05-31": "Visakha Bucha Day",
1571
- "2026-06-01": "Visakha Bucha Holiday",
1572
- "2026-07-28": "King's Birthday",
1573
- "2026-08-12": "Queen Mother's Birthday",
1574
- "2026-10-13": "Memorial Day",
1575
- "2026-10-23": "Chulalongkorn Memorial Day",
1576
- "2026-12-05": "King Bhumibol's Birthday",
1577
- "2026-12-10": "Constitution Day",
1578
- "2026-12-31": "New Year's Eve"
1579
- },
1580
- 2027: {
1581
- "2027-01-01": "New Year's Day",
1582
- "2027-02-26": "Makha Bucha Day",
1583
- "2027-04-06": "Chakri Memorial Day",
1584
- "2027-04-13": "Songkran Festival",
1585
- "2027-04-14": "Songkran Festival",
1586
- "2027-04-15": "Songkran Festival",
1587
- "2027-05-01": "National Labour Day",
1588
- "2027-05-03": "Labour Day Holiday",
1589
- "2027-05-04": "Coronation Day",
1590
- "2027-07-28": "King's Birthday",
1591
- "2027-08-12": "Queen Mother's Birthday",
1592
- "2027-10-13": "Memorial Day",
1593
- "2027-10-23": "Chulalongkorn Memorial Day",
1594
- "2027-12-05": "King Bhumibol's Birthday",
1595
- "2027-12-06": "King Bhumibol's Birthday Holiday",
1596
- "2027-12-10": "Constitution Day",
1597
- "2027-12-31": "New Year's Eve"
1598
- }
1599
- }, tn = {
1600
- countryCode: Qt,
1601
- timezone: Xt,
1602
- payRate: Jt,
1603
- overtime: Zt,
1604
- workingHours: qt,
1605
- recurringPublicHolidays: en,
1606
- publicHolidays: an
1607
- }, nn = "VN", on = "Asia/Ho_Chi_Minh", sn = {
1608
- NORMAL: {
1609
- overtime: 1.5
1610
- },
1611
- REST_DAY: {
1612
- regular: 1,
1613
- overtime: 2
1614
- },
1615
- PUBLIC_HOLIDAY: {
1616
- regular: 2,
1617
- overtime: 3
1618
- }
1619
- }, rn = {
1620
- maxHoursPerMonth: 40
1621
- }, ln = {
1622
- fullTime: {
1623
- minHoursPerDay: null,
1624
- maxHoursPerDay: 8,
1625
- maxHoursPerWeek: 48
1626
- },
1627
- partTime: {
1628
- maxHoursPerWeek: null
1629
- }
1630
- }, un = [
1631
- {
1632
- month: 1,
1633
- day: 1,
1634
- name: "New Year's Day"
1635
- },
1636
- {
1637
- month: 4,
1638
- day: 30,
1639
- name: "Reunification Day"
1640
- },
1641
- {
1642
- month: 5,
1643
- day: 1,
1644
- name: "International Labour Day"
1645
- },
1646
- {
1647
- month: 9,
1648
- day: 2,
1649
- name: "National Day"
1650
- }
1651
- ], dn = {
1652
- 2026: {
1653
- "2026-01-01": "New Year's Day",
1654
- "2026-02-16": "Tet Holiday",
1655
- "2026-02-17": "Tet Holiday",
1656
- "2026-02-18": "Tet Holiday",
1657
- "2026-02-19": "Tet Holiday",
1658
- "2026-02-20": "Tet Holiday",
1659
- "2026-04-26": "Hung Kings Commemoration Day",
1660
- "2026-04-27": "Hung Kings Holiday",
1661
- "2026-04-30": "Reunification Day",
1662
- "2026-05-01": "International Labour Day",
1663
- "2026-09-02": "National Day",
1664
- "2026-09-03": "National Day Holiday"
1665
- },
1666
- 2027: {
1667
- "2027-01-01": "New Year's Day",
1668
- "2027-02-05": "Tet Holiday",
1669
- "2027-02-06": "Tet Holiday",
1670
- "2027-02-07": "Tet Holiday",
1671
- "2027-02-08": "Tet Holiday",
1672
- "2027-02-09": "Tet Holiday",
1673
- "2027-04-16": "Hung Kings Commemoration Day",
1674
- "2027-04-30": "Reunification Day",
1675
- "2027-05-01": "International Labour Day",
1676
- "2027-09-02": "National Day",
1677
- "2027-09-03": "National Day Holiday"
1678
- }
1679
- }, cn = {
1680
- countryCode: nn,
1681
- timezone: on,
1682
- payRate: sn,
1683
- overtime: rn,
1684
- workingHours: ln,
1685
- recurringPublicHolidays: un,
1686
- publicHolidays: dn
1687
- }, Ue = { AE: Ka, BN: et, ID: lt, MO: ht, MV: Pt, MY: It, PK: _t, SG: jt, TH: tn, VN: cn };
1688
- function mn(e) {
1689
- if (typeof e == "string") return e.toUpperCase();
1690
- if (e && typeof e == "object" && "code" in e) {
1691
- const a = e.code;
1692
- if (typeof a == "string") return a.toUpperCase();
1693
- }
1694
- return "MY";
1695
- }
1696
- function yn(e) {
1697
- return Ue[mn(e)] ?? Ue.MY;
1698
- }
1699
- function So(e, a) {
1700
- var i, r;
1701
- const t = (i = e.publicHolidays[a.slice(0, 4)]) == null ? void 0 : i[a];
1702
- if (t) return t;
1703
- const n = Number(a.slice(5, 7)), s = Number(a.slice(8, 10));
1704
- return ((r = e.recurringPublicHolidays.find((o) => o.month === n && o.day === s)) == null ? void 0 : r.name) ?? null;
1705
- }
1706
- const pn = Ke(), aa = "unassigned", Mo = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], Lo = "All Stations", Io = [{ id: aa, label: "Assigned", roles: [], system: !0 }], We = [
1707
- "#903E1F",
1708
- "#5F090A",
1709
- "#0A5384",
1710
- "#1F5F3E",
1711
- "#5B2C6F",
1712
- "#7D5A00",
1713
- "#0F5C5C",
1714
- "#6E2142"
1715
- ];
1716
- function fn(e) {
1717
- var t;
1718
- const a = e.trim().toLocaleLowerCase();
1719
- return (t = B.find((n) => n.name.toLocaleLowerCase() === a)) == null ? void 0 : t.id;
1720
- }
1721
- function To(e, a) {
1722
- if (e)
1723
- return { positionId: a ?? fn(e), positionName: e };
1724
- }
1725
- function ie(e, a = B) {
1726
- var t;
1727
- if (e)
1728
- return (e.positionId && ((t = a.find((n) => n.id === e.positionId)) == null ? void 0 : t.name)) ?? e.positionName;
1729
- }
1730
- function Ro(e, a = B) {
1731
- var t, n;
1732
- if (e)
1733
- return e.positionId ? (t = a.find((s) => s.id === e.positionId)) == null ? void 0 : t.name : (n = a.find((s) => s.name.toLocaleLowerCase() === e.positionName.toLocaleLowerCase())) == null ? void 0 : n.name;
1734
- }
1735
- function Oo(e, a) {
1736
- return a ? !B.some((t) => t.id === a) : !!e && !B.some((t) => t.name.toLocaleLowerCase() === e.toLocaleLowerCase());
1737
- }
1738
- const $o = [1, 1, 1, 1, 1, 1, 1];
1739
- function le(e) {
1740
- return (e + 6) % 7;
1741
- }
1742
- function xo(e) {
1743
- return (e + 1) % 7;
1744
- }
1745
- function ye(e, a) {
1746
- e.splice(0, e.length, ...a);
1747
- }
1748
- function hn(e, a) {
1749
- return je(e, a) / 60;
1750
- }
1751
- function vn(e) {
1752
- var t;
1753
- const a = e.trim().split(/\s+/).filter(Boolean);
1754
- return a.length ? (a[0][0] + (((t = a[1]) == null ? void 0 : t[0]) ?? "")).toUpperCase() : "??";
1755
- }
1756
- const ta = /* @__PURE__ */ new Map(), Ee = /* @__PURE__ */ new Map();
1757
- function Yo(e) {
1758
- return ta.get(e);
1759
- }
1760
- function gn(e) {
1761
- const a = Ee.get(e);
1762
- if (a !== void 0) return a;
1763
- const t = Xe + Ee.size + 1;
1764
- return Ee.set(e, t), ta.set(t, e), t;
1765
- }
1766
- function Bo(e) {
1767
- return e.sourceId || String(e.id);
1768
- }
1769
- function Dn(e) {
1770
- Ca.name = (e == null ? void 0 : e.outlet.name) ?? "", ye(Na, (e == null ? void 0 : e.positions.map((o) => o.name)) ?? []), ye(B, (e == null ? void 0 : e.positions) ?? []);
1771
- const a = (e == null ? void 0 : e.restaurantProfile.operatingHours) ?? [], t = Array.from({ length: 7 }, () => []);
1772
- for (const o of a) t[le(o.dayOfWeek)] = o.closed ? [] : o.hours;
1773
- ye(N.dayHours, t);
1774
- const n = a.filter((o) => !o.closed).flatMap((o) => o.hours);
1775
- N.openFrom = n.length ? n.map((o) => o.start).reduce((o, d) => d < o ? d : o) : "00:00", N.openTo = n.length ? n.map((o) => o.end).reduce((o, d) => d > o ? d : o) : "24:00", ye(
1776
- N.closedWeekdays,
1777
- a.filter((o) => o.closed).map((o) => le(o.dayOfWeek)).sort((o, d) => o - d)
1778
- );
1779
- const s = yn(pn.currentCountry.value), i = (e == null ? void 0 : e.settings.settingsConfigured) === !0, r = i ? e.settings.payRate : s.payRate;
1780
- N.otCapHours = i ? e.settings.overtime.maxHoursPerMonth : s.overtime.maxHoursPerMonth, N.workingHours = i ? e.settings.workingHours : {
1781
- minHoursPerDay: null,
1782
- maxHoursPerDay: s.workingHours.fullTime.maxHoursPerDay,
1783
- maxHoursPerWeek: s.workingHours.fullTime.maxHoursPerWeek
1784
- }, N.payRate.NORMAL.overtime = r.NORMAL.overtime, N.payRate.REST_DAY.regular = r.REST_DAY.regular, N.payRate.REST_DAY.overtime = r.REST_DAY.overtime, N.payRate.PUBLIC_HOLIDAY.regular = r.PUBLIC_HOLIDAY.regular, N.payRate.PUBLIC_HOLIDAY.overtime = r.PUBLIC_HOLIDAY.overtime;
1785
- }
1786
- Te(l, Dn, { immediate: !0 });
1787
- function ve(e) {
1788
- var a, t, n;
1789
- return {
1790
- minHoursPerDay: ((a = e.workingHours) == null ? void 0 : a.minHoursPerDay) ?? N.workingHours.minHoursPerDay,
1791
- maxHoursPerDay: ((t = e.workingHours) == null ? void 0 : t.maxHoursPerDay) ?? N.workingHours.maxHoursPerDay,
1792
- maxHoursPerWeek: ((n = e.workingHours) == null ? void 0 : n.maxHoursPerWeek) ?? N.workingHours.maxHoursPerWeek
1793
- };
1794
- }
1795
- function wn(e) {
1796
- return e.reduce(
1797
- (a, t) => {
1798
- const n = ve(t).maxHoursPerWeek;
1799
- return t.employmentType === "FULLTIME" && n != null ? Math.max(a, n) : a;
1800
- },
1801
- 0
1802
- );
1803
- }
1804
- function Hn(e, a) {
1805
- if (e.wage.type === "HOURLY") return e.wage.amount;
1806
- const t = ve(e).maxHoursPerWeek ?? a;
1807
- return t ? e.wage.amount / (t * (52 / 12)) : 0;
1808
- }
1809
- function An(e, a) {
1810
- if (e.employmentType === "FULLTIME") return 100;
1811
- const t = ve(e).maxHoursPerWeek;
1812
- return !a || t == null ? 0 : Math.min(99, Math.round(t / a * 100));
1813
- }
1814
- function En(e) {
1815
- var a;
1816
- return {
1817
- start: e.startTime,
1818
- end: e.endTime,
1819
- // A missing position means this assignment was genuinely saved as "Any position" — it must
1820
- // stay blank rather than falling back to the employee's own primary position, or a reload
1821
- // silently reassigns every "Any position" shift to whatever station the employee is normally
1822
- // pinned to.
1823
- role: ie(e.position) ?? "",
1824
- positionId: ((a = e.position) == null ? void 0 : a.positionId) || void 0,
1825
- // Mongo distinguishes a draft from a published/confirmed assignment; the board's third
1826
- // state ('ot') is a costing outcome, never something stored.
1827
- status: e.status === "DRAFT" ? "pending" : "confirmed",
1828
- breakMins: Qe(e.breaks),
1829
- breaks: e.breaks,
1830
- // Carried through so an edit updates this same ScheduleShiftAssignments document instead of
1831
- // creating a duplicate — see useScheduleBoard's commitShift/persistSlot.
1832
- assignmentId: e.id,
1833
- updatedAt: e.updatedAt
1834
- };
1835
- }
1836
- function Pn(e) {
1837
- return e.type === "OFF_DAY" ? "Off day" : e.leaveType === "MEDICAL" ? "Medical Leave" : e.leaveType === "EMERGENCY" ? "Emergency Leave" : e.leaveType === "UNPAID" ? "Unpaid Leave" : "Annual Leave";
1838
- }
1839
- function bn(e, a) {
1840
- if (a < e.startDate || a > e.endDate) return null;
1841
- const n = e.startDate === e.endDate || a === e.startDate ? e.startPart : a === e.endDate ? e.endPart : "FULL_DAY";
1842
- return {
1843
- requestId: e.id,
1844
- type: e.type,
1845
- leaveType: e.leaveType ?? void 0,
1846
- timeOff: e.status === "PENDING" ? "pending" : "approved",
1847
- reason: Pn(e),
1848
- half: n !== "FULL_DAY",
1849
- halfPart: n === "FULL_DAY" ? void 0 : n
1850
- };
1851
- }
1852
- function kn(e) {
1853
- return {
1854
- employeeId: e._id,
1855
- name: e.name,
1856
- employmentType: "FULLTIME",
1857
- wage: { type: "HOURLY", amount: 0 },
1858
- primaryPosition: null,
1859
- secondaryPositions: [],
1860
- availability: []
1861
- };
1862
- }
1863
- function Nn(e) {
1864
- const a = oe[m.value];
1865
- return !a || !e.includes(a) ? e : [a, ...e.filter((t) => t !== a)];
1866
- }
1867
- function Cn(e) {
1868
- var n;
1869
- const t = (qe.value[e] ?? ((n = re.value.find((s) => s._id === e)) == null ? void 0 : n.restaurantRole.map((s) => s.restaurantId)) ?? []).map((s) => oe[s]).filter((s) => !!s);
1870
- return t.length ? Nn([...new Set(t)]) : void 0;
1871
- }
1872
- function _o(e = []) {
1873
- const a = l.value;
1874
- if (!a) return [];
1875
- const t = new Map(a.employees.map((o) => [o.employeeId, o])), n = new Map(
1876
- F.value.map((o) => [o.employeeId, o])
1877
- ), s = re.value.filter((o) => {
1878
- var d;
1879
- return ((d = n.get(o._id)) == null ? void 0 : d.enabled) !== !1;
1880
- }).map((o) => t.get(o._id) ?? kn(o)), i = wn(s), r = /* @__PURE__ */ new Map();
1881
- for (const o of a.assignments) {
1882
- const d = `${o.employeeId}|${o.date}`, p = r.get(d);
1883
- p ? p.push(o) : r.set(d, [o]);
1884
- }
1885
- return s.map((o) => {
1886
- const d = re.value.find((v) => v._id === o.employeeId) ?? {
1887
- name: o.name,
1888
- code: void 0,
1889
- passcode: "",
1890
- isMasterUser: !1
1891
- }, p = ve(o), D = gn(o.employeeId), C = new Set(B.map((v) => v.id)), J = new Set(B.map((v) => v.name.toLocaleLowerCase())), f = (v) => v.positionId ? C.has(v.positionId) : J.has(v.positionName.toLocaleLowerCase()), A = ie(o.primaryPosition), M = !!o.primaryPosition && f(o.primaryPosition), L = o.secondaryPositions.filter(f).map((v) => ie(v)).filter((v) => !!v), Z = A ? M ? [A, ...L] : [] : L, q = [
1892
- ...A && !M ? [A] : [],
1893
- ...o.secondaryPositions.filter((v) => !f(v)).map((v) => ie(v)).filter((v) => !!v)
1894
- ], _ = Z[0] ?? "", I = e.map((v) => {
1895
- const E = j(v);
1896
- return (a.timeOff ?? []).filter((w) => w.employeeId === o.employeeId).map((w) => bn(w, E)).find((w) => w !== null) ?? null;
1897
- }), U = e.map((v) => {
1898
- const E = j(v), R = (r.get(`${o.employeeId}|${E}`) ?? []).filter(($) => $.startTime && $.endTime).map(($) => En($)).sort(($, ce) => $.start.localeCompare(ce.start));
1899
- return R.length ? R.length === 1 ? R[0] : R : null;
1900
- }), ue = o.availability.length > 0, de = Array.from(
1901
- { length: 7 },
1902
- (v, E) => ue ? o.availability.some((w) => le(w.dayOfWeek) === E) : !0
1903
- ), ge = Array.from({ length: 7 }, (v, E) => {
1904
- const w = o.availability.find((R) => le(R.dayOfWeek) === E);
1905
- return { from: (w == null ? void 0 : w.start) ?? "", to: (w == null ? void 0 : w.end) ?? "" };
1906
- });
1907
- return {
1908
- id: D,
1909
- sourceId: o.employeeId,
1910
- // Employee page edits update the POS employee name. Use that as the display
1911
- // source so Scheduling reflects those changes after its roster refresh.
1912
- name: d.name,
1913
- // POS access belongs to the POS roster, not the scheduling profile. Keep these
1914
- // fields on the board employee so the edit form can initialise its access section
1915
- // from the employee's existing POS account.
1916
- passcode: d.passcode || void 0,
1917
- code: d.code,
1918
- masterUser: d.isMasterUser,
1919
- employmentType: o.employmentType,
1920
- role: _,
1921
- initials: vn(d.name),
1922
- color: We[(D - Xe - 1) % We.length],
1923
- // Gross hours actually rostered this week — the figure the cost rail multiplies by
1924
- // the rate. Contracted hours are a separate question, answered by RULES.contract.
1925
- // Rounded to one decimal — `hoursBetween` divides by 60, so an unrounded sum reads
1926
- // as a long, meaningless float (e.g. 31.983333333333334) everywhere this is shown
1927
- // verbatim, matching the rounding `employeeLoadOf`'s own hours figure already uses.
1928
- weekHours: Math.round(
1929
- U.reduce(
1930
- (v, E) => v + (Array.isArray(E) ? E : E && "start" in E ? [E] : []).reduce(
1931
- (w, R) => w + hn(R.start, R.end),
1932
- 0
1933
- ),
1934
- 0
1935
- ) * 10
1936
- ) / 10,
1937
- pct: An(o, i),
1938
- contractHours: p.maxHoursPerWeek ?? void 0,
1939
- minHoursPerDay: p.minHoursPerDay ?? void 0,
1940
- // Keep the persisted override shape here. Consumers that need the effective value use
1941
- // effectiveWorkingHours(), so an inherited null remains distinguishable from an override.
1942
- workingHours: o.workingHours,
1943
- // Every outlet the POS says this person works at, not just this one — the Add / Edit form
1944
- // shows them, and saving keeps them.
1945
- locations: Cn(o.employeeId),
1946
- rate: Hn(o, i),
1947
- positions: Z,
1948
- archivedPositions: q.length ? q : void 0,
1949
- shifts: U,
1950
- timeOff: I,
1951
- // Remarks live in their own collection in the older scheduling design and are not
1952
- // part of this board's payload yet.
1953
- remarks: [],
1954
- section: aa,
1955
- payBasis: o.wage.type === "HOURLY" ? "hourly" : "monthly",
1956
- payAmount: o.wage.amount,
1957
- availDays: de,
1958
- availHours: ge
1959
- };
1960
- });
1961
- }
1962
- function Fo() {
1963
- return [];
1964
- }
1965
- function Uo() {
1966
- var n, s;
1967
- const e = l.value, a = {}, t = {};
1968
- for (const i of (e == null ? void 0 : e.demands) ?? []) {
1969
- const r = i.date ? a[n = i.date] ?? (a[n] = []) : i.dayOfWeek !== null ? t[s = le(i.dayOfWeek)] ?? (t[s] = []) : null;
1970
- if (!r) continue;
1971
- let o = r.find((d) => d.from === i.startTime && d.to === i.endTime);
1972
- o || (o = { from: i.startTime, to: i.endTime, n: 0, roles: [] }, r.push(o)), o.n += i.headcount, i.position && o.roles.push({
1973
- position: ie(i.position) ?? "",
1974
- positionId: i.position.positionId || void 0,
1975
- n: i.headcount
1976
- });
1977
- }
1978
- return { byDate: a, byWeekday: t };
1979
- }
1980
- function Wo() {
1981
- const e = Ke(), { restaurants: a, readRestaurants: t } = Ha(), n = Da(), s = wa(), i = P(!1), r = Y(
1982
- () => a.value.filter((f) => f.managable).map((f) => ({ value: f._id, label: f.profile.name })).sort((f, A) => f.label.localeCompare(A.label))
1983
- ), o = () => {
1984
- var f;
1985
- return `hrm-schedule-outlet:${((f = e.currentBusiness.value) == null ? void 0 : f._id) ?? ""}`;
1986
- }, d = Y(() => {
1987
- var f;
1988
- return ((f = e.currentRestaurant.value) == null ? void 0 : f._id) ?? "";
1989
- });
1990
- async function p(f, A) {
1991
- return _e(f) ? (localStorage.setItem(o(), f), n.query.restaurantId !== f && s.replace({ query: { ...n.query, restaurantId: f } }), await Promise.all([Se(f), xa(A)]), !0) : !1;
1992
- }
1993
- const D = (f) => !!f && r.value.some((A) => A.value === f);
1994
- async function C() {
1995
- var M;
1996
- await t(), Be.splice(0, Be.length, ...r.value.map((L) => L.label)), Object.keys(oe).forEach((L) => delete oe[L]), a.value.forEach((L) => oe[L._id] = L.profile.name);
1997
- const f = localStorage.getItem(o()) ?? "", A = [m.value, f, d.value].find(D) ?? ((M = r.value[0]) == null ? void 0 : M.value) ?? "";
1998
- return A && _e(A), i.value = !0, A;
1999
- }
2000
- async function J() {
2001
- const f = await C();
2002
- return f && await Se(f), f;
2003
- }
2004
- return { options: r, ready: i, outletId: m, resolve: J, resolveOutlet: C, switchTo: p };
2005
- }
2006
- const Sn = ["data-hierarchy", "data-size", "data-icon"], zo = /* @__PURE__ */ Re({
2007
- __name: "ScheduleButton",
2008
- props: {
2009
- hierarchy: { default: "primary" },
2010
- size: { default: "sm" },
2011
- iconOnly: { type: Boolean, default: !1 }
2012
- },
2013
- setup(e) {
2014
- return (a, t) => (b(), k("button", {
2015
- type: "button",
2016
- class: "sch-button",
2017
- "data-hierarchy": e.hierarchy,
2018
- "data-size": e.size,
2019
- "data-icon": e.iconOnly ? "only" : void 0
2020
- }, [
2021
- Ve(a.$slots, "default")
2022
- ], 8, Sn));
2023
- }
2024
- }), Mn = ["disabled", "aria-expanded"], Ln = { class: "fx-btn-label" }, In = { class: "sch" }, Tn = ["aria-multiselectable"], Rn = {
2025
- key: 0,
2026
- class: "fx-pop-head"
2027
- }, On = {
2028
- key: 1,
2029
- class: "fx-pop-search"
2030
- }, $n = {
2031
- key: 2,
2032
- class: "fx-opt is-off"
2033
- }, xn = {
2034
- key: 0,
2035
- class: "fx-grp"
2036
- }, Yn = ["aria-selected", "onClick"], Bn = {
2037
- key: 0,
2038
- class: "fx-opt-text"
2039
- }, _n = { key: 0 }, Vo = /* @__PURE__ */ Re({
2040
- inheritAttrs: !1,
2041
- __name: "ScheduleSelect",
2042
- props: {
2043
- modelValue: {},
2044
- options: {},
2045
- multiple: { type: Boolean },
2046
- selected: {},
2047
- selectedId: {},
2048
- placeholder: {},
2049
- selectedLabel: {},
2050
- disabled: { type: Boolean },
2051
- menuTitle: {},
2052
- searchable: { type: Boolean },
2053
- teleport: { type: Boolean, default: !0 }
2054
- },
2055
- emits: ["update:modelValue", "toggle"],
2056
- setup(e, { emit: a }) {
2057
- const t = e, n = a, s = ua(), i = Y(() => s.class ?? ""), r = P(!1), o = P(!1), d = P(null), p = P(null), D = P(null), C = Y(() => t.teleport !== !1 && o.value);
2058
- Le(() => {
2059
- o.value = typeof document < "u" && !!document.body;
2060
- });
2061
- const J = Y(() => {
2062
- var u, y;
2063
- if (t.selectedLabel != null) return t.selectedLabel;
2064
- if (t.multiple) {
2065
- const c = ((u = t.selected) == null ? void 0 : u.length) ?? 0;
2066
- return c ? `${c} selected` : t.placeholder ?? "";
2067
- }
2068
- return ((y = t.options.find((c) => c.value === t.modelValue)) == null ? void 0 : y.label) ?? t.placeholder ?? "";
2069
- });
2070
- function f(u) {
2071
- var y;
2072
- return t.multiple ? !!((y = t.selected) != null && y.includes(u.value)) : t.selectedId != null ? u.id === t.selectedId : u.value === t.modelValue;
2073
- }
2074
- const A = Y(() => !!t.menuTitle || t.options.some((u) => u.hint)), M = P(""), L = P(null), Z = Y(() => {
2075
- const u = M.value.trim().toLowerCase();
2076
- return !t.searchable || !u ? t.options : t.options.filter((y) => `${y.label} ${y.hint ?? ""}`.toLowerCase().includes(u));
2077
- }), q = Y(() => {
2078
- const u = [];
2079
- let y;
2080
- for (const c of Z.value)
2081
- c.group !== y && (y = c.group, y && u.push({ heading: y })), u.push({ option: c });
2082
- return u;
2083
- }), _ = 5, I = 8;
2084
- function U() {
2085
- const u = D.value, y = p.value;
2086
- if (!u || !y) return;
2087
- const c = y.getBoundingClientRect(), S = window.innerWidth || document.documentElement.clientWidth, O = window.innerHeight || document.documentElement.clientHeight;
2088
- u.style.minWidth = `${Math.round(c.width)}px`, u.style.maxWidth = `${Math.max(180, Math.round(S - I * 2))}px`;
2089
- const ee = O - c.bottom - _ - I, ia = c.top - _ - I;
2090
- u.style.maxHeight = `${Math.max(120, Math.min(320, Math.max(ee, ia)))}px`;
2091
- const me = u.offsetHeight, ra = u.offsetWidth;
2092
- let De = c.bottom + _;
2093
- De + me > O - I && (De = c.top - _ - me >= I ? c.top - _ - me : Math.max(I, O - me - I));
2094
- const la = Math.min(Math.max(I, c.left), Math.max(I, S - ra - I));
2095
- u.style.top = `${Math.round(De)}px`, u.style.left = `${Math.round(la)}px`, u.style.visibility = "visible";
2096
- }
2097
- function ue(u) {
2098
- var c, S;
2099
- const y = u.target;
2100
- y && ((c = d.value) != null && c.contains(y) || (S = D.value) != null && S.contains(y)) || w();
2101
- }
2102
- function de(u) {
2103
- const y = D.value, c = u.target;
2104
- if (y && c && c !== document && y.contains(c)) return;
2105
- const S = p.value;
2106
- if (!S) return;
2107
- const O = S.getBoundingClientRect(), ee = window.innerHeight || document.documentElement.clientHeight;
2108
- if (O.bottom < 0 || O.top > ee) {
2109
- w();
2110
- return;
2111
- }
2112
- U();
2113
- }
2114
- function ge() {
2115
- document.addEventListener("click", ue), document.addEventListener("scroll", de, !0), window.addEventListener("resize", w);
2116
- }
2117
- function v() {
2118
- document.removeEventListener("click", ue), document.removeEventListener("scroll", de, !0), window.removeEventListener("resize", w);
2119
- }
2120
- async function E() {
2121
- var u, y, c;
2122
- t.disabled || r.value || (M.value = "", r.value = !0, await Pe(), U(), (u = L.value) == null || u.focus(), (c = (y = D.value) == null ? void 0 : y.querySelector(".fx-opt.is-on")) == null || c.scrollIntoView({ block: "nearest" }), ge());
2123
- }
2124
- function w() {
2125
- r.value && (r.value = !1, M.value = "", v());
2126
- }
2127
- Te(M, async () => {
2128
- r.value && (await Pe(), U());
2129
- });
2130
- function R(u) {
2131
- var y;
2132
- if (u.key === "Escape")
2133
- u.preventDefault(), w(), (y = p.value) == null || y.focus();
2134
- else if (u.key === "Enter") {
2135
- u.preventDefault();
2136
- const c = Z.value.find((S) => !S.disabled);
2137
- c && ce(c);
2138
- }
2139
- }
2140
- function $() {
2141
- r.value ? w() : E();
2142
- }
2143
- function ce(u) {
2144
- if (!u.disabled) {
2145
- if (t.multiple && !u.command) {
2146
- n("toggle", u.value);
2147
- return;
2148
- }
2149
- if (w(), t.multiple) {
2150
- n("update:modelValue", u.value);
2151
- return;
2152
- }
2153
- u.value !== t.modelValue && n("update:modelValue", u.value);
2154
- }
2155
- }
2156
- const na = Y(() => t.options.filter((u) => !u.disabled));
2157
- function oa(u) {
2158
- const y = na.value;
2159
- if (t.multiple || !y.length) {
2160
- E();
2161
- return;
2162
- }
2163
- const c = y.findIndex((ee) => ee.value === t.modelValue), S = u === "Home" ? 0 : u === "End" ? y.length - 1 : u === "ArrowDown" ? Math.min(y.length - 1, (c < 0 ? -1 : c) + 1) : Math.max(0, (c < 0 ? 1 : c) - 1), O = y[S];
2164
- O && O.value !== t.modelValue ? n("update:modelValue", O.value) : E();
2165
- }
2166
- function sa(u) {
2167
- var y;
2168
- if (u.key === "Escape") {
2169
- if (!r.value) return;
2170
- u.preventDefault(), w(), (y = p.value) == null || y.focus();
2171
- return;
2172
- }
2173
- if (u.key === "Enter" || u.key === " ") {
2174
- u.preventDefault(), $();
2175
- return;
2176
- }
2177
- u.key !== "ArrowDown" && u.key !== "ArrowUp" && u.key !== "Home" && u.key !== "End" || (u.preventDefault(), oa(u.key));
2178
- }
2179
- return Ie(v), (u, y) => (b(), k("div", {
2180
- ref_key: "rootEl",
2181
- ref: d,
2182
- class: pe(["fx-sel", i.value])
2183
- }, [
2184
- x("button", ca({
2185
- ref_key: "btnEl",
2186
- ref: p
2187
- }, u.$attrs, {
2188
- type: "button",
2189
- class: ["sch-input fx-btn", { "is-open": r.value }],
2190
- disabled: e.disabled,
2191
- "aria-haspopup": "listbox",
2192
- "aria-expanded": r.value,
2193
- onClick: y[0] || (y[0] = (c) => $()),
2194
- onKeydown: sa
2195
- }), [
2196
- x("span", Ln, W(J.value), 1)
2197
- ], 16, Mn),
2198
- (b(), da(ma, {
2199
- to: "body",
2200
- disabled: !C.value
2201
- }, [
2202
- x("div", In, [
2203
- r.value ? (b(), k("div", {
2204
- key: 0,
2205
- ref_key: "popEl",
2206
- ref: D,
2207
- class: pe(["fx-pop", { "fx-pop-rich": A.value }]),
2208
- role: "listbox",
2209
- "aria-multiselectable": e.multiple || void 0,
2210
- style: { visibility: "hidden" }
2211
- }, [
2212
- e.menuTitle ? (b(), k("div", Rn, W(e.menuTitle), 1)) : z("", !0),
2213
- e.searchable ? (b(), k("div", On, [
2214
- ya(x("input", {
2215
- ref_key: "searchEl",
2216
- ref: L,
2217
- "onUpdate:modelValue": y[1] || (y[1] = (c) => M.value = c),
2218
- class: "sch-input fx-pop-q",
2219
- type: "search",
2220
- placeholder: "Search",
2221
- autocomplete: "off",
2222
- spellcheck: "false",
2223
- "aria-label": "Search",
2224
- onKeydown: R
2225
- }, null, 544), [
2226
- [pa, M.value]
2227
- ])
2228
- ])) : z("", !0),
2229
- e.searchable && !q.value.length ? (b(), k("div", $n, "No matches")) : z("", !0),
2230
- (b(!0), k(He, null, fa(q.value, (c) => (b(), k(He, {
2231
- key: "heading" in c ? `heading:${c.heading}` : `option:${c.option.value}`
2232
- }, [
2233
- "heading" in c ? (b(), k("div", xn, W(c.heading), 1)) : (b(), k("div", {
2234
- key: 1,
2235
- class: pe(["fx-opt", {
2236
- "is-on": f(c.option),
2237
- "is-off": c.option.disabled,
2238
- "is-new": c.option.command
2239
- }]),
2240
- role: "option",
2241
- "aria-selected": f(c.option),
2242
- onClick: (S) => ce(c.option)
2243
- }, [
2244
- y[2] || (y[2] = x("span", {
2245
- class: "fx-tick",
2246
- "aria-hidden": "true"
2247
- }, [
2248
- x("svg", {
2249
- width: "11",
2250
- height: "11",
2251
- viewBox: "0 0 16 16",
2252
- fill: "none"
2253
- }, [
2254
- x("path", {
2255
- d: "m3.5 8.4 3 3 6-7",
2256
- stroke: "currentColor",
2257
- "stroke-width": "2.2",
2258
- "stroke-linecap": "round",
2259
- "stroke-linejoin": "round"
2260
- })
2261
- ])
2262
- ], -1)),
2263
- A.value ? (b(), k("span", Bn, [
2264
- x("b", null, W(c.option.label), 1),
2265
- c.option.hint ? (b(), k("small", _n, W(c.option.hint), 1)) : z("", !0)
2266
- ])) : (b(), k(He, { key: 1 }, [
2267
- ha(W(c.option.label), 1)
2268
- ], 64))
2269
- ], 10, Yn))
2270
- ], 64))), 128))
2271
- ], 10, Tn)) : z("", !0)
2272
- ])
2273
- ], 8, ["disabled"]))
2274
- ], 2));
2275
- }
2276
- }), Fn = ["id", "aria-labelledby", "aria-label"], ze = 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])', Ko = /* @__PURE__ */ Re({
2277
- __name: "ScheduleModal",
2278
- props: {
2279
- open: { type: Boolean },
2280
- id: {},
2281
- panelClass: { default: "ob-modal" },
2282
- panelStyle: {},
2283
- labelledBy: {},
2284
- label: {}
2285
- },
2286
- emits: ["close"],
2287
- setup(e, { emit: a }) {
2288
- const t = e, n = a, s = P(null);
2289
- let i = null;
2290
- function r() {
2291
- Pe(() => {
2292
- const d = s.value;
2293
- d && (d.querySelector(ze) ?? d).focus();
2294
- });
2295
- }
2296
- function o(d) {
2297
- if (!t.open) return;
2298
- if (d.key === "Escape") {
2299
- d.preventDefault(), n("close");
2300
- return;
2301
- }
2302
- if (d.key !== "Tab" || !s.value) return;
2303
- const p = Array.from(s.value.querySelectorAll(ze));
2304
- if (!p.length) return;
2305
- const D = p[0], C = p[p.length - 1];
2306
- d.shiftKey && document.activeElement === D ? (d.preventDefault(), C.focus()) : !d.shiftKey && document.activeElement === C && (d.preventDefault(), D.focus());
2307
- }
2308
- return Te(
2309
- () => t.open,
2310
- (d) => {
2311
- d ? (i = document.activeElement instanceof HTMLElement ? document.activeElement : null, r()) : (i == null || i.focus(), i = null);
2312
- },
2313
- { immediate: !0 }
2314
- ), Le(() => document.addEventListener("keydown", o)), Ie(() => {
2315
- document.removeEventListener("keydown", o), i = null;
2316
- }), (d, p) => e.open ? (b(), k("div", {
2317
- key: 0,
2318
- class: "modal-overlay open",
2319
- onClick: p[0] || (p[0] = va((D) => n("close"), ["self"]))
2320
- }, [
2321
- x("div", {
2322
- id: e.id,
2323
- ref_key: "panel",
2324
- ref: s,
2325
- class: pe(["schedule-modal-panel", e.panelClass]),
2326
- style: ga(e.panelStyle),
2327
- role: "dialog",
2328
- "aria-modal": "true",
2329
- "aria-labelledby": e.labelledBy,
2330
- "aria-label": e.label,
2331
- tabindex: "-1"
2332
- }, [
2333
- Ve(d.$slots, "default")
2334
- ], 14, Fn)
2335
- ])) : z("", !0);
2336
- }
2337
- });
2338
- export {
2339
- H as $,
2340
- Lo as A,
2341
- Xn as B,
2342
- eo as C,
2343
- se as D,
2344
- je as E,
2345
- ke as F,
2346
- ba as G,
2347
- to as H,
2348
- mo as I,
2349
- Oo as J,
2350
- Ea as K,
2351
- No as L,
2352
- ko as M,
2353
- bo as N,
2354
- Ze as O,
2355
- Na as P,
2356
- so as Q,
2357
- qn as R,
2358
- Io as S,
2359
- F as T,
2360
- aa as U,
2361
- Ia as V,
2362
- Mo as W,
2363
- Be as X,
2364
- xo as Y,
2365
- ao as Z,
2366
- K as _,
2367
- _o as a,
2368
- le as a0,
2369
- ie as a1,
2370
- Nn as a2,
2371
- oe as a3,
2372
- ro as a4,
2373
- uo as a5,
2374
- Me as a6,
2375
- io as a7,
2376
- Ta as a8,
2377
- co as a9,
2378
- po as aA,
2379
- gn as aa,
2380
- j as ab,
2381
- wo as ac,
2382
- go as ad,
2383
- Do as ae,
2384
- $o as af,
2385
- xa as ag,
2386
- Ao as ah,
2387
- Ca as ai,
2388
- Qn as aj,
2389
- vo as ak,
2390
- xe as al,
2391
- Uo as am,
2392
- Ye as an,
2393
- fe as ao,
2394
- Se as ap,
2395
- Eo as aq,
2396
- zo as ar,
2397
- Vo as as,
2398
- Ko as at,
2399
- B as au,
2400
- jn as av,
2401
- Wo as aw,
2402
- fo as ax,
2403
- yo as ay,
2404
- re as az,
2405
- N as b,
2406
- Fo as c,
2407
- G as d,
2408
- To as e,
2409
- Jn as f,
2410
- yn as g,
2411
- So as h,
2412
- Ma as i,
2413
- ho as j,
2414
- Yo as k,
2415
- Ho as l,
2416
- Po as m,
2417
- Co as n,
2418
- m as o,
2419
- l as p,
2420
- Ce as q,
2421
- lo as r,
2422
- Pa as s,
2423
- oo as t,
2424
- Ro as u,
2425
- Ne as v,
2426
- no as w,
2427
- fn as x,
2428
- Zn as y,
2429
- Bo as z
2430
- };