@dropins/storefront-quote-management 0.0.1-alpha8 → 1.0.0-beta1

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 (295) hide show
  1. package/api/acceptQuoteTemplate/acceptQuoteTemplate.d.ts +13 -0
  2. package/api/{getCustomerData/getCustomerData.d.ts → acceptQuoteTemplate/graphql/acceptQuoteTemplate.d.ts} +2 -2
  3. package/{data/transforms/__fixtures__/customerData.d.ts → api/acceptQuoteTemplate/index.d.ts} +2 -2
  4. package/api/addQuoteTemplateLineItemNote/addQuoteTemplateLineItemNote.d.ts +15 -0
  5. package/api/addQuoteTemplateLineItemNote/graphql/setQuoteTemplateLineItemNote.d.ts +10 -0
  6. package/api/addQuoteTemplateLineItemNote/index.d.ts +10 -0
  7. package/api/addQuoteTemplateShippingAddress/addQuoteTemplateShippingAddress.d.ts +37 -0
  8. package/api/addQuoteTemplateShippingAddress/graphql/setNegotiableQuoteTemplateShippingAddress.d.ts +10 -0
  9. package/api/addQuoteTemplateShippingAddress/index.d.ts +10 -0
  10. package/api/cancelQuoteTemplate/cancelQuoteTemplate.d.ts +14 -0
  11. package/api/cancelQuoteTemplate/graphql/cancelQuoteTemplate.d.ts +10 -0
  12. package/api/cancelQuoteTemplate/index.d.ts +10 -0
  13. package/api/closeNegotiableQuote/closeNegotiableQuote.d.ts +31 -0
  14. package/api/closeNegotiableQuote/graphql/CloseNegotiableQuoteMutation.d.ts +2 -0
  15. package/api/closeNegotiableQuote/index.d.ts +10 -0
  16. package/api/createQuoteTemplate/createQuoteTemplate.d.ts +4 -0
  17. package/api/createQuoteTemplate/graphql/createQuoteTemplate.d.ts +10 -0
  18. package/api/createQuoteTemplate/index.d.ts +10 -0
  19. package/api/deleteQuote/deleteQuote.d.ts +28 -0
  20. package/api/deleteQuote/graphql/DeleteQuoteMutation.d.ts +10 -0
  21. package/api/{getCustomerData → deleteQuote}/index.d.ts +1 -1
  22. package/{data/models/customer-model.d.ts → api/deleteQuoteTemplate/deleteQuoteTemplate.d.ts} +6 -8
  23. package/api/deleteQuoteTemplate/graphql/deleteQuoteTemplate.d.ts +10 -0
  24. package/api/deleteQuoteTemplate/index.d.ts +10 -0
  25. package/api/duplicateNegotiableQuote/duplicateNegotiableQuote.d.ts +8 -0
  26. package/api/duplicateNegotiableQuote/graphql/duplicateNegotiableQuoteMutation.d.ts +10 -0
  27. package/api/duplicateNegotiableQuote/index.d.ts +10 -0
  28. package/api/generateQuoteFromTemplate/generateQuoteFromTemplate.d.ts +15 -0
  29. package/api/generateQuoteFromTemplate/graphql/generateNegotiableQuoteFromTemplate.d.ts +10 -0
  30. package/api/generateQuoteFromTemplate/index.d.ts +10 -0
  31. package/api/getQuoteData/getQuoteData.d.ts +10 -0
  32. package/api/getQuoteData/graphql/QuoteDataQuery.d.ts +2 -0
  33. package/api/getQuoteData/index.d.ts +10 -0
  34. package/api/getQuoteTemplateData/getQuoteTemplateData.d.ts +4 -0
  35. package/api/getQuoteTemplateData/graphql/getQuoteTemplateData.d.ts +10 -0
  36. package/api/getQuoteTemplateData/index.d.ts +10 -0
  37. package/api/getQuoteTemplates/getQuoteTemplates.d.ts +34 -0
  38. package/api/getQuoteTemplates/graphql/getQuoteTemplates.d.ts +10 -0
  39. package/api/getQuoteTemplates/index.d.ts +10 -0
  40. package/api/getStoreConfig/getStoreConfig.d.ts +4 -0
  41. package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +10 -0
  42. package/api/getStoreConfig/index.d.ts +10 -0
  43. package/api/graphql/NegotiableQuoteAddressFragment.d.ts +10 -0
  44. package/api/graphql/NegotiableQuoteFragment.d.ts +5 -13
  45. package/api/graphql/NegotiableQuoteListFragment.d.ts +10 -0
  46. package/api/graphql/NegotiableQuoteTemplateFragment.d.ts +10 -0
  47. package/api/graphql/ShippingMethodFragment.d.ts +10 -0
  48. package/api/index.d.ts +33 -1
  49. package/api/initialize/initialize.d.ts +2 -0
  50. package/api/openQuoteTemplate/graphql/openQuoteTemplate.d.ts +10 -0
  51. package/api/openQuoteTemplate/index.d.ts +10 -0
  52. package/api/openQuoteTemplate/openQuoteTemplate.d.ts +13 -0
  53. package/api/removeNegotiableQuoteItems/graphql/RemoveNegotiableQuoteItemsMutation.d.ts +10 -0
  54. package/api/removeNegotiableQuoteItems/index.d.ts +10 -0
  55. package/api/removeNegotiableQuoteItems/removeNegotiableQuoteItems.d.ts +8 -0
  56. package/api/removeQuoteTemplateItems/graphql/removeNegotiableQuoteTemplateItems.d.ts +10 -0
  57. package/api/removeQuoteTemplateItems/index.d.ts +10 -0
  58. package/api/removeQuoteTemplateItems/removeQuoteTemplateItems.d.ts +14 -0
  59. package/api/renameNegotiableQuote/graphql/RenameNegotiableQuoteMutation.d.ts +10 -0
  60. package/api/renameNegotiableQuote/index.d.ts +10 -0
  61. package/api/renameNegotiableQuote/renameNegotiableQuote.d.ts +9 -0
  62. package/api/requestNegotiableQuote/graphql/RequestNegotiableQuoteMutation.d.ts +4 -12
  63. package/api/requestNegotiableQuote/requestNegotiableQuote.d.ts +3 -0
  64. package/api/sendForReview/graphql/SendNegotiableQuoteForReviewMutation.d.ts +10 -0
  65. package/api/sendForReview/index.d.ts +10 -0
  66. package/api/sendForReview/sendForReview.d.ts +11 -0
  67. package/api/sendQuoteTemplateForReview/graphql/sendQuoteTemplateForReview.d.ts +10 -0
  68. package/api/sendQuoteTemplateForReview/index.d.ts +10 -0
  69. package/api/sendQuoteTemplateForReview/sendQuoteTemplateForReview.d.ts +15 -0
  70. package/api/setLineItemNote/graphql/SetLineItemNoteMutation.d.ts +10 -0
  71. package/api/setLineItemNote/index.d.ts +10 -0
  72. package/api/setLineItemNote/setLineItemNote.d.ts +10 -0
  73. package/api/setShippingAddress/graphql/SetNegotiableQuoteShippingAddressMutation.d.ts +10 -0
  74. package/api/setShippingAddress/index.d.ts +2 -0
  75. package/api/setShippingAddress/setShippingAddress.d.ts +110 -0
  76. package/api/updateQuantities/graphql/UpdateNegotiableQuoteQuantitiesMutation.d.ts +10 -0
  77. package/api/updateQuantities/index.d.ts +10 -0
  78. package/api/updateQuantities/updateQuantities.d.ts +36 -0
  79. package/api/updateQuoteTemplateItemQuantities/graphql/updateNegotiableQuoteTemplateQuantities.d.ts +10 -0
  80. package/api/updateQuoteTemplateItemQuantities/index.d.ts +10 -0
  81. package/api/updateQuoteTemplateItemQuantities/updateQuoteTemplateItemQuantities.d.ts +20 -0
  82. package/api/uploadFile/graphql/FinishUploadMutation.d.ts +10 -0
  83. package/api/uploadFile/graphql/InitiateUploadMutation.d.ts +10 -0
  84. package/api/uploadFile/index.d.ts +10 -0
  85. package/api/uploadFile/uploadFile.d.ts +12 -0
  86. package/api.js +95 -22
  87. package/api.js.map +1 -1
  88. package/chunks/AttachedFilesList.js +4 -0
  89. package/chunks/AttachedFilesList.js.map +1 -0
  90. package/chunks/CheckWithCircle.js +4 -0
  91. package/chunks/CheckWithCircle.js.map +1 -0
  92. package/chunks/ChevronDown.js +4 -0
  93. package/chunks/ChevronDown.js.map +1 -0
  94. package/chunks/ConfirmationModal.js +4 -0
  95. package/chunks/ConfirmationModal.js.map +1 -0
  96. package/chunks/ItemsQuoted.js +4 -0
  97. package/chunks/ItemsQuoted.js.map +1 -0
  98. package/chunks/ItemsQuotedTemplate.js +4 -0
  99. package/chunks/ItemsQuotedTemplate.js.map +1 -0
  100. package/chunks/LineItemNoteModal2.js +4 -0
  101. package/chunks/LineItemNoteModal2.js.map +1 -0
  102. package/chunks/NegotiableQuoteFragment.js +342 -7
  103. package/chunks/NegotiableQuoteFragment.js.map +1 -1
  104. package/chunks/NegotiableQuoteTemplateFragment.js +190 -0
  105. package/chunks/NegotiableQuoteTemplateFragment.js.map +1 -0
  106. package/chunks/OrderSummaryLine.js +4 -0
  107. package/chunks/OrderSummaryLine.js.map +1 -0
  108. package/chunks/QuoteCommentsList.js +4 -0
  109. package/chunks/QuoteCommentsList.js.map +1 -0
  110. package/chunks/QuoteCommentsList3.js +4 -0
  111. package/chunks/QuoteCommentsList3.js.map +1 -0
  112. package/chunks/QuoteHistoryLog.js +4 -0
  113. package/chunks/QuoteHistoryLog.js.map +1 -0
  114. package/chunks/QuoteHistoryLog3.js +4 -0
  115. package/chunks/QuoteHistoryLog3.js.map +1 -0
  116. package/chunks/QuoteTemplateCommentsList.js +4 -0
  117. package/chunks/QuoteTemplateCommentsList.js.map +1 -0
  118. package/chunks/QuoteTemplateHistoryLog.js +4 -0
  119. package/chunks/QuoteTemplateHistoryLog.js.map +1 -0
  120. package/chunks/ShippingAddressDisplay.js +4 -0
  121. package/chunks/ShippingAddressDisplay.js.map +1 -0
  122. package/chunks/TabbedContent.js +4 -0
  123. package/chunks/TabbedContent.js.map +1 -0
  124. package/chunks/WarningFilled.js +4 -0
  125. package/chunks/WarningFilled.js.map +1 -0
  126. package/chunks/addQuoteTemplateLineItemNote.js +13 -0
  127. package/chunks/addQuoteTemplateLineItemNote.js.map +1 -0
  128. package/chunks/dateUtils.js +4 -0
  129. package/chunks/dateUtils.js.map +1 -0
  130. package/chunks/duplicateNegotiableQuote.js +121 -0
  131. package/chunks/duplicateNegotiableQuote.js.map +1 -0
  132. package/chunks/generateQuoteFromTemplate.js +12 -0
  133. package/chunks/generateQuoteFromTemplate.js.map +1 -0
  134. package/chunks/getQuoteTemplates.js +50 -0
  135. package/chunks/getQuoteTemplates.js.map +1 -0
  136. package/chunks/negotiableQuotes.js +35 -5
  137. package/chunks/negotiableQuotes.js.map +1 -1
  138. package/chunks/openQuoteTemplate.js +31 -0
  139. package/chunks/openQuoteTemplate.js.map +1 -0
  140. package/chunks/requestNegotiableQuote.js +3 -3
  141. package/chunks/requestNegotiableQuote.js.map +1 -1
  142. package/chunks/setLineItemNote.js +47 -0
  143. package/chunks/setLineItemNote.js.map +1 -0
  144. package/chunks/state.js +4 -0
  145. package/chunks/state.js.map +1 -0
  146. package/chunks/transform-quote-template.js +4 -0
  147. package/chunks/transform-quote-template.js.map +1 -0
  148. package/chunks/transform-quote.js +4 -0
  149. package/chunks/transform-quote.js.map +1 -0
  150. package/chunks/uploadFile.js +20 -0
  151. package/chunks/uploadFile.js.map +1 -0
  152. package/components/ActionsBar/ActionsBar.d.ts +15 -0
  153. package/components/ActionsBar/index.d.ts +11 -0
  154. package/components/AttachedFilesList/AttachedFilesList.d.ts +16 -0
  155. package/components/AttachedFilesList/index.d.ts +11 -0
  156. package/components/ConfirmationModal/ConfirmationModal.d.ts +17 -0
  157. package/components/ConfirmationModal/index.d.ts +11 -0
  158. package/components/ItemsQuoted/ItemsQuoted.d.ts +11 -0
  159. package/components/ItemsQuoted/index.d.ts +11 -0
  160. package/components/LineItemNoteModal/LineItemNoteModal.d.ts +17 -0
  161. package/components/LineItemNoteModal/index.d.ts +11 -0
  162. package/components/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +22 -0
  163. package/components/ManageNegotiableQuote/__fixtures__/ManageNegotiableQuoteProps.d.ts +4 -0
  164. package/components/ManageNegotiableQuote/index.d.ts +11 -0
  165. package/components/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +20 -0
  166. package/components/ManageNegotiableQuoteTemplate/__fixtures__/ManageNegotiableQuoteTemplateProps.d.ts +4 -0
  167. package/components/ManageNegotiableQuoteTemplate/index.d.ts +11 -0
  168. package/components/OrderSummary/OrderSummary.d.ts +48 -0
  169. package/components/OrderSummary/index.d.ts +11 -0
  170. package/components/OrderSummaryLine/OrderSummaryLine.d.ts +13 -0
  171. package/components/OrderSummaryLine/index.d.ts +11 -0
  172. package/components/ProductListTable/ProductListTable.d.ts +61 -0
  173. package/components/ProductListTable/index.d.ts +11 -0
  174. package/components/QuoteCommentsList/QuoteCommentsList.d.ts +17 -0
  175. package/components/QuoteCommentsList/index.d.ts +11 -0
  176. package/components/QuoteHistoryLog/QuoteHistoryLog.d.ts +77 -0
  177. package/components/QuoteHistoryLog/index.d.ts +11 -0
  178. package/components/QuotePricesSummary/QuotePricesSummary.d.ts +16 -0
  179. package/components/QuotePricesSummary/index.d.ts +11 -0
  180. package/components/QuoteSummaryList/QuoteSummaryList.d.ts +13 -0
  181. package/components/QuoteSummaryList/index.d.ts +11 -0
  182. package/components/QuoteTemplatesListTable/QuoteTemplatesListTable.d.ts +29 -0
  183. package/components/QuoteTemplatesListTable/index.d.ts +10 -0
  184. package/components/RenameQuoteModal/RenameQuoteModal.d.ts +18 -0
  185. package/components/RenameQuoteModal/index.d.ts +11 -0
  186. package/components/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +1 -0
  187. package/components/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +12 -0
  188. package/components/ShippingAddressDisplay/index.d.ts +11 -0
  189. package/components/TabbedContent/TabbedContent.d.ts +10 -0
  190. package/components/TabbedContent/index.d.ts +11 -0
  191. package/components/index.d.ts +28 -1
  192. package/containers/ItemsQuoted/ItemsQuoted.d.ts +30 -0
  193. package/containers/ItemsQuoted/index.d.ts +11 -0
  194. package/containers/ItemsQuoted.d.ts +3 -0
  195. package/containers/ItemsQuoted.js +4 -0
  196. package/containers/ItemsQuoted.js.map +1 -0
  197. package/containers/ItemsQuotedTemplate/ItemsQuotedTemplate.d.ts +21 -0
  198. package/containers/ItemsQuotedTemplate/index.d.ts +11 -0
  199. package/containers/ItemsQuotedTemplate.d.ts +3 -0
  200. package/containers/ItemsQuotedTemplate.js +4 -0
  201. package/containers/ItemsQuotedTemplate.js.map +1 -0
  202. package/containers/ManageNegotiableQuote/ManageNegotiableQuote.d.ts +87 -0
  203. package/containers/ManageNegotiableQuote/index.d.ts +11 -0
  204. package/containers/ManageNegotiableQuote.d.ts +3 -0
  205. package/containers/ManageNegotiableQuote.js +4 -0
  206. package/containers/ManageNegotiableQuote.js.map +1 -0
  207. package/containers/ManageNegotiableQuoteTemplate/ManageNegotiableQuoteTemplate.d.ts +67 -0
  208. package/containers/ManageNegotiableQuoteTemplate/index.d.ts +11 -0
  209. package/containers/ManageNegotiableQuoteTemplate.d.ts +3 -0
  210. package/containers/ManageNegotiableQuoteTemplate.js +4 -0
  211. package/containers/ManageNegotiableQuoteTemplate.js.map +1 -0
  212. package/containers/OrderSummary/OrderSummary.d.ts +11 -0
  213. package/containers/OrderSummary/index.d.ts +11 -0
  214. package/containers/OrderSummary.d.ts +3 -0
  215. package/containers/OrderSummary.js +4 -0
  216. package/containers/OrderSummary.js.map +1 -0
  217. package/containers/OrderSummaryLine/OrderSummaryLine.d.ts +14 -0
  218. package/containers/OrderSummaryLine/index.d.ts +11 -0
  219. package/containers/OrderSummaryLine.d.ts +3 -0
  220. package/containers/OrderSummaryLine.js +4 -0
  221. package/containers/OrderSummaryLine.js.map +1 -0
  222. package/containers/QuoteCommentsList/QuoteCommentsList.d.ts +9 -0
  223. package/containers/QuoteCommentsList/index.d.ts +11 -0
  224. package/containers/QuoteCommentsList.d.ts +3 -0
  225. package/containers/QuoteCommentsList.js +4 -0
  226. package/containers/QuoteCommentsList.js.map +1 -0
  227. package/containers/QuoteHistoryLog/QuoteHistoryLog.d.ts +9 -0
  228. package/containers/QuoteHistoryLog/index.d.ts +11 -0
  229. package/containers/QuoteHistoryLog.d.ts +3 -0
  230. package/containers/QuoteHistoryLog.js +4 -0
  231. package/containers/QuoteHistoryLog.js.map +1 -0
  232. package/containers/QuoteSummaryList/QuoteSummaryList.d.ts +51 -0
  233. package/containers/QuoteSummaryList/index.d.ts +11 -0
  234. package/containers/QuoteSummaryList.d.ts +3 -0
  235. package/containers/QuoteSummaryList.js +4 -0
  236. package/containers/QuoteSummaryList.js.map +1 -0
  237. package/containers/QuoteTemplateCommentsList/QuoteTemplateCommentsList.d.ts +9 -0
  238. package/containers/QuoteTemplateCommentsList/index.d.ts +11 -0
  239. package/containers/QuoteTemplateCommentsList.d.ts +3 -0
  240. package/containers/QuoteTemplateCommentsList.js +4 -0
  241. package/containers/QuoteTemplateCommentsList.js.map +1 -0
  242. package/containers/QuoteTemplateHistoryLog/QuoteTemplateHistoryLog.d.ts +9 -0
  243. package/containers/QuoteTemplateHistoryLog/index.d.ts +11 -0
  244. package/containers/QuoteTemplateHistoryLog.d.ts +3 -0
  245. package/containers/QuoteTemplateHistoryLog.js +4 -0
  246. package/containers/QuoteTemplateHistoryLog.js.map +1 -0
  247. package/containers/QuoteTemplatesListTable/QuoteTemplatesListTable.d.ts +74 -0
  248. package/containers/QuoteTemplatesListTable/index.d.ts +11 -0
  249. package/containers/QuoteTemplatesListTable.d.ts +3 -0
  250. package/containers/QuoteTemplatesListTable.js +4 -0
  251. package/containers/QuoteTemplatesListTable.js.map +1 -0
  252. package/containers/QuotesListTable/QuotesListTable.d.ts +9 -9
  253. package/containers/QuotesListTable.js +1 -1
  254. package/containers/QuotesListTable.js.map +1 -1
  255. package/containers/RequestNegotiableQuoteForm/RequestNegotiableQuoteForm.d.ts +10 -0
  256. package/containers/RequestNegotiableQuoteForm.js +1 -1
  257. package/containers/RequestNegotiableQuoteForm.js.map +1 -1
  258. package/containers/ShippingAddressDisplay/ShippingAddressDisplay.d.ts +10 -0
  259. package/containers/ShippingAddressDisplay/index.d.ts +11 -0
  260. package/containers/ShippingAddressDisplay.d.ts +1 -0
  261. package/containers/ShippingAddressDisplay.js +4 -0
  262. package/containers/ShippingAddressDisplay.js.map +1 -0
  263. package/containers/index.d.ts +21 -0
  264. package/data/models/__fixtures__/negotiableQuoteModel.d.ts +8 -0
  265. package/data/models/__fixtures__/negotiableQuoteTemplateModel.d.ts +4 -0
  266. package/data/models/__fixtures__/negotiableQuoteTemplatesListModel.d.ts +5 -0
  267. package/data/models/__fixtures__/storeConfigModel.d.ts +5 -0
  268. package/data/models/index.d.ts +10 -1
  269. package/data/models/negotiable-quote-model.d.ts +228 -31
  270. package/data/models/negotiable-quote-template-model.d.ts +147 -0
  271. package/data/models/store-config-model.d.ts +27 -0
  272. package/data/transforms/__fixtures__/negotiableQuoteData.d.ts +590 -2
  273. package/data/transforms/__fixtures__/negotiableQuoteTemplateData.d.ts +1610 -0
  274. package/data/transforms/__fixtures__/storeConfigData.d.ts +31 -0
  275. package/data/transforms/index.d.ts +6 -13
  276. package/data/transforms/transform-quote-template.d.ts +5 -0
  277. package/data/transforms/transform-quote.d.ts +8 -0
  278. package/data/transforms/transform-store-config.d.ts +4 -0
  279. package/hooks/useQuoteSummaryData.d.ts +10 -0
  280. package/i18n/en_US.json.d.ts +346 -0
  281. package/lib/configurationTransformers.d.ts +27 -0
  282. package/lib/itemFormatters.d.ts +47 -0
  283. package/lib/priceCalculators.d.ts +41 -0
  284. package/lib/state.d.ts +6 -0
  285. package/package.json +1 -1
  286. package/render.js +6 -3
  287. package/render.js.map +1 -1
  288. package/types/state.types.d.ts +13 -0
  289. package/utils/dateUtils.d.ts +26 -0
  290. package/utils/fileUtils.d.ts +46 -0
  291. package/utils/mapAuthPermissions.d.ts +39 -0
  292. package/api/getCustomerData/graphql/CustomerQuery.d.ts +0 -2
  293. package/api/graphql/CustomerFragment.d.ts +0 -2
  294. package/data/models/__fixtures__/customerModel.d.ts +0 -4
  295. package/data/transforms/transform-customer.d.ts +0 -15
