@foxy.io/elements 1.25.0-beta.3 → 1.25.0-beta.5

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 (223) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-admin-subscription-card.js +1 -1
  5. package/dist/cdn/foxy-api-browser.js +1 -1
  6. package/dist/cdn/foxy-applied-coupon-code-card.js +1 -1
  7. package/dist/cdn/foxy-applied-coupon-code-form.js +1 -1
  8. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  9. package/dist/cdn/foxy-attribute-card.js +1 -1
  10. package/dist/cdn/foxy-attribute-form.js +1 -1
  11. package/dist/cdn/foxy-billing-address-card.js +1 -1
  12. package/dist/cdn/foxy-cancellation-form.js +1 -1
  13. package/dist/cdn/foxy-cart-card.js +1 -1
  14. package/dist/cdn/foxy-cart-form.js +1 -1
  15. package/dist/cdn/foxy-client-card.js +1 -1
  16. package/dist/cdn/foxy-client-form.js +1 -1
  17. package/dist/cdn/foxy-collection-page.js +1 -1
  18. package/dist/cdn/foxy-collection-pages.js +1 -1
  19. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  20. package/dist/cdn/foxy-coupon-card.js +1 -1
  21. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  22. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  23. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  24. package/dist/cdn/foxy-coupon-form.js +1 -1
  25. package/dist/cdn/foxy-custom-field-card.js +1 -1
  26. package/dist/cdn/foxy-custom-field-form.js +1 -1
  27. package/dist/cdn/foxy-customer-card.js +1 -1
  28. package/dist/cdn/foxy-customer-form.js +1 -1
  29. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  30. package/dist/cdn/foxy-customer-portal.js +3 -3
  31. package/dist/cdn/foxy-customer.js +1 -1
  32. package/dist/cdn/foxy-customers-table.js +1 -1
  33. package/dist/cdn/foxy-discount-builder.js +1 -1
  34. package/dist/cdn/foxy-discount-card.js +1 -1
  35. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  36. package/dist/cdn/foxy-donation.js +1 -1
  37. package/dist/cdn/foxy-downloadable-card.js +1 -1
  38. package/dist/cdn/foxy-downloadable-form.js +1 -1
  39. package/dist/cdn/foxy-email-template-card.js +1 -1
  40. package/dist/cdn/foxy-email-template-form.js +1 -1
  41. package/dist/cdn/foxy-error-entry-card.js +1 -1
  42. package/dist/cdn/foxy-filter-attribute-card.js +1 -1
  43. package/dist/cdn/foxy-filter-attribute-form.js +1 -1
  44. package/dist/cdn/foxy-form-dialog.js +1 -1
  45. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  46. package/dist/cdn/foxy-gift-card-card.js +1 -1
  47. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  48. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  49. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  50. package/dist/cdn/foxy-gift-card-form.js +1 -1
  51. package/dist/cdn/foxy-i18n-editor.js +2 -2
  52. package/dist/cdn/foxy-i18n.js +1 -1
  53. package/dist/cdn/foxy-integration-card.js +1 -1
  54. package/dist/cdn/foxy-integration-form.js +1 -1
  55. package/dist/cdn/foxy-item-card.js +1 -1
  56. package/dist/cdn/foxy-item-category-card.js +1 -1
  57. package/dist/cdn/foxy-item-category-form.js +1 -1
  58. package/dist/cdn/foxy-item-form.js +4 -4
  59. package/dist/cdn/foxy-item-option-card.js +1 -1
  60. package/dist/cdn/foxy-item-option-form.js +1 -1
  61. package/dist/cdn/foxy-items-form.js +1 -1
  62. package/dist/cdn/foxy-native-integration-card.js +1 -1
  63. package/dist/cdn/foxy-native-integration-form.js +1 -1
  64. package/dist/cdn/foxy-pagination.js +1 -1
  65. package/dist/cdn/foxy-passkey-card.js +1 -1
  66. package/dist/cdn/foxy-passkey-form.js +1 -1
  67. package/dist/cdn/foxy-payment-card.js +1 -1
  68. package/dist/cdn/foxy-payment-method-card.js +1 -1
  69. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  70. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  71. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  72. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  73. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  74. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  75. package/dist/cdn/foxy-query-builder.js +1 -1
  76. package/dist/cdn/foxy-report-form.js +5 -5
  77. package/dist/cdn/foxy-reports-table.js +1 -1
  78. package/dist/cdn/foxy-shipment-card.js +1 -1
  79. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  80. package/dist/cdn/foxy-sign-in-form.js +1 -1
  81. package/dist/cdn/foxy-spinner.js +2 -2
  82. package/dist/cdn/foxy-store-card.js +1 -1
  83. package/dist/cdn/foxy-store-form.js +1 -1
  84. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  85. package/dist/cdn/foxy-subscription-card.js +1 -1
  86. package/dist/cdn/foxy-subscription-form.js +2 -96
  87. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  88. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  89. package/dist/cdn/foxy-table.js +1 -1
  90. package/dist/cdn/foxy-tax-card.js +1 -1
  91. package/dist/cdn/foxy-tax-form.js +1 -1
  92. package/dist/cdn/foxy-template-config-form.js +1 -1
  93. package/dist/cdn/foxy-template-form.js +1 -1
  94. package/dist/cdn/foxy-template-set-card.js +1 -1
  95. package/dist/cdn/foxy-template-set-form.js +1 -1
  96. package/dist/cdn/foxy-transaction-card.js +95 -1
  97. package/dist/cdn/foxy-transaction.js +1 -1
  98. package/dist/cdn/foxy-transactions-table.js +7 -7
  99. package/dist/cdn/foxy-user-card.js +1 -1
  100. package/dist/cdn/foxy-user-form.js +1 -1
  101. package/dist/cdn/foxy-users-table.js +1 -1
  102. package/dist/cdn/foxy-webhook-card.js +1 -1
  103. package/dist/cdn/foxy-webhook-form.js +1 -1
  104. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  105. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  106. package/dist/cdn/{shared-b113467e.js → shared-00c2793e.js} +1 -1
  107. package/dist/cdn/{shared-15dfa16d.js → shared-029816d7.js} +1 -1
  108. package/dist/cdn/{shared-61b1fd60.js → shared-02bc0368.js} +1 -1
  109. package/dist/cdn/{shared-87f55237.js → shared-174f37e9.js} +1 -1
  110. package/dist/cdn/{shared-3f3903d4.js → shared-20ba4cdc.js} +1 -1
  111. package/dist/cdn/{shared-06916671.js → shared-268571df.js} +1 -1
  112. package/dist/cdn/{shared-8d99b885.js → shared-2b27e2e7.js} +1 -1
  113. package/dist/cdn/{shared-979e24ec.js → shared-2bdc99f4.js} +1 -1
  114. package/dist/cdn/{shared-3d95605f.js → shared-2c8c4b43.js} +3 -3
  115. package/dist/cdn/shared-2cf08dd4.js +1 -0
  116. package/dist/cdn/{shared-f8d1abc9.js → shared-2f09d4df.js} +4 -4
  117. package/dist/cdn/{shared-54cbd346.js → shared-30d00b64.js} +1 -1
  118. package/dist/cdn/{shared-d9f4138b.js → shared-32e736eb.js} +1 -1
  119. package/dist/cdn/{shared-a1d39ddd.js → shared-43f449bb.js} +1 -1
  120. package/dist/cdn/{shared-87824001.js → shared-4462dc70.js} +2 -2
  121. package/dist/cdn/{shared-02f8245a.js → shared-4aa4d980.js} +1 -1
  122. package/dist/cdn/{shared-63d11888.js → shared-4c124efc.js} +7 -7
  123. package/dist/cdn/shared-4c650e5c.js +1 -0
  124. package/dist/cdn/{shared-b984ab7c.js → shared-4e59fd48.js} +16 -16
  125. package/dist/cdn/{shared-69c3549d.js → shared-54b0e48f.js} +1 -1
  126. package/dist/cdn/{shared-ecd5eb1b.js → shared-5fa697c4.js} +1 -1
  127. package/dist/cdn/shared-61ade33e.js +6 -0
  128. package/dist/cdn/{shared-3bd99d11.js → shared-6a9ae42e.js} +1 -1
  129. package/dist/cdn/{shared-a95067d6.js → shared-76400719.js} +1 -1
  130. package/dist/cdn/{shared-ceec93fa.js → shared-7dd17943.js} +1 -1
  131. package/dist/cdn/{shared-ea1ab750.js → shared-7deff07c.js} +1 -1
  132. package/dist/cdn/{shared-fad099e6.js → shared-7e1953f5.js} +1 -1
  133. package/dist/cdn/shared-8201d0b5.js +1 -0
  134. package/dist/cdn/{shared-29e74661.js → shared-8952aeac.js} +1 -1
  135. package/dist/cdn/{shared-320fadbf.js → shared-896982f9.js} +1 -1
  136. package/dist/cdn/{shared-a5a03f4f.js → shared-8d8bed82.js} +1 -1
  137. package/dist/cdn/{shared-92dd9964.js → shared-99c0ae04.js} +1 -1
  138. package/dist/cdn/{shared-6ffa9f84.js → shared-9c08cfab.js} +1 -1
  139. package/dist/cdn/{shared-0ffe26d8.js → shared-9df8f842.js} +2 -2
  140. package/dist/cdn/{shared-0961f769.js → shared-a8dc23f1.js} +1 -1
  141. package/dist/cdn/{shared-3fee360a.js → shared-ac7c5a5e.js} +14 -14
  142. package/dist/cdn/{shared-5db2fec0.js → shared-ad34b6db.js} +1 -1
  143. package/dist/cdn/{shared-a1be9c27.js → shared-b1b8ea67.js} +1 -1
  144. package/dist/cdn/{shared-85712eed.js → shared-b509bc2c.js} +1 -1
  145. package/dist/cdn/{shared-de8bf756.js → shared-bc0d8d01.js} +2 -2
  146. package/dist/cdn/{shared-4105aacf.js → shared-be7bfbb0.js} +1 -1
  147. package/dist/cdn/{shared-745a575c.js → shared-bed7aae1.js} +1 -1
  148. package/dist/cdn/{shared-5291bdca.js → shared-c7b3d22b.js} +3 -3
  149. package/dist/cdn/{shared-264c82b8.js → shared-c9ba1b64.js} +3 -3
  150. package/dist/cdn/{shared-c43cd1fa.js → shared-ca4c5f0f.js} +1 -1
  151. package/dist/cdn/{shared-efbd62cb.js → shared-cdd2358f.js} +4 -4
  152. package/dist/cdn/{shared-d8ca5c87.js → shared-d21fa1a6.js} +1 -1
  153. package/dist/cdn/{shared-835cf735.js → shared-d57fac94.js} +1 -1
  154. package/dist/cdn/{shared-d600815d.js → shared-dbadd9cf.js} +1 -1
  155. package/dist/cdn/{shared-452e38da.js → shared-e39807f8.js} +1 -1
  156. package/dist/cdn/{shared-25edf241.js → shared-e83f2983.js} +1 -1
  157. package/dist/cdn/{shared-d1265ca0.js → shared-e91453df.js} +1 -1
  158. package/dist/cdn/{shared-5f1f0d8f.js → shared-ea527e98.js} +1 -1
  159. package/dist/cdn/shared-f9a3d1ff.js +6 -0
  160. package/dist/cdn/{shared-324665fd.js → shared-fa4f6cd3.js} +1 -1
  161. package/dist/cdn/shared-fc15a882.js +1 -0
  162. package/dist/cdn/{shared-2c92c192.js → shared-ff8ca16b.js} +1 -1
  163. package/dist/cdn/{shared-6d0be1e4.js → shared-ff9791cf.js} +1 -1
  164. package/dist/cdn/translations/cart-form/en.json +7 -6
  165. package/dist/cdn/translations/customer/en.json +23 -14
  166. package/dist/cdn/translations/customer-portal/en.json +22 -13
  167. package/dist/cdn/translations/item-card/en.json +1 -0
  168. package/dist/cdn/translations/item-form/en.json +2 -2
  169. package/dist/cdn/translations/payments-api-payment-preset-form/en.json +2 -2
  170. package/dist/cdn/translations/shipment-card/en.json +1 -0
  171. package/dist/cdn/translations/subscription-form/en.json +23 -14
  172. package/dist/cdn/translations/transaction/en.json +27 -26
  173. package/dist/cdn/translations/transaction-card/en.json +22 -22
  174. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +28 -23
  175. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  176. package/dist/elements/internal/InternalControl/InternalControl.js +2 -1
  177. package/dist/elements/internal/InternalControl/InternalControl.js.map +1 -1
  178. package/dist/elements/private/Dialog/Dialog.js +7 -1
  179. package/dist/elements/private/Dialog/Dialog.js.map +1 -1
  180. package/dist/elements/public/BillingAddressCard/BillingAddressCard.d.ts +2 -1
  181. package/dist/elements/public/BillingAddressCard/BillingAddressCard.js.map +1 -1
  182. package/dist/elements/public/CouponForm/types.d.ts +3 -7
  183. package/dist/elements/public/CouponForm/types.js.map +1 -1
  184. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +2 -2
  185. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
  186. package/dist/elements/public/ItemCard/ItemCard.js +4 -2
  187. package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
  188. package/dist/elements/public/ItemsForm/private/Item.js +1 -0
  189. package/dist/elements/public/ItemsForm/private/Item.js.map +1 -1
  190. package/dist/elements/public/NativeIntegrationForm/NativeIntegrationForm.js.map +1 -1
  191. package/dist/elements/public/PaymentCard/PaymentCard.js.map +1 -1
  192. package/dist/elements/public/PaymentsApi/api/types.d.ts +2 -0
  193. package/dist/elements/public/PaymentsApi/api/types.js.map +1 -1
  194. package/dist/elements/public/ShipmentCard/ShipmentCard.js +5 -2
  195. package/dist/elements/public/ShipmentCard/ShipmentCard.js.map +1 -1
  196. package/dist/elements/public/SubscriptionCard/SubscriptionCard.js +2 -2
  197. package/dist/elements/public/SubscriptionCard/SubscriptionCard.js.map +1 -1
  198. package/dist/elements/public/SubscriptionCard/types.d.ts +2 -2
  199. package/dist/elements/public/SubscriptionCard/types.js.map +1 -1
  200. package/dist/elements/public/Transaction/Transaction.d.ts +2 -3
  201. package/dist/elements/public/Transaction/Transaction.js +129 -127
  202. package/dist/elements/public/Transaction/Transaction.js.map +1 -1
  203. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/InternalTransactionSummaryControl.js +6 -4
  204. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/InternalTransactionSummaryControl.js.map +1 -1
  205. package/dist/elements/public/Transaction/types.d.ts +4 -17
  206. package/dist/elements/public/Transaction/types.js.map +1 -1
  207. package/dist/elements/public/TransactionCard/TransactionCard.d.ts +8 -10
  208. package/dist/elements/public/TransactionCard/TransactionCard.js +71 -51
  209. package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
  210. package/dist/elements/public/TransactionCard/index.d.ts +2 -1
  211. package/dist/elements/public/TransactionCard/index.js +2 -1
  212. package/dist/elements/public/TransactionCard/index.js.map +1 -1
  213. package/dist/elements/public/TransactionCard/types.d.ts +8 -2
  214. package/dist/elements/public/TransactionCard/types.js.map +1 -1
  215. package/dist/mixins/themeable.js +4 -0
  216. package/dist/mixins/themeable.js.map +1 -1
  217. package/package.json +2 -2
  218. package/dist/cdn/shared-4761cbda.js +0 -1
  219. package/dist/cdn/shared-87142858.js +0 -1
  220. package/dist/cdn/shared-e9276306.js +0 -1
  221. package/dist/cdn/shared-eacc4539.js +0 -1
  222. package/dist/cdn/shared-ec59505f.js +0 -12
  223. package/dist/cdn/shared-f3cd4d07.js +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Item.js","sourceRoot":"","sources":["../../../../../src/elements/public/ItemsForm/private/Item.ts"],"names":[],"mappings":"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","sourcesContent":["import '@vaadin/vaadin-text-field/vaadin-integer-field';\n\nimport { CSSResultArray, PropertyDeclarations, TemplateResult, css, html } from 'lit-element';\nimport { ErrorScreen, I18N } from '../../../private/index';\nimport { ImageDescription, ItemInterface } from '../types';\n\nimport { Preview } from './Preview';\nimport { SignableFields } from './SignableFields';\n\n/**\n * This component allows a user to configure an item.\n *\n * The item may be configured using HTML properties or a JS object.\n *\n * @csspart picture - Image of the product in preview stack (for single products) or grid (for bundles).\n * @csspart item - The root element inside of the shadow dom.\n */\nexport class Item extends SignableFields {\n // A list of item properties as defined in Foxy Cart Documentation\n\n /** @readonly */\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n --quantity-width: 6.5rem;\n --preview-size: 5.5rem;\n --threshold: 20rem;\n }\n\n .min-w-description::before {\n content: '';\n width: var(--threshold);\n display: block;\n overflow: hidden;\n }\n\n .ml-description {\n --min-width: calc(var(--threshold) + var(--preview-size) + var(--lumo-space-l));\n --free-space: calc(100% - var(--min-width));\n --max-margin-left: calc(var(--preview-size) + var(--lumo-space-l));\n --final-margin-left: clamp(0rem, var(--free-space) * 999999999, var(--max-margin-left));\n margin-left: var(--final-margin-left);\n }\n\n .mr-quantity {\n --min-width: var(--threshold);\n --free-space: calc(100% - var(--min-width));\n --max-margin-right: calc(var(--quantity-width) + var(--lumo-space-l));\n --final-margin-right: clamp(0rem, var(--free-space) * 999999999, var(--max-margin-right));\n margin-right: var(--final-margin-right);\n }\n\n :host([data-bundled]:not(:last-of-type)) .separator::after {\n content: ' ';\n display: block;\n position: absolute;\n width: 100vw;\n border-bottom: solid thin var(--lumo-shade-10pct);\n left: 0;\n bottom: 0;\n }\n\n .w-quantity {\n width: var(--quantity-width);\n }\n\n .w-preview {\n width: var(--preview-size);\n }\n\n .h-preview {\n height: var(--preview-size);\n }\n `,\n ];\n }\n\n /** @readonly */\n public static get scopedElements(): Record<string, unknown> {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'x-error-screen': ErrorScreen,\n 'x-preview': Preview,\n 'x-i18n': I18N,\n };\n }\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __modified: {},\n readonly: { type: Boolean, reflect: true },\n currency: { type: String },\n category: { type: String },\n code: { type: String, reflect: true },\n expires: { type: String },\n height: { type: Number },\n image: { type: String },\n length: { type: Number },\n name: { type: String },\n parent_code: { type: String },\n price: { type: Number },\n quantity: { type: Number, reflect: true },\n quantity_max: { type: Number },\n quantity_min: { type: String },\n shipto: { type: String },\n total: { type: Number, reflect: true, attribute: 'total' },\n url: { type: String },\n value: { type: Object },\n weight: { type: Number },\n width: { type: Number },\n __childPrices: {},\n __childrenCount: {},\n __images: {},\n alt: { type: String },\n isChildItem: { type: Boolean, reflect: true, attribute: 'data-bundled' },\n isItem: { type: Boolean, reflect: true, attribute: 'data-item' },\n open: { type: Object },\n pid: { type: Number, reflect: true },\n items: { type: Array },\n };\n }\n\n public readonly rel = 'product_item';\n\n /**\n * **Required** the name of the item.\n *\n * **Example:** `\"Dog food\"`\n */\n public name?: string;\n\n /**\n * **Required** the price of a unit of this item\n *\n * **Example:** `10`\n */\n public price?: number;\n\n /**\n * Makes quantity input readonly.\n */\n public readonly = false;\n\n /**\n * Optional an image url to be displayed in the form.\n */\n public image?: string;\n\n /**\n * Optional the alt text for the image\n */\n public alt?: string;\n\n /**\n * Optional an image url to be displayed in the foxy cart once the custumer reaches the cart.\n */\n public url?: string;\n\n /**\n * Optional item code. This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"ISBN 978-0-12-345678-9\"`\n */\n public code?: string | number;\n\n /**\n * Optional parent code. This property affects cart UI only.\n * It causes Foxy Cart to recognize the parent-child relationship between two items.\n *\n * Nested items set this property automatically.\n *\n * **Example:** `\"ISBN 978-0-12-345678-9\"`\n */\n public parent_code?: string | number;\n\n /**\n * **Required** The quantity of this item in the cart.\n */\n public quantity = 0;\n\n /**\n * Optional quantity max. The maximum number of items of these to be added.\n */\n public quantity_max?: number;\n\n /**\n * Optional quantity min. The minimum number of items of these to be added.\n */\n public quantity_min?: number;\n\n /**\n * Optional category. Sets the category this item is in.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"heavy\"`\n */\n public category?: string;\n\n /**\n * Optional expires. Sets the expiration time of this item.\n *\n * Advanced usage only: This property affects cart UI only.\n * This web component will not react to this property.\n *\n * The item cannot be purchased after expiration, but if it is part of a\n * subscription, it remains in the subscription as long as it stands.\n *\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `15`\n */\n public expires?: string;\n\n /**\n * Optional per item weight. This property affects cart UI only.\n */\n public weight?: number;\n\n /**\n * Optional. Specify a ship-to address for a specific item.\n *\n * Advanced usage only: This property affects cart UI only.\n * This element does not provide any means for the user to specify this property.\n */\n public shipto?: string;\n\n /**\n * Optional length. This property affects cart UI only.\n */\n public length?: number;\n\n /**\n * Optional width. This property affects cart UI only.\n */\n public width?: number;\n\n /**\n * Optional height. This property affects cart UI only.\n */\n public height?: number;\n\n /**\n * The total price of this item.\n *\n * It takes into account child items and the quantity.\n */\n public total?: number = this.__computeTotalPrice();\n\n /**\n * 3-letter lowercase currency code.\n * It is provided by the form if not set.\n *\n * **Example:** `\"usd\"`\n */\n public currency = '';\n\n /** A boolean indicating that this element is a item **/\n protected isItem = true;\n\n /** Boolean indicating that this item is a child item */\n protected isChildItem = false;\n\n /**\n * A unique id set to the item. Advanced usage only.\n */\n public readonly pid: number = Item.__newId();\n\n // A list of all existing ids to guarantee unicity\n private static __existingIds: number[] = [];\n\n private __childItemsObserver?: MutationObserver;\n\n private __modified = false;\n\n private __childPrices: number[] = [];\n\n private __images: ImageDescription[] = [];\n\n private __childrenCount = 0;\n\n private __itemDescription = '';\n\n private __handleQuantity = {\n handleEvent: (ev: Event) => {\n const newValue = Number((ev.target as HTMLInputElement).value);\n this.quantity = newValue;\n this.__modified = true;\n this.__images = ([this.getImageDescription()] as ImageDescription[]).concat(\n this.__images.slice(1, this.__images.length)\n );\n },\n };\n\n public constructor() {\n super('items-form');\n this.__childItemsObserver = new MutationObserver(this.__observeItems.bind(this));\n this.__childItemsObserver.observe(this, {\n childList: true,\n attributes: false,\n subtree: true,\n });\n this.updateComplete.then(() => {\n this.__setCode();\n this.__acknowledgeChildItems();\n this.__changedChildItem();\n if (!this.__isValid()) {\n console.error('Invalid item', this.value);\n }\n });\n }\n\n /**\n * Each child item is an object that can have any of the public properties of this element.\n * Child elements will be created accordingly.\n */\n public get items(): ItemInterface[] {\n const items: ItemInterface[] = [];\n this.__onEachChildItem([i => items.push(i.value)]);\n return items;\n }\n\n /**\n * Creates child elements from ItemInterface[]\n */\n public set items(value: ItemInterface[]) {\n this.__createItems(value);\n }\n\n public get value(): ItemInterface {\n const r: Partial<Record<keyof ItemInterface, unknown>> = {};\n for (let i = 0; i < this.attributes.length; i++) {\n r[this.attributes[i].name] = this.attributes[i].value;\n }\n r.items = this.items;\n return r as ItemInterface;\n }\n\n public set value(v: ItemInterface) {\n this.__itemDescription = '';\n for (const k in v) {\n let attrValue = '';\n if (k == 'description') {\n this.__itemDescription = v[k] as string;\n continue;\n }\n if (typeof v[k as keyof ItemInterface] == 'object') {\n attrValue = JSON.stringify(v[k as keyof ItemInterface]);\n } else {\n const key = k as keyof ItemInterface;\n if ((v[key] && v[key] !== 'undefined') || v[key] === 0) {\n attrValue = v[k as keyof ItemInterface]!.toString();\n }\n }\n this.setAttribute(k, v[k as keyof ItemInterface] ? attrValue : '');\n }\n }\n\n public updated(changedProperties: Map<string, string>): void {\n changedProperties.forEach((oldValue, prop) => {\n if (prop == '__itemDescription' || prop == 'isChildItem') {\n this.__updateDescriptionEl();\n }\n });\n this.__setTotalPrice();\n this.dispatchEvent(new Event('change'));\n }\n\n public render(): TemplateResult {\n if (!this.__isValid()) {\n return html`<x-error-screen type=\"setup_needed\" class=\"relative\"></x-error-screen>`;\n }\n\n const removedStyle = this.quantity ? '' : 'removed opacity-50';\n const sharedStyle = `font-lumo text-body text-s leading-m transition duration-100 ${removedStyle}`;\n\n if (this.isChildItem) {\n return html`\n <article\n part=\"item\"\n class=\"py-s w-full relative separator item-summary flex justify-between ${sharedStyle}\"\n >\n <div class=\"description flex-1\">\n <h1 class=\"text-header font-medium\">${this.name}</h1>\n <section class=\"description text-secondary\">\n <slot></slot>\n </section>\n </div>\n\n ${this.quantity < 2\n ? ''\n : html`\n <section class=\"quantity font-medium text-tertiary whitespace-nowrap\">\n ${this._t('item.items', { quantity: this.quantity })}\n </section>\n `}\n </article>\n `;\n } else {\n const numericItemPrice = (this.price ?? 0) + this.__childPrices.reduce((p, c) => p + c, 0);\n const totalPrice = this.__translateAmount(numericItemPrice * this.quantity);\n const itemPrice = this.__translateAmount(numericItemPrice);\n\n return html`\n <article\n part=\"item\"\n class=\"p-l relative item ${sharedStyle} ${this.__modified ? 'modified' : ''}\"\n >\n <x-preview\n class=\"preview float-left w-preview h-preview mr-l mb-l\"\n exportparts=\"picture\"\n .image=${this.image}\n .quantity=${this.quantity}\n .items=${[...this.querySelectorAll('[data-bundled]')].map(child => ({\n quantity: (child as Item).quantity,\n image: (child as Item).image ?? '',\n }))}\n >\n </x-preview>\n\n <section class=\"description min-w-description ml-description\">\n <h1 class=\"text-header font-medium text-l leading-none mr-quantity mb-s\">\n ${this.name}\n </h1>\n\n <div class=\"item-description text-secondary mr-quantity mb-s\">\n <slot></slot>\n </div>\n\n <div class=\"child-items mb-s\">\n <slot name=\"items\"></slot>\n </div>\n\n ${itemPrice ? html`<div class=\"font-medium price text-l\">${itemPrice}</div>` : ''}\n </section>\n\n <section class=\"quantity w-quantity absolute top-0 right-0 m-l\">\n <vaadin-integer-field\n class=\"w-full p-0\"\n name=\"quantity\"\n @change=${this.__handleQuantity}\n value=\"${this.quantity}\"\n min=\"0\"\n has-controls\n ?readonly=${this.readonly}\n >\n </vaadin-integer-field>\n\n ${this.quantity > 1\n ? html`\n <x-i18n\n .ns=${this.ns}\n .lang=${this.lang}\n .opts=${{ amount: totalPrice }}\n class=\"price-total text-secondary text-xs text-center block mt-xs\"\n key=\"price.total\"\n >\n </x-i18n>\n `\n : ''}\n </section>\n </article>\n `;\n }\n }\n\n public getImageDescription(): ImageDescription {\n return {\n src: this.image,\n alt: this.alt,\n quantity: this.quantity,\n };\n }\n\n /**\n * Items have their signed names prefixed with their id.\n *\n * @argument fieldName the name of the field to get the signed version.\n * @argument open whether this field is editable by the user.\n * @returns signed version of the name, prefixed with the item id.\n */\n public signedName(fieldName: string): string {\n const signed = super.signedName(fieldName);\n return `${this.pid.toString()}:${signed}`;\n }\n\n /**\n * Creates a new unique id to be used in the form\n *\n * Ids are used to distinguish different items in a single form.\n * Ids are prepended to fields names to allow Foxy Cart to know to what\n * item a particular field relates.\n *\n * @return number the newly created id\n */\n private static __newId(): number {\n // Get the maximum value\n const newId = Item.__existingIds.reduce((accum, curr) => (curr > accum ? curr : accum), 0) + 1;\n Item.__existingIds.push(newId);\n return newId;\n }\n\n private __updateDescriptionEl() {\n if (this.__itemDescription) {\n let descEl: HTMLElement | null = this.shadowRoot!.querySelector('data-item-description');\n if (!descEl) {\n descEl = document.createElement('p') as HTMLElement;\n descEl.dataset.itemDescription = 'true';\n this.__addSlottedEl(descEl);\n }\n descEl.innerText = this.__itemDescription;\n } else {\n const descEl: HTMLElement | null = this.shadowRoot!.querySelector('data-item-description');\n if (descEl) descEl.remove();\n }\n }\n\n /**\n * Add an element to the default slot\n */\n private __addSlottedEl(el: HTMLElement) {\n const slot = this.shadowRoot!.querySelector('article');\n if (slot) {\n slot!.appendChild(el);\n }\n }\n\n /**\n * Creates a code if none is provided by the user\n */\n private __setCode(): void {\n if (!this.code) {\n this.code = `RAND${Math.random()}`;\n }\n }\n\n /**\n * Create child items from items field.\n */\n private __createItems(valuesArray: ItemInterface[]): void {\n valuesArray.forEach(p => {\n // Use a reference to the constructor of the instance in order to avoid issues in tests\n const item = document.createElement(this.tagName) as Item;\n item.value = p;\n item.currency = this.currency;\n item.__computeTotalPrice();\n this.__acknowledgeItem(item);\n this.appendChild(item);\n });\n }\n\n private __setTotalPrice(): void {\n this.total = this.__computeTotalPrice();\n }\n\n /**\n * The price of the total qty of each of the child items\n */\n private __computeTotalPrice(): number {\n if (!this.__childPrices) {\n if (!this.price) return 0;\n return this.price * this.quantity;\n }\n let myPrice = 0;\n this.__childPrices.forEach(p => {\n myPrice += p;\n });\n myPrice += this.price!;\n myPrice *= this.quantity;\n return myPrice;\n }\n\n /**\n * Constraints Items must eventually adhere to.\n **/\n private __isValid(): boolean {\n const error = [];\n if (!this.name || !this.name.length) {\n error.push('The name attribute of an item is required.');\n }\n if (!this.price && this.price !== 0) {\n error.push('The price attribute of an item is required.');\n }\n if (this.price && this.price! < 0) {\n error.push('Item added with negative price.');\n }\n if (this.quantity_min && this.quantity && this.quantity < this.quantity_min) {\n error.push('Quantity amount is less than minimum quantity.');\n }\n if (this.quantity_max && this.quantity && this.quantity > this.quantity_max) {\n error.push('Quantity amount is more than maximum quantity.');\n }\n console.error(...error);\n return !error.length;\n }\n\n private __translateAmount(amount: number) {\n if (!this.currency) {\n return '';\n }\n return amount.toLocaleString(this.lang, {\n minimumFractionDigits: 2,\n currency: this.currency,\n style: 'currency',\n });\n }\n\n private __observeItems(mutationList: MutationRecord[]): void {\n mutationList.forEach(m => {\n if (m.type == 'childList') {\n m.addedNodes.forEach(n => {\n if (n.nodeType === Node.DOCUMENT_NODE) {\n this.__acknowledgeItem(n as Item);\n }\n });\n }\n });\n this.__setTotalPrice();\n }\n\n private __acknowledgeChildItems() {\n this.shadowRoot\n ?.querySelectorAll('[data-item]')\n .forEach(e => this.__acknowledgeItem(e as Item));\n this.querySelectorAll('[data-item]').forEach(e => this.__acknowledgeItem(e as Item));\n }\n\n private __acknowledgeItem(e: Item): void {\n e.addEventListener('change', this.__changedChildItem.bind(this));\n e.currency = this.currency;\n e.isItem = false;\n e.isChildItem = true;\n if (this.code) {\n e.parent_code = this.code;\n }\n }\n\n /** React to changes in child items */\n private __changedChildItem() {\n // Reset child attributes lists\n const newItemPrices: number[] = [];\n const newItemImages: ImageDescription[] = [];\n let newChildrenCount = 0;\n\n // Create collection functions\n const collectPrices = (p: Item) => {\n if (p.total !== undefined) {\n newItemPrices.push(p.total);\n }\n };\n const collectImages = (p: Item) => {\n newItemImages.push(p.getImageDescription());\n };\n const countChildren = () => (newChildrenCount += 1);\n // Collect information of every child\n this.__onEachChildItem([collectPrices, collectImages, countChildren]);\n\n if (this.image && newItemImages.length === 0) {\n newItemImages.push(this.getImageDescription());\n }\n\n // Update atributes regarding child items\n this.__childPrices = newItemPrices;\n this.__images = newItemImages;\n this.__childrenCount = newChildrenCount;\n this.__setTotalPrice();\n }\n\n /** Execute a list of actions against all child items */\n private __onEachChildItem(actions: ((c: Item) => void)[]) {\n const myChildItems = this.querySelectorAll('[data-bundled]');\n for (const c of myChildItems) {\n for (const actOn of actions) {\n actOn(c as Item);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Item.js","sourceRoot":"","sources":["../../../../../src/elements/public/ItemsForm/private/Item.ts"],"names":[],"mappings":"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","sourcesContent":["import '@vaadin/vaadin-text-field/vaadin-integer-field';\n\nimport { CSSResultArray, PropertyDeclarations, TemplateResult, css, html } from 'lit-element';\nimport { ErrorScreen, I18N } from '../../../private/index';\nimport { ImageDescription, ItemInterface } from '../types';\n\nimport { Preview } from './Preview';\nimport { SignableFields } from './SignableFields';\n\n/**\n * This component allows a user to configure an item.\n *\n * The item may be configured using HTML properties or a JS object.\n *\n * @csspart picture - Image of the product in preview stack (for single products) or grid (for bundles).\n * @csspart item - The root element inside of the shadow dom.\n */\nexport class Item extends SignableFields {\n // A list of item properties as defined in Foxy Cart Documentation\n\n /** @readonly */\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n --quantity-width: 6.5rem;\n --preview-size: 5.5rem;\n --threshold: 20rem;\n }\n\n .min-w-description::before {\n content: '';\n width: var(--threshold);\n display: block;\n overflow: hidden;\n }\n\n .ml-description {\n --min-width: calc(var(--threshold) + var(--preview-size) + var(--lumo-space-l));\n --free-space: calc(100% - var(--min-width));\n --max-margin-left: calc(var(--preview-size) + var(--lumo-space-l));\n --final-margin-left: clamp(0rem, var(--free-space) * 999999999, var(--max-margin-left));\n margin-left: var(--final-margin-left);\n }\n\n .mr-quantity {\n --min-width: var(--threshold);\n --free-space: calc(100% - var(--min-width));\n --max-margin-right: calc(var(--quantity-width) + var(--lumo-space-l));\n --final-margin-right: clamp(0rem, var(--free-space) * 999999999, var(--max-margin-right));\n margin-right: var(--final-margin-right);\n }\n\n :host([data-bundled]:not(:last-of-type)) .separator::after {\n content: ' ';\n display: block;\n position: absolute;\n width: 100vw;\n border-bottom: solid thin var(--lumo-shade-10pct);\n left: 0;\n bottom: 0;\n }\n\n .w-quantity {\n width: var(--quantity-width);\n }\n\n .w-preview {\n width: var(--preview-size);\n }\n\n .h-preview {\n height: var(--preview-size);\n }\n `,\n ];\n }\n\n /** @readonly */\n public static get scopedElements(): Record<string, unknown> {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'x-error-screen': ErrorScreen,\n 'x-preview': Preview,\n 'x-i18n': I18N,\n };\n }\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __modified: {},\n readonly: { type: Boolean, reflect: true },\n currency: { type: String },\n category: { type: String },\n code: { type: String, reflect: true },\n expires: { type: String },\n height: { type: Number },\n image: { type: String },\n length: { type: Number },\n name: { type: String },\n parent_code: { type: String },\n price: { type: Number },\n quantity: { type: Number, reflect: true },\n quantity_max: { type: Number },\n quantity_min: { type: String },\n shipto: { type: String },\n total: { type: Number, reflect: true, attribute: 'total' },\n url: { type: String },\n value: { type: Object },\n weight: { type: Number },\n width: { type: Number },\n __childPrices: {},\n __childrenCount: {},\n __images: {},\n alt: { type: String },\n isChildItem: { type: Boolean, reflect: true, attribute: 'data-bundled' },\n isItem: { type: Boolean, reflect: true, attribute: 'data-item' },\n open: { type: Object },\n pid: { type: Number, reflect: true },\n items: { type: Array },\n };\n }\n\n public readonly rel = 'product_item';\n\n /**\n * **Required** the name of the item.\n *\n * **Example:** `\"Dog food\"`\n */\n public name?: string;\n\n /**\n * **Required** the price of a unit of this item\n *\n * **Example:** `10`\n */\n public price?: number;\n\n /**\n * Makes quantity input readonly.\n */\n public readonly = false;\n\n /**\n * Optional an image url to be displayed in the form.\n */\n public image?: string;\n\n /**\n * Optional the alt text for the image\n */\n public alt?: string;\n\n /**\n * Optional an image url to be displayed in the foxy cart once the custumer reaches the cart.\n */\n public url?: string;\n\n /**\n * Optional item code. This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"ISBN 978-0-12-345678-9\"`\n */\n public code?: string | number;\n\n /**\n * Optional parent code. This property affects cart UI only.\n * It causes Foxy Cart to recognize the parent-child relationship between two items.\n *\n * Nested items set this property automatically.\n *\n * **Example:** `\"ISBN 978-0-12-345678-9\"`\n */\n public parent_code?: string | number;\n\n /**\n * **Required** The quantity of this item in the cart.\n */\n public quantity = 0;\n\n /**\n * Optional quantity max. The maximum number of items of these to be added.\n */\n public quantity_max?: number;\n\n /**\n * Optional quantity min. The minimum number of items of these to be added.\n */\n public quantity_min?: number;\n\n /**\n * Optional category. Sets the category this item is in.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"heavy\"`\n */\n public category?: string;\n\n /**\n * Optional expires. Sets the expiration time of this item.\n *\n * Advanced usage only: This property affects cart UI only.\n * This web component will not react to this property.\n *\n * The item cannot be purchased after expiration, but if it is part of a\n * subscription, it remains in the subscription as long as it stands.\n *\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `15`\n */\n public expires?: string;\n\n /**\n * Optional per item weight. This property affects cart UI only.\n */\n public weight?: number;\n\n /**\n * Optional. Specify a ship-to address for a specific item.\n *\n * Advanced usage only: This property affects cart UI only.\n * This element does not provide any means for the user to specify this property.\n */\n public shipto?: string;\n\n /**\n * Optional length. This property affects cart UI only.\n */\n public length?: number;\n\n /**\n * Optional width. This property affects cart UI only.\n */\n public width?: number;\n\n /**\n * Optional height. This property affects cart UI only.\n */\n public height?: number;\n\n /**\n * The total price of this item.\n *\n * It takes into account child items and the quantity.\n */\n public total?: number = this.__computeTotalPrice();\n\n /**\n * 3-letter lowercase currency code.\n * It is provided by the form if not set.\n *\n * **Example:** `\"usd\"`\n */\n public currency = '';\n\n /** A boolean indicating that this element is a item **/\n protected isItem = true;\n\n /** Boolean indicating that this item is a child item */\n protected isChildItem = false;\n\n /**\n * A unique id set to the item. Advanced usage only.\n */\n public readonly pid: number = Item.__newId();\n\n // A list of all existing ids to guarantee unicity\n private static __existingIds: number[] = [];\n\n private __childItemsObserver?: MutationObserver;\n\n private __modified = false;\n\n private __childPrices: number[] = [];\n\n private __images: ImageDescription[] = [];\n\n private __childrenCount = 0;\n\n private __itemDescription = '';\n\n private __handleQuantity = {\n handleEvent: (ev: Event) => {\n const newValue = Number((ev.target as HTMLInputElement).value);\n this.quantity = newValue;\n this.__modified = true;\n this.__images = ([this.getImageDescription()] as ImageDescription[]).concat(\n this.__images.slice(1, this.__images.length)\n );\n },\n };\n\n public constructor() {\n super('items-form');\n this.__childItemsObserver = new MutationObserver(this.__observeItems.bind(this));\n this.__childItemsObserver.observe(this, {\n childList: true,\n attributes: false,\n subtree: true,\n });\n this.updateComplete.then(() => {\n this.__setCode();\n this.__acknowledgeChildItems();\n this.__changedChildItem();\n if (!this.__isValid()) {\n console.error('Invalid item', this.value);\n }\n });\n }\n\n /**\n * Each child item is an object that can have any of the public properties of this element.\n * Child elements will be created accordingly.\n */\n public get items(): ItemInterface[] {\n const items: ItemInterface[] = [];\n this.__onEachChildItem([i => items.push(i.value)]);\n return items;\n }\n\n /**\n * Creates child elements from ItemInterface[]\n */\n public set items(value: ItemInterface[]) {\n this.__createItems(value);\n }\n\n public get value(): ItemInterface {\n const r: Partial<Record<keyof ItemInterface, unknown>> = {};\n for (let i = 0; i < this.attributes.length; i++) {\n r[this.attributes[i].name] = this.attributes[i].value;\n }\n r.items = this.items;\n return r as ItemInterface;\n }\n\n public set value(v: ItemInterface) {\n this.__itemDescription = '';\n for (const k in v) {\n let attrValue = '';\n if (k == 'description') {\n this.__itemDescription = v[k] as string;\n continue;\n }\n if (typeof v[k as keyof ItemInterface] == 'object') {\n attrValue = JSON.stringify(v[k as keyof ItemInterface]);\n } else {\n const key = k as keyof ItemInterface;\n if ((v[key] && v[key] !== 'undefined') || v[key] === 0) {\n attrValue = v[k as keyof ItemInterface]!.toString();\n }\n }\n this.setAttribute(k, v[k as keyof ItemInterface] ? attrValue : '');\n }\n }\n\n public updated(changedProperties: Map<string, string>): void {\n changedProperties.forEach((oldValue, prop) => {\n if (prop == '__itemDescription' || prop == 'isChildItem') {\n this.__updateDescriptionEl();\n }\n });\n this.__setTotalPrice();\n this.dispatchEvent(new Event('change'));\n }\n\n public render(): TemplateResult {\n if (!this.__isValid()) {\n return html`<x-error-screen type=\"setup_needed\" class=\"relative\"></x-error-screen>`;\n }\n\n const removedStyle = this.quantity ? '' : 'removed opacity-50';\n const sharedStyle = `font-lumo text-body text-s leading-m transition duration-100 ${removedStyle}`;\n\n if (this.isChildItem) {\n return html`\n <article\n part=\"item\"\n class=\"py-s w-full relative separator item-summary flex justify-between ${sharedStyle}\"\n >\n <div class=\"description flex-1\">\n <h1 class=\"text-header font-medium\">${this.name}</h1>\n <section class=\"description text-secondary\">\n <slot></slot>\n </section>\n </div>\n\n ${this.quantity < 2\n ? ''\n : html`\n <section class=\"quantity font-medium text-tertiary whitespace-nowrap\">\n ${this._t('item.items', { quantity: this.quantity })}\n </section>\n `}\n </article>\n `;\n } else {\n const numericItemPrice = (this.price ?? 0) + this.__childPrices.reduce((p, c) => p + c, 0);\n const totalPrice = this.__translateAmount(numericItemPrice * this.quantity);\n const itemPrice = this.__translateAmount(numericItemPrice);\n\n return html`\n <article\n part=\"item\"\n class=\"p-l relative item ${sharedStyle} ${this.__modified ? 'modified' : ''}\"\n >\n <x-preview\n class=\"preview float-left w-preview h-preview mr-l mb-l\"\n exportparts=\"picture\"\n .image=${this.image}\n .quantity=${this.quantity}\n .items=${[...this.querySelectorAll('[data-bundled]')].map(child => ({\n quantity: (child as Item).quantity,\n image: (child as Item).image ?? '',\n }))}\n >\n </x-preview>\n\n <section class=\"description min-w-description ml-description\">\n <h1 class=\"text-header font-medium text-l leading-none mr-quantity mb-s\">\n ${this.name}\n </h1>\n\n <div class=\"item-description text-secondary mr-quantity mb-s\">\n <slot></slot>\n </div>\n\n <div class=\"child-items mb-s\">\n <slot name=\"items\"></slot>\n </div>\n\n ${itemPrice ? html`<div class=\"font-medium price text-l\">${itemPrice}</div>` : ''}\n </section>\n\n <section class=\"quantity w-quantity absolute top-0 right-0 m-l\">\n <vaadin-integer-field\n class=\"w-full p-0\"\n name=\"quantity\"\n @change=${this.__handleQuantity}\n value=\"${this.quantity}\"\n min=\"0\"\n has-controls\n ?readonly=${this.readonly}\n >\n </vaadin-integer-field>\n\n ${this.quantity > 1\n ? html`\n <x-i18n\n .ns=${this.ns}\n .lang=${this.lang}\n .opts=${{ amount: totalPrice }}\n class=\"price-total text-secondary text-xs text-center block mt-xs\"\n key=\"price.total\"\n >\n </x-i18n>\n `\n : ''}\n </section>\n </article>\n `;\n }\n }\n\n public getImageDescription(): ImageDescription {\n return {\n src: this.image,\n alt: this.alt,\n quantity: this.quantity,\n };\n }\n\n /**\n * Items have their signed names prefixed with their id.\n *\n * @argument fieldName the name of the field to get the signed version.\n * @argument open whether this field is editable by the user.\n * @returns signed version of the name, prefixed with the item id.\n */\n public signedName(fieldName: string): string {\n const signed = super.signedName(fieldName);\n return `${this.pid.toString()}:${signed}`;\n }\n\n /**\n * Creates a new unique id to be used in the form\n *\n * Ids are used to distinguish different items in a single form.\n * Ids are prepended to fields names to allow Foxy Cart to know to what\n * item a particular field relates.\n *\n * @return number the newly created id\n */\n private static __newId(): number {\n // Get the maximum value\n const newId = Item.__existingIds.reduce((accum, curr) => (curr > accum ? curr : accum), 0) + 1;\n Item.__existingIds.push(newId);\n return newId;\n }\n\n private __updateDescriptionEl() {\n if (this.__itemDescription) {\n let descEl: HTMLElement | null = this.shadowRoot!.querySelector('data-item-description');\n if (!descEl) {\n descEl = document.createElement('p') as HTMLElement;\n descEl.dataset.itemDescription = 'true';\n this.__addSlottedEl(descEl);\n }\n descEl.innerText = this.__itemDescription;\n } else {\n const descEl: HTMLElement | null = this.shadowRoot!.querySelector('data-item-description');\n if (descEl) descEl.remove();\n }\n }\n\n /**\n * Add an element to the default slot\n */\n private __addSlottedEl(el: HTMLElement) {\n const slot = this.shadowRoot!.querySelector('article');\n if (slot) {\n slot!.appendChild(el);\n }\n }\n\n /**\n * Creates a code if none is provided by the user\n */\n private __setCode(): void {\n if (!this.code) {\n this.code = `RAND${Math.random()}`;\n }\n }\n\n /**\n * Create child items from items field.\n */\n private __createItems(valuesArray: ItemInterface[]): void {\n valuesArray.forEach(p => {\n // Use a reference to the constructor of the instance in order to avoid issues in tests\n const item = document.createElement(this.tagName) as Item;\n item.value = p;\n item.currency = this.currency;\n item.__computeTotalPrice();\n this.__acknowledgeItem(item);\n this.appendChild(item);\n });\n }\n\n private __setTotalPrice(): void {\n this.total = this.__computeTotalPrice();\n }\n\n /**\n * The price of the total qty of each of the child items\n */\n private __computeTotalPrice(): number {\n if (!this.__childPrices) {\n if (!this.price) return 0;\n return this.price * this.quantity;\n }\n let myPrice = 0;\n this.__childPrices.forEach(p => {\n myPrice += p;\n });\n myPrice += this.price!;\n myPrice *= this.quantity;\n return myPrice;\n }\n\n /**\n * Constraints Items must eventually adhere to.\n **/\n private __isValid(): boolean {\n const error = [];\n if (!this.name || !this.name.length) {\n error.push('The name attribute of an item is required.');\n }\n if (!this.price && this.price !== 0) {\n error.push('The price attribute of an item is required.');\n }\n if (this.price && this.price! < 0) {\n error.push('Item added with negative price.');\n }\n if (this.quantity_min && this.quantity && this.quantity < this.quantity_min) {\n error.push('Quantity amount is less than minimum quantity.');\n }\n if (this.quantity_max && this.quantity && this.quantity > this.quantity_max) {\n error.push('Quantity amount is more than maximum quantity.');\n }\n console.error(...error);\n return !error.length;\n }\n\n private __translateAmount(amount: number) {\n if (!this.currency) {\n return '';\n }\n return amount.toLocaleString(this.lang, {\n minimumFractionDigits: 2,\n currency: this.currency,\n style: 'currency',\n });\n }\n\n private __observeItems(mutationList: MutationRecord[]): void {\n mutationList.forEach(m => {\n if (m.type == 'childList') {\n m.addedNodes.forEach(n => {\n if (n.nodeType === Node.DOCUMENT_NODE) {\n this.__acknowledgeItem(n as Item);\n }\n });\n }\n });\n this.__setTotalPrice();\n }\n\n private __acknowledgeChildItems() {\n this.shadowRoot\n ?.querySelectorAll('[data-item]')\n .forEach(e => this.__acknowledgeItem(e as Item));\n this.querySelectorAll('[data-item]').forEach(e => this.__acknowledgeItem(e as Item));\n }\n\n private __acknowledgeItem(e: Item): void {\n e.addEventListener('change', this.__changedChildItem.bind(this));\n e.currency = this.currency;\n e.isItem = false;\n e.isChildItem = true;\n e.setAttribute('data-bundled', '');\n if (this.code) {\n e.parent_code = this.code;\n }\n }\n\n /** React to changes in child items */\n private __changedChildItem() {\n // Reset child attributes lists\n const newItemPrices: number[] = [];\n const newItemImages: ImageDescription[] = [];\n let newChildrenCount = 0;\n\n // Create collection functions\n const collectPrices = (p: Item) => {\n if (p.total !== undefined) {\n newItemPrices.push(p.total);\n }\n };\n const collectImages = (p: Item) => {\n newItemImages.push(p.getImageDescription());\n };\n const countChildren = () => (newChildrenCount += 1);\n // Collect information of every child\n this.__onEachChildItem([collectPrices, collectImages, countChildren]);\n\n if (this.image && newItemImages.length === 0) {\n newItemImages.push(this.getImageDescription());\n }\n\n // Update atributes regarding child items\n this.__childPrices = newItemPrices;\n this.__images = newItemImages;\n this.__childrenCount = newChildrenCount;\n this.__setTotalPrice();\n }\n\n /** Execute a list of actions against all child items */\n private __onEachChildItem(actions: ((c: Item) => void)[]) {\n const myChildItems = this.querySelectorAll('[data-bundled]');\n for (const c of myChildItems) {\n for (const actOn of actions) {\n actOn(c as Item);\n }\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"NativeIntegrationForm.js","sourceRoot":"","sources":["../../../../src/elements/public/NativeIntegrationForm/NativeIntegrationForm.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,OAAO,KAAK,QAAQ,sBAAmB;AACvC,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC,MAAM,EAAE,GAAG,yBAAyB,CAAC;AACrC,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AACH,MAAM,OAAO,qBAAsB,SAAQ,IAAU;IAArD;;QAkHE,cAAS,GAAc,EAAE,CAAC;QAET,4BAAuB,GAAG,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACjE,OAAO,GAAG,EAAE,wBAAC,IAAI,CAAC,QAAQ,0CAAG,GAAG,IAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEc,4BAAuB,GAAG,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;YACjE,OAAO,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEc,uBAAkB,GAAG,GAAG,EAAE;;YACzC,aAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;QACzC,CAAC,CAAC;QAEe,uBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;YACtD,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,CAAC,CAAC;QAEe,8BAAyB,GAAa;YACrD,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;YAC7C,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACjD,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE;YAC3C,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;SAC9C,CAAC;QAEe,2BAAsB,GAAa;YAClD;gBACE,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,oBAAoB;aAC5B;YACD;gBACE,KAAK,EAAE,8BAA8B;gBACrC,KAAK,EAAE,qCAAqC;aAC7C;YACD;gBACE,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,uBAAuB;aAC/B;YACD;gBACE,KAAK,EAAE,wBAAwB;gBAC/B,KAAK,EAAE,+BAA+B;aACvC;SACF,CAAC;QAEe,0BAAqB,GAAa;YACjD;gBACE,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,uBAAuB;aAC/B;SACF,CAAC;QAEe,4BAAuB,GAAG,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;YAE3B,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,4BAA4B;gBAAE,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACrF,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,sBAAsB;gBAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACzE,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,cAAc;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACzD,IAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEnD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEe,4BAAuB,GAAG,CAAC,KAAe,EAAE,EAAE;YAC7D,IAAI,CAAC,QAAQ,GAAG;gBACd,4BAA4B,EAAE,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC;gBAC5E,sBAAsB,EAAE,KAAK,CAAC,QAAQ,CAAC,wBAAwB,CAAC;gBAChE,cAAc,EAAE,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC;gBAChD,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC;aAC3C,CAAC;QACJ,CAAC,CAAC;QAEe,+CAA0C,GAAG;YAC5D,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;YACnC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE;SACpC,CAAC;QAEe,2BAAsB,GAAG,GAAG,EAAE;;YAC7C,MAAM,QAAQ,eAAG,IAAI,CAAC,QAAQ,0CAAE,qCAAqC,mCAAI,EAAE,CAAC;YAC5E,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE;gBACjE,OAAO,EAAE,KAAK,EAAE,GAAG,YAAY,IAAI,UAAU,EAAE,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEe,2BAAsB,GAAG,CAAC,KAAa,EAAE,EAAE;YAC1D,MAAM,QAAQ,GAA2B,EAAE,CAAC;YAE5C,KAAK,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE;gBACtC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACtD,IAAI,YAAY,IAAI,UAAU;oBAAE,QAAQ,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;aACrE;YAED,IAAI,CAAC,QAAQ,GAAG,EAAE,qCAAqC,EAAE,QAAQ,EAAE,CAAC;QACtE,CAAC,CAAC;QAEe,kCAA6B,GAAG;YAC/C,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,cAAc,EAAE;YACrC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,kBAAkB,EAAE;YACzC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE;SACvC,CAAC;QAEe,4CAAuC,GAAG,GAAG,EAAE;;YAC9D,MAAM,KAAK,eAAG,IAAI,CAAC,QAAQ,0CAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,oCAAK,EAAE,CAAC;YACrE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC;QAEe,4CAAuC,GAAG,CAAC,KAAa,EAAE,EAAE;YAC3E,IAAI,CAAC,QAAQ,GAAG,EAAE,sBAAsB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChF,CAAC,CAAC;QAEe,oCAA+B,GAAG;YACjD,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,EAAE;YACvD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,yBAAyB,EAAE;YAC/D,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE;SAC1C,CAAC;QAEe,4BAAuB,GAAG;YACzC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE;YACvC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE;SACpD,CAAC;QAEe,+BAA0B,GAAG;YAC5C,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,4BAA4B,EAAE;YACrE,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,+BAA+B,EAAE;SAC5E,CAAC;IAydJ,CAAC;IAvsBC,MAAM,KAAK,GAAG;QACZ,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,KAAa,EAAE,EAAE;YACtC,IAAI;gBACF,OAAO,OAAO,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aAChC;YAAC,WAAM;gBACN,OAAO,KAAK,CAAC;aACd;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBACjC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBACvE,OAAO,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,uBAAuB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACtE,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,yBAAyB,CAAC;YACvE,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,0BAA0B,CAAC;YACzE,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,mCAAmC,CAAC;YAC3F,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,IAAI,CAAC,KAAK,SAAS;oBAAE,OAAO,IAAI,CAAC;gBACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,qCAAqC,CAAC;gBAChE,MAAM,GAAG,GAAG,4DAA4D,CAAC;gBACzE,OAAO,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC;YAClE,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,+BAA+B,CAAC;YACnF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;gBACjC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBACvE,OAAO,CAAC,KAAK,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,yBAAyB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1E,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,MAAM,GAAG,+BAA+B,CAAC;gBAC/C,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,mBAAmB,IAAI,GAAG,MAAM,eAAe,CAAC;YACzF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,MAAM,GAAG,iCAAiC,CAAC;gBACjD,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,qBAAqB,IAAI,GAAG,MAAM,eAAe,CAAC;YAC3F,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,MAAM,GAAG,qBAAqB,CAAC;gBACrC,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,MAAM,eAAe,CAAC;YAC/E,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,MAAM,GAAG,uBAAuB,CAAC;gBACvC,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,MAAM,eAAe,CAAC;YACjF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,iCAAiC,CAAC;YACrF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,0CAA0C,CAAC;YAC9F,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBACnE,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1C,MAAM,GAAG,GAAG,uCAAuC,CAAC;gBACpD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;YAC7D,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;gBACnE,MAAM,MAAM,GAAG,wBAAwB,CAAC;gBACxC,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,YAAY,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAClF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,8BAA8B,CAAC;YACjF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,gCAAgC,CAAC;YACrF,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,IAAI,oCAAoC,CAAC;YAC7F,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,sCAAsC,CAAC;gBACnD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC;YAC9D,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,mCAAmC,CAAC;YAC3F,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,qCAAqC,CAAC;gBAClD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC;YAC7D,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,yCAAyC,CAAC;gBACtD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,IAAI,GAAG,CAAC;YACjE,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,MAAM,GAAG,GAAG,2CAA2C,CAAC;gBACxD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,oBAAoB,IAAI,GAAG,CAAC;YACnE,CAAC;YACD,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,EAAE;gBAChD,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,2BAA2B,CAAC;YAC3E,CAAC;SACF,CAAC;IACJ,CAAC;IAiID,IAAI,gBAAgB;QAClB,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,KAAK,CAAC,IAAI,CACR,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,UAAU,CACX,CAAC;SACH;QAED,OAAO,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,UAAU;;QACR,MAAM,QAAQ,SAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;QAEjD,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,IAAI;YACT,CAAC,CAAC,QAAQ,KAAK,SAAS;gBACtB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAA,4EAA4E;YACpF,CAAC,CAAC,IAAI,CAAA;;;;0BAIY,IAAI,CAAC,kBAAkB;0BACvB,IAAI,CAAC,kBAAkB;yBACxB,IAAI,CAAC,yBAAyB;;;WAG5C;QACH,QAAQ,KAAK,SAAS;YACtB,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE;YAC9B,CAAC,CAAC,QAAQ,KAAK,QAAQ;gBACvB,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,CAAC,CAAC,QAAQ,KAAK,WAAW;oBAC1B,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE;oBAChC,CAAC,CAAC,QAAQ,KAAK,SAAS;wBACxB,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE;wBAC9B,CAAC,CAAC,QAAQ,KAAK,QAAQ;4BACvB,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE;4BAC7B,CAAC,CAAC,QAAQ,KAAK,SAAS;gCACxB,CAAC,CAAC,IAAI,CAAC,qBAAqB,EAAE;gCAC9B,CAAC,CAAC,QAAQ,KAAK,WAAW;oCAC1B,CAAC,CAAC,IAAI,CAAC,sBAAsB,EAAE;oCAC/B,CAAC,CAAC,QAAQ,KAAK,YAAY;wCAC3B,CAAC,CAAC,IAAI,CAAC,uBAAuB,EAAE;wCAChC,CAAC,CAAC,EAAE;QACJ,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,MAAM,CAAiB,GAAG,IAAiC;QACzE,IAAI;YACF,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;SACpC;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,OAAO,CAAC;YAEZ,IAAI;gBACF,OAAO,GAAG,CAAC,MAAO,GAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aAC9E;YAAC,WAAM;gBACN,MAAM,GAAG,CAAC;aACX;YAED,IAAI,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE;gBACnD,MAAM,CAAC,0BAA0B,CAAC,CAAC;aACpC;iBAAM;gBACL,MAAM,GAAG,CAAC;aACX;SACF;IACH,CAAC;IAED,IAAY,QAAQ;QAClB,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;SAC/C;QAAC,WAAM;YACN,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED,IAAY,QAAQ,CAAC,KAAU;;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,MAAM,QAAQ,SAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,mCAAI,SAAS,CAAC;QACjD,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE;YAC1B,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;YACpD,IAAI,QAAQ,KAAK,QAAQ;gBAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;YAClD,IAAI,QAAQ,KAAK,WAAW;gBAAE,OAAO,QAAQ,CAAC,SAAS,CAAC;YACxD,IAAI,QAAQ,KAAK,SAAS;gBAAE,OAAO,QAAQ,CAAC,OAAO,CAAC;YACpD,IAAI,QAAQ,KAAK,QAAQ;gBAAE,OAAO,QAAQ,CAAC,MAAM,CAAC;YAClD,IAAI,QAAQ,KAAK,SAAS,EAAE;gBAC1B,IAAI,CAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,OAAO,MAAK,YAAY;oBAAE,OAAO,QAAQ,CAAC,gBAAgB,CAAC;gBACvE,OAAO,QAAQ,CAAC,WAAW,CAAC;aAC7B;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;IAEO,qBAAqB;;QAC3B,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;oBAC3C,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;;;;;;oBAM3C,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;oBAClC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;;;;;;oBAMlC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;;;;oBAMnC,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;oBAC5C,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;;;;;;oBAM5C,IAAI,CAAC,sBAAsB;oBAC3B,IAAI,CAAC,sBAAsB;;;;;;oBAM3B,IAAI,CAAC,uBAAuB;oBAC5B,IAAI,CAAC,uBAAuB;mBAC7B,IAAI,CAAC,sBAAsB;;;;QAItC,OAAA,IAAI,CAAC,QAAQ,0CAAE,sBAAsB,EACrC,CAAC,CAAC,IAAI,CAAA;;;0BAGY,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC;0BAC5D,IAAI,CAAC,uBAAuB,CAAC,8BAA8B,CAAC;yBAC7D,IAAI,CAAC,0CAA0C;;;WAG7D;YACH,CAAC,CAAC,EAAE;KACP,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;oBACzC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;;;;;;oBAMzC,IAAI,CAAC,sBAAsB;oBAC3B,IAAI,CAAC,sBAAsB;;;;;;oBAM3B,IAAI,CAAC,uBAAuB;oBAC5B,IAAI,CAAC,uBAAuB;mBAC7B,IAAI,CAAC,qBAAqB;;;KAGxC,CAAC;IACJ,CAAC;IAEO,uBAAuB;QAC7B,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;oBAC3C,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;;;;;;oBAM3C,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC;oBACnD,IAAI,CAAC,uBAAuB,CAAC,qBAAqB,CAAC;;;;;;oBAMnD,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;oBACrD,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,CAAC;;;;;;oBAMrD,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;oBACzC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;;;;;;oBAMzC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;oBAC3C,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;;;;;;oBAM3C,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;oBAC5C,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;mBAC7C,IAAI,CAAC,6BAA6B;;;;;;oBAMjC,IAAI,CAAC,uBAAuB,CAAC,4BAA4B,CAAC;oBAC1D,IAAI,CAAC,uBAAuB,CAAC,4BAA4B,CAAC;;;;;;oBAM1D,IAAI,CAAC,uCAAuC;oBAC5C,IAAI,CAAC,uCAAuC;;;;;;oBAM5C,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;oBAC9C,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;mBAC/C,IAAI,CAAC,+BAA+B;;;KAGlD,CAAC;IACJ,CAAC;IAEO,qBAAqB;;QAC3B,OAAO,IAAI,CAAA;;;;;;;;;;;;;;;;;;;QAmBP,OAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,MAAK,MAAM;YACjC,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE;YAClC,CAAC,CAAC,OAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,MAAK,YAAY;gBACzC,CAAC,CAAC,IAAI,CAAC,8BAA8B,EAAE;gBACvC,CAAC,CAAC,EAAE;KACP,CAAC;IACJ,CAAC;IAEO,yBAAyB;QAC/B,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;oBACrC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;;;;;;oBAMrC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;;;;oBAMnC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;oBACvC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;mBACxC,IAAI,CAAC,uBAAuB;;;;;;oBAM3B,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;oBACtC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;mBACvC,IAAI,CAAC,0BAA0B;;;;;;oBAM9B,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;oBAC9C,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;;;KAG7D,CAAC;IACJ,CAAC;IAEO,8BAA8B;QACpC,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;oBACrC,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC;;;;;;oBAMrC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;;;;oBAMnC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;oBACvC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;mBACxC,IAAI,CAAC,uBAAuB;;;KAG1C,CAAC;IACJ,CAAC;IAEO,qBAAqB;QAC3B,OAAO,IAAI,CAAA;;;;sBAIO,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;sBACvC,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC;;;;;;sBAMvC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;sBACzC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC;;;;;;sBAMzC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;sBAC7C,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC;;;;;;sBAM7C,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC;sBAC/C,IAAI,CAAC,uBAAuB,CAAC,iBAAiB,CAAC;;;;;;sBAM/C,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;sBAC5C,IAAI,CAAC,uBAAuB,CAAC,cAAc,CAAC;;;;;;sBAM5C,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;sBAC9C,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,CAAC;;;;;;sBAM9C,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;sBAClD,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,CAAC;;;;;;sBAMlD,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;sBACpD,IAAI,CAAC,uBAAuB,CAAC,sBAAsB,CAAC;;;;;;;oBAOtD,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;oBACpC,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC;;;KAGnD,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;oBACtC,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC;;;;;;oBAMtC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;;;;;KAOlD,CAAC;IACJ,CAAC;IAEO,sBAAsB;QAC5B,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;oBAC1C,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC;;;;;;;KAOzD,CAAC;IACJ,CAAC;IAEO,uBAAuB;QAC7B,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;oBACnC,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;;;;;KAOlD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Option } from '../../internal/InternalRadioGroupControl/types';\nimport type { Item } from '../../internal/InternalEditableListControl/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nimport * as defaults from './defaults';\nimport memoize from 'lodash-es/memoize';\n\nconst NS = 'native-integration-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for configuring native integrations (`fx:native_integration`).\n *\n * @slot timestamps:before\n * @slot timestamps:after\n * @slot delete:before\n * @slot delete:after\n * @slot create:before\n * @slot create:after\n * @slot provider:before\n * @slot provider:after\n * @slot avalara-service-url:before\n * @slot avalara-service-url:after\n * @slot avalara-id:before\n * @slot avalara-id:after\n * @slot avalara-key:before\n * @slot avalara-key:after\n * @slot avalara-company-code:before\n * @slot avalara-company-code:after\n * @slot avalara-options:before\n * @slot avalara-options:after\n * @slot avalara-address-validation-countries:before\n * @slot avalara-address-validation-countries:after\n * @slot avalara-category-to-product-tax-code-mappings:before\n * @slot avalara-category-to-product-tax-code-mappings:after\n * @slot taxjar-api-token:before\n * @slot taxjar-api-token:after\n * @slot taxjar-category-to-product-tax-code-mappings:before\n * @slot taxjar-category-to-product-tax-code-mappings:after\n * @slot taxjar-options:before\n * @slot taxjar-options:after\n * @slot onesource-service-url:before\n * @slot onesource-service-url:after\n * @slot onesource-external-company-id:before\n * @slot onesource-external-company-id:after\n * @slot onesource-calling-system-number:before\n * @slot onesource-calling-system-number:after\n * @slot onesource-from-city:before\n * @slot onesource-from-city:after\n * @slot onesource-host-system:before\n * @slot onesource-host-system:after\n * @slot onesource-company-role:before\n * @slot onesource-company-role:after\n * @slot onesource-part-number-product-option:before\n * @slot onesource-part-number-product-option:after\n * @slot onesource-product-order-priority:before\n * @slot onesource-product-order-priority:after\n * @slot onesource-audit-settings:before\n * @slot onesource-audit-settings:after\n * @slot webhook-service:before\n * @slot webhook-service:after\n * @slot webhook-json-title:before\n * @slot webhook-json-title:after\n * @slot webhook-json-encryption-key:before\n * @slot webhook-json-encryption-key:after\n * @slot webhook-json-url:before\n * @slot webhook-json-url:after\n * @slot webhook-json-events:before\n * @slot webhook-json-events:after\n * @slot webhook-legacy-xml-title:before\n * @slot webhook-legacy-xml-title:after\n * @slot webhook-legacy-xml-url:before\n * @slot webhook-legacy-xml-url:after\n * @slot webflow-site-id:before\n * @slot webflow-site-id:after\n * @slot webflow-site-name:before\n * @slot webflow-site-name:after\n * @slot webflow-collection-id:before\n * @slot webflow-collection-id:after\n * @slot webflow-collection-name:before\n * @slot webflow-collection-name:after\n * @slot webflow-sku-field-id:before\n * @slot webflow-sku-field-id:after\n * @slot webflow-sku-field-name:before\n * @slot webflow-sku-field-name:after\n * @slot webflow-inventory-field-id:before\n * @slot webflow-inventory-field-id:after\n * @slot webflow-inventory-field-name:before\n * @slot webflow-inventory-field-name:after\n * @slot webflow-auth:before\n * @slot webflow-auth:after\n * @slot zapier-event:before\n * @slot zapier-event:after\n * @slot zapier-url:before\n * @slot zapier-url:after\n *\n * @element foxy-native-integration-form\n * @since 1.25.0\n */\nexport class NativeIntegrationForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n const parse = memoize(JSON.parse);\n const isURL = memoize((value: string) => {\n try {\n return Boolean(new URL(value));\n } catch {\n return false;\n }\n });\n\n return [\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const url = parse(c).service_url;\n const err = url ? (isURL(url) ? null : 'v8n_invalid') : 'v8n_required';\n return p === 'avalara' && err ? `avalara-service-url:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'avalara' || !!parse(c).id || 'avalara-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'avalara' || !!parse(c).key || 'avalara-key:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'avalara' || !!parse(c).company_code || 'avalara-company-code:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n if (p !== 'avalara') return true;\n const mappings = parse(c).category_to_product_tax_code_mappings;\n const err = 'avalara-category-to-product-tax-code-mappings:v8n_required';\n return (mappings && Object.entries(mappings).length > 0) || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'taxjar' || !!parse(c).api_token || 'taxjar-api-token:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const url = parse(c).service_url;\n const err = url ? (isURL(url) ? null : 'v8n_invalid') : 'v8n_required';\n return p === 'onesource' && err ? `onesource-service-url:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-external-company-id';\n return p !== 'onesource' || !!parse(c).external_company_id || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-calling-system-number';\n return p !== 'onesource' || !!parse(c).calling_system_number || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-from-city';\n return p !== 'onesource' || !!parse(c).from_city || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-host-system';\n return p !== 'onesource' || !!parse(c).host_system || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, title: t } = parse(c);\n return p !== 'webhook' || s !== 'json' || !!t || 'webhook-json-title:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, encryption_key: e } = parse(c);\n return p !== 'webhook' || s !== 'json' || !!e || 'webhook-json-encryption-key:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, url: u } = parse(c);\n const err = u ? (isURL(u) ? null : 'v8n_invalid') : 'v8n_required';\n return p === 'webhook' && s === 'json' && err ? `webhook-json-url:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, title: t } = parse(c);\n const err = 'webhook-legacy-xml-title:v8n_required';\n return p !== 'webhook' || s !== 'legacy_xml' || !!t || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, url: u } = parse(c);\n const err = u ? (isURL(u) ? null : 'v8n_invalid') : 'v8n_required';\n const prefix = 'webhook-legacy-xml-url';\n return p === 'webhook' && s === 'legacy_xml' && err ? `${prefix}:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).site_id || 'webflow-site-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).site_name || 'webflow-site-name:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).collection_id || 'webflow-collection-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-collection-name:v8n_required';\n return p !== 'webflow' || !!parse(c).collection_name || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).sku_field_id || 'webflow-sku-field-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-sku-field-name:v8n_required';\n return p !== 'webflow' || !!parse(c).sku_field_name || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-inventory-field-id:v8n_required';\n return p !== 'webflow' || !!parse(c).inventory_field_id || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-inventory-field-name:v8n_required';\n return p !== 'webflow' || !!parse(c).inventory_field_name || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).auth || 'webflow-auth:v8n_required';\n },\n ];\n }\n\n templates: Templates = {};\n\n private readonly __createConfigGetterFor = memoize((key: string) => {\n return () => this.__config?.[key];\n });\n\n private readonly __createConfigSetterFor = memoize((key: string) => {\n return (value: unknown) => (this.__config = { [key]: value });\n });\n\n private readonly __providerGetValue = () => {\n return this.form.provider ?? 'avalara';\n };\n\n private readonly __providerSetValue = (value: string) => {\n this.edit({ provider: value, config: '{}' });\n this.__config = {};\n };\n\n private readonly __templateProviderOptions: Option[] = [\n { value: 'avalara', label: 'option_avalara' },\n { value: 'onesource', label: 'option_onesource' },\n { value: 'taxjar', label: 'option_taxjar' },\n { value: 'webflow', label: 'option_webflow' },\n ];\n\n private readonly __avalaraConfigOptions: Option[] = [\n {\n value: 'use_ava_tax',\n label: 'option_use_ava_tax',\n },\n {\n value: 'enable_colorado_delivery_fee',\n label: 'option_enable_colorado_delivery_fee',\n },\n {\n value: 'create_invoice',\n label: 'option_create_invoice',\n },\n {\n value: 'use_address_validation',\n label: 'option_use_address_validation',\n },\n ];\n\n private readonly __taxjarConfigOptions: Option[] = [\n {\n value: 'create_invoice',\n label: 'option_create_invoice',\n },\n ];\n\n private readonly __configOptionsGetValue = () => {\n const config = this.__config;\n const value: string[] = [];\n\n if (config?.enable_colorado_delivery_fee) value.push('enable_colorado_delivery_fee');\n if (config?.use_address_validation) value.push('use_address_validation');\n if (config?.create_invoice) value.push('create_invoice');\n if (config?.use_ava_tax) value.push('use_ava_tax');\n\n return value;\n };\n\n private readonly __configOptionsSetValue = (value: string[]) => {\n this.__config = {\n enable_colorado_delivery_fee: value.includes('enable_colorado_delivery_fee'),\n use_address_validation: value.includes('use_address_validation'),\n create_invoice: value.includes('create_invoice'),\n use_ava_tax: value.includes('use_ava_tax'),\n };\n };\n\n private readonly __avalaraAddressValidationCountriesOptions = [\n { value: 'US', label: 'option_US' },\n { value: 'CA', label: 'option_CA' },\n ];\n\n private readonly __codeMappingsGetValue = () => {\n const mappings = this.__config?.category_to_product_tax_code_mappings ?? {};\n return Object.entries(mappings).map(([foxyCategory, vndTaxCode]) => {\n return { value: `${foxyCategory}:${vndTaxCode}` };\n });\n };\n\n private readonly __codeMappingsSetValue = (value: Item[]) => {\n const mappings: Record<string, string> = {};\n\n for (const { value: mapping } of value) {\n const [foxyCategory, vndTaxCode] = mapping.split(':');\n if (foxyCategory && vndTaxCode) mappings[foxyCategory] = vndTaxCode;\n }\n\n this.__config = { category_to_product_tax_code_mappings: mappings };\n };\n\n private readonly __onesourceCompanyRoleOptions = [\n { value: 'B', label: 'option_buyer' },\n { value: 'M', label: 'option_middleman' },\n { value: 'S', label: 'option_seller' },\n ];\n\n private readonly __onesourceProductOrderPriorityGetValue = () => {\n const value = this.__config?.product_order_priority.split(',') ?? [];\n return value.filter((v: string) => !!v).map((v: string) => ({ value: v }));\n };\n\n private readonly __onesourceProductOrderPrioritySetValue = (value: Item[]) => {\n this.__config = { product_order_priority: value.map(i => i.value).join(',') };\n };\n\n private readonly __onesourceAuditSettingsOptions = [\n { value: 'capture_only', label: 'option_capture_only' },\n { value: 'auth_and_capture', label: 'option_auth_and_capture' },\n { value: 'never', label: 'option_never' },\n ];\n\n private readonly __webhookServiceOptions = [\n { value: 'json', label: 'option_json' },\n { value: 'legacy_xml', label: 'option_legacy_xml' },\n ];\n\n private readonly __webhookJsonEventsOptions = [\n { value: 'transaction/created', label: 'option_transaction_created' },\n { value: 'subscription/cancelled', label: 'option_subscription_cancelled' },\n ];\n\n get readonlySelector() {\n const match = [super.readonlySelector.toString()];\n\n if (this.href) {\n match.push(\n 'apple-pay-merchant-id',\n 'custom-tax-url',\n 'zapier-events',\n 'zapier-url',\n 'provider'\n );\n }\n\n return new BooleanSelector(match.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n const provider = this.form.provider ?? 'avalara';\n\n return html`\n ${this.href\n ? provider === 'webhook'\n ? ''\n : html`<foxy-internal-text-control infer=\"provider\"></foxy-internal-text-control>`\n : html`\n <foxy-internal-radio-group-control\n infer=\"provider\"\n theme=\"vertical\"\n .getValue=${this.__providerGetValue}\n .setValue=${this.__providerSetValue}\n .options=${this.__templateProviderOptions}\n >\n </foxy-internal-radio-group-control>\n `}\n ${provider === 'avalara'\n ? this.__renderAvalaraConfig()\n : provider === 'taxjar'\n ? this.__renderTaxJarConfig()\n : provider === 'onesource'\n ? this.__renderOneSourceConfig()\n : provider === 'webflow'\n ? this.__renderWebflowConfig()\n : provider === 'zapier'\n ? this.__renderZapierConfig()\n : provider === 'webhook'\n ? this.__renderWebhookConfig()\n : provider === 'apple_pay'\n ? this.__renderApplePayConfig()\n : provider === 'custom_tax'\n ? this.__renderCustomTaxConfig()\n : ''}\n ${super.renderBody()}\n `;\n }\n\n protected async _fetch<TResult = Data>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n try {\n return await super._fetch(...args);\n } catch (err) {\n let message;\n\n try {\n message = (await (err as Response).json())._embedded['fx:errors'][0].message;\n } catch {\n throw err;\n }\n\n if (message.includes('has already been configured')) {\n throw ['error:already_configured'];\n } else {\n throw err;\n }\n }\n }\n\n private get __config() {\n try {\n return JSON.parse(this.form.config as string);\n } catch {\n return null;\n }\n }\n\n private set __config(value: any) {\n const config = this.__config;\n const provider = this.form.provider ?? 'avalara';\n const defaultConfig = (() => {\n if (provider === 'avalara') return defaults.avalara;\n if (provider === 'taxjar') return defaults.taxjar;\n if (provider === 'onesource') return defaults.onesource;\n if (provider === 'webflow') return defaults.webflow;\n if (provider === 'zapier') return defaults.zapier;\n if (provider === 'webhook') {\n if (config?.service === 'legacy_xml') return defaults.webhookLegacyXml;\n return defaults.webhookJson;\n }\n })();\n\n const newConfig = JSON.stringify({ ...defaultConfig, ...config, ...value });\n this.edit({ provider, config: newConfig });\n }\n\n private __renderAvalaraConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"avalara-service-url\"\n .getValue=${this.__createConfigGetterFor('service_url')}\n .setValue=${this.__createConfigSetterFor('service_url')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"avalara-id\"\n .getValue=${this.__createConfigGetterFor('id')}\n .setValue=${this.__createConfigSetterFor('id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-password-control\n infer=\"avalara-key\"\n .getValue=${this.__createConfigGetterFor('key')}\n .setValue=${this.__createConfigSetterFor('key')}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-text-control\n infer=\"avalara-company-code\"\n .getValue=${this.__createConfigGetterFor('company_code')}\n .setValue=${this.__createConfigSetterFor('company_code')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-editable-list-control\n infer=\"avalara-category-to-product-tax-code-mappings\"\n .getValue=${this.__codeMappingsGetValue}\n .setValue=${this.__codeMappingsSetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"avalara-options\"\n .getValue=${this.__configOptionsGetValue}\n .setValue=${this.__configOptionsSetValue}\n .options=${this.__avalaraConfigOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n ${this.__config?.use_address_validation\n ? html`\n <foxy-internal-checkbox-group-control\n infer=\"avalara-address-validation-countries\"\n .getValue=${this.__createConfigGetterFor('address_validation_countries')}\n .setValue=${this.__createConfigSetterFor('address_validation_countries')}\n .options=${this.__avalaraAddressValidationCountriesOptions}\n >\n </foxy-internal-checkbox-group-control>\n `\n : ''}\n `;\n }\n\n private __renderTaxJarConfig() {\n return html`\n <foxy-internal-password-control\n infer=\"taxjar-api-token\"\n .getValue=${this.__createConfigGetterFor('api_token')}\n .setValue=${this.__createConfigSetterFor('api_token')}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-editable-list-control\n infer=\"taxjar-category-to-product-tax-code-mappings\"\n .getValue=${this.__codeMappingsGetValue}\n .setValue=${this.__codeMappingsSetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"taxjar-options\"\n .getValue=${this.__configOptionsGetValue}\n .setValue=${this.__configOptionsSetValue}\n .options=${this.__taxjarConfigOptions}\n >\n </foxy-internal-checkbox-group-control>\n `;\n }\n\n private __renderOneSourceConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"onesource-service-url\"\n .getValue=${this.__createConfigGetterFor('service_url')}\n .setValue=${this.__createConfigSetterFor('service_url')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-external-company-id\"\n .getValue=${this.__createConfigGetterFor('external_company_id')}\n .setValue=${this.__createConfigSetterFor('external_company_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-calling-system-number\"\n .getValue=${this.__createConfigGetterFor('calling_system_number')}\n .setValue=${this.__createConfigSetterFor('calling_system_number')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-from-city\"\n .getValue=${this.__createConfigGetterFor('from_city')}\n .setValue=${this.__createConfigSetterFor('from_city')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-host-system\"\n .getValue=${this.__createConfigGetterFor('host_system')}\n .setValue=${this.__createConfigSetterFor('host_system')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-radio-group-control\n infer=\"onesource-company-role\"\n .getValue=${this.__createConfigGetterFor('company_role')}\n .setValue=${this.__createConfigSetterFor('company_role')}\n .options=${this.__onesourceCompanyRoleOptions}\n >\n </foxy-internal-radio-group-control>\n\n <foxy-internal-text-control\n infer=\"onesource-part-number-product-option\"\n .getValue=${this.__createConfigGetterFor('part_number_product_option')}\n .setValue=${this.__createConfigSetterFor('part_number_product_option')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-editable-list-control\n infer=\"onesource-product-order-priority\"\n .getValue=${this.__onesourceProductOrderPriorityGetValue}\n .setValue=${this.__onesourceProductOrderPrioritySetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-radio-group-control\n infer=\"onesource-audit-settings\"\n .getValue=${this.__createConfigGetterFor('audit_settings')}\n .setValue=${this.__createConfigSetterFor('audit_settings')}\n .options=${this.__onesourceAuditSettingsOptions}\n >\n </foxy-internal-radio-group-control>\n `;\n }\n\n private __renderWebhookConfig() {\n return html`\n <p\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n class=\"rounded bg-error-10 text-error font-medium\"\n >\n <foxy-i18n infer=\"webhook-warning\" key=\"warning_text\"></foxy-i18n>\n <br />\n <br />\n <a\n target=\"_blank\"\n class=\"text-body rounded hover-underline hover-cursor-pointer focus-outline-none focus-ring-2 focus-ring-error-50\"\n lang=\"en\"\n rel=\"noopener\"\n href=\"https://www.foxy.io/blog/new-feature-json-webhook/\"\n >\n <foxy-i18n infer=\"webhook-warning\" key=\"link_text\"></foxy-i18n>\n </a>\n </p>\n\n ${this.__config?.service === 'json'\n ? this.__renderWebhookJsonConfig()\n : this.__config?.service === 'legacy_xml'\n ? this.__renderWebhookLegacyXmlConfig()\n : ''}\n `;\n }\n\n private __renderWebhookJsonConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"webhook-json-title\"\n .getValue=${this.__createConfigGetterFor('title')}\n .setValue=${this.__createConfigSetterFor('title')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-area-control\n infer=\"webhook-json-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-area-control>\n\n <foxy-internal-radio-group-control\n infer=\"webhook-service\"\n .getValue=${this.__createConfigGetterFor('service')}\n .setValue=${this.__createConfigSetterFor('service')}\n .options=${this.__webhookServiceOptions}\n >\n </foxy-internal-radio-group-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"webhook-json-events\"\n .getValue=${this.__createConfigGetterFor('events')}\n .setValue=${this.__createConfigSetterFor('events')}\n .options=${this.__webhookJsonEventsOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n <foxy-internal-password-control\n infer=\"webhook-json-encryption-key\"\n .getValue=${this.__createConfigGetterFor('encryption_key')}\n .setValue=${this.__createConfigSetterFor('encryption_key')}\n >\n </foxy-internal-password-control>\n `;\n }\n\n private __renderWebhookLegacyXmlConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"webhook-legacy-xml-title\"\n .getValue=${this.__createConfigGetterFor('title')}\n .setValue=${this.__createConfigSetterFor('title')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-area-control\n infer=\"webhook-legacy-xml-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-area-control>\n\n <foxy-internal-radio-group-control\n infer=\"webhook-service\"\n .getValue=${this.__createConfigGetterFor('service')}\n .setValue=${this.__createConfigSetterFor('service')}\n .options=${this.__webhookServiceOptions}\n >\n </foxy-internal-radio-group-control>\n `;\n }\n\n private __renderWebflowConfig() {\n return html`\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-text-control\n infer=\"webflow-site-id\"\n .getValue=${this.__createConfigGetterFor('site_id')}\n .setValue=${this.__createConfigSetterFor('site_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-site-name\"\n .getValue=${this.__createConfigGetterFor('site_name')}\n .setValue=${this.__createConfigSetterFor('site_name')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-collection-id\"\n .getValue=${this.__createConfigGetterFor('collection_id')}\n .setValue=${this.__createConfigSetterFor('collection_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-collection-name\"\n .getValue=${this.__createConfigGetterFor('collection_name')}\n .setValue=${this.__createConfigSetterFor('collection_name')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-sku-field-id\"\n .getValue=${this.__createConfigGetterFor('sku_field_id')}\n .setValue=${this.__createConfigSetterFor('sku_field_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-sku-field-name\"\n .getValue=${this.__createConfigGetterFor('sku_field_name')}\n .setValue=${this.__createConfigSetterFor('sku_field_name')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-inventory-field-id\"\n .getValue=${this.__createConfigGetterFor('inventory_field_id')}\n .setValue=${this.__createConfigSetterFor('inventory_field_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-inventory-field-name\"\n .getValue=${this.__createConfigGetterFor('inventory_field_name')}\n .setValue=${this.__createConfigSetterFor('inventory_field_name')}\n >\n </foxy-internal-text-control>\n </div>\n\n <foxy-internal-password-control\n infer=\"webflow-auth\"\n .getValue=${this.__createConfigGetterFor('auth')}\n .setValue=${this.__createConfigSetterFor('auth')}\n >\n </foxy-internal-password-control>\n `;\n }\n\n private __renderZapierConfig() {\n return html`\n <foxy-internal-editable-list-control\n infer=\"zapier-events\"\n .getValue=${this.__createConfigGetterFor('events')}\n .setValue=${this.__createConfigSetterFor('events')}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-text-area-control\n infer=\"zapier-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-area-control>\n\n <p class=\"text-xs text-secondary leading-xs\">\n <foxy-i18n infer=\"zapier-warning\" key=\"warning_text\"></foxy-i18n>\n </p>\n `;\n }\n\n private __renderApplePayConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"apple-pay-merchant-id\"\n .getValue=${this.__createConfigGetterFor('merchantID')}\n .setValue=${this.__createConfigSetterFor('merchantID')}\n >\n </foxy-internal-text-control>\n\n <p class=\"text-xs text-secondary leading-xs\">\n <foxy-i18n infer=\"apple-pay-warning\" key=\"warning_text\"></foxy-i18n>\n </p>\n `;\n }\n\n private __renderCustomTaxConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"custom-tax-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-control>\n\n <p class=\"text-xs text-secondary leading-xs\">\n <foxy-i18n infer=\"custom-tax-warning\" key=\"warning_text\"></foxy-i18n>\n </p>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"NativeIntegrationForm.js","sourceRoot":"","sources":["../../../../src/elements/public/NativeIntegrationForm/NativeIntegrationForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Option } from '../../internal/InternalRadioGroupControl/types';\nimport type { Item } from '../../internal/InternalEditableListControl/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nimport * as defaults from './defaults';\nimport memoize from 'lodash-es/memoize';\n\nconst NS = 'native-integration-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for configuring native integrations (`fx:native_integration`).\n *\n * @slot timestamps:before\n * @slot timestamps:after\n * @slot delete:before\n * @slot delete:after\n * @slot create:before\n * @slot create:after\n * @slot provider:before\n * @slot provider:after\n * @slot avalara-service-url:before\n * @slot avalara-service-url:after\n * @slot avalara-id:before\n * @slot avalara-id:after\n * @slot avalara-key:before\n * @slot avalara-key:after\n * @slot avalara-company-code:before\n * @slot avalara-company-code:after\n * @slot avalara-options:before\n * @slot avalara-options:after\n * @slot avalara-address-validation-countries:before\n * @slot avalara-address-validation-countries:after\n * @slot avalara-category-to-product-tax-code-mappings:before\n * @slot avalara-category-to-product-tax-code-mappings:after\n * @slot taxjar-api-token:before\n * @slot taxjar-api-token:after\n * @slot taxjar-category-to-product-tax-code-mappings:before\n * @slot taxjar-category-to-product-tax-code-mappings:after\n * @slot taxjar-options:before\n * @slot taxjar-options:after\n * @slot onesource-service-url:before\n * @slot onesource-service-url:after\n * @slot onesource-external-company-id:before\n * @slot onesource-external-company-id:after\n * @slot onesource-calling-system-number:before\n * @slot onesource-calling-system-number:after\n * @slot onesource-from-city:before\n * @slot onesource-from-city:after\n * @slot onesource-host-system:before\n * @slot onesource-host-system:after\n * @slot onesource-company-role:before\n * @slot onesource-company-role:after\n * @slot onesource-part-number-product-option:before\n * @slot onesource-part-number-product-option:after\n * @slot onesource-product-order-priority:before\n * @slot onesource-product-order-priority:after\n * @slot onesource-audit-settings:before\n * @slot onesource-audit-settings:after\n * @slot webhook-service:before\n * @slot webhook-service:after\n * @slot webhook-json-title:before\n * @slot webhook-json-title:after\n * @slot webhook-json-encryption-key:before\n * @slot webhook-json-encryption-key:after\n * @slot webhook-json-url:before\n * @slot webhook-json-url:after\n * @slot webhook-json-events:before\n * @slot webhook-json-events:after\n * @slot webhook-legacy-xml-title:before\n * @slot webhook-legacy-xml-title:after\n * @slot webhook-legacy-xml-url:before\n * @slot webhook-legacy-xml-url:after\n * @slot webflow-site-id:before\n * @slot webflow-site-id:after\n * @slot webflow-site-name:before\n * @slot webflow-site-name:after\n * @slot webflow-collection-id:before\n * @slot webflow-collection-id:after\n * @slot webflow-collection-name:before\n * @slot webflow-collection-name:after\n * @slot webflow-sku-field-id:before\n * @slot webflow-sku-field-id:after\n * @slot webflow-sku-field-name:before\n * @slot webflow-sku-field-name:after\n * @slot webflow-inventory-field-id:before\n * @slot webflow-inventory-field-id:after\n * @slot webflow-inventory-field-name:before\n * @slot webflow-inventory-field-name:after\n * @slot webflow-auth:before\n * @slot webflow-auth:after\n * @slot zapier-event:before\n * @slot zapier-event:after\n * @slot zapier-url:before\n * @slot zapier-url:after\n *\n * @element foxy-native-integration-form\n * @since 1.25.0\n */\nexport class NativeIntegrationForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n const parse = memoize(JSON.parse);\n const isURL = memoize((value: string) => {\n try {\n return Boolean(new URL(value));\n } catch {\n return false;\n }\n });\n\n return [\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const url = parse(c).service_url;\n const err = url ? (isURL(url) ? null : 'v8n_invalid') : 'v8n_required';\n return p === 'avalara' && err ? `avalara-service-url:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'avalara' || !!parse(c).id || 'avalara-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'avalara' || !!parse(c).key || 'avalara-key:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'avalara' || !!parse(c).company_code || 'avalara-company-code:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n if (p !== 'avalara') return true;\n const mappings = parse(c).category_to_product_tax_code_mappings;\n const err = 'avalara-category-to-product-tax-code-mappings:v8n_required';\n return (mappings && Object.entries(mappings).length > 0) || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'taxjar' || !!parse(c).api_token || 'taxjar-api-token:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const url = parse(c).service_url;\n const err = url ? (isURL(url) ? null : 'v8n_invalid') : 'v8n_required';\n return p === 'onesource' && err ? `onesource-service-url:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-external-company-id';\n return p !== 'onesource' || !!parse(c).external_company_id || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-calling-system-number';\n return p !== 'onesource' || !!parse(c).calling_system_number || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-from-city';\n return p !== 'onesource' || !!parse(c).from_city || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const prefix = 'onesource-host-system';\n return p !== 'onesource' || !!parse(c).host_system || `${prefix}:v8n_required`;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, title: t } = parse(c);\n return p !== 'webhook' || s !== 'json' || !!t || 'webhook-json-title:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, encryption_key: e } = parse(c);\n return p !== 'webhook' || s !== 'json' || !!e || 'webhook-json-encryption-key:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, url: u } = parse(c);\n const err = u ? (isURL(u) ? null : 'v8n_invalid') : 'v8n_required';\n return p === 'webhook' && s === 'json' && err ? `webhook-json-url:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, title: t } = parse(c);\n const err = 'webhook-legacy-xml-title:v8n_required';\n return p !== 'webhook' || s !== 'legacy_xml' || !!t || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const { service: s, url: u } = parse(c);\n const err = u ? (isURL(u) ? null : 'v8n_invalid') : 'v8n_required';\n const prefix = 'webhook-legacy-xml-url';\n return p === 'webhook' && s === 'legacy_xml' && err ? `${prefix}:${err}` : true;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).site_id || 'webflow-site-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).site_name || 'webflow-site-name:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).collection_id || 'webflow-collection-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-collection-name:v8n_required';\n return p !== 'webflow' || !!parse(c).collection_name || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).sku_field_id || 'webflow-sku-field-id:v8n_required';\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-sku-field-name:v8n_required';\n return p !== 'webflow' || !!parse(c).sku_field_name || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-inventory-field-id:v8n_required';\n return p !== 'webflow' || !!parse(c).inventory_field_id || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n const err = 'webflow-inventory-field-name:v8n_required';\n return p !== 'webflow' || !!parse(c).inventory_field_name || err;\n },\n ({ provider: p = 'avalara', config: c = '{}' }) => {\n return p !== 'webflow' || !!parse(c).auth || 'webflow-auth:v8n_required';\n },\n ];\n }\n\n templates: Templates = {};\n\n private readonly __createConfigGetterFor = memoize((key: string) => {\n return () => this.__config?.[key];\n });\n\n private readonly __createConfigSetterFor = memoize((key: string) => {\n return (value: unknown) => (this.__config = { [key]: value });\n });\n\n private readonly __providerGetValue = () => {\n return this.form.provider ?? 'avalara';\n };\n\n private readonly __providerSetValue = (value: string) => {\n this.edit({ provider: value, config: '{}' });\n this.__config = {};\n };\n\n private readonly __templateProviderOptions: Option[] = [\n { value: 'avalara', label: 'option_avalara' },\n { value: 'onesource', label: 'option_onesource' },\n { value: 'taxjar', label: 'option_taxjar' },\n { value: 'webflow', label: 'option_webflow' },\n ];\n\n private readonly __avalaraConfigOptions: Option[] = [\n {\n value: 'use_ava_tax',\n label: 'option_use_ava_tax',\n },\n {\n value: 'enable_colorado_delivery_fee',\n label: 'option_enable_colorado_delivery_fee',\n },\n {\n value: 'create_invoice',\n label: 'option_create_invoice',\n },\n {\n value: 'use_address_validation',\n label: 'option_use_address_validation',\n },\n ];\n\n private readonly __taxjarConfigOptions: Option[] = [\n {\n value: 'create_invoice',\n label: 'option_create_invoice',\n },\n ];\n\n private readonly __configOptionsGetValue = () => {\n const config = this.__config;\n const value: string[] = [];\n\n if (config?.enable_colorado_delivery_fee) value.push('enable_colorado_delivery_fee');\n if (config?.use_address_validation) value.push('use_address_validation');\n if (config?.create_invoice) value.push('create_invoice');\n if (config?.use_ava_tax) value.push('use_ava_tax');\n\n return value;\n };\n\n private readonly __configOptionsSetValue = (value: string[]) => {\n this.__config = {\n enable_colorado_delivery_fee: value.includes('enable_colorado_delivery_fee'),\n use_address_validation: value.includes('use_address_validation'),\n create_invoice: value.includes('create_invoice'),\n use_ava_tax: value.includes('use_ava_tax'),\n };\n };\n\n private readonly __avalaraAddressValidationCountriesOptions = [\n { value: 'US', label: 'option_US' },\n { value: 'CA', label: 'option_CA' },\n ];\n\n private readonly __codeMappingsGetValue = () => {\n const mappings = this.__config?.category_to_product_tax_code_mappings ?? {};\n return Object.entries(mappings).map(([foxyCategory, vndTaxCode]) => {\n return { value: `${foxyCategory}:${vndTaxCode}` };\n });\n };\n\n private readonly __codeMappingsSetValue = (value: Item[]) => {\n const mappings: Record<string, string> = {};\n\n for (const { value: mapping } of value) {\n const [foxyCategory, vndTaxCode] = mapping.split(':');\n if (foxyCategory && vndTaxCode) mappings[foxyCategory] = vndTaxCode;\n }\n\n this.__config = { category_to_product_tax_code_mappings: mappings };\n };\n\n private readonly __onesourceCompanyRoleOptions = [\n { value: 'B', label: 'option_buyer' },\n { value: 'M', label: 'option_middleman' },\n { value: 'S', label: 'option_seller' },\n ];\n\n private readonly __onesourceProductOrderPriorityGetValue = () => {\n const value = this.__config?.product_order_priority.split(',') ?? [];\n return value.filter((v: string) => !!v).map((v: string) => ({ value: v }));\n };\n\n private readonly __onesourceProductOrderPrioritySetValue = (value: Item[]) => {\n this.__config = { product_order_priority: value.map(i => i.value).join(',') };\n };\n\n private readonly __onesourceAuditSettingsOptions = [\n { value: 'capture_only', label: 'option_capture_only' },\n { value: 'auth_and_capture', label: 'option_auth_and_capture' },\n { value: 'never', label: 'option_never' },\n ];\n\n private readonly __webhookServiceOptions = [\n { value: 'json', label: 'option_json' },\n { value: 'legacy_xml', label: 'option_legacy_xml' },\n ];\n\n private readonly __webhookJsonEventsOptions = [\n { value: 'transaction/created', label: 'option_transaction_created' },\n { value: 'subscription/cancelled', label: 'option_subscription_cancelled' },\n ];\n\n get readonlySelector(): BooleanSelector {\n const match = [super.readonlySelector.toString()];\n\n if (this.href) {\n match.push(\n 'apple-pay-merchant-id',\n 'custom-tax-url',\n 'zapier-events',\n 'zapier-url',\n 'provider'\n );\n }\n\n return new BooleanSelector(match.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n const provider = this.form.provider ?? 'avalara';\n\n return html`\n ${this.href\n ? provider === 'webhook'\n ? ''\n : html`<foxy-internal-text-control infer=\"provider\"></foxy-internal-text-control>`\n : html`\n <foxy-internal-radio-group-control\n infer=\"provider\"\n theme=\"vertical\"\n .getValue=${this.__providerGetValue}\n .setValue=${this.__providerSetValue}\n .options=${this.__templateProviderOptions}\n >\n </foxy-internal-radio-group-control>\n `}\n ${provider === 'avalara'\n ? this.__renderAvalaraConfig()\n : provider === 'taxjar'\n ? this.__renderTaxJarConfig()\n : provider === 'onesource'\n ? this.__renderOneSourceConfig()\n : provider === 'webflow'\n ? this.__renderWebflowConfig()\n : provider === 'zapier'\n ? this.__renderZapierConfig()\n : provider === 'webhook'\n ? this.__renderWebhookConfig()\n : provider === 'apple_pay'\n ? this.__renderApplePayConfig()\n : provider === 'custom_tax'\n ? this.__renderCustomTaxConfig()\n : ''}\n ${super.renderBody()}\n `;\n }\n\n protected async _fetch<TResult = Data>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n try {\n return await super._fetch(...args);\n } catch (err) {\n let message;\n\n try {\n message = (await (err as Response).json())._embedded['fx:errors'][0].message;\n } catch {\n throw err;\n }\n\n if (message.includes('has already been configured')) {\n throw ['error:already_configured'];\n } else {\n throw err;\n }\n }\n }\n\n private get __config() {\n try {\n return JSON.parse(this.form.config as string);\n } catch {\n return null;\n }\n }\n\n private set __config(value: any) {\n const config = this.__config;\n const provider = this.form.provider ?? 'avalara';\n const defaultConfig = (() => {\n if (provider === 'avalara') return defaults.avalara;\n if (provider === 'taxjar') return defaults.taxjar;\n if (provider === 'onesource') return defaults.onesource;\n if (provider === 'webflow') return defaults.webflow;\n if (provider === 'zapier') return defaults.zapier;\n if (provider === 'webhook') {\n if (config?.service === 'legacy_xml') return defaults.webhookLegacyXml;\n return defaults.webhookJson;\n }\n })();\n\n const newConfig = JSON.stringify({ ...defaultConfig, ...config, ...value });\n this.edit({ provider, config: newConfig });\n }\n\n private __renderAvalaraConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"avalara-service-url\"\n .getValue=${this.__createConfigGetterFor('service_url')}\n .setValue=${this.__createConfigSetterFor('service_url')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"avalara-id\"\n .getValue=${this.__createConfigGetterFor('id')}\n .setValue=${this.__createConfigSetterFor('id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-password-control\n infer=\"avalara-key\"\n .getValue=${this.__createConfigGetterFor('key')}\n .setValue=${this.__createConfigSetterFor('key')}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-text-control\n infer=\"avalara-company-code\"\n .getValue=${this.__createConfigGetterFor('company_code')}\n .setValue=${this.__createConfigSetterFor('company_code')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-editable-list-control\n infer=\"avalara-category-to-product-tax-code-mappings\"\n .getValue=${this.__codeMappingsGetValue}\n .setValue=${this.__codeMappingsSetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"avalara-options\"\n .getValue=${this.__configOptionsGetValue}\n .setValue=${this.__configOptionsSetValue}\n .options=${this.__avalaraConfigOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n ${this.__config?.use_address_validation\n ? html`\n <foxy-internal-checkbox-group-control\n infer=\"avalara-address-validation-countries\"\n .getValue=${this.__createConfigGetterFor('address_validation_countries')}\n .setValue=${this.__createConfigSetterFor('address_validation_countries')}\n .options=${this.__avalaraAddressValidationCountriesOptions}\n >\n </foxy-internal-checkbox-group-control>\n `\n : ''}\n `;\n }\n\n private __renderTaxJarConfig() {\n return html`\n <foxy-internal-password-control\n infer=\"taxjar-api-token\"\n .getValue=${this.__createConfigGetterFor('api_token')}\n .setValue=${this.__createConfigSetterFor('api_token')}\n >\n </foxy-internal-password-control>\n\n <foxy-internal-editable-list-control\n infer=\"taxjar-category-to-product-tax-code-mappings\"\n .getValue=${this.__codeMappingsGetValue}\n .setValue=${this.__codeMappingsSetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"taxjar-options\"\n .getValue=${this.__configOptionsGetValue}\n .setValue=${this.__configOptionsSetValue}\n .options=${this.__taxjarConfigOptions}\n >\n </foxy-internal-checkbox-group-control>\n `;\n }\n\n private __renderOneSourceConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"onesource-service-url\"\n .getValue=${this.__createConfigGetterFor('service_url')}\n .setValue=${this.__createConfigSetterFor('service_url')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-external-company-id\"\n .getValue=${this.__createConfigGetterFor('external_company_id')}\n .setValue=${this.__createConfigSetterFor('external_company_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-calling-system-number\"\n .getValue=${this.__createConfigGetterFor('calling_system_number')}\n .setValue=${this.__createConfigSetterFor('calling_system_number')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-from-city\"\n .getValue=${this.__createConfigGetterFor('from_city')}\n .setValue=${this.__createConfigSetterFor('from_city')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"onesource-host-system\"\n .getValue=${this.__createConfigGetterFor('host_system')}\n .setValue=${this.__createConfigSetterFor('host_system')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-radio-group-control\n infer=\"onesource-company-role\"\n .getValue=${this.__createConfigGetterFor('company_role')}\n .setValue=${this.__createConfigSetterFor('company_role')}\n .options=${this.__onesourceCompanyRoleOptions}\n >\n </foxy-internal-radio-group-control>\n\n <foxy-internal-text-control\n infer=\"onesource-part-number-product-option\"\n .getValue=${this.__createConfigGetterFor('part_number_product_option')}\n .setValue=${this.__createConfigSetterFor('part_number_product_option')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-editable-list-control\n infer=\"onesource-product-order-priority\"\n .getValue=${this.__onesourceProductOrderPriorityGetValue}\n .setValue=${this.__onesourceProductOrderPrioritySetValue}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-radio-group-control\n infer=\"onesource-audit-settings\"\n .getValue=${this.__createConfigGetterFor('audit_settings')}\n .setValue=${this.__createConfigSetterFor('audit_settings')}\n .options=${this.__onesourceAuditSettingsOptions}\n >\n </foxy-internal-radio-group-control>\n `;\n }\n\n private __renderWebhookConfig() {\n return html`\n <p\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n class=\"rounded bg-error-10 text-error font-medium\"\n >\n <foxy-i18n infer=\"webhook-warning\" key=\"warning_text\"></foxy-i18n>\n <br />\n <br />\n <a\n target=\"_blank\"\n class=\"text-body rounded hover-underline hover-cursor-pointer focus-outline-none focus-ring-2 focus-ring-error-50\"\n lang=\"en\"\n rel=\"noopener\"\n href=\"https://www.foxy.io/blog/new-feature-json-webhook/\"\n >\n <foxy-i18n infer=\"webhook-warning\" key=\"link_text\"></foxy-i18n>\n </a>\n </p>\n\n ${this.__config?.service === 'json'\n ? this.__renderWebhookJsonConfig()\n : this.__config?.service === 'legacy_xml'\n ? this.__renderWebhookLegacyXmlConfig()\n : ''}\n `;\n }\n\n private __renderWebhookJsonConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"webhook-json-title\"\n .getValue=${this.__createConfigGetterFor('title')}\n .setValue=${this.__createConfigSetterFor('title')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-area-control\n infer=\"webhook-json-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-area-control>\n\n <foxy-internal-radio-group-control\n infer=\"webhook-service\"\n .getValue=${this.__createConfigGetterFor('service')}\n .setValue=${this.__createConfigSetterFor('service')}\n .options=${this.__webhookServiceOptions}\n >\n </foxy-internal-radio-group-control>\n\n <foxy-internal-checkbox-group-control\n infer=\"webhook-json-events\"\n .getValue=${this.__createConfigGetterFor('events')}\n .setValue=${this.__createConfigSetterFor('events')}\n .options=${this.__webhookJsonEventsOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n <foxy-internal-password-control\n infer=\"webhook-json-encryption-key\"\n .getValue=${this.__createConfigGetterFor('encryption_key')}\n .setValue=${this.__createConfigSetterFor('encryption_key')}\n >\n </foxy-internal-password-control>\n `;\n }\n\n private __renderWebhookLegacyXmlConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"webhook-legacy-xml-title\"\n .getValue=${this.__createConfigGetterFor('title')}\n .setValue=${this.__createConfigSetterFor('title')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-area-control\n infer=\"webhook-legacy-xml-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-area-control>\n\n <foxy-internal-radio-group-control\n infer=\"webhook-service\"\n .getValue=${this.__createConfigGetterFor('service')}\n .setValue=${this.__createConfigSetterFor('service')}\n .options=${this.__webhookServiceOptions}\n >\n </foxy-internal-radio-group-control>\n `;\n }\n\n private __renderWebflowConfig() {\n return html`\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-text-control\n infer=\"webflow-site-id\"\n .getValue=${this.__createConfigGetterFor('site_id')}\n .setValue=${this.__createConfigSetterFor('site_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-site-name\"\n .getValue=${this.__createConfigGetterFor('site_name')}\n .setValue=${this.__createConfigSetterFor('site_name')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-collection-id\"\n .getValue=${this.__createConfigGetterFor('collection_id')}\n .setValue=${this.__createConfigSetterFor('collection_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-collection-name\"\n .getValue=${this.__createConfigGetterFor('collection_name')}\n .setValue=${this.__createConfigSetterFor('collection_name')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-sku-field-id\"\n .getValue=${this.__createConfigGetterFor('sku_field_id')}\n .setValue=${this.__createConfigSetterFor('sku_field_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-sku-field-name\"\n .getValue=${this.__createConfigGetterFor('sku_field_name')}\n .setValue=${this.__createConfigSetterFor('sku_field_name')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-inventory-field-id\"\n .getValue=${this.__createConfigGetterFor('inventory_field_id')}\n .setValue=${this.__createConfigSetterFor('inventory_field_id')}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control\n infer=\"webflow-inventory-field-name\"\n .getValue=${this.__createConfigGetterFor('inventory_field_name')}\n .setValue=${this.__createConfigSetterFor('inventory_field_name')}\n >\n </foxy-internal-text-control>\n </div>\n\n <foxy-internal-password-control\n infer=\"webflow-auth\"\n .getValue=${this.__createConfigGetterFor('auth')}\n .setValue=${this.__createConfigSetterFor('auth')}\n >\n </foxy-internal-password-control>\n `;\n }\n\n private __renderZapierConfig() {\n return html`\n <foxy-internal-editable-list-control\n infer=\"zapier-events\"\n .getValue=${this.__createConfigGetterFor('events')}\n .setValue=${this.__createConfigSetterFor('events')}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-text-area-control\n infer=\"zapier-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-area-control>\n\n <p class=\"text-xs text-secondary leading-xs\">\n <foxy-i18n infer=\"zapier-warning\" key=\"warning_text\"></foxy-i18n>\n </p>\n `;\n }\n\n private __renderApplePayConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"apple-pay-merchant-id\"\n .getValue=${this.__createConfigGetterFor('merchantID')}\n .setValue=${this.__createConfigSetterFor('merchantID')}\n >\n </foxy-internal-text-control>\n\n <p class=\"text-xs text-secondary leading-xs\">\n <foxy-i18n infer=\"apple-pay-warning\" key=\"warning_text\"></foxy-i18n>\n </p>\n `;\n }\n\n private __renderCustomTaxConfig() {\n return html`\n <foxy-internal-text-control\n infer=\"custom-tax-url\"\n .getValue=${this.__createConfigGetterFor('url')}\n .setValue=${this.__createConfigSetterFor('url')}\n >\n </foxy-internal-text-control>\n\n <p class=\"text-xs text-secondary leading-xs\">\n <foxy-i18n infer=\"custom-tax-warning\" key=\"warning_text\"></foxy-i18n>\n </p>\n `;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentCard/PaymentCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport * as logos from '../PaymentMethodCard/logos';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'payment-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\n/**\n * Basic card displaying a payment resource (`fx:payment`).\n *\n * @element foxy-payment-card\n * @since 1.11.0\n */\nexport class PaymentCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n hostedPaymentGatewaysHelper: { attribute: 'hosted-payment-gateways-helper' },\n paymentGatewaysHelper: { attribute: 'payment-gateways-helper' },\n };\n }\n\n /** URL of the `fx:hosted_payment_gateways` property helper resource. */\n hostedPaymentGatewaysHelper: string | null = null;\n\n /** URL of the `fx:payment_gateways` property helper resource. */\n paymentGatewaysHelper: string | null = null;\n\n private readonly __hostedPaymentGatewaysLoaderId = 'hostedPaymentGatewaysLoader';\n\n private readonly __paymentGatewaysLoaderId = 'paymentGatewaysLoader';\n\n private readonly __transactionLoaderId = 'transactionLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const data = this.data;\n const amount = `${data?.amount ?? ''} ${this.__currencyCode}`;\n const amountOptions = { currencyDisplay: this.__currencyDisplay, amount };\n\n const infoKeys = [\n 'processor_response',\n 'paypal_payer_id',\n 'third_party_id',\n 'purchase_order',\n ] as const;\n\n const score = this.data?.fraud_protection_score ?? 0;\n const scoreColor = score > 0 ? 'text-error' : 'text-success';\n const scoreBackground = score > 0 ? 'bg-error-10' : 'bg-success-10';\n\n const type = (data?.cc_type ?? 'unknown').toLowerCase() as keyof typeof logos;\n const year = data?.cc_exp_year?.substring(2);\n const month = data?.cc_exp_month;\n const last4Digits = data?.cc_number_masked?.replace(/x/gi, '');\n\n return html`\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.hostedPaymentGatewaysHelper ?? undefined)}\n id=${this.__hostedPaymentGatewaysLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.paymentGatewaysHelper ?? undefined)}\n id=${this.__paymentGatewaysLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(data?._links['fx:transaction'].href)}\n id=${this.__transactionLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <p class=\"leading-s\">\n <span class=\"block font-medium text-m\" data-testid=\"line-1\">\n <foxy-i18n .options=${amountOptions} infer=\"\" key=\"price\"></foxy-i18n>\n <span>&nbsp;&bull;&nbsp;</span>\n <foxy-i18n .options=${{ value: data?.date_created }} infer=\"\" key=\"date\"></foxy-i18n>\n </span>\n\n <span class=\"block text-s text-secondary\">\n ${this.__gatewayName || html`<foxy-i18n infer=\"\" key=\"unknown\"></foxy-i18n>`}\n </span>\n\n ${infoKeys.map(key => {\n if (!data?.[key]) return;\n const css = 'block text-s text-tertiary';\n return html`<foxy-i18n class=${css} infer=\"\" key=${key} .options=${data}></foxy-i18n>`;\n })}\n\n <span class=\"mt-s flex space-x-s overflow-auto\">\n ${month && year && last4Digits\n ? html`\n <span\n class=\"truncate flex items-center h-xs rounded-s overflow-hidden bg-contrast-5\"\n data-testid=\"card-info\"\n >\n <span class=\"h-xs\">${logos[type] ?? logos.unknown}</span>\n <span class=\"font-medium px-s\">•••• ${last4Digits} ${month}/${year}</span>\n </span>\n `\n : ''}\n\n <foxy-i18n\n class=\"truncate flex font-medium h-xs items-center px-s rounded-s text-s ${scoreColor} ${scoreBackground}\"\n infer=\"\"\n key=\"fraud_risk\"\n .options=${{ score }}\n >\n </foxy-i18n>\n </span>\n </p>\n `;\n }\n\n get isBodyReady() {\n if (!super.isBodyReady) return false;\n if (!this.__currencyCode) return false;\n if (!this.__currencyDisplay) return false;\n return !this.hostedPaymentGatewaysHelper || !this.paymentGatewaysHelper || !!this.__gatewayName;\n }\n\n private get __hostedPaymentGatewaysLoader() {\n type Loader = NucleonElement<Resource<Rels.HostedPaymentGatewaysHelper>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__hostedPaymentGatewaysLoaderId}`);\n }\n\n private get __paymentGatewaysLoader() {\n type Loader = NucleonElement<Resource<Rels.PaymentGatewaysHelper>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__paymentGatewaysLoaderId}`);\n }\n\n private get __transactionLoader() {\n type Loader = NucleonElement<Resource<Rels.Transaction>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__transactionLoaderId}`);\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n\n private get __currencyDisplay() {\n const store = this.__storeLoader?.data;\n return store ? (store.use_international_currency_symbol ? 'code' : 'symbol') : void 0;\n }\n\n private get __currencyCode() {\n return this.__transactionLoader?.data?.currency_code;\n }\n\n private get __gatewayName() {\n const type = this.data?.gateway_type;\n if (type) {\n const gateway = this.__paymentGatewaysLoader?.data?.values[type];\n const hostedGateway = this.__hostedPaymentGatewaysLoader?.data?.values[type];\n return gateway?.name ?? hostedGateway?.name;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"PaymentCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentCard/PaymentCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport * as logos from '../PaymentMethodCard/logos';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'payment-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\n/**\n * Basic card displaying a payment resource (`fx:payment`).\n *\n * @element foxy-payment-card\n * @since 1.11.0\n */\nexport class PaymentCard extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n hostedPaymentGatewaysHelper: { attribute: 'hosted-payment-gateways-helper' },\n paymentGatewaysHelper: { attribute: 'payment-gateways-helper' },\n };\n }\n\n /** URL of the `fx:hosted_payment_gateways` property helper resource. */\n hostedPaymentGatewaysHelper: string | null = null;\n\n /** URL of the `fx:payment_gateways` property helper resource. */\n paymentGatewaysHelper: string | null = null;\n\n private readonly __hostedPaymentGatewaysLoaderId = 'hostedPaymentGatewaysLoader';\n\n private readonly __paymentGatewaysLoaderId = 'paymentGatewaysLoader';\n\n private readonly __transactionLoaderId = 'transactionLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const data = this.data;\n const amount = `${data?.amount ?? ''} ${this.__currencyCode}`;\n const amountOptions = { currencyDisplay: this.__currencyDisplay, amount };\n\n const infoKeys = [\n 'processor_response',\n 'paypal_payer_id',\n 'third_party_id',\n 'purchase_order',\n ] as const;\n\n const score = this.data?.fraud_protection_score ?? 0;\n const scoreColor = score > 0 ? 'text-error' : 'text-success';\n const scoreBackground = score > 0 ? 'bg-error-10' : 'bg-success-10';\n\n const type = (data?.cc_type ?? 'unknown').toLowerCase() as keyof typeof logos;\n const year = data?.cc_exp_year?.substring(2);\n const month = data?.cc_exp_month;\n const last4Digits = data?.cc_number_masked?.replace(/x/gi, '');\n\n return html`\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.hostedPaymentGatewaysHelper ?? undefined)}\n id=${this.__hostedPaymentGatewaysLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.paymentGatewaysHelper ?? undefined)}\n id=${this.__paymentGatewaysLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(data?._links['fx:transaction'].href)}\n id=${this.__transactionLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <p class=\"leading-s\">\n <span class=\"block font-medium text-m\" data-testid=\"line-1\">\n <foxy-i18n .options=${amountOptions} infer=\"\" key=\"price\"></foxy-i18n>\n <span>&nbsp;&bull;&nbsp;</span>\n <foxy-i18n .options=${{ value: data?.date_created }} infer=\"\" key=\"date\"></foxy-i18n>\n </span>\n\n <span class=\"block text-s text-secondary\">\n ${this.__gatewayName || html`<foxy-i18n infer=\"\" key=\"unknown\"></foxy-i18n>`}\n </span>\n\n ${infoKeys.map(key => {\n if (!data?.[key]) return;\n const css = 'block text-s text-tertiary';\n return html`<foxy-i18n class=${css} infer=\"\" key=${key} .options=${data}></foxy-i18n>`;\n })}\n\n <span class=\"mt-s flex space-x-s overflow-auto\">\n ${month && year && last4Digits\n ? html`\n <span\n class=\"truncate flex items-center h-xs rounded-s overflow-hidden bg-contrast-5\"\n data-testid=\"card-info\"\n >\n <span class=\"h-xs\">${logos[type] ?? logos.unknown}</span>\n <span class=\"font-medium px-s\">•••• ${last4Digits} ${month}/${year}</span>\n </span>\n `\n : ''}\n\n <foxy-i18n\n class=\"truncate flex font-medium h-xs items-center px-s rounded-s text-s ${scoreColor} ${scoreBackground}\"\n infer=\"\"\n key=\"fraud_risk\"\n .options=${{ score }}\n >\n </foxy-i18n>\n </span>\n </p>\n `;\n }\n\n get isBodyReady(): boolean {\n if (!super.isBodyReady) return false;\n if (!this.__currencyCode) return false;\n if (!this.__currencyDisplay) return false;\n return !this.hostedPaymentGatewaysHelper || !this.paymentGatewaysHelper || !!this.__gatewayName;\n }\n\n private get __hostedPaymentGatewaysLoader() {\n type Loader = NucleonElement<Resource<Rels.HostedPaymentGatewaysHelper>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__hostedPaymentGatewaysLoaderId}`);\n }\n\n private get __paymentGatewaysLoader() {\n type Loader = NucleonElement<Resource<Rels.PaymentGatewaysHelper>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__paymentGatewaysLoaderId}`);\n }\n\n private get __transactionLoader() {\n type Loader = NucleonElement<Resource<Rels.Transaction>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__transactionLoaderId}`);\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n\n private get __currencyDisplay() {\n const store = this.__storeLoader?.data;\n return store ? (store.use_international_currency_symbol ? 'code' : 'symbol') : void 0;\n }\n\n private get __currencyCode() {\n return this.__transactionLoader?.data?.currency_code;\n }\n\n private get __gatewayName() {\n const type = this.data?.gateway_type;\n if (type) {\n const gateway = this.__paymentGatewaysLoader?.data?.values[type];\n const hostedGateway = this.__hostedPaymentGatewaysLoader?.data?.values[type];\n return gateway?.name ?? hostedGateway?.name;\n }\n }\n}\n"]}
@@ -76,6 +76,8 @@ interface AvailablePaymentMethodsRel extends Graph {
76
76
  test_third_party_key: string;
77
77
  /** The description of the third party key field for this gateway. */
78
78
  third_party_key_description: string;
79
+ /** Whether or not this payment method is deprecated. */
80
+ is_deprecated: boolean;
79
81
  /** If this gateway requires additional information, this will contain details about the data which needs to be collected to configure this gateway. */
80
82
  additional_fields: null | {
81
83
  blocks: {
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/elements/public/PaymentsApi/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Rels } from '@foxy.io/sdk/backend';\nimport type { Graph, Resource } from '@foxy.io/sdk/core';\n\nimport type {\n CollectionGraphLinks,\n CollectionGraphProps,\n} from '@foxy.io/sdk/dist/types/core/defaults';\n\ninterface PaymentPresetsRel extends Graph {\n curie: 'fx:payment_presets';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentPresetsRel>;\n child: PaymentPresetRel;\n}\n\ninterface PaymentPresetRel extends Graph {\n curie: 'fx:payment_preset';\n props: Omit<Rels.PaymentMethodSet['props'], 'gateway_uri'>;\n links: {\n 'self': PaymentPresetRel;\n 'fx:store': Rels.Store;\n 'fx:payment_methods': PaymentMethodsRel;\n 'fx:fraud_protections': FraudProtectionsRel;\n 'fx:available_payment_methods': AvailablePaymentMethodsRel;\n 'fx:available_fraud_protections': AvailableFraudProtectionsRel;\n };\n}\n\ninterface PaymentMethodsRel extends Graph {\n curie: 'fx:payment_methods';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentMethodsRel>;\n child: PaymentMethodRel;\n}\n\ninterface PaymentMethodRel extends Graph {\n curie: 'fx:payment_method';\n props: (Rels.HostedPaymentGateway['props'] | Rels.PaymentGateway['props']) & {\n helper: (\n | Rels.PaymentGatewaysHelper\n | Rels.HostedPaymentGatewaysHelper\n )['props']['values'][string];\n };\n links: {\n 'self': PaymentMethodRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': any;\n };\n}\n\ninterface FraudProtectionsRel extends Graph {\n curie: 'fx:fraud_protections';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<FraudProtectionsRel>;\n child: FraudProtectionRel;\n}\n\ninterface FraudProtectionRel extends Graph {\n curie: 'fx:fraud_protection';\n links: {\n 'self': FraudProtectionRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': PaymentPresetRel;\n };\n props: Rels.FraudProtection['props'] & {\n helper: AvailableFraudProtectionsRel['props']['values'][string];\n };\n}\n\ninterface AvailablePaymentMethodsRel extends Graph {\n curie: 'fx:available_payment_methods';\n props: {\n values: {\n [key: string]: {\n /** The name of this payment gateway. */\n name: string;\n /** The default id you can use for testing this gateway. */\n test_id: string;\n /** The default key you can use for testing this gateway. */\n test_key: string;\n /** The description of the id field for this gateway. */\n id_description: string;\n /** The description of the key field for this gateway. */\n key_description: string;\n /** Whether or not this gateway supports 3D Secure functionality. */\n supports_3d_secure: 0 | 1;\n /** Whether or not this gateway supports authorize only instead of auth+capture. */\n supports_auth_only: 0 | 1;\n /** The default third party key you can use for testing this gateway. */\n test_third_party_key: string;\n /** The description of the third party key field for this gateway. */\n third_party_key_description: string;\n /** If this gateway requires additional information, this will contain details about the data which needs to be collected to configure this gateway. */\n additional_fields: null | {\n blocks: {\n id: string;\n is_live: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: string;\n }[];\n }[];\n };\n /** If this payment method can't be used due to a conflict with another payment method, the details about it will be here. */\n conflict?: { type: string; name: string };\n };\n };\n };\n links: {\n self: PaymentMethodRel;\n };\n}\n\ninterface AvailableFraudProtectionsRel extends Graph {\n curie: 'fx:available_fraud_protections';\n links: { self: AvailableFraudProtectionsRel };\n props: {\n values: {\n [key: string]: {\n name: string;\n uses_rejection_threshold: boolean;\n json: null | {\n blocks: {\n id: string;\n is_live?: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: unknown;\n }[];\n }[];\n };\n };\n };\n };\n}\n\nexport type PaymentMethods = Resource<PaymentMethodsRel>;\nexport type PaymentMethod = Resource<PaymentMethodRel>;\n\nexport type PaymentPresets = Resource<PaymentPresetsRel>;\nexport type PaymentPreset = Resource<PaymentPresetRel>;\n\nexport type FraudProtections = Resource<FraudProtectionsRel>;\nexport type FraudProtection = Resource<FraudProtectionRel>;\n\nexport type AvailablePaymentMethods = Resource<AvailablePaymentMethodsRel>;\nexport type AvailableFraudProtections = Resource<AvailableFraudProtectionsRel>;\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/elements/public/PaymentsApi/api/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Rels } from '@foxy.io/sdk/backend';\nimport type { Graph, Resource } from '@foxy.io/sdk/core';\n\nimport type {\n CollectionGraphLinks,\n CollectionGraphProps,\n} from '@foxy.io/sdk/dist/types/core/defaults';\n\ninterface PaymentPresetsRel extends Graph {\n curie: 'fx:payment_presets';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentPresetsRel>;\n child: PaymentPresetRel;\n}\n\ninterface PaymentPresetRel extends Graph {\n curie: 'fx:payment_preset';\n props: Omit<Rels.PaymentMethodSet['props'], 'gateway_uri'>;\n links: {\n 'self': PaymentPresetRel;\n 'fx:store': Rels.Store;\n 'fx:payment_methods': PaymentMethodsRel;\n 'fx:fraud_protections': FraudProtectionsRel;\n 'fx:available_payment_methods': AvailablePaymentMethodsRel;\n 'fx:available_fraud_protections': AvailableFraudProtectionsRel;\n };\n}\n\ninterface PaymentMethodsRel extends Graph {\n curie: 'fx:payment_methods';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<PaymentMethodsRel>;\n child: PaymentMethodRel;\n}\n\ninterface PaymentMethodRel extends Graph {\n curie: 'fx:payment_method';\n props: (Rels.HostedPaymentGateway['props'] | Rels.PaymentGateway['props']) & {\n helper: (\n | Rels.PaymentGatewaysHelper\n | Rels.HostedPaymentGatewaysHelper\n )['props']['values'][string];\n };\n links: {\n 'self': PaymentMethodRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': any;\n };\n}\n\ninterface FraudProtectionsRel extends Graph {\n curie: 'fx:fraud_protections';\n props: CollectionGraphProps;\n links: CollectionGraphLinks<FraudProtectionsRel>;\n child: FraudProtectionRel;\n}\n\ninterface FraudProtectionRel extends Graph {\n curie: 'fx:fraud_protection';\n links: {\n 'self': FraudProtectionRel;\n 'fx:store': Rels.Store;\n 'fx:payment_preset': PaymentPresetRel;\n };\n props: Rels.FraudProtection['props'] & {\n helper: AvailableFraudProtectionsRel['props']['values'][string];\n };\n}\n\ninterface AvailablePaymentMethodsRel extends Graph {\n curie: 'fx:available_payment_methods';\n props: {\n values: {\n [key: string]: {\n /** The name of this payment gateway. */\n name: string;\n /** The default id you can use for testing this gateway. */\n test_id: string;\n /** The default key you can use for testing this gateway. */\n test_key: string;\n /** The description of the id field for this gateway. */\n id_description: string;\n /** The description of the key field for this gateway. */\n key_description: string;\n /** Whether or not this gateway supports 3D Secure functionality. */\n supports_3d_secure: 0 | 1;\n /** Whether or not this gateway supports authorize only instead of auth+capture. */\n supports_auth_only: 0 | 1;\n /** The default third party key you can use for testing this gateway. */\n test_third_party_key: string;\n /** The description of the third party key field for this gateway. */\n third_party_key_description: string;\n /** Whether or not this payment method is deprecated. */\n is_deprecated: boolean;\n /** If this gateway requires additional information, this will contain details about the data which needs to be collected to configure this gateway. */\n additional_fields: null | {\n blocks: {\n id: string;\n is_live: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: string;\n }[];\n }[];\n };\n /** If this payment method can't be used due to a conflict with another payment method, the details about it will be here. */\n conflict?: { type: string; name: string };\n };\n };\n };\n links: {\n self: PaymentMethodRel;\n };\n}\n\ninterface AvailableFraudProtectionsRel extends Graph {\n curie: 'fx:available_fraud_protections';\n links: { self: AvailableFraudProtectionsRel };\n props: {\n values: {\n [key: string]: {\n name: string;\n uses_rejection_threshold: boolean;\n json: null | {\n blocks: {\n id: string;\n is_live?: boolean;\n parent_id: string;\n fields: {\n id: string;\n type: string;\n name: string;\n options?: { name: string; value: string }[];\n optional?: boolean;\n file_type?: string;\n description?: string;\n default_value: unknown;\n }[];\n }[];\n };\n };\n };\n };\n}\n\nexport type PaymentMethods = Resource<PaymentMethodsRel>;\nexport type PaymentMethod = Resource<PaymentMethodRel>;\n\nexport type PaymentPresets = Resource<PaymentPresetsRel>;\nexport type PaymentPreset = Resource<PaymentPresetRel>;\n\nexport type FraudProtections = Resource<FraudProtectionsRel>;\nexport type FraudProtection = Resource<FraudProtectionRel>;\n\nexport type AvailablePaymentMethods = Resource<AvailablePaymentMethodsRel>;\nexport type AvailableFraudProtections = Resource<AvailableFraudProtectionsRel>;\n"]}
@@ -1,6 +1,7 @@
1
1
  import { TranslatableMixin } from "../../../mixins/translatable.js";
