@foxy.io/elements 1.17.0 → 1.18.0-beta.10

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 (507) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +3 -85
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-api-browser.js +1 -1
  5. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-card.js +1 -1
  7. package/dist/cdn/foxy-attribute-form.js +1 -1
  8. package/dist/cdn/foxy-cancellation-form.js +1 -1
  9. package/dist/cdn/foxy-collection-page.js +1 -1
  10. package/dist/cdn/foxy-collection-pages.js +1 -1
  11. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  12. package/dist/cdn/foxy-coupon-card.js +1 -1
  13. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  14. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  15. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  16. package/dist/cdn/foxy-coupon-form.js +1 -1
  17. package/dist/cdn/foxy-custom-field-card.js +1 -1
  18. package/dist/cdn/foxy-custom-field-form.js +1 -1
  19. package/dist/cdn/foxy-customer-api.js +1 -1
  20. package/dist/cdn/foxy-customer-card.js +1 -1
  21. package/dist/cdn/foxy-customer-form.js +1 -1
  22. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  23. package/dist/cdn/foxy-customer-portal.js +15 -15
  24. package/dist/cdn/foxy-customer.js +5 -86
  25. package/dist/cdn/foxy-customers-table.js +1 -1
  26. package/dist/cdn/foxy-discount-builder.js +1 -1
  27. package/dist/cdn/foxy-discount-card.js +1 -1
  28. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  29. package/dist/cdn/foxy-donation.js +1 -1
  30. package/dist/cdn/foxy-email-template-card.js +1 -0
  31. package/dist/cdn/foxy-email-template-form.js +1 -1
  32. package/dist/cdn/foxy-error-entry-card.js +1 -1
  33. package/dist/cdn/foxy-form-dialog.js +1 -1
  34. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  35. package/dist/cdn/foxy-gift-card-card.js +1 -1
  36. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  37. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -0
  38. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  39. package/dist/cdn/foxy-gift-card-form.js +1 -1
  40. package/dist/cdn/foxy-i18n.js +1 -1
  41. package/dist/cdn/foxy-item-card.js +1 -1
  42. package/dist/cdn/foxy-item-category-card.js +1 -0
  43. package/dist/cdn/foxy-item-category-form.js +1 -0
  44. package/dist/cdn/foxy-item-form.js +1 -1
  45. package/dist/cdn/foxy-item-option-card.js +1 -1
  46. package/dist/cdn/foxy-item-option-form.js +1 -1
  47. package/dist/cdn/foxy-items-form.js +1 -1
  48. package/dist/cdn/foxy-nucleon-element.js +1 -1
  49. package/dist/cdn/foxy-pagination.js +1 -1
  50. package/dist/cdn/foxy-payment-card.js +1 -1
  51. package/dist/cdn/foxy-payment-method-card.js +1 -1
  52. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -0
  53. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -0
  54. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -0
  55. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -0
  56. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -0
  57. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -0
  58. package/dist/cdn/foxy-payments-api.js +1 -0
  59. package/dist/cdn/foxy-query-builder.js +1 -1
  60. package/dist/cdn/foxy-report-form.js +4 -4
  61. package/dist/cdn/foxy-reports-table.js +1 -1
  62. package/dist/cdn/foxy-shipment-card.js +1 -1
  63. package/dist/cdn/foxy-sign-in-form.js +1 -1
  64. package/dist/cdn/foxy-spinner.js +2 -2
  65. package/dist/cdn/foxy-store-shipping-method-form.js +1 -0
  66. package/dist/cdn/foxy-subscription-card.js +1 -1
  67. package/dist/cdn/foxy-subscription-form.js +6 -6
  68. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  69. package/dist/cdn/foxy-swipe-actions.js +1 -1
  70. package/dist/cdn/foxy-table.js +1 -1
  71. package/dist/cdn/foxy-tax-card.js +1 -1
  72. package/dist/cdn/foxy-tax-form.js +1 -1
  73. package/dist/cdn/foxy-template-config-form.js +1 -1
  74. package/dist/cdn/foxy-template-form.js +1 -1
  75. package/dist/cdn/foxy-transaction-card.js +1 -1
  76. package/dist/cdn/foxy-transaction.js +1 -1
  77. package/dist/cdn/foxy-transactions-table.js +1 -1
  78. package/dist/cdn/foxy-user-form.js +1 -1
  79. package/dist/cdn/foxy-users-table.js +1 -1
  80. package/dist/cdn/foxy-webhook-card.js +1 -1
  81. package/dist/cdn/foxy-webhook-form.js +1 -318
  82. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  83. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  84. package/dist/cdn/shared-02c6c308.js +169 -0
  85. package/dist/cdn/{shared-e1c1e8e2.js → shared-0479553e.js} +1 -1
  86. package/dist/cdn/{shared-ae415a98.js → shared-0ca312eb.js} +1 -1
  87. package/dist/cdn/{shared-2188d5f7.js → shared-0ffa1afb.js} +1 -1
  88. package/dist/cdn/{shared-99940888.js → shared-11c2efc8.js} +1 -1
  89. package/dist/cdn/shared-164a791e.js +1 -0
  90. package/dist/cdn/{shared-5c3a88d2.js → shared-17e9778d.js} +1 -1
  91. package/dist/cdn/{shared-f1317609.js → shared-19bdb896.js} +1 -1
  92. package/dist/cdn/{shared-62169210.js → shared-1c9fd2b1.js} +3 -3
  93. package/dist/cdn/{shared-98497473.js → shared-24d650cd.js} +1 -1
  94. package/dist/cdn/shared-3214ee1b.js +11 -0
  95. package/dist/cdn/{shared-6d104622.js → shared-3c7489d6.js} +1 -1
  96. package/dist/cdn/shared-3d245899.js +134 -0
  97. package/dist/cdn/shared-3e3ba16e.js +1 -0
  98. package/dist/cdn/{shared-dc23b751.js → shared-3fd94d2f.js} +1 -1
  99. package/dist/cdn/shared-4029be54.js +1 -0
  100. package/dist/cdn/shared-40ff320f.js +150 -0
  101. package/dist/cdn/{shared-195fd5af.js → shared-4a2e1638.js} +1 -1
  102. package/dist/cdn/shared-4cd53ea2.js +1 -0
  103. package/dist/cdn/{shared-bf6fb415.js → shared-4e2e233c.js} +1 -1
  104. package/dist/cdn/shared-4f037e43.js +1 -0
  105. package/dist/cdn/{shared-4e201e09.js → shared-5f751bfc.js} +1 -1
  106. package/dist/cdn/shared-60425d2e.js +1 -0
  107. package/dist/cdn/{shared-2bdd4f74.js → shared-61174bec.js} +12 -22
  108. package/dist/cdn/shared-649c195a.js +318 -0
  109. package/dist/cdn/{shared-c5c60417.js → shared-66a0263f.js} +1 -1
  110. package/dist/cdn/{shared-39f2c345.js → shared-6d175df8.js} +1 -1
  111. package/dist/cdn/shared-74e79000.js +553 -0
  112. package/dist/cdn/{shared-1bbd9b73.js → shared-75e78c70.js} +1 -1
  113. package/dist/cdn/shared-7c8b3ce0.js +15 -0
  114. package/dist/cdn/{shared-dc73b9a5.js → shared-7f33a83a.js} +1 -1
  115. package/dist/cdn/{shared-baf79b0b.js → shared-8116ab4c.js} +1 -1
  116. package/dist/cdn/{shared-a052131e.js → shared-8dd640bf.js} +2 -2
  117. package/dist/cdn/{shared-8d937ae4.js → shared-96695c93.js} +3 -3
  118. package/dist/cdn/{shared-0eb966c5.js → shared-99065f2a.js} +1 -1
  119. package/dist/cdn/shared-9aab51c0.js +1 -0
  120. package/dist/cdn/shared-9e6fc72e.js +1 -0
  121. package/dist/cdn/shared-9fce92c9.js +1 -0
  122. package/dist/cdn/shared-a03d948d.js +1 -0
  123. package/dist/cdn/{shared-dd6d3c18.js → shared-a6263179.js} +1 -1
  124. package/dist/cdn/shared-a694a204.js +1 -0
  125. package/dist/cdn/shared-a8ced8bf.js +1 -0
  126. package/dist/cdn/{shared-7c612495.js → shared-acb90deb.js} +1 -1
  127. package/dist/cdn/shared-ad70817d.js +82 -0
  128. package/dist/cdn/{shared-7c8bb60c.js → shared-b0ba62ff.js} +1 -1
  129. package/dist/cdn/{shared-8e9a3bbb.js → shared-b1304f5b.js} +1 -1
  130. package/dist/cdn/shared-b52e1d97.js +1 -0
  131. package/dist/cdn/shared-b7787aae.js +64 -0
  132. package/dist/cdn/{shared-c89ba319.js → shared-ba4053b3.js} +1 -1
  133. package/dist/cdn/shared-bc7f58ef.js +1 -0
  134. package/dist/cdn/shared-beb9cddd.js +1 -0
  135. package/dist/cdn/{shared-7474af47.js → shared-c5091857.js} +1 -1
  136. package/dist/cdn/{shared-a0836fa5.js → shared-c566fe52.js} +1 -1
  137. package/dist/cdn/shared-c677ca5a.js +1 -0
  138. package/dist/cdn/{shared-d28ac9dc.js → shared-c99a75d8.js} +1 -1
  139. package/dist/cdn/{shared-322e7efb.js → shared-c9a9077a.js} +1 -1
  140. package/dist/cdn/shared-cb26f86e.js +1 -0
  141. package/dist/cdn/{shared-31c43743.js → shared-ccb96675.js} +1 -1
  142. package/dist/cdn/{shared-f84686a8.js → shared-cfe61b3f.js} +1 -1
  143. package/dist/cdn/{shared-9803aa7c.js → shared-d3bf9ac0.js} +2 -2
  144. package/dist/cdn/{shared-a0c6a159.js → shared-d519a301.js} +2 -2
  145. package/dist/cdn/{shared-26ce8d23.js → shared-d8faafc7.js} +1 -1
  146. package/dist/cdn/shared-d9c5e26e.js +1 -0
  147. package/dist/cdn/{shared-3b2dedf9.js → shared-dc891fc4.js} +1 -1
  148. package/dist/cdn/shared-de5fc645.js +82 -0
  149. package/dist/cdn/{shared-f9f9ed5b.js → shared-e6f3e9f0.js} +1 -1
  150. package/dist/cdn/shared-e7736e8d.js +1 -0
  151. package/dist/cdn/{shared-bb686fc6.js → shared-f00d31e0.js} +1 -1
  152. package/dist/cdn/{shared-d699348f.js → shared-f0591b3e.js} +2 -2
  153. package/dist/cdn/{shared-22ba9566.js → shared-f3b35364.js} +1 -1
  154. package/dist/cdn/shared-ff31023c.js +1 -0
  155. package/dist/cdn/translations/email-template-card/en.json +8 -0
  156. package/dist/cdn/translations/email-template-form/en.json +5 -0
  157. package/dist/cdn/translations/gift-card-code-form/en.json +32 -0
  158. package/dist/cdn/translations/gift-card-code-log-card/en.json +10 -0
  159. package/dist/cdn/translations/gift-card-form/en.json +58 -1
  160. package/dist/cdn/translations/item-category-form/en.json +196 -0
  161. package/dist/cdn/translations/payments-api-fraud-protection-card/en.json +10 -0
  162. package/dist/cdn/translations/payments-api-fraud-protection-form/en.json +34 -0
  163. package/dist/cdn/translations/payments-api-payment-method-card/en.json +10 -0
  164. package/dist/cdn/translations/payments-api-payment-method-form/en.json +61 -0
  165. package/dist/cdn/translations/payments-api-payment-preset-card/en.json +11 -0
  166. package/dist/cdn/translations/payments-api-payment-preset-form/en.json +84 -0
  167. package/dist/cdn/translations/store-shipping-method-form/en.json +90 -0
  168. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.d.ts +3 -0
  169. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js +23 -0
  170. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js.map +1 -1
  171. package/dist/elements/internal/InternalAsyncDetailsControl/InternalAsyncDetailsControl.js +3 -1
  172. package/dist/elements/internal/InternalAsyncDetailsControl/InternalAsyncDetailsControl.js.map +1 -1
  173. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +23 -0
  174. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +167 -0
  175. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -0
  176. package/dist/elements/internal/InternalAsyncListControl/index.d.ts +12 -0
  177. package/dist/elements/internal/InternalAsyncListControl/index.js +14 -0
  178. package/dist/elements/internal/InternalAsyncListControl/index.js.map +1 -0
  179. package/dist/elements/internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl.d.ts +17 -0
  180. package/dist/elements/internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl.js +57 -0
  181. package/dist/elements/internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl.js.map +1 -0
  182. package/dist/elements/internal/InternalCheckboxGroupControl/index.d.ts +6 -0
  183. package/dist/elements/internal/InternalCheckboxGroupControl/index.js +8 -0
  184. package/dist/elements/internal/InternalCheckboxGroupControl/index.js.map +1 -0
  185. package/dist/elements/internal/InternalCheckboxGroupControl/types.d.ts +6 -0
  186. package/dist/elements/internal/InternalCheckboxGroupControl/types.js +2 -0
  187. package/dist/elements/internal/InternalCheckboxGroupControl/types.js.map +1 -0
  188. package/dist/elements/internal/InternalControl/InternalControl.js +3 -2
  189. package/dist/elements/internal/InternalControl/InternalControl.js.map +1 -1
  190. package/dist/elements/internal/InternalEditableControl/InternalEditableControl.d.ts +2 -0
  191. package/dist/elements/internal/InternalEditableControl/InternalEditableControl.js +6 -4
  192. package/dist/elements/internal/InternalEditableControl/InternalEditableControl.js.map +1 -1
  193. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js +1 -1
  194. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js.map +1 -1
  195. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +1 -1
  196. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -1
  197. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.d.ts +17 -0
  198. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js +57 -0
  199. package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js.map +1 -0
  200. package/dist/elements/internal/InternalSelectControl/index.d.ts +5 -0
  201. package/dist/elements/internal/InternalSelectControl/index.js +7 -0
  202. package/dist/elements/internal/InternalSelectControl/index.js.map +1 -0
  203. package/dist/elements/internal/InternalSelectControl/types.d.ts +6 -0
  204. package/dist/elements/internal/InternalSelectControl/types.js +2 -0
  205. package/dist/elements/internal/InternalSelectControl/types.js.map +1 -0
  206. package/dist/elements/internal/InternalTextAreaControl/InternalTextAreaControl.d.ts +13 -0
  207. package/dist/elements/internal/InternalTextAreaControl/InternalTextAreaControl.js +40 -0
  208. package/dist/elements/internal/InternalTextAreaControl/InternalTextAreaControl.js.map +1 -0
  209. package/dist/elements/internal/InternalTextAreaControl/index.d.ts +4 -0
  210. package/dist/elements/internal/InternalTextAreaControl/index.js +6 -0
  211. package/dist/elements/internal/InternalTextAreaControl/index.js.map +1 -0
  212. package/dist/elements/internal/InternalTextControl/InternalTextControl.js +1 -0
  213. package/dist/elements/internal/InternalTextControl/InternalTextControl.js.map +1 -1
  214. package/dist/elements/private/I18N/I18N.js +3 -0
  215. package/dist/elements/private/I18N/I18N.js.map +1 -1
  216. package/dist/elements/private/Switch/Switch.js +1 -1
  217. package/dist/elements/private/Switch/Switch.js.map +1 -1
  218. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +10 -23
  219. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
  220. package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.d.ts +10 -0
  221. package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.js +24 -0
  222. package/dist/elements/public/EmailTemplateCard/EmailTemplateCard.js.map +1 -0
  223. package/dist/elements/public/EmailTemplateCard/index.d.ts +6 -0
  224. package/dist/elements/public/EmailTemplateCard/index.js +8 -0
  225. package/dist/elements/public/EmailTemplateCard/index.js.map +1 -0
  226. package/dist/elements/public/EmailTemplateCard/types.d.ts +3 -0
  227. package/dist/elements/public/EmailTemplateCard/types.js +2 -0
  228. package/dist/elements/public/EmailTemplateCard/types.js.map +1 -0
  229. package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.d.ts +3 -0
  230. package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js +17 -0
  231. package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js.map +1 -1
  232. package/dist/elements/public/EmailTemplateForm/index.d.ts +1 -0
  233. package/dist/elements/public/EmailTemplateForm/index.js +1 -0
  234. package/dist/elements/public/EmailTemplateForm/index.js.map +1 -1
  235. package/dist/elements/public/FormDialog/FormDialog.js +1 -1
  236. package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
  237. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.d.ts +4 -0
  238. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +32 -0
  239. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -1
  240. package/dist/elements/public/GiftCardCodeForm/index.d.ts +7 -4
  241. package/dist/elements/public/GiftCardCodeForm/index.js +7 -4
  242. package/dist/elements/public/GiftCardCodeForm/index.js.map +1 -1
  243. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormItemControl/InternalGiftCardCodeFormItemControl.d.ts +5 -0
  244. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormItemControl/InternalGiftCardCodeFormItemControl.js +23 -0
  245. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormItemControl/InternalGiftCardCodeFormItemControl.js.map +1 -0
  246. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormItemControl/index.d.ts +6 -0
  247. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormItemControl/index.js +8 -0
  248. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormItemControl/index.js.map +1 -0
  249. package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.d.ts +12 -0
  250. package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.js +108 -0
  251. package/dist/elements/public/GiftCardCodeLogCard/GiftCardCodeLogCard.js.map +1 -0
  252. package/dist/elements/public/GiftCardCodeLogCard/index.d.ts +6 -0
  253. package/dist/elements/public/GiftCardCodeLogCard/index.js +8 -0
  254. package/dist/elements/public/GiftCardCodeLogCard/index.js.map +1 -0
  255. package/dist/elements/public/GiftCardCodeLogCard/types.d.ts +3 -0
  256. package/dist/elements/public/GiftCardCodeLogCard/types.js +2 -0
  257. package/dist/elements/public/GiftCardCodeLogCard/types.js.map +1 -0
  258. package/dist/elements/public/GiftCardForm/GiftCardForm.js +25 -0
  259. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  260. package/dist/elements/public/GiftCardForm/index.d.ts +1 -2
  261. package/dist/elements/public/GiftCardForm/index.js +1 -2
  262. package/dist/elements/public/GiftCardForm/index.js.map +1 -1
  263. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.d.ts +14 -0
  264. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.js +93 -0
  265. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.js.map +1 -0
  266. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.d.ts +6 -0
  267. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.js +8 -0
  268. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.js.map +1 -0
  269. package/dist/elements/public/ItemCard/ItemCard.js +8 -6
  270. package/dist/elements/public/ItemCard/ItemCard.js.map +1 -1
  271. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.d.ts +6 -0
  272. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js +16 -0
  273. package/dist/elements/public/ItemCategoryCard/ItemCategoryCard.js.map +1 -0
  274. package/dist/elements/public/ItemCategoryCard/index.d.ts +3 -0
  275. package/dist/elements/public/ItemCategoryCard/index.js +5 -0
  276. package/dist/elements/public/ItemCategoryCard/index.js.map +1 -0
  277. package/dist/elements/public/ItemCategoryCard/types.d.ts +3 -0
  278. package/dist/elements/public/ItemCategoryCard/types.js +2 -0
  279. package/dist/elements/public/ItemCategoryCard/types.js.map +1 -0
  280. package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.d.ts +31 -0
  281. package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js +309 -0
  282. package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js.map +1 -0
  283. package/dist/elements/public/ItemCategoryForm/index.d.ts +10 -0
  284. package/dist/elements/public/ItemCategoryForm/index.js +12 -0
  285. package/dist/elements/public/ItemCategoryForm/index.js.map +1 -0
  286. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/InternalItemCategoryFormTaxesControl.d.ts +8 -0
  287. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/InternalItemCategoryFormTaxesControl.js +52 -0
  288. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/InternalItemCategoryFormTaxesControl.js.map +1 -0
  289. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/index.d.ts +6 -0
  290. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/index.js +8 -0
  291. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/index.js.map +1 -0
  292. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.d.ts +11 -0
  293. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js +85 -0
  294. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.js.map +1 -0
  295. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/index.d.ts +5 -0
  296. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/index.js +7 -0
  297. package/dist/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/index.js.map +1 -0
  298. package/dist/elements/public/ItemCategoryForm/types.d.ts +3 -0
  299. package/dist/elements/public/ItemCategoryForm/types.js +2 -0
  300. package/dist/elements/public/ItemCategoryForm/types.js.map +1 -0
  301. package/dist/elements/public/NucleonElement/API.js +1 -1
  302. package/dist/elements/public/NucleonElement/API.js.map +1 -1
  303. package/dist/elements/public/NucleonElement/NucleonElement.d.ts +5 -3
  304. package/dist/elements/public/NucleonElement/NucleonElement.js +57 -33
  305. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  306. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.d.ts +1 -1
  307. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.js +2 -2
  308. package/dist/elements/public/PaymentMethodCard/PaymentMethodCard.js.map +1 -1
  309. package/dist/elements/public/PaymentsApi/PaymentsApi.d.ts +18 -0
  310. package/dist/elements/public/PaymentsApi/PaymentsApi.js +92 -0
  311. package/dist/elements/public/PaymentsApi/PaymentsApi.js.map +1 -0
  312. package/dist/elements/public/PaymentsApi/api/composers/available_fraud_protections.d.ts +6 -0
  313. package/dist/elements/public/PaymentsApi/api/composers/available_fraud_protections.js +95 -0
  314. package/dist/elements/public/PaymentsApi/api/composers/available_fraud_protections.js.map +1 -0
  315. package/dist/elements/public/PaymentsApi/api/composers/available_payment_methods.d.ts +11 -0
  316. package/dist/elements/public/PaymentsApi/api/composers/available_payment_methods.js +15 -0
  317. package/dist/elements/public/PaymentsApi/api/composers/available_payment_methods.js.map +1 -0
  318. package/dist/elements/public/PaymentsApi/api/composers/fraud_protection.d.ts +10 -0
  319. package/dist/elements/public/PaymentsApi/api/composers/fraud_protection.js +20 -0
  320. package/dist/elements/public/PaymentsApi/api/composers/fraud_protection.js.map +1 -0
  321. package/dist/elements/public/PaymentsApi/api/composers/fraud_protections.d.ts +10 -0
  322. package/dist/elements/public/PaymentsApi/api/composers/fraud_protections.js +39 -0
  323. package/dist/elements/public/PaymentsApi/api/composers/fraud_protections.js.map +1 -0
  324. package/dist/elements/public/PaymentsApi/api/composers/payment_method.d.ts +18 -0
  325. package/dist/elements/public/PaymentsApi/api/composers/payment_method.js +25 -0
  326. package/dist/elements/public/PaymentsApi/api/composers/payment_method.js.map +1 -0
  327. package/dist/elements/public/PaymentsApi/api/composers/payment_methods.d.ts +14 -0
  328. package/dist/elements/public/PaymentsApi/api/composers/payment_methods.js +59 -0
  329. package/dist/elements/public/PaymentsApi/api/composers/payment_methods.js.map +1 -0
  330. package/dist/elements/public/PaymentsApi/api/composers/payment_preset.d.ts +8 -0
  331. package/dist/elements/public/PaymentsApi/api/composers/payment_preset.js +22 -0
  332. package/dist/elements/public/PaymentsApi/api/composers/payment_preset.js.map +1 -0
  333. package/dist/elements/public/PaymentsApi/api/composers/payment_presets.d.ts +8 -0
  334. package/dist/elements/public/PaymentsApi/api/composers/payment_presets.js +36 -0
  335. package/dist/elements/public/PaymentsApi/api/composers/payment_presets.js.map +1 -0
  336. package/dist/elements/public/PaymentsApi/api/handlers/available_fraud_protections.d.ts +12 -0
  337. package/dist/elements/public/PaymentsApi/api/handlers/available_fraud_protections.js +34 -0
  338. package/dist/elements/public/PaymentsApi/api/handlers/available_fraud_protections.js.map +1 -0
  339. package/dist/elements/public/PaymentsApi/api/handlers/available_payment_methods.d.ts +16 -0
  340. package/dist/elements/public/PaymentsApi/api/handlers/available_payment_methods.js +44 -0
  341. package/dist/elements/public/PaymentsApi/api/handlers/available_payment_methods.js.map +1 -0
  342. package/dist/elements/public/PaymentsApi/api/handlers/fraud_protection.d.ts +17 -0
  343. package/dist/elements/public/PaymentsApi/api/handlers/fraud_protection.js +68 -0
  344. package/dist/elements/public/PaymentsApi/api/handlers/fraud_protection.js.map +1 -0
  345. package/dist/elements/public/PaymentsApi/api/handlers/fraud_protections.d.ts +17 -0
  346. package/dist/elements/public/PaymentsApi/api/handlers/fraud_protections.js +77 -0
  347. package/dist/elements/public/PaymentsApi/api/handlers/fraud_protections.js.map +1 -0
  348. package/dist/elements/public/PaymentsApi/api/handlers/payment_method.d.ts +22 -0
  349. package/dist/elements/public/PaymentsApi/api/handlers/payment_method.js +97 -0
  350. package/dist/elements/public/PaymentsApi/api/handlers/payment_method.js.map +1 -0
  351. package/dist/elements/public/PaymentsApi/api/handlers/payment_methods.d.ts +21 -0
  352. package/dist/elements/public/PaymentsApi/api/handlers/payment_methods.js +113 -0
  353. package/dist/elements/public/PaymentsApi/api/handlers/payment_methods.js.map +1 -0
  354. package/dist/elements/public/PaymentsApi/api/handlers/payment_preset.d.ts +14 -0
  355. package/dist/elements/public/PaymentsApi/api/handlers/payment_preset.js +42 -0
  356. package/dist/elements/public/PaymentsApi/api/handlers/payment_preset.js.map +1 -0
  357. package/dist/elements/public/PaymentsApi/api/handlers/payment_presets.d.ts +14 -0
  358. package/dist/elements/public/PaymentsApi/api/handlers/payment_presets.js +47 -0
  359. package/dist/elements/public/PaymentsApi/api/handlers/payment_presets.js.map +1 -0
  360. package/dist/elements/public/PaymentsApi/api/index.d.ts +11 -0
  361. package/dist/elements/public/PaymentsApi/api/index.js +35 -0
  362. package/dist/elements/public/PaymentsApi/api/index.js.map +1 -0
  363. package/dist/elements/public/PaymentsApi/api/types.d.ts +154 -0
  364. package/dist/elements/public/PaymentsApi/api/types.js +2 -0
  365. package/dist/elements/public/PaymentsApi/api/types.js.map +1 -0
  366. package/dist/elements/public/PaymentsApi/api/utils.d.ts +1 -0
  367. package/dist/elements/public/PaymentsApi/api/utils.js +7 -0
  368. package/dist/elements/public/PaymentsApi/api/utils.js.map +1 -0
  369. package/dist/elements/public/PaymentsApi/index.d.ts +2 -0
  370. package/dist/elements/public/PaymentsApi/index.js +4 -0
  371. package/dist/elements/public/PaymentsApi/index.js.map +1 -0
  372. package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.d.ts +14 -0
  373. package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.js +52 -0
  374. package/dist/elements/public/PaymentsApiFraudProtectionCard/PaymentsApiFraudProtectionCard.js.map +1 -0
  375. package/dist/elements/public/PaymentsApiFraudProtectionCard/index.d.ts +4 -0
  376. package/dist/elements/public/PaymentsApiFraudProtectionCard/index.js +6 -0
  377. package/dist/elements/public/PaymentsApiFraudProtectionCard/index.js.map +1 -0
  378. package/dist/elements/public/PaymentsApiFraudProtectionCard/types.d.ts +1 -0
  379. package/dist/elements/public/PaymentsApiFraudProtectionCard/types.js +2 -0
  380. package/dist/elements/public/PaymentsApiFraudProtectionCard/types.js.map +1 -0
  381. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.d.ts +17 -0
  382. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js +217 -0
  383. package/dist/elements/public/PaymentsApiFraudProtectionForm/PaymentsApiFraudProtectionForm.js.map +1 -0
  384. package/dist/elements/public/PaymentsApiFraudProtectionForm/index.d.ts +11 -0
  385. package/dist/elements/public/PaymentsApiFraudProtectionForm/index.js +13 -0
  386. package/dist/elements/public/PaymentsApiFraudProtectionForm/index.js.map +1 -0
  387. package/dist/elements/public/PaymentsApiFraudProtectionForm/types.d.ts +3 -0
  388. package/dist/elements/public/PaymentsApiFraudProtectionForm/types.js +2 -0
  389. package/dist/elements/public/PaymentsApiFraudProtectionForm/types.js.map +1 -0
  390. package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.d.ts +15 -0
  391. package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.js +54 -0
  392. package/dist/elements/public/PaymentsApiPaymentMethodCard/PaymentsApiPaymentMethodCard.js.map +1 -0
  393. package/dist/elements/public/PaymentsApiPaymentMethodCard/index.d.ts +4 -0
  394. package/dist/elements/public/PaymentsApiPaymentMethodCard/index.js +6 -0
  395. package/dist/elements/public/PaymentsApiPaymentMethodCard/index.js.map +1 -0
  396. package/dist/elements/public/PaymentsApiPaymentMethodCard/types.d.ts +1 -0
  397. package/dist/elements/public/PaymentsApiPaymentMethodCard/types.js +2 -0
  398. package/dist/elements/public/PaymentsApiPaymentMethodCard/types.js.map +1 -0
  399. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.d.ts +20 -0
  400. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js +428 -0
  401. package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js.map +1 -0
  402. package/dist/elements/public/PaymentsApiPaymentMethodForm/index.d.ts +10 -0
  403. package/dist/elements/public/PaymentsApiPaymentMethodForm/index.js +12 -0
  404. package/dist/elements/public/PaymentsApiPaymentMethodForm/index.js.map +1 -0
  405. package/dist/elements/public/PaymentsApiPaymentMethodForm/types.d.ts +3 -0
  406. package/dist/elements/public/PaymentsApiPaymentMethodForm/types.js +2 -0
  407. package/dist/elements/public/PaymentsApiPaymentMethodForm/types.js.map +1 -0
  408. package/dist/elements/public/PaymentsApiPaymentPresetCard/PaymentsApiPaymentPresetCard.d.ts +10 -0
  409. package/dist/elements/public/PaymentsApiPaymentPresetCard/PaymentsApiPaymentPresetCard.js +31 -0
  410. package/dist/elements/public/PaymentsApiPaymentPresetCard/PaymentsApiPaymentPresetCard.js.map +1 -0
  411. package/dist/elements/public/PaymentsApiPaymentPresetCard/index.d.ts +4 -0
  412. package/dist/elements/public/PaymentsApiPaymentPresetCard/index.js +6 -0
  413. package/dist/elements/public/PaymentsApiPaymentPresetCard/index.js.map +1 -0
  414. package/dist/elements/public/PaymentsApiPaymentPresetCard/types.d.ts +1 -0
  415. package/dist/elements/public/PaymentsApiPaymentPresetCard/types.js +2 -0
  416. package/dist/elements/public/PaymentsApiPaymentPresetCard/types.js.map +1 -0
  417. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.d.ts +22 -0
  418. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js +145 -0
  419. package/dist/elements/public/PaymentsApiPaymentPresetForm/PaymentsApiPaymentPresetForm.js.map +1 -0
  420. package/dist/elements/public/PaymentsApiPaymentPresetForm/index.d.ts +10 -0
  421. package/dist/elements/public/PaymentsApiPaymentPresetForm/index.js +12 -0
  422. package/dist/elements/public/PaymentsApiPaymentPresetForm/index.js.map +1 -0
  423. package/dist/elements/public/PaymentsApiPaymentPresetForm/types.d.ts +1 -0
  424. package/dist/elements/public/PaymentsApiPaymentPresetForm/types.js +2 -0
  425. package/dist/elements/public/PaymentsApiPaymentPresetForm/types.js.map +1 -0
  426. package/dist/elements/public/QueryBuilder/components/Input.js +10 -8
  427. package/dist/elements/public/QueryBuilder/components/Input.js.map +1 -1
  428. package/dist/elements/public/QueryBuilder/components/RangeValue.js +7 -5
  429. package/dist/elements/public/QueryBuilder/components/RangeValue.js.map +1 -1
  430. package/dist/elements/public/QueryBuilder/components/Select.js +3 -1
  431. package/dist/elements/public/QueryBuilder/components/Select.js.map +1 -1
  432. package/dist/elements/public/ShipmentCard/ShipmentCard.js +1 -1
  433. package/dist/elements/public/ShipmentCard/ShipmentCard.js.map +1 -1
  434. package/dist/elements/public/ShipmentCard/types.d.ts +2 -16
  435. package/dist/elements/public/ShipmentCard/types.js.map +1 -1
  436. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.d.ts +25 -0
  437. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js +197 -0
  438. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js.map +1 -0
  439. package/dist/elements/public/StoreShippingMethodForm/index.d.ts +11 -0
  440. package/dist/elements/public/StoreShippingMethodForm/index.js +13 -0
  441. package/dist/elements/public/StoreShippingMethodForm/index.js.map +1 -0
  442. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/InternalStoreShippingMethodFormServicesControl.d.ts +5 -0
  443. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/InternalStoreShippingMethodFormServicesControl.js +33 -0
  444. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/InternalStoreShippingMethodFormServicesControl.js.map +1 -0
  445. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/index.d.ts +6 -0
  446. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/index.js +8 -0
  447. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/index.js.map +1 -0
  448. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/InternalStoreShippingMethodFormServicesPage.d.ts +19 -0
  449. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/InternalStoreShippingMethodFormServicesPage.js +96 -0
  450. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/InternalStoreShippingMethodFormServicesPage.js.map +1 -0
  451. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/index.d.ts +5 -0
  452. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/index.js +7 -0
  453. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/index.js.map +1 -0
  454. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/InternalStoreShippingMethodFormServicesPageItem.d.ts +17 -0
  455. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/InternalStoreShippingMethodFormServicesPageItem.js +45 -0
  456. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/InternalStoreShippingMethodFormServicesPageItem.js.map +1 -0
  457. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/index.d.ts +3 -0
  458. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/index.js +5 -0
  459. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/index.js.map +1 -0
  460. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/InternalStoreShippingMethodFormServicesPageItemContent.d.ts +16 -0
  461. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/InternalStoreShippingMethodFormServicesPageItemContent.js +49 -0
  462. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/InternalStoreShippingMethodFormServicesPageItemContent.js.map +1 -0
  463. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/index.d.ts +3 -0
  464. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/index.js +5 -0
  465. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/index.js.map +1 -0
  466. package/dist/elements/public/StoreShippingMethodForm/types.d.ts +5 -0
  467. package/dist/elements/public/StoreShippingMethodForm/types.js +2 -0
  468. package/dist/elements/public/StoreShippingMethodForm/types.js.map +1 -0
  469. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +1 -2
  470. package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
  471. package/dist/elements/public/TaxCard/TaxCard.d.ts +4 -4
  472. package/dist/elements/public/TaxCard/TaxCard.js +12 -8
  473. package/dist/elements/public/TaxCard/TaxCard.js.map +1 -1
  474. package/dist/elements/public/TaxCard/index.d.ts +1 -3
  475. package/dist/elements/public/TaxCard/index.js +1 -3
  476. package/dist/elements/public/TaxCard/index.js.map +1 -1
  477. package/dist/elements/public/index.d.ts +12 -0
  478. package/dist/elements/public/index.defined.d.ts +12 -0
  479. package/dist/elements/public/index.defined.js +12 -0
  480. package/dist/elements/public/index.defined.js.map +1 -1
  481. package/dist/elements/public/index.js +12 -0
  482. package/dist/elements/public/index.js.map +1 -1
  483. package/dist/mixins/configurable.js +16 -8
  484. package/dist/mixins/configurable.js.map +1 -1
  485. package/dist/mixins/inferrable.js +25 -23
  486. package/dist/mixins/inferrable.js.map +1 -1
  487. package/dist/mixins/themeable.js +84 -0
  488. package/dist/mixins/themeable.js.map +1 -1
  489. package/dist/utils/serialize-date.d.ts +1 -0
  490. package/dist/utils/serialize-date.js +7 -0
  491. package/dist/utils/serialize-date.js.map +1 -1
  492. package/package.json +2 -2
  493. package/dist/cdn/shared-2061be9a.js +0 -1
  494. package/dist/cdn/shared-45feee83.js +0 -1
  495. package/dist/cdn/shared-63685d2e.js +0 -302
  496. package/dist/cdn/shared-8d4fef94.js +0 -1
  497. package/dist/cdn/shared-92327224.js +0 -15
  498. package/dist/cdn/shared-a5e52b8f.js +0 -64
  499. package/dist/cdn/shared-ac44429d.js +0 -1
  500. package/dist/cdn/shared-b3df4f38.js +0 -1
  501. package/dist/cdn/shared-c309e0ef.js +0 -1
  502. package/dist/cdn/shared-c8677ba3.js +0 -1
  503. package/dist/cdn/shared-dc1c6edd.js +0 -1
  504. package/dist/cdn/shared-dc3ffd38.js +0 -1
  505. package/dist/cdn/shared-dda2a74d.js +0 -1
  506. package/dist/cdn/shared-e9a4a204.js +0 -1
  507. package/dist/cdn/shared-fadcb2e1.js +0 -1
