@aglyn/plugins-commerce 1.0.0-beta.229 → 1.0.0-beta.231

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 (590) hide show
  1. package/package.json +13 -13
  2. package/src/index.d.ts +0 -1
  3. package/src/index.js +0 -1
  4. package/src/index.js.map +1 -1
  5. package/src/lib/barcode/barcode-decode.d.ts +71 -0
  6. package/src/lib/barcode/barcode-decode.js +498 -0
  7. package/src/lib/barcode/barcode-decode.js.map +1 -0
  8. package/src/lib/barcode/barcode-encode.d.ts +44 -0
  9. package/src/lib/barcode/barcode-encode.js +138 -0
  10. package/src/lib/barcode/barcode-encode.js.map +1 -0
  11. package/src/lib/barcode/barcode-scanner.component.d.ts +23 -0
  12. package/src/lib/barcode/barcode-scanner.component.js +260 -0
  13. package/src/lib/barcode/barcode-scanner.component.js.map +1 -0
  14. package/src/lib/barcode/scan-button.component.d.ts +10 -0
  15. package/src/lib/barcode/scan-button.component.js +62 -0
  16. package/src/lib/barcode/scan-button.component.js.map +1 -0
  17. package/src/lib/barcode/scanner-wedge.d.ts +35 -0
  18. package/src/lib/barcode/scanner-wedge.js +108 -0
  19. package/src/lib/barcode/scanner-wedge.js.map +1 -0
  20. package/src/lib/components/account.js +10 -1
  21. package/src/lib/components/account.js.map +1 -1
  22. package/src/lib/components/cart-extras.d.ts +45 -0
  23. package/src/lib/components/cart-extras.js +127 -0
  24. package/src/lib/components/cart-extras.js.map +1 -0
  25. package/src/lib/components/cart.js +82 -15
  26. package/src/lib/components/cart.js.map +1 -1
  27. package/src/lib/components/checkout-return-notice.d.ts +26 -0
  28. package/src/lib/components/checkout-return-notice.js +48 -0
  29. package/src/lib/components/checkout-return-notice.js.map +1 -0
  30. package/src/lib/components/commerce-console-page.js +124 -0
  31. package/src/lib/components/commerce-console-page.js.map +1 -1
  32. package/src/lib/components/commerce-console-sections.d.ts +1 -1
  33. package/src/lib/components/commerce-console-sections.js +4 -0
  34. package/src/lib/components/commerce-console-sections.js.map +1 -1
  35. package/src/lib/components/console/bulk-fulfill.d.ts +44 -0
  36. package/src/lib/components/console/bulk-fulfill.js +84 -0
  37. package/src/lib/components/console/bulk-fulfill.js.map +1 -0
  38. package/src/lib/components/console/customer-notifications-card.component.d.ts +19 -0
  39. package/src/lib/components/console/customer-notifications-card.component.js +149 -0
  40. package/src/lib/components/console/customer-notifications-card.component.js.map +1 -0
  41. package/src/lib/components/console/host-orders-card.component.js +84 -5
  42. package/src/lib/components/console/host-orders-card.component.js.map +1 -1
  43. package/src/lib/components/console/locations-card.component.js +164 -57
  44. package/src/lib/components/console/locations-card.component.js.map +1 -1
  45. package/src/lib/components/console/order-detail-dialog.component.js +209 -61
  46. package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
  47. package/src/lib/components/console/order-fulfillment-panel.component.d.ts +48 -0
  48. package/src/lib/components/console/order-fulfillment-panel.component.js +542 -0
  49. package/src/lib/components/console/order-fulfillment-panel.component.js.map +1 -0
  50. package/src/lib/components/console/order-invoice.component.d.ts +33 -0
  51. package/src/lib/components/console/order-invoice.component.js +81 -0
  52. package/src/lib/components/console/order-invoice.component.js.map +1 -0
  53. package/src/lib/components/console/order-receipt-resend.component.d.ts +21 -0
  54. package/src/lib/components/console/order-receipt-resend.component.js +203 -0
  55. package/src/lib/components/console/order-receipt-resend.component.js.map +1 -0
  56. package/src/lib/components/console/order-returns.component.d.ts +36 -0
  57. package/src/lib/components/console/order-returns.component.js +142 -0
  58. package/src/lib/components/console/order-returns.component.js.map +1 -0
  59. package/src/lib/components/console/order-shipping-actions.component.d.ts +54 -0
  60. package/src/lib/components/console/order-shipping-actions.component.js +149 -0
  61. package/src/lib/components/console/order-shipping-actions.component.js.map +1 -0
  62. package/src/lib/components/console/order-webhooks-card.component.d.ts +50 -0
  63. package/src/lib/components/console/order-webhooks-card.component.js +623 -0
  64. package/src/lib/components/console/order-webhooks-card.component.js.map +1 -0
  65. package/src/lib/components/console/order-zones.d.ts +155 -0
  66. package/src/lib/components/console/order-zones.js +40 -0
  67. package/src/lib/components/console/order-zones.js.map +1 -0
  68. package/src/lib/components/console/payment-methods-card.component.d.ts +67 -0
  69. package/src/lib/components/console/payment-methods-card.component.js +395 -0
  70. package/src/lib/components/console/payment-methods-card.component.js.map +1 -0
  71. package/src/lib/components/console/pos/pos-api.d.ts +124 -0
  72. package/src/lib/components/console/pos/pos-api.js +101 -0
  73. package/src/lib/components/console/pos/pos-api.js.map +1 -0
  74. package/src/lib/components/console/pos/pos-cart-panel.component.d.ts +36 -0
  75. package/src/lib/components/console/pos/pos-cart-panel.component.js +160 -0
  76. package/src/lib/components/console/pos/pos-cart-panel.component.js.map +1 -0
  77. package/src/lib/components/console/pos/pos-item-dialog.component.d.ts +39 -0
  78. package/src/lib/components/console/pos/pos-item-dialog.component.js +352 -0
  79. package/src/lib/components/console/pos/pos-item-dialog.component.js.map +1 -0
  80. package/src/lib/components/console/pos/pos-product-grid.component.d.ts +47 -0
  81. package/src/lib/components/console/pos/pos-product-grid.component.js +272 -0
  82. package/src/lib/components/console/pos/pos-product-grid.component.js.map +1 -0
  83. package/src/lib/components/console/pos/pos-receipt-panel.component.d.ts +27 -0
  84. package/src/lib/components/console/pos/pos-receipt-panel.component.js +282 -0
  85. package/src/lib/components/console/pos/pos-receipt-panel.component.js.map +1 -0
  86. package/src/lib/components/console/pos/pos-tender-dialogs.component.d.ts +53 -0
  87. package/src/lib/components/console/pos/pos-tender-dialogs.component.js +445 -0
  88. package/src/lib/components/console/pos/pos-tender-dialogs.component.js.map +1 -0
  89. package/src/lib/components/console/pos/pos-tender-panel.component.d.ts +31 -0
  90. package/src/lib/components/console/pos/pos-tender-panel.component.js +640 -0
  91. package/src/lib/components/console/pos/pos-tender-panel.component.js.map +1 -0
  92. package/src/lib/components/console/pos/use-pos-display.d.ts +43 -0
  93. package/src/lib/components/console/pos/use-pos-display.js +161 -0
  94. package/src/lib/components/console/pos/use-pos-display.js.map +1 -0
  95. package/src/lib/components/console/pos-devices-card.component.d.ts +14 -0
  96. package/src/lib/components/console/pos-devices-card.component.js +546 -0
  97. package/src/lib/components/console/pos-devices-card.component.js.map +1 -0
  98. package/src/lib/components/console/pos-display/brand-screen.d.ts +33 -0
  99. package/src/lib/components/console/pos-display/brand-screen.js +85 -0
  100. package/src/lib/components/console/pos-display/brand-screen.js.map +1 -0
  101. package/src/lib/components/console/pos-display/cart-screen.d.ts +29 -0
  102. package/src/lib/components/console/pos-display/cart-screen.js +166 -0
  103. package/src/lib/components/console/pos-display/cart-screen.js.map +1 -0
  104. package/src/lib/components/console/pos-display/pairing-screen.d.ts +24 -0
  105. package/src/lib/components/console/pos-display/pairing-screen.js +127 -0
  106. package/src/lib/components/console/pos-display/pairing-screen.js.map +1 -0
  107. package/src/lib/components/console/pos-display/pos-display-api.d.ts +90 -0
  108. package/src/lib/components/console/pos-display/pos-display-api.js +140 -0
  109. package/src/lib/components/console/pos-display/pos-display-api.js.map +1 -0
  110. package/src/lib/components/console/pos-display/receipt-screen.d.ts +35 -0
  111. package/src/lib/components/console/pos-display/receipt-screen.js +200 -0
  112. package/src/lib/components/console/pos-display/receipt-screen.js.map +1 -0
  113. package/src/lib/components/console/pos-display/tip-screen.d.ts +36 -0
  114. package/src/lib/components/console/pos-display/tip-screen.js +211 -0
  115. package/src/lib/components/console/pos-display/tip-screen.js.map +1 -0
  116. package/src/lib/components/console/pos-display-page.component.d.ts +16 -0
  117. package/src/lib/components/console/pos-display-page.component.js +407 -0
  118. package/src/lib/components/console/pos-display-page.component.js.map +1 -0
  119. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.d.ts +40 -0
  120. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js +289 -0
  121. package/src/lib/components/console/pos-ops/pos-customer-lookup.component.js.map +1 -0
  122. package/src/lib/components/console/pos-ops/pos-last-receipt.component.d.ts +34 -0
  123. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js +61 -0
  124. package/src/lib/components/console/pos-ops/pos-last-receipt.component.js.map +1 -0
  125. package/src/lib/components/console/pos-ops/pos-operations-bar.component.d.ts +38 -0
  126. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js +129 -0
  127. package/src/lib/components/console/pos-ops/pos-operations-bar.component.js.map +1 -0
  128. package/src/lib/components/console/pos-ops/pos-ops-api.d.ts +37 -0
  129. package/src/lib/components/console/pos-ops/pos-ops-api.js +60 -0
  130. package/src/lib/components/console/pos-ops/pos-ops-api.js.map +1 -0
  131. package/src/lib/components/console/pos-ops/pos-pin-pad.component.d.ts +48 -0
  132. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js +220 -0
  133. package/src/lib/components/console/pos-ops/pos-pin-pad.component.js.map +1 -0
  134. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.d.ts +63 -0
  135. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js +186 -0
  136. package/src/lib/components/console/pos-ops/pos-receipt-actions.component.js.map +1 -0
  137. package/src/lib/components/console/pos-ops/pos-receipt.d.ts +39 -0
  138. package/src/lib/components/console/pos-ops/pos-receipt.js +182 -0
  139. package/src/lib/components/console/pos-ops/pos-receipt.js.map +1 -0
  140. package/src/lib/components/console/pos-ops/pos-return-dialog.component.d.ts +40 -0
  141. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js +465 -0
  142. package/src/lib/components/console/pos-ops/pos-return-dialog.component.js.map +1 -0
  143. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.d.ts +29 -0
  144. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js +253 -0
  145. package/src/lib/components/console/pos-ops/pos-shift-history-card.component.js.map +1 -0
  146. package/src/lib/components/console/pos-ops/pos-shift-panel.component.d.ts +34 -0
  147. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js +494 -0
  148. package/src/lib/components/console/pos-ops/pos-shift-panel.component.js.map +1 -0
  149. package/src/lib/components/console/pos-ops/pos-shift-report.component.d.ts +37 -0
  150. package/src/lib/components/console/pos-ops/pos-shift-report.component.js +102 -0
  151. package/src/lib/components/console/pos-ops/pos-shift-report.component.js.map +1 -0
  152. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.d.ts +30 -0
  153. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js +277 -0
  154. package/src/lib/components/console/pos-ops/pos-staff-pins-card.component.js.map +1 -0
  155. package/src/lib/components/console/pos-ops/register-ops.d.ts +28 -0
  156. package/src/lib/components/console/pos-ops/register-ops.js +28 -0
  157. package/src/lib/components/console/pos-ops/register-ops.js.map +1 -0
  158. package/src/lib/components/console/pos-ops/use-pos-cashier.d.ts +46 -0
  159. package/src/lib/components/console/pos-ops/use-pos-cashier.js +128 -0
  160. package/src/lib/components/console/pos-ops/use-pos-cashier.js.map +1 -0
  161. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.d.ts +36 -0
  162. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js +64 -0
  163. package/src/lib/components/console/pos-ops/use-pos-sale-receipt.js.map +1 -0
  164. package/src/lib/components/console/pos-page.component.d.ts +13 -5
  165. package/src/lib/components/console/pos-page.component.js +729 -657
  166. package/src/lib/components/console/pos-page.component.js.map +1 -1
  167. package/src/lib/components/console/product-editor-dialog.component.js +51 -7
  168. package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
  169. package/src/lib/components/console/product-labels-dialog.component.d.ts +13 -0
  170. package/src/lib/components/console/product-labels-dialog.component.js +197 -0
  171. package/src/lib/components/console/product-labels-dialog.component.js.map +1 -0
  172. package/src/lib/components/console/product-register-fields.component.d.ts +19 -0
  173. package/src/lib/components/console/product-register-fields.component.js +241 -0
  174. package/src/lib/components/console/product-register-fields.component.js.map +1 -0
  175. package/src/lib/components/console/product-zones.d.ts +58 -2
  176. package/src/lib/components/console/product-zones.js +10 -2
  177. package/src/lib/components/console/product-zones.js.map +1 -1
  178. package/src/lib/components/console/products-hub-card.component.js +51 -11
  179. package/src/lib/components/console/products-hub-card.component.js.map +1 -1
  180. package/src/lib/components/console/register-hardware-card.component.d.ts +33 -0
  181. package/src/lib/components/console/register-hardware-card.component.js +826 -0
  182. package/src/lib/components/console/register-hardware-card.component.js.map +1 -0
  183. package/src/lib/components/console/registers-card.component.js +24 -5
  184. package/src/lib/components/console/registers-card.component.js.map +1 -1
  185. package/src/lib/components/console/return-actions.d.ts +38 -0
  186. package/src/lib/components/console/return-actions.js +76 -0
  187. package/src/lib/components/console/return-actions.js.map +1 -0
  188. package/src/lib/components/console/return-detail-dialog.component.d.ts +34 -0
  189. package/src/lib/components/console/return-detail-dialog.component.js +718 -0
  190. package/src/lib/components/console/return-detail-dialog.component.js.map +1 -0
  191. package/src/lib/components/console/return-settings-card.component.d.ts +34 -0
  192. package/src/lib/components/console/return-settings-card.component.js +195 -0
  193. package/src/lib/components/console/return-settings-card.component.js.map +1 -0
  194. package/src/lib/components/console/return-zones.d.ts +87 -0
  195. package/src/lib/components/console/return-zones.js +31 -0
  196. package/src/lib/components/console/return-zones.js.map +1 -0
  197. package/src/lib/components/console/returns-card.component.d.ts +45 -0
  198. package/src/lib/components/console/returns-card.component.js +159 -0
  199. package/src/lib/components/console/returns-card.component.js.map +1 -0
  200. package/src/lib/components/console/shipping-settings-card.component.js +161 -5
  201. package/src/lib/components/console/shipping-settings-card.component.js.map +1 -1
  202. package/src/lib/components/console/shippingeasy-card.component.d.ts +59 -0
  203. package/src/lib/components/console/shippingeasy-card.component.js +378 -0
  204. package/src/lib/components/console/shippingeasy-card.component.js.map +1 -0
  205. package/src/lib/components/console/shipstation-card.component.d.ts +35 -0
  206. package/src/lib/components/console/shipstation-card.component.js +345 -0
  207. package/src/lib/components/console/shipstation-card.component.js.map +1 -0
  208. package/src/lib/components/console/start-return-dialog.component.d.ts +40 -0
  209. package/src/lib/components/console/start-return-dialog.component.js +243 -0
  210. package/src/lib/components/console/start-return-dialog.component.js.map +1 -0
  211. package/src/lib/components/console/stock-movements-card.component.js +2 -1
  212. package/src/lib/components/console/stock-movements-card.component.js.map +1 -1
  213. package/src/lib/components/console/store-settings-card.component.js +2 -66
  214. package/src/lib/components/console/store-settings-card.component.js.map +1 -1
  215. package/src/lib/components/console/store-zones.d.ts +42 -0
  216. package/src/lib/components/console/store-zones.js +39 -0
  217. package/src/lib/components/console/store-zones.js.map +1 -0
  218. package/src/lib/components/order-status.d.ts +36 -0
  219. package/src/lib/components/order-status.js +502 -0
  220. package/src/lib/components/order-status.js.map +1 -0
  221. package/src/lib/components/product-detail.js +44 -2
  222. package/src/lib/components/product-detail.js.map +1 -1
  223. package/src/lib/components/return-request.d.ts +32 -0
  224. package/src/lib/components/return-request.js +576 -0
  225. package/src/lib/components/return-request.js.map +1 -0
  226. package/src/lib/components/storefront-payment-appearance.d.ts +32 -0
  227. package/src/lib/components/storefront-payment-appearance.js +114 -0
  228. package/src/lib/components/storefront-payment-appearance.js.map +1 -0
  229. package/src/lib/components/storefront-payment-element.d.ts +57 -1
  230. package/src/lib/components/storefront-payment-element.js +332 -33
  231. package/src/lib/components/storefront-payment-element.js.map +1 -1
  232. package/src/lib/constants/order-status.d.ts +22 -0
  233. package/src/lib/constants/order-status.js +22 -0
  234. package/src/lib/constants/order-status.js.map +1 -0
  235. package/src/lib/constants/return-request.d.ts +27 -0
  236. package/src/lib/constants/return-request.js +32 -0
  237. package/src/lib/constants/return-request.js.map +1 -0
  238. package/src/lib/constants/stock-movement-query.js +2 -1
  239. package/src/lib/constants/stock-movement-query.js.map +1 -1
  240. package/src/lib/declarations.console-server.js +9 -0
  241. package/src/lib/declarations.console-server.js.map +1 -1
  242. package/src/lib/declarations.server.d.ts +2 -1
  243. package/src/lib/declarations.server.js +47 -1
  244. package/src/lib/declarations.server.js.map +1 -1
  245. package/src/lib/model/buyer-notifications.d.ts +59 -0
  246. package/src/lib/model/buyer-notifications.js +97 -0
  247. package/src/lib/model/buyer-notifications.js.map +1 -0
  248. package/src/lib/model/commerce-orders.d.ts +127 -1
  249. package/src/lib/model/commerce-orders.js +24 -15
  250. package/src/lib/model/commerce-orders.js.map +1 -1
  251. package/src/lib/model/commerce-payment-methods.d.ts +146 -0
  252. package/src/lib/model/commerce-payment-methods.js +247 -0
  253. package/src/lib/model/commerce-payment-methods.js.map +1 -0
  254. package/src/lib/model/commerce-pos-ops.d.ts +437 -0
  255. package/src/lib/model/commerce-pos-ops.js +721 -0
  256. package/src/lib/model/commerce-pos-ops.js.map +1 -0
  257. package/src/lib/model/commerce-pos.d.ts +263 -0
  258. package/src/lib/model/commerce-pos.js +375 -0
  259. package/src/lib/model/commerce-pos.js.map +1 -0
  260. package/src/lib/model/commerce-printers.d.ts +211 -0
  261. package/src/lib/model/commerce-printers.js +181 -0
  262. package/src/lib/model/commerce-printers.js.map +1 -0
  263. package/src/lib/model/commerce-receipt.d.ts +97 -0
  264. package/src/lib/model/commerce-receipt.js +180 -0
  265. package/src/lib/model/commerce-receipt.js.map +1 -0
  266. package/src/lib/model/commerce-returns.d.ts +207 -0
  267. package/src/lib/model/commerce-returns.js +300 -0
  268. package/src/lib/model/commerce-returns.js.map +1 -0
  269. package/src/lib/model/commerce-shipping.d.ts +44 -1
  270. package/src/lib/model/commerce-shipping.js +53 -9
  271. package/src/lib/model/commerce-shipping.js.map +1 -1
  272. package/src/lib/model/commerce-tax-engine.d.ts +90 -0
  273. package/src/lib/model/commerce-tax-engine.js +129 -0
  274. package/src/lib/model/commerce-tax-engine.js.map +1 -0
  275. package/src/lib/model/commerce.d.ts +88 -2
  276. package/src/lib/model/commerce.js +89 -1
  277. package/src/lib/model/commerce.js.map +1 -1
  278. package/src/lib/model/index.d.ts +15 -0
  279. package/src/lib/model/index.js +15 -0
  280. package/src/lib/model/index.js.map +1 -1
  281. package/src/lib/model/order-events.d.ts +154 -0
  282. package/src/lib/model/order-events.js +153 -0
  283. package/src/lib/model/order-events.js.map +1 -0
  284. package/src/lib/model/order-fulfillment.d.ts +117 -0
  285. package/src/lib/model/order-fulfillment.js +217 -0
  286. package/src/lib/model/order-fulfillment.js.map +1 -0
  287. package/src/lib/model/order-history.d.ts +58 -0
  288. package/src/lib/model/order-history.js +22 -0
  289. package/src/lib/model/order-history.js.map +1 -0
  290. package/src/lib/model/order-list-fields.d.ts +9 -1
  291. package/src/lib/model/order-list-fields.js +7 -1
  292. package/src/lib/model/order-list-fields.js.map +1 -1
  293. package/src/lib/model/order-shipping-export.d.ts +91 -0
  294. package/src/lib/model/order-shipping-export.js +192 -0
  295. package/src/lib/model/order-shipping-export.js.map +1 -0
  296. package/src/lib/model/order-status-view.d.ts +103 -0
  297. package/src/lib/model/order-status-view.js +156 -0
  298. package/src/lib/model/order-status-view.js.map +1 -0
  299. package/src/lib/model/order-webhooks.d.ts +142 -0
  300. package/src/lib/model/order-webhooks.js +91 -0
  301. package/src/lib/model/order-webhooks.js.map +1 -0
  302. package/src/lib/model/product-channel.d.ts +56 -0
  303. package/src/lib/model/product-channel.js +86 -0
  304. package/src/lib/model/product-channel.js.map +1 -0
  305. package/src/lib/model/product-modifiers.d.ts +80 -0
  306. package/src/lib/model/product-modifiers.js +140 -0
  307. package/src/lib/model/product-modifiers.js.map +1 -0
  308. package/src/lib/model/shippingeasy.d.ts +94 -0
  309. package/src/lib/model/shippingeasy.js +267 -0
  310. package/src/lib/model/shippingeasy.js.map +1 -0
  311. package/src/lib/model/shipstation.d.ts +125 -0
  312. package/src/lib/model/shipstation.js +399 -0
  313. package/src/lib/model/shipstation.js.map +1 -0
  314. package/src/lib/model/smart-collection-reads.d.ts +32 -0
  315. package/src/lib/model/smart-collection-reads.js +63 -0
  316. package/src/lib/model/smart-collection-reads.js.map +1 -0
  317. package/src/lib/model/tracking-url.d.ts +74 -0
  318. package/src/lib/model/tracking-url.js +159 -0
  319. package/src/lib/model/tracking-url.js.map +1 -0
  320. package/src/lib/plugin-config.d.ts +13 -0
  321. package/src/lib/plugin-config.js +77 -5
  322. package/src/lib/plugin-config.js.map +1 -1
  323. package/src/lib/plugin.js +23 -0
  324. package/src/lib/plugin.js.map +1 -1
  325. package/src/lib/pos-ops-config.d.ts +39 -0
  326. package/src/lib/pos-ops-config.js +88 -0
  327. package/src/lib/pos-ops-config.js.map +1 -0
  328. package/src/lib/printing/print-document.d.ts +106 -0
  329. package/src/lib/printing/print-document.js +464 -0
  330. package/src/lib/printing/print-document.js.map +1 -0
  331. package/src/lib/printing/product-labels.d.ts +58 -0
  332. package/src/lib/printing/product-labels.js +116 -0
  333. package/src/lib/printing/product-labels.js.map +1 -0
  334. package/src/lib/printing/render-epson.d.ts +57 -0
  335. package/src/lib/printing/render-epson.js +135 -0
  336. package/src/lib/printing/render-epson.js.map +1 -0
  337. package/src/lib/printing/render-star.d.ts +45 -0
  338. package/src/lib/printing/render-star.js +100 -0
  339. package/src/lib/printing/render-star.js.map +1 -0
  340. package/src/lib/printing/render-text.d.ts +25 -0
  341. package/src/lib/printing/render-text.js +53 -0
  342. package/src/lib/printing/render-text.js.map +1 -0
  343. package/src/lib/server/api-v1/openapi.js +27 -4
  344. package/src/lib/server/api-v1/openapi.js.map +1 -1
  345. package/src/lib/server/api-v1/order-view.d.ts +67 -0
  346. package/src/lib/server/api-v1/order-view.js +120 -0
  347. package/src/lib/server/api-v1/order-view.js.map +1 -0
  348. package/src/lib/server/api-v1/orders-and-products.js +58 -65
  349. package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
  350. package/src/lib/server/billing-webhook.js +135 -28
  351. package/src/lib/server/billing-webhook.js.map +1 -1
  352. package/src/lib/server/cancel-order.js +29 -0
  353. package/src/lib/server/cancel-order.js.map +1 -1
  354. package/src/lib/server/carrier-rates-availability.d.ts +26 -0
  355. package/src/lib/server/carrier-rates-availability.js +76 -0
  356. package/src/lib/server/carrier-rates-availability.js.map +1 -0
  357. package/src/lib/server/carrier-shipping.d.ts +84 -0
  358. package/src/lib/server/carrier-shipping.js +135 -0
  359. package/src/lib/server/carrier-shipping.js.map +1 -0
  360. package/src/lib/server/cart-checkout.d.ts +2 -0
  361. package/src/lib/server/cart-checkout.js +226 -22
  362. package/src/lib/server/cart-checkout.js.map +1 -1
  363. package/src/lib/server/checkout-extras.d.ts +64 -0
  364. package/src/lib/server/checkout-extras.js +157 -0
  365. package/src/lib/server/checkout-extras.js.map +1 -0
  366. package/src/lib/server/{feed.d.ts → checkout-status.d.ts} +2 -7
  367. package/src/lib/server/checkout-status.js +111 -0
  368. package/src/lib/server/checkout-status.js.map +1 -0
  369. package/src/lib/server/checkout.js +86 -9
  370. package/src/lib/server/checkout.js.map +1 -1
  371. package/src/lib/server/draft-order.js +34 -5
  372. package/src/lib/server/draft-order.js.map +1 -1
  373. package/src/lib/server/fulfill-order.d.ts +127 -10
  374. package/src/lib/server/fulfill-order.js +451 -49
  375. package/src/lib/server/fulfill-order.js.map +1 -1
  376. package/src/lib/server/legacy-feed.d.ts +28 -0
  377. package/src/lib/server/legacy-feed.js +52 -0
  378. package/src/lib/server/legacy-feed.js.map +1 -0
  379. package/src/lib/server/native-checkout.d.ts +34 -15
  380. package/src/lib/server/native-checkout.js +32 -17
  381. package/src/lib/server/native-checkout.js.map +1 -1
  382. package/src/lib/server/order-event-host-emit.d.ts +23 -0
  383. package/src/lib/server/order-event-host-emit.js +30 -0
  384. package/src/lib/server/order-event-host-emit.js.map +1 -0
  385. package/src/lib/server/order-event-triggers.d.ts +37 -0
  386. package/src/lib/server/order-event-triggers.js +119 -0
  387. package/src/lib/server/order-event-triggers.js.map +1 -0
  388. package/src/lib/server/order-events.d.ts +62 -0
  389. package/src/lib/server/order-events.js +109 -0
  390. package/src/lib/server/order-events.js.map +1 -0
  391. package/src/lib/server/order-history.d.ts +23 -0
  392. package/src/lib/server/order-history.js +65 -0
  393. package/src/lib/server/order-history.js.map +1 -0
  394. package/src/lib/server/order-notifications.d.ts +185 -0
  395. package/src/lib/server/order-notifications.js +567 -0
  396. package/src/lib/server/order-notifications.js.map +1 -0
  397. package/src/lib/server/order-receipt-send.d.ts +39 -0
  398. package/src/lib/server/order-receipt-send.js +151 -0
  399. package/src/lib/server/order-receipt-send.js.map +1 -0
  400. package/src/lib/server/order-status-token.d.ts +31 -0
  401. package/src/lib/server/order-status-token.js +75 -0
  402. package/src/lib/server/order-status-token.js.map +1 -0
  403. package/src/lib/server/order-status.d.ts +58 -0
  404. package/src/lib/server/order-status.js +141 -0
  405. package/src/lib/server/order-status.js.map +1 -0
  406. package/src/lib/server/order-webhooks.d.ts +108 -0
  407. package/src/lib/server/order-webhooks.js +622 -0
  408. package/src/lib/server/order-webhooks.js.map +1 -0
  409. package/src/lib/server/orders-shipping-prepare.d.ts +26 -0
  410. package/src/lib/server/orders-shipping-prepare.js +121 -0
  411. package/src/lib/server/orders-shipping-prepare.js.map +1 -0
  412. package/src/lib/server/payment-method-domains.d.ts +209 -0
  413. package/src/lib/server/payment-method-domains.js +444 -0
  414. package/src/lib/server/payment-method-domains.js.map +1 -0
  415. package/src/lib/server/payment-methods.d.ts +77 -0
  416. package/src/lib/server/payment-methods.js +284 -0
  417. package/src/lib/server/payment-methods.js.map +1 -0
  418. package/src/lib/server/pos-auth.d.ts +50 -0
  419. package/src/lib/server/pos-auth.js +121 -0
  420. package/src/lib/server/pos-auth.js.map +1 -0
  421. package/src/lib/server/pos-customer.d.ts +49 -0
  422. package/src/lib/server/pos-customer.js +257 -0
  423. package/src/lib/server/pos-customer.js.map +1 -0
  424. package/src/lib/server/pos-display.d.ts +57 -0
  425. package/src/lib/server/pos-display.js +419 -0
  426. package/src/lib/server/pos-display.js.map +1 -0
  427. package/src/lib/server/pos-fee-month.d.ts +34 -0
  428. package/src/lib/server/pos-fee-month.js +36 -0
  429. package/src/lib/server/pos-fee-month.js.map +1 -0
  430. package/src/lib/server/pos-ops-gate.d.ts +161 -0
  431. package/src/lib/server/pos-ops-gate.js +295 -0
  432. package/src/lib/server/pos-ops-gate.js.map +1 -0
  433. package/src/lib/server/pos-ops-routes.d.ts +22 -0
  434. package/src/lib/server/pos-ops-routes.js +36 -0
  435. package/src/lib/server/pos-ops-routes.js.map +1 -0
  436. package/src/lib/server/pos-order.d.ts +1 -18
  437. package/src/lib/server/pos-order.js +222 -42
  438. package/src/lib/server/pos-order.js.map +1 -1
  439. package/src/lib/server/pos-payment.d.ts +39 -0
  440. package/src/lib/server/pos-payment.js +922 -0
  441. package/src/lib/server/pos-payment.js.map +1 -0
  442. package/src/lib/server/pos-print.d.ts +82 -0
  443. package/src/lib/server/pos-print.js +193 -0
  444. package/src/lib/server/pos-print.js.map +1 -0
  445. package/src/lib/server/pos-readers.d.ts +27 -0
  446. package/src/lib/server/pos-readers.js +276 -0
  447. package/src/lib/server/pos-readers.js.map +1 -0
  448. package/src/lib/server/pos-refund-authority.d.ts +60 -0
  449. package/src/lib/server/pos-refund-authority.js +72 -0
  450. package/src/lib/server/pos-refund-authority.js.map +1 -0
  451. package/src/lib/server/pos-return.d.ts +58 -0
  452. package/src/lib/server/pos-return.js +891 -0
  453. package/src/lib/server/pos-return.js.map +1 -0
  454. package/src/lib/server/pos-sale-stamp.d.ts +66 -0
  455. package/src/lib/server/pos-sale-stamp.js +84 -0
  456. package/src/lib/server/pos-sale-stamp.js.map +1 -0
  457. package/src/lib/server/pos-sale.d.ts +170 -0
  458. package/src/lib/server/pos-sale.js +461 -0
  459. package/src/lib/server/pos-sale.js.map +1 -0
  460. package/src/lib/server/pos-shift.d.ts +45 -0
  461. package/src/lib/server/pos-shift.js +484 -0
  462. package/src/lib/server/pos-shift.js.map +1 -0
  463. package/src/lib/server/pos-staff-pin.d.ts +26 -0
  464. package/src/lib/server/pos-staff-pin.js +339 -0
  465. package/src/lib/server/pos-staff-pin.js.map +1 -0
  466. package/src/lib/server/pos-stripe.d.ts +91 -0
  467. package/src/lib/server/pos-stripe.js +129 -0
  468. package/src/lib/server/pos-stripe.js.map +1 -0
  469. package/src/lib/server/pos-terminal-connection-token.d.ts +48 -0
  470. package/src/lib/server/pos-terminal-connection-token.js +166 -0
  471. package/src/lib/server/pos-terminal-connection-token.js.map +1 -0
  472. package/src/lib/server/pos-terminal.d.ts +218 -0
  473. package/src/lib/server/pos-terminal.js +1014 -0
  474. package/src/lib/server/pos-terminal.js.map +1 -0
  475. package/src/lib/server/print-queue.d.ts +124 -0
  476. package/src/lib/server/print-queue.js +301 -0
  477. package/src/lib/server/print-queue.js.map +1 -0
  478. package/src/lib/server/printer-poll.d.ts +75 -0
  479. package/src/lib/server/printer-poll.js +325 -0
  480. package/src/lib/server/printer-poll.js.map +1 -0
  481. package/src/lib/server/printer-secret.d.ts +39 -0
  482. package/src/lib/server/printer-secret.js +56 -0
  483. package/src/lib/server/printer-secret.js.map +1 -0
  484. package/src/lib/server/printers.d.ts +114 -0
  485. package/src/lib/server/printers.js +546 -0
  486. package/src/lib/server/printers.js.map +1 -0
  487. package/src/lib/server/product-ai-capability.d.ts +42 -0
  488. package/src/lib/server/product-ai-capability.js +159 -0
  489. package/src/lib/server/product-ai-capability.js.map +1 -0
  490. package/src/lib/server/product-catalog.d.ts +42 -0
  491. package/src/lib/server/product-catalog.js +305 -0
  492. package/src/lib/server/product-catalog.js.map +1 -0
  493. package/src/lib/server/product-drafts.d.ts +119 -0
  494. package/src/lib/server/product-drafts.js +384 -0
  495. package/src/lib/server/product-drafts.js.map +1 -0
  496. package/src/lib/server/refund.js +110 -45
  497. package/src/lib/server/refund.js.map +1 -1
  498. package/src/lib/server/reserve.js +2 -0
  499. package/src/lib/server/reserve.js.map +1 -1
  500. package/src/lib/server/return-status-action.d.ts +37 -0
  501. package/src/lib/server/return-status-action.js +57 -0
  502. package/src/lib/server/return-status-action.js.map +1 -0
  503. package/src/lib/server/returns.d.ts +119 -0
  504. package/src/lib/server/returns.js +938 -0
  505. package/src/lib/server/returns.js.map +1 -0
  506. package/src/lib/server/shipment-records.d.ts +36 -0
  507. package/src/lib/server/shipment-records.js +289 -0
  508. package/src/lib/server/shipment-records.js.map +1 -0
  509. package/src/lib/server/shipping-connector-gates.d.ts +40 -0
  510. package/src/lib/server/shipping-connector-gates.js +97 -0
  511. package/src/lib/server/shipping-connector-gates.js.map +1 -0
  512. package/src/lib/server/shipping-connectors.d.ts +29 -0
  513. package/src/lib/server/shipping-connectors.js +236 -0
  514. package/src/lib/server/shipping-connectors.js.map +1 -0
  515. package/src/lib/server/shippingeasy.d.ts +238 -0
  516. package/src/lib/server/shippingeasy.js +787 -0
  517. package/src/lib/server/shippingeasy.js.map +1 -0
  518. package/src/lib/server/shipstation.d.ts +129 -0
  519. package/src/lib/server/shipstation.js +483 -0
  520. package/src/lib/server/shipstation.js.map +1 -0
  521. package/src/lib/server/site-page-resolver.d.ts +5 -0
  522. package/src/lib/server/site-page-resolver.js +156 -1
  523. package/src/lib/server/site-page-resolver.js.map +1 -1
  524. package/src/lib/server/stock-levels.d.ts +21 -0
  525. package/src/lib/server/stock-levels.js +263 -0
  526. package/src/lib/server/stock-levels.js.map +1 -0
  527. package/src/lib/server/stripe-refund.d.ts +47 -0
  528. package/src/lib/server/stripe-refund.js +87 -0
  529. package/src/lib/server/stripe-refund.js.map +1 -0
  530. package/src/lib/server/supplier-update.js +46 -5
  531. package/src/lib/server/supplier-update.js.map +1 -1
  532. package/src/lib/server/tax-engine-quote.d.ts +47 -0
  533. package/src/lib/server/tax-engine-quote.js +105 -0
  534. package/src/lib/server/tax-engine-quote.js.map +1 -0
  535. package/src/lib/server.js +146 -2
  536. package/src/lib/server.js.map +1 -1
  537. package/src/lib/site.js +12 -0
  538. package/src/lib/site.js.map +1 -1
  539. package/src/lib/subprocessors.d.ts +26 -0
  540. package/src/lib/subprocessors.js +50 -0
  541. package/src/lib/subprocessors.js.map +1 -0
  542. package/src/lib/tenant-emails.js +461 -3
  543. package/src/lib/tenant-emails.js.map +1 -1
  544. package/src/lib/testing/fake-firestore.d.ts +45 -0
  545. package/src/lib/testing/fake-firestore.js +189 -0
  546. package/src/lib/testing/fake-firestore.js.map +1 -0
  547. package/src/lib/testing/memory-firestore.d.ts +123 -0
  548. package/src/lib/testing/memory-firestore.js +274 -0
  549. package/src/lib/testing/memory-firestore.js.map +1 -0
  550. package/src/lib/testing/pos-ops-harness.d.ts +50 -0
  551. package/src/lib/testing/pos-ops-harness.js +184 -0
  552. package/src/lib/testing/pos-ops-harness.js.map +1 -0
  553. package/src/lib/testing/pos-ops-memory-firestore.d.ts +55 -0
  554. package/src/lib/testing/pos-ops-memory-firestore.js +376 -0
  555. package/src/lib/testing/pos-ops-memory-firestore.js.map +1 -0
  556. package/src/lib/transfer/records-transfer.d.ts +11 -1
  557. package/src/lib/transfer/records-transfer.js +127 -5
  558. package/src/lib/transfer/records-transfer.js.map +1 -1
  559. package/src/lib/transfer/records.server.d.ts +9 -2
  560. package/src/lib/transfer/records.server.js +58 -7
  561. package/src/lib/transfer/records.server.js.map +1 -1
  562. package/src/lib/transfer/register-transfer-resources.js +40 -1
  563. package/src/lib/transfer/register-transfer-resources.js.map +1 -1
  564. package/src/lib/transfer/register-transfer-ui.js +4 -1
  565. package/src/lib/transfer/register-transfer-ui.js.map +1 -1
  566. package/src/lib/transfer/shipping-presets.d.ts +23 -0
  567. package/src/lib/transfer/shipping-presets.js +156 -0
  568. package/src/lib/transfer/shipping-presets.js.map +1 -0
  569. package/src/lib/transfer/tracking-transfer.d.ts +101 -0
  570. package/src/lib/transfer/tracking-transfer.js +546 -0
  571. package/src/lib/transfer/tracking-transfer.js.map +1 -0
  572. package/src/lib/transfer/tracking.server.d.ts +37 -0
  573. package/src/lib/transfer/tracking.server.js +393 -0
  574. package/src/lib/transfer/tracking.server.js.map +1 -0
  575. package/src/lib/transfer/transfer-keys.d.ts +2 -1
  576. package/src/lib/transfer/transfer-keys.js +6 -2
  577. package/src/lib/transfer/transfer-keys.js.map +1 -1
  578. package/src/lib/utils/code128.d.ts +37 -0
  579. package/src/lib/utils/code128.js +199 -0
  580. package/src/lib/utils/code128.js.map +1 -0
  581. package/src/lib/utils/order-invoice.d.ts +55 -0
  582. package/src/lib/utils/order-invoice.js +127 -0
  583. package/src/lib/utils/order-invoice.js.map +1 -0
  584. package/src/lib/utils/use-checkout-return-notice.d.ts +34 -0
  585. package/src/lib/utils/use-checkout-return-notice.js +78 -0
  586. package/src/lib/utils/use-checkout-return-notice.js.map +1 -0
  587. package/src/lib/utils/use-storefront-purchase-event.js +4 -0
  588. package/src/lib/utils/use-storefront-purchase-event.js.map +1 -1
  589. package/src/lib/server/feed.js +0 -69
  590. package/src/lib/server/feed.js.map +0 -1