2
2
  import { InternalCard } from "../../internal/InternalCard/InternalCard.js";
3
3
  import { ifDefined } from 'lit-html/directives/if-defined';
4
+ import { decode } from 'html-entities';
4
5
  import { html } from 'lit-html';
5
6
  const NS = 'shipment-card';
6
7
  const Base = TranslatableMixin(InternalCard, NS);
@@ -53,7 +54,7 @@ export class ShipmentCard extends Base {
53
54
  </foxy-i18n>
54
55
 
55
56
  <span class="truncate text-s text-secondary">
56
- ${description ? html `${description} &bull; ` : ''}
57
+ ${description ? html `${decode(description)} &bull; ` : ''}
57
58
  <foxy-i18n key="price" infer="" .options=${priceOptions}></foxy-i18n>
58
59
  &bull;
59
60
  <foxy-i18n infer="" key="item" .options=${{ count: items.length }}></foxy-i18n>
@@ -74,7 +75,9 @@ export class ShipmentCard extends Base {
74
75
  const weightUnit = category === null || category === void 0 ? void 0 : category.default_weight_unit;
75
76
  return html `
76
77
  <tr>
77
- <td class="pr-s font-medium">${item.code}</td>
78
+ <td class="pr-s font-medium">
79
+ ${item.code || html `<foxy-i18n infer="" key="no_code"></foxy-i18n>`}
80
+ </td>
78
81
  <td class="px-s text-secondary">${item.name}</td>
79
82
  <td class="px-s text-tertiary">
80
83
  ${item.width}&times;${item.height}&times;${item.length} ${lengthUnit}
@@ -1 +1 @@
1
- {"version":3,"file":"ShipmentCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ShipmentCard/ShipmentCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'shipment-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\n/**\n * Basic card displaying a shipment (`fx:shipment`).\n *\n * @element foxy-shipment-card\n * @since 1.17.0\n */\nexport class ShipmentCard extends Base<Data> {\n private readonly __transactionLoaderId = 'transactionLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const { address_name, address1, address2, city, region, postal_code } = this.data ?? {};\n const addressOptions = { address_name, address1, address2, city, region, postal_code };\n\n const amount = `${this.data?.total_shipping} ${this.__currencyCode}`;\n const currencyDisplay = this.__currencyDisplay;\n const priceOptions = { amount, currencyDisplay };\n const description = this.data?.shipping_service_description;\n const items = this.data?._embedded?.['fx:items'] ?? [];\n\n return html`\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.data?._links['fx:transaction'].href)}\n id=${this.__transactionLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <div class=\"space-y-s\">\n <div class=\"grid leading-s text-body\">\n <foxy-i18n\n class=\"truncate text-m font-medium\"\n infer=\"\"\n key=\"full_address\"\n .options=${addressOptions}\n >\n </foxy-i18n>\n\n <span class=\"truncate text-s text-secondary\">\n ${description ? html`${description} &bull; ` : ''}\n <foxy-i18n key=\"price\" infer=\"\" .options=${priceOptions}></foxy-i18n>\n &bull;\n <foxy-i18n infer=\"\" key=\"item\" .options=${{ count: items.length }}></foxy-i18n>\n </span>\n </div>\n\n ${items.length > 0\n ? html`\n <div class=\"border-t border-dashed border-contrast-20\"></div>\n <div class=\"overflow-auto\">\n <table class=\"text-s leading-s whitespace-nowrap\">\n <thead></thead>\n <tbody>\n ${items.map(item => {\n const category = item._embedded?.['fx:item_category'];\n const lengthUnit = category?.default_length_unit;\n const weightUnit = category?.default_weight_unit;\n\n return html`\n <tr>\n <td class=\"pr-s font-medium\">${item.code}</td>\n <td class=\"px-s text-secondary\">${item.name}</td>\n <td class=\"px-s text-tertiary\">\n ${item.width}&times;${item.height}&times;${item.length} ${lengthUnit}\n </td>\n <td class=\"px-s text-tertiary\">${item.weight} ${weightUnit}</td>\n <td class=\"pl-s font-medium\">\n <foxy-i18n infer=\"\" key=\"quantity\" .options=${{ count: item.quantity }}>\n </foxy-i18n>\n </td>\n </tr>\n `;\n })}\n </tbody>\n </table>\n </div>\n `\n : ''}\n </div>\n `;\n }\n\n get isBodyReady() {\n return super.isBodyReady && !!this.__currencyDisplay && !!this.__currencyCode;\n }\n\n private get __transactionLoader() {\n type Loader = NucleonElement<Resource<Rels.Transaction>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__transactionLoaderId}`);\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n\n private get __currencyDisplay() {\n const store = this.__storeLoader?.data;\n return store ? (store.use_international_currency_symbol ? 'code' : 'symbol') : void 0;\n }\n\n private get __currencyCode() {\n return this.__transactionLoader?.data?.currency_code;\n }\n}\n"]}
1
+ {"version":3,"file":"ShipmentCard.js","sourceRoot":"","sources":["../../../../src/elements/public/ShipmentCard/ShipmentCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { decode } from 'html-entities';\nimport { html } from 'lit-html';\n\nconst NS = 'shipment-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\n/**\n * Basic card displaying a shipment (`fx:shipment`).\n *\n * @element foxy-shipment-card\n * @since 1.17.0\n */\nexport class ShipmentCard extends Base<Data> {\n private readonly __transactionLoaderId = 'transactionLoader';\n\n private readonly __storeLoaderId = 'storeLoader';\n\n renderBody(): TemplateResult {\n const { address_name, address1, address2, city, region, postal_code } = this.data ?? {};\n const addressOptions = { address_name, address1, address2, city, region, postal_code };\n\n const amount = `${this.data?.total_shipping} ${this.__currencyCode}`;\n const currencyDisplay = this.__currencyDisplay;\n const priceOptions = { amount, currencyDisplay };\n const description = this.data?.shipping_service_description;\n const items = this.data?._embedded?.['fx:items'] ?? [];\n\n return html`\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.data?._links['fx:transaction'].href)}\n id=${this.__transactionLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <div class=\"space-y-s\">\n <div class=\"grid leading-s text-body\">\n <foxy-i18n\n class=\"truncate text-m font-medium\"\n infer=\"\"\n key=\"full_address\"\n .options=${addressOptions}\n >\n </foxy-i18n>\n\n <span class=\"truncate text-s text-secondary\">\n ${description ? html`${decode(description)} &bull; ` : ''}\n <foxy-i18n key=\"price\" infer=\"\" .options=${priceOptions}></foxy-i18n>\n &bull;\n <foxy-i18n infer=\"\" key=\"item\" .options=${{ count: items.length }}></foxy-i18n>\n </span>\n </div>\n\n ${items.length > 0\n ? html`\n <div class=\"border-t border-dashed border-contrast-20\"></div>\n <div class=\"overflow-auto\">\n <table class=\"text-s leading-s whitespace-nowrap\">\n <thead></thead>\n <tbody>\n ${items.map(item => {\n const category = item._embedded?.['fx:item_category'];\n const lengthUnit = category?.default_length_unit;\n const weightUnit = category?.default_weight_unit;\n\n return html`\n <tr>\n <td class=\"pr-s font-medium\">\n ${item.code || html`<foxy-i18n infer=\"\" key=\"no_code\"></foxy-i18n>`}\n </td>\n <td class=\"px-s text-secondary\">${item.name}</td>\n <td class=\"px-s text-tertiary\">\n ${item.width}&times;${item.height}&times;${item.length} ${lengthUnit}\n </td>\n <td class=\"px-s text-tertiary\">${item.weight} ${weightUnit}</td>\n <td class=\"pl-s font-medium\">\n <foxy-i18n infer=\"\" key=\"quantity\" .options=${{ count: item.quantity }}>\n </foxy-i18n>\n </td>\n </tr>\n `;\n })}\n </tbody>\n </table>\n </div>\n `\n : ''}\n </div>\n `;\n }\n\n get isBodyReady(): boolean {\n return super.isBodyReady && !!this.__currencyDisplay && !!this.__currencyCode;\n }\n\n private get __transactionLoader() {\n type Loader = NucleonElement<Resource<Rels.Transaction>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__transactionLoaderId}`);\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n\n private get __currencyDisplay() {\n const store = this.__storeLoader?.data;\n return store ? (store.use_international_currency_symbol ? 'code' : 'symbol') : void 0;\n }\n\n private get __currencyCode() {\n return this.__transactionLoader?.data?.currency_code;\n }\n}\n"]}
@@ -139,8 +139,8 @@ export class SubscriptionCard extends Base {
139
139
  __getPriceOptions() {
140
140
  if (this.data === null)
141
141
  return {};
142
- const transaction = this.data._embedded['fx:last_transaction'];
143
- const amount = `${transaction.total_order} ${transaction.currency_code}`;
142
+ const cart = this.data._embedded['fx:transaction_template'];
143
+ const amount = `${cart.total_order} ${cart.currency_code}`;
144
144
  return { ...parseFrequency(this.data.frequency), amount };
145
145
  }
146
146
  __getStatusKey() {