@ancon/wildcat-utils 1.23.1 → 1.24.0

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.
@@ -12,6 +12,7 @@ declare type Options = {
12
12
  /** Only relevant for table order */
13
13
  customersFetchTableOrders: boolean;
14
14
  pickupTimeUpdated: boolean;
15
+ isSkipTicketStatus?: boolean;
15
16
  } & ({
16
17
  checkoutStatus: CheckoutStatus;
17
18
  ticketStatus?: never;
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("@ancon/wildcat-types"),m=require("./getCheckoutItemsMappedByTicketItemStatus.js");var O=(e=>(e.YourOrderIsBeingProcessed="yourOrderIsBeingProcessed",e.YourOrderWasCancelled="yourOrderWasCancelled",e.ProcessingPayment="processingPayment",e.YourOrderIsBeingPrepared="yourOrderIsBeingPrepared",e.YourOrderIsReadyToCollect="yourOrderIsReadyToCollect",e.YourOrderIsBeingDelivered="yourOrderIsBeingDelivered",e.YourOrderHasBeenCompleted="yourOrderHasBeenCompleted",e.YourOrderWillArriveAtYourTable="yourOrderWillArriveAtYourTable",e.ModifiedDeliveryStartTime="modifiedDeliveryStartTime",e.ModifiedPickUpTime="modifiedPickUpTime",e.YourOrderHasBeenAcceptedEstimatedDeliveryStartTime="yourOrderHasBeenAcceptedEstimatedDeliveryStartTime",e.YourOrderIsBeingPreparedEstimatedDeliveryStartTime="yourOrderIsBeingPreparedEstimatedDeliveryStartTime",e.YourOrderHasBeenAcceptedEstimatedTime="yourOrderHasBeenAcceptedEstimatedTime",e.YourOrderHasBeenAcceptedPickupTime="yourOrderHasBeenAcceptedPickupTime",e.DeliveryWasCompleted="deliveryWasCompleted",e.OneItemIsReadyToCollect="oneItemIsReadyToCollect",e.MultipleItemsAreReadyToCollect="multipleItemsAreReadyToCollect",e.EnjoyMealWhileOtherItemsBeingPrepared="enjoyMealWhileOtherItemsBeingPrepared",e))(O||{});function f(e,i){switch(e){case r.CheckoutStatus.Created:case r.CheckoutStatus.Ready:case r.CheckoutStatus.Processing:case r.CheckoutStatus.Authorized:return"yourOrderIsBeingProcessed";case r.CheckoutStatus.Canceled:return"yourOrderWasCancelled";case r.CheckoutStatus.Received:return"processingPayment";case r.CheckoutStatus.ReadyToCollect:return i?"yourOrderIsBeingDelivered":"yourOrderIsReadyToCollect";default:return null}}function C(e){switch(e){case r.TicketStatus.Pending:case r.TicketStatus.PendingAccept:return"yourOrderIsBeingProcessed";case r.TicketStatus.Preparing:return"yourOrderIsBeingPrepared";case r.TicketStatus.Ready:return"yourOrderIsReadyToCollect";case r.TicketStatus.Closed:return"yourOrderHasBeenCompleted";case r.TicketStatus.Canceled:return"yourOrderWasCancelled";default:throw new Error(`Unhandled ticket status "${e}" in getTranslationKeyByTicketStatus()`)}}function T(e,{checkoutStatus:i,ticketStatus:a,customersFetchTableOrders:o}){const d=(e==null?void 0:e.orderFormat)===r.OrderFormat.Delivery,t=(e==null?void 0:e.orderFormat)===r.OrderFormat.TakeAway,l=(e==null?void 0:e.orderFormat)===r.OrderFormat.TableOrder;if(d||t||l&&!o)return!1;const u=i!=null,c=a!=null;if(u){const s=i===r.CheckoutStatus.Captured,n=i===r.CheckoutStatus.InProgress;return s||n}if(c){const s=a===r.TicketStatus.Preparing,n=a===r.TicketStatus.Ready;return s||n}return!1}function P(e,{checkoutStatus:i,ticketStatus:a,customersFetchTableOrders:o,pickupTimeUpdated:d},t){if(T(e,{checkoutStatus:i,ticketStatus:a,customersFetchTableOrders:o})){if(t.ready>0)return t.ready<2?["oneItemIsReadyToCollect"]:["multipleItemsAreReadyToCollect",{count:t.ready}];if(t.done>0&&t.done<t.all)return["enjoyMealWhileOtherItemsBeingPrepared",{count:Math.max(0,t.all-t.done-t.ready)}]}if(a!=null)return[C(a)];const l=(e==null?void 0:e.orderFormat)===r.OrderFormat.Delivery,u=f(i,l);if(u)return[u];const c=i===r.CheckoutStatus.Captured,s=i===r.CheckoutStatus.InProgress,n=i===r.CheckoutStatus.Done,y=(e==null?void 0:e.orderFormat)===r.OrderFormat.EatIn,p=(e==null?void 0:e.orderFormat)===r.OrderFormat.TakeAway,g=(e==null?void 0:e.orderFormat)===r.OrderFormat.TableOrder;if(c)return g&&!o?["yourOrderWillArriveAtYourTable"]:l?d?["modifiedDeliveryStartTime"]:["yourOrderHasBeenAcceptedEstimatedDeliveryStartTime"]:d?["modifiedPickUpTime"]:["yourOrderHasBeenAcceptedPickupTime"];if(s){if(l)return d?["modifiedDeliveryStartTime"]:["yourOrderIsBeingPreparedEstimatedDeliveryStartTime"];if(y||p){if(t.ready===t.all)return["yourOrderIsReadyToCollect"];if(t.done===t.all)return["yourOrderHasBeenCompleted"]}return g?t.ready===t.all?o?["yourOrderIsReadyToCollect"]:["yourOrderWillArriveAtYourTable"]:t.done===t.all?o?["yourOrderHasBeenCompleted"]:["yourOrderWillArriveAtYourTable"]:d?["modifiedPickUpTime"]:o?["yourOrderIsBeingPrepared"]:["yourOrderWillArriveAtYourTable"]:d?["modifiedPickUpTime"]:["yourOrderIsBeingPrepared"]}if(n)return y||p?["yourOrderHasBeenCompleted"]:l?["deliveryWasCompleted"]:["yourOrderHasBeenCompleted"];throw new Error("Could not resolve translation key in getTranslationKey()")}const I={yourOrderIsBeingProcessed:()=>({title:"Your order is being processed"}),yourOrderWasCancelled:()=>({title:"Your order was canceled",message:"Sorry. Your order could not go through."}),processingPayment:()=>({title:"Processing payment",message:"Please wait while your payment is being processed"}),yourOrderIsBeingPrepared:()=>({title:"Your order is now being prepared!",message:"We will let you know when it is ready for pickup."}),yourOrderIsReadyToCollect:()=>({title:"Your order is ready to be collected!",message:"Please go ahead and show this screen at the collection point"}),yourOrderIsBeingDelivered:()=>({title:"Your order is being delivered",message:"It will arrive at your door shortly. Enjoy your meal!"}),yourOrderHasBeenCompleted:()=>({title:"Enjoy your meal!",message:"Your order has been completed!"}),yourOrderWillArriveAtYourTable:()=>({title:"Your order has been accepted!",message:"It will arrive at your table shortly"}),modifiedDeliveryStartTime:()=>({title:"Your delivery time was modified",message:"Delivery will start at approximately 00:00."}),modifiedPickUpTime:()=>({title:"Your pickup time was modified",message:"Pickup time: 00:00"}),yourOrderHasBeenAcceptedEstimatedDeliveryStartTime:()=>({title:"Your order has been accepted",message:"Estimated delivery start time: 00:00"}),yourOrderIsBeingPreparedEstimatedDeliveryStartTime:()=>({title:"Your order is now being prepared!",message:"Estimated delivery start time: 00:00"}),yourOrderHasBeenAcceptedEstimatedTime:()=>({title:"Your order has been accepted",message:"Estimated time: 00:00"}),yourOrderHasBeenAcceptedPickupTime:()=>({title:"Your order has been accepted",message:"Pickup time: 00:00"}),deliveryWasCompleted:()=>({title:"Your order was completed",message:"Enjoy your meal!"}),oneItemIsReadyToCollect:()=>({title:"One item is ready to pick up!",message:"Please allow cashier or waiter to confirm that the prepared item has been successfully issued."}),multipleItemsAreReadyToCollect:()=>({title:"Multiple items are ready to pick up!",message:"Please allow cashier or waiter to confirm that the prepared items have been successfully issued."}),enjoyMealWhileOtherItemsBeingPrepared:({meta:e})=>({title:"Enjoy your meal while the rest of the items are being prepared!",message:`${e.count} more items are being prepared`})};function h(e,i,a=I){const o=m((e==null?void 0:e.items)??[]),[d,t]=P(e,i,{all:o.all.length,ready:o.ready.length,done:o.done.length}),l=a[d]({key:d,meta:t});if(!l)throw new Error("Could not resolve translation in getOrderStatusTexts()");return[l,d]}exports.TranslationKey=O;exports.default=h;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("@ancon/wildcat-types"),f=require("./getCheckoutItemsMappedByTicketItemStatus.js");var O=(e=>(e.YourOrderIsBeingProcessed="yourOrderIsBeingProcessed",e.YourOrderWasCancelled="yourOrderWasCancelled",e.ProcessingPayment="processingPayment",e.YourOrderIsBeingPrepared="yourOrderIsBeingPrepared",e.YourOrderIsReadyToCollect="yourOrderIsReadyToCollect",e.YourOrderIsBeingDelivered="yourOrderIsBeingDelivered",e.YourOrderHasBeenCompleted="yourOrderHasBeenCompleted",e.YourOrderWillArriveAtYourTable="yourOrderWillArriveAtYourTable",e.ModifiedDeliveryStartTime="modifiedDeliveryStartTime",e.ModifiedPickUpTime="modifiedPickUpTime",e.YourOrderHasBeenAcceptedEstimatedDeliveryStartTime="yourOrderHasBeenAcceptedEstimatedDeliveryStartTime",e.YourOrderIsBeingPreparedEstimatedDeliveryStartTime="yourOrderIsBeingPreparedEstimatedDeliveryStartTime",e.YourOrderHasBeenAcceptedEstimatedTime="yourOrderHasBeenAcceptedEstimatedTime",e.YourOrderHasBeenAcceptedPickupTime="yourOrderHasBeenAcceptedPickupTime",e.DeliveryWasCompleted="deliveryWasCompleted",e.OneItemIsReadyToCollect="oneItemIsReadyToCollect",e.MultipleItemsAreReadyToCollect="multipleItemsAreReadyToCollect",e.EnjoyMealWhileOtherItemsBeingPrepared="enjoyMealWhileOtherItemsBeingPrepared",e))(O||{});function C(e,i){switch(e){case r.CheckoutStatus.Created:case r.CheckoutStatus.Ready:case r.CheckoutStatus.Processing:case r.CheckoutStatus.Authorized:return"yourOrderIsBeingProcessed";case r.CheckoutStatus.Canceled:return"yourOrderWasCancelled";case r.CheckoutStatus.Received:return"processingPayment";case r.CheckoutStatus.ReadyToCollect:return i?"yourOrderIsBeingDelivered":"yourOrderIsReadyToCollect";default:return null}}function T(e){switch(e){case r.TicketStatus.Pending:case r.TicketStatus.PendingAccept:return"yourOrderIsBeingProcessed";case r.TicketStatus.Preparing:return"yourOrderIsBeingPrepared";case r.TicketStatus.Ready:return"yourOrderIsReadyToCollect";case r.TicketStatus.Closed:return"yourOrderHasBeenCompleted";case r.TicketStatus.Canceled:return"yourOrderWasCancelled";default:throw new Error(`Unhandled ticket status "${e}" in getTranslationKeyByTicketStatus()`)}}function I(e,{checkoutStatus:i,ticketStatus:o,customersFetchTableOrders:d}){const a=(e==null?void 0:e.orderFormat)===r.OrderFormat.Delivery,s=(e==null?void 0:e.orderFormat)===r.OrderFormat.TakeAway,t=(e==null?void 0:e.orderFormat)===r.OrderFormat.TableOrder;if(a||s||t&&!d)return!1;const l=i!=null,c=o!=null;if(l){const n=i===r.CheckoutStatus.Captured,u=i===r.CheckoutStatus.InProgress;return n||u}if(c){const n=o===r.TicketStatus.Preparing,u=o===r.TicketStatus.Ready;return n||u}return!1}function P(e,{checkoutStatus:i,ticketStatus:o,customersFetchTableOrders:d,pickupTimeUpdated:a,isSkipTicketStatus:s},t){if(t&&I(e,{checkoutStatus:i,ticketStatus:o,customersFetchTableOrders:d})){if(t.ready>0)return t.ready<2?["oneItemIsReadyToCollect"]:["multipleItemsAreReadyToCollect",{count:t.ready}];if(t.done>0&&t.done<t.all)return["enjoyMealWhileOtherItemsBeingPrepared",{count:Math.max(0,t.all-t.done-t.ready)}]}if(o!=null&&!s)return[T(o)];const l=(e==null?void 0:e.orderFormat)===r.OrderFormat.Delivery,c=C(i,l);if(c)return[c];const n=i===r.CheckoutStatus.Captured,u=i===r.CheckoutStatus.InProgress,m=i===r.CheckoutStatus.Done,y=(e==null?void 0:e.orderFormat)===r.OrderFormat.EatIn,p=(e==null?void 0:e.orderFormat)===r.OrderFormat.TakeAway,g=(e==null?void 0:e.orderFormat)===r.OrderFormat.TableOrder;if(n)return g&&!d?["yourOrderWillArriveAtYourTable"]:l?a?["modifiedDeliveryStartTime"]:["yourOrderHasBeenAcceptedEstimatedDeliveryStartTime"]:a?["modifiedPickUpTime"]:["yourOrderHasBeenAcceptedPickupTime"];if(u){if(l)return a?["modifiedDeliveryStartTime"]:["yourOrderIsBeingPreparedEstimatedDeliveryStartTime"];if(t&&(y||p)){if(t.ready===t.all)return["yourOrderIsReadyToCollect"];if(t.done===t.all)return["yourOrderHasBeenCompleted"]}if(g){if(t){if(t.ready===t.all)return d?["yourOrderIsReadyToCollect"]:["yourOrderWillArriveAtYourTable"];if(t.done===t.all)return d?["yourOrderHasBeenCompleted"]:["yourOrderWillArriveAtYourTable"]}return a?["modifiedPickUpTime"]:d?["yourOrderIsBeingPrepared"]:["yourOrderWillArriveAtYourTable"]}return a?["modifiedPickUpTime"]:["yourOrderIsBeingPrepared"]}if(m)return y||p?["yourOrderHasBeenCompleted"]:l?["deliveryWasCompleted"]:["yourOrderHasBeenCompleted"];throw new Error("Could not resolve translation key in getTranslationKey()")}const B={yourOrderIsBeingProcessed:()=>({title:"Your order is being processed"}),yourOrderWasCancelled:()=>({title:"Your order was canceled",message:"Sorry. Your order could not go through."}),processingPayment:()=>({title:"Processing payment",message:"Please wait while your payment is being processed"}),yourOrderIsBeingPrepared:()=>({title:"Your order is now being prepared!",message:"We will let you know when it is ready for pickup."}),yourOrderIsReadyToCollect:()=>({title:"Your order is ready to be collected!",message:"Please go ahead and show this screen at the collection point"}),yourOrderIsBeingDelivered:()=>({title:"Your order is being delivered",message:"It will arrive at your door shortly. Enjoy your meal!"}),yourOrderHasBeenCompleted:()=>({title:"Enjoy your meal!",message:"Your order has been completed!"}),yourOrderWillArriveAtYourTable:()=>({title:"Your order has been accepted!",message:"It will arrive at your table shortly"}),modifiedDeliveryStartTime:()=>({title:"Your delivery time was modified",message:"Delivery will start at approximately 00:00."}),modifiedPickUpTime:()=>({title:"Your pickup time was modified",message:"Pickup time: 00:00"}),yourOrderHasBeenAcceptedEstimatedDeliveryStartTime:()=>({title:"Your order has been accepted",message:"Estimated delivery start time: 00:00"}),yourOrderIsBeingPreparedEstimatedDeliveryStartTime:()=>({title:"Your order is now being prepared!",message:"Estimated delivery start time: 00:00"}),yourOrderHasBeenAcceptedEstimatedTime:()=>({title:"Your order has been accepted",message:"Estimated time: 00:00"}),yourOrderHasBeenAcceptedPickupTime:()=>({title:"Your order has been accepted",message:"Pickup time: 00:00"}),deliveryWasCompleted:()=>({title:"Your order was completed",message:"Enjoy your meal!"}),oneItemIsReadyToCollect:()=>({title:"One item is ready to pick up!",message:"Please allow cashier or waiter to confirm that the prepared item has been successfully issued."}),multipleItemsAreReadyToCollect:()=>({title:"Multiple items are ready to pick up!",message:"Please allow cashier or waiter to confirm that the prepared items have been successfully issued."}),enjoyMealWhileOtherItemsBeingPrepared:({meta:e})=>({title:"Enjoy your meal while the rest of the items are being prepared!",message:`${e.count} more items are being prepared`})};function h(e,i){if(i)return;const o=f(e);return{all:o.all.length,ready:o.ready.length,done:o.done.length}}function v(e,i,o=B){const{isSkipTicketStatus:d}=i,a=h((e==null?void 0:e.items)??[],d),[s,t]=P(e,i,a),l=o[s]({key:s,meta:t});if(!l)throw new Error("Could not resolve translation in getOrderStatusTexts()");return[l,s]}exports.TranslationKey=O;exports.default=v;
@@ -1,24 +1,24 @@
1
- import { OrderFormat as n, CheckoutStatus as i, TicketStatus as s } from "@ancon/wildcat-types";
2
- import f from "./getCheckoutItemsMappedByTicketItemStatus.mjs";
3
- var I = /* @__PURE__ */ ((e) => (e.YourOrderIsBeingProcessed = "yourOrderIsBeingProcessed", e.YourOrderWasCancelled = "yourOrderWasCancelled", e.ProcessingPayment = "processingPayment", e.YourOrderIsBeingPrepared = "yourOrderIsBeingPrepared", e.YourOrderIsReadyToCollect = "yourOrderIsReadyToCollect", e.YourOrderIsBeingDelivered = "yourOrderIsBeingDelivered", e.YourOrderHasBeenCompleted = "yourOrderHasBeenCompleted", e.YourOrderWillArriveAtYourTable = "yourOrderWillArriveAtYourTable", e.ModifiedDeliveryStartTime = "modifiedDeliveryStartTime", e.ModifiedPickUpTime = "modifiedPickUpTime", e.YourOrderHasBeenAcceptedEstimatedDeliveryStartTime = "yourOrderHasBeenAcceptedEstimatedDeliveryStartTime", e.YourOrderIsBeingPreparedEstimatedDeliveryStartTime = "yourOrderIsBeingPreparedEstimatedDeliveryStartTime", e.YourOrderHasBeenAcceptedEstimatedTime = "yourOrderHasBeenAcceptedEstimatedTime", e.YourOrderHasBeenAcceptedPickupTime = "yourOrderHasBeenAcceptedPickupTime", e.DeliveryWasCompleted = "deliveryWasCompleted", e.OneItemIsReadyToCollect = "oneItemIsReadyToCollect", e.MultipleItemsAreReadyToCollect = "multipleItemsAreReadyToCollect", e.EnjoyMealWhileOtherItemsBeingPrepared = "enjoyMealWhileOtherItemsBeingPrepared", e))(I || {});
4
- function P(e, t) {
1
+ import { OrderFormat as u, CheckoutStatus as o, TicketStatus as s } from "@ancon/wildcat-types";
2
+ import I from "./getCheckoutItemsMappedByTicketItemStatus.mjs";
3
+ var P = /* @__PURE__ */ ((e) => (e.YourOrderIsBeingProcessed = "yourOrderIsBeingProcessed", e.YourOrderWasCancelled = "yourOrderWasCancelled", e.ProcessingPayment = "processingPayment", e.YourOrderIsBeingPrepared = "yourOrderIsBeingPrepared", e.YourOrderIsReadyToCollect = "yourOrderIsReadyToCollect", e.YourOrderIsBeingDelivered = "yourOrderIsBeingDelivered", e.YourOrderHasBeenCompleted = "yourOrderHasBeenCompleted", e.YourOrderWillArriveAtYourTable = "yourOrderWillArriveAtYourTable", e.ModifiedDeliveryStartTime = "modifiedDeliveryStartTime", e.ModifiedPickUpTime = "modifiedPickUpTime", e.YourOrderHasBeenAcceptedEstimatedDeliveryStartTime = "yourOrderHasBeenAcceptedEstimatedDeliveryStartTime", e.YourOrderIsBeingPreparedEstimatedDeliveryStartTime = "yourOrderIsBeingPreparedEstimatedDeliveryStartTime", e.YourOrderHasBeenAcceptedEstimatedTime = "yourOrderHasBeenAcceptedEstimatedTime", e.YourOrderHasBeenAcceptedPickupTime = "yourOrderHasBeenAcceptedPickupTime", e.DeliveryWasCompleted = "deliveryWasCompleted", e.OneItemIsReadyToCollect = "oneItemIsReadyToCollect", e.MultipleItemsAreReadyToCollect = "multipleItemsAreReadyToCollect", e.EnjoyMealWhileOtherItemsBeingPrepared = "enjoyMealWhileOtherItemsBeingPrepared", e))(P || {});
4
+ function C(e, t) {
5
5
  switch (e) {
6
- case i.Created:
7
- case i.Ready:
8
- case i.Processing:
9
- case i.Authorized:
6
+ case o.Created:
7
+ case o.Ready:
8
+ case o.Processing:
9
+ case o.Authorized:
10
10
  return "yourOrderIsBeingProcessed";
11
- case i.Canceled:
11
+ case o.Canceled:
12
12
  return "yourOrderWasCancelled";
13
- case i.Received:
13
+ case o.Received:
14
14
  return "processingPayment";
15
- case i.ReadyToCollect:
15
+ case o.ReadyToCollect:
16
16
  return t ? "yourOrderIsBeingDelivered" : "yourOrderIsReadyToCollect";
17
17
  default:
18
18
  return null;
19
19
  }
20
20
  }
21
- function C(e) {
21
+ function B(e) {
22
22
  switch (e) {
23
23
  case s.Pending:
24
24
  case s.PendingAccept:
@@ -37,35 +37,36 @@ function C(e) {
37
37
  );
38
38
  }
39
39
  }
40
- function B(e, {
40
+ function T(e, {
41
41
  checkoutStatus: t,
42
- ticketStatus: l,
43
- customersFetchTableOrders: o
42
+ ticketStatus: i,
43
+ customersFetchTableOrders: d
44
44
  }) {
45
- const d = (e == null ? void 0 : e.orderFormat) === n.Delivery, r = (e == null ? void 0 : e.orderFormat) === n.TakeAway, a = (e == null ? void 0 : e.orderFormat) === n.TableOrder;
46
- if (d || r || a && !o)
45
+ const a = (e == null ? void 0 : e.orderFormat) === u.Delivery, n = (e == null ? void 0 : e.orderFormat) === u.TakeAway, r = (e == null ? void 0 : e.orderFormat) === u.TableOrder;
46
+ if (a || n || r && !d)
47
47
  return !1;
48
- const y = t != null, p = l != null;
49
- if (y) {
50
- const u = t === i.Captured, c = t === i.InProgress;
51
- return u || c;
48
+ const l = t != null, p = i != null;
49
+ if (l) {
50
+ const c = t === o.Captured, y = t === o.InProgress;
51
+ return c || y;
52
52
  }
53
53
  if (p) {
54
- const u = l === s.Preparing, c = l === s.Ready;
55
- return u || c;
54
+ const c = i === s.Preparing, y = i === s.Ready;
55
+ return c || y;
56
56
  }
57
57
  return !1;
58
58
  }
59
- function T(e, {
59
+ function v(e, {
60
60
  checkoutStatus: t,
61
- ticketStatus: l,
62
- customersFetchTableOrders: o,
63
- pickupTimeUpdated: d
61
+ ticketStatus: i,
62
+ customersFetchTableOrders: d,
63
+ pickupTimeUpdated: a,
64
+ isSkipTicketStatus: n
64
65
  }, r) {
65
- if (B(e, {
66
+ if (r && T(e, {
66
67
  checkoutStatus: t,
67
- ticketStatus: l,
68
- customersFetchTableOrders: o
68
+ ticketStatus: i,
69
+ customersFetchTableOrders: d
69
70
  })) {
70
71
  if (r.ready > 0)
71
72
  return r.ready < 2 ? ["oneItemIsReadyToCollect"] : [
@@ -78,30 +79,42 @@ function T(e, {
78
79
  { count: Math.max(0, r.all - r.done - r.ready) }
79
80
  ];
80
81
  }
81
- if (l != null)
82
- return [C(l)];
83
- const a = (e == null ? void 0 : e.orderFormat) === n.Delivery, y = P(t, a);
84
- if (y)
85
- return [y];
86
- const p = t === i.Captured, u = t === i.InProgress, c = t === i.Done, g = (e == null ? void 0 : e.orderFormat) === n.EatIn, m = (e == null ? void 0 : e.orderFormat) === n.TakeAway, O = (e == null ? void 0 : e.orderFormat) === n.TableOrder;
82
+ if (i != null && !n)
83
+ return [B(i)];
84
+ const l = (e == null ? void 0 : e.orderFormat) === u.Delivery, p = C(
85
+ t,
86
+ l
87
+ );
87
88
  if (p)
88
- return O && !o ? ["yourOrderWillArriveAtYourTable"] : a ? d ? ["modifiedDeliveryStartTime"] : ["yourOrderHasBeenAcceptedEstimatedDeliveryStartTime"] : d ? ["modifiedPickUpTime"] : ["yourOrderHasBeenAcceptedPickupTime"];
89
- if (u) {
90
- if (a)
91
- return d ? ["modifiedDeliveryStartTime"] : ["yourOrderIsBeingPreparedEstimatedDeliveryStartTime"];
92
- if (g || m) {
89
+ return [p];
90
+ const c = t === o.Captured, y = t === o.InProgress, O = t === o.Done, g = (e == null ? void 0 : e.orderFormat) === u.EatIn, f = (e == null ? void 0 : e.orderFormat) === u.TakeAway, m = (e == null ? void 0 : e.orderFormat) === u.TableOrder;
91
+ if (c)
92
+ return m && !d ? ["yourOrderWillArriveAtYourTable"] : l ? a ? ["modifiedDeliveryStartTime"] : ["yourOrderHasBeenAcceptedEstimatedDeliveryStartTime"] : a ? ["modifiedPickUpTime"] : ["yourOrderHasBeenAcceptedPickupTime"];
93
+ if (y) {
94
+ if (l)
95
+ return a ? ["modifiedDeliveryStartTime"] : ["yourOrderIsBeingPreparedEstimatedDeliveryStartTime"];
96
+ if (r && (g || f)) {
93
97
  if (r.ready === r.all)
94
98
  return ["yourOrderIsReadyToCollect"];
95
99
  if (r.done === r.all)
96
100
  return ["yourOrderHasBeenCompleted"];
97
101
  }
98
- return O ? r.ready === r.all ? o ? ["yourOrderIsReadyToCollect"] : ["yourOrderWillArriveAtYourTable"] : r.done === r.all ? o ? ["yourOrderHasBeenCompleted"] : ["yourOrderWillArriveAtYourTable"] : d ? ["modifiedPickUpTime"] : o ? ["yourOrderIsBeingPrepared"] : ["yourOrderWillArriveAtYourTable"] : d ? ["modifiedPickUpTime"] : ["yourOrderIsBeingPrepared"];
102
+ if (m) {
103
+ if (r) {
104
+ if (r.ready === r.all)
105
+ return d ? ["yourOrderIsReadyToCollect"] : ["yourOrderWillArriveAtYourTable"];
106
+ if (r.done === r.all)
107
+ return d ? ["yourOrderHasBeenCompleted"] : ["yourOrderWillArriveAtYourTable"];
108
+ }
109
+ return a ? ["modifiedPickUpTime"] : d ? ["yourOrderIsBeingPrepared"] : ["yourOrderWillArriveAtYourTable"];
110
+ }
111
+ return a ? ["modifiedPickUpTime"] : ["yourOrderIsBeingPrepared"];
99
112
  }
100
- if (c)
101
- return g || m ? ["yourOrderHasBeenCompleted"] : a ? ["deliveryWasCompleted"] : ["yourOrderHasBeenCompleted"];
113
+ if (O)
114
+ return g || f ? ["yourOrderHasBeenCompleted"] : l ? ["deliveryWasCompleted"] : ["yourOrderHasBeenCompleted"];
102
115
  throw new Error("Could not resolve translation key in getTranslationKey()");
103
116
  }
104
- const v = {
117
+ const h = {
105
118
  yourOrderIsBeingProcessed: () => ({
106
119
  title: "Your order is being processed"
107
120
  }),
@@ -174,19 +187,26 @@ const v = {
174
187
  message: `${e.count} more items are being prepared`
175
188
  })
176
189
  };
177
- function Y(e, t, l = v) {
178
- const o = f(
179
- (e == null ? void 0 : e.items) ?? []
180
- ), [d, r] = T(e, t, {
181
- all: o.all.length,
182
- ready: o.ready.length,
183
- done: o.done.length
184
- }), a = l[d]({ key: d, meta: r });
185
- if (!a)
190
+ function A(e, t) {
191
+ if (t)
192
+ return;
193
+ const i = I(e);
194
+ return {
195
+ all: i.all.length,
196
+ ready: i.ready.length,
197
+ done: i.done.length
198
+ };
199
+ }
200
+ function D(e, t, i = h) {
201
+ const { isSkipTicketStatus: d } = t, a = A(
202
+ (e == null ? void 0 : e.items) ?? [],
203
+ d
204
+ ), [n, r] = v(e, t, a), l = i[n]({ key: n, meta: r });
205
+ if (!l)
186
206
  throw new Error("Could not resolve translation in getOrderStatusTexts()");
187
- return [a, d];
207
+ return [l, n];
188
208
  }
189
209
  export {
190
- I as TranslationKey,
191
- Y as default
210
+ P as TranslationKey,
211
+ D as default
192
212
  };
@@ -0,0 +1,10 @@
1
+ import { OrderFormat, ServiceDateTime, ServiceDateTimeInterval } from '@ancon/wildcat-types';
2
+ /**
3
+ * Returns the intervals for the specified weekday index (0-6) and order format (optional)
4
+ *
5
+ * @param weekdayIndex
6
+ * @param serviceDateTimes
7
+ * @param orderFormat
8
+ * @returns
9
+ */
10
+ export default function getPickerIntervalsForDay(weekdayIndex: number, serviceDateTimes: ServiceDateTime[], orderFormat?: OrderFormat): ServiceDateTimeInterval[];
@@ -0,0 +1 @@
1
+ "use strict";const o=require("moment"),y=require("../shared/enums.js"),d=require("../shared/constants.js"),m=require("./getServiceIntervalsForOrderFormat.js");function F(t,n,u){return m(u,n).reduce((e,r)=>{const i=r.dayOfWeek===y.DayOfWeek.Everyday,a=!!r.type;if(i){if(a){const s=o(r.fromDate),f=o().isoWeekday(t);return s.isSame(f,"isoWeek")&&t===s.isoWeekday()&&e.push(r),e}return e.push(r),e}return r.dayOfWeek===d.DaysOfWeekMap[t]&&e.push(r),e},[])}module.exports=F;
@@ -0,0 +1,26 @@
1
+ import s from "moment";
2
+ import { DayOfWeek as p } from "../shared/enums.mjs";
3
+ import { DaysOfWeekMap as u } from "../shared/constants.mjs";
4
+ import y from "./getServiceIntervalsForOrderFormat.mjs";
5
+ function D(o, f, m) {
6
+ return y(
7
+ m,
8
+ f
9
+ ).reduce(
10
+ (r, e) => {
11
+ const i = e.dayOfWeek === p.Everyday, a = !!e.type;
12
+ if (i) {
13
+ if (a) {
14
+ const t = s(e.fromDate), n = s().isoWeekday(o);
15
+ return t.isSame(n, "isoWeek") && o === t.isoWeekday() && r.push(e), r;
16
+ }
17
+ return r.push(e), r;
18
+ }
19
+ return e.dayOfWeek === u[o] && r.push(e), r;
20
+ },
21
+ []
22
+ );
23
+ }
24
+ export {
25
+ D as default
26
+ };
@@ -0,0 +1,12 @@
1
+ import { ServiceDateTimeInterval } from '@ancon/wildcat-types';
2
+ import moment, { Moment } from 'moment';
3
+ /**
4
+ * Calculates the start and end date of an outlet service interval and returns them as Moment objects.
5
+ *
6
+ * @param date - Moment object representing the date to be used for the calculation
7
+ * @param interval - Object containing the start and duration of the interval in the form "hh:mm:ss"
8
+ * @param preparationTime - String representing the preparation time in the form "hh:mm:ss"
9
+ * @param outletTimeZoneOffset - String representing the outlet timezone offset in the form "hh:mm:ss"
10
+ * @returns - Array containing the interval start and end as Moment objects
11
+ */
12
+ export default function getServiceIntervalRange(date: Moment, interval: Pick<ServiceDateTimeInterval, 'start' | 'duration'>, preparationTime?: string, outletTimeZoneOffset?: string): moment.Moment[];
@@ -0,0 +1 @@
1
+ "use strict";const H=require("moment"),v=require("../time/toMinutes.js"),S=require("../time/getNextTenthMinute.js");function n(e){return e.split(":").map(Number)}function b(e,s,r="00:00:00",c="00:00:00"){const{duration:d,start:m}=s,[a,f]=n(m),[l,M]=n(c),[p,h]=n(r),[O,T]=n(d),t=e.clone().utc(!0).hour(a).minute(f).second(0).millisecond(0),o=t.clone().add(l,"hour").add(M,"minute").date()-e.date();o!==0&&t.subtract(o,"day");const i=v(p,h),u=t.clone().add(O,"hours").add(T,"minutes");return u.diff(H().utc(!0),"minutes")<i&&u.subtract(i,"minutes"),t.add(i,"minutes"),t.minute(S(t)),[t,u]}module.exports=b;
@@ -0,0 +1,15 @@
1
+ import H from "moment";
2
+ import v from "../time/toMinutes.mjs";
3
+ import S from "../time/getNextTenthMinute.mjs";
4
+ function n(e) {
5
+ return e.split(":").map(Number);
6
+ }
7
+ function N(e, s, r = "00:00:00", m = "00:00:00") {
8
+ const { duration: d, start: a } = s, [c, f] = n(a), [l, p] = n(m), [M, h] = n(r), [O, T] = n(d), t = e.clone().utc(!0).hour(c).minute(f).second(0).millisecond(0), u = t.clone().add(l, "hour").add(p, "minute").date() - e.date();
9
+ u !== 0 && t.subtract(u, "day");
10
+ const o = v(M, h), i = t.clone().add(O, "hours").add(T, "minutes");
11
+ return i.diff(H().utc(!0), "minutes") < o && i.subtract(o, "minutes"), t.add(o, "minutes"), t.minute(S(t)), [t, i];
12
+ }
13
+ export {
14
+ N as default
15
+ };
@@ -0,0 +1,25 @@
1
+ import { OrderFormat, ServiceDateTime } from '@ancon/wildcat-types';
2
+ declare type ModifiedServiceDateTimeInterval = {
3
+ start: string;
4
+ duration: string;
5
+ end: string;
6
+ fromDate: string;
7
+ toDate: string;
8
+ type: number;
9
+ position: number;
10
+ state: number;
11
+ dayOfWeek: number;
12
+ isDefault: boolean;
13
+ reason: string;
14
+ orderFormats: OrderFormat;
15
+ };
16
+ /**
17
+ * @param orderFormat - The order format to filter by - if undefined, returns all intervals
18
+ * @param serviceDateTimes - The outlet service date times
19
+ * @returns - An array of intervals for the matching order format
20
+ *
21
+ * @example
22
+ * getServiceIntervalsForOrderFormat(OrderFormat.Delivery, serviceDateTimes) // returns all delivery intervals
23
+ */
24
+ export default function getServiceIntervalsForOrderFormat(orderFormat?: OrderFormat, serviceDateTimes?: ServiceDateTime[]): ModifiedServiceDateTimeInterval[];
25
+ export {};
@@ -0,0 +1 @@
1
+ "use strict";function d(t,n=[]){if(t===void 0)return n.reduce((r,o)=>(r.push(...o.intervals.map(s=>({...s,orderFormats:o.orderFormats}))),r),[]);const u=n.some(r=>r.orderFormats===t);return n.reduce((r,o)=>(!u&&(o.orderFormats&t)!==t||(!u||o.orderFormats===t)&&r.push(...o.intervals.map(s=>({...s,orderFormats:o.orderFormats}))),r),[])}module.exports=d;
@@ -0,0 +1,27 @@
1
+ function d(n, t = []) {
2
+ if (n === void 0)
3
+ return t.reduce(
4
+ (r, o) => (r.push(
5
+ ...o.intervals.map((u) => ({
6
+ ...u,
7
+ orderFormats: o.orderFormats
8
+ }))
9
+ ), r),
10
+ []
11
+ );
12
+ const s = t.some(
13
+ (r) => r.orderFormats === n
14
+ );
15
+ return t.reduce(
16
+ (r, o) => (!s && (o.orderFormats & n) !== n || (!s || o.orderFormats === n) && r.push(
17
+ ...o.intervals.map((u) => ({
18
+ ...u,
19
+ orderFormats: o.orderFormats
20
+ }))
21
+ ), r),
22
+ []
23
+ );
24
+ }
25
+ export {
26
+ d as default
27
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ancon/wildcat-utils",
3
- "version": "1.23.1",
3
+ "version": "1.24.0",
4
4
  "private": false,
5
5
  "main": "index.js",
6
6
  "module": "index.mjs",
@@ -276,6 +276,21 @@
276
276
  "require": "./outlet/getOutletTodayOpeningTimes.js",
277
277
  "types": "./outlet/getOutletTodayOpeningTimes.d.ts"
278
278
  },
279
+ "./outlet/getPickerIntervalsForDay": {
280
+ "import": "./outlet/getPickerIntervalsForDay.mjs",
281
+ "require": "./outlet/getPickerIntervalsForDay.js",
282
+ "types": "./outlet/getPickerIntervalsForDay.d.ts"
283
+ },
284
+ "./outlet/getServiceIntervalRange": {
285
+ "import": "./outlet/getServiceIntervalRange.mjs",
286
+ "require": "./outlet/getServiceIntervalRange.js",
287
+ "types": "./outlet/getServiceIntervalRange.d.ts"
288
+ },
289
+ "./outlet/getServiceIntervalsForOrderFormat": {
290
+ "import": "./outlet/getServiceIntervalsForOrderFormat.mjs",
291
+ "require": "./outlet/getServiceIntervalsForOrderFormat.js",
292
+ "types": "./outlet/getServiceIntervalsForOrderFormat.d.ts"
293
+ },
279
294
  "./outlet": {
280
295
  "import": "./outlet/index.mjs",
281
296
  "require": "./outlet/index.js",
@@ -331,6 +346,11 @@
331
346
  "require": "./printing/isValidStarCloudPrinter.js",
332
347
  "types": "./printing/isValidStarCloudPrinter.d.ts"
333
348
  },
349
+ "./shared/constants": {
350
+ "import": "./shared/constants.mjs",
351
+ "require": "./shared/constants.js",
352
+ "types": "./shared/constants.d.ts"
353
+ },
334
354
  "./shared/enums": {
335
355
  "import": "./shared/enums.mjs",
336
356
  "require": "./shared/enums.js",
@@ -401,6 +421,21 @@
401
421
  "require": "./tables/index.js",
402
422
  "types": "./tables/index.d.ts"
403
423
  },
424
+ "./time/getNextTenthMinute": {
425
+ "import": "./time/getNextTenthMinute.mjs",
426
+ "require": "./time/getNextTenthMinute.js",
427
+ "types": "./time/getNextTenthMinute.d.ts"
428
+ },
429
+ "./time": {
430
+ "import": "./time/index.mjs",
431
+ "require": "./time/index.js",
432
+ "types": "./time/index.d.ts"
433
+ },
434
+ "./time/toMinutes": {
435
+ "import": "./time/toMinutes.mjs",
436
+ "require": "./time/toMinutes.js",
437
+ "types": "./time/toMinutes.d.ts"
438
+ },
404
439
  "./user/getFormattedPhoneNumber": {
405
440
  "import": "./user/getFormattedPhoneNumber.mjs",
406
441
  "require": "./user/getFormattedPhoneNumber.js",
@@ -0,0 +1,2 @@
1
+ import { DayOfWeek } from './enums';
2
+ export declare const DaysOfWeekMap: Record<number, DayOfWeek>;
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./enums.js"),a={0:e.DayOfWeek.Everyday,1:e.DayOfWeek.Monday,2:e.DayOfWeek.Tuesday,3:e.DayOfWeek.Wednesday,4:e.DayOfWeek.Thursday,5:e.DayOfWeek.Friday,6:e.DayOfWeek.Saturday,7:e.DayOfWeek.Sunday};exports.DaysOfWeekMap=a;
@@ -0,0 +1,14 @@
1
+ import { DayOfWeek as a } from "./enums.mjs";
2
+ const d = {
3
+ 0: a.Everyday,
4
+ 1: a.Monday,
5
+ 2: a.Tuesday,
6
+ 3: a.Wednesday,
7
+ 4: a.Thursday,
8
+ 5: a.Friday,
9
+ 6: a.Saturday,
10
+ 7: a.Sunday
11
+ };
12
+ export {
13
+ d as DaysOfWeekMap
14
+ };
@@ -0,0 +1,12 @@
1
+ import { Moment } from 'moment';
2
+ /**
3
+ * Returns the next tenth minute from the given moment object
4
+ *
5
+ * @param momentObject - Moment object to get the next tenth minute from (defaults to now)
6
+ * @returns - The next tenth minute from the given moment object
7
+ *
8
+ * @example
9
+ * getNextTenthMinute(moment('2021-01-01 12:39:56')) // 40
10
+ * getNextTenthMinute(moment('2021-01-01 12:31:56')) // 40
11
+ */
12
+ export default function getNextTenthMinute(momentObject?: Moment): number;
@@ -0,0 +1 @@
1
+ "use strict";const e=require("moment");function n(t){return Math.ceil((t??e()).minutes()/10)*10}module.exports=n;
@@ -0,0 +1,7 @@
1
+ import e from "moment";
2
+ function i(t) {
3
+ return Math.ceil((t ?? e()).minutes() / 10) * 10;
4
+ }
5
+ export {
6
+ i as default
7
+ };
@@ -0,0 +1,3 @@
1
+ import toMinutes from './toMinutes';
2
+ import getNextTenthMinute from './getNextTenthMinute';
3
+ export { toMinutes, getNextTenthMinute };
package/time/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./toMinutes.js"),t=require("./getNextTenthMinute.js");require("moment");exports.toMinutes=e;exports.getNextTenthMinute=t;
package/time/index.mjs ADDED
@@ -0,0 +1,7 @@
1
+ import { default as r } from "./toMinutes.mjs";
2
+ import { default as f } from "./getNextTenthMinute.mjs";
3
+ import "moment";
4
+ export {
5
+ f as getNextTenthMinute,
6
+ r as toMinutes
7
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Converts hours and minutes to minutes
3
+ */
4
+ export default function toMinutes(hours?: number, minutes?: number): number;
@@ -0,0 +1 @@
1
+ "use strict";const o=require("moment");function r(e=0,n=0){const t=o();return t.clone().add(e,"hour").add(n,"minute").diff(t,"minute")}module.exports=r;
@@ -0,0 +1,8 @@
1
+ import n from "moment";
2
+ function r(e = 0, o = 0) {
3
+ const t = n();
4
+ return t.clone().add(e, "hour").add(o, "minute").diff(t, "minute");
5
+ }
6
+ export {
7
+ r as default
8
+ };