@@ -0,0 +1,52 @@
1
+ import { InternalControl } from "../../../../internal/InternalControl/InternalControl.js";
2
+ import { html } from 'lit-html';
3
+ export class InternalItemCategoryFormTaxesControl extends InternalControl {
4
+ constructor() {
5
+ super(...arguments);
6
+ this.taxes = null;
7
+ }
8
+ static get properties() {
9
+ return {
10
+ ...super.properties,
11
+ taxes: { type: String },
12
+ };
13
+ }
14
+ renderControl() {
15
+ var _a, _b, _c, _d;
16
+ const nucleon = this.nucleon;
17
+ let taxes;
18
+ try {
19
+ const url = new URL((_a = this.taxes) !== null && _a !== void 0 ? _a : '');
20
+ url.searchParams.set('limit', '5');
21
+ taxes = url.toString();
22
+ }
23
+ catch (_e) {
24
+ taxes = (_b = this.taxes) !== null && _b !== void 0 ? _b : '';
25
+ }
26
+ return html `
27
+ <foxy-i18n
28
+ class="block text-s font-medium text-secondary leading-none mb-s"
29
+ infer=""
30
+ key="title"
31
+ >
32
+ </foxy-i18n>
33
+
34
+ <foxy-pagination first=${taxes} infer="pagination">
35
+ <foxy-collection-page
36
+ class="block mb-s divide-y divide-contrast-10 border border-contrast-10 rounded-t-l rounded-b-l"
37
+ infer=""
38
+ item="foxy-internal-item-category-form-taxes-control-item"
39
+ .props=${{
40
+ 'tax-item-categories': (_d = (_c = nucleon === null || nucleon === void 0 ? void 0 : nucleon.form._links) === null || _c === void 0 ? void 0 : _c['fx:tax_item_categories'].href) !== null && _d !== void 0 ? _d : '',
41
+ 'item-category': nucleon === null || nucleon === void 0 ? void 0 : nucleon.href,
42
+ }}
43
+ >
44
+ </foxy-collection-page>
45
+ </foxy-pagination>
46
+
47
+ <foxy-i18n class="block text-xs text-secondary leading-xs mt-xs" infer="" key="helper_text">
48
+ </foxy-i18n>
49
+ `;
50
+ }
51
+ }
52
+ //# sourceMappingURL=InternalItemCategoryFormTaxesControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalItemCategoryFormTaxesControl.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/InternalItemCategoryFormTaxesControl.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,gEAA6D;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,OAAO,oCAAqC,SAAQ,eAAe;IAAzE;;QAQE,UAAK,GAAkB,IAAI,CAAC;IAuC9B,CAAC;IA9CC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAID,aAAa;;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAsC,CAAC;QAC5D,IAAI,KAAa,CAAC;QAElB,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,OAAC,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC;YACtC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACnC,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SACxB;QAAC,WAAM;YACN,KAAK,SAAG,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC;SAC1B;QAED,OAAO,IAAI,CAAA;;;;;;;;+BAQgB,KAAK;;;;;mBAKjB;YACP,qBAAqB,cAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC,MAAM,0CAAG,wBAAwB,EAAE,IAAI,mCAAI,EAAE;YAClF,eAAe,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI;SAC/B;;;;;;;KAON,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonElement } from '../../../NucleonElement/NucleonElement';\nimport type { Data } from '../../types';\n\nimport { InternalControl } from '../../../../internal/InternalControl/InternalControl';\nimport { html } from 'lit-html';\n\nexport class InternalItemCategoryFormTaxesControl extends InternalControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n taxes: { type: String },\n };\n }\n\n taxes: string | null = null;\n\n renderControl(): TemplateResult {\n const nucleon = this.nucleon as NucleonElement<Data> | null;\n let taxes: string;\n\n try {\n const url = new URL(this.taxes ?? '');\n url.searchParams.set('limit', '5');\n taxes = url.toString();\n } catch {\n taxes = this.taxes ?? '';\n }\n\n return html`\n <foxy-i18n\n class=\"block text-s font-medium text-secondary leading-none mb-s\"\n infer=\"\"\n key=\"title\"\n >\n </foxy-i18n>\n\n <foxy-pagination first=${taxes} infer=\"pagination\">\n <foxy-collection-page\n class=\"block mb-s divide-y divide-contrast-10 border border-contrast-10 rounded-t-l rounded-b-l\"\n infer=\"\"\n item=\"foxy-internal-item-category-form-taxes-control-item\"\n .props=${{\n 'tax-item-categories': nucleon?.form._links?.['fx:tax_item_categories'].href ?? '',\n 'item-category': nucleon?.href,\n }}\n >\n </foxy-collection-page>\n </foxy-pagination>\n\n <foxy-i18n class=\"block text-xs text-secondary leading-xs mt-xs\" infer=\"\" key=\"helper_text\">\n </foxy-i18n>\n `;\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import '../../../../internal/InternalControl/index';
2
+ import '../../../CollectionPage/index';
3
+ import '../../../Pagination/index';
4
+ import '../InternalItemCategoryFormTaxesControlItem/index';
5
+ import { InternalItemCategoryFormTaxesControl } from './InternalItemCategoryFormTaxesControl';
6
+ export { InternalItemCategoryFormTaxesControl };
@@ -0,0 +1,8 @@
1
+ import "../../../../internal/InternalControl/index.js";
2
+ import "../../../CollectionPage/index.js";
3
+ import "../../../Pagination/index.js";
4
+ import "../InternalItemCategoryFormTaxesControlItem/index.js";
5
+ import { InternalItemCategoryFormTaxesControl } from "./InternalItemCategoryFormTaxesControl.js";
6
+ customElements.define('foxy-internal-item-category-form-taxes-control', InternalItemCategoryFormTaxesControl);
7
+ export { InternalItemCategoryFormTaxesControl };
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControl/index.ts"],"names":[],"mappings":"AAAA,uDAAoD;AAEpD,0CAAuC;AACvC,sCAAmC;AAEnC,8DAA2D;AAE3D,OAAO,EAAE,oCAAoC,EAAE,kDAA+C;AAE9F,cAAc,CAAC,MAAM,CACnB,gDAAgD,EAChD,oCAAoC,CACrC,CAAC;AAEF,OAAO,EAAE,oCAAoC,EAAE,CAAC","sourcesContent":["import '../../../../internal/InternalControl/index';\n\nimport '../../../CollectionPage/index';\nimport '../../../Pagination/index';\n\nimport '../InternalItemCategoryFormTaxesControlItem/index';\n\nimport { InternalItemCategoryFormTaxesControl } from './InternalItemCategoryFormTaxesControl';\n\ncustomElements.define(\n 'foxy-internal-item-category-form-taxes-control',\n InternalItemCategoryFormTaxesControl\n);\n\nexport { InternalItemCategoryFormTaxesControl };\n"]}
@@ -0,0 +1,11 @@
1
+ import type { PropertyDeclarations } from 'lit-element';
2
+ import type { TemplateResult } from 'lit-html';
3
+ import { TaxCard } from '../../../TaxCard/TaxCard';
4
+ export declare class InternalItemCategoryFormTaxesControlItem extends TaxCard {
5
+ static get properties(): PropertyDeclarations;
6
+ taxItemCategories: string | null;
7
+ itemCategory: string | null;
8
+ private __resourceElementIsBusy;
9
+ private __queryElementData;
10
+ render(): TemplateResult;
11
+ }
@@ -0,0 +1,85 @@
1
+ import { ifDefined } from 'lit-html/directives/if-defined';
2
+ import { TaxCard } from "../../../TaxCard/TaxCard.js";
3
+ import { html } from 'lit-html';
4
+ export class InternalItemCategoryFormTaxesControlItem extends TaxCard {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.taxItemCategories = null;
8
+ this.itemCategory = null;
9
+ this.__resourceElementIsBusy = false;
10
+ this.__queryElementData = null;
11
+ }
12
+ static get properties() {
13
+ return {
14
+ ...super.properties,
15
+ taxItemCategories: { type: String, attribute: 'tax-item-categories' },
16
+ itemCategory: { type: String, attribute: 'item-category' },
17
+ };
18
+ }
19
+ render() {
20
+ var _a, _b, _c, _d, _e;
21
+ const taxItemCategory = (_c = (_b = (_a = this.__queryElementData) === null || _a === void 0 ? void 0 : _a._embedded) === null || _b === void 0 ? void 0 : _b['fx:tax_item_categories']) === null || _c === void 0 ? void 0 : _c[0];
22
+ let taxItemCategories;
23
+ try {
24
+ const url = new URL((_d = this.taxItemCategories) !== null && _d !== void 0 ? _d : '');
25
+ const hrefAsUrl = new URL(this.href);
26
+ const id = hrefAsUrl.pathname.split('/').pop();
27
+ if (!id)
28
+ throw new Error();
29
+ url.searchParams.set('tax_id', id);
30
+ url.searchParams.set('limit', '1');
31
+ taxItemCategories = url.toString();
32
+ }
33
+ catch (_f) {
34
+ taxItemCategories = undefined;
35
+ }
36
+ return html `
37
+ <foxy-nucleon
38
+ href=${ifDefined(taxItemCategories)}
39
+ id="query"
40
+ @update=${(evt) => {
41
+ const nucleon = evt.currentTarget;
42
+ this.__queryElementData = nucleon.data;
43
+ this.requestUpdate();
44
+ }}
45
+ >
46
+ <foxy-nucleon
47
+ parent=${ifDefined((_e = this.taxItemCategories) !== null && _e !== void 0 ? _e : undefined)}
48
+ href=${ifDefined(taxItemCategory === null || taxItemCategory === void 0 ? void 0 : taxItemCategory._links.self.href)}
49
+ id="resource"
50
+ @update=${(evt) => {
51
+ const nucleon = evt.currentTarget;
52
+ this.__resourceElementIsBusy = !nucleon.in('idle');
53
+ this.requestUpdate();
54
+ }}
55
+ >
56
+ </foxy-nucleon>
57
+ </foxy-nucleon>
58
+
59
+ <vaadin-checkbox
60
+ class="px-m py-s block overflow-hidden"
61
+ ?disabled=${!this.__queryElementData || this.__resourceElementIsBusy || this.disabled}
62
+ ?checked=${!!taxItemCategory}
63
+ @change=${(evt) => {
64
+ const checkbox = evt.currentTarget;
65
+ const resource = this.renderRoot.querySelector('#resource');
66
+ if (checkbox.checked) {
67
+ resource.edit({
68
+ // TODO remove the directive below once sdk type have been corrected
69
+ // @ts-expect-error SDK types are wrong
70
+ tax_uri: this.data._links.self.href,
71
+ item_category_uri: this.itemCategory,
72
+ });
73
+ resource.submit();
74
+ }
75
+ else {
76
+ resource.delete();
77
+ }
78
+ }}
79
+ >
80
+ ${super.render()}
81
+ </vaadin-checkbox>
82
+ `;
83
+ }
84
+ }
85
+ //# sourceMappingURL=InternalItemCategoryFormTaxesControlItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalItemCategoryFormTaxesControlItem.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/InternalItemCategoryFormTaxesControlItem.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { CheckboxElement } from '@vaadin/vaadin-checkbox';\nimport type { NucleonElement } from '../../../NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { TaxCard } from '../../../TaxCard/TaxCard';\nimport { html } from 'lit-html';\n\ntype TaxItemCategories = Resource<Rels.TaxItemCategories>;\ntype TaxItemCategory = Resource<Rels.TaxItemCategory>;\n\nexport class InternalItemCategoryFormTaxesControlItem extends TaxCard {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n taxItemCategories: { type: String, attribute: 'tax-item-categories' },\n itemCategory: { type: String, attribute: 'item-category' },\n };\n }\n\n taxItemCategories: string | null = null;\n\n itemCategory: string | null = null;\n\n private __resourceElementIsBusy = false;\n\n private __queryElementData: TaxItemCategories | null = null;\n\n render(): TemplateResult {\n const taxItemCategory = this.__queryElementData?._embedded?.['fx:tax_item_categories']?.[0];\n let taxItemCategories: string | undefined;\n\n try {\n const url = new URL(this.taxItemCategories ?? '');\n const hrefAsUrl = new URL(this.href);\n const id = hrefAsUrl.pathname.split('/').pop();\n\n if (!id) throw new Error();\n\n url.searchParams.set('tax_id', id);\n url.searchParams.set('limit', '1');\n taxItemCategories = url.toString();\n } catch {\n taxItemCategories = undefined;\n }\n\n return html`\n <foxy-nucleon\n href=${ifDefined(taxItemCategories)}\n id=\"query\"\n @update=${(evt: CustomEvent) => {\n const nucleon = evt.currentTarget as NucleonElement<TaxItemCategories>;\n this.__queryElementData = nucleon.data;\n this.requestUpdate();\n }}\n >\n <foxy-nucleon\n parent=${ifDefined(this.taxItemCategories ?? undefined)}\n href=${ifDefined(taxItemCategory?._links.self.href)}\n id=\"resource\"\n @update=${(evt: CustomEvent) => {\n const nucleon = evt.currentTarget as NucleonElement<TaxItemCategories>;\n this.__resourceElementIsBusy = !nucleon.in('idle');\n this.requestUpdate();\n }}\n >\n </foxy-nucleon>\n </foxy-nucleon>\n\n <vaadin-checkbox\n class=\"px-m py-s block overflow-hidden\"\n ?disabled=${!this.__queryElementData || this.__resourceElementIsBusy || this.disabled}\n ?checked=${!!taxItemCategory}\n @change=${(evt: CustomEvent) => {\n type ResourceElement = NucleonElement<TaxItemCategory>;\n\n const checkbox = evt.currentTarget as CheckboxElement;\n const resource = this.renderRoot.querySelector('#resource') as ResourceElement;\n\n if (checkbox.checked) {\n resource.edit({\n // TODO remove the directive below once sdk type have been corrected\n // @ts-expect-error SDK types are wrong\n tax_uri: this.data!._links.self.href,\n item_category_uri: this.itemCategory!,\n });\n\n resource.submit();\n } else {\n resource.delete();\n }\n }}\n >\n ${super.render()}\n </vaadin-checkbox>\n `;\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import '@vaadin/vaadin-checkbox';
2
+ import '../../../NucleonElement/index';
3
+ import '../../../TaxCard/index';
4
+ import { InternalItemCategoryFormTaxesControlItem } from './InternalItemCategoryFormTaxesControlItem';
5
+ export { InternalItemCategoryFormTaxesControlItem };
@@ -0,0 +1,7 @@
1
+ import '@vaadin/vaadin-checkbox';
2
+ import "../../../NucleonElement/index.js";
3
+ import "../../../TaxCard/index.js";
4
+ import { InternalItemCategoryFormTaxesControlItem } from "./InternalItemCategoryFormTaxesControlItem.js";
5
+ customElements.define('foxy-internal-item-category-form-taxes-control-item', InternalItemCategoryFormTaxesControlItem);
6
+ export { InternalItemCategoryFormTaxesControlItem };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/elements/public/ItemCategoryForm/internal/InternalItemCategoryFormTaxesControlItem/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAEjC,0CAAuC;AACvC,mCAAgC;AAEhC,OAAO,EAAE,wCAAwC,EAAE,sDAAmD;AAEtG,cAAc,CAAC,MAAM,CACnB,qDAAqD,EACrD,wCAAwC,CACzC,CAAC;AAEF,OAAO,EAAE,wCAAwC,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-checkbox';\n\nimport '../../../NucleonElement/index';\nimport '../../../TaxCard/index';\n\nimport { InternalItemCategoryFormTaxesControlItem } from './InternalItemCategoryFormTaxesControlItem';\n\ncustomElements.define(\n 'foxy-internal-item-category-form-taxes-control-item',\n InternalItemCategoryFormTaxesControlItem\n);\n\nexport { InternalItemCategoryFormTaxesControlItem };\n"]}
@@ -0,0 +1,3 @@
1
+ import type { Rels } from '@foxy.io/sdk/backend';
2
+ import type { Resource } from '@foxy.io/sdk/core';
3
+ export declare type Data = Resource<Rels.ItemCategory>;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemCategoryForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Rels } from '@foxy.io/sdk/backend';\nimport type { Resource } from '@foxy.io/sdk/core';\n\nexport type Data = Resource<Rels.ItemCategory>;\n"]}
@@ -25,7 +25,7 @@ export class API extends CoreAPI {
25
25
  });
