@burdenoff/microfe-movethewheels 2026.920.2 → 2026.921.1

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 (82) hide show
  1. package/dist/components/CarbonFootprintPanel.js +1 -1
  2. package/dist/components/CustomerPicker.js +271 -0
  3. package/dist/components/DataTable.js +140 -139
  4. package/dist/components/DocumentsCard.js +14 -8
  5. package/dist/generated/wspace-types.d.ts +1043 -5
  6. package/dist/hooks/useAnalytics.js +21 -1
  7. package/dist/hooks/useCustomers.js +94 -78
  8. package/dist/hooks/useDebouncedValue.js +11 -0
  9. package/dist/hooks/useEntityDocuments.js +28 -18
  10. package/dist/hooks/useEpod.js +24 -17
  11. package/dist/hooks/useFleet.js +146 -125
  12. package/dist/hooks/useInventory.js +255 -186
  13. package/dist/hooks/useMultiModalShipments.js +35 -27
  14. package/dist/hooks/useOrders.js +73 -73
  15. package/dist/hooks/useRoutes.js +97 -75
  16. package/dist/hooks/useTracking.js +100 -88
  17. package/dist/movethewheels/components/CustomerPicker.d.ts +19 -0
  18. package/dist/movethewheels/components/DataTable.d.ts +5 -1
  19. package/dist/movethewheels/hooks/useCustomers.d.ts +0 -1
  20. package/dist/movethewheels/hooks/useDebouncedValue.d.ts +1 -0
  21. package/dist/movethewheels/hooks/useEntityDocuments.d.ts +2 -0
  22. package/dist/movethewheels/hooks/useEpod.d.ts +6 -1
  23. package/dist/movethewheels/hooks/useFleet.d.ts +49 -5
  24. package/dist/movethewheels/hooks/useInventory.d.ts +24 -17
  25. package/dist/movethewheels/hooks/useMultiModalShipments.d.ts +6 -1
  26. package/dist/movethewheels/hooks/useOrders.d.ts +33 -5
  27. package/dist/movethewheels/hooks/useRoutes.d.ts +2 -1
  28. package/dist/movethewheels/hooks/useTracking.d.ts +12 -11
  29. package/dist/movethewheels/types/index.d.ts +7 -5
  30. package/dist/movethewheels/utils/navigation.d.ts +14 -0
  31. package/dist/pages/CreateOrderPage.js +228 -217
  32. package/dist/pages/CustomerDetailsPage.js +220 -220
  33. package/dist/pages/CustomersPage.js +61 -54
  34. package/dist/pages/DeliveryCapturePage.js +131 -109
  35. package/dist/pages/DriversPage.js +100 -92
  36. package/dist/pages/InventoryPage.js +239 -236
  37. package/dist/pages/MultiModalShipmentPage.js +163 -130
  38. package/dist/pages/OrderDetailsPage.js +224 -208
  39. package/dist/pages/OrdersListPage.js +66 -60
  40. package/dist/pages/ProductDetailsPage.js +241 -200
  41. package/dist/pages/ProductsPage.js +59 -52
  42. package/dist/pages/RouteDetailsPage.js +343 -321
  43. package/dist/pages/RoutesPage.js +55 -48
  44. package/dist/pages/VehiclesPage.js +63 -56
  45. package/dist/pages/WarehousesPage.js +60 -53
  46. package/dist/utils/navigation.js +22 -1
  47. package/package.json +1 -1
  48. package/src/generated/wspace-types.ts +1188 -5
  49. package/src/movethewheels/components/CarbonFootprintPanel.tsx +0 -1
  50. package/src/movethewheels/components/CustomerPicker.tsx +321 -0
  51. package/src/movethewheels/components/DataTable.tsx +34 -18
  52. package/src/movethewheels/components/DocumentsCard.tsx +6 -1
  53. package/src/movethewheels/components/maps/leaflet-setup.ts +1 -8
  54. package/src/movethewheels/hooks/useAnalytics.ts +27 -0
  55. package/src/movethewheels/hooks/useCustomers.ts +64 -24
  56. package/src/movethewheels/hooks/useDebouncedValue.ts +12 -0
  57. package/src/movethewheels/hooks/useEntityDocuments.ts +43 -25
  58. package/src/movethewheels/hooks/useEpod.ts +14 -7
  59. package/src/movethewheels/hooks/useFleet.ts +58 -37
  60. package/src/movethewheels/hooks/useFleetIntelligence.ts +1 -4
  61. package/src/movethewheels/hooks/useInventory.ts +211 -90
  62. package/src/movethewheels/hooks/useMultiModalShipments.ts +15 -11
  63. package/src/movethewheels/hooks/useOrders.ts +13 -14
  64. package/src/movethewheels/hooks/useRoutes.ts +80 -23
  65. package/src/movethewheels/hooks/useTracking.ts +130 -98
  66. package/src/movethewheels/pages/CreateOrderPage.tsx +92 -31
  67. package/src/movethewheels/pages/CustomerDetailsPage.tsx +15 -6
  68. package/src/movethewheels/pages/CustomersPage.tsx +11 -1
  69. package/src/movethewheels/pages/DeliveryCapturePage.tsx +31 -1
  70. package/src/movethewheels/pages/DriversPage.tsx +24 -12
  71. package/src/movethewheels/pages/InventoryPage.tsx +57 -32
  72. package/src/movethewheels/pages/MultiModalShipmentPage.tsx +52 -3
  73. package/src/movethewheels/pages/OrderDetailsPage.tsx +17 -1
  74. package/src/movethewheels/pages/OrdersListPage.tsx +20 -3
  75. package/src/movethewheels/pages/ProductDetailsPage.tsx +52 -3
  76. package/src/movethewheels/pages/ProductsPage.tsx +11 -1
  77. package/src/movethewheels/pages/RouteDetailsPage.tsx +35 -5
  78. package/src/movethewheels/pages/RoutesPage.tsx +11 -1
  79. package/src/movethewheels/pages/VehiclesPage.tsx +19 -2
  80. package/src/movethewheels/pages/WarehousesPage.tsx +11 -1
  81. package/src/movethewheels/types/index.ts +7 -5
  82. package/src/movethewheels/utils/navigation.ts +32 -0
