@bates-solutions/squareup 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +154 -0
  3. package/README.md.backup +292 -0
  4. package/dist/angular/__tests__/setup.d.ts +1 -0
  5. package/dist/angular/__tests__/setup.d.ts.map +1 -0
  6. package/dist/angular/__tests__/setup.js +5 -0
  7. package/dist/angular/__tests__/setup.js.map +1 -0
  8. package/dist/angular/components/index.d.ts +2 -0
  9. package/dist/angular/components/index.d.ts.map +1 -0
  10. package/dist/angular/components/index.js +2 -0
  11. package/dist/angular/components/index.js.map +1 -0
  12. package/dist/angular/components/payment-button.component.d.ts +49 -0
  13. package/dist/angular/components/payment-button.component.d.ts.map +1 -0
  14. package/dist/angular/components/payment-button.component.js +176 -0
  15. package/dist/angular/components/payment-button.component.js.map +1 -0
  16. package/dist/angular/directives/index.d.ts +2 -0
  17. package/dist/angular/directives/index.d.ts.map +1 -0
  18. package/dist/angular/directives/index.js +2 -0
  19. package/dist/angular/directives/index.js.map +1 -0
  20. package/dist/angular/directives/square-card.directive.d.ts +52 -0
  21. package/dist/angular/directives/square-card.directive.d.ts.map +1 -0
  22. package/dist/angular/directives/square-card.directive.js +98 -0
  23. package/dist/angular/directives/square-card.directive.js.map +1 -0
  24. package/dist/angular/index.d.ts +42 -0
  25. package/dist/angular/index.d.ts.map +1 -0
  26. package/dist/angular/index.js +45 -0
  27. package/dist/angular/index.js.map +1 -0
  28. package/dist/angular/services/index.d.ts +6 -0
  29. package/dist/angular/services/index.d.ts.map +1 -0
  30. package/dist/angular/services/index.js +6 -0
  31. package/dist/angular/services/index.js.map +1 -0
  32. package/dist/angular/services/square-catalog.service.d.ts +60 -0
  33. package/dist/angular/services/square-catalog.service.d.ts.map +1 -0
  34. package/dist/angular/services/square-catalog.service.js +152 -0
  35. package/dist/angular/services/square-catalog.service.js.map +1 -0
  36. package/dist/angular/services/square-customers.service.d.ts +77 -0
  37. package/dist/angular/services/square-customers.service.d.ts.map +1 -0
  38. package/dist/angular/services/square-customers.service.js +187 -0
  39. package/dist/angular/services/square-customers.service.js.map +1 -0
  40. package/dist/angular/services/square-orders.service.d.ts +66 -0
  41. package/dist/angular/services/square-orders.service.d.ts.map +1 -0
  42. package/dist/angular/services/square-orders.service.js +170 -0
  43. package/dist/angular/services/square-orders.service.js.map +1 -0
  44. package/dist/angular/services/square-payments.service.d.ts +73 -0
  45. package/dist/angular/services/square-payments.service.d.ts.map +1 -0
  46. package/dist/angular/services/square-payments.service.js +167 -0
  47. package/dist/angular/services/square-payments.service.js.map +1 -0
  48. package/dist/angular/services/square-sdk.service.d.ts +45 -0
  49. package/dist/angular/services/square-sdk.service.d.ts.map +1 -0
  50. package/dist/angular/services/square-sdk.service.js +133 -0
  51. package/dist/angular/services/square-sdk.service.js.map +1 -0
  52. package/dist/angular/square.module.d.ts +36 -0
  53. package/dist/angular/square.module.d.ts.map +1 -0
  54. package/dist/angular/square.module.js +75 -0
  55. package/dist/angular/square.module.js.map +1 -0
  56. package/dist/angular/types.d.ts +189 -0
  57. package/dist/angular/types.d.ts.map +1 -0
  58. package/dist/angular/types.js +8 -0
  59. package/dist/angular/types.js.map +1 -0
  60. package/dist/core/builders/order.builder.d.ts +140 -0
  61. package/dist/core/builders/order.builder.d.ts.map +1 -0
  62. package/dist/core/builders/order.builder.js +185 -0
  63. package/dist/core/builders/order.builder.js.map +1 -0
  64. package/dist/core/client.d.ts +93 -0
  65. package/dist/core/client.d.ts.map +1 -0
  66. package/dist/core/client.js +99 -0
  67. package/dist/core/client.js.map +1 -0
  68. package/dist/core/errors.d.ts +55 -0
  69. package/dist/core/errors.d.ts.map +1 -0
  70. package/dist/core/errors.js +118 -0
  71. package/dist/core/errors.js.map +1 -0
  72. package/dist/core/index.d.ts +17 -0
  73. package/dist/core/index.d.ts.map +1 -0
  74. package/dist/core/index.js +18 -0
  75. package/dist/core/index.js.map +1 -0
  76. package/dist/core/services/catalog.service.d.ts +218 -0
  77. package/dist/core/services/catalog.service.d.ts.map +1 -0
  78. package/dist/core/services/catalog.service.js +274 -0
  79. package/dist/core/services/catalog.service.js.map +1 -0
  80. package/dist/core/services/customers.service.d.ts +197 -0
  81. package/dist/core/services/customers.service.d.ts.map +1 -0
  82. package/dist/core/services/customers.service.js +246 -0
  83. package/dist/core/services/customers.service.js.map +1 -0
  84. package/dist/core/services/inventory.service.d.ts +196 -0
  85. package/dist/core/services/inventory.service.d.ts.map +1 -0
  86. package/dist/core/services/inventory.service.js +266 -0
  87. package/dist/core/services/inventory.service.js.map +1 -0
  88. package/dist/core/services/invoices.service.d.ts +211 -0
  89. package/dist/core/services/invoices.service.d.ts.map +1 -0
  90. package/dist/core/services/invoices.service.js +297 -0
  91. package/dist/core/services/invoices.service.js.map +1 -0
  92. package/dist/core/services/loyalty.service.d.ts +282 -0
  93. package/dist/core/services/loyalty.service.d.ts.map +1 -0
  94. package/dist/core/services/loyalty.service.js +340 -0
  95. package/dist/core/services/loyalty.service.js.map +1 -0
  96. package/dist/core/services/orders.service.d.ts +121 -0
  97. package/dist/core/services/orders.service.d.ts.map +1 -0
  98. package/dist/core/services/orders.service.js +208 -0
  99. package/dist/core/services/orders.service.js.map +1 -0
  100. package/dist/core/services/payments.service.d.ts +121 -0
  101. package/dist/core/services/payments.service.d.ts.map +1 -0
  102. package/dist/core/services/payments.service.js +189 -0
  103. package/dist/core/services/payments.service.js.map +1 -0
  104. package/dist/core/services/subscriptions.service.d.ts +205 -0
  105. package/dist/core/services/subscriptions.service.d.ts.map +1 -0
  106. package/dist/core/services/subscriptions.service.js +265 -0
  107. package/dist/core/services/subscriptions.service.js.map +1 -0
  108. package/dist/core/types/index.d.ts +68 -0
  109. package/dist/core/types/index.d.ts.map +1 -0
  110. package/dist/core/types/index.js +2 -0
  111. package/dist/core/types/index.js.map +1 -0
  112. package/dist/core/utils.d.ts +74 -0
  113. package/dist/core/utils.d.ts.map +1 -0
  114. package/dist/core/utils.js +96 -0
  115. package/dist/core/utils.js.map +1 -0
  116. package/dist/react/SquareProvider.d.ts +50 -0
  117. package/dist/react/SquareProvider.d.ts.map +1 -0
  118. package/dist/react/SquareProvider.js +134 -0
  119. package/dist/react/SquareProvider.js.map +1 -0
  120. package/dist/react/__tests__/CardInput.test.d.ts +2 -0
  121. package/dist/react/__tests__/CardInput.test.d.ts.map +1 -0
  122. package/dist/react/__tests__/CardInput.test.js +218 -0
  123. package/dist/react/__tests__/CardInput.test.js.map +1 -0
  124. package/dist/react/__tests__/PaymentButton.test.d.ts +2 -0
  125. package/dist/react/__tests__/PaymentButton.test.d.ts.map +1 -0
  126. package/dist/react/__tests__/PaymentButton.test.js +400 -0
  127. package/dist/react/__tests__/PaymentButton.test.js.map +1 -0
  128. package/dist/react/__tests__/SquareProvider.test.d.ts +2 -0
  129. package/dist/react/__tests__/SquareProvider.test.d.ts.map +1 -0
  130. package/dist/react/__tests__/SquareProvider.test.js +126 -0
  131. package/dist/react/__tests__/SquareProvider.test.js.map +1 -0
  132. package/dist/react/__tests__/setup.d.ts +2 -0
  133. package/dist/react/__tests__/setup.d.ts.map +1 -0
  134. package/dist/react/__tests__/setup.js +3 -0
  135. package/dist/react/__tests__/setup.js.map +1 -0
  136. package/dist/react/__tests__/useCatalog.test.d.ts +2 -0
  137. package/dist/react/__tests__/useCatalog.test.d.ts.map +1 -0
  138. package/dist/react/__tests__/useCatalog.test.js +277 -0
  139. package/dist/react/__tests__/useCatalog.test.js.map +1 -0
  140. package/dist/react/__tests__/useCustomers.test.d.ts +2 -0
  141. package/dist/react/__tests__/useCustomers.test.d.ts.map +1 -0
  142. package/dist/react/__tests__/useCustomers.test.js +312 -0
  143. package/dist/react/__tests__/useCustomers.test.js.map +1 -0
  144. package/dist/react/__tests__/useOrders.test.d.ts +2 -0
  145. package/dist/react/__tests__/useOrders.test.d.ts.map +1 -0
  146. package/dist/react/__tests__/useOrders.test.js +216 -0
  147. package/dist/react/__tests__/useOrders.test.js.map +1 -0
  148. package/dist/react/__tests__/usePayments.test.d.ts +2 -0
  149. package/dist/react/__tests__/usePayments.test.d.ts.map +1 -0
  150. package/dist/react/__tests__/usePayments.test.js +235 -0
  151. package/dist/react/__tests__/usePayments.test.js.map +1 -0
  152. package/dist/react/__tests__/useSquarePayment.test.d.ts +2 -0
  153. package/dist/react/__tests__/useSquarePayment.test.d.ts.map +1 -0
  154. package/dist/react/__tests__/useSquarePayment.test.js +447 -0
  155. package/dist/react/__tests__/useSquarePayment.test.js.map +1 -0
  156. package/dist/react/components/CardInput.d.ts +69 -0
  157. package/dist/react/components/CardInput.d.ts.map +1 -0
  158. package/dist/react/components/CardInput.js +58 -0
  159. package/dist/react/components/CardInput.js.map +1 -0
  160. package/dist/react/components/PaymentButton.d.ts +71 -0
  161. package/dist/react/components/PaymentButton.d.ts.map +1 -0
  162. package/dist/react/components/PaymentButton.js +140 -0
  163. package/dist/react/components/PaymentButton.js.map +1 -0
  164. package/dist/react/components/index.d.ts +5 -0
  165. package/dist/react/components/index.d.ts.map +1 -0
  166. package/dist/react/components/index.js +3 -0
  167. package/dist/react/components/index.js.map +1 -0
  168. package/dist/react/hooks/index.d.ts +11 -0
  169. package/dist/react/hooks/index.d.ts.map +1 -0
  170. package/dist/react/hooks/index.js +6 -0
  171. package/dist/react/hooks/index.js.map +1 -0
  172. package/dist/react/hooks/useCatalog.d.ts +98 -0
  173. package/dist/react/hooks/useCatalog.d.ts.map +1 -0
  174. package/dist/react/hooks/useCatalog.js +134 -0
  175. package/dist/react/hooks/useCatalog.js.map +1 -0
  176. package/dist/react/hooks/useCustomers.d.ts +105 -0
  177. package/dist/react/hooks/useCustomers.d.ts.map +1 -0
  178. package/dist/react/hooks/useCustomers.js +174 -0
  179. package/dist/react/hooks/useCustomers.js.map +1 -0
  180. package/dist/react/hooks/useOrders.d.ts +112 -0
  181. package/dist/react/hooks/useOrders.d.ts.map +1 -0
  182. package/dist/react/hooks/useOrders.js +115 -0
  183. package/dist/react/hooks/useOrders.js.map +1 -0
  184. package/dist/react/hooks/usePayments.d.ts +98 -0
  185. package/dist/react/hooks/usePayments.d.ts.map +1 -0
  186. package/dist/react/hooks/usePayments.js +89 -0
  187. package/dist/react/hooks/usePayments.js.map +1 -0
  188. package/dist/react/hooks/useSquarePayment.d.ts +52 -0
  189. package/dist/react/hooks/useSquarePayment.d.ts.map +1 -0
  190. package/dist/react/hooks/useSquarePayment.js +146 -0
  191. package/dist/react/hooks/useSquarePayment.js.map +1 -0
  192. package/dist/react/index.d.ts +8 -0
  193. package/dist/react/index.d.ts.map +1 -0
  194. package/dist/react/index.js +7 -0
  195. package/dist/react/index.js.map +1 -0
  196. package/dist/react/types.d.ts +183 -0
  197. package/dist/react/types.d.ts.map +1 -0
  198. package/dist/react/types.js +2 -0
  199. package/dist/react/types.js.map +1 -0
  200. package/dist/server/index.d.ts +43 -0
  201. package/dist/server/index.d.ts.map +1 -0
  202. package/dist/server/index.js +45 -0
  203. package/dist/server/index.js.map +1 -0
  204. package/dist/server/middleware/express.d.ts +77 -0
  205. package/dist/server/middleware/express.d.ts.map +1 -0
  206. package/dist/server/middleware/express.js +123 -0
  207. package/dist/server/middleware/express.js.map +1 -0
  208. package/dist/server/middleware/nextjs.d.ts +118 -0
  209. package/dist/server/middleware/nextjs.d.ts.map +1 -0
  210. package/dist/server/middleware/nextjs.js +172 -0
  211. package/dist/server/middleware/nextjs.js.map +1 -0
  212. package/dist/server/types.d.ts +89 -0
  213. package/dist/server/types.d.ts.map +1 -0
  214. package/dist/server/types.js +7 -0
  215. package/dist/server/types.js.map +1 -0
  216. package/dist/server/webhook.d.ts +114 -0
  217. package/dist/server/webhook.d.ts.map +1 -0
  218. package/dist/server/webhook.js +190 -0
  219. package/dist/server/webhook.js.map +1 -0
  220. package/package.json +118 -0
