@aglyn/plugins-commerce 1.0.0-beta.143

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 (417) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +10 -0
  3. package/package.json +57 -0
  4. package/src/index.d.ts +38 -0
  5. package/src/index.js +38 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/components/account.d.ts +31 -0
  8. package/src/lib/components/account.js +645 -0
  9. package/src/lib/components/account.js.map +1 -0
  10. package/src/lib/components/cart.d.ts +38 -0
  11. package/src/lib/components/cart.js +851 -0
  12. package/src/lib/components/cart.js.map +1 -0
  13. package/src/lib/components/commerce-console-page.d.ts +32 -0
  14. package/src/lib/components/commerce-console-page.js +296 -0
  15. package/src/lib/components/commerce-console-page.js.map +1 -0
  16. package/src/lib/components/commerce-console-sections.d.ts +34 -0
  17. package/src/lib/components/commerce-console-sections.js +62 -0
  18. package/src/lib/components/commerce-console-sections.js.map +1 -0
  19. package/src/lib/components/console/catalog-organization-card.component.d.ts +14 -0
  20. package/src/lib/components/console/catalog-organization-card.component.js +1087 -0
  21. package/src/lib/components/console/catalog-organization-card.component.js.map +1 -0
  22. package/src/lib/components/console/commerce-analytics-card.component.d.ts +27 -0
  23. package/src/lib/components/console/commerce-analytics-card.component.js +310 -0
  24. package/src/lib/components/console/commerce-analytics-card.component.js.map +1 -0
  25. package/src/lib/components/console/commerce-glance-card.component.d.ts +20 -0
  26. package/src/lib/components/console/commerce-glance-card.component.js +340 -0
  27. package/src/lib/components/console/commerce-glance-card.component.js.map +1 -0
  28. package/src/lib/components/console/commerce-stat-tile.component.d.ts +37 -0
  29. package/src/lib/components/console/commerce-stat-tile.component.js +72 -0
  30. package/src/lib/components/console/commerce-stat-tile.component.js.map +1 -0
  31. package/src/lib/components/console/discounts-card.component.d.ts +14 -0
  32. package/src/lib/components/console/discounts-card.component.js +443 -0
  33. package/src/lib/components/console/discounts-card.component.js.map +1 -0
  34. package/src/lib/components/console/entitlement-gate.component.d.ts +76 -0
  35. package/src/lib/components/console/entitlement-gate.component.js +115 -0
  36. package/src/lib/components/console/entitlement-gate.component.js.map +1 -0
  37. package/src/lib/components/console/gift-cards-card.component.d.ts +29 -0
  38. package/src/lib/components/console/gift-cards-card.component.js +379 -0
  39. package/src/lib/components/console/gift-cards-card.component.js.map +1 -0
  40. package/src/lib/components/console/host-coupons-card.component.d.ts +14 -0
  41. package/src/lib/components/console/host-coupons-card.component.js +252 -0
  42. package/src/lib/components/console/host-coupons-card.component.js.map +1 -0
  43. package/src/lib/components/console/host-orders-card.component.d.ts +13 -0
  44. package/src/lib/components/console/host-orders-card.component.js +861 -0
  45. package/src/lib/components/console/host-orders-card.component.js.map +1 -0
  46. package/src/lib/components/console/locations-card.component.d.ts +14 -0
  47. package/src/lib/components/console/locations-card.component.js +256 -0
  48. package/src/lib/components/console/locations-card.component.js.map +1 -0
  49. package/src/lib/components/console/member-posts-card.component.d.ts +8 -0
  50. package/src/lib/components/console/member-posts-card.component.js +283 -0
  51. package/src/lib/components/console/member-posts-card.component.js.map +1 -0
  52. package/src/lib/components/console/newest-site-users-card.component.d.ts +36 -0
  53. package/src/lib/components/console/newest-site-users-card.component.js +126 -0
  54. package/src/lib/components/console/newest-site-users-card.component.js.map +1 -0
  55. package/src/lib/components/console/order-detail-dialog.component.d.ts +28 -0
  56. package/src/lib/components/console/order-detail-dialog.component.js +976 -0
  57. package/src/lib/components/console/order-detail-dialog.component.js.map +1 -0
  58. package/src/lib/components/console/paid-media.d.ts +127 -0
  59. package/src/lib/components/console/paid-media.js +397 -0
  60. package/src/lib/components/console/paid-media.js.map +1 -0
  61. package/src/lib/components/console/payments-settings-card.component.d.ts +13 -0
  62. package/src/lib/components/console/payments-settings-card.component.js +295 -0
  63. package/src/lib/components/console/payments-settings-card.component.js.map +1 -0
  64. package/src/lib/components/console/pos-page.component.d.ts +13 -0
  65. package/src/lib/components/console/pos-page.component.js +916 -0
  66. package/src/lib/components/console/pos-page.component.js.map +1 -0
  67. package/src/lib/components/console/product-editor-dialog.component.d.ts +32 -0
  68. package/src/lib/components/console/product-editor-dialog.component.js +1374 -0
  69. package/src/lib/components/console/product-editor-dialog.component.js.map +1 -0
  70. package/src/lib/components/console/products-hub-card.component.d.ts +16 -0
  71. package/src/lib/components/console/products-hub-card.component.js +1280 -0
  72. package/src/lib/components/console/products-hub-card.component.js.map +1 -0
  73. package/src/lib/components/console/products-hub-zone.component.d.ts +50 -0
  74. package/src/lib/components/console/products-hub-zone.component.js +200 -0
  75. package/src/lib/components/console/products-hub-zone.component.js.map +1 -0
  76. package/src/lib/components/console/recovery-queue-card.component.d.ts +39 -0
  77. package/src/lib/components/console/recovery-queue-card.component.js +262 -0
  78. package/src/lib/components/console/recovery-queue-card.component.js.map +1 -0
  79. package/src/lib/components/console/registers-card.component.d.ts +21 -0
  80. package/src/lib/components/console/registers-card.component.js +296 -0
  81. package/src/lib/components/console/registers-card.component.js.map +1 -0
  82. package/src/lib/components/console/reservations-card.component.d.ts +14 -0
  83. package/src/lib/components/console/reservations-card.component.js +650 -0
  84. package/src/lib/components/console/reservations-card.component.js.map +1 -0
  85. package/src/lib/components/console/reviews-moderation-card.component.d.ts +8 -0
  86. package/src/lib/components/console/reviews-moderation-card.component.js +235 -0
  87. package/src/lib/components/console/reviews-moderation-card.component.js.map +1 -0
  88. package/src/lib/components/console/shipping-settings-card.component.d.ts +38 -0
  89. package/src/lib/components/console/shipping-settings-card.component.js +560 -0
  90. package/src/lib/components/console/shipping-settings-card.component.js.map +1 -0
  91. package/src/lib/components/console/stock-movements-card.component.d.ts +31 -0
  92. package/src/lib/components/console/stock-movements-card.component.js +333 -0
  93. package/src/lib/components/console/stock-movements-card.component.js.map +1 -0
  94. package/src/lib/components/console/store-settings-card.component.d.ts +14 -0
  95. package/src/lib/components/console/store-settings-card.component.js +300 -0
  96. package/src/lib/components/console/store-settings-card.component.js.map +1 -0
  97. package/src/lib/components/console/storefront-tax-summary-card.component.d.ts +73 -0
  98. package/src/lib/components/console/storefront-tax-summary-card.component.js +408 -0
  99. package/src/lib/components/console/storefront-tax-summary-card.component.js.map +1 -0
  100. package/src/lib/components/console/suppliers-card.component.d.ts +8 -0
  101. package/src/lib/components/console/suppliers-card.component.js +328 -0
  102. package/src/lib/components/console/suppliers-card.component.js.map +1 -0
  103. package/src/lib/components/console/tax-settings-card.component.d.ts +14 -0
  104. package/src/lib/components/console/tax-settings-card.component.js +473 -0
  105. package/src/lib/components/console/tax-settings-card.component.js.map +1 -0
  106. package/src/lib/components/gate.d.ts +39 -0
  107. package/src/lib/components/gate.js +202 -0
  108. package/src/lib/components/gate.js.map +1 -0
  109. package/src/lib/components/gated-video.d.ts +40 -0
  110. package/src/lib/components/gated-video.js +366 -0
  111. package/src/lib/components/gated-video.js.map +1 -0
  112. package/src/lib/components/member-feed.d.ts +32 -0
  113. package/src/lib/components/member-feed.js +198 -0
  114. package/src/lib/components/member-feed.js.map +1 -0
  115. package/src/lib/components/member-recovery.d.ts +35 -0
  116. package/src/lib/components/member-recovery.js +313 -0
  117. package/src/lib/components/member-recovery.js.map +1 -0
  118. package/src/lib/components/member-signin.d.ts +35 -0
  119. package/src/lib/components/member-signin.js +257 -0
  120. package/src/lib/components/member-signin.js.map +1 -0
  121. package/src/lib/components/member-signup.d.ts +34 -0
  122. package/src/lib/components/member-signup.js +287 -0
  123. package/src/lib/components/member-signup.js.map +1 -0
  124. package/src/lib/components/newsletter-signup.d.ts +39 -0
  125. package/src/lib/components/newsletter-signup.js +229 -0
  126. package/src/lib/components/newsletter-signup.js.map +1 -0
  127. package/src/lib/components/product-detail.d.ts +38 -0
  128. package/src/lib/components/product-detail.js +1022 -0
  129. package/src/lib/components/product-detail.js.map +1 -0
  130. package/src/lib/components/product-grid.d.ts +67 -0
  131. package/src/lib/components/product-grid.js +909 -0
  132. package/src/lib/components/product-grid.js.map +1 -0
  133. package/src/lib/components/product-reviews.d.ts +32 -0
  134. package/src/lib/components/product-reviews.js +349 -0
  135. package/src/lib/components/product-reviews.js.map +1 -0
  136. package/src/lib/components/related-products.d.ts +33 -0
  137. package/src/lib/components/related-products.js +232 -0
  138. package/src/lib/components/related-products.js.map +1 -0
  139. package/src/lib/components/reservation-widget.d.ts +33 -0
  140. package/src/lib/components/reservation-widget.js +418 -0
  141. package/src/lib/components/reservation-widget.js.map +1 -0
  142. package/src/lib/components/storefront-payment-element-fallback.d.ts +18 -0
  143. package/src/lib/components/storefront-payment-element-fallback.js +51 -0
  144. package/src/lib/components/storefront-payment-element-fallback.js.map +1 -0
  145. package/src/lib/components/storefront-payment-element.d.ts +78 -0
  146. package/src/lib/components/storefront-payment-element.js +156 -0
  147. package/src/lib/components/storefront-payment-element.js.map +1 -0
  148. package/src/lib/components/wishlist.d.ts +46 -0
  149. package/src/lib/components/wishlist.js +304 -0
  150. package/src/lib/components/wishlist.js.map +1 -0
  151. package/src/lib/constants/bundle-common.d.ts +18 -0
  152. package/src/lib/constants/bundle-common.js +18 -0
  153. package/src/lib/constants/bundle-common.js.map +1 -0
  154. package/src/lib/constants/product-filters.d.ts +35 -0
  155. package/src/lib/constants/product-filters.js +109 -0
  156. package/src/lib/constants/product-filters.js.map +1 -0
  157. package/src/lib/model/commerce-cart.d.ts +52 -0
  158. package/src/lib/model/commerce-cart.js +102 -0
  159. package/src/lib/model/commerce-cart.js.map +1 -0
  160. package/src/lib/model/commerce-connect-transfer.d.ts +243 -0
  161. package/src/lib/model/commerce-connect-transfer.js +231 -0
  162. package/src/lib/model/commerce-connect-transfer.js.map +1 -0
  163. package/src/lib/model/commerce-discounts.d.ts +164 -0
  164. package/src/lib/model/commerce-discounts.js +231 -0
  165. package/src/lib/model/commerce-discounts.js.map +1 -0
  166. package/src/lib/model/commerce-dispute.d.ts +124 -0
  167. package/src/lib/model/commerce-dispute.js +225 -0
  168. package/src/lib/model/commerce-dispute.js.map +1 -0
  169. package/src/lib/model/commerce-gift-cards.d.ts +107 -0
  170. package/src/lib/model/commerce-gift-cards.js +121 -0
  171. package/src/lib/model/commerce-gift-cards.js.map +1 -0
  172. package/src/lib/model/commerce-io.d.ts +36 -0
  173. package/src/lib/model/commerce-io.js +245 -0
  174. package/src/lib/model/commerce-io.js.map +1 -0
  175. package/src/lib/model/commerce-orders.d.ts +1040 -0
  176. package/src/lib/model/commerce-orders.js +1022 -0
  177. package/src/lib/model/commerce-orders.js.map +1 -0
  178. package/src/lib/model/commerce-promotions.d.ts +188 -0
  179. package/src/lib/model/commerce-promotions.js +199 -0
  180. package/src/lib/model/commerce-promotions.js.map +1 -0
  181. package/src/lib/model/commerce-reservations.d.ts +175 -0
  182. package/src/lib/model/commerce-reservations.js +157 -0
  183. package/src/lib/model/commerce-reservations.js.map +1 -0
  184. package/src/lib/model/commerce-shipping.d.ts +316 -0
  185. package/src/lib/model/commerce-shipping.js +484 -0
  186. package/src/lib/model/commerce-shipping.js.map +1 -0
  187. package/src/lib/model/commerce-stock-holds.d.ts +199 -0
  188. package/src/lib/model/commerce-stock-holds.js +190 -0
  189. package/src/lib/model/commerce-stock-holds.js.map +1 -0
  190. package/src/lib/model/commerce-subscription-status.d.ts +67 -0
  191. package/src/lib/model/commerce-subscription-status.js +76 -0
  192. package/src/lib/model/commerce-subscription-status.js.map +1 -0
  193. package/src/lib/model/commerce-tax-decision.d.ts +222 -0
  194. package/src/lib/model/commerce-tax-decision.js +165 -0
  195. package/src/lib/model/commerce-tax-decision.js.map +1 -0
  196. package/src/lib/model/commerce-tax.d.ts +176 -0
  197. package/src/lib/model/commerce-tax.js +92 -0
  198. package/src/lib/model/commerce-tax.js.map +1 -0
  199. package/src/lib/model/commerce.d.ts +551 -0
  200. package/src/lib/model/commerce.js +739 -0
  201. package/src/lib/model/commerce.js.map +1 -0
  202. package/src/lib/model/index.d.ts +40 -0
  203. package/src/lib/model/index.js +40 -0
  204. package/src/lib/model/index.js.map +1 -0
  205. package/src/lib/model/order-figures.d.ts +48 -0
  206. package/src/lib/model/order-figures.js +74 -0
  207. package/src/lib/model/order-figures.js.map +1 -0
  208. package/src/lib/model/plugin-permissions.d.ts +23 -0
  209. package/src/lib/model/plugin-permissions.js +34 -0
  210. package/src/lib/model/plugin-permissions.js.map +1 -0
  211. package/src/lib/model/purchase-analytics.d.ts +186 -0
  212. package/src/lib/model/purchase-analytics.js +216 -0
  213. package/src/lib/model/purchase-analytics.js.map +1 -0
  214. package/src/lib/plugin-config.d.ts +62 -0
  215. package/src/lib/plugin-config.js +78 -0
  216. package/src/lib/plugin-config.js.map +1 -0
  217. package/src/lib/plugin.d.ts +28 -0
  218. package/src/lib/plugin.js +147 -0
  219. package/src/lib/plugin.js.map +1 -0
  220. package/src/lib/server/billing-webhook.d.ts +26 -0
  221. package/src/lib/server/billing-webhook.js +4011 -0
  222. package/src/lib/server/billing-webhook.js.map +1 -0
  223. package/src/lib/server/cancel-order.d.ts +87 -0
  224. package/src/lib/server/cancel-order.js +368 -0
  225. package/src/lib/server/cancel-order.js.map +1 -0
  226. package/src/lib/server/cart-checkout.d.ts +25 -0
  227. package/src/lib/server/cart-checkout.js +976 -0
  228. package/src/lib/server/cart-checkout.js.map +1 -0
  229. package/src/lib/server/cart-cookie.d.ts +32 -0
  230. package/src/lib/server/cart-cookie.js +77 -0
  231. package/src/lib/server/cart-cookie.js.map +1 -0
  232. package/src/lib/server/cart.d.ts +34 -0
  233. package/src/lib/server/cart.js +181 -0
  234. package/src/lib/server/cart.js.map +1 -0
  235. package/src/lib/server/catalog.d.ts +127 -0
  236. package/src/lib/server/catalog.js +277 -0
  237. package/src/lib/server/catalog.js.map +1 -0
  238. package/src/lib/server/checkout.d.ts +36 -0
  239. package/src/lib/server/checkout.js +915 -0
  240. package/src/lib/server/checkout.js.map +1 -0
  241. package/src/lib/server/connect.d.ts +26 -0
  242. package/src/lib/server/connect.js +238 -0
  243. package/src/lib/server/connect.js.map +1 -0
  244. package/src/lib/server/contact-refund.d.ts +117 -0
  245. package/src/lib/server/contact-refund.js +196 -0
  246. package/src/lib/server/contact-refund.js.map +1 -0
  247. package/src/lib/server/download.d.ts +39 -0
  248. package/src/lib/server/download.js +206 -0
  249. package/src/lib/server/download.js.map +1 -0
  250. package/src/lib/server/draft-order.d.ts +26 -0
  251. package/src/lib/server/draft-order.js +706 -0
  252. package/src/lib/server/draft-order.js.map +1 -0
  253. package/src/lib/server/feed.d.ts +24 -0
  254. package/src/lib/server/feed.js +59 -0
  255. package/src/lib/server/feed.js.map +1 -0
  256. package/src/lib/server/fulfill-order.d.ts +97 -0
  257. package/src/lib/server/fulfill-order.js +235 -0
  258. package/src/lib/server/fulfill-order.js.map +1 -0
  259. package/src/lib/server/gate.d.ts +36 -0
  260. package/src/lib/server/gate.js +112 -0
  261. package/src/lib/server/gate.js.map +1 -0
  262. package/src/lib/server/gift-cards.d.ts +42 -0
  263. package/src/lib/server/gift-cards.js +219 -0
  264. package/src/lib/server/gift-cards.js.map +1 -0
  265. package/src/lib/server/low-stock.d.ts +49 -0
  266. package/src/lib/server/low-stock.js +60 -0
  267. package/src/lib/server/low-stock.js.map +1 -0
  268. package/src/lib/server/manual-tax-rate.d.ts +82 -0
  269. package/src/lib/server/manual-tax-rate.js +113 -0
  270. package/src/lib/server/manual-tax-rate.js.map +1 -0
  271. package/src/lib/server/member-feed.d.ts +24 -0
  272. package/src/lib/server/member-feed.js +72 -0
  273. package/src/lib/server/member-feed.js.map +1 -0
  274. package/src/lib/server/member-name-search.d.ts +37 -0
  275. package/src/lib/server/member-name-search.js +42 -0
  276. package/src/lib/server/member-name-search.js.map +1 -0
  277. package/src/lib/server/member-post.d.ts +23 -0
  278. package/src/lib/server/member-post.js +166 -0
  279. package/src/lib/server/member-post.js.map +1 -0
  280. package/src/lib/server/membership-account.d.ts +37 -0
  281. package/src/lib/server/membership-account.js +148 -0
  282. package/src/lib/server/membership-account.js.map +1 -0
  283. package/src/lib/server/membership-admin-password.d.ts +33 -0
  284. package/src/lib/server/membership-admin-password.js +202 -0
  285. package/src/lib/server/membership-admin-password.js.map +1 -0
  286. package/src/lib/server/membership-content.d.ts +23 -0
  287. package/src/lib/server/membership-content.js +105 -0
  288. package/src/lib/server/membership-content.js.map +1 -0
  289. package/src/lib/server/membership-login.d.ts +19 -0
  290. package/src/lib/server/membership-login.js +137 -0
  291. package/src/lib/server/membership-login.js.map +1 -0
  292. package/src/lib/server/membership-logout.d.ts +19 -0
  293. package/src/lib/server/membership-logout.js +35 -0
  294. package/src/lib/server/membership-logout.js.map +1 -0
  295. package/src/lib/server/membership-recover.d.ts +60 -0
  296. package/src/lib/server/membership-recover.js +244 -0
  297. package/src/lib/server/membership-recover.js.map +1 -0
  298. package/src/lib/server/membership-register.d.ts +22 -0
  299. package/src/lib/server/membership-register.js +241 -0
  300. package/src/lib/server/membership-register.js.map +1 -0
  301. package/src/lib/server/membership-reset.d.ts +26 -0
  302. package/src/lib/server/membership-reset.js +88 -0
  303. package/src/lib/server/membership-reset.js.map +1 -0
  304. package/src/lib/server/membership-wishlist.d.ts +23 -0
  305. package/src/lib/server/membership-wishlist.js +89 -0
  306. package/src/lib/server/membership-wishlist.js.map +1 -0
  307. package/src/lib/server/membership.d.ts +96 -0
  308. package/src/lib/server/membership.js +222 -0
  309. package/src/lib/server/membership.js.map +1 -0
  310. package/src/lib/server/native-checkout.d.ts +170 -0
  311. package/src/lib/server/native-checkout.js +193 -0
  312. package/src/lib/server/native-checkout.js.map +1 -0
  313. package/src/lib/server/newsletter.d.ts +23 -0
  314. package/src/lib/server/newsletter.js +323 -0
  315. package/src/lib/server/newsletter.js.map +1 -0
  316. package/src/lib/server/notify-restock.d.ts +22 -0
  317. package/src/lib/server/notify-restock.js +84 -0
  318. package/src/lib/server/notify-restock.js.map +1 -0
  319. package/src/lib/server/order-analytics.d.ts +134 -0
  320. package/src/lib/server/order-analytics.js +263 -0
  321. package/src/lib/server/order-analytics.js.map +1 -0
  322. package/src/lib/server/order-figures.d.ts +33 -0
  323. package/src/lib/server/order-figures.js +220 -0
  324. package/src/lib/server/order-figures.js.map +1 -0
  325. package/src/lib/server/paid-media-delivery.d.ts +173 -0
  326. package/src/lib/server/paid-media-delivery.js +212 -0
  327. package/src/lib/server/paid-media-delivery.js.map +1 -0
  328. package/src/lib/server/pos-order.d.ts +54 -0
  329. package/src/lib/server/pos-order.js +1137 -0
  330. package/src/lib/server/pos-order.js.map +1 -0
  331. package/src/lib/server/process-abandoned.d.ts +54 -0
  332. package/src/lib/server/process-abandoned.js +222 -0
  333. package/src/lib/server/process-abandoned.js.map +1 -0
  334. package/src/lib/server/process-restock.d.ts +42 -0
  335. package/src/lib/server/process-restock.js +219 -0
  336. package/src/lib/server/process-restock.js.map +1 -0
  337. package/src/lib/server/product-card.d.ts +29 -0
  338. package/src/lib/server/product-card.js +54 -0
  339. package/src/lib/server/product-card.js.map +1 -0
  340. package/src/lib/server/product.d.ts +70 -0
  341. package/src/lib/server/product.js +105 -0
  342. package/src/lib/server/product.js.map +1 -0
  343. package/src/lib/server/promotion-hold.d.ts +144 -0
  344. package/src/lib/server/promotion-hold.js +174 -0
  345. package/src/lib/server/promotion-hold.js.map +1 -0
  346. package/src/lib/server/reconcile-stock.d.ts +106 -0
  347. package/src/lib/server/reconcile-stock.js +349 -0
  348. package/src/lib/server/reconcile-stock.js.map +1 -0
  349. package/src/lib/server/refund.d.ts +45 -0
  350. package/src/lib/server/refund.js +607 -0
  351. package/src/lib/server/refund.js.map +1 -0
  352. package/src/lib/server/related.d.ts +24 -0
  353. package/src/lib/server/related.js +104 -0
  354. package/src/lib/server/related.js.map +1 -0
  355. package/src/lib/server/reservation-availability.d.ts +23 -0
  356. package/src/lib/server/reservation-availability.js +111 -0
  357. package/src/lib/server/reservation-availability.js.map +1 -0
  358. package/src/lib/server/reserve-stock.d.ts +156 -0
  359. package/src/lib/server/reserve-stock.js +146 -0
  360. package/src/lib/server/reserve-stock.js.map +1 -0
  361. package/src/lib/server/reserve.d.ts +25 -0
  362. package/src/lib/server/reserve.js +426 -0
  363. package/src/lib/server/reserve.js.map +1 -0
  364. package/src/lib/server/restock-flag.d.ts +202 -0
  365. package/src/lib/server/restock-flag.js +449 -0
  366. package/src/lib/server/restock-flag.js.map +1 -0
  367. package/src/lib/server/reviews.d.ts +51 -0
  368. package/src/lib/server/reviews.js +132 -0
  369. package/src/lib/server/reviews.js.map +1 -0
  370. package/src/lib/server/site-page-enricher.d.ts +42 -0
  371. package/src/lib/server/site-page-enricher.js +149 -0
  372. package/src/lib/server/site-page-enricher.js.map +1 -0
  373. package/src/lib/server/site-page-resolver.d.ts +26 -0
  374. package/src/lib/server/site-page-resolver.js +223 -0
  375. package/src/lib/server/site-page-resolver.js.map +1 -0
  376. package/src/lib/server/stock-hold.d.ts +127 -0
  377. package/src/lib/server/stock-hold.js +258 -0
  378. package/src/lib/server/stock-hold.js.map +1 -0
  379. package/src/lib/server/storefront-tax-record.d.ts +22 -0
  380. package/src/lib/server/storefront-tax-record.js +218 -0
  381. package/src/lib/server/storefront-tax-record.js.map +1 -0
  382. package/src/lib/server/storefront-tax.d.ts +197 -0
  383. package/src/lib/server/storefront-tax.js +245 -0
  384. package/src/lib/server/storefront-tax.js.map +1 -0
  385. package/src/lib/server/stream.d.ts +25 -0
  386. package/src/lib/server/stream.js +191 -0
  387. package/src/lib/server/stream.js.map +1 -0
  388. package/src/lib/server/subscription-portal.d.ts +24 -0
  389. package/src/lib/server/subscription-portal.js +91 -0
  390. package/src/lib/server/subscription-portal.js.map +1 -0
  391. package/src/lib/server/supplier-outbox.d.ts +190 -0
  392. package/src/lib/server/supplier-outbox.js +342 -0
  393. package/src/lib/server/supplier-outbox.js.map +1 -0
  394. package/src/lib/server/supplier-update.d.ts +23 -0
  395. package/src/lib/server/supplier-update.js +289 -0
  396. package/src/lib/server/supplier-update.js.map +1 -0
  397. package/src/lib/server/tax-profile.d.ts +29 -0
  398. package/src/lib/server/tax-profile.js +40 -0
  399. package/src/lib/server/tax-profile.js.map +1 -0
  400. package/src/lib/server.d.ts +32 -0
  401. package/src/lib/server.js +311 -0
  402. package/src/lib/server.js.map +1 -0
  403. package/src/lib/site.d.ts +27 -0
  404. package/src/lib/site.js +134 -0
  405. package/src/lib/site.js.map +1 -0
  406. package/src/lib/utils/escape-html.d.ts +41 -0
  407. package/src/lib/utils/escape-html.js +41 -0
  408. package/src/lib/utils/escape-html.js.map +1 -0
  409. package/src/lib/utils/generate-preset-id.d.ts +19 -0
  410. package/src/lib/utils/generate-preset-id.js +25 -0
  411. package/src/lib/utils/generate-preset-id.js.map +1 -0
  412. package/src/lib/utils/member-continue.d.ts +45 -0
  413. package/src/lib/utils/member-continue.js +49 -0
  414. package/src/lib/utils/member-continue.js.map +1 -0
  415. package/src/lib/utils/use-storefront-purchase-event.d.ts +60 -0
  416. package/src/lib/utils/use-storefront-purchase-event.js +142 -0
  417. package/src/lib/utils/use-storefront-purchase-event.js.map +1 -0