@@ -2,11 +2,12 @@ import { useMoveTheWheels as e } from "../providers/MoveTheWheelsProvider.js";
2
2
  import { executeGraphQL as t } from "../utils/graphqlClient.js";
3
3
  import { useCallback as n, useEffect as r, useMemo as i, useState as a } from "react";
4
4
  //#region src/movethewheels/hooks/useMultiModalShipments.ts
5
- var o = "\n id\n shipmentNumber\n status\n primaryMode\n isMultiModal\n totalFreightCost\n freightCurrency\n origin\n destination\n createdAt\n legs {\n \n id\n legNumber\n mode\n status\n origin\n destination\n distanceKm\n weightKg\n lengthCm\n widthCm\n heightCm\n volumeCbm\n containerType\n containerCount\n carrierName\n chargeableWeightKg\n calculatedCost\n currency\n\n }\n", s = `
5
+ var o = "\n id\n shipmentNumber\n status\n primaryMode\n isMultiModal\n totalFreightCost\n freightCurrency\n origin\n destination\n createdAt\n legs(pagination: { limit: 20, offset: 0 }) {\n \n id\n legNumber\n mode\n status\n origin\n destination\n distanceKm\n weightKg\n lengthCm\n widthCm\n heightCm\n volumeCbm\n containerType\n containerCount\n carrierName\n chargeableWeightKg\n calculatedCost\n currency\n\n }\n", s = `
6
6
  query ListMultiModalShipments($pagination: PaginationInput) {
7
7
  shipments(filter: { isMultiModal: true }, pagination: $pagination) {
8
8
  ${o}
9
9
  }
10
+ shipmentsCount(filter: { isMultiModal: true })
10
11
  }