@@ -0,0 +1,71 @@
1
+ import React from 'react';
2
+ import type { DigitalWalletOptions } from '../types.js';
3
+ /**
4
+ * Payment method type
5
+ */
6
+ export type PaymentMethodType = 'googlePay' | 'applePay';
7
+ /**
8
+ * Props for PaymentButton component
9
+ */
10
+ export interface PaymentButtonProps {
11
+ /** Payment method type */
12
+ type: PaymentMethodType;
13
+ /** Amount to display/charge (for display purposes) */
14
+ amount?: number;
15
+ /** Currency code */
16
+ currency?: string;
17
+ /** Button styling options */
18
+ buttonOptions?: DigitalWalletOptions;
19
+ /** Additional CSS class name */
20
+ className?: string;
21
+ /** Inline styles for the container */
22
+ style?: React.CSSProperties;
23
+ /** Callback when payment method is ready */
24
+ onReady?: () => void;
25
+ /** Callback when payment is successful */
26
+ onPayment?: (token: string) => void;
27
+ /** Callback when an error occurs */
28
+ onError?: (error: Error) => void;
29
+ /** Callback when payment is cancelled */
30
+ onCancel?: () => void;
31
+ }
32
+ /**
33
+ * Digital wallet payment button (Google Pay / Apple Pay)
34
+ *
35
+ * @example
36
+ * ```tsx
37
+ * import { PaymentButton } from '@bates-solutions/squareup/react';
38
+ *
39
+ * function Checkout() {
40
+ * const handlePayment = async (token: string) => {
41
+ * // Send token to your server to complete payment
42
+ * const response = await fetch('/api/payments', {
43
+ * method: 'POST',
44
+ * headers: { 'Content-Type': 'application/json' },
45
+ * body: JSON.stringify({ sourceId: token, amount: 1000 }),
46
+ * });
47
+ * };
48
+ *
49
+ * return (
50
+ * <div>
51
+ * <PaymentButton
52
+ * type="googlePay"
53
+ * amount={1000}
54
+ * currency="USD"
55
+ * onPayment={handlePayment}
56
+ * onError={(err) => console.error('Error:', err)}
57
+ * />
58
+ * <PaymentButton
59
+ * type="applePay"
60
+ * amount={1000}
61
+ * currency="USD"
62
+ * onPayment={handlePayment}
63
+ * onError={(err) => console.error('Error:', err)}
64
+ * />
65
+ * </div>
66
+ * );
67
+ * }
68
+ * ```
69
+ */
70
+ export declare function PaymentButton({ type, amount: _amount, currency: _currency, buttonOptions, className, style, onReady, onPayment, onError, onCancel, }: PaymentButtonProps): import("react/jsx-runtime").JSX.Element;
71
+ //# sourceMappingURL=PaymentButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentButton.d.ts","sourceRoot":"","sources":["../../../src/react/components/PaymentButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAC;AAExE,OAAO,KAAK,EAAuB,oBAAoB,EAAe,MAAM,aAAa,CAAC;AAE1F;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,UAAU,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,IAAI,EAAE,iBAAiB,CAAC;IACxB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,0CAA0C;IAC1C,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,oCAAoC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,EACnB,aAAa,EACb,SAAS,EACT,KAAK,EACL,OAAO,EACP,SAAS,EACT,OAAO,EACP,QAAQ,GACT,EAAE,kBAAkB,2CAsHpB"}
@@ -0,0 +1,140 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState, useCallback } from 'react';
3
+ import { useSquare } from '../SquareProvider.js';
4
+ /**
5
+ * Digital wallet payment button (Google Pay / Apple Pay)
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * import { PaymentButton } from '@bates-solutions/squareup/react';
10
+ *
11
+ * function Checkout() {
12
+ * const handlePayment = async (token: string) => {
13
+ * // Send token to your server to complete payment
14
+ * const response = await fetch('/api/payments', {
15
+ * method: 'POST',
16
+ * headers: { 'Content-Type': 'application/json' },
17
+ * body: JSON.stringify({ sourceId: token, amount: 1000 }),
18
+ * });
19
+ * };
20
+ *
21
+ * return (
22
+ * <div>
23
+ * <PaymentButton
24
+ * type="googlePay"
25
+ * amount={1000}
26
+ * currency="USD"
27
+ * onPayment={handlePayment}
28
+ * onError={(err) => console.error('Error:', err)}
29
+ * />
30
+ * <PaymentButton
31
+ * type="applePay"
32
+ * amount={1000}
33
+ * currency="USD"
34
+ * onPayment={handlePayment}
35
+ * onError={(err) => console.error('Error:', err)}
36
+ * />
37
+ * </div>
38
+ * );
39
+ * }
40
+ * ```
41
+ */
42
+ export function PaymentButton({ type, amount: _amount, currency: _currency, buttonOptions, className, style, onReady, onPayment, onError, onCancel, }) {
43
+ const { payments, sdkLoaded, error: sdkError } = useSquare();
44
+ const containerRef = useRef(null);
45
+ const paymentMethodRef = useRef(null);
46
+ const [ready, setReady] = useState(false);
47
+ const [loading, setLoading] = useState(false);
48
+ const [_error, setError] = useState(sdkError);
49
+ // Initialize payment method
50
+ useEffect(() => {
51
+ if (!sdkLoaded || !payments || !containerRef.current) {
52
+ return;
53
+ }
54
+ let mounted = true;
55
+ async function initializePaymentMethod() {
56
+ if (!payments)
57
+ return;
58
+ try {
59
+ let paymentMethod;
60
+ if (type === 'googlePay') {
61
+ paymentMethod = await payments.googlePay({});
62
+ }
63
+ else {
64
+ paymentMethod = await payments.applePay({});
65
+ }
66
+ if (!mounted || !containerRef.current) {
67
+ await paymentMethod.destroy();
68
+ return;
69
+ }
70
+ await paymentMethod.attach(containerRef.current, buttonOptions);
71
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
72
+ if (!mounted) {
73
+ await paymentMethod.destroy();
74
+ return;
75
+ }
76
+ paymentMethodRef.current = paymentMethod;
77
+ setReady(true);
78
+ setError(null);
79
+ onReady?.();
80
+ }
81
+ catch (err) {
82
+ if (!mounted)
83
+ return;
84
+ const error = err instanceof Error ? err : new Error(`Failed to initialize ${type}`);
85
+ setError(error);
86
+ onError?.(error);
87
+ }
88
+ }
89
+ void initializePaymentMethod();
90
+ return () => {
91
+ mounted = false;
92
+ if (paymentMethodRef.current) {
93
+ void paymentMethodRef.current.destroy();
94
+ paymentMethodRef.current = null;
95
+ }
96
+ };
97
+ }, [sdkLoaded, payments, type, buttonOptions, onReady, onError]);
98
+ // Handle click/tap on the button
99
+ const handleClick = useCallback(async () => {
100
+ if (!paymentMethodRef.current || loading)
101
+ return;
102
+ setLoading(true);
103
+ setError(null);
104
+ try {
105
+ const result = await paymentMethodRef.current.tokenize();
106
+ if (result.status === 'OK' && result.token) {
107
+ onPayment?.(result.token);
108
+ }
109
+ else if (result.status === 'Cancel') {
110
+ onCancel?.();
111
+ }
112
+ else {
113
+ const errorMessage = result.errors?.map((e) => e.message).join(', ') ?? 'Payment failed';
114
+ throw new Error(errorMessage);
115
+ }
116
+ }
117
+ catch (err) {
118
+ const error = err instanceof Error ? err : new Error('Payment failed');
119
+ setError(error);
120
+ onError?.(error);
121
+ }
122
+ finally {
123
+ setLoading(false);
124
+ }
125
+ }, [loading, onPayment, onCancel, onError]);
126
+ // Update error state when SDK error changes
127
+ useEffect(() => {
128
+ if (sdkError) {
129
+ setError(sdkError);
130
+ onError?.(sdkError);
131
+ }
132
+ }, [sdkError, onError]);
133
+ return (_jsx("div", { ref: containerRef, className: className, style: {
134
+ minHeight: '48px',
135
+ cursor: ready && !loading ? 'pointer' : 'default',
136
+ opacity: loading ? 0.7 : 1,
137
+ ...style,
138
+ }, onClick: () => { void handleClick(); }, role: "button", tabIndex: ready ? 0 : -1, "aria-disabled": !ready || loading, "aria-label": `Pay with ${type === 'googlePay' ? 'Google Pay' : 'Apple Pay'}` }));
139
+ }
140
+ //# sourceMappingURL=PaymentButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaymentButton.js","sourceRoot":"","sources":["../../../src/react/components/PaymentButton.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export { CardInput } from './CardInput.js';
2
+ export type { CardInputProps, CardInputHandle } from './CardInput.js';
3
+ export { PaymentButton } from './PaymentButton.js';
4
+ export type { PaymentMethodType, PaymentButtonProps } from './PaymentButton.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { CardInput } from './CardInput.js';
2
+ export { PaymentButton } from './PaymentButton.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { useSquarePayment } from './useSquarePayment.js';
2
+ export type { UseSquarePaymentOptions } from './useSquarePayment.js';
3
+ export { usePayments } from './usePayments.js';
4
+ export type { CreatePaymentInput, PaymentResponse, UsePaymentsOptions, UsePaymentsReturn, } from './usePayments.js';
5
+ export { useOrders } from './useOrders.js';
6
+ export type { OrderLineItemInput, CreateOrderInput, OrderResponse, UseOrdersOptions, UseOrdersReturn, } from './useOrders.js';
7
+ export { useCustomers } from './useCustomers.js';
8
+ export type { CustomerAddressInput, CustomerInput, CustomerResponse, UseCustomersOptions, UseCustomersReturn, } from './useCustomers.js';
9
+ export { useCatalog } from './useCatalog.js';
10
+ export type { CatalogObjectType, CatalogItemResponse, CatalogSearchOptions, UseCatalogOptions, UseCatalogReturn, } from './useCatalog.js';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,YAAY,EACV,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { useSquarePayment } from './useSquarePayment.js';
2
+ export { usePayments } from './usePayments.js';
3
+ export { useOrders } from './useOrders.js';
4
+ export { useCustomers } from './useCustomers.js';
5
+ export { useCatalog } from './useCatalog.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAS3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,98 @@
1
+ import type { QueryState } from '../types.js';
2
+ /**
3
+ * Catalog object type
4
+ */
5
+ export type CatalogObjectType = 'ITEM' | 'ITEM_VARIATION' | 'CATEGORY' | 'DISCOUNT' | 'TAX' | 'MODIFIER' | 'MODIFIER_LIST' | 'IMAGE';
6
+ /**
7
+ * Catalog item response
8
+ */
9
+ export interface CatalogItemResponse {
10
+ type: CatalogObjectType;
11
+ id: string;
12
+ name?: string;
13
+ description?: string;
14
+ categoryId?: string;
15
+ variations?: Array<{
16
+ id: string;
17
+ name?: string;
18
+ sku?: string;
19
+ price?: {
20
+ amount: number;
21
+ currency: string;
22
+ };
23
+ }>;
24
+ imageUrl?: string;
25
+ }
26
+ /**
27
+ * Catalog search options
28
+ */
29
+ export interface CatalogSearchOptions {
30
+ /** Object types to include */
31
+ objectTypes?: CatalogObjectType[];
32
+ /** Search query string */
33
+ query?: string;
34
+ /** Category IDs to filter by */
35
+ categoryIds?: string[];
36
+ /** Maximum results */
37
+ limit?: number;
38
+ }
39
+ /**
40
+ * Options for useCatalog hook
41
+ */
42
+ export interface UseCatalogOptions {
43
+ /** API endpoint for catalog (default: /api/catalog) */
44
+ apiEndpoint?: string;
45
+ /** Initial search options */
46
+ initialOptions?: CatalogSearchOptions;
47
+ /** Fetch on mount */
48
+ fetchOnMount?: boolean;
49
+ /** Callback on error */
50
+ onError?: (error: Error) => void;
51
+ }
52
+ /**
53
+ * Return type for useCatalog hook
54
+ */
55
+ export interface UseCatalogReturn extends QueryState<CatalogItemResponse[]> {
56
+ /** Search catalog items */
57
+ search: (options?: CatalogSearchOptions) => Promise<CatalogItemResponse[]>;
58
+ /** Get a catalog item by ID */
59
+ get: (objectId: string) => Promise<CatalogItemResponse>;
60
+ /** List items by type */
61
+ list: (type: CatalogObjectType, limit?: number) => Promise<CatalogItemResponse[]>;
62
+ }
63
+ /**
64
+ * Hook for accessing catalog data via your backend API
65
+ *
66
+ * @param options - Hook configuration
67
+ * @returns Catalog query functions and state
68
+ *
69
+ * @example
70
+ * ```tsx
71
+ * function ProductList() {
72
+ * const { data: items, loading, error, search } = useCatalog({
73
+ * initialOptions: { objectTypes: ['ITEM'], limit: 20 },
74
+ * fetchOnMount: true,
75
+ * });
76
+ *
77
+ * if (loading) return <div>Loading...</div>;
78
+ * if (error) return <div>Error: {error.message}</div>;
79
+ *
80
+ * return (
81
+ * <div>
82
+ * <input
83
+ * type="text"
84
+ * onChange={(e) => search({ query: e.target.value })}
85
+ * placeholder="Search products..."
86
+ * />
87
+ * <ul>
88
+ * {items?.map((item) => (
89
+ * <li key={item.id}>{item.name}</li>
90
+ * ))}
91
+ * </ul>
92
+ * </div>
93
+ * );
94
+ * }
95
+ * ```
96
+ */
97
+ export declare function useCatalog(options?: UseCatalogOptions): UseCatalogReturn;
98
+ //# sourceMappingURL=useCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCatalog.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useCatalog.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,gBAAgB,GAChB,UAAU,GACV,UAAU,GACV,KAAK,GACL,UAAU,GACV,eAAe,GACf,OAAO,CAAC;AAEZ;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,KAAK,CAAC,EAAE;YACN,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAClC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,qBAAqB;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wBAAwB;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU,CAAC,mBAAmB,EAAE,CAAC;IACzE,2BAA2B;IAC3B,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAC3E,+BAA+B;IAC/B,GAAG,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACxD,yBAAyB;IACzB,IAAI,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;CACnF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,iBAAsB,GAAG,gBAAgB,CA2H5E"}
@@ -0,0 +1,134 @@
1
+ import { useState, useCallback, useEffect } from 'react';
2
+ /**
3
+ * Hook for accessing catalog data via your backend API
4
+ *
5
+ * @param options - Hook configuration
6
+ * @returns Catalog query functions and state
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * function ProductList() {
11
+ * const { data: items, loading, error, search } = useCatalog({
12
+ * initialOptions: { objectTypes: ['ITEM'], limit: 20 },
13
+ * fetchOnMount: true,
14
+ * });
15
+ *
16
+ * if (loading) return <div>Loading...</div>;
17
+ * if (error) return <div>Error: {error.message}</div>;
18
+ *
19
+ * return (
20
+ * <div>
21
+ * <input
22
+ * type="text"
23
+ * onChange={(e) => search({ query: e.target.value })}
24
+ * placeholder="Search products..."
25
+ * />
26
+ * <ul>
27
+ * {items?.map((item) => (
28
+ * <li key={item.id}>{item.name}</li>
29
+ * ))}
30
+ * </ul>
31
+ * </div>
32
+ * );
33
+ * }
34
+ * ```
35
+ */
36
+ export function useCatalog(options = {}) {
37
+ const { apiEndpoint = '/api/catalog', initialOptions, fetchOnMount = false, onError, } = options;
38
+ const [data, setData] = useState(null);
39
+ const [error, setError] = useState(null);
40
+ const [loading, setLoading] = useState(false);
41
+ const search = useCallback(async (searchOptions) => {
42
+ setLoading(true);
43
+ setError(null);
44
+ try {
45
+ const params = new URLSearchParams();
46
+ const opts = searchOptions ?? initialOptions ?? {};
47
+ if (opts.objectTypes?.length) {
48
+ params.set('types', opts.objectTypes.join(','));
49
+ }
50
+ if (opts.query) {
51
+ params.set('query', opts.query);
52
+ }
53
+ if (opts.categoryIds?.length) {
54
+ params.set('categoryIds', opts.categoryIds.join(','));
55
+ }
56
+ if (opts.limit) {
57
+ params.set('limit', String(opts.limit));
58
+ }
59
+ const url = params.toString() ? `${apiEndpoint}?${params.toString()}` : apiEndpoint;
60
+ const response = await fetch(url, {
61
+ method: 'GET',
62
+ headers: {
63
+ 'Content-Type': 'application/json',
64
+ },
65
+ });
66
+ if (!response.ok) {
67
+ const errorData = (await response.json().catch(() => ({})));
68
+ throw new Error(errorData.message ?? `Catalog search failed: ${response.statusText}`);
69
+ }
70
+ const result = (await response.json());
71
+ const items = result.items;
72
+ setData(items);
73
+ return items;
74
+ }
75
+ catch (err) {
76
+ const error = err instanceof Error ? err : new Error('Catalog search failed');
77
+ setError(error);
78
+ onError?.(error);
79
+ throw error;
80
+ }
81
+ finally {
82
+ setLoading(false);
83
+ }
84
+ }, [apiEndpoint, initialOptions, onError]);
85
+ const get = useCallback(async (objectId) => {
86
+ setLoading(true);
87
+ setError(null);
88
+ try {
89
+ const response = await fetch(`${apiEndpoint}/${objectId}`, {
90
+ method: 'GET',
91
+ headers: {
92
+ 'Content-Type': 'application/json',
93
+ },
94
+ });
95
+ if (!response.ok) {
96
+ const errorData = (await response.json().catch(() => ({})));
97
+ throw new Error(errorData.message ?? `Failed to get catalog item: ${response.statusText}`);
98
+ }
99
+ const item = (await response.json());
100
+ return item;
101
+ }
102
+ catch (err) {
103
+ const error = err instanceof Error ? err : new Error('Failed to get catalog item');
104
+ setError(error);
105
+ onError?.(error);
106
+ throw error;
107
+ }
108
+ finally {
109
+ setLoading(false);
110
+ }
111
+ }, [apiEndpoint, onError]);
112
+ const list = useCallback(async (type, limit) => {
113
+ return search({ objectTypes: [type], limit });
114
+ }, [search]);
115
+ const refetch = useCallback(async () => {
116
+ await search(initialOptions);
117
+ }, [search, initialOptions]);
118
+ // Fetch on mount if requested
119
+ useEffect(() => {
120
+ if (fetchOnMount) {
121
+ void search(initialOptions);
122
+ }
123
+ }, [fetchOnMount, search, initialOptions]);
124
+ return {
125
+ data,
126
+ error,
127
+ loading,
128
+ search,
129
+ get,
130
+ list,
131
+ refetch,
132
+ };
133
+ }
134
+ //# sourceMappingURL=useCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCatalog.js","sourceRoot":"","sources":["../../../src/react/hooks/useCatalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { MutationState } from '../types.js';
2
+ /**
3
+ * Customer address input
4
+ */
5
+ export interface CustomerAddressInput {
6
+ addressLine1?: string;
7
+ addressLine2?: string;
8
+ locality?: string;
9
+ administrativeDistrictLevel1?: string;
10
+ postalCode?: string;
11
+ country?: string;
12
+ }
13
+ /**
14
+ * Customer creation/update options
15
+ */
16
+ export interface CustomerInput {
17
+ givenName?: string;
18
+ familyName?: string;
19
+ emailAddress?: string;
20
+ phoneNumber?: string;
21
+ companyName?: string;
22
+ nickname?: string;
23
+ note?: string;
24
+ referenceId?: string;
25
+ address?: CustomerAddressInput;
26
+ }
27
+ /**
28
+ * Customer response
29
+ */
30
+ export interface CustomerResponse {
31
+ id: string;
32
+ givenName?: string;
33
+ familyName?: string;
34
+ emailAddress?: string;
35
+ phoneNumber?: string;
36
+ companyName?: string;
37
+ nickname?: string;
38
+ note?: string;
39
+ referenceId?: string;
40
+ address?: CustomerAddressInput;
41
+ createdAt?: string;
42
+ updatedAt?: string;
43
+ }
44
+ /**
45
+ * Options for useCustomers hook
46
+ */
47
+ export interface UseCustomersOptions {
48
+ /** API endpoint for customers (default: /api/customers) */
49
+ apiEndpoint?: string;
50
+ /** Callback on successful operation */
51
+ onSuccess?: (customer: CustomerResponse) => void;
52
+ /** Callback on error */
53
+ onError?: (error: Error) => void;
54
+ }
55
+ /**
56
+ * Return type for useCustomers hook
57
+ */
58
+ export interface UseCustomersReturn extends MutationState<CustomerResponse> {
59
+ /** Create a new customer */
60
+ create: (input: CustomerInput) => Promise<CustomerResponse>;
61
+ /** Get a customer by ID */
62
+ get: (customerId: string) => Promise<CustomerResponse>;
63
+ /** Update a customer */
64
+ update: (customerId: string, input: CustomerInput) => Promise<CustomerResponse>;
65
+ /** Search for customers */
66
+ search: (query: {
67
+ email?: string;
68
+ phone?: string;
69
+ }) => Promise<CustomerResponse[]>;
70
+ /** Reset the hook state */
71
+ reset: () => void;
72
+ }
73
+ /**
74
+ * Hook for managing customers via your backend API
75
+ *
76
+ * @param options - Hook configuration
77
+ * @returns Customer management functions and state
78
+ *
79
+ * @example
80
+ * ```tsx
81
+ * function CustomerForm() {
82
+ * const { create: createCustomer, loading, error, data } = useCustomers({
83
+ * onSuccess: (customer) => console.log('Created:', customer.id),
84
+ * });
85
+ *
86
+ * const handleSubmit = async (formData: CustomerInput) => {
87
+ * await createCustomer({
88
+ * givenName: formData.givenName,
89
+ * familyName: formData.familyName,
90
+ * emailAddress: formData.emailAddress,
91
+ * });
92
+ * };
93
+ *
94
+ * return (
95
+ * <form onSubmit={handleSubmit}>
96
+ * {loading && <p>Creating customer...</p>}
97
+ * {error && <p>Error: {error.message}</p>}
98
+ * {data && <p>Customer created: {data.id}</p>}
99
+ * </form>
100
+ * );
101
+ * }
102
+ * ```
103
+ */
104
+ export declare function useCustomers(options?: UseCustomersOptions): UseCustomersReturn;
105
+ //# sourceMappingURL=useCustomers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCustomers.d.ts","sourceRoot":"","sources":["../../../src/react/hooks/useCustomers.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B,CAAC,EAAE,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,oBAAoB,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjD,wBAAwB;IACxB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,aAAa,CAAC,gBAAgB,CAAC;IACzE,4BAA4B;IAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5D,2BAA2B;IAC3B,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvD,wBAAwB;IACxB,MAAM,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAChF,2BAA2B;IAC3B,MAAM,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACnF,2BAA2B;IAC3B,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CAkKlF"}