26
26
  target.dispatchEvent(event);
27
27
  if (!event.defaultPrevented)
28
- fetch(request).then(resolve).catch(reject);
28
+ resolve(new Response(null, { status: 500 }));
29
29
  }),
30
30
  });
31
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"API.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/API.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,wBAAqB;AAE1C;;;;;GAKG;AACH,MAAM,OAAO,GAAI,SAAQ,OAAY;IAInC,0FAA0F;IAC1F,YAAY,MAAmB;QAC7B,KAAK,CAAC;YACJ,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/B,KAAK,EAAE,CAAC,GAAG,IAAiC,EAAqB,EAAE,CACjE,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxC,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEvF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBACxD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBAE7C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;oBACpC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO;oBACP,OAAO;oBACP,MAAM;iBACP,CAAC,CAAC;gBAEH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,gBAAgB;oBAAE,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1E,CAAC,CAAC;SACL,CAAC,CAAC;IACL,CAAC;;AA3BD,gFAAgF;AAChE,cAAU,GAAG,UAAU,CAAC","sourcesContent":["import { API as CoreAPI } from '@foxy.io/sdk/core';\nimport { FetchEvent } from './FetchEvent';\n\n/**\n * Universal [API](https://sdk.foxy.dev/classes/_core_index_.api.html) client\n * that dispatches the `fetch` event on an element before each request. It bubbles, crosses\n * shadow DOM boundaries, and if cancelled, the target element will not make the request\n * and instead will wait for a response from `event.respondWith()`.\n */\nexport class API extends CoreAPI<any> {\n /** Instances of this event are dispatched on an element before each request. */\n static readonly FetchEvent = FetchEvent;\n\n /** @param target `EventTarget` to dispatch `fetch` events on (e.g. element or window). */\n constructor(target: EventTarget) {\n super({\n base: new URL(document.baseURI),\n fetch: (...args: Parameters<Window['fetch']>): Promise<Response> =>\n new Promise<Response>((resolve, reject) => {\n const request = typeof args[0] === 'string' ? new API.WHATWGRequest(...args) : args[0];\n\n request.headers.set('Content-Type', 'application/json');\n request.headers.set('FOXY-API-VERSION', '1');\n\n const event = new FetchEvent('fetch', {\n cancelable: true,\n composed: true,\n bubbles: true,\n request,\n resolve,\n reject,\n });\n\n target.dispatchEvent(event);\n if (!event.defaultPrevented) fetch(request).then(resolve).catch(reject);\n }),\n });\n }\n}\n"]}
1
+ {"version":3,"file":"API.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/API.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,wBAAqB;AAE1C;;;;;GAKG;AACH,MAAM,OAAO,GAAI,SAAQ,OAAY;IAInC,0FAA0F;IAC1F,YAAY,MAAmB;QAC7B,KAAK,CAAC;YACJ,IAAI,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC/B,KAAK,EAAE,CAAC,GAAG,IAAiC,EAAqB,EAAE,CACjE,IAAI,OAAO,CAAW,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACxC,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAEvF,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBACxD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;gBAE7C,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,EAAE;oBACpC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,IAAI;oBACb,OAAO;oBACP,OAAO;oBACP,MAAM;iBACP,CAAC,CAAC;gBAEH,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,gBAAgB;oBAAE,OAAO,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC,CAAC;SACL,CAAC,CAAC;IACL,CAAC;;AA3BD,gFAAgF;AAChE,cAAU,GAAG,UAAU,CAAC","sourcesContent":["import { API as CoreAPI } from '@foxy.io/sdk/core';\nimport { FetchEvent } from './FetchEvent';\n\n/**\n * Universal [API](https://sdk.foxy.dev/classes/_core_index_.api.html) client\n * that dispatches the `fetch` event on an element before each request. It bubbles, crosses\n * shadow DOM boundaries, and if cancelled, the target element will not make the request\n * and instead will wait for a response from `event.respondWith()`.\n */\nexport class API extends CoreAPI<any> {\n /** Instances of this event are dispatched on an element before each request. */\n static readonly FetchEvent = FetchEvent;\n\n /** @param target `EventTarget` to dispatch `fetch` events on (e.g. element or window). */\n constructor(target: EventTarget) {\n super({\n base: new URL(document.baseURI),\n fetch: (...args: Parameters<Window['fetch']>): Promise<Response> =>\n new Promise<Response>((resolve, reject) => {\n const request = typeof args[0] === 'string' ? new API.WHATWGRequest(...args) : args[0];\n\n request.headers.set('Content-Type', 'application/json');\n request.headers.set('FOXY-API-VERSION', '1');\n\n const event = new FetchEvent('fetch', {\n cancelable: true,\n composed: true,\n bubbles: true,\n request,\n resolve,\n reject,\n });\n\n target.dispatchEvent(event);\n if (!event.defaultPrevented) resolve(new Response(null, { status: 500 }));\n }),\n });\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  /// <reference types="lodash" />
2
2
  import { ComputedElementProperties, HALJSONResource, NucleonV8N } from './types';
3
- import { LitElement, PropertyDeclarations } from 'lit-element';
3
+ import { LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';
4
4
  import { Nucleon, Rumour } from '@foxy.io/sdk/core';
5
5
  import { API } from './API';
6
6
  import { UpdateEvent } from './UpdateEvent';
@@ -67,6 +67,7 @@ export declare class NucleonElement<TData extends HALJSONResource> extends Nucle
67
67
  private __fetchEventHandler;
68
68
  private __fetchEventQueue;
69
69
  private readonly __service;
70
+ constructor();
70
71
  /**
71
72
  * If network request returns non-2XX code, the entire error response
72
73
  * will be available via this getter.
@@ -145,6 +146,7 @@ export declare class NucleonElement<TData extends HALJSONResource> extends Nucle
145
146
  * @example element.refresh()
146
147
  */
147
148
  refresh(): void;
149
+ render(): TemplateResult;
148
150
  /** @readonly */
149
151
  connectedCallback(): void;
150
152
  /** @readonly */
@@ -159,9 +161,9 @@ export declare class NucleonElement<TData extends HALJSONResource> extends Nucle
159
161
  /** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */
160
162
  protected _sendPatch(edits: Partial<TData>): Promise<TData>;
161
163
  /** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */
162
- protected _sendDelete(): Promise<TData>;
164
+ protected _sendDelete(): Promise<null>;
165
+ private get __state();
163
166
  private __createService;
164
- private __destroyService;
165
167
  private __createRumour;
166
168
  private __destroyRumour;
167
169
  private __createServer;
@@ -1,4 +1,4 @@
1
- import { LitElement } from 'lit-element';
1
+ import { html, LitElement } from 'lit-element';
2
2
  import { Nucleon, Rumour } from '@foxy.io/sdk/core';
3
3
  import { assign, interpret } from 'xstate';
4
4
  import { API } from "./API.js";
@@ -18,7 +18,7 @@ import { InferrableMixin } from "../../../mixins/inferrable.js";
18
18
  */
19
19
  export class NucleonElement extends InferrableMixin(LitElement) {
20
20
  constructor() {
21
- super(...arguments);
21
+ super();
22
22
  /**
23
23
  * Optional ISO 639-1 code describing the language element content is written in.
24
24
  * Changing the `lang` attribute will update the value of this property.
@@ -57,6 +57,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
57
57
  }),
58
58
  },
59
59
  }));
60
+ this.__createService();
60
61
  }
61
62
  static get inferredProperties() {
62
63
  return [...super.inferredProperties, 'group', 'lang'];
@@ -64,6 +65,7 @@ export class NucleonElement extends InferrableMixin(LitElement) {
64
65
  /** @readonly */
65
66
  static get properties() {
66
67
  return {
68
+ __state: { type: String, reflect: true, attribute: 'state' },
67
69
  related: { type: Array },
68
70
  parent: { type: String },
69
71
  group: { type: String, noAccessor: true },
@@ -198,21 +200,26 @@ export class NucleonElement extends InferrableMixin(LitElement) {
198
200
  refresh() {
199
201
  this.__service.send({ type: 'REFRESH' });
200
202
  }
203
+ render() {
204
+ return html `<slot></slot>`;
205
+ }
201
206
  /** @readonly */
202
207
  connectedCallback() {
203
208
  super.connectedCallback();
204
- this.__createService();
209
+ if (this.href)
210
+ this.refresh();
205
211
  this.__createRumour();
206
212
  this.__createServer();
207
213
  this.__processFetchEventQueue();
214
+ this.dispatchEvent(new UpdateEvent());
208
215
  }
209
216
  /** @readonly */
210
217
  disconnectedCallback() {
211
218
  super.disconnectedCallback();
212
- this.__destroyService();
213
219
  this.__destroyRumour();
214
220
  this.__destroyServer();
215
221
  this.__flushFetchEventQueue('parent element was disconnected');
222
+ this.dispatchEvent(new UpdateEvent());
216
223
  }
217
224
  applyInferredProperties(context) {
218
225
  var _a, _b;
@@ -232,49 +239,69 @@ export class NucleonElement extends InferrableMixin(LitElement) {
232
239
  /** POSTs to `element.parent`, shares response with the Rumour group and returns parsed JSON. */
233
240
  async _sendPost(edits) {
234
241
  this.__destroyRumour();
235
- const body = JSON.stringify(edits);
236
- const data = await this._fetch(this.parent, { body, method: 'POST' });
237
- const rumour = NucleonElement.Rumour(this.group);
238
- const related = [...this.related, this.parent];
239
- rumour.share({ data, related, source: data._links.self.href });
240
- this.__createRumour();
241
- return data;
242
+ try {
243
+ const body = JSON.stringify(edits);
244
+ const postData = await this._fetch(this.parent, { body, method: 'POST' });
245
+ const data = await this._fetch(postData._links.self.href);
246
+ const rumour = NucleonElement.Rumour(this.group);
247
+ const related = [...this.related, this.parent];
248
+ rumour.share({ data, related, source: data._links.self.href });
249
+ return data;
250
+ }
251
+ finally {
252
+ this.__createRumour();
253
+ }
242
254
  }
243
255
  /** GETs `element.href`, shares response with the Rumour group and returns parsed JSON. */
244
256
  async _sendGet() {
245
257
  this.__destroyRumour();
246
- const data = await this._fetch(this.href);
247
- const rumour = NucleonElement.Rumour(this.group);
248
- rumour.share({ data, source: this.href });
249
- this.__createRumour();
250
- return data;
258
+ try {
259
+ const data = await this._fetch(this.href);
260
+ NucleonElement.Rumour(this.group).share({ data, source: this.href });
261
+ return data;
262
+ }
263
+ finally {
264
+ this.__createRumour();
265
+ }
251
266
  }
252
267
  /** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */
253
268
  async _sendPatch(edits) {
254
269
  this.__destroyRumour();
255
- const body = JSON.stringify(edits);
256
- const data = await this._fetch(this.href, { body, method: 'PATCH' });
257
- const rumour = NucleonElement.Rumour(this.group);
258
- rumour.share({ data, source: this.href, related: this.related });
259
- this.__createRumour();
260
- return data;
270
+ try {
271
+ const body = JSON.stringify(edits);
272
+ const data = await this._fetch(this.href, { body, method: 'PATCH' });
273
+ const rumour = NucleonElement.Rumour(this.group);
274
+ rumour.share({ data, source: this.href, related: this.related });
275
+ return data;
276
+ }
277
+ finally {
278
+ this.__createRumour();
279
+ }
261
280
  }
262
281
  /** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */
263
282
  async _sendDelete() {
264
283
  this.__destroyRumour();
265
- const data = await this._fetch(this.href, { method: 'DELETE' });
266
- const rumour = NucleonElement.Rumour(this.group);
267
- const related = [...this.related, this.parent];
268
- rumour.share({ data: null, source: this.href, related });
269
- this.__createRumour();
270
- return data;
284
+ try {
285
+ await this._fetch(this.href, { method: 'DELETE' });
286
+ const rumour = NucleonElement.Rumour(this.group);
287
+ const related = [...this.related, this.parent];
288
+ rumour.share({ data: null, source: this.href, related });
289
+ return null;
290
+ }
291
+ finally {
292
+ this.__createRumour();
293
+ }
294
+ }
295
+ // this getter is used by LitElement to set the "state" attribute
296
+ get __state() {
297
+ const state = this.__service.state;
298
+ const flags = state.toStrings().reduce((p, c) => [...p, ...c.split('.')], []);
299
+ return [...new Set(flags)].join(' ');
271
300
  }
272
301
  __createService() {
273
302
  this.__service.onTransition(state => {
274
303
  if (!state.changed)
275
304
  return;
276
- const flags = state.toStrings().reduce((p, c) => [...p, ...c.split('.')], []);
277
- this.setAttribute('state', [...new Set(flags)].join(' '));
278
305
  this.requestUpdate();
279
306
  this.dispatchEvent(new UpdateEvent());
280
307
  if (!state.matches('busy'))
@@ -286,9 +313,6 @@ export class NucleonElement extends InferrableMixin(LitElement) {
286
313
  });
287
314
  this.__service.start();
288
315
  }
289
- __destroyService() {
290
- this.__service.stop();
291
- }
292
316
  __createRumour() {
293
317
  const rumour = NucleonElement.Rumour(this.group);
294
318
  this.__unsubscribeFromRumour = rumour.track(update => this.__handleRumourUpdate(update));
@@ -1 +1 @@
1
- {"version":3,"file":"NucleonElement.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/NucleonElement.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComputedElementProperties, HALJSONResource, NucleonMachine, NucleonV8N } from './types';\nimport { LitElement, PropertyDeclarations } from 'lit-element';\nimport { Nucleon, Rumour } from '@foxy.io/sdk/core';\nimport { assign, interpret } from 'xstate';\n\nimport { API } from './API';\nimport { FetchEvent } from './FetchEvent';\nimport { UpdateEvent } from './UpdateEvent';\nimport memoize from 'lodash-es/memoize';\nimport { serveFromCache } from './serveFromCache';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\n/**\n * Base class for custom elements working with remote HAL+JSON resources.\n *\n * @fires NucleonElement#update - Instance of `NucleonElement.UpdateEvent`. Dispatched on an element whenever it changes its state.\n * @fires NucleonElement#fetch - Instance of `NucleonElement.API.FetchEvent`. Emitted before each API request.\n *\n * @element foxy-nucleon\n * @since 1.1.0\n */\nexport class NucleonElement<TData extends HALJSONResource> extends InferrableMixin(LitElement) {\n /**\n * Instances of this event are dispatched on an element whenever it changes its\n * state (e.g. when going from `busy` to `idle` or on `form` data change).\n * This event isn't cancelable, and it does not bubble.\n * @readonly\n */\n static readonly UpdateEvent = UpdateEvent;\n\n /**\n * Creates a tagged [Rumour](https://sdk.foxy.dev/classes/_core_index_.rumour.html)\n * instance if it doesn't exist or returns cached one otherwise. NucleonElements\n * use empty Rumour group by default.\n * @readonly\n */\n static readonly Rumour = memoize<(group: string) => Rumour>(() => new Rumour());\n\n /**\n * Universal [API](https://sdk.foxy.dev/classes/_core_index_.api.html) client\n * that dispatches cancellable `FetchEvent` on an element before each request.\n * @readonly\n */\n static readonly API = API;\n\n static get inferredProperties(): string[] {\n return [...super.inferredProperties, 'group', 'lang'];\n }\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n related: { type: Array },\n parent: { type: String },\n group: { type: String, noAccessor: true },\n href: { type: String, noAccessor: true },\n lang: { type: String },\n };\n }\n\n /**\n * Array of validation functions. Each function accepts `element.form` and must return\n * either an error code string if form data fails the check or `true` otherwise.\n * Error codes are collected in `element.errors`. Empty by default.\n */\n static get v8n(): NucleonV8N<any> {\n return [];\n }\n\n /**\n * Optional ISO 639-1 code describing the language element content is written in.\n * Changing the `lang` attribute will update the value of this property.\n */\n lang = '';\n\n /**\n * Optional URL of the collection this element's resource belongs to.\n * Changing the `parent` attribute will update the value of this property.\n */\n parent = '';\n\n /**\n * Optional URI list of the related resources. If Rumour encounters a related\n * resource on creation or deletion, it will be reloaded from source.\n */\n related: string[] = [];\n\n private __href = '';\n\n private __group = '';\n\n private __unsubscribeFromRumour!: () => void;\n\n private __fetchEventHandler!: (evt: Event) => void;\n\n private __fetchEventQueue: FetchEvent[] = [];\n\n private readonly __service = interpret(\n (Nucleon.machine as NucleonMachine<TData>).withConfig({\n services: {\n sendDelete: () => this._sendDelete(),\n sendPatch: ({ edits }) => this._sendPatch(edits!),\n sendPost: ({ edits }) => this._sendPost(edits!),\n sendGet: () => this._sendGet(),\n },\n\n actions: {\n validate: assign<Nucleon.Context<TData, string>, Nucleon.Event<TData>>({\n errors: context => {\n const rules = (this.constructor as typeof NucleonElement).v8n;\n const form = { ...context.data, ...context.edits };\n\n return rules\n .map(validate => validate(form))\n .filter(v8nResult => typeof v8nResult === 'string')\n .filter((err, errIndex, errs) => errs.indexOf(err) === errIndex) as string[];\n },\n }),\n },\n })\n );\n\n /**\n * If network request returns non-2XX code, the entire error response\n * will be available via this getter.\n *\n * This property is readonly. Changing failure records via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override error status.\n *\n * @since 1.4.0\n */\n get failure(): Response | null {\n return this.__service.state.context.failure;\n }\n\n /**\n * Array of validation errors returned from `NucleonElement.v8n` checks.\n *\n * This property is readonly. Adding or removing error codes via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override validity status.\n */\n get errors(): string[] {\n return this.__service.state.context.errors;\n }\n\n /**\n * Resource snapshot with edits applied. Empty object if unavailable.\n *\n * This property and its value are readonly. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please use `element.edit({ foo: 'bar' })` instead.\n * If you need to replace the entire data object, consider using `element.data`.\n */\n get form(): Partial<TData> {\n const { data, edits } = this.__service.state.context;\n return { ...data, ...edits } as Partial<TData>;\n }\n\n /**\n * Resource snapshot as-is, no edits applied. Null if unavailable.\n *\n * Returned value is not reactive. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please set the property instead: `element.data = { ...element.data, foo: 'bar' }`.\n * If you're processing user input, consider using `element.form` and `element.edit()` instead.\n */\n get data(): TData | null {\n return this.__service.state.context.data;\n }\n\n set data(data: TData | null) {\n this.__service.send({ type: 'SET_DATA', data });\n this.__href = data?._links.self.href ?? '';\n }\n\n /**\n * Rumour group. Elements in different groups will not share updates. Empty by default.\n * @example element.group = 'my-group'\n */\n get group(): string {\n return this.__group;\n }\n\n set group(value: string) {\n this.__group = value;\n this.__destroyRumour();\n this.__createRumour();\n }\n\n /**\n * Optional URL of the resource to load. Switches element to `idle.template` state if empty (default).\n * @example element.href = 'https://demo.foxycart.com/s/customer/attributes/0'\n */\n get href(): string {\n return this.__href;\n }\n\n set href(value: string) {\n this.__href = value;\n\n if (value) {\n this.__service.send({ type: 'FETCH' });\n } else {\n this.__service.send({ type: 'SET_DATA', data: null });\n }\n }\n\n /**\n * Checks if this element is in the given state.\n * @example element.in({ idle: 'snapshot' })\n */\n in<TStateValue extends Nucleon.State<TData, string>['value']>(\n stateValue: TStateValue\n ): this is this & ComputedElementProperties<TData, TStateValue> {\n return this.__service.state.matches(stateValue);\n }\n\n /**\n * Clears all edits and emits the `update` event.\n * @example element.undo()\n */\n undo(): void {\n this.__service.send({ type: 'UNDO' });\n }\n\n /**\n * Applies an edit to the local resource snapshot or its template and emits the `update` event.\n * @example element.edit({ first_name: 'Alex' })\n */\n edit(data: Partial<TData>): void {\n this.__service.send({ type: 'EDIT', data });\n }\n\n /**\n * Submits the form, updating the resource if href isn't empty or creating it otherwise.\n * Emits multiple `update` events as element state changes. Has no effect on invalid forms.\n * @example element.submit()\n */\n submit(): void {\n this.__service.send({ type: 'SUBMIT' });\n }\n\n /**\n * Sends a DELETE request to `element.href` and clears local data on success.\n * Emits multiple update events as element state changes.\n * @example element.delete()\n */\n delete(): void {\n this.__service.send({ type: 'DELETE' });\n }\n\n /**\n * Fetches data from `element.href` in background, keeping the edits and v8n errors.\n * @example element.refresh()\n */\n refresh(): void {\n this.__service.send({ type: 'REFRESH' });\n }\n\n /** @readonly */\n connectedCallback(): void {\n super.connectedCallback();\n\n this.__createService();\n this.__createRumour();\n this.__createServer();\n this.__processFetchEventQueue();\n }\n\n /** @readonly */\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.__destroyService();\n this.__destroyRumour();\n this.__destroyServer();\n this.__flushFetchEventQueue('parent element was disconnected');\n }\n\n applyInferredProperties(context: Map<string, unknown>): void {\n super.applyInferredProperties(context);\n\n if (this.infer === null) return;\n\n this.group = (context.get('group') as string | undefined) ?? '';\n this.lang = (context.get('lang') as string | undefined) ?? '';\n }\n\n /** Sends API request. Throws an error on non-2XX response. */\n protected async _fetch<TResult = TData>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n const response = await new API(this).fetch(...args);\n if (!response.ok) throw response;\n return response.json();\n }\n\n /** POSTs to `element.parent`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPost(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.parent, { body, method: 'POST' });\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n\n rumour.share({ data, related, source: data._links.self.href });\n this.__createRumour();\n\n return data;\n }\n\n /** GETs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendGet(): Promise<TData> {\n this.__destroyRumour();\n\n const data = await this._fetch(this.href);\n const rumour = NucleonElement.Rumour(this.group);\n\n rumour.share({ data, source: this.href });\n this.__createRumour();\n\n return data;\n }\n\n /** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPatch(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.href, { body, method: 'PATCH' });\n const rumour = NucleonElement.Rumour(this.group);\n\n rumour.share({ data, source: this.href, related: this.related });\n this.__createRumour();\n\n return data;\n }\n\n /** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendDelete(): Promise<TData> {\n this.__destroyRumour();\n\n const data = await this._fetch(this.href, { method: 'DELETE' });\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n\n rumour.share({ data: null, source: this.href, related });\n this.__createRumour();\n\n return data;\n }\n\n private __createService() {\n this.__service.onTransition(state => {\n if (!state.changed) return;\n\n const flags = state.toStrings().reduce((p, c) => [...p, ...c.split('.')], [] as string[]);\n this.setAttribute('state', [...new Set(flags)].join(' '));\n\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n\n if (!state.matches('busy')) this.__processFetchEventQueue();\n });\n\n this.__service.onChange(() => {\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n });\n\n this.__service.start();\n }\n\n private __destroyService() {\n this.__service.stop();\n }\n\n private __createRumour() {\n const rumour = NucleonElement.Rumour(this.group);\n this.__unsubscribeFromRumour = rumour.track(update => this.__handleRumourUpdate(update));\n }\n\n private __destroyRumour() {\n this.__unsubscribeFromRumour?.();\n }\n\n private __createServer() {\n this.__fetchEventHandler = this.__handleFetchEvent.bind(this);\n this.addEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __destroyServer() {\n this.removeEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __handleRumourUpdate(update: (oldData: TData) => TData | null) {\n try {\n const oldData = this.__service.state?.context.data;\n if (!oldData) return;\n\n const newData = update(oldData);\n if (newData !== oldData) this.__service.send({ data: newData, type: 'SET_DATA' });\n } catch (err) {\n if (err instanceof Rumour.UpdateError) {\n this.__service.send({ type: 'REFRESH' });\n } else {\n throw err;\n }\n }\n }\n\n private __processFetchEventQueue() {\n const api = new NucleonElement.API(this);\n\n this.__fetchEventQueue.forEach(event => {\n const request = event.request;\n const cacheResponse = serveFromCache(request.url, this.data);\n const whenResponseReady = cacheResponse.ok ? cacheResponse : api.fetch(request);\n\n event.respondWith(Promise.resolve(whenResponseReady));\n\n if (cacheResponse.ok) {\n console.debug(\n `%c@foxy.io/elements::${this.localName}\\n%c200%c GET ${request.url}`,\n 'color: gray',\n `background: gray; padding: 0 .2em; border-radius: .2em; color: white;`,\n ''\n );\n }\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __flushFetchEventQueue(errorMessage: string) {\n this.__fetchEventQueue.forEach(event => {\n event.respondWith(Promise.reject(new Error(errorMessage)));\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __handleFetchEvent(event: Event) {\n if (!(event instanceof FetchEvent)) return;\n if (event.defaultPrevented) return;\n if (event.request.method !== 'GET') return;\n if (event.request.url.startsWith('foxy://')) return;\n if (event.composedPath()[0] === this) return;\n\n event.preventDefault();\n this.__fetchEventQueue.push(event);\n\n if (!this.in('busy')) this.__processFetchEventQueue();\n }\n}\n"]}
1
+ {"version":3,"file":"NucleonElement.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/NucleonElement.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAwC,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAE,GAAG,EAAE,iBAAc;AAC5B,OAAO,EAAE,UAAU,EAAE,wBAAqB;AAC1C,OAAO,EAAE,WAAW,EAAE,yBAAsB;AAC5C,OAAO,OAAO,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAClD,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAE7D;;;;;;;;GAQG;AACH,MAAM,OAAO,cAA8C,SAAQ,eAAe,CAAC,UAAU,CAAC;IAsG5F;QACE,KAAK,EAAE,CAAC;QAtDV;;;WAGG;QACH,SAAI,GAAG,EAAE,CAAC;QAEV;;;WAGG;QACH,WAAM,GAAG,EAAE,CAAC;QAEZ;;;WAGG;QACH,YAAO,GAAa,EAAE,CAAC;QAEf,WAAM,GAAG,EAAE,CAAC;QAEZ,YAAO,GAAG,EAAE,CAAC;QAMb,sBAAiB,GAAiB,EAAE,CAAC;QAE5B,cAAS,GAAG,SAAS,CACnC,OAAO,CAAC,OAAiC,CAAC,UAAU,CAAC;YACpD,QAAQ,EAAE;gBACR,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE;gBACpC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAM,CAAC;gBACjD,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAM,CAAC;gBAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE;aAC/B;YAED,OAAO,EAAE;gBACP,QAAQ,EAAE,MAAM,CAAuD;oBACrE,MAAM,EAAE,OAAO,CAAC,EAAE;wBAChB,MAAM,KAAK,GAAI,IAAI,CAAC,WAAqC,CAAC,GAAG,CAAC;wBAC9D,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;wBAEnD,OAAO,KAAK;6BACT,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;6BAC/B,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,SAAS,KAAK,QAAQ,CAAC;6BAClD,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAa,CAAC;oBACjF,CAAC;iBACF,CAAC;aACH;SACF,CAAC,CACH,CAAC;QAIA,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAjFD,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,gBAAgB;IAChB,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;YAC5D,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;YACzC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE;YACxC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACvB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,MAAM,KAAK,GAAG;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IA4DD;;;;;;;;OAQG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7C,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAAI;QACN,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;QACrD,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAoB,CAAC;IACjD,CAAC;IAED;;;;;;OAMG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3C,CAAC;IAED,IAAI,IAAI,CAAC,IAAkB;;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,SAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,MAAM,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,KAAa;QACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;SACxC;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SACvD;IACH,CAAC;IAED;;;OAGG;IACH,EAAE,CACA,UAAuB;QAEvB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAoB;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;;OAIG;IACH,MAAM;QACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,OAAO;QACL,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAA,eAAe,CAAC;IAC7B,CAAC;IAED,gBAAgB;IAChB,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAE9B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEhC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,gBAAgB;IAChB,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAE7B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,sBAAsB,CAAC,iCAAiC,CAAC,CAAC;QAE/D,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACxC,CAAC;IAED,uBAAuB,CAAC,OAA6B;;QACnD,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI;YAAE,OAAO;QAEhC,IAAI,CAAC,KAAK,SAAI,OAAO,CAAC,GAAG,CAAC,OAAO,CAAwB,mCAAI,EAAE,CAAC;QAChE,IAAI,CAAC,IAAI,SAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAwB,mCAAI,EAAE,CAAC;IAChE,CAAC;IAED,8DAA8D;IACpD,KAAK,CAAC,MAAM,CAAkB,GAAG,IAAiC;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,QAAQ,CAAC;QACjC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,gGAAgG;IACtF,KAAK,CAAC,SAAS,CAAC,KAAqB;QAC7C,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YAC1E,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAE/D,OAAO,IAAI,CAAC;SACb;gBAAS;YACR,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAED,0FAA0F;IAChF,KAAK,CAAC,QAAQ;QACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI;YACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;SACb;gBAAS;YACR,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAED,6FAA6F;IACnF,KAAK,CAAC,UAAU,CAAC,KAAqB;QAC9C,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YAErE,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YAEjE,OAAO,IAAI,CAAC;SACb;gBAAS;YACR,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAED,6FAA6F;IACnF,KAAK,CAAC,WAAW;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI;YACF,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAEzD,OAAO,IAAI,CAAC;SACb;gBAAS;YACR,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAED,iEAAiE;IACjE,IAAY,OAAO;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACnC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAc,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,OAAO;YAE3B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;YAEtC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;gBAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC3B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,cAAc;QACpB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,CAAC;IAEO,eAAe;;QACrB,MAAA,IAAI,CAAC,uBAAuB,+CAA5B,IAAI,EAA6B;IACnC,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC3D,CAAC;IAEO,eAAe;QACrB,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC9D,CAAC;IAEO,oBAAoB,CAAC,MAAwC;;QACnE,IAAI;YACF,MAAM,OAAO,SAAG,IAAI,CAAC,SAAS,CAAC,KAAK,0CAAE,OAAO,CAAC,IAAI,CAAC;YACnD,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,OAAO,KAAK,OAAO;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;SACnF;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,YAAY,MAAM,CAAC,WAAW,EAAE;gBACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;aAC1C;iBAAM;gBACL,MAAM,GAAG,CAAC;aACX;SACF;IACH,CAAC;IAEO,wBAAwB;QAC9B,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,MAAM,aAAa,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,iBAAiB,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEhF,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAEtD,IAAI,aAAa,CAAC,EAAE,EAAE;gBACpB,OAAO,CAAC,KAAK,CACX,wBAAwB,IAAI,CAAC,SAAS,iBAAiB,OAAO,CAAC,GAAG,EAAE,EACpE,aAAa,EACb,uEAAuE,EACvE,EAAE,CACH,CAAC;aACH;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEO,sBAAsB,CAAC,YAAoB;QACjD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACrC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;IAC9B,CAAC;IAEO,kBAAkB,CAAC,KAAY;QACrC,IAAI,CAAC,CAAC,KAAK,YAAY,UAAU,CAAC;YAAE,OAAO;QAC3C,IAAI,KAAK,CAAC,gBAAgB;YAAE,OAAO;QACnC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK;YAAE,OAAO;QAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO;QACpD,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO;QAE7C,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;YAAE,IAAI,CAAC,wBAAwB,EAAE,CAAC;IACxD,CAAC;;AAncD;;;;;GAKG;AACa,0BAAW,GAAG,WAAW,CAAC;AAE1C;;;;;GAKG;AACa,qBAAM,GAAG,OAAO,CAA4B,GAAG,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;AAEhF;;;;GAIG;AACa,kBAAG,GAAG,GAAG,CAAC","sourcesContent":["import { ComputedElementProperties, HALJSONResource, NucleonMachine, NucleonV8N } from './types';\nimport { html, LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport { Nucleon, Rumour } from '@foxy.io/sdk/core';\nimport { assign, interpret } from 'xstate';\n\nimport { API } from './API';\nimport { FetchEvent } from './FetchEvent';\nimport { UpdateEvent } from './UpdateEvent';\nimport memoize from 'lodash-es/memoize';\nimport { serveFromCache } from './serveFromCache';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\n/**\n * Base class for custom elements working with remote HAL+JSON resources.\n *\n * @fires NucleonElement#update - Instance of `NucleonElement.UpdateEvent`. Dispatched on an element whenever it changes its state.\n * @fires NucleonElement#fetch - Instance of `NucleonElement.API.FetchEvent`. Emitted before each API request.\n *\n * @element foxy-nucleon\n * @since 1.1.0\n */\nexport class NucleonElement<TData extends HALJSONResource> extends InferrableMixin(LitElement) {\n /**\n * Instances of this event are dispatched on an element whenever it changes its\n * state (e.g. when going from `busy` to `idle` or on `form` data change).\n * This event isn't cancelable, and it does not bubble.\n * @readonly\n */\n static readonly UpdateEvent = UpdateEvent;\n\n /**\n * Creates a tagged [Rumour](https://sdk.foxy.dev/classes/_core_index_.rumour.html)\n * instance if it doesn't exist or returns cached one otherwise. NucleonElements\n * use empty Rumour group by default.\n * @readonly\n */\n static readonly Rumour = memoize<(group: string) => Rumour>(() => new Rumour());\n\n /**\n * Universal [API](https://sdk.foxy.dev/classes/_core_index_.api.html) client\n * that dispatches cancellable `FetchEvent` on an element before each request.\n * @readonly\n */\n static readonly API = API;\n\n static get inferredProperties(): string[] {\n return [...super.inferredProperties, 'group', 'lang'];\n }\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n __state: { type: String, reflect: true, attribute: 'state' },\n related: { type: Array },\n parent: { type: String },\n group: { type: String, noAccessor: true },\n href: { type: String, noAccessor: true },\n lang: { type: String },\n };\n }\n\n /**\n * Array of validation functions. Each function accepts `element.form` and must return\n * either an error code string if form data fails the check or `true` otherwise.\n * Error codes are collected in `element.errors`. Empty by default.\n */\n static get v8n(): NucleonV8N<any> {\n return [];\n }\n\n /**\n * Optional ISO 639-1 code describing the language element content is written in.\n * Changing the `lang` attribute will update the value of this property.\n */\n lang = '';\n\n /**\n * Optional URL of the collection this element's resource belongs to.\n * Changing the `parent` attribute will update the value of this property.\n */\n parent = '';\n\n /**\n * Optional URI list of the related resources. If Rumour encounters a related\n * resource on creation or deletion, it will be reloaded from source.\n */\n related: string[] = [];\n\n private __href = '';\n\n private __group = '';\n\n private __unsubscribeFromRumour!: () => void;\n\n private __fetchEventHandler!: (evt: Event) => void;\n\n private __fetchEventQueue: FetchEvent[] = [];\n\n private readonly __service = interpret(\n (Nucleon.machine as NucleonMachine<TData>).withConfig({\n services: {\n sendDelete: () => this._sendDelete(),\n sendPatch: ({ edits }) => this._sendPatch(edits!),\n sendPost: ({ edits }) => this._sendPost(edits!),\n sendGet: () => this._sendGet(),\n },\n\n actions: {\n validate: assign<Nucleon.Context<TData, string>, Nucleon.Event<TData>>({\n errors: context => {\n const rules = (this.constructor as typeof NucleonElement).v8n;\n const form = { ...context.data, ...context.edits };\n\n return rules\n .map(validate => validate(form))\n .filter(v8nResult => typeof v8nResult === 'string')\n .filter((err, errIndex, errs) => errs.indexOf(err) === errIndex) as string[];\n },\n }),\n },\n })\n );\n\n constructor() {\n super();\n this.__createService();\n }\n\n /**\n * If network request returns non-2XX code, the entire error response\n * will be available via this getter.\n *\n * This property is readonly. Changing failure records via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override error status.\n *\n * @since 1.4.0\n */\n get failure(): Response | null {\n return this.__service.state.context.failure;\n }\n\n /**\n * Array of validation errors returned from `NucleonElement.v8n` checks.\n *\n * This property is readonly. Adding or removing error codes via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override validity status.\n */\n get errors(): string[] {\n return this.__service.state.context.errors;\n }\n\n /**\n * Resource snapshot with edits applied. Empty object if unavailable.\n *\n * This property and its value are readonly. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please use `element.edit({ foo: 'bar' })` instead.\n * If you need to replace the entire data object, consider using `element.data`.\n */\n get form(): Partial<TData> {\n const { data, edits } = this.__service.state.context;\n return { ...data, ...edits } as Partial<TData>;\n }\n\n /**\n * Resource snapshot as-is, no edits applied. Null if unavailable.\n *\n * Returned value is not reactive. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please set the property instead: `element.data = { ...element.data, foo: 'bar' }`.\n * If you're processing user input, consider using `element.form` and `element.edit()` instead.\n */\n get data(): TData | null {\n return this.__service.state.context.data;\n }\n\n set data(data: TData | null) {\n this.__service.send({ type: 'SET_DATA', data });\n this.__href = data?._links.self.href ?? '';\n }\n\n /**\n * Rumour group. Elements in different groups will not share updates. Empty by default.\n * @example element.group = 'my-group'\n */\n get group(): string {\n return this.__group;\n }\n\n set group(value: string) {\n this.__group = value;\n this.__destroyRumour();\n this.__createRumour();\n }\n\n /**\n * Optional URL of the resource to load. Switches element to `idle.template` state if empty (default).\n * @example element.href = 'https://demo.foxycart.com/s/customer/attributes/0'\n */\n get href(): string {\n return this.__href;\n }\n\n set href(value: string) {\n this.__href = value;\n\n if (value) {\n this.__service.send({ type: 'FETCH' });\n } else {\n this.__service.send({ type: 'SET_DATA', data: null });\n }\n }\n\n /**\n * Checks if this element is in the given state.\n * @example element.in({ idle: 'snapshot' })\n */\n in<TStateValue extends Nucleon.State<TData, string>['value']>(\n stateValue: TStateValue\n ): this is this & ComputedElementProperties<TData, TStateValue> {\n return this.__service.state.matches(stateValue);\n }\n\n /**\n * Clears all edits and emits the `update` event.\n * @example element.undo()\n */\n undo(): void {\n this.__service.send({ type: 'UNDO' });\n }\n\n /**\n * Applies an edit to the local resource snapshot or its template and emits the `update` event.\n * @example element.edit({ first_name: 'Alex' })\n */\n edit(data: Partial<TData>): void {\n this.__service.send({ type: 'EDIT', data });\n }\n\n /**\n * Submits the form, updating the resource if href isn't empty or creating it otherwise.\n * Emits multiple `update` events as element state changes. Has no effect on invalid forms.\n * @example element.submit()\n */\n submit(): void {\n this.__service.send({ type: 'SUBMIT' });\n }\n\n /**\n * Sends a DELETE request to `element.href` and clears local data on success.\n * Emits multiple update events as element state changes.\n * @example element.delete()\n */\n delete(): void {\n this.__service.send({ type: 'DELETE' });\n }\n\n /**\n * Fetches data from `element.href` in background, keeping the edits and v8n errors.\n * @example element.refresh()\n */\n refresh(): void {\n this.__service.send({ type: 'REFRESH' });\n }\n\n render(): TemplateResult {\n return html`<slot></slot>`;\n }\n\n /** @readonly */\n connectedCallback(): void {\n super.connectedCallback();\n if (this.href) this.refresh();\n\n this.__createRumour();\n this.__createServer();\n this.__processFetchEventQueue();\n\n this.dispatchEvent(new UpdateEvent());\n }\n\n /** @readonly */\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.__destroyRumour();\n this.__destroyServer();\n this.__flushFetchEventQueue('parent element was disconnected');\n\n this.dispatchEvent(new UpdateEvent());\n }\n\n applyInferredProperties(context: Map<string, unknown>): void {\n super.applyInferredProperties(context);\n\n if (this.infer === null) return;\n\n this.group = (context.get('group') as string | undefined) ?? '';\n this.lang = (context.get('lang') as string | undefined) ?? '';\n }\n\n /** Sends API request. Throws an error on non-2XX response. */\n protected async _fetch<TResult = TData>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n const response = await new API(this).fetch(...args);\n if (!response.ok) throw response;\n return response.json();\n }\n\n /** POSTs to `element.parent`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPost(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n try {\n const body = JSON.stringify(edits);\n const postData = await this._fetch(this.parent, { body, method: 'POST' });\n const data = await this._fetch(postData._links.self.href);\n\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n rumour.share({ data, related, source: data._links.self.href });\n\n return data;\n } finally {\n this.__createRumour();\n }\n }\n\n /** GETs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendGet(): Promise<TData> {\n this.__destroyRumour();\n\n try {\n const data = await this._fetch(this.href);\n NucleonElement.Rumour(this.group).share({ data, source: this.href });\n return data;\n } finally {\n this.__createRumour();\n }\n }\n\n /** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPatch(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n try {\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.href, { body, method: 'PATCH' });\n\n const rumour = NucleonElement.Rumour(this.group);\n rumour.share({ data, source: this.href, related: this.related });\n\n return data;\n } finally {\n this.__createRumour();\n }\n }\n\n /** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendDelete(): Promise<null> {\n this.__destroyRumour();\n\n try {\n await this._fetch(this.href, { method: 'DELETE' });\n\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n rumour.share({ data: null, source: this.href, related });\n\n return null;\n } finally {\n this.__createRumour();\n }\n }\n\n // this getter is used by LitElement to set the \"state\" attribute\n private get __state(): string {\n const state = this.__service.state;\n const flags = state.toStrings().reduce((p, c) => [...p, ...c.split('.')], [] as string[]);\n return [...new Set(flags)].join(' ');\n }\n\n private __createService() {\n this.__service.onTransition(state => {\n if (!state.changed) return;\n\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n\n if (!state.matches('busy')) this.__processFetchEventQueue();\n });\n\n this.__service.onChange(() => {\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n });\n\n this.__service.start();\n }\n\n private __createRumour() {\n const rumour = NucleonElement.Rumour(this.group);\n this.__unsubscribeFromRumour = rumour.track(update => this.__handleRumourUpdate(update));\n }\n\n private __destroyRumour() {\n this.__unsubscribeFromRumour?.();\n }\n\n private __createServer() {\n this.__fetchEventHandler = this.__handleFetchEvent.bind(this);\n this.addEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __destroyServer() {\n this.removeEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __handleRumourUpdate(update: (oldData: TData) => TData | null) {\n try {\n const oldData = this.__service.state?.context.data;\n if (!oldData) return;\n\n const newData = update(oldData);\n if (newData !== oldData) this.__service.send({ data: newData, type: 'SET_DATA' });\n } catch (err) {\n if (err instanceof Rumour.UpdateError) {\n this.__service.send({ type: 'REFRESH' });\n } else {\n throw err;\n }\n }\n }\n\n private __processFetchEventQueue() {\n const api = new NucleonElement.API(this);\n\n this.__fetchEventQueue.forEach(event => {\n const request = event.request;\n const cacheResponse = serveFromCache(request.url, this.data);\n const whenResponseReady = cacheResponse.ok ? cacheResponse : api.fetch(request);\n\n event.respondWith(Promise.resolve(whenResponseReady));\n\n if (cacheResponse.ok) {\n console.debug(\n `%c@foxy.io/elements::${this.localName}\\n%c200%c GET ${request.url}`,\n 'color: gray',\n `background: gray; padding: 0 .2em; border-radius: .2em; color: white;`,\n ''\n );\n }\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __flushFetchEventQueue(errorMessage: string) {\n this.__fetchEventQueue.forEach(event => {\n event.respondWith(Promise.reject(new Error(errorMessage)));\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __handleFetchEvent(event: Event) {\n if (!(event instanceof FetchEvent)) return;\n if (event.defaultPrevented) return;\n if (event.request.method !== 'GET') return;\n if (event.request.url.startsWith('foxy://')) return;\n if (event.composedPath()[0] === this) return;\n\n event.preventDefault();\n this.__fetchEventQueue.push(event);\n\n if (!this.in('busy')) this.__processFetchEventQueue();\n }\n}\n"]}
@@ -24,7 +24,7 @@ export declare class PaymentMethodCard extends Base<Data> {
24
24
  private readonly __renderActionsDelete;
25
25
  private readonly __renderActions;
26
26
  render(): TemplateResult;
27
- protected _sendDelete(): Promise<Data>;
27
+ protected _sendDelete(): Promise<null>;
28
28
  private __handleDelete;
29
29
  private __handleConfirmHide;
30
30
  }
@@ -160,10 +160,10 @@ export class PaymentMethodCard extends Base {
160
160
  }
161
161
  async _sendDelete() {
162
162
  const body = JSON.stringify({ save_cc: false });
163
- const data = await this._fetch(this.href, { method: 'PATCH', body });
163
+ await this._fetch(this.href, { method: 'PATCH', body });
164
164
  const rumour = NucleonElement.Rumour(this.group);
165
165
  rumour.share({ data: null, source: this.href, related: [this.parent] });
166
- return data;
166
+ return null;
167
167
  }
168
168
  __handleDelete(evt) {
169
169
  const confirm = this.renderRoot.querySelector('#confirm');