11
12
  `, c = "\n query CalculateFreightRate($input: FreightRateInput!) {\n calculateFreightRate(input: $input) {\n mode\n chargeableWeightKg\n ratePerUnit\n calculatedCost\n currency\n breakdown {\n label\n amount\n }\n }\n }\n", l = `
12
13
  mutation PlanMultiModalShipment($input: PlanMultiModalShipmentInput!) {
@@ -99,38 +100,45 @@ function m() {
99
100
  s?.id
100
101
  ]);
101
102
  }
102
- function h() {
103
- let e = m(), [i, o] = a([]), [f, h] = a(!1), [g, _] = a(null), v = n(async () => {
104
- h(!0), _(null);
103
+ function h(e = {}) {
104
+ let { limit: i = 10, offset: o = 0 } = e, f = m(), [h, g] = a([]), [_, v] = a(0), [y, b] = a(!1), [x, S] = a(!1), [C, w] = a(null), T = n(async () => {
105
+ S(!0), w(null);
105
106
  try {
106
- o((await t(e, s, { pagination: {
107
- limit: 100,
108
- offset: 0
109
- } })).shipments.map(p));
107
+ let e = await t(f, s, { pagination: {
108
+ limit: i,
109
+ offset: o
110
+ } });
111
+ g(e.shipments.map(p)), v(e.shipmentsCount), b(o + e.shipments.length < e.shipmentsCount);
110
112
  } catch (e) {
111
- _(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load multi-modal shipments"));
113
+ w(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load multi-modal shipments"));
112
114
  } finally {
113
- h(!1);
115
+ S(!1);
114
116
  }
115
- }, [e]);
117
+ }, [
118
+ f,
119
+ i,
120
+ o
121
+ ]);
116
122
  return r(() => {
117
- v();
118
- }, [v]), {
119
- shipments: i,
120
- isLoading: f,
121
- error: g,
122
- refetch: () => void v(),
123
- calculateFreightRate: n(async (n) => (await t(e, c, { input: d(n) })).calculateFreightRate, [e]),
124
- planMultiModalShipment: n(async (n) => {
125
- let r = p((await t(e, l, { input: {
126
- shipmentNumber: n.shipmentNumber,
127
- customerId: n.customerId,
128
- origin: n.origin,
129
- destination: n.destination,
130
- legs: n.legs.map(u)
123
+ T();
124
+ }, [T]), {
125
+ shipments: h,
126
+ totalShipments: _,
127
+ hasMore: y,
128
+ isLoading: x,
129
+ error: C,
130
+ refetch: () => void T(),
131
+ calculateFreightRate: n(async (e) => (await t(f, c, { input: d(e) })).calculateFreightRate, [f]),
132
+ planMultiModalShipment: n(async (e) => {
133
+ let n = p((await t(f, l, { input: {
134
+ shipmentNumber: e.shipmentNumber,
135
+ customerId: e.customerId,
136
+ origin: e.origin,
137
+ destination: e.destination,
138
+ legs: e.legs.map(u)
131
139
  } })).planMultiModalShipment);
132
- return o((e) => [r, ...e]), r;
133
- }, [e])
140
+ return g((e) => [n, ...e]), v((e) => e + 1), n;
141
+ }, [f])
134
142
  };
135
143
  }
136
144
  //#endregion
@@ -7,6 +7,7 @@ var o = "\n id\n deliveryJobNumber\n customerId\n status\n priority\n pick
7
7
  deliveryJobs(filter: $filter, pagination: $pagination) {
8
8
  ${o}
9
9
  }
10
+ deliveryJobsCount(filter: $filter)
10
11
  }
11
12
  `, c = `
12
13
  query GetDeliveryJob($id: ID!) {
@@ -137,8 +138,9 @@ function b(o = {}) {
137
138
  c?.priority,
138
139
  c?.customerId,
139
140
  c?.driverId,
141
+ c?.search,
140
142
  c?.unassigned
141
- ]), { apiGatewayUrl: v, authToken: b, workspaceToken: x, workspaceId: S, tenantId: C, currentUser: w } = e(), [T, E] = a([]), [D, O] = a(!1), [k, A] = a(!1), [j, M] = a(null), N = i(() => ({
143
+ ]), { apiGatewayUrl: v, authToken: b, workspaceToken: x, workspaceId: S, tenantId: C, currentUser: w } = e(), [T, E] = a([]), [D, O] = a(0), [k, A] = a(!1), [j, M] = a(!1), [N, P] = a(null), F = i(() => ({
142
144
  apiGatewayUrl: v,
143
145
  authToken: b,
144
146
  workspaceToken: x,
@@ -152,96 +154,94 @@ function b(o = {}) {
152
154
  S,
153
155
  C,
154
156
  w?.id
155
- ]), P = n(async () => {
156
- A(!0), M(null);
157
+ ]), I = n(async () => {
158
+ M(!0), P(null);
157
159
  try {
158
- let e = (await t(N, s, {
160
+ let e = await t(F, s, {
159
161
  filter: {
160
162
  status: h?.status ? g(h.status) : void 0,
161
163
  priority: h?.priority ? _(h.priority) : void 0,
162
164
  customerId: h?.customerId,
163
- driverId: h?.driverId
165
+ driverId: h?.driverId,
166
+ unassigned: h?.unassigned,
167
+ search: h?.search
164
168
  },
165
169
  pagination: {
166
170
  limit: l,
167
171
  offset: m
168
172
  }
169
- })).deliveryJobs;
170
- O(e.length === l);
171
- let n = e.map(y);
172
- h?.unassigned && (n = n.filter((e) => !e.driverId)), E(n);
173
+ }), n = e.deliveryJobs;
174
+ O(e.deliveryJobsCount), A(m + n.length < e.deliveryJobsCount), E(n.map(y));
173
175
  } catch (e) {
174
- M(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load orders"));
176
+ P(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load orders"));
175
177
  } finally {
176
- A(!1);
178
+ M(!1);
177
179
  }
178
180
  }, [
179
181
  h,
180
- N,
182
+ F,
181
183
  l,
182
184
  m
183
185
  ]);
184
- r(() => {
185
- P();
186
- }, [P]);
187
- let F = n(() => {
188
- P();
189
- }, [P]), I = n(async (e) => {
190
- let n = y((await t(N, u, { input: {
191
- deliveryJobNumber: e.orderNumber ?? `ORD-${(/* @__PURE__ */ new Date()).getFullYear()}-${Date.now().toString().slice(-6)}`,
192
- status: g(e.status ?? "pending"),
193
- priority: _(e.priority),
194
- customerId: e.customerId,
195
- pickupAddress: e.pickupAddress ?? {},
196
- deliveryAddress: e.deliveryAddress ?? {},
197
- cargoItems: e.items ?? [],
198
- pricing: e.pricing ?? null,
199
- specialInstructions: e.specialInstructions,
200
- trackingNumber: e.trackingNumber,
201
- scheduledDelivery: e.scheduledDelivery?.toISOString(),
202
- vehicleId: e.vehicleId,
203
- driverId: e.driverId
204
- } })).createDeliveryJob);
205
- return E((e) => [n, ...e]), n;
206
- }, [N]), L = n(async (e, n) => {
207
- let r = y((await t(N, d, {
208
- id: e,
209
- input: {
210
- status: n.status ? g(n.status) : void 0,
211
- priority: n.priority ? _(n.priority) : void 0,
212
- customerId: n.customerId,
213
- pickupAddress: n.pickupAddress,
214
- deliveryAddress: n.deliveryAddress,
215
- cargoItems: n.items,
216
- pricing: n.pricing,
217
- specialInstructions: n.specialInstructions,
218
- trackingNumber: n.trackingNumber,
219
- scheduledDelivery: n.scheduledDelivery === null ? null : n.scheduledDelivery?.toISOString(),
220
- vehicleId: n.vehicleId,
221
- driverId: n.driverId
222
- }
223
- })).updateDeliveryJob);
224
- return E((t) => t.map((t) => t.id === e ? r : t)), r;
225
- }, [N]), R = n(async (e) => {
226
- await t(N, p, { id: e }), E((t) => t.filter((t) => t.id !== e));
227
- }, [N]), z = n(async (e, n) => {
228
- let r = y((await t(N, f, {
229
- id: e,
230
- input: { status: g(n) }
231
- })).updateDeliveryJobStatus);
232
- return E((t) => t.map((t) => t.id === e ? r : t)), r;
233
- }, [N]);
234
- return {
186
+ return r(() => {
187
+ I();
188
+ }, [I]), {
235
189
  orders: T,
236
- totalOrders: T.length,
237
- hasMore: D,
238
- isLoading: k,
239
- error: j,
240
- refetch: F,
241
- createOrder: I,
242
- updateOrder: L,
243
- deleteOrder: R,
244
- updateOrderStatus: z
190
+ totalOrders: D,
191
+ hasMore: k,
192
+ isLoading: j,
193
+ error: N,
194
+ refetch: n(() => {
195
+ I();
196
+ }, [I]),
197
+ createOrder: n(async (e) => {
198
+ let n = y((await t(F, u, { input: {
199
+ deliveryJobNumber: e.orderNumber ?? `ORD-${(/* @__PURE__ */ new Date()).getFullYear()}-${Date.now().toString().slice(-6)}`,
200
+ status: g(e.status ?? "pending"),
201
+ priority: _(e.priority),
202
+ customerId: e.customerId,
203
+ pickupAddress: e.pickupAddress ?? {},
204
+ deliveryAddress: e.deliveryAddress ?? {},
205
+ cargoItems: e.items ?? [],
206
+ pricing: e.pricing ?? null,
207
+ specialInstructions: e.specialInstructions,
208
+ trackingNumber: e.trackingNumber,
209
+ scheduledDelivery: e.scheduledDelivery?.toISOString(),
210
+ vehicleId: e.vehicleId,
211
+ driverId: e.driverId
212
+ } })).createDeliveryJob);
213
+ return E((e) => [n, ...e]), n;
214
+ }, [F]),
215
+ updateOrder: n(async (e, n) => {
216
+ let r = y((await t(F, d, {
217
+ id: e,
218
+ input: {
219
+ status: n.status ? g(n.status) : void 0,
220
+ priority: n.priority ? _(n.priority) : void 0,
221
+ customerId: n.customerId,
222
+ pickupAddress: n.pickupAddress,
223
+ deliveryAddress: n.deliveryAddress,
224
+ cargoItems: n.items,
225
+ pricing: n.pricing,
226
+ specialInstructions: n.specialInstructions,
227
+ trackingNumber: n.trackingNumber,
228
+ scheduledDelivery: n.scheduledDelivery === null ? null : n.scheduledDelivery?.toISOString(),
229
+ vehicleId: n.vehicleId,
230
+ driverId: n.driverId
231
+ }
232
+ })).updateDeliveryJob);
233
+ return E((t) => t.map((t) => t.id === e ? r : t)), r;
234
+ }, [F]),
235
+ deleteOrder: n(async (e) => {
236
+ await t(F, p, { id: e }), E((t) => t.filter((t) => t.id !== e));
237
+ }, [F]),
238
+ updateOrderStatus: n(async (e, n) => {
239
+ let r = y((await t(F, f, {
240
+ id: e,
241
+ input: { status: g(n) }
242
+ })).updateDeliveryJobStatus);
243
+ return E((t) => t.map((t) => t.id === e ? r : t)), r;
244
+ }, [F])
245
245
  };
246
246
  }
247
247
  function x(o) {
@@ -352,4 +352,4 @@ function S() {
352
352
  };
353
353
  }
354
354
  //#endregion
355
- export { h as mapOrderPriority, m as mapOrderStatus, x as useOrder, S as useOrderStats, b as useOrders };
355
+ export { y as mapOrder, h as mapOrderPriority, m as mapOrderStatus, x as useOrder, S as useOrderStats, b as useOrders };
@@ -2,7 +2,7 @@ import { useMoveTheWheels as e } from "../providers/MoveTheWheelsProvider.js";
2
2
  import { executeGraphQL as t } from "../utils/graphqlClient.js";
3
3
  import { useCallback as n, useEffect as r, useMemo as i, useState as a } from "react";
4
4
  //#region src/movethewheels/hooks/useRoutes.ts
5
- var o = "\n query ListRoutes($filter: RouteFilterInput, $pagination: PaginationInput) {\n routes(filter: $filter, pagination: $pagination) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", s = "\n query GetRoute($id: ID!) {\n route(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", c = "\n mutation CreateRoute($input: CreateRouteInput!) {\n createRoute(input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", l = "\n mutation UpdateRoute($id: ID!, $input: UpdateRouteInput!) {\n updateRoute(id: $id, input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", u = "\n mutation DeleteRoute($id: ID!) {\n deleteRoute(id: $id)\n }\n", d = "\n mutation OptimizeRoute($id: ID!) {\n optimizeRoute(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n";
5
+ var o = "\n query ListRoutes($filter: RouteFilterInput, $pagination: PaginationInput) {\n routes(filter: $filter, pagination: $pagination) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n routesCount(filter: $filter)\n }\n", s = "\n query GetRoute($id: ID!) {\n route(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", c = "\n mutation CreateRoute($input: CreateRouteInput!) {\n createRoute(input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", l = "\n mutation UpdateRoute($id: ID!, $input: UpdateRouteInput!) {\n updateRoute(id: $id, input: $input) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n", u = "\n mutation DeleteRoute($id: ID!) {\n deleteRoute(id: $id)\n }\n", d = "\n mutation OptimizeRoute($id: ID!) {\n optimizeRoute(id: $id) {\n id\n name\n status\n shipmentId\n vehicleId\n driverId\n waypoints\n estimatedDistance\n estimatedDuration\n fuelCost\n actualDistance\n actualDuration\n createdAt\n }\n }\n";
6
6
  function f(e) {
7
7
  switch (e) {
8
8
  case "IN_PROGRESS": return "in_progress";
@@ -82,41 +82,43 @@ function g() {
82
82
  ]);
83
83
  }
84
84
  function _(e = {}) {
85
- let { driverId: i, vehicleId: s, status: f, limit: m = 500, offset: _ = 0 } = e, v = g(), [y, b] = a([]), [x, S] = a(!1), [C, w] = a(!1), [T, E] = a(null), D = n(async () => {
86
- w(!0), E(null);
85
+ let { driverId: i, vehicleId: s, status: f, search: m, limit: _ = 20, offset: v = 0 } = e, y = g(), [b, x] = a([]), [S, C] = a(0), [w, T] = a(!1), [E, D] = a(!1), [O, k] = a(null), A = n(async () => {
86
+ D(!0), k(null);
87
87
  try {
88
- let e = await t(v, o, {
88
+ let e = await t(y, o, {
89
89
  filter: {
90
90
  driverId: i,
91
91
  vehicleId: s,
92
- status: f ? p(f) : void 0
92
+ status: f ? p(f) : void 0,
93
+ search: m || void 0
93
94
  },
94
95
  pagination: {
95
- limit: m,
96
- offset: _
96
+ limit: _,
97
+ offset: v
97
98
  }
98
99
  });
99
- S(e.routes.length === m), b(e.routes.map(h));
100
+ C(e.routesCount), T(v + e.routes.length < e.routesCount), x(e.routes.map(h));
100
101
  } catch (e) {
101
- E(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load routes"));
102
+ k(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load routes"));
102
103
  } finally {
103
- w(!1);
104
+ D(!1);
104
105
  }
105
106
  }, [
106
107
  i,
107
- v,
108
+ y,
109
+ m,
108
110
  f,
109
111
  s,
110
- m,
111
- _
112
+ _,
113
+ v
112
114
  ]);
113
115
  r(() => {
114
- D();
115
- }, [D]);
116
- let O = n(() => {
117
- D();
118
- }, [D]), k = n(async (e) => {
119
- let n = h((await t(v, c, { input: {
116
+ A();
117
+ }, [A]);
118
+ let j = n(() => {
119
+ A();
120
+ }, [A]), M = n(async (e) => {
121
+ let n = h((await t(y, c, { input: {
120
122
  name: e.name ?? `Route ${(/* @__PURE__ */ new Date()).toLocaleDateString()}`,
121
123
  status: p(e.status),
122
124
  shipmentId: void 0,
@@ -129,9 +131,9 @@ function _(e = {}) {
129
131
  actualDistance: e.distance,
130
132
  actualDuration: e.actualDuration
131
133
  } })).createRoute);
132
- return b((e) => [n, ...e]), n;
133
- }, [v]), A = n(async (e, n) => {
134
- let r = h((await t(v, l, {
134
+ return x((e) => [n, ...e]), n;
135
+ }, [y]), N = n(async (e, n) => {
136
+ let r = h((await t(y, l, {
135
137
  id: e,
136
138
  input: {
137
139
  name: n.name,
@@ -147,40 +149,40 @@ function _(e = {}) {
147
149
  actualDuration: n.actualDuration
148
150
  }
149
151
  })).updateRoute);
150
- return b((t) => t.map((t) => t.id === e ? r : t)), r;
151
- }, [v]), j = n(async (e) => {
152
- await t(v, u, { id: e }), b((t) => t.filter((t) => t.id !== e));
153
- }, [v]), M = n(async (e) => {
154
- let n = {
155
- ...h((await t(v, d, { id: e })).optimizeRoute),
156
- optimized: !0
157
- };
158
- return b((t) => t.map((t) => t.id === e ? n : t)), n;
159
- }, [v]), N = n(async (e, t, n) => {
160
- let r = y.find((t) => t.id === e);
161
- if (!r) throw Error("Route not found");
162
- let i = r.stops.map((e) => e.id === t ? {
163
- ...e,
164
- status: n,
165
- actualTime: n === "completed" ? /* @__PURE__ */ new Date() : e.actualTime
166
- } : e);
167
- return A(e, {
168
- stops: i,
169
- status: i.every((e) => e.status === "completed") ? "completed" : r.status
170
- });
171
- }, [y, A]);
152
+ return x((t) => t.map((t) => t.id === e ? r : t)), r;
153
+ }, [y]);
172
154
  return {
173
- routes: y,
174
- totalRoutes: y.length,
175
- hasMore: x,
176
- isLoading: C,
177
- error: T,
178
- refetch: O,
179
- createRoute: k,
180
- updateRoute: A,
181
- deleteRoute: j,
182
- optimizeRoute: M,
183
- updateStopStatus: N
155
+ routes: b,
156
+ totalRoutes: S,
157
+ hasMore: w,
158
+ isLoading: E,
159
+ error: O,
160
+ refetch: j,
161
+ createRoute: M,
162
+ updateRoute: N,
163
+ deleteRoute: n(async (e) => {
164
+ await t(y, u, { id: e }), x((t) => t.filter((t) => t.id !== e));
165
+ }, [y]),
166
+ optimizeRoute: n(async (e) => {
167
+ let n = {
168
+ ...h((await t(y, d, { id: e })).optimizeRoute),
169
+ optimized: !0
170
+ };
171
+ return x((t) => t.map((t) => t.id === e ? n : t)), n;
172
+ }, [y]),
173
+ updateStopStatus: n(async (e, t, n) => {
174
+ let r = b.find((t) => t.id === e);
175
+ if (!r) throw Error("Route not found");
176
+ let i = r.stops.map((e) => e.id === t ? {
177
+ ...e,
178
+ status: n,
179
+ actualTime: n === "completed" ? /* @__PURE__ */ new Date() : e.actualTime
180
+ } : e);
181
+ return N(e, {
182
+ stops: i,
183
+ status: i.every((e) => e.status === "completed") ? "completed" : r.status
184
+ });
185
+ }, [b, N])
184
186
  };
185
187
  }
186
188
  function v(e) {
@@ -208,26 +210,46 @@ function v(e) {
208
210
  refetch: () => void p()
209
211
  };
210
212
  }
211
- function y() {
212
- let { routes: e, isLoading: t, error: n } = _();
213
- return {
214
- stats: i(() => {
215
- let t = e.reduce((e, t) => e + t.distance, 0), n = e.reduce((e, t) => e + t.estimatedDuration, 0), r = e.length;
216
- return {
217
- totalRoutes: r,
218
- totalDistance: t,
219
- totalDuration: n,
220
- avgDistance: r > 0 ? t / r : 0,
221
- avgDuration: r > 0 ? n / r : 0,
222
- completedRoutes: e.filter((e) => e.status === "completed").length,
223
- inProgressRoutes: e.filter((e) => e.status === "in_progress").length,
224
- plannedRoutes: e.filter((e) => e.status === "planned").length,
225
- optimizedRoutes: e.filter((e) => e.optimized).length
226
- };
227
- }, [e]),
228
- isLoading: t,
229
- error: n
213
+ var y = "\n query RouteStats {\n routeStats {\n total\n totalDistance\n totalDuration\n completed\n inProgress\n planned\n optimized\n }\n }\n";
214
+ function b() {
215
+ let e = g(), [n, i] = a({
216
+ totalRoutes: 0,
217
+ totalDistance: 0,
218
+ totalDuration: 0,
219
+ avgDistance: 0,
220
+ avgDuration: 0,
221
+ completedRoutes: 0,
222
+ inProgressRoutes: 0,
223
+ plannedRoutes: 0,
224
+ optimizedRoutes: 0
225
+ }), [o, s] = a(!1), [c, l] = a(null);
226
+ return r(() => {
227
+ (async () => {
228
+ s(!0), l(null);
229
+ try {
230
+ let n = (await t(e, y)).routeStats;
231
+ i({
232
+ totalRoutes: n.total,
233
+ totalDistance: n.totalDistance,
234
+ totalDuration: n.totalDuration,
235
+ avgDistance: n.total > 0 ? n.totalDistance / n.total : 0,
236
+ avgDuration: n.total > 0 ? n.totalDuration / n.total : 0,
237
+ completedRoutes: n.completed,
238
+ inProgressRoutes: n.inProgress,
239
+ plannedRoutes: n.planned,
240
+ optimizedRoutes: n.optimized
241
+ });
242
+ } catch (e) {
243
+ l(e instanceof Error ? e : /* @__PURE__ */ Error("Failed to load route stats"));
244
+ } finally {
245
+ s(!1);
246
+ }
247
+ })();
248
+ }, [e]), {
249
+ stats: n,
250
+ isLoading: o,
251
+ error: c
230
252
  };
231
253
  }
232
254
  //#endregion
233
- export { v as useRoute, y as useRouteStats, _ as useRoutes };
255
+ export { v as useRoute, b as useRouteStats, _ as useRoutes };