@@ -0,0 +1,60 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import { authorizedFetch } from "@aglyn/shared-util-http/authorized-token";
18
+ /**
19
+ * One call to a register route, answered as data — a refusal is a status and
20
+ * a sentence for the cashier, never a throw the register has to catch. A
21
+ * network failure answers status 0.
22
+ */ export async function callPosOps(user, route, body, options = {}) {
23
+ try {
24
+ const response = await authorizedFetch(user, `/api/commerce/${route}`, {
25
+ method: 'POST',
26
+ headers: _extends({
27
+ 'Content-Type': 'application/json'
28
+ }, options.idempotencyKey ? {
29
+ 'Idempotency-Key': options.idempotencyKey
30
+ } : {}),
31
+ body: JSON.stringify(body)
32
+ });
33
+ const parsed = await response.json().catch(()=>({}));
34
+ return {
35
+ ok: response.ok,
36
+ status: response.status,
37
+ body: parsed
38
+ };
39
+ } catch (unused) {
40
+ return {
41
+ ok: false,
42
+ status: 0,
43
+ body: {
44
+ error: 'The register is offline. Check the connection and try again.'
45
+ }
46
+ };
47
+ }
48
+ }
49
+ /** A fresh attempt id for one tap that moves money or cash. */ export function newPosAttemptKey() {
50
+ const random = typeof crypto !== 'undefined' && 'randomUUID' in crypto ? crypto.randomUUID() : `${Date.now()}-${Math.random().toString(36).slice(2)}`;
51
+ return random.replace(/[^A-Za-z0-9_-]/g, '');
52
+ }
53
+ /** Dollars typed at the register → whole cents, or `null` for not-an-amount. */ export function parsePosDollars(value) {
54
+ const trimmed = String(value != null ? value : '').replace(/[$,\s]/g, '');
55
+ if (!trimmed) return null;
56
+ if (!/^\d+(\.\d{0,2})?$/.test(trimmed)) return null;
57
+ return Math.round(Number(trimmed) * 100);
58
+ }
59
+
60
+ //# sourceMappingURL=pos-ops-api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../libs/plugins/commerce/src/lib/components/console/pos-ops/pos-ops-api.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { authorizedFetch } from '@aglyn/shared-util-http/authorized-token'\n\n/** The register's operations routes (AGL-3609). */\nexport type PosOpsRoute = 'pos-shift' | 'pos-staff-pin' | 'pos-customer' | 'pos-return'\n\nexport interface PosOpsAnswer<T = Record<string, any>> {\n ok: boolean\n status: number\n body: T & { error?: string }\n}\n\n/**\n * One call to a register route, answered as data — a refusal is a status and\n * a sentence for the cashier, never a throw the register has to catch. A\n * network failure answers status 0.\n */\nexport async function callPosOps<T = Record<string, any>>(\n user: unknown,\n route: PosOpsRoute,\n body: Record<string, unknown>,\n options: { idempotencyKey?: string } = {},\n): Promise<PosOpsAnswer<T>> {\n try {\n const response = await authorizedFetch(user as any, `/api/commerce/${route}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(options.idempotencyKey ? { 'Idempotency-Key': options.idempotencyKey } : {}),\n },\n body: JSON.stringify(body),\n })\n const parsed = (await response.json().catch(() => ({}))) as T & { error?: string }\n return { ok: response.ok, status: response.status, body: parsed }\n } catch {\n return {\n ok: false,\n status: 0,\n body: { error: 'The register is offline. Check the connection and try again.' } as T & {\n error?: string\n },\n }\n }\n}\n\n/** A fresh attempt id for one tap that moves money or cash. */\nexport function newPosAttemptKey(): string {\n const random =\n typeof crypto !== 'undefined' && 'randomUUID' in crypto\n ? crypto.randomUUID()\n : `${Date.now()}-${Math.random().toString(36).slice(2)}`\n return random.replace(/[^A-Za-z0-9_-]/g, '')\n}\n\n/** Dollars typed at the register → whole cents, or `null` for not-an-amount. */\nexport function parsePosDollars(value: string): number | null {\n const trimmed = String(value ?? '').replace(/[$,\\s]/g, '')\n if (!trimmed) return null\n if (!/^\\d+(\\.\\d{0,2})?$/.test(trimmed)) return null\n return Math.round(Number(trimmed) * 100)\n}\n"],"names":["authorizedFetch","callPosOps","user","route","body","options","response","method","headers","idempotencyKey","JSON","stringify","parsed","json","catch","ok","status","error","newPosAttemptKey","random","crypto","randomUUID","Date","now","Math","toString","slice","replace","parsePosDollars","value","trimmed","String","test","round","Number"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,eAAe,QAAQ,2CAA0C;AAW1E;;;;CAIC,GACD,OAAO,eAAeC,WACpBC,IAAa,EACbC,KAAkB,EAClBC,IAA6B,EAC7BC,UAAuC,CAAC,CAAC;IAEzC,IAAI;QACF,MAAMC,WAAW,MAAMN,gBAAgBE,MAAa,CAAC,cAAc,EAAEC,OAAO,EAAE;YAC5EI,QAAQ;YACRC,SAAS;gBACP,gBAAgB;eACZH,QAAQI,cAAc,GAAG;gBAAE,mBAAmBJ,QAAQI,cAAc;YAAC,IAAI,CAAC;YAEhFL,MAAMM,KAAKC,SAAS,CAACP;QACvB;QACA,MAAMQ,SAAU,MAAMN,SAASO,IAAI,GAAGC,KAAK,CAAC,IAAO,CAAA,CAAC,CAAA;QACpD,OAAO;YAAEC,IAAIT,SAASS,EAAE;YAAEC,QAAQV,SAASU,MAAM;YAAEZ,MAAMQ;QAAO;IAClE,EAAE,eAAM;QACN,OAAO;YACLG,IAAI;YACJC,QAAQ;YACRZ,MAAM;gBAAEa,OAAO;YAA+D;QAGhF;IACF;AACF;AAEA,6DAA6D,GAC7D,OAAO,SAASC;IACd,MAAMC,SACJ,OAAOC,WAAW,eAAe,gBAAgBA,SAC7CA,OAAOC,UAAU,KACjB,GAAGC,KAAKC,GAAG,GAAG,CAAC,EAAEC,KAAKL,MAAM,GAAGM,QAAQ,CAAC,IAAIC,KAAK,CAAC,IAAI;IAC5D,OAAOP,OAAOQ,OAAO,CAAC,mBAAmB;AAC3C;AAEA,8EAA8E,GAC9E,OAAO,SAASC,gBAAgBC,KAAa;IAC3C,MAAMC,UAAUC,OAAOF,gBAAAA,QAAS,IAAIF,OAAO,CAAC,WAAW;IACvD,IAAI,CAACG,SAAS,OAAO;IACrB,IAAI,CAAC,oBAAoBE,IAAI,CAACF,UAAU,OAAO;IAC/C,OAAON,KAAKS,KAAK,CAACC,OAAOJ,WAAW;AACtC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /** What a right PIN buys: a signed statement that this member is at this register. */
18
+ export interface PosStaffAssertion {
19
+ assertion: string;
20
+ expiresAtMs: number;
21
+ memberUid: string;
22
+ name: string;
23
+ purpose: 'cashier' | 'manager';
24
+ }
25
+ export interface PosPinPadProps {
26
+ open: boolean;
27
+ hostId: string;
28
+ registerId: string;
29
+ /** `cashier` switches who is ringing; `manager` approves one action. */
30
+ purpose: 'cashier' | 'manager';
31
+ title?: string;
32
+ /** Why a manager is being asked, shown above the pad. */
33
+ prompt?: string;
34
+ /** A lock screen cannot be dismissed without a PIN. */
35
+ dismissible?: boolean;
36
+ onClose: () => void;
37
+ onVerified: (assertion: PosStaffAssertion) => void;
38
+ }
39
+ /**
40
+ * The PIN pad (AGL-3609): pick your name, tap your PIN. Built for a tablet —
41
+ * every key a full-size button — and for a keyboard, which types digits,
42
+ * Backspace and Enter straight into it.
43
+ */
44
+ export declare function PosPinPad(props: PosPinPadProps): import("react").JSX.Element;
45
+ export declare namespace PosPinPad {
46
+ var displayName: string;
47
+ }
48
+ export default PosPinPad;
@@ -0,0 +1,220 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
+ import { Alert, Box, Button, Chip, Dialog, DialogActions, DialogContent, DialogTitle, Stack, Typography } from "@mui/material";
19
+ import { useUser } from "@aglyn/tenant-feature-instance";
20
+ import { useCallback, useEffect, useState } from "react";
21
+ import { callPosOps } from "./pos-ops-api.js";
22
+ const KEYS = [
23
+ '1',
24
+ '2',
25
+ '3',
26
+ '4',
27
+ '5',
28
+ '6',
29
+ '7',
30
+ '8',
31
+ '9',
32
+ 'clear',
33
+ '0',
34
+ 'back'
35
+ ];
36
+ /**
37
+ * The PIN pad (AGL-3609): pick your name, tap your PIN. Built for a tablet —
38
+ * every key a full-size button — and for a keyboard, which types digits,
39
+ * Backspace and Enter straight into it.
40
+ */ export function PosPinPad(props) {
41
+ var _props_title;
42
+ const { open, hostId, registerId, purpose, onClose, onVerified } = props;
43
+ const { data: user } = useUser();
44
+ const [members, setMembers] = useState(null);
45
+ const [memberUid, setMemberUid] = useState('');
46
+ const [pin, setPin] = useState('');
47
+ const [error, setError] = useState('');
48
+ const [busy, setBusy] = useState(false);
49
+ useEffect(()=>{
50
+ if (!open || !user) return;
51
+ let active = true;
52
+ setPin('');
53
+ setError('');
54
+ void callPosOps(user, 'pos-staff-pin', {
55
+ hostId,
56
+ action: 'roster'
57
+ }).then((answer)=>{
58
+ var _answer_body_members;
59
+ if (!active) return;
60
+ if (!answer.ok) {
61
+ var _answer_body_error;
62
+ setError((_answer_body_error = answer.body.error) != null ? _answer_body_error : 'Could not load the staff list.');
63
+ setMembers([]);
64
+ return;
65
+ }
66
+ const list = (_answer_body_members = answer.body.members) != null ? _answer_body_members : [];
67
+ setMembers(list);
68
+ if (list.length === 1) setMemberUid(list[0].uid);
69
+ });
70
+ return ()=>{
71
+ active = false;
72
+ };
73
+ }, [
74
+ open,
75
+ user,
76
+ hostId
77
+ ]);
78
+ const submit = useCallback(async (value)=>{
79
+ if (!memberUid || value.length < 4 || busy) return;
80
+ setBusy(true);
81
+ setError('');
82
+ const answer = await callPosOps(user, 'pos-staff-pin', {
83
+ hostId,
84
+ registerId,
85
+ action: 'verify',
86
+ purpose,
87
+ memberUid,
88
+ pin: value
89
+ });
90
+ setBusy(false);
91
+ setPin('');
92
+ if (!answer.ok || !answer.body.assertion) {
93
+ var _answer_body_error;
94
+ setError((_answer_body_error = answer.body.error) != null ? _answer_body_error : 'That PIN did not work.');
95
+ return;
96
+ }
97
+ onVerified(answer.body);
98
+ }, [
99
+ memberUid,
100
+ busy,
101
+ user,
102
+ hostId,
103
+ registerId,
104
+ purpose,
105
+ onVerified
106
+ ]);
107
+ const press = useCallback((key)=>{
108
+ if (key === 'clear') return setPin('');
109
+ if (key === 'back') return setPin((value)=>value.slice(0, -1));
110
+ if (key === 'enter') return void submit(pin);
111
+ setPin((value)=>value.length >= 6 ? value : value + key);
112
+ }, [
113
+ pin,
114
+ submit
115
+ ]);
116
+ const onKeyDown = (event)=>{
117
+ if (/^\d$/.test(event.key)) press(event.key);
118
+ else if (event.key === 'Backspace') press('back');
119
+ else if (event.key === 'Enter') press('enter');
120
+ };
121
+ // A lock nobody can open is no lock: with no PINs set on the site, the
122
+ // pad can always be closed.
123
+ const dismissible = props.dismissible !== false || members !== null && members.length === 0;
124
+ return /*#__PURE__*/ _jsxs(Dialog, {
125
+ open: open,
126
+ onClose: dismissible ? onClose : undefined,
127
+ maxWidth: "xs",
128
+ fullWidth: true,
129
+ onKeyDown: onKeyDown,
130
+ children: [
131
+ /*#__PURE__*/ _jsx(DialogTitle, {
132
+ children: (_props_title = props.title) != null ? _props_title : purpose === 'manager' ? 'Manager approval' : 'Switch cashier'
133
+ }),
134
+ /*#__PURE__*/ _jsx(DialogContent, {
135
+ children: /*#__PURE__*/ _jsxs(Stack, {
136
+ spacing: 2,
137
+ children: [
138
+ props.prompt ? /*#__PURE__*/ _jsx(Typography, {
139
+ variant: "body2",
140
+ color: "text.secondary",
141
+ children: props.prompt
142
+ }) : null,
143
+ members && members.length === 0 && !error ? /*#__PURE__*/ _jsx(Alert, {
144
+ severity: "info",
145
+ children: 'Nobody has a register PIN on this site yet. Set yours under Commerce → ' + 'Settings → Staff PINs.'
146
+ }) : null,
147
+ /*#__PURE__*/ _jsx(Stack, {
148
+ direction: "row",
149
+ useFlexGap: true,
150
+ spacing: 1,
151
+ sx: {
152
+ flexWrap: 'wrap'
153
+ },
154
+ children: (members != null ? members : []).map((member)=>/*#__PURE__*/ _jsx(Chip, {
155
+ label: member.name,
156
+ color: member.uid === memberUid ? 'primary' : 'default',
157
+ variant: member.uid === memberUid ? 'filled' : 'outlined',
158
+ onClick: ()=>{
159
+ setMemberUid(member.uid);
160
+ setError('');
161
+ }
162
+ }, member.uid))
163
+ }),
164
+ /*#__PURE__*/ _jsx(Typography, {
165
+ variant: "h4",
166
+ component: "div",
167
+ "aria-label": "PIN entered",
168
+ sx: {
169
+ textAlign: 'center',
170
+ letterSpacing: '0.5em',
171
+ minHeight: '1.5em'
172
+ },
173
+ children: '•'.repeat(pin.length) || ' '
174
+ }),
175
+ error ? /*#__PURE__*/ _jsx(Alert, {
176
+ severity: "warning",
177
+ children: error
178
+ }) : null,
179
+ /*#__PURE__*/ _jsx(Box, {
180
+ sx: {
181
+ display: 'grid',
182
+ gridTemplateColumns: 'repeat(3, 1fr)',
183
+ gap: 1
184
+ },
185
+ children: KEYS.map((key)=>/*#__PURE__*/ _jsx(Button, {
186
+ variant: key === 'clear' || key === 'back' ? 'text' : 'outlined',
187
+ size: "large",
188
+ disabled: busy || !memberUid,
189
+ onClick: ()=>press(key),
190
+ "aria-label": key === 'back' ? 'Delete digit' : key === 'clear' ? 'Clear' : key,
191
+ sx: {
192
+ minHeight: 56
193
+ },
194
+ children: key === 'back' ? '⌫' : key === 'clear' ? 'Clear' : key
195
+ }, key))
196
+ })
197
+ ]
198
+ })
199
+ }),
200
+ /*#__PURE__*/ _jsxs(DialogActions, {
201
+ children: [
202
+ dismissible ? /*#__PURE__*/ _jsx(Button, {
203
+ onClick: onClose,
204
+ children: 'Cancel'
205
+ }) : null,
206
+ /*#__PURE__*/ _jsx(Button, {
207
+ variant: "contained",
208
+ disabled: busy || !memberUid || pin.length < 4,
209
+ onClick: ()=>press('enter'),
210
+ children: purpose === 'manager' ? 'Approve' : 'Continue'
211
+ })
212
+ ]
213
+ })
214
+ ]
215
+ });
216
+ }
217
+ PosPinPad.displayName = 'PosPinPad';
218
+ export default PosPinPad;
219
+
220
+ //# sourceMappingURL=pos-pin-pad.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../libs/plugins/commerce/src/lib/components/console/pos-ops/pos-pin-pad.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use client'\n\nimport {\n Alert,\n Box,\n Button,\n Chip,\n Dialog,\n DialogActions,\n DialogContent,\n DialogTitle,\n Stack,\n Typography,\n} from '@mui/material'\nimport { useUser } from '@aglyn/tenant-feature-instance'\nimport { useCallback, useEffect, useState } from 'react'\nimport { callPosOps } from './pos-ops-api'\n\n/** What a right PIN buys: a signed statement that this member is at this register. */\nexport interface PosStaffAssertion {\n assertion: string\n expiresAtMs: number\n memberUid: string\n name: string\n purpose: 'cashier' | 'manager'\n}\n\nexport interface PosPinPadProps {\n open: boolean\n hostId: string\n registerId: string\n /** `cashier` switches who is ringing; `manager` approves one action. */\n purpose: 'cashier' | 'manager'\n title?: string\n /** Why a manager is being asked, shown above the pad. */\n prompt?: string\n /** A lock screen cannot be dismissed without a PIN. */\n dismissible?: boolean\n onClose: () => void\n onVerified: (assertion: PosStaffAssertion) => void\n}\n\nconst KEYS = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'clear', '0', 'back'] as const\n\n/**\n * The PIN pad (AGL-3609): pick your name, tap your PIN. Built for a tablet —\n * every key a full-size button — and for a keyboard, which types digits,\n * Backspace and Enter straight into it.\n */\nexport function PosPinPad(props: PosPinPadProps) {\n const { open, hostId, registerId, purpose, onClose, onVerified } = props\n const { data: user } = useUser()\n const [members, setMembers] = useState<Array<{ uid: string; name: string }> | null>(null)\n const [memberUid, setMemberUid] = useState('')\n const [pin, setPin] = useState('')\n const [error, setError] = useState('')\n const [busy, setBusy] = useState(false)\n\n useEffect(() => {\n if (!open || !user) return\n let active = true\n setPin('')\n setError('')\n void callPosOps<{ members?: Array<{ uid: string; name: string }> }>(user, 'pos-staff-pin', {\n hostId,\n action: 'roster',\n }).then((answer) => {\n if (!active) return\n if (!answer.ok) {\n setError(answer.body.error ?? 'Could not load the staff list.')\n setMembers([])\n return\n }\n const list = answer.body.members ?? []\n setMembers(list)\n if (list.length === 1) setMemberUid(list[0]!.uid)\n })\n return () => {\n active = false\n }\n }, [open, user, hostId])\n\n const submit = useCallback(\n async (value: string) => {\n if (!memberUid || value.length < 4 || busy) return\n setBusy(true)\n setError('')\n const answer = await callPosOps<Partial<PosStaffAssertion>>(user, 'pos-staff-pin', {\n hostId,\n registerId,\n action: 'verify',\n purpose,\n memberUid,\n pin: value,\n })\n setBusy(false)\n setPin('')\n if (!answer.ok || !answer.body.assertion) {\n setError(answer.body.error ?? 'That PIN did not work.')\n return\n }\n onVerified(answer.body as PosStaffAssertion)\n },\n [memberUid, busy, user, hostId, registerId, purpose, onVerified],\n )\n\n const press = useCallback(\n (key: (typeof KEYS)[number] | 'enter') => {\n if (key === 'clear') return setPin('')\n if (key === 'back') return setPin((value) => value.slice(0, -1))\n if (key === 'enter') return void submit(pin)\n setPin((value) => (value.length >= 6 ? value : value + key))\n },\n [pin, submit],\n )\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (/^\\d$/.test(event.key)) press(event.key as (typeof KEYS)[number])\n else if (event.key === 'Backspace') press('back')\n else if (event.key === 'Enter') press('enter')\n }\n\n // A lock nobody can open is no lock: with no PINs set on the site, the\n // pad can always be closed.\n const dismissible = props.dismissible !== false || (members !== null && members.length === 0)\n return (\n <Dialog\n open={open}\n onClose={dismissible ? onClose : undefined}\n maxWidth=\"xs\"\n fullWidth\n onKeyDown={onKeyDown}\n >\n <DialogTitle>\n {props.title ?? (purpose === 'manager' ? 'Manager approval' : 'Switch cashier')}\n </DialogTitle>\n <DialogContent>\n <Stack spacing={2}>\n {props.prompt ? (\n <Typography variant=\"body2\" color=\"text.secondary\">\n {props.prompt}\n </Typography>\n ) : null}\n {members && members.length === 0 && !error ? (\n <Alert severity=\"info\">\n {'Nobody has a register PIN on this site yet. Set yours under Commerce → ' +\n 'Settings → Staff PINs.'}\n </Alert>\n ) : null}\n <Stack direction=\"row\" useFlexGap spacing={1} sx={{ flexWrap: 'wrap' }}>\n {(members ?? []).map((member) => (\n <Chip\n key={member.uid}\n label={member.name}\n color={member.uid === memberUid ? 'primary' : 'default'}\n variant={member.uid === memberUid ? 'filled' : 'outlined'}\n onClick={() => {\n setMemberUid(member.uid)\n setError('')\n }}\n />\n ))}\n </Stack>\n <Typography\n variant=\"h4\"\n component=\"div\"\n aria-label=\"PIN entered\"\n sx={{ textAlign: 'center', letterSpacing: '0.5em', minHeight: '1.5em' }}\n >\n {'•'.repeat(pin.length) || ' '}\n </Typography>\n {error ? <Alert severity=\"warning\">{error}</Alert> : null}\n <Box sx={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: 1 }}>\n {KEYS.map((key) => (\n <Button\n key={key}\n variant={key === 'clear' || key === 'back' ? 'text' : 'outlined'}\n size=\"large\"\n disabled={busy || !memberUid}\n onClick={() => press(key)}\n aria-label={key === 'back' ? 'Delete digit' : key === 'clear' ? 'Clear' : key}\n sx={{ minHeight: 56 }}\n >\n {key === 'back' ? '⌫' : key === 'clear' ? 'Clear' : key}\n </Button>\n ))}\n </Box>\n </Stack>\n </DialogContent>\n <DialogActions>\n {dismissible ? <Button onClick={onClose}>{'Cancel'}</Button> : null}\n <Button\n variant=\"contained\"\n disabled={busy || !memberUid || pin.length < 4}\n onClick={() => press('enter')}\n >\n {purpose === 'manager' ? 'Approve' : 'Continue'}\n </Button>\n </DialogActions>\n </Dialog>\n )\n}\n\nPosPinPad.displayName = 'PosPinPad'\n\nexport default PosPinPad\n"],"names":["Alert","Box","Button","Chip","Dialog","DialogActions","DialogContent","DialogTitle","Stack","Typography","useUser","useCallback","useEffect","useState","callPosOps","KEYS","PosPinPad","props","open","hostId","registerId","purpose","onClose","onVerified","data","user","members","setMembers","memberUid","setMemberUid","pin","setPin","error","setError","busy","setBusy","active","action","then","answer","ok","body","list","length","uid","submit","value","assertion","press","key","slice","onKeyDown","event","test","dismissible","undefined","maxWidth","fullWidth","title","spacing","prompt","variant","color","severity","direction","useFlexGap","sx","flexWrap","map","member","label","name","onClick","component","aria-label","textAlign","letterSpacing","minHeight","repeat","display","gridTemplateColumns","gap","size","disabled","displayName"],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import { type PosReceiptOrder } from '../../../model/commerce-pos-ops';
18
+ import { type PosOpsSettings } from '../../../pos-ops-config';
19
+ /** The register settings (AGL-3609) for one site, as the console reads them. */
20
+ export declare function usePosOpsSettings(hostId: string): PosOpsSettings;
21
+ /** Whether a register has a cloud receipt printer (AGL-3619) to send to. */
22
+ export declare function usePosRegisterHasPrinter(hostId: string, registerId: string | undefined): boolean;
23
+ /** What every receipt from this site prints besides the sale. */
24
+ export interface PosReceiptStore {
25
+ name: string;
26
+ logoUrl?: string;
27
+ address?: string;
28
+ footer?: string;
29
+ returnPolicy?: string;
30
+ }
31
+ /**
32
+ * The store's receipt header and footer, read where the merchant keeps them:
33
+ * the site's name and logo, the receipt footer from the store settings, and
34
+ * the receipt address and return policy from the register settings.
35
+ */
36
+ export declare function usePosReceiptStore(hostId: string): PosReceiptStore;
37
+ export interface PosReceiptActionsProps {
38
+ hostId: string;
39
+ orderId: string;
40
+ order: PosReceiptOrder & {
41
+ cashierName?: string;
42
+ registerName?: string;
43
+ registerId?: string;
44
+ };
45
+ registerName?: string;
46
+ size?: 'small' | 'medium';
47
+ /**
48
+ * How the "Receipt printer" button sends to the register's cloud printer:
49
+ * `sale` right after the sale (the customer's receipt), `reprint` later
50
+ * (printed under a REPRINT banner). Shown only when the register has one.
51
+ */
52
+ cloudPrint?: 'sale' | 'reprint';
53
+ }
54
+ /**
55
+ * Print, or reprint, a sale's thermal receipt — and its gift receipt, which
56
+ * keeps the items and the barcode a recipient returns with and drops every
57
+ * price.
58
+ */
59
+ export declare function PosReceiptActions(props: PosReceiptActionsProps): import("react").JSX.Element;
60
+ export declare namespace PosReceiptActions {
61
+ var displayName: string;
62
+ }
63
+ export default PosReceiptActions;
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
19
+ import { Button, Stack } from "@mui/material";
20
+ import { collection, doc, limit, query, where } from "firebase/firestore";
21
+ import { useFirestore, useFirestoreCollection, useFirestoreDoc, useOrgPlan, useSitePluginConfig, useUser } from "@aglyn/tenant-feature-instance";
22
+ import { authorizedFetch } from "@aglyn/shared-util-http/authorized-token";
23
+ import { useSnackbar } from "@aglyn/shared-ui-snackstack";
24
+ import { useCallback, useMemo, useState } from "react";
25
+ import { buildPosReceipt } from "../../../model/commerce-pos-ops.js";
26
+ import { posOpsSettings } from "../../../pos-ops-config.js";
27
+ import { posReceiptLogoUrl, printPosReceipt } from "./pos-receipt.js";
28
+ /** The register settings (AGL-3609) for one site, as the console reads them. */ export function usePosOpsSettings(hostId) {
29
+ var _ref;
30
+ // The org is read only once it has landed: before that the settings would
31
+ // resolve against no workspace at all.
32
+ const { org, ready } = useOrgPlan(hostId);
33
+ const orgId = ready ? (_ref = org == null ? void 0 : org.$id) != null ? _ref : org == null ? void 0 : org.id : undefined;
34
+ const { config } = useSitePluginConfig(orgId, hostId, 'commerce');
35
+ return useMemo(()=>posOpsSettings(config), [
36
+ config
37
+ ]);
38
+ }
39
+ /** Whether a register has a cloud receipt printer (AGL-3619) to send to. */ export function usePosRegisterHasPrinter(hostId, registerId) {
40
+ const firestore = useFirestore();
41
+ const { data } = useFirestoreCollection(()=>registerId ? query(collection(firestore, 'hosts', hostId, 'printers'), where('registerId', '==', registerId), limit(1)) : null, [
42
+ firestore,
43
+ hostId,
44
+ registerId
45
+ ], {
46
+ idField: '$id'
47
+ });
48
+ return Boolean(registerId && (data == null ? void 0 : data.length));
49
+ }
50
+ /**
51
+ * The store's receipt header and footer, read where the merchant keeps them:
52
+ * the site's name and logo, the receipt footer from the store settings, and
53
+ * the receipt address and return policy from the register settings.
54
+ */ export function usePosReceiptStore(hostId) {
55
+ var _ref;
56
+ const firestore = useFirestore();
57
+ // The org is read only once it has landed: before that the settings would
58
+ // resolve against no workspace at all.
59
+ const { org, ready } = useOrgPlan(hostId);
60
+ const orgId = ready ? (_ref = org == null ? void 0 : org.$id) != null ? _ref : org == null ? void 0 : org.id : undefined;
61
+ const { config } = useSitePluginConfig(orgId, hostId, 'commerce');
62
+ const { data: host } = useFirestoreDoc(()=>doc(firestore, 'hosts', hostId), [
63
+ firestore,
64
+ hostId
65
+ ]);
66
+ const { data: store } = useFirestoreDoc(()=>doc(firestore, 'hosts', hostId, 'settings', 'store'), [
67
+ firestore,
68
+ hostId
69
+ ]);
70
+ return useMemo(()=>{
71
+ var _ref;
72
+ const settings = posOpsSettings(config);
73
+ const logoUrl = posReceiptLogoUrl(host == null ? void 0 : host['logoUrl'], hostId, typeof window === 'undefined' ? null : window.location.origin);
74
+ return _extends({
75
+ name: String((_ref = host == null ? void 0 : host['displayName']) != null ? _ref : '') || 'Receipt'
76
+ }, logoUrl ? {
77
+ logoUrl
78
+ } : {}, settings.receiptAddress ? {
79
+ address: settings.receiptAddress
80
+ } : {}, (store == null ? void 0 : store['receiptFooter']) ? {
81
+ footer: String(store['receiptFooter'])
82
+ } : {}, settings.returnPolicy ? {
83
+ returnPolicy: settings.returnPolicy
84
+ } : {});
85
+ }, [
86
+ config,
87
+ host,
88
+ hostId,
89
+ store
90
+ ]);
91
+ }
92
+ /**
93
+ * Print, or reprint, a sale's thermal receipt — and its gift receipt, which
94
+ * keeps the items and the barcode a recipient returns with and drops every
95
+ * price.
96
+ */ export function PosReceiptActions(props) {
97
+ var _props_size, _props_size1, _props_size2;
98
+ const { hostId, orderId, order } = props;
99
+ const store = usePosReceiptStore(hostId);
100
+ const { data: user } = useUser();
101
+ const { enqueueSnackbar } = useSnackbar();
102
+ const [sending, setSending] = useState(false);
103
+ const hasPrinter = usePosRegisterHasPrinter(hostId, props.cloudPrint ? order.registerId : undefined);
104
+ const sendToPrinter = useCallback(async ()=>{
105
+ setSending(true);
106
+ try {
107
+ var _answer_error;
108
+ const sale = props.cloudPrint === 'sale';
109
+ const response = await authorizedFetch(user, sale ? '/api/commerce/pos-payment' : '/api/commerce/printers', {
110
+ method: 'POST',
111
+ headers: {
112
+ 'Content-Type': 'application/json'
113
+ },
114
+ body: JSON.stringify(sale ? {
115
+ hostId,
116
+ orderId,
117
+ action: 'receipt',
118
+ channel: 'print'
119
+ } : {
120
+ hostId,
121
+ orderId,
122
+ action: 'reprint'
123
+ })
124
+ });
125
+ const answer = await response.json().catch(()=>({}));
126
+ enqueueSnackbar(response.ok ? 'Sent to the receipt printer' : (_answer_error = answer.error) != null ? _answer_error : 'Could not print', {
127
+ variant: response.ok ? 'success' : 'warning',
128
+ persist: false
129
+ });
130
+ } catch (unused) {
131
+ enqueueSnackbar('The register is offline. Check the connection and try again.', {
132
+ variant: 'warning',
133
+ persist: false
134
+ });
135
+ } finally{
136
+ setSending(false);
137
+ }
138
+ }, [
139
+ props.cloudPrint,
140
+ user,
141
+ hostId,
142
+ orderId,
143
+ enqueueSnackbar
144
+ ]);
145
+ const print = useCallback((gift)=>printPosReceipt(buildPosReceipt(_extends({
146
+ orderId,
147
+ order,
148
+ store,
149
+ gift
150
+ }, order.cashierName ? {
151
+ cashierName: order.cashierName
152
+ } : {}, props.registerName || order.registerName ? {
153
+ registerName: props.registerName || order.registerName
154
+ } : {}))), [
155
+ orderId,
156
+ order,
157
+ store,
158
+ props.registerName
159
+ ]);
160
+ return /*#__PURE__*/ _jsxs(Stack, {
161
+ direction: "row",
162
+ spacing: 1,
163
+ children: [
164
+ /*#__PURE__*/ _jsx(Button, {
165
+ size: (_props_size = props.size) != null ? _props_size : 'small',
166
+ onClick: ()=>print(false),
167
+ children: 'Print receipt'
168
+ }),
169
+ /*#__PURE__*/ _jsx(Button, {
170
+ size: (_props_size1 = props.size) != null ? _props_size1 : 'small',
171
+ onClick: ()=>print(true),
172
+ children: 'Gift receipt'
173
+ }),
174
+ props.cloudPrint && hasPrinter ? /*#__PURE__*/ _jsx(Button, {
175
+ size: (_props_size2 = props.size) != null ? _props_size2 : 'small',
176
+ disabled: sending,
177
+ onClick: ()=>void sendToPrinter(),
178
+ children: 'Receipt printer'
179
+ }) : null
180
+ ]
181
+ });
182
+ }
183
+ PosReceiptActions.displayName = 'PosReceiptActions';
184
+ export default PosReceiptActions;
185
+
186
+ //# sourceMappingURL=pos-receipt-actions.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../../libs/plugins/commerce/src/lib/components/console/pos-ops/pos-receipt-actions.component.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use client'\n\nimport { Button, Stack } from '@mui/material'\nimport { collection, doc, limit, query, where } from 'firebase/firestore'\nimport {\n useFirestore,\n useFirestoreCollection,\n useFirestoreDoc,\n useOrgPlan,\n useSitePluginConfig,\n useUser,\n} from '@aglyn/tenant-feature-instance'\nimport { authorizedFetch } from '@aglyn/shared-util-http/authorized-token'\nimport { useSnackbar } from '@aglyn/shared-ui-snackstack'\nimport { useCallback, useMemo, useState } from 'react'\nimport { buildPosReceipt, type PosReceiptOrder } from '../../../model/commerce-pos-ops'\nimport { posOpsSettings, type PosOpsSettings } from '../../../pos-ops-config'\nimport { posReceiptLogoUrl, printPosReceipt } from './pos-receipt'\n\n/** The register settings (AGL-3609) for one site, as the console reads them. */\nexport function usePosOpsSettings(hostId: string): PosOpsSettings {\n // The org is read only once it has landed: before that the settings would\n // resolve against no workspace at all.\n const { org, ready } = useOrgPlan(hostId)\n const orgId = ready\n ? ((org as { $id?: string; id?: string } | null)?.$id ?? (org as { id?: string } | null)?.id)\n : undefined\n const { config } = useSitePluginConfig(orgId, hostId, 'commerce')\n return useMemo(() => posOpsSettings(config), [config])\n}\n\n/** Whether a register has a cloud receipt printer (AGL-3619) to send to. */\nexport function usePosRegisterHasPrinter(hostId: string, registerId: string | undefined): boolean {\n const firestore = useFirestore()\n const { data } = useFirestoreCollection<Record<string, unknown>>(\n () =>\n registerId\n ? query(collection(firestore, 'hosts', hostId, 'printers'), where('registerId', '==', registerId), limit(1))\n : null,\n [firestore, hostId, registerId],\n { idField: '$id' },\n )\n return Boolean(registerId && data?.length)\n}\n\n/** What every receipt from this site prints besides the sale. */\nexport interface PosReceiptStore {\n name: string\n logoUrl?: string\n address?: string\n footer?: string\n returnPolicy?: string\n}\n\n/**\n * The store's receipt header and footer, read where the merchant keeps them:\n * the site's name and logo, the receipt footer from the store settings, and\n * the receipt address and return policy from the register settings.\n */\nexport function usePosReceiptStore(hostId: string): PosReceiptStore {\n const firestore = useFirestore()\n // The org is read only once it has landed: before that the settings would\n // resolve against no workspace at all.\n const { org, ready } = useOrgPlan(hostId)\n const orgId = ready\n ? ((org as { $id?: string; id?: string } | null)?.$id ?? (org as { id?: string } | null)?.id)\n : undefined\n const { config } = useSitePluginConfig(orgId, hostId, 'commerce')\n const { data: host } = useFirestoreDoc<Record<string, any>>(\n () => doc(firestore, 'hosts', hostId),\n [firestore, hostId],\n )\n const { data: store } = useFirestoreDoc<Record<string, any>>(\n () => doc(firestore, 'hosts', hostId, 'settings', 'store'),\n [firestore, hostId],\n )\n return useMemo(() => {\n const settings = posOpsSettings(config)\n const logoUrl = posReceiptLogoUrl(\n host?.['logoUrl'],\n hostId,\n typeof window === 'undefined' ? null : window.location.origin,\n )\n return {\n name: String(host?.['displayName'] ?? '') || 'Receipt',\n ...(logoUrl ? { logoUrl } : {}),\n ...(settings.receiptAddress ? { address: settings.receiptAddress } : {}),\n ...(store?.['receiptFooter'] ? { footer: String(store['receiptFooter']) } : {}),\n ...(settings.returnPolicy ? { returnPolicy: settings.returnPolicy } : {}),\n }\n }, [config, host, hostId, store])\n}\n\nexport interface PosReceiptActionsProps {\n hostId: string\n orderId: string\n order: PosReceiptOrder & { cashierName?: string; registerName?: string; registerId?: string }\n registerName?: string\n size?: 'small' | 'medium'\n /**\n * How the \"Receipt printer\" button sends to the register's cloud printer:\n * `sale` right after the sale (the customer's receipt), `reprint` later\n * (printed under a REPRINT banner). Shown only when the register has one.\n */\n cloudPrint?: 'sale' | 'reprint'\n}\n\n/**\n * Print, or reprint, a sale's thermal receipt — and its gift receipt, which\n * keeps the items and the barcode a recipient returns with and drops every\n * price.\n */\nexport function PosReceiptActions(props: PosReceiptActionsProps) {\n const { hostId, orderId, order } = props\n const store = usePosReceiptStore(hostId)\n const { data: user } = useUser()\n const { enqueueSnackbar } = useSnackbar()\n const [sending, setSending] = useState(false)\n const hasPrinter = usePosRegisterHasPrinter(hostId, props.cloudPrint ? order.registerId : undefined)\n const sendToPrinter = useCallback(async () => {\n setSending(true)\n try {\n const sale = props.cloudPrint === 'sale'\n const response = await authorizedFetch(user as any, sale ? '/api/commerce/pos-payment' : '/api/commerce/printers', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(\n sale\n ? { hostId, orderId, action: 'receipt', channel: 'print' }\n : { hostId, orderId, action: 'reprint' },\n ),\n })\n const answer = (await response.json().catch(() => ({}))) as { error?: string }\n enqueueSnackbar(response.ok ? 'Sent to the receipt printer' : (answer.error ?? 'Could not print'), {\n variant: response.ok ? 'success' : 'warning',\n persist: false,\n })\n } catch {\n enqueueSnackbar('The register is offline. Check the connection and try again.', {\n variant: 'warning',\n persist: false,\n })\n } finally {\n setSending(false)\n }\n }, [props.cloudPrint, user, hostId, orderId, enqueueSnackbar])\n const print = useCallback(\n (gift: boolean) =>\n printPosReceipt(\n buildPosReceipt({\n orderId,\n order,\n store,\n gift,\n ...(order.cashierName ? { cashierName: order.cashierName } : {}),\n ...(props.registerName || order.registerName\n ? { registerName: props.registerName || order.registerName }\n : {}),\n }),\n ),\n [orderId, order, store, props.registerName],\n )\n return (\n <Stack direction=\"row\" spacing={1}>\n <Button size={props.size ?? 'small'} onClick={() => print(false)}>\n {'Print receipt'}\n </Button>\n <Button size={props.size ?? 'small'} onClick={() => print(true)}>\n {'Gift receipt'}\n </Button>\n {props.cloudPrint && hasPrinter ? (\n <Button size={props.size ?? 'small'} disabled={sending} onClick={() => void sendToPrinter()}>\n {'Receipt printer'}\n </Button>\n ) : null}\n </Stack>\n )\n}\n\nPosReceiptActions.displayName = 'PosReceiptActions'\n\nexport default PosReceiptActions\n"],"names":["Button","Stack","collection","doc","limit","query","where","useFirestore","useFirestoreCollection","useFirestoreDoc","useOrgPlan","useSitePluginConfig","useUser","authorizedFetch","useSnackbar","useCallback","useMemo","useState","buildPosReceipt","posOpsSettings","posReceiptLogoUrl","printPosReceipt","usePosOpsSettings","hostId","org","ready","orgId","$id","id","undefined","config","usePosRegisterHasPrinter","registerId","firestore","data","idField","Boolean","length","usePosReceiptStore","host","store","settings","logoUrl","window","location","origin","name","String","receiptAddress","address","footer","returnPolicy","PosReceiptActions","props","orderId","order","user","enqueueSnackbar","sending","setSending","hasPrinter","cloudPrint","sendToPrinter","answer","sale","response","method","headers","body","JSON","stringify","action","channel","json","catch","ok","error","variant","persist","print","gift","cashierName","registerName","direction","spacing","size","onClick","disabled","displayName"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;AAEA,SAASA,MAAM,EAAEC,KAAK,QAAQ,gBAAe;AAC7C,SAASC,UAAU,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,QAAQ,qBAAoB;AACzE,SACEC,YAAY,EACZC,sBAAsB,EACtBC,eAAe,EACfC,UAAU,EACVC,mBAAmB,EACnBC,OAAO,QACF,iCAAgC;AACvC,SAASC,eAAe,QAAQ,2CAA0C;AAC1E,SAASC,WAAW,QAAQ,8BAA6B;AACzD,SAASC,WAAW,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AACtD,SAASC,eAAe,QAA8B,qCAAiC;AACvF,SAASC,cAAc,QAA6B,6BAAyB;AAC7E,SAASC,iBAAiB,EAAEC,eAAe,QAAQ,mBAAe;AAElE,8EAA8E,GAC9E,OAAO,SAASC,kBAAkBC,MAAc;;IAC9C,0EAA0E;IAC1E,uCAAuC;IACvC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGf,WAAWa;IAClC,MAAMG,QAAQD,gBACRD,uBAAD,AAACA,IAA8CG,GAAG,mBAAKH,uBAAD,AAACA,IAAgCI,EAAE,GAC1FC;IACJ,MAAM,EAAEC,MAAM,EAAE,GAAGnB,oBAAoBe,OAAOH,QAAQ;IACtD,OAAOP,QAAQ,IAAMG,eAAeW,SAAS;QAACA;KAAO;AACvD;AAEA,0EAA0E,GAC1E,OAAO,SAASC,yBAAyBR,MAAc,EAAES,UAA8B;IACrF,MAAMC,YAAY1B;IAClB,MAAM,EAAE2B,IAAI,EAAE,GAAG1B,uBACf,IACEwB,aACI3B,MAAMH,WAAW+B,WAAW,SAASV,QAAQ,aAAajB,MAAM,cAAc,MAAM0B,aAAa5B,MAAM,MACvG,MACN;QAAC6B;QAAWV;QAAQS;KAAW,EAC/B;QAAEG,SAAS;IAAM;IAEnB,OAAOC,QAAQJ,eAAcE,wBAAAA,KAAMG,MAAM;AAC3C;AAWA;;;;CAIC,GACD,OAAO,SAASC,mBAAmBf,MAAc;;IAC/C,MAAMU,YAAY1B;IAClB,0EAA0E;IAC1E,uCAAuC;IACvC,MAAM,EAAEiB,GAAG,EAAEC,KAAK,EAAE,GAAGf,WAAWa;IAClC,MAAMG,QAAQD,gBACRD,uBAAD,AAACA,IAA8CG,GAAG,mBAAKH,uBAAD,AAACA,IAAgCI,EAAE,GAC1FC;IACJ,MAAM,EAAEC,MAAM,EAAE,GAAGnB,oBAAoBe,OAAOH,QAAQ;IACtD,MAAM,EAAEW,MAAMK,IAAI,EAAE,GAAG9B,gBACrB,IAAMN,IAAI8B,WAAW,SAASV,SAC9B;QAACU;QAAWV;KAAO;IAErB,MAAM,EAAEW,MAAMM,KAAK,EAAE,GAAG/B,gBACtB,IAAMN,IAAI8B,WAAW,SAASV,QAAQ,YAAY,UAClD;QAACU;QAAWV;KAAO;IAErB,OAAOP,QAAQ;;QACb,MAAMyB,WAAWtB,eAAeW;QAChC,MAAMY,UAAUtB,kBACdmB,wBAAAA,IAAM,CAAC,UAAU,EACjBhB,QACA,OAAOoB,WAAW,cAAc,OAAOA,OAAOC,QAAQ,CAACC,MAAM;QAE/D,OAAO;YACLC,MAAMC,eAAOR,wBAAAA,IAAM,CAAC,cAAc,mBAAI,OAAO;WACzCG,UAAU;YAAEA;QAAQ,IAAI,CAAC,GACzBD,SAASO,cAAc,GAAG;YAAEC,SAASR,SAASO,cAAc;QAAC,IAAI,CAAC,GAClER,CAAAA,yBAAAA,KAAO,CAAC,gBAAgB,IAAG;YAAEU,QAAQH,OAAOP,KAAK,CAAC,gBAAgB;QAAE,IAAI,CAAC,GACzEC,SAASU,YAAY,GAAG;YAAEA,cAAcV,SAASU,YAAY;QAAC,IAAI,CAAC;IAE3E,GAAG;QAACrB;QAAQS;QAAMhB;QAAQiB;KAAM;AAClC;AAgBA;;;;CAIC,GACD,OAAO,SAASY,kBAAkBC,KAA6B;QAoD3CA,aAGAA,cAIEA;IA1DpB,MAAM,EAAE9B,MAAM,EAAE+B,OAAO,EAAEC,KAAK,EAAE,GAAGF;IACnC,MAAMb,QAAQF,mBAAmBf;IACjC,MAAM,EAAEW,MAAMsB,IAAI,EAAE,GAAG5C;IACvB,MAAM,EAAE6C,eAAe,EAAE,GAAG3C;IAC5B,MAAM,CAAC4C,SAASC,WAAW,GAAG1C,SAAS;IACvC,MAAM2C,aAAa7B,yBAAyBR,QAAQ8B,MAAMQ,UAAU,GAAGN,MAAMvB,UAAU,GAAGH;IAC1F,MAAMiC,gBAAgB/C,YAAY;QAChC4C,WAAW;QACX,IAAI;gBAY6DI;YAX/D,MAAMC,OAAOX,MAAMQ,UAAU,KAAK;YAClC,MAAMI,WAAW,MAAMpD,gBAAgB2C,MAAaQ,OAAO,8BAA8B,0BAA0B;gBACjHE,QAAQ;gBACRC,SAAS;oBAAE,gBAAgB;gBAAmB;gBAC9CC,MAAMC,KAAKC,SAAS,CAClBN,OACI;oBAAEzC;oBAAQ+B;oBAASiB,QAAQ;oBAAWC,SAAS;gBAAQ,IACvD;oBAAEjD;oBAAQ+B;oBAASiB,QAAQ;gBAAU;YAE7C;YACA,MAAMR,SAAU,MAAME,SAASQ,IAAI,GAAGC,KAAK,CAAC,IAAO,CAAA,CAAC,CAAA;YACpDjB,gBAAgBQ,SAASU,EAAE,GAAG,iCAAiCZ,gBAAAA,OAAOa,KAAK,YAAZb,gBAAgB,mBAAoB;gBACjGc,SAASZ,SAASU,EAAE,GAAG,YAAY;gBACnCG,SAAS;YACX;QACF,EAAE,eAAM;YACNrB,gBAAgB,gEAAgE;gBAC9EoB,SAAS;gBACTC,SAAS;YACX;QACF,SAAU;YACRnB,WAAW;QACb;IACF,GAAG;QAACN,MAAMQ,UAAU;QAAEL;QAAMjC;QAAQ+B;QAASG;KAAgB;IAC7D,MAAMsB,QAAQhE,YACZ,CAACiE,OACC3D,gBACEH,gBAAgB;YACdoC;YACAC;YACAf;YACAwC;WACIzB,MAAM0B,WAAW,GAAG;YAAEA,aAAa1B,MAAM0B,WAAW;QAAC,IAAI,CAAC,GAC1D5B,MAAM6B,YAAY,IAAI3B,MAAM2B,YAAY,GACxC;YAAEA,cAAc7B,MAAM6B,YAAY,IAAI3B,MAAM2B,YAAY;QAAC,IACzD,CAAC,MAGX;QAAC5B;QAASC;QAAOf;QAAOa,MAAM6B,YAAY;KAAC;IAE7C,qBACE,MAACjF;QAAMkF,WAAU;QAAMC,SAAS;;0BAC9B,KAACpF;gBAAOqF,IAAI,GAAEhC,cAAAA,MAAMgC,IAAI,YAAVhC,cAAc;gBAASiC,SAAS,IAAMP,MAAM;0BACvD;;0BAEH,KAAC/E;gBAAOqF,IAAI,GAAEhC,eAAAA,MAAMgC,IAAI,YAAVhC,eAAc;gBAASiC,SAAS,IAAMP,MAAM;0BACvD;;YAEF1B,MAAMQ,UAAU,IAAID,2BACnB,KAAC5D;gBAAOqF,IAAI,GAAEhC,eAAAA,MAAMgC,IAAI,YAAVhC,eAAc;gBAASkC,UAAU7B;gBAAS4B,SAAS,IAAM,KAAKxB;0BACzE;iBAED;;;AAGV;AAEAV,kBAAkBoC,WAAW,GAAG;AAEhC,eAAepC,kBAAiB"}