@@ -0,0 +1,4 @@
1
+ /*! Copyright 2025 Adobe
2
+ All Rights Reserved. */
3
+ import{jsx as t,jsxs as o,Fragment as G}from"@dropins/tools/preact-jsx-runtime.js";import{classes as v,VComponent as E}from"@dropins/tools/lib.js";/* empty css */import{Skeleton as C,SkeletonRow as ee,Input as V,Picker as te,Price as Q,Checkbox as ae,Button as F,Table as W,Accordion as ne,AccordionSection as oe,Modal as le,TextArea as ie}from"@dropins/tools/components.js";import{h as z}from"@dropins/tools/preact.js";import{useState as R,useEffect as se}from"@dropins/tools/preact-hooks.js";import{g as ue}from"./dateUtils.js";import{useText as Z}from"@dropins/tools/i18n.js";import{useState as D,useEffect as re,useCallback as O}from"@dropins/tools/preact-compat.js";const ye=({className:N,loading:c,table:a,pricesSummary:u,...i})=>c?t(ce,{}):o("div",{className:v(["quote-management-items-quoted",N]),...i,children:[a&&t(E,{node:a,className:v(["quote-management-items-quoted__table"]),"data-testid":"quote-management-items-quoted__table"}),u&&t(E,{node:u,className:v(["quote-management-items-quoted__prices-summary"]),"data-testid":"quote-management-items-quoted__prices-summary"})]}),ce=()=>t(C,{"data-testid":"items-quoted-skeleton",children:t(ee,{variant:"row",fullWidth:!0,size:"medium",lines:4,multilineGap:"xsmall"})}),ve=({className:N,items:c,canEdit:a,readOnly:u=!1,showActions:i,onItemCheckboxChange:d,onItemDropdownChange:p,onQuantityChange:k,onUpdate:M,dropdownSelections:q,..._})=>{const[T,f]=R({}),[h,b]=R({});se(()=>{const e={};c.forEach(s=>{e[s.uid]=s.quantity}),f(e),b(e)},[c]);const y=Object.keys(h).some(e=>h[e]!==T[e]),n=Z({updateButton:"NegotiableQuote.Manage.productListTable.submitButton",productNameHeader:"NegotiableQuote.Manage.productListTable.headers.productName",skuHeader:"NegotiableQuote.Manage.productListTable.headers.sku",priceHeader:"NegotiableQuote.Manage.productListTable.headers.price",quantityHeader:"NegotiableQuote.Manage.productListTable.headers.quantity",discountHeader:"NegotiableQuote.Manage.productListTable.headers.discount",subtotalHeader:"NegotiableQuote.Manage.productListTable.headers.subtotal",actionsHeader:"NegotiableQuote.Manage.productListTable.headers.actions",editNoteToSeller:"NegotiableQuote.Manage.productListTable.actions.editNoteToSeller",remove:"NegotiableQuote.Manage.productListTable.actions.remove",notesHeader:"NegotiableQuote.Manage.productListTable.notes.header",leftANote:"NegotiableQuote.Manage.productListTable.notes.leftANote",buyer:"NegotiableQuote.Manage.productListTable.notes.buyer"}),I=[{label:n.productNameHeader,key:"productName"},{label:n.skuHeader,key:"sku"},{label:n.priceHeader,key:"price"},{label:n.quantityHeader,key:"quantity"},{label:n.discountHeader,key:"discount"},{label:n.subtotalHeader,key:"subtotal"}];a&&!u&&I.unshift({label:"",key:"checkbox"}),(i??a)&&!u&&I.push({label:n.actionsHeader,key:"actions"});const j=(e,s)=>{const l=e.target.checked;d==null||d(s,l)},S=(e,s)=>{const l=e.target.value;p==null||p(s,l)},B=(e,s)=>{const l=parseInt(e.target.value,10);!isNaN(l)&&l>0&&(b(g=>({...g,[s.uid]:l})),k==null||k(s,l))},$=e=>{e.preventDefault(),M==null||M(e)},r=(e,s)=>e>0?o("div",{className:"quote-management-product-list-table__discount-container",children:[o("span",{className:"quote-management-product-list-table__discount-percent",children:[s,"%"]}),o("span",{className:"quote-management-product-list-table__discount-price",children:["(",t(Q,{amount:e}),")"]})]}):void 0,L=e=>{var g,H;const s=(g=e.configurableOptions)==null?void 0:g.map(m=>o("div",{className:"quote-management-product-list-table__configurable-option",children:[o("span",{className:"quote-management-product-list-table__configurable-option-label",children:[m.optionLabel,":"]}),t("span",{className:"quote-management-product-list-table__configurable-option-value",children:m.valueLabel})]},m.optionLabel)),l=(H=e.bundleOptions)==null?void 0:H.map(m=>o("div",{className:"quote-management-product-list-table__bundle-option",children:[t("span",{className:"quote-management-product-list-table__bundle-option-label",children:m.label}),t("div",{className:"quote-management-product-list-table__bundle-option-values",children:m.values.map(w=>o("span",{className:"quote-management-product-list-table__bundle-option-value",children:[o("span",{className:"quote-management-product-list-table__bundle-option-value-quantity",children:[w.quantity," x"]}),t("span",{className:"quote-management-product-list-table__bundle-option-value-label",children:w.label}),t(Q,{className:"quote-management-product-list-table__bundle-option-value-original-price",amount:w.originalPrice.value,currency:w.originalPrice.currency,weight:"normal"})]},w.label))})]},m.label));return o("div",{className:"quote-management-product-list-table__product-name-container",children:[t("span",{className:"quote-management-product-list-table__product-name",children:e.product.name}),s,l]})},A=e=>new Date(e).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit",second:"2-digit",hour12:!0,timeZone:ue()}),x=e=>{if(!e.noteFromBuyer||e.noteFromBuyer.length===0)return null;const s=e.noteFromBuyer.filter(l=>l&&l.note&&l.note.trim()!=="");return s.length===0?null:o("div",{className:"quote-management-product-list-table__notes-container","data-testid":`item-notes-${e.product.sku}`,children:[t("div",{className:"quote-management-product-list-table__notes-header",children:n.notesHeader}),t("div",{className:"quote-management-product-list-table__notes-list",children:s.map((l,g)=>o("div",{className:"quote-management-product-list-table__note-item",children:[o("div",{className:"quote-management-product-list-table__note-content",children:[o("strong",{className:"quote-management-product-list-table__note-meta",children:[A(l.createdAt)," (",n.buyer,")"]})," ",n.leftANote]}),o("div",{className:"quote-management-product-list-table__note-text",children:[l.note," "]})]},l.noteUid||g))})]})},J=c.flatMap(e=>{var H;const s=a?t(V,{className:"quote-management-product-list-table__quantity-input",type:"number",min:"1",value:((H=h[e.uid])==null?void 0:H.toString())||e.quantity.toString(),onChange:m=>B(m,e),disabled:u||!a,"data-testid":`quantity-input-${e.product.sku}`}):t("span",{className:"quote-management-product-list-table__quantity",children:e.quantity}),l={checkbox:t(ae,{className:"quote-management-product-list-table__checkbox",name:"itemSelected","data-testid":`item-checkbox-${e.product.sku}`,onChange:m=>j(m,e),value:e.product.sku}),productName:L(e),sku:t("span",{className:"quote-management-product-list-table__sku",children:e.product.sku}),price:t(Q,{className:"quote-management-product-list-table__price",amount:e.prices.originalItemPrice.value,currency:e.prices.originalItemPrice.currency}),quantity:s,discount:e.catalogDiscount?r(e.catalogDiscount.amountOff,e.catalogDiscount.percentOff):void 0,subtotal:t(Q,{className:"quote-management-product-list-table__subtotal",amount:e.prices.rowTotal.value,currency:e.prices.rowTotal.currency}),actions:t(te,{className:"quote-management-product-list-table__actions","data-testid":`item-dropdown-${e.product.sku}`,name:`item-dropdown-${e.product.sku}`,handleSelect:m=>S(m,e),placeholder:"Select",value:(q==null?void 0:q[e.uid])??"",options:[{text:n.editNoteToSeller,value:"edit"},{text:n.remove,value:"remove"}]})},g=x(e);return g?[l,{checkbox:"",productName:t("div",{className:"quote-management-product-list-table__notes-row-wrapper",children:g}),sku:"",price:"",quantity:"",discount:"",subtotal:"",actions:""}]:[l]}),K=t(W,{columns:I,rowData:J,"data-testid":"product-list-table",mobileLayout:"stacked"}),U=a?z("form",{}):z("div",{}),X=a?{onSubmit:$,..._}:_,Y=t(F,{type:"submit",disabled:u||!a||!y,"data-testid":"product-list-table-submit-button",children:n.updateButton});return o(E,{node:U,className:v(["quote-management-product-list-table-container",N]),"data-testid":"product-list-table-container",...X,children:[K,t("div",{className:"quote-management-product-list-table-container__submit-container",children:Y})]})},ke=({className:N,entries:c,...a})=>{const u=i=>{var p;const d=(p=i.children)==null?void 0:p.map(u);return t("div",{className:"quote-management-quote-prices-summary__entry","data-testid":`quote-prices-summary-entry-${i.id}`,children:d?t(ne,{className:"quote-management-quote-prices-summary__accordion","data-testid":`quote-prices-summary-entry-accordion-${i.id}`,children:t(oe,{className:"quote-management-quote-prices-summary__accordion-section",title:i.label,ariaLabelTitle:i.label,secondaryText:i.value,children:d})}):o(G,{children:[t("span",{className:v(["quote-management-quote-prices-summary__label",["quote-management-quote-prices-summary__label--strong",i.strong]]),"data-testid":`quote-prices-summary-entry-label-${i.id}`,children:i.label}),t("span",{className:"quote-management-quote-prices-summary__value","data-testid":`quote-prices-summary-entry-value-${i.id}`,children:i.value})]})},i.id)};return t("div",{className:v(["quote-management-quote-prices-summary",N]),"data-testid":"quote-prices-summary",...a,children:c==null?void 0:c.map(u)})},fe=({className:N,open:c,item:a,onClose:u,onConfirm:i,isSubmitting:d=!1,errorBanner:p,successBanner:k,showCloseButton:M=!0,readOnlyQuantity:q=!1})=>{const[_,T]=D(""),[f,h]=D(a.quantity),[b,y]=D({}),n=Z({title:"NegotiableQuote.Manage.lineItemNote.title",productLabel:"NegotiableQuote.Manage.lineItemNote.productLabel",skuLabel:"NegotiableQuote.Manage.lineItemNote.skuLabel",priceLabel:"NegotiableQuote.Manage.lineItemNote.priceLabel",stockLabel:"NegotiableQuote.Manage.lineItemNote.stockLabel",quantityLabel:"NegotiableQuote.Manage.lineItemNote.quantityLabel",discountLabel:"NegotiableQuote.Manage.lineItemNote.discountLabel",subtotalLabel:"NegotiableQuote.Manage.lineItemNote.subtotalLabel",noteLabel:"NegotiableQuote.Manage.lineItemNote.noteLabel",notePlaceholder:"NegotiableQuote.Manage.lineItemNote.notePlaceholder",noteHelper:"NegotiableQuote.Manage.lineItemNote.noteHelper",confirmButton:"NegotiableQuote.Manage.lineItemNote.confirmButton",cancelButton:"NegotiableQuote.Manage.lineItemNote.cancelButton",noteError:"NegotiableQuote.Manage.lineItemNote.noteError",quantityError:"NegotiableQuote.Manage.lineItemNote.quantityError"});re(()=>{var r;if(c){const L=((r=a.noteFromBuyer)==null?void 0:r.filter(x=>x&&x.note))||[],A=L.length>0?L[0].note:"";T(A||""),h(a.quantity),y({})}},[c,a.quantity,a.noteFromBuyer]);const I=O(()=>{const r={};if(_.trim()||(r.note=n.noteError),!q&&f<=0&&(r.quantity=n.quantityError),Object.keys(r).length>0){y(r);return}i(_.trim(),f)},[_,f,i,n,q]),P=O(()=>{T(""),h(a.quantity),y({}),u==null||u()},[u,a.quantity]);if(!c)return null;const S=a.discounts&&a.discounts.length>0?a.discounts.map(r=>r.label).join(", "):"-",B=[{label:n.productLabel,key:"productName"},{label:n.priceLabel,key:"price"},{label:n.stockLabel,key:"stock"},{label:n.quantityLabel,key:"quantity"},{label:n.discountLabel,key:"discount"},{label:n.subtotalLabel,key:"subtotal"}],$=[{productName:o("div",{className:"quote-management-line-item-note-modal__product-info",children:[t("div",{className:"quote-management-line-item-note-modal__product-name",children:a.product.name}),o("div",{className:"quote-management-line-item-note-modal__product-sku",children:[n.skuLabel,": ",a.product.sku]})]}),price:t(Q,{amount:a.prices.originalItemPrice.value,currency:a.prices.originalItemPrice.currency}),stock:t("span",{className:"quote-management-line-item-note-modal__stock",children:a.stockStatus}),quantity:q?t("span",{className:"quote-management-line-item-note-modal__quantity-readonly",children:a.quantity}):t(V,{name:"quantity",type:"number",min:"1",value:f.toString(),onInput:r=>{const L=parseInt(r.target.value,10)||0;h(L),y({...b,quantity:void 0})},disabled:d,error:!!b.quantity,required:!0,"data-testid":"line-item-note-quantity-input",className:"quote-management-line-item-note-modal__quantity-input"}),discount:t("span",{className:"quote-management-line-item-note-modal__discount",children:S}),subtotal:t(Q,{amount:a.prices.rowTotal.value,currency:a.prices.rowTotal.currency})}];return o(le,{open:c,size:"medium",title:t(G,{children:n.title}),onClose:P,clickToDismiss:!0,escapeToDismiss:!0,showCloseButton:M,className:v(["quote-management-line-item-note-modal",N]),"data-testid":"line-item-note-modal",children:[p&&t("div",{className:"quote-management-line-item-note-modal__error-banner","data-testid":"line-item-note-modal-error-banner",children:p}),k&&t("div",{className:"quote-management-line-item-note-modal__success-banner","data-testid":"line-item-note-modal-success-banner",children:k}),o("div",{className:"quote-management-line-item-note-modal__content",children:[o("div",{className:"quote-management-line-item-note-modal__details",children:[t(W,{columns:B,rowData:$,"data-testid":"line-item-note-table",mobileLayout:"stacked",className:"quote-management-line-item-note-modal__details-table"}),b.quantity&&t("div",{className:"quote-management-line-item-note-modal__table-error",children:b.quantity})]}),o("div",{className:"quote-management-line-item-note-modal__form-field",children:[t(ie,{name:"note",placeholder:n.notePlaceholder,rows:4,value:_,onInput:r=>{T(r.target.value),y({...b,note:void 0})},label:n.noteLabel,disabled:d,"data-testid":"line-item-note-textarea"}),!b.note&&t("span",{className:"quote-management-line-item-note-modal__helper-text",children:n.noteHelper}),b.note&&t("span",{className:"quote-management-line-item-note-modal__error-text",children:b.note})]})]}),o("div",{className:"quote-management-line-item-note-modal__actions",children:[t(F,{variant:"secondary",size:"medium",onClick:P,disabled:d,className:"quote-management-line-item-note-modal__cancel-button","data-testid":"line-item-note-cancel-button",children:n.cancelButton}),t(F,{variant:"primary",size:"medium",onClick:I,disabled:d,className:"quote-management-line-item-note-modal__confirm-button","data-testid":"line-item-note-confirm-button",children:n.confirmButton})]})]})};export{ye as I,fe as L,ve as P,ke as Q};
4
+ //# sourceMappingURL=LineItemNoteModal2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LineItemNoteModal2.js","sources":["/@dropins/storefront-quote-management/src/components/ItemsQuoted/ItemsQuoted.tsx","/@dropins/storefront-quote-management/src/components/ProductListTable/ProductListTable.tsx","/@dropins/storefront-quote-management/src/components/QuotePricesSummary/QuotePricesSummary.tsx","/@dropins/storefront-quote-management/src/components/LineItemNoteModal/LineItemNoteModal.tsx"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/ItemsQuoted/ItemsQuoted.css';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport interface ItemsQuotedProps extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n loading?: boolean;\n table?: VNode;\n pricesSummary?: VNode;\n}\n\nexport const ItemsQuoted: FunctionComponent<ItemsQuotedProps> = ({\n className,\n loading,\n table,\n pricesSummary,\n ...props\n}) => {\n if (loading) {\n return <ItemsQuotedSkeleton />;\n }\n\n return (\n <div className={classes(['quote-management-items-quoted', className])} {...props}>\n {table && (\n <VComponent\n node={table}\n className={classes(['quote-management-items-quoted__table'])}\n data-testid=\"quote-management-items-quoted__table\"\n />\n )}\n {pricesSummary && (\n <VComponent\n node={pricesSummary}\n className={classes(['quote-management-items-quoted__prices-summary'])}\n data-testid=\"quote-management-items-quoted__prices-summary\"\n />\n )}\n </div>\n );\n};\n\nexport const ItemsQuotedSkeleton: FunctionComponent = () => {\n return (\n <Skeleton data-testid=\"items-quoted-skeleton\">\n <SkeletonRow variant=\"row\" fullWidth={true} size=\"medium\" lines={4} multilineGap='xsmall' />\n </Skeleton>\n );\n};","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, h } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { useState, useEffect } from 'preact/hooks';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport {\n Table,\n Checkbox,\n Picker,\n Price,\n Button,\n Input,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { getUserTimezone } from '@/quote-management/utils/dateUtils';\n\nimport '@/quote-management/components/ProductListTable/ProductListTable.css';\n\nexport interface ProductListTableItem {\n uid: string;\n product: {\n name: string;\n sku: string;\n };\n prices: {\n originalItemPrice: {\n value: number;\n currency: string;\n };\n rowTotal: {\n value: number;\n currency: string;\n };\n };\n quantity: number;\n catalogDiscount?: {\n amountOff: number;\n percentOff: number;\n };\n configurableOptions?: Array<{\n optionLabel: string;\n valueLabel: string;\n }>;\n bundleOptions?: Array<{\n label: string;\n values: Array<{\n label: string;\n quantity: number;\n originalPrice: {\n value: number;\n currency: string;\n };\n }>;\n }>;\n noteFromBuyer?: Array<{\n createdAt: string;\n creatorId: number;\n creatorType: number;\n negotiableQuoteItemUid: string;\n note: string;\n noteUid: string;\n }>;\n}\n\nexport interface ProductListTableProps\n extends HTMLAttributes<HTMLDivElement | HTMLFormElement> {\n items: ProductListTableItem[];\n canEdit: boolean;\n readOnly?: boolean;\n showActions?: boolean;\n onItemCheckboxChange?: (\n item: ProductListTableItem,\n isSelected: boolean\n ) => void;\n onItemDropdownChange?: (item: ProductListTableItem, action: string) => void;\n onQuantityChange?: (item: ProductListTableItem, newQuantity: number) => void;\n onUpdate?: (e: SubmitEvent) => void;\n dropdownSelections?: Record<string, string | undefined>;\n}\n\nexport const ProductListTable: FunctionComponent<ProductListTableProps> = ({\n className,\n items,\n canEdit,\n readOnly = false,\n showActions,\n onItemCheckboxChange,\n onItemDropdownChange,\n onQuantityChange,\n onUpdate,\n dropdownSelections,\n ...props\n}) => {\n // Track original quantities to detect changes\n const [originalQuantities, setOriginalQuantities] = useState<\n Record<string, number>\n >({});\n const [currentQuantities, setCurrentQuantities] = useState<\n Record<string, number>\n >({});\n\n // Initialize quantities when items change\n useEffect(() => {\n const quantities: Record<string, number> = {};\n items.forEach((item) => {\n quantities[item.uid] = item.quantity;\n });\n setOriginalQuantities(quantities);\n setCurrentQuantities(quantities);\n }, [items]);\n\n // Check if any quantities have changed\n const hasQuantityChanges = Object.keys(currentQuantities).some(\n (uid) => currentQuantities[uid] !== originalQuantities[uid]\n );\n\n const dictionary = useText({\n updateButton: 'NegotiableQuote.Manage.productListTable.submitButton',\n productNameHeader:\n 'NegotiableQuote.Manage.productListTable.headers.productName',\n skuHeader: 'NegotiableQuote.Manage.productListTable.headers.sku',\n priceHeader: 'NegotiableQuote.Manage.productListTable.headers.price',\n quantityHeader: 'NegotiableQuote.Manage.productListTable.headers.quantity',\n discountHeader: 'NegotiableQuote.Manage.productListTable.headers.discount',\n subtotalHeader: 'NegotiableQuote.Manage.productListTable.headers.subtotal',\n actionsHeader: 'NegotiableQuote.Manage.productListTable.headers.actions',\n editNoteToSeller:\n 'NegotiableQuote.Manage.productListTable.actions.editNoteToSeller',\n remove: 'NegotiableQuote.Manage.productListTable.actions.remove',\n notesHeader: 'NegotiableQuote.Manage.productListTable.notes.header',\n leftANote: 'NegotiableQuote.Manage.productListTable.notes.leftANote',\n buyer: 'NegotiableQuote.Manage.productListTable.notes.buyer',\n });\n\n const columns = [\n {\n label: dictionary.productNameHeader,\n key: 'productName',\n },\n {\n label: dictionary.skuHeader,\n key: 'sku',\n },\n {\n label: dictionary.priceHeader,\n key: 'price',\n },\n {\n label: dictionary.quantityHeader,\n key: 'quantity',\n },\n {\n label: dictionary.discountHeader,\n key: 'discount',\n },\n {\n label: dictionary.subtotalHeader,\n key: 'subtotal',\n },\n ];\n\n // Add checkbox column when canEdit (for bulk operations)\n if (canEdit && !readOnly) {\n columns.unshift({\n label: '',\n key: 'checkbox',\n });\n }\n\n // Add actions column when showActions is explicitly true, or when canEdit is true and showActions is not explicitly false\n const shouldShowActions = showActions ?? canEdit;\n if (shouldShowActions && !readOnly) {\n columns.push({\n label: dictionary.actionsHeader,\n key: 'actions',\n });\n }\n\n const handleItemCheckboxChange = (\n event: Event,\n item: ProductListTableItem\n ) => {\n const isSelected = (event.target as HTMLInputElement).checked;\n onItemCheckboxChange?.(item, isSelected);\n };\n\n const handleItemDropdownChange = (\n event: Event,\n item: ProductListTableItem\n ) => {\n const action = (event.target as HTMLSelectElement).value;\n onItemDropdownChange?.(item, action);\n };\n\n const handleQuantityChange = (event: Event, item: ProductListTableItem) => {\n const newQuantity = parseInt((event.target as HTMLInputElement).value, 10);\n if (!isNaN(newQuantity) && newQuantity > 0) {\n setCurrentQuantities((prev) => ({\n ...prev,\n [item.uid]: newQuantity,\n }));\n onQuantityChange?.(item, newQuantity);\n }\n };\n\n const handleUpdate = (event: SubmitEvent) => {\n event.preventDefault();\n onUpdate?.(event);\n };\n\n const discountElement = (amountOff: number, percentOff: number) => {\n return amountOff > 0 ? (\n <div className=\"quote-management-product-list-table__discount-container\">\n <span className=\"quote-management-product-list-table__discount-percent\">\n {percentOff}%\n </span>\n <span className=\"quote-management-product-list-table__discount-price\">\n (<Price amount={amountOff} />)\n </span>\n </div>\n ) : undefined;\n };\n\n const getProductNameContent = (item: ProductListTableItem) => {\n const configurableOptions = item.configurableOptions?.map((option) => (\n <div\n key={option.optionLabel}\n className=\"quote-management-product-list-table__configurable-option\"\n >\n <span className=\"quote-management-product-list-table__configurable-option-label\">\n {option.optionLabel}:\n </span>\n <span className=\"quote-management-product-list-table__configurable-option-value\">\n {option.valueLabel}\n </span>\n </div>\n ));\n\n const bundleOptions = item.bundleOptions?.map((option) => (\n <div\n key={option.label}\n className=\"quote-management-product-list-table__bundle-option\"\n >\n <span className=\"quote-management-product-list-table__bundle-option-label\">\n {option.label}\n </span>\n <div className=\"quote-management-product-list-table__bundle-option-values\">\n {option.values.map((value) => (\n <span\n key={value.label}\n className=\"quote-management-product-list-table__bundle-option-value\"\n >\n <span className=\"quote-management-product-list-table__bundle-option-value-quantity\">\n {value.quantity} x\n </span>\n <span className=\"quote-management-product-list-table__bundle-option-value-label\">\n {value.label}\n </span>\n <Price\n className=\"quote-management-product-list-table__bundle-option-value-original-price\"\n amount={value.originalPrice.value}\n currency={value.originalPrice.currency}\n weight=\"normal\"\n />\n </span>\n ))}\n </div>\n </div>\n ));\n\n return (\n <div className=\"quote-management-product-list-table__product-name-container\">\n <span className=\"quote-management-product-list-table__product-name\">\n {item.product.name}\n </span>\n {configurableOptions}\n {bundleOptions}\n </div>\n );\n };\n\n const formatNoteTimestamp = (timestamp: string) => {\n const date = new Date(timestamp);\n return date.toLocaleString('en-US', {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n hour12: true,\n timeZone: getUserTimezone(),\n });\n };\n\n const getNotesContent = (item: ProductListTableItem) => {\n // Check if notes exist and have valid data\n if (!item.noteFromBuyer || item.noteFromBuyer.length === 0) {\n return null;\n }\n\n // Filter out notes with null or empty note text\n const validNotes = item.noteFromBuyer.filter(\n (note) => note && note.note && note.note.trim() !== ''\n );\n\n if (validNotes.length === 0) {\n return null;\n }\n\n return (\n <div\n className=\"quote-management-product-list-table__notes-container\"\n data-testid={`item-notes-${item.product.sku}`}\n >\n <div className=\"quote-management-product-list-table__notes-header\">\n {dictionary.notesHeader}\n </div>\n <div className=\"quote-management-product-list-table__notes-list\">\n {validNotes.map((note, index) => (\n <div\n key={note.noteUid || index}\n className=\"quote-management-product-list-table__note-item\"\n >\n <div className=\"quote-management-product-list-table__note-content\">\n <strong className=\"quote-management-product-list-table__note-meta\">\n {/* TODO: When backend exposes creator_name for notes, replace (Buyer) with the actual name */}\n {formatNoteTimestamp(note.createdAt)} ({dictionary.buyer})\n </strong>{' '}\n {dictionary.leftANote}\n </div>\n <div className=\"quote-management-product-list-table__note-text\">\n {note.note}{' '}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n };\n\n const rowData = items.flatMap((item) => {\n const quantityElement = canEdit ? (\n <Input\n className=\"quote-management-product-list-table__quantity-input\"\n type=\"number\"\n min=\"1\"\n value={\n currentQuantities[item.uid]?.toString() || item.quantity.toString()\n }\n onChange={(e) => handleQuantityChange(e, item)}\n disabled={readOnly || !canEdit}\n data-testid={`quantity-input-${item.product.sku}`}\n />\n ) : (\n <span className=\"quote-management-product-list-table__quantity\">\n {item.quantity}\n </span>\n );\n\n const productRow = {\n checkbox: (\n <Checkbox\n className=\"quote-management-product-list-table__checkbox\"\n name=\"itemSelected\"\n data-testid={`item-checkbox-${item.product.sku}`}\n onChange={(e) => handleItemCheckboxChange(e, item)}\n value={item.product.sku}\n />\n ),\n productName: getProductNameContent(item),\n sku: (\n <span className=\"quote-management-product-list-table__sku\">\n {item.product.sku}\n </span>\n ),\n price: (\n <Price\n className=\"quote-management-product-list-table__price\"\n amount={item.prices.originalItemPrice.value}\n currency={item.prices.originalItemPrice.currency}\n />\n ),\n quantity: quantityElement,\n discount: item.catalogDiscount\n ? discountElement(\n item.catalogDiscount.amountOff,\n item.catalogDiscount.percentOff\n )\n : undefined,\n subtotal: (\n <Price\n className=\"quote-management-product-list-table__subtotal\"\n amount={item.prices.rowTotal.value}\n currency={item.prices.rowTotal.currency}\n />\n ),\n actions: (\n <Picker\n className=\"quote-management-product-list-table__actions\"\n data-testid={`item-dropdown-${item.product.sku}`}\n name={`item-dropdown-${item.product.sku}`}\n handleSelect={(e) => handleItemDropdownChange(e, item)}\n placeholder=\"Select\"\n value={dropdownSelections?.[item.uid] ?? ''}\n options={[\n { text: dictionary.editNoteToSeller, value: 'edit' },\n { text: dictionary.remove, value: 'remove' },\n ]}\n />\n ),\n };\n\n const notes = getNotesContent(item);\n\n // If there are notes, create a notes row\n if (notes) {\n const notesRow = {\n checkbox: '',\n productName: (\n <div className=\"quote-management-product-list-table__notes-row-wrapper\">\n {notes}\n </div>\n ),\n sku: '',\n price: '',\n quantity: '',\n discount: '',\n subtotal: '',\n actions: '',\n };\n return [productRow, notesRow];\n }\n\n return [productRow];\n });\n\n const table = (\n <Table\n columns={columns}\n rowData={rowData}\n data-testid=\"product-list-table\"\n mobileLayout=\"stacked\"\n />\n );\n\n // if can edit, the wrapper node should use the form element, else use the div element\n const wrapperNode = canEdit ? h('form', {}) : h('div', {});\n const wrapperProps = canEdit\n ? {\n onSubmit: handleUpdate,\n ...props,\n }\n : props;\n\n const submitButton = (\n <Button\n type=\"submit\"\n disabled={readOnly || !canEdit || !hasQuantityChanges}\n data-testid=\"product-list-table-submit-button\"\n >\n {dictionary.updateButton}\n </Button>\n );\n\n return (\n <VComponent\n node={wrapperNode}\n className={classes([\n 'quote-management-product-list-table-container',\n className,\n ])}\n data-testid=\"product-list-table-container\"\n {...wrapperProps}\n >\n {table}\n <div className=\"quote-management-product-list-table-container__submit-container\">\n {submitButton}\n </div>\n </VComponent>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n \nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport '@/quote-management/components/QuotePricesSummary/QuotePricesSummary.css';\nimport { Accordion, AccordionSection } from '@adobe-commerce/elsie/components';\n\ninterface Entry {\n label: string;\n id: string;\n value: VNode;\n strong?: boolean;\n children?: Entry[];\n}\n\nexport interface QuotePricesSummaryProps extends HTMLAttributes<HTMLDivElement> {\n entries?: Entry[];\n}\n\nexport const QuotePricesSummary: FunctionComponent<QuotePricesSummaryProps> = ({\n className,\n entries,\n ...props\n}) => {\n const createEntry = (entry: Entry) => {\n const children = entry.children?.map(createEntry);\n return (\n <div key={entry.id} className=\"quote-management-quote-prices-summary__entry\" data-testid={`quote-prices-summary-entry-${entry.id}`}>\n {children ? <Accordion\n className=\"quote-management-quote-prices-summary__accordion\"\n data-testid={`quote-prices-summary-entry-accordion-${entry.id}`}\n >\n <AccordionSection className=\"quote-management-quote-prices-summary__accordion-section\" title={entry.label} ariaLabelTitle={entry.label} secondaryText={entry.value}>\n {children}\n </AccordionSection>\n </Accordion>\n :\n <>\n <span className={classes(['quote-management-quote-prices-summary__label', ['quote-management-quote-prices-summary__label--strong', entry.strong]])} data-testid={`quote-prices-summary-entry-label-${entry.id}`}>{entry.label}</span>\n <span className=\"quote-management-quote-prices-summary__value\" data-testid={`quote-prices-summary-entry-value-${entry.id}`}>{entry.value}</span>\n </>\n }\n </div>\n );\n };\n\n return (\n <div className={classes(['quote-management-quote-prices-summary', className])} data-testid=\"quote-prices-summary\" {...props}>\n {entries?.map(createEntry)}\n </div>\n );\n};\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n} from 'preact/compat';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n Button,\n TextArea,\n Input,\n Modal,\n Price,\n Table,\n} from '@adobe-commerce/elsie/components';\nimport { NegotiableQuoteCartItem } from '@/quote-management/data/models/negotiable-quote-model';\nimport '@/quote-management/components/LineItemNoteModal/LineItemNoteModal.css';\n\nexport interface LineItemNoteModalProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n open: boolean;\n item: NegotiableQuoteCartItem;\n onClose?: () => void;\n onConfirm: (note: string, quantity: number) => void;\n isSubmitting?: boolean;\n errorBanner?: VNode;\n successBanner?: VNode;\n showCloseButton?: boolean;\n readOnlyQuantity?: boolean;\n}\n\nexport const LineItemNoteModal: FunctionComponent<LineItemNoteModalProps> = ({\n className,\n open,\n item,\n onClose,\n onConfirm,\n isSubmitting = false,\n errorBanner,\n successBanner,\n showCloseButton = true,\n readOnlyQuantity = false,\n}) => {\n const [note, setNote] = useState('');\n const [quantity, setQuantity] = useState(item.quantity);\n const [errors, setErrors] = useState<{ note?: string; quantity?: string }>(\n {}\n );\n\n const dictionary = useText({\n title: 'NegotiableQuote.Manage.lineItemNote.title',\n productLabel: 'NegotiableQuote.Manage.lineItemNote.productLabel',\n skuLabel: 'NegotiableQuote.Manage.lineItemNote.skuLabel',\n priceLabel: 'NegotiableQuote.Manage.lineItemNote.priceLabel',\n stockLabel: 'NegotiableQuote.Manage.lineItemNote.stockLabel',\n quantityLabel: 'NegotiableQuote.Manage.lineItemNote.quantityLabel',\n discountLabel: 'NegotiableQuote.Manage.lineItemNote.discountLabel',\n subtotalLabel: 'NegotiableQuote.Manage.lineItemNote.subtotalLabel',\n noteLabel: 'NegotiableQuote.Manage.lineItemNote.noteLabel',\n notePlaceholder: 'NegotiableQuote.Manage.lineItemNote.notePlaceholder',\n noteHelper: 'NegotiableQuote.Manage.lineItemNote.noteHelper',\n confirmButton: 'NegotiableQuote.Manage.lineItemNote.confirmButton',\n cancelButton: 'NegotiableQuote.Manage.lineItemNote.cancelButton',\n noteError: 'NegotiableQuote.Manage.lineItemNote.noteError',\n quantityError: 'NegotiableQuote.Manage.lineItemNote.quantityError',\n });\n\n // Reset form when modal opens with new item\n useEffect(() => {\n if (open) {\n // Get the most recent valid note from buyer (if exists)\n const validNotes =\n item.noteFromBuyer?.filter((note) => note && note.note) || [];\n const existingNote = validNotes.length > 0 ? validNotes[0].note : '';\n setNote(existingNote || '');\n setQuantity(item.quantity);\n setErrors({});\n }\n }, [open, item.quantity, item.noteFromBuyer]);\n\n const handleConfirm = useCallback(() => {\n const newErrors: { note?: string; quantity?: string } = {};\n\n // Check if the note field is empty\n if (!note.trim()) {\n newErrors.note = dictionary.noteError;\n }\n\n // Only validate quantity if it's editable\n if (!readOnlyQuantity && quantity <= 0) {\n newErrors.quantity = dictionary.quantityError;\n }\n\n if (Object.keys(newErrors).length > 0) {\n setErrors(newErrors);\n return;\n }\n\n onConfirm(note.trim(), quantity);\n }, [note, quantity, onConfirm, dictionary, readOnlyQuantity]);\n\n const handleCancel = useCallback(() => {\n setNote('');\n setQuantity(item.quantity);\n setErrors({});\n onClose?.();\n }, [onClose, item.quantity]);\n\n if (!open) {\n return null;\n }\n\n // Calculate discount display\n const hasDiscount = item.discounts && item.discounts.length > 0;\n const discountDisplay = hasDiscount\n ? item.discounts.map((d) => d.label).join(', ')\n : '-';\n\n // Define table columns\n const columns = [\n {\n label: dictionary.productLabel,\n key: 'productName',\n },\n {\n label: dictionary.priceLabel,\n key: 'price',\n },\n {\n label: dictionary.stockLabel,\n key: 'stock',\n },\n {\n label: dictionary.quantityLabel,\n key: 'quantity',\n },\n {\n label: dictionary.discountLabel,\n key: 'discount',\n },\n {\n label: dictionary.subtotalLabel,\n key: 'subtotal',\n },\n ];\n\n // Define table row data\n const rowData = [\n {\n productName: (\n <div className=\"quote-management-line-item-note-modal__product-info\">\n <div className=\"quote-management-line-item-note-modal__product-name\">\n {item.product.name}\n </div>\n <div className=\"quote-management-line-item-note-modal__product-sku\">\n {dictionary.skuLabel}: {item.product.sku}\n </div>\n </div>\n ),\n price: (\n <Price\n amount={item.prices.originalItemPrice.value}\n currency={item.prices.originalItemPrice.currency}\n />\n ),\n stock: (\n <span className=\"quote-management-line-item-note-modal__stock\">\n {item.stockStatus}\n </span>\n ),\n quantity: readOnlyQuantity ? (\n <span className=\"quote-management-line-item-note-modal__quantity-readonly\">\n {item.quantity}\n </span>\n ) : (\n <Input\n name=\"quantity\"\n type=\"number\"\n min=\"1\"\n value={quantity.toString()}\n onInput={(e: any) => {\n const newQuantity = parseInt(e.target.value, 10) || 0;\n setQuantity(newQuantity);\n setErrors({ ...errors, quantity: undefined });\n }}\n disabled={isSubmitting}\n error={!!errors.quantity}\n required\n data-testid=\"line-item-note-quantity-input\"\n className=\"quote-management-line-item-note-modal__quantity-input\"\n />\n ),\n discount: (\n <span className=\"quote-management-line-item-note-modal__discount\">\n {discountDisplay}\n </span>\n ),\n subtotal: (\n <Price\n amount={item.prices.rowTotal.value}\n currency={item.prices.rowTotal.currency}\n />\n ),\n },\n ];\n\n return (\n <Modal\n open={open}\n size=\"medium\"\n title={<>{dictionary.title}</>}\n onClose={handleCancel}\n clickToDismiss={true}\n escapeToDismiss={true}\n showCloseButton={showCloseButton}\n className={classes(['quote-management-line-item-note-modal', className])}\n data-testid=\"line-item-note-modal\"\n >\n {errorBanner && (\n <div\n className=\"quote-management-line-item-note-modal__error-banner\"\n data-testid=\"line-item-note-modal-error-banner\"\n >\n {errorBanner}\n </div>\n )}\n\n {successBanner && (\n <div\n className=\"quote-management-line-item-note-modal__success-banner\"\n data-testid=\"line-item-note-modal-success-banner\"\n >\n {successBanner}\n </div>\n )}\n\n <div className=\"quote-management-line-item-note-modal__content\">\n {/* Product Details Table */}\n <div className=\"quote-management-line-item-note-modal__details\">\n <Table\n columns={columns}\n rowData={rowData}\n data-testid=\"line-item-note-table\"\n mobileLayout=\"stacked\"\n className=\"quote-management-line-item-note-modal__details-table\"\n />\n {errors.quantity && (\n <div className=\"quote-management-line-item-note-modal__table-error\">\n {errors.quantity}\n </div>\n )}\n </div>\n\n {/* Note TextArea */}\n <div className=\"quote-management-line-item-note-modal__form-field\">\n <TextArea\n name=\"note\"\n placeholder={dictionary.notePlaceholder}\n rows={4}\n value={note}\n onInput={(e: any) => {\n setNote(e.target.value);\n setErrors({ ...errors, note: undefined });\n }}\n label={dictionary.noteLabel}\n disabled={isSubmitting}\n data-testid=\"line-item-note-textarea\"\n />\n {!errors.note && (\n <span className=\"quote-management-line-item-note-modal__helper-text\">\n {dictionary.noteHelper}\n </span>\n )}\n {errors.note && (\n <span className=\"quote-management-line-item-note-modal__error-text\">\n {errors.note}\n </span>\n )}\n </div>\n </div>\n\n <div className=\"quote-management-line-item-note-modal__actions\">\n <Button\n variant=\"secondary\"\n size=\"medium\"\n onClick={handleCancel}\n disabled={isSubmitting}\n className=\"quote-management-line-item-note-modal__cancel-button\"\n data-testid=\"line-item-note-cancel-button\"\n >\n {dictionary.cancelButton}\n </Button>\n <Button\n variant=\"primary\"\n size=\"medium\"\n onClick={handleConfirm}\n disabled={isSubmitting}\n className=\"quote-management-line-item-note-modal__confirm-button\"\n data-testid=\"line-item-note-confirm-button\"\n >\n {dictionary.confirmButton}\n </Button>\n </div>\n </Modal>\n );\n};\n"],"names":["ItemsQuoted","className","loading","table","pricesSummary","props","ItemsQuotedSkeleton","jsxs","classes","jsx","VComponent","Skeleton","SkeletonRow","ProductListTable","items","canEdit","readOnly","showActions","onItemCheckboxChange","onItemDropdownChange","onQuantityChange","onUpdate","dropdownSelections","originalQuantities","setOriginalQuantities","useState","currentQuantities","setCurrentQuantities","useEffect","quantities","item","hasQuantityChanges","uid","dictionary","useText","columns","handleItemCheckboxChange","event","isSelected","handleItemDropdownChange","action","handleQuantityChange","newQuantity","prev","handleUpdate","discountElement","amountOff","percentOff","Price","getProductNameContent","configurableOptions","_a","option","bundleOptions","_b","value","formatNoteTimestamp","timestamp","getUserTimezone","getNotesContent","validNotes","note","index","rowData","quantityElement","Input","e","productRow","Checkbox","Picker","notes","Table","wrapperNode","h","wrapperProps","submitButton","Button","QuotePricesSummary","entries","createEntry","entry","children","Accordion","AccordionSection","Fragment","LineItemNoteModal","open","onClose","onConfirm","isSubmitting","errorBanner","successBanner","showCloseButton","readOnlyQuantity","setNote","quantity","setQuantity","errors","setErrors","existingNote","handleConfirm","useCallback","newErrors","handleCancel","discountDisplay","d","Modal","TextArea"],"mappings":"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"}
@@ -1,12 +1,60 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- const l={requestQuote:!1,editQuote:!1,deleteQuote:!1},o={authenticated:!1,permissions:l},p=new Proxy(o,{get:(t,a)=>t[a],set:(t,a,n)=>(t[a]=n,!0)});function i(t){var a,n;return{uid:t.uid,name:t.name,createdAt:t.created_at,updatedAt:t.updated_at,status:t.status,buyer:{firstname:t.buyer.firstname,lastname:t.buyer.lastname},comments:(a=t.comments)==null?void 0:a.map(e=>({uid:e.uid,createdAt:e.created_at,author:{firstname:e.author.firstname,lastname:e.author.lastname}})),items:(n=t.items)==null?void 0:n.map(e=>({product:{uid:e.product.uid,sku:e.product.sku,name:e.product.name,templateId:e.product.template_id,templateName:e.product.template_name,priceRange:{maximumPrice:{regularPrice:{value:e.product.price_range.maximum_price.regular_price.value}}}},quantity:e.quantity,prices:{subtotalExcludingTax:{value:t.prices.subtotal_excluding_tax.value},subtotalIncludingTax:{value:t.prices.subtotal_including_tax.value},subtotalWithDiscountExcludingTax:{value:t.prices.subtotal_with_discount_excluding_tax.value},grandTotal:{value:t.prices.grand_total.value,currency:t.prices.grand_total.currency}}}))}}function g(t){if(!t||!t.data||!t.data.requestNegotiableQuote)return null;const a=t.data.requestNegotiableQuote.quote;return i(a)}function m(t){var e;if(!t)return null;const a={items:((e=t.items)==null?void 0:e.filter(r=>r==null?void 0:r.uid).map(i))||[],pageInfo:{currentPage:t.page_info.current_page,pageSize:t.page_info.page_size,totalPages:t.page_info.total_pages},totalCount:t.total_count,sortFields:t.sort_fields?{default:t.sort_fields.default,options:t.sort_fields.options}:void 0},n=c(a);return{...a,paginationInfo:n||void 0}}function c(t){if(!(t!=null&&t.pageInfo)||!t.totalCount)return null;const{currentPage:a,pageSize:n,totalPages:e}=t.pageInfo,{totalCount:r}=t,s=r>0?(a-1)*n+1:0,u=Math.min(a*n,r);return{currentPage:a,totalCount:r,pageSize:n,startItem:s,endItem:u,totalPages:e,pageSizeOptions:[20,30,50,100,200]}}const _=()=>[20,30,50,100,200],f=`
3
+ const e=`
4
+ fragment SELECTED_SHIPPING_METHOD_FRAGMENT on SelectedShippingMethod {
5
+ amount {
6
+ currency
7
+ value
8
+ }
9
+ carrier_code
10
+ carrier_title
11
+ method_code
12
+ method_title
13
+ price_excl_tax {
14
+ value
15
+ currency
16
+ }
17
+ price_incl_tax {
18
+ value
19
+ currency
20
+ }
21
+ }
22
+ `,t=`
23
+ fragment NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT on NegotiableQuoteShippingAddress {
24
+ uid
25
+ firstname
26
+ lastname
27
+ company
28
+ street
29
+ city
30
+ region {
31
+ code
32
+ label
33
+ region_id
34
+ }
35
+ postcode
36
+ country {
37
+ code
38
+ label
39
+ }
40
+ telephone
41
+
42
+ selected_shipping_method {
43
+ ...SELECTED_SHIPPING_METHOD_FRAGMENT
44
+ }
45
+ }
46
+
47
+ ${e}
48
+ `,a=`
4
49
  fragment NegotiableQuoteFragment on NegotiableQuote {
5
50
  uid
6
51
  name
7
52
  created_at
8
- updated_at
53
+ is_virtual
9
54
  status
55
+ sales_rep_name
56
+ expiration_date
57
+ updated_at
10
58
  buyer {
11
59
  firstname
12
60
  lastname
@@ -18,39 +66,326 @@ const l={requestQuote:!1,editQuote:!1,deleteQuote:!1},o={authenticated:!1,permis
18
66
  firstname
19
67
  lastname
20
68
  }
69
+ text
70
+ attachments {
71
+ name
72
+ url
73
+ }
21
74
  }
22
75
  template_id
23
76
  template_name
77
+ total_quantity
24
78
  items {
79
+ __typename
80
+ uid
25
81
  product {
26
- uid
27
- sku
28
82
  name
83
+ sku
84
+ uid
85
+ stock_status
86
+ quantity
87
+ thumbnail {
88
+ label
89
+ url
90
+ }
29
91
  price_range {
92
+ minimum_price {
93
+ regular_price {
94
+ value
95
+ currency
96
+ }
97
+ final_price {
98
+ value
99
+ currency
100
+ }
101
+ discount {
102
+ percent_off
103
+ amount_off
104
+ }
105
+ }
30
106
  maximum_price {
31
107
  regular_price {
32
108
  value
109
+ currency
33
110
  }
111
+ final_price {
112
+ value
113
+ currency
114
+ }
115
+ discount {
116
+ percent_off
117
+ amount_off
118
+ }
119
+ }
120
+ }
121
+ price_tiers {
122
+ quantity
123
+ final_price {
124
+ value
125
+ }
126
+ discount {
127
+ amount_off
128
+ percent_off
129
+ }
130
+ }
131
+ }
132
+ prices {
133
+ price {
134
+ currency
135
+ value
136
+ }
137
+ price_including_tax {
138
+ value
139
+ currency
140
+ }
141
+ original_item_price {
142
+ currency
143
+ value
144
+ }
145
+ original_row_total {
146
+ currency
147
+ value
148
+ }
149
+ row_total {
150
+ currency
151
+ value
152
+ }
153
+ row_total_including_tax {
154
+ value
155
+ currency
156
+ }
157
+ catalog_discount {
158
+ amount_off
159
+ percent_off
160
+ }
161
+ discounts {
162
+ label
163
+ value
164
+ amount {
165
+ currency
166
+ value
34
167
  }
35
168
  }
36
169
  }
37
170
  quantity
171
+ is_available
172
+ note_from_buyer {
173
+ created_at
174
+ creator_id
175
+ creator_type
176
+ negotiable_quote_item_uid
177
+ note
178
+ note_uid
179
+ __typename
180
+ }
181
+ note_from_seller {
182
+ created_at
183
+ creator_id
184
+ creator_type
185
+ negotiable_quote_item_uid
186
+ note
187
+ note_uid
188
+ __typename
189
+ }
190
+ ... on SimpleCartItem {
191
+ customizable_options {
192
+ type
193
+ label
194
+ values {
195
+ label
196
+ value
197
+ }
198
+ }
199
+ }
200
+ ... on ConfigurableCartItem {
201
+ configurable_options {
202
+ option_label
203
+ value_label
204
+ }
205
+ configured_variant {
206
+ uid
207
+ sku
208
+ stock_status
209
+ thumbnail {
210
+ label
211
+ url
212
+ }
213
+ price_range {
214
+ minimum_price {
215
+ regular_price {
216
+ value
217
+ currency
218
+ }
219
+ final_price {
220
+ value
221
+ currency
222
+ }
223
+ discount {
224
+ percent_off
225
+ amount_off
226
+ }
227
+ }
228
+ maximum_price {
229
+ regular_price {
230
+ value
231
+ currency
232
+ }
233
+ final_price {
234
+ value
235
+ currency
236
+ }
237
+ discount {
238
+ percent_off
239
+ amount_off
240
+ }
241
+ }
242
+ }
243
+ price_tiers {
244
+ quantity
245
+ final_price {
246
+ value
247
+ }
248
+ discount {
249
+ amount_off
250
+ percent_off
251
+ }
252
+ }
253
+ }
254
+ customizable_options {
255
+ type
256
+ label
257
+ values {
258
+ label
259
+ value
260
+ }
261
+ }
262
+ }
263
+ ... on BundleCartItem {
264
+ bundle_options {
265
+ label
266
+ values {
267
+ label
268
+ quantity
269
+ original_price {
270
+ currency
271
+ value
272
+ }
273
+ priceV2 {
274
+ currency
275
+ value
276
+ }
277
+ }
278
+ }
279
+ }
280
+ ... on DownloadableCartItem {
281
+ links {
282
+ sort_order
283
+ title
284
+ }
285
+ customizable_options {
286
+ type
287
+ label
288
+ values {
289
+ label
290
+ value
291
+ }
292
+ }
293
+ }
294
+ }
295
+ history {
296
+ uid
297
+ created_at
298
+ author {
299
+ firstname
300
+ lastname
301
+ }
302
+ change_type
303
+ changes {
304
+ comment_added {
305
+ comment
306
+ }
307
+ custom_changes {
308
+ new_value
309
+ old_value
310
+ title
311
+ }
312
+ statuses {
313
+ changes {
314
+ new_status
315
+ old_status
316
+ }
317
+ }
318
+ expiration {
319
+ new_expiration
320
+ old_expiration
321
+ }
322
+ total {
323
+ new_price {
324
+ currency
325
+ value
326
+ }
327
+ old_price {
328
+ currency
329
+ value
330
+ }
331
+ }
332
+ products_removed {
333
+ products_removed_from_catalog
334
+ products_removed_from_quote {
335
+ uid
336
+ name
337
+ sku
338
+ quantity
339
+ }
340
+ }
341
+ }
38
342
  }
39
343
  prices {
40
- subtotal_excluding_tax {
344
+ subtotal_with_discount_excluding_tax {
345
+ currency
41
346
  value
42
347
  }
43
348
  subtotal_including_tax {
349
+ currency
44
350
  value
45
351
  }
46
- subtotal_with_discount_excluding_tax {
352
+ subtotal_excluding_tax {
353
+ currency
47
354
  value
48
355
  }
49
356
  grand_total {
357
+ currency
50
358
  value
359
+ }
360
+ grand_total_excluding_tax {
51
361
  currency
362
+ value
52
363
  }
364
+ applied_taxes {
365
+ label
366
+ amount {
367
+ value
368
+ currency
369
+ }
370
+ }
371
+ discounts {
372
+ amount {
373
+ value
374
+ currency
375
+ }
376
+ label
377
+ coupon {
378
+ code
379
+ }
380
+ applied_to
381
+ }
382
+ }
383
+
384
+ shipping_addresses {
385
+ ...NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT
53
386
  }
54
387
  }
55
- `;export{l as D,f as N,m as a,_ as g,p as s,g as t};
388
+
389
+ ${t}
390
+ `;export{a as N};
56
391
  //# sourceMappingURL=NegotiableQuoteFragment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NegotiableQuoteFragment.js","sources":["/@dropins/storefront-quote-management/src/lib/state.ts","/@dropins/storefront-quote-management/src/data/transforms/transform-quote.ts","/@dropins/storefront-quote-management/src/api/graphql/NegotiableQuoteFragment.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nimport { State } from '../types/state.types';\n\nexport const DEFAULT_PERMISSIONS = {\n requestQuote: false,\n editQuote: false,\n deleteQuote: false,\n};\n\nconst _state: State = {\n authenticated: false,\n permissions: DEFAULT_PERMISSIONS,\n}\n\n// Proxy state to make it reactive\nexport const state = new Proxy(_state, {\n get: (target, key) => {\n return target[key as keyof State];\n },\n set: (target, key, value) => {\n target[key as keyof State] = value;\n return true;\n }\n})","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\nimport {\n NegotiableQuoteModel,\n NegotiableQuotesListModel,\n PaginationInfo,\n} from '@/quote-management/data/models/negotiable-quote-model';\n\n// Base helper that transforms a single quote object directly\nfunction transformSingleQuote(quote: any): NegotiableQuoteModel {\n return {\n uid: quote.uid,\n name: quote.name,\n createdAt: quote.created_at,\n updatedAt: quote.updated_at,\n status: quote.status,\n buyer: {\n firstname: quote.buyer.firstname,\n lastname: quote.buyer.lastname,\n },\n comments: quote.comments?.map((comment: any) => ({\n uid: comment.uid,\n createdAt: comment.created_at,\n author: {\n firstname: comment.author.firstname,\n lastname: comment.author.lastname,\n },\n })),\n items: quote.items?.map((item: any) => ({\n product: {\n uid: item.product.uid,\n sku: item.product.sku,\n name: item.product.name,\n templateId: item.product.template_id,\n templateName: item.product.template_name,\n priceRange: {\n maximumPrice: {\n regularPrice: {\n value: item.product.price_range.maximum_price.regular_price.value,\n },\n },\n },\n },\n quantity: item.quantity,\n prices: {\n subtotalExcludingTax: {\n value: quote.prices.subtotal_excluding_tax.value,\n },\n subtotalIncludingTax: {\n value: quote.prices.subtotal_including_tax.value,\n },\n subtotalWithDiscountExcludingTax: {\n value: quote.prices.subtotal_with_discount_excluding_tax.value,\n },\n grandTotal: {\n value: quote.prices.grand_total.value,\n currency: quote.prices.grand_total.currency,\n },\n },\n })),\n };\n}\n\nexport function transformQuote(quoteData: any): NegotiableQuoteModel | null {\n if (!quoteData || !quoteData.data || !quoteData.data.requestNegotiableQuote) {\n return null;\n }\n\n const quote = quoteData.data.requestNegotiableQuote.quote;\n return transformSingleQuote(quote);\n}\n\nexport function transformNegotiableQuotesList(\n quotesData: any\n): NegotiableQuotesListModel | null {\n if (!quotesData) {\n return null;\n }\n\n const transformedModel = {\n items:\n quotesData.items\n ?.filter((quote: any) => quote?.uid)\n .map(transformSingleQuote) || [],\n pageInfo: {\n currentPage: quotesData.page_info.current_page,\n pageSize: quotesData.page_info.page_size,\n totalPages: quotesData.page_info.total_pages,\n },\n totalCount: quotesData.total_count,\n sortFields: quotesData.sort_fields\n ? {\n default: quotesData.sort_fields.default,\n options: quotesData.sort_fields.options,\n }\n : undefined,\n };\n\n // Calculate pagination info\n const paginationInfo = transformPaginationInfo(transformedModel);\n\n return {\n ...transformedModel,\n paginationInfo: paginationInfo || undefined,\n };\n}\n\nexport function transformPaginationInfo(\n quotesData: NegotiableQuotesListModel | null\n): PaginationInfo | null {\n if (!quotesData?.pageInfo || !quotesData.totalCount) {\n return null;\n }\n\n const { currentPage, pageSize, totalPages } = quotesData.pageInfo;\n const { totalCount } = quotesData;\n\n const startItem = totalCount > 0 ? (currentPage - 1) * pageSize + 1 : 0;\n const endItem = Math.min(currentPage * pageSize, totalCount);\n\n const pageSizeOptions = [20, 30, 50, 100, 200]; // Default page size options\n\n return {\n currentPage,\n totalCount,\n pageSize,\n startItem,\n endItem,\n totalPages,\n pageSizeOptions,\n };\n}\n\n// TODO: Check if admin has this configuration\nexport const getDefaultPageSizeOptions = () => [20, 30, 50, 100, 200];\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const NEGOTIABLE_QUOTE_FRAGMENT = /* GraphQL */ `\n fragment NegotiableQuoteFragment on NegotiableQuote {\n uid\n name\n created_at\n updated_at\n status\n buyer {\n firstname\n lastname\n }\n comments {\n uid\n created_at\n author {\n firstname\n lastname\n }\n }\n template_id\n template_name\n items {\n product {\n uid\n sku\n name\n price_range {\n maximum_price {\n regular_price {\n value\n }\n }\n }\n }\n quantity\n }\n prices {\n subtotal_excluding_tax {\n value\n }\n subtotal_including_tax {\n value\n }\n subtotal_with_discount_excluding_tax {\n value\n }\n grand_total {\n value\n currency\n }\n }\n }\n`;\n"],"names":["DEFAULT_PERMISSIONS","_state","state","target","key","value","transformSingleQuote","quote","_a","_b","comment","item","transformQuote","quoteData","transformNegotiableQuotesList","quotesData","transformedModel","paginationInfo","transformPaginationInfo","currentPage","pageSize","totalPages","totalCount","startItem","endItem","getDefaultPageSizeOptions","NEGOTIABLE_QUOTE_FRAGMENT"],"mappings":"AAWO,MAAMA,EAAsB,CAC/B,aAAc,GACd,UAAW,GACX,YAAa,EACjB,EAEMC,EAAgB,CAClB,cAAe,GACf,YAAaD,CACjB,EAGaE,EAAQ,IAAI,MAAMD,EAAQ,CACnC,IAAK,CAACE,EAAQC,IACHD,EAAOC,CAAkB,EAEpC,IAAK,CAACD,EAAQC,EAAKC,KACfF,EAAOC,CAAkB,EAAIC,EACtB,GAEf,CAAC,ECRD,SAASC,EAAqBC,EAAkC,CDZzD,IAAAC,EAAAC,ECaL,MAAO,CACL,IAAKF,EAAM,IACX,KAAMA,EAAM,KACZ,UAAWA,EAAM,WACjB,UAAWA,EAAM,WACjB,OAAQA,EAAM,OACd,MAAO,CACL,UAAWA,EAAM,MAAM,UACvB,SAAUA,EAAM,MAAM,QAAA,EAExB,UAAUC,EAAAD,EAAM,WAAN,YAAAC,EAAgB,IAAKE,IAAkB,CAC/C,IAAKA,EAAQ,IACb,UAAWA,EAAQ,WACnB,OAAQ,CACN,UAAWA,EAAQ,OAAO,UAC1B,SAAUA,EAAQ,OAAO,QAAA,CAC3B,IAEF,OAAOD,EAAAF,EAAM,QAAN,YAAAE,EAAa,IAAKE,IAAe,CACtC,QAAS,CACP,IAAKA,EAAK,QAAQ,IAClB,IAAKA,EAAK,QAAQ,IAClB,KAAMA,EAAK,QAAQ,KACnB,WAAYA,EAAK,QAAQ,YACzB,aAAcA,EAAK,QAAQ,cAC3B,WAAY,CACV,aAAc,CACZ,aAAc,CACZ,MAAOA,EAAK,QAAQ,YAAY,cAAc,cAAc,KAAA,CAC9D,CACF,CACF,EAEF,SAAUA,EAAK,SACf,OAAQ,CACN,qBAAsB,CACpB,MAAOJ,EAAM,OAAO,uBAAuB,KAAA,EAE7C,qBAAsB,CACpB,MAAOA,EAAM,OAAO,uBAAuB,KAAA,EAE7C,iCAAkC,CAChC,MAAOA,EAAM,OAAO,qCAAqC,KAAA,EAE3D,WAAY,CACV,MAAOA,EAAM,OAAO,YAAY,MAChC,SAAUA,EAAM,OAAO,YAAY,QAAA,CACrC,CACF,GACA,CAEN,CAEO,SAASK,EAAeC,EAA6C,CAC1E,GAAI,CAACA,GAAa,CAACA,EAAU,MAAQ,CAACA,EAAU,KAAK,uBACnD,OAAO,KAGT,MAAMN,EAAQM,EAAU,KAAK,uBAAuB,MACpD,OAAOP,EAAqBC,CAAK,CACnC,CAEO,SAASO,EACdC,EACkC,CD7E7B,IAAAP,EC8EL,GAAI,CAACO,EACH,OAAO,KAGT,MAAMC,EAAmB,CACvB,QACER,EAAAO,EAAW,QAAX,YAAAP,EACI,OAAQD,GAAeA,GAAA,YAAAA,EAAO,KAC/B,IAAID,KAAyB,CAAA,EAClC,SAAU,CACR,YAAaS,EAAW,UAAU,aAClC,SAAUA,EAAW,UAAU,UAC/B,WAAYA,EAAW,UAAU,WAAA,EAEnC,WAAYA,EAAW,YACvB,WAAYA,EAAW,YACnB,CACE,QAASA,EAAW,YAAY,QAChC,QAASA,EAAW,YAAY,OAAA,EAElC,MAAA,EAIAE,EAAiBC,EAAwBF,CAAgB,EAE/D,MAAO,CACL,GAAGA,EACH,eAAgBC,GAAkB,MAAA,CAEtC,CAEO,SAASC,EACdH,EACuB,CACvB,GAAI,EAACA,GAAA,MAAAA,EAAY,WAAY,CAACA,EAAW,WACvC,OAAO,KAGT,KAAM,CAAE,YAAAI,EAAa,SAAAC,EAAU,WAAAC,CAAA,EAAeN,EAAW,SACnD,CAAE,WAAAO,GAAeP,EAEjBQ,EAAYD,EAAa,GAAKH,EAAc,GAAKC,EAAW,EAAI,EAChEI,EAAU,KAAK,IAAIL,EAAcC,EAAUE,CAAU,EAI3D,MAAO,CACL,YAAAH,EACA,WAAAG,EACA,SAAAF,EACA,UAAAG,EACA,QAAAC,EACA,WAAAH,EACA,gBATsB,CAAC,GAAI,GAAI,GAAI,IAAK,GAAG,CAS3C,CAEJ,CAGO,MAAMI,EAA4B,IAAM,CAAC,GAAI,GAAI,GAAI,IAAK,GAAG,ECnIvDC,EAA0C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"NegotiableQuoteFragment.js","sources":["/@dropins/storefront-quote-management/src/api/graphql/ShippingMethodFragment.ts","/@dropins/storefront-quote-management/src/api/graphql/NegotiableQuoteAddressFragment.ts","/@dropins/storefront-quote-management/src/api/graphql/NegotiableQuoteFragment.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nexport const SELECTED_SHIPPING_METHOD_FRAGMENT = /* GraphQL */ `\n fragment SELECTED_SHIPPING_METHOD_FRAGMENT on SelectedShippingMethod {\n amount {\n currency\n value\n }\n carrier_code\n carrier_title\n method_code\n method_title\n price_excl_tax {\n value\n currency\n }\n price_incl_tax {\n value\n currency\n }\n }\n`;\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { SELECTED_SHIPPING_METHOD_FRAGMENT } from './ShippingMethodFragment';\n\nexport const NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT = /* GraphQL */ `\n fragment NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT on NegotiableQuoteShippingAddress {\n uid\n firstname\n lastname\n company\n street\n city\n region {\n code\n label\n region_id\n }\n postcode\n country {\n code\n label\n }\n telephone\n\n selected_shipping_method {\n ...SELECTED_SHIPPING_METHOD_FRAGMENT\n }\n }\n\n ${SELECTED_SHIPPING_METHOD_FRAGMENT}\n`;\n","/********************************************************************\n * Copyright 2025 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this\n * file in accordance with the terms of the Adobe license agreement\n * accompanying it.\n *******************************************************************/\n\nimport { NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT } from './NegotiableQuoteAddressFragment';\n\nexport const NEGOTIABLE_QUOTE_FRAGMENT = /* GraphQL */ `\n fragment NegotiableQuoteFragment on NegotiableQuote {\n uid\n name\n created_at\n is_virtual\n status\n sales_rep_name\n expiration_date\n updated_at\n buyer {\n firstname\n lastname\n }\n comments {\n uid\n created_at\n author {\n firstname\n lastname\n }\n text\n attachments {\n name\n url\n }\n }\n template_id\n template_name\n total_quantity\n items {\n __typename\n uid\n product {\n name\n sku\n uid\n stock_status\n quantity\n thumbnail {\n label\n url\n }\n price_range {\n minimum_price {\n regular_price {\n value\n currency\n }\n final_price {\n value\n currency\n }\n discount {\n percent_off\n amount_off\n }\n }\n maximum_price {\n regular_price {\n value\n currency\n }\n final_price {\n value\n currency\n }\n discount {\n percent_off\n amount_off\n }\n }\n }\n price_tiers {\n quantity\n final_price {\n value\n }\n discount {\n amount_off\n percent_off\n }\n }\n }\n prices {\n price {\n currency\n value\n }\n price_including_tax {\n value\n currency\n }\n original_item_price {\n currency\n value\n }\n original_row_total {\n currency\n value\n }\n row_total {\n currency\n value\n }\n row_total_including_tax {\n value\n currency\n }\n catalog_discount {\n amount_off\n percent_off\n }\n discounts {\n label\n value\n amount {\n currency\n value\n }\n }\n }\n quantity\n is_available\n note_from_buyer {\n created_at\n creator_id\n creator_type\n negotiable_quote_item_uid\n note\n note_uid\n __typename\n }\n note_from_seller {\n created_at\n creator_id\n creator_type\n negotiable_quote_item_uid\n note\n note_uid\n __typename\n }\n ... on SimpleCartItem {\n customizable_options {\n type\n label\n values {\n label\n value\n }\n }\n }\n ... on ConfigurableCartItem {\n configurable_options {\n option_label\n value_label\n }\n configured_variant {\n uid\n sku\n stock_status\n thumbnail {\n label\n url\n }\n price_range {\n minimum_price {\n regular_price {\n value\n currency\n }\n final_price {\n value\n currency\n }\n discount {\n percent_off\n amount_off\n }\n }\n maximum_price {\n regular_price {\n value\n currency\n }\n final_price {\n value\n currency\n }\n discount {\n percent_off\n amount_off\n }\n }\n }\n price_tiers {\n quantity\n final_price {\n value\n }\n discount {\n amount_off\n percent_off\n }\n }\n }\n customizable_options {\n type\n label\n values {\n label\n value\n }\n }\n }\n ... on BundleCartItem {\n bundle_options {\n label\n values {\n label\n quantity\n original_price {\n currency\n value\n }\n priceV2 {\n currency\n value\n }\n }\n }\n }\n ... on DownloadableCartItem {\n links {\n sort_order\n title\n }\n customizable_options {\n type\n label\n values {\n label\n value\n }\n }\n }\n }\n history {\n uid\n created_at\n author {\n firstname\n lastname\n }\n change_type\n changes {\n comment_added {\n comment\n }\n custom_changes {\n new_value\n old_value\n title\n }\n statuses {\n changes {\n new_status\n old_status\n }\n }\n expiration {\n new_expiration\n old_expiration\n }\n total {\n new_price {\n currency\n value\n }\n old_price {\n currency\n value\n }\n }\n products_removed {\n products_removed_from_catalog\n products_removed_from_quote {\n uid\n name\n sku\n quantity\n }\n }\n }\n }\n prices {\n subtotal_with_discount_excluding_tax {\n currency\n value\n }\n subtotal_including_tax {\n currency\n value\n }\n subtotal_excluding_tax {\n currency\n value\n }\n grand_total {\n currency\n value\n }\n grand_total_excluding_tax {\n currency\n value\n }\n applied_taxes {\n label\n amount {\n value\n currency\n }\n }\n discounts {\n amount {\n value\n currency\n }\n label\n coupon {\n code\n }\n applied_to\n }\n }\n\n shipping_addresses {\n ...NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT\n }\n }\n\n ${NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT}\n`;\n"],"names":["SELECTED_SHIPPING_METHOD_FRAGMENT","NEGOTIABLE_QUOTE_SHIPPING_ADDRESS_FRAGMENT","NEGOTIABLE_QUOTE_FRAGMENT"],"mappings":"AASO,MAAMA,EAAkD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECElDC,EAA2D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAyBpED,CAAiC;AAAA,ECzBxBE,EAA0C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqVnDD,CAA0C;"}