@@ -0,0 +1,397 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ 'use client';
17
+ import { _ as _extends } from "@swc/helpers/_/_extends";
18
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
19
+ import { formatMediaRef, paidMediaAssetOf, parsePaidMediaSource, useMediaPicker } from "@aglyn/aglyn";
20
+ import { useConfirmationContext } from "@aglyn/shared-ui-jsx";
21
+ import { useSnackbar } from "@aglyn/shared-ui-snackstack";
22
+ import { authorizedFetch } from "@aglyn/shared-util-http/authorized-token";
23
+ import { useFirestore, useUser } from "@aglyn/tenant-feature-instance";
24
+ import { Button, Chip, Stack, Tooltip, Typography } from "@mui/material";
25
+ import { doc, getDoc } from "firebase/firestore";
26
+ import { useCallback, useEffect, useState } from "react";
27
+ const PAID_MEDIA_COPY = {
28
+ video: {
29
+ title: 'Make this video private?',
30
+ lead: 'Members videos are private: buyers play them through a link that ' + 'expires, and nobody else can open them.',
31
+ notAdded: 'The video was not added.',
32
+ unusable: 'Members cannot play it until it is private.',
33
+ choose: 'Choose the video from the media library, so its links can expire.'
34
+ },
35
+ download: {
36
+ title: 'Make this file private?',
37
+ lead: 'Paid downloads are private: buyers get a link that expires, and nobody ' + 'else can open the file.',
38
+ notAdded: 'The file was not added.',
39
+ unusable: 'Buyers cannot download it until it is private.',
40
+ choose: 'Choose the file from the media library, so its links can expire.'
41
+ }
42
+ };
43
+ /** The request body that names an asset's library to the media routes. */ export function paidMediaScopeBody(scope) {
44
+ return scope.startsWith('org:') ? {
45
+ orgId: scope.slice('org:'.length).split(':')[0]
46
+ } : {
47
+ hostId: scope
48
+ };
49
+ }
50
+ /**
51
+ * Where an asset is used, apart from the product it is being added to. That
52
+ * product's own row is not a place making it private could break.
53
+ */ export function usesBesideProduct(references, product) {
54
+ return references.filter((reference)=>!(product.productId && reference.kind === 'plugin' && reference.collectionId === 'products' && reference.hostId === product.hostId && reference.id === product.productId));
55
+ }
56
+ /** What the author reads before a video becomes private. */ export function paidMediaConfirmation(options) {
57
+ var _options_kind;
58
+ const { others, checked } = options;
59
+ const { lead } = PAID_MEDIA_COPY[(_options_kind = options.kind) != null ? _options_kind : 'video'];
60
+ let usage;
61
+ if (others.length) {
62
+ const names = others.slice(0, 3).map((reference)=>`“${reference.name}”`).join(', ');
63
+ const more = others.length > 3 ? ` and ${others.length - 3} more` : '';
64
+ usage = `It is also used on ${names}${more}, and it stops showing there.`;
65
+ } else if (checked === 'full') {
66
+ usage = 'Nothing else uses it.';
67
+ } else if (checked === 'partial') {
68
+ usage = 'We could not check everywhere it might be used, so something else ' + 'could still rely on it.';
69
+ } else {
70
+ usage = 'We could not check where else it is used.';
71
+ }
72
+ return `${lead} ${usage} Any public link to it that was already shared stops working too.`;
73
+ }
74
+ /**
75
+ * Adds a picked file to a product as paid media, making it private first when
76
+ * it is not, and makes an already-added one private.
77
+ */ export function usePaidMediaAttach(product) {
78
+ var _product_kind;
79
+ const { hostId, productId } = product;
80
+ const kind = (_product_kind = product.kind) != null ? _product_kind : 'video';
81
+ const copy = PAID_MEDIA_COPY[kind];
82
+ const { data: user } = useUser();
83
+ const { confirm } = useConfirmationContext();
84
+ const { enqueueSnackbar } = useSnackbar();
85
+ const protect = useCallback(async (asset, options)=>{
86
+ const scopeBody = paidMediaScopeBody(asset.scope);
87
+ let others = [];
88
+ let checked = 'failed';
89
+ try {
90
+ const response = await authorizedFetch(user, '/api/media/references', {
91
+ method: 'POST',
92
+ headers: {
93
+ 'Content-Type': 'application/json'
94
+ },
95
+ body: JSON.stringify(_extends({}, scopeBody, {
96
+ mediaId: asset.mediaId
97
+ }))
98
+ });
99
+ if (response.ok) {
100
+ const payload = await response.json();
101
+ others = usesBesideProduct(Array.isArray(payload == null ? void 0 : payload.references) ? payload.references : [], {
102
+ hostId,
103
+ productId
104
+ });
105
+ checked = (payload == null ? void 0 : payload.complete) ? 'full' : 'partial';
106
+ }
107
+ } catch (unused) {
108
+ // Said in the confirmation instead: "we could not check" is not
109
+ // "nothing uses it".
110
+ }
111
+ const confirmed = await confirm({
112
+ title: copy.title,
113
+ description: paidMediaConfirmation({
114
+ others,
115
+ checked,
116
+ kind
117
+ }),
118
+ confirmationText: 'Make private'
119
+ }).then(()=>true).catch(()=>false);
120
+ if (!confirmed) return false;
121
+ const response = await authorizedFetch(user, '/api/media/folders', {
122
+ method: 'POST',
123
+ headers: {
124
+ 'Content-Type': 'application/json'
125
+ },
126
+ body: JSON.stringify(_extends({}, scopeBody, {
127
+ action: 'set-private',
128
+ mediaId: asset.mediaId,
129
+ private: true
130
+ }))
131
+ });
132
+ const payload = await response.json().catch(()=>({}));
133
+ if (!response.ok) {
134
+ var _ref;
135
+ const reason = String((_ref = payload == null ? void 0 : payload.error) != null ? _ref : 'Could not make the video private');
136
+ enqueueSnackbar(`${reason}. ${options.adding ? copy.notAdded : copy.unusable}`, {
137
+ variant: 'error',
138
+ allowDuplicate: true
139
+ });
140
+ return false;
141
+ }
142
+ if ((payload == null ? void 0 : payload.rawUrlCleared) === false) {
143
+ enqueueSnackbar('The video is private, but an old public download link to it could ' + 'not be confirmed dead. Make it private again from the media ' + 'library to retry.', {
144
+ variant: 'warning',
145
+ persist: false
146
+ });
147
+ }
148
+ return true;
149
+ }, [
150
+ confirm,
151
+ copy,
152
+ enqueueSnackbar,
153
+ hostId,
154
+ kind,
155
+ productId,
156
+ user
157
+ ]);
158
+ /** The value to store on the product, or null when nothing was added. */ const attach = useCallback(async (picked)=>{
159
+ const reference = picked.mediaScope && picked.mediaId ? formatMediaRef(picked.mediaScope, picked.mediaId) : undefined;
160
+ if (!reference || !picked.mediaScope || !picked.mediaId) {
161
+ enqueueSnackbar(copy.choose, {
162
+ variant: 'warning',
163
+ persist: false
164
+ });
165
+ return null;
166
+ }
167
+ if (picked.private) return reference;
168
+ const madePrivate = await protect({
169
+ scope: picked.mediaScope,
170
+ mediaId: picked.mediaId
171
+ }, {
172
+ adding: true
173
+ });
174
+ return madePrivate ? reference : null;
175
+ }, [
176
+ copy,
177
+ enqueueSnackbar,
178
+ protect
179
+ ]);
180
+ return {
181
+ attach,
182
+ protect
183
+ };
184
+ }
185
+ /**
186
+ * Whether one stored paid file can be delivered, read off its media document.
187
+ * A public one gets the button that fixes it.
188
+ */ export function PaidMediaProtection(props) {
189
+ const { url, hostId, productId, kind } = props;
190
+ const firestore = useFirestore();
191
+ const { protect } = usePaidMediaAttach({
192
+ hostId,
193
+ productId,
194
+ kind
195
+ });
196
+ const [protection, setProtection] = useState('checking');
197
+ const [generation, setGeneration] = useState(0);
198
+ const source = parsePaidMediaSource(url);
199
+ const asset = paidMediaAssetOf(url);
200
+ useEffect(()=>{
201
+ const target = paidMediaAssetOf(url);
202
+ if (!target) return;
203
+ let active = true;
204
+ setProtection('checking');
205
+ const reference = target.scope.startsWith('org:') ? doc(firestore, 'orgs', target.scope.slice('org:'.length).split(':')[0], 'media', target.mediaId) : doc(firestore, 'hosts', target.scope, 'media', target.mediaId);
206
+ getDoc(reference).then((snapshot)=>{
207
+ if (!active) return;
208
+ if (!snapshot.exists() || snapshot.get('deletedAt')) {
209
+ setProtection('missing');
210
+ } else {
211
+ setProtection(snapshot.get('private') === true ? 'private' : 'public');
212
+ }
213
+ }).catch(()=>{
214
+ if (active) setProtection('unknown');
215
+ });
216
+ return ()=>{
217
+ active = false;
218
+ };
219
+ }, [
220
+ firestore,
221
+ url,
222
+ generation
223
+ ]);
224
+ if (source.kind === 'external') {
225
+ return /*#__PURE__*/ _jsx(Tooltip, {
226
+ title: "Served by another site, so its links cannot be made to expire.",
227
+ children: /*#__PURE__*/ _jsx(Chip, {
228
+ size: "small",
229
+ label: "Hosted elsewhere"
230
+ })
231
+ });
232
+ }
233
+ if (source.kind === 'malformed') {
234
+ return /*#__PURE__*/ _jsx(Chip, {
235
+ size: "small",
236
+ color: "error",
237
+ label: "Cannot be played"
238
+ });
239
+ }
240
+ if (!asset) return null;
241
+ if (protection === 'private') {
242
+ return /*#__PURE__*/ _jsx(Tooltip, {
243
+ title: "Buyers get a link that expires.",
244
+ children: /*#__PURE__*/ _jsx(Chip, {
245
+ size: "small",
246
+ color: "success",
247
+ label: "Private"
248
+ })
249
+ });
250
+ }
251
+ if (protection === 'public') {
252
+ return /*#__PURE__*/ _jsxs(Stack, {
253
+ direction: "row",
254
+ spacing: 1,
255
+ sx: {
256
+ alignItems: 'center'
257
+ },
258
+ children: [
259
+ /*#__PURE__*/ _jsx(Tooltip, {
260
+ title: "Anyone with its link can open a public file, so buyers cannot get it until it is private.",
261
+ children: /*#__PURE__*/ _jsx(Chip, {
262
+ size: "small",
263
+ color: "warning",
264
+ label: "Public"
265
+ })
266
+ }),
267
+ /*#__PURE__*/ _jsx(Button, {
268
+ size: "small",
269
+ onClick: ()=>void protect(asset, {
270
+ adding: false
271
+ }).then((madePrivate)=>{
272
+ if (madePrivate) setGeneration((value)=>value + 1);
273
+ }),
274
+ children: 'Make private'
275
+ })
276
+ ]
277
+ });
278
+ }
279
+ if (protection === 'missing') {
280
+ return /*#__PURE__*/ _jsx(Chip, {
281
+ size: "small",
282
+ color: "error",
283
+ label: "Not in the media library"
284
+ });
285
+ }
286
+ return null;
287
+ }
288
+ /**
289
+ * A product's members videos: each with whether it can play, and the button
290
+ * that adds one.
291
+ *
292
+ * Its own component so the product editor's body stays free while the editor
293
+ * is closed: the editor is rendered on every visit to the catalog, and this
294
+ * only mounts inside the open dialog.
295
+ */ export function MembersVideosField(props) {
296
+ const { hostId, productId, videos, onChange } = props;
297
+ const { pickMedia } = useMediaPicker();
298
+ const { attach } = usePaidMediaAttach({
299
+ hostId,
300
+ productId
301
+ });
302
+ return /*#__PURE__*/ _jsxs(_Fragment, {
303
+ children: [
304
+ videos.map((video, index)=>/*#__PURE__*/ _jsxs(Stack, {
305
+ direction: "row",
306
+ spacing: 1,
307
+ sx: {
308
+ alignItems: 'center'
309
+ },
310
+ children: [
311
+ /*#__PURE__*/ _jsx(Typography, {
312
+ variant: "body2",
313
+ sx: {
314
+ flex: 1
315
+ },
316
+ noWrap: true,
317
+ children: `🎬 ${video.title || video.url}`
318
+ }),
319
+ /*#__PURE__*/ _jsx(PaidMediaProtection, {
320
+ url: video.url,
321
+ hostId: hostId,
322
+ productId: productId
323
+ }),
324
+ /*#__PURE__*/ _jsx(Button, {
325
+ size: "small",
326
+ color: "error",
327
+ onClick: ()=>onChange(videos.filter((_item, itemIndex)=>itemIndex !== index)),
328
+ children: '✕'
329
+ })
330
+ ]
331
+ }, index)),
332
+ /*#__PURE__*/ _jsx(Button, {
333
+ size: "small",
334
+ sx: {
335
+ alignSelf: 'flex-start'
336
+ },
337
+ onClick: ()=>void (async ()=>{
338
+ var _media_fileName;
339
+ // A private file is the only kind a members video can be, so the
340
+ // picker offers private files here and nowhere else. And a film is
341
+ // the only kind of file it can play, so the picker lists and
342
+ // uploads nothing else (AGL-2953).
343
+ const media = await (pickMedia == null ? void 0 : pickMedia({
344
+ allowPrivate: true,
345
+ kind: 'video'
346
+ }));
347
+ if (!media) return;
348
+ const url = await attach(media);
349
+ if (!url) return;
350
+ onChange([
351
+ ...videos,
352
+ {
353
+ url,
354
+ title: (_media_fileName = media.fileName) != null ? _media_fileName : ''
355
+ }
356
+ ]);
357
+ })(),
358
+ children: 'Add members video'
359
+ })
360
+ ]
361
+ });
362
+ }
363
+ /**
364
+ * The button that adds a paid download (AGL-2847): the picker offers private
365
+ * files, and a public one is made private before it is added.
366
+ *
367
+ * Its own component for the same reason as {@link MembersVideosField}: the
368
+ * product editor's body runs while the editor is closed, and this only mounts
369
+ * inside the open dialog.
370
+ */ export function PaidDownloadAddButton(props) {
371
+ const { hostId, productId, onAdd } = props;
372
+ const { pickMedia } = useMediaPicker();
373
+ const { attach } = usePaidMediaAttach({
374
+ hostId,
375
+ productId,
376
+ kind: 'download'
377
+ });
378
+ return /*#__PURE__*/ _jsx(Button, {
379
+ size: "small",
380
+ onClick: ()=>void (async ()=>{
381
+ var _media_fileName;
382
+ const media = await (pickMedia == null ? void 0 : pickMedia({
383
+ allowPrivate: true
384
+ }));
385
+ if (!media) return;
386
+ const url = await attach(media);
387
+ if (!url) return;
388
+ onAdd({
389
+ url,
390
+ fileName: (_media_fileName = media.fileName) != null ? _media_fileName : 'download'
391
+ });
392
+ })(),
393
+ children: 'Add file (media library)'
394
+ });
395
+ }
396
+
397
+ //# sourceMappingURL=paid-media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../../libs/plugins/commerce/src/lib/components/console/paid-media.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n'use client'\n\nimport {\n formatMediaRef,\n paidMediaAssetOf,\n parsePaidMediaSource,\n type PickedMedia,\n useMediaPicker,\n} from '@aglyn/aglyn'\nimport { useConfirmationContext } from '@aglyn/shared-ui-jsx'\nimport { useSnackbar } from '@aglyn/shared-ui-snackstack'\nimport { authorizedFetch } from '@aglyn/shared-util-http/authorized-token'\nimport { useFirestore, useUser } from '@aglyn/tenant-feature-instance'\nimport { Button, Chip, Stack, Tooltip, Typography } from '@mui/material'\nimport { doc, getDoc } from 'firebase/firestore'\nimport { useCallback, useEffect, useState } from 'react'\n\n/**\n * A product's members videos (AGL-2814) and paid downloads (AGL-2847) are\n * private files.\n *\n * The stream and download routes only ever hand a buyer a link that expires,\n * and they can only do that for a PRIVATE asset: a public one already has a\n * URL that works for anyone, forever, and the routes refuse to deliver it. So\n * adding a file to a product makes it private, and the product editor shows,\n * per file, whether that is still true.\n *\n * Making a file private is visible outside the product. A trailer that is\n * also on a public page stops playing there, and every public link to it that\n * was already shared dies. The author is told which places use it before\n * confirming, from the same where-used scan the media library runs before a\n * delete.\n */\n\n/** A where-used row, reduced to what the confirmation reads. */\nexport interface PaidMediaReference {\n kind: string\n id: string\n name: string\n hostId: string\n collectionId?: string\n}\n\n/** How far the where-used scan got before the author was asked. */\nexport type PaidMediaUsageCheck = 'full' | 'partial' | 'failed'\n\n/** Which list a flow adds to, for the words it uses. */\nexport type PaidMediaKind = 'video' | 'download'\n\nconst PAID_MEDIA_COPY: Record<\n PaidMediaKind,\n { title: string; lead: string; notAdded: string; unusable: string; choose: string }\n> = {\n video: {\n title: 'Make this video private?',\n lead:\n 'Members videos are private: buyers play them through a link that ' +\n 'expires, and nobody else can open them.',\n notAdded: 'The video was not added.',\n unusable: 'Members cannot play it until it is private.',\n choose: 'Choose the video from the media library, so its links can expire.',\n },\n download: {\n title: 'Make this file private?',\n lead:\n 'Paid downloads are private: buyers get a link that expires, and nobody ' +\n 'else can open the file.',\n notAdded: 'The file was not added.',\n unusable: 'Buyers cannot download it until it is private.',\n choose: 'Choose the file from the media library, so its links can expire.',\n },\n}\n\n/** The request body that names an asset's library to the media routes. */\nexport function paidMediaScopeBody(\n scope: string,\n): { orgId: string } | { hostId: string } {\n return scope.startsWith('org:')\n ? { orgId: scope.slice('org:'.length).split(':')[0] }\n : { hostId: scope }\n}\n\n/**\n * Where an asset is used, apart from the product it is being added to. That\n * product's own row is not a place making it private could break.\n */\nexport function usesBesideProduct(\n references: readonly PaidMediaReference[],\n product: { hostId: string; productId?: string },\n): PaidMediaReference[] {\n return references.filter(\n (reference) =>\n !(\n product.productId &&\n reference.kind === 'plugin' &&\n reference.collectionId === 'products' &&\n reference.hostId === product.hostId &&\n reference.id === product.productId\n ),\n )\n}\n\n/** What the author reads before a video becomes private. */\nexport function paidMediaConfirmation(options: {\n others: readonly PaidMediaReference[]\n checked: PaidMediaUsageCheck\n kind?: PaidMediaKind\n}): string {\n const { others, checked } = options\n const { lead } = PAID_MEDIA_COPY[options.kind ?? 'video']\n let usage: string\n if (others.length) {\n const names = others\n .slice(0, 3)\n .map((reference) => `“${reference.name}”`)\n .join(', ')\n const more = others.length > 3 ? ` and ${others.length - 3} more` : ''\n usage = `It is also used on ${names}${more}, and it stops showing there.`\n } else if (checked === 'full') {\n usage = 'Nothing else uses it.'\n } else if (checked === 'partial') {\n usage =\n 'We could not check everywhere it might be used, so something else ' +\n 'could still rely on it.'\n } else {\n usage = 'We could not check where else it is used.'\n }\n return `${lead} ${usage} Any public link to it that was already shared stops working too.`\n}\n\n/**\n * Adds a picked file to a product as paid media, making it private first when\n * it is not, and makes an already-added one private.\n */\nexport function usePaidMediaAttach(product: {\n hostId: string\n productId?: string\n kind?: PaidMediaKind\n}) {\n const { hostId, productId } = product\n const kind = product.kind ?? 'video'\n const copy = PAID_MEDIA_COPY[kind]\n const { data: user } = useUser()\n const { confirm } = useConfirmationContext()\n const { enqueueSnackbar } = useSnackbar()\n\n const protect = useCallback(\n async (\n asset: { scope: string; mediaId: string },\n options: { adding: boolean },\n ): Promise<boolean> => {\n const scopeBody = paidMediaScopeBody(asset.scope)\n let others: PaidMediaReference[] = []\n let checked: PaidMediaUsageCheck = 'failed'\n try {\n const response = await authorizedFetch(user, '/api/media/references', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ ...scopeBody, mediaId: asset.mediaId }),\n })\n if (response.ok) {\n const payload = await response.json()\n others = usesBesideProduct(\n Array.isArray(payload?.references) ? payload.references : [],\n { hostId, productId },\n )\n checked = payload?.complete ? 'full' : 'partial'\n }\n } catch {\n // Said in the confirmation instead: \"we could not check\" is not\n // \"nothing uses it\".\n }\n const confirmed = await confirm({\n title: copy.title,\n description: paidMediaConfirmation({ others, checked, kind }),\n confirmationText: 'Make private',\n })\n .then(() => true)\n .catch(() => false)\n if (!confirmed) return false\n const response = await authorizedFetch(user, '/api/media/folders', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n ...scopeBody,\n action: 'set-private',\n mediaId: asset.mediaId,\n private: true,\n }),\n })\n const payload = await response.json().catch(() => ({}))\n if (!response.ok) {\n const reason = String(payload?.error ?? 'Could not make the video private')\n enqueueSnackbar(\n `${reason}. ${options.adding ? copy.notAdded : copy.unusable}`,\n { variant: 'error', allowDuplicate: true },\n )\n return false\n }\n if (payload?.rawUrlCleared === false) {\n enqueueSnackbar(\n 'The video is private, but an old public download link to it could ' +\n 'not be confirmed dead. Make it private again from the media ' +\n 'library to retry.',\n { variant: 'warning', persist: false },\n )\n }\n return true\n },\n [confirm, copy, enqueueSnackbar, hostId, kind, productId, user],\n )\n\n /** The value to store on the product, or null when nothing was added. */\n const attach = useCallback(\n async (picked: PickedMedia): Promise<string | null> => {\n const reference =\n picked.mediaScope && picked.mediaId\n ? formatMediaRef(picked.mediaScope, picked.mediaId)\n : undefined\n if (!reference || !picked.mediaScope || !picked.mediaId) {\n enqueueSnackbar(copy.choose, { variant: 'warning', persist: false })\n return null\n }\n if (picked.private) return reference\n const madePrivate = await protect(\n { scope: picked.mediaScope, mediaId: picked.mediaId },\n { adding: true },\n )\n return madePrivate ? reference : null\n },\n [copy, enqueueSnackbar, protect],\n )\n\n return { attach, protect }\n}\n\ntype Protection = 'checking' | 'private' | 'public' | 'missing' | 'unknown'\n\n/**\n * Whether one stored paid file can be delivered, read off its media document.\n * A public one gets the button that fixes it.\n */\nexport function PaidMediaProtection(props: {\n url: string\n hostId: string\n productId?: string\n kind?: PaidMediaKind\n}) {\n const { url, hostId, productId, kind } = props\n const firestore = useFirestore()\n const { protect } = usePaidMediaAttach({ hostId, productId, kind })\n const [protection, setProtection] = useState<Protection>('checking')\n const [generation, setGeneration] = useState(0)\n const source = parsePaidMediaSource(url)\n const asset = paidMediaAssetOf(url)\n\n useEffect(() => {\n const target = paidMediaAssetOf(url)\n if (!target) return\n let active = true\n setProtection('checking')\n const reference = target.scope.startsWith('org:')\n ? doc(\n firestore,\n 'orgs',\n target.scope.slice('org:'.length).split(':')[0],\n 'media',\n target.mediaId,\n )\n : doc(firestore, 'hosts', target.scope, 'media', target.mediaId)\n getDoc(reference)\n .then((snapshot) => {\n if (!active) return\n if (!snapshot.exists() || snapshot.get('deletedAt')) {\n setProtection('missing')\n } else {\n setProtection(snapshot.get('private') === true ? 'private' : 'public')\n }\n })\n .catch(() => {\n if (active) setProtection('unknown')\n })\n return () => {\n active = false\n }\n }, [firestore, url, generation])\n\n if (source.kind === 'external') {\n return (\n <Tooltip title=\"Served by another site, so its links cannot be made to expire.\">\n <Chip size=\"small\" label=\"Hosted elsewhere\" />\n </Tooltip>\n )\n }\n if (source.kind === 'malformed') {\n return <Chip size=\"small\" color=\"error\" label=\"Cannot be played\" />\n }\n if (!asset) return null\n if (protection === 'private') {\n return (\n <Tooltip title=\"Buyers get a link that expires.\">\n <Chip size=\"small\" color=\"success\" label=\"Private\" />\n </Tooltip>\n )\n }\n if (protection === 'public') {\n return (\n <Stack direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Tooltip title=\"Anyone with its link can open a public file, so buyers cannot get it until it is private.\">\n <Chip size=\"small\" color=\"warning\" label=\"Public\" />\n </Tooltip>\n <Button\n size=\"small\"\n onClick={() =>\n void protect(asset, { adding: false }).then((madePrivate) => {\n if (madePrivate) setGeneration((value) => value + 1)\n })\n }\n >\n {'Make private'}\n </Button>\n </Stack>\n )\n }\n if (protection === 'missing') {\n return <Chip size=\"small\" color=\"error\" label=\"Not in the media library\" />\n }\n return null\n}\n\n/** One entry of a product's members video list. */\nexport interface MembersVideo {\n url: string\n title?: string\n}\n\n/**\n * A product's members videos: each with whether it can play, and the button\n * that adds one.\n *\n * Its own component so the product editor's body stays free while the editor\n * is closed: the editor is rendered on every visit to the catalog, and this\n * only mounts inside the open dialog.\n */\nexport function MembersVideosField(props: {\n hostId: string\n productId?: string\n videos: readonly MembersVideo[]\n onChange: (videos: MembersVideo[]) => void\n}) {\n const { hostId, productId, videos, onChange } = props\n const { pickMedia } = useMediaPicker()\n const { attach } = usePaidMediaAttach({ hostId, productId })\n return (\n <>\n {videos.map((video, index) => (\n <Stack key={index} direction=\"row\" spacing={1} sx={{ alignItems: 'center' }}>\n <Typography variant=\"body2\" sx={{ flex: 1 }} noWrap>\n {`🎬 ${video.title || video.url}`}\n </Typography>\n <PaidMediaProtection url={video.url} hostId={hostId} productId={productId} />\n <Button\n size=\"small\"\n color=\"error\"\n onClick={() =>\n onChange(videos.filter((_item, itemIndex) => itemIndex !== index))\n }\n >\n {'✕'}\n </Button>\n </Stack>\n ))}\n <Button\n size=\"small\"\n sx={{ alignSelf: 'flex-start' }}\n onClick={() =>\n void (async () => {\n // A private file is the only kind a members video can be, so the\n // picker offers private files here and nowhere else. And a film is\n // the only kind of file it can play, so the picker lists and\n // uploads nothing else (AGL-2953).\n const media = await pickMedia?.({\n allowPrivate: true,\n kind: 'video',\n })\n if (!media) return\n const url = await attach(media)\n if (!url) return\n onChange([...videos, { url, title: media.fileName ?? '' }])\n })()\n }\n >\n {'Add members video'}\n </Button>\n </>\n )\n}\n\n/**\n * The button that adds a paid download (AGL-2847): the picker offers private\n * files, and a public one is made private before it is added.\n *\n * Its own component for the same reason as {@link MembersVideosField}: the\n * product editor's body runs while the editor is closed, and this only mounts\n * inside the open dialog.\n */\nexport function PaidDownloadAddButton(props: {\n hostId: string\n productId?: string\n onAdd: (file: { url: string; fileName: string }) => void\n}) {\n const { hostId, productId, onAdd } = props\n const { pickMedia } = useMediaPicker()\n const { attach } = usePaidMediaAttach({ hostId, productId, kind: 'download' })\n return (\n <Button\n size=\"small\"\n onClick={() =>\n void (async () => {\n const media = await pickMedia?.({ allowPrivate: true })\n if (!media) return\n const url = await attach(media)\n if (!url) return\n onAdd({ url, fileName: media.fileName ?? 'download' })\n })()\n }\n >\n {'Add file (media library)'}\n </Button>\n )\n}\n"],"names":["formatMediaRef","paidMediaAssetOf","parsePaidMediaSource","useMediaPicker","useConfirmationContext","useSnackbar","authorizedFetch","useFirestore","useUser","Button","Chip","Stack","Tooltip","Typography","doc","getDoc","useCallback","useEffect","useState","PAID_MEDIA_COPY","video","title","lead","notAdded","unusable","choose","download","paidMediaScopeBody","scope","startsWith","orgId","slice","length","split","hostId","usesBesideProduct","references","product","filter","reference","productId","kind","collectionId","id","paidMediaConfirmation","options","others","checked","usage","names","map","name","join","more","usePaidMediaAttach","copy","data","user","confirm","enqueueSnackbar","protect","asset","scopeBody","response","method","headers","body","JSON","stringify","mediaId","ok","payload","json","Array","isArray","complete","confirmed","description","confirmationText","then","catch","action","private","reason","String","error","adding","variant","allowDuplicate","rawUrlCleared","persist","attach","picked","mediaScope","undefined","madePrivate","PaidMediaProtection","props","url","firestore","protection","setProtection","generation","setGeneration","source","target","active","snapshot","exists","get","size","label","color","direction","spacing","sx","alignItems","onClick","value","MembersVideosField","videos","onChange","pickMedia","index","flex","noWrap","_item","itemIndex","alignSelf","media","allowPrivate","fileName","PaidDownloadAddButton","onAdd"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface PaymentsSettingsCardProps {
2
+ hostId: string;
3
+ }
4
+ /**
5
+ * Merchant payments card (AGL-284): Stripe Connect Express onboarding
6
+ * status for the org owner + the plan's transaction-fee ladder so the
7
+ * "upgrade to kill fees" motion (AGL-278) is visible where it matters.
8
+ */
9
+ export declare function PaymentsSettingsCard(props: PaymentsSettingsCardProps): import("react").JSX.Element;
10
+ export declare namespace PaymentsSettingsCard {
11
+ var displayName: string;
12
+ }
13
+ export default PaymentsSettingsCard;