@kiva/kv-components 10.5.1 → 10.6.1

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 (228) hide show
  1. package/dist/index.js +20 -20
  2. package/dist/vue/KvAccordionItem.js +1 -1
  3. package/dist/vue/KvActivityRow.js +1 -1
  4. package/dist/vue/KvAtbModal.js +1 -1
  5. package/dist/vue/KvBorrowerImage.js +1 -1
  6. package/dist/vue/KvButton.js +1 -1
  7. package/dist/vue/KvCardFrame.js +1 -1
  8. package/dist/vue/KvCarousel.js +1 -1
  9. package/dist/vue/KvCartModal.js +1 -1
  10. package/dist/vue/KvCartPill.js +1 -1
  11. package/dist/vue/KvCheckbox.js +1 -1
  12. package/dist/vue/KvCheckoutReceipt.js +1 -1
  13. package/dist/vue/KvChip.js +1 -1
  14. package/dist/vue/KvClassicLoanCard.js +252 -295
  15. package/dist/vue/KvClassicLoanCard.script.js +298 -0
  16. package/dist/vue/KvCommentsAdd.js +2 -2
  17. package/dist/vue/KvCommentsContainer.js +2 -2
  18. package/dist/vue/KvCommentsHeartButton.js +1 -1
  19. package/dist/vue/KvCommentsList.js +1 -1
  20. package/dist/vue/KvCommentsListItem.js +2 -2
  21. package/dist/vue/KvCommentsReplyButton.js +1 -1
  22. package/dist/vue/KvCompactLoanCard.js +416 -380
  23. package/dist/vue/KvCompactLoanCard.script.js +382 -0
  24. package/dist/vue/KvContentfulImg.js +1 -1
  25. package/dist/vue/KvCountdownTimer.js +1 -1
  26. package/dist/vue/KvDatePicker.js +1 -1
  27. package/dist/vue/KvExpandable.js +1 -1
  28. package/dist/vue/KvExpandableQuestion.js +1 -1
  29. package/dist/vue/KvFlag.js +1 -1
  30. package/dist/vue/KvFormAssemblyForm.js +2 -95
  31. package/dist/vue/KvFormAssemblyForm.script.js +97 -0
  32. package/dist/vue/KvGrid.js +1 -1
  33. package/dist/vue/KvIconBag.js +1 -1
  34. package/dist/vue/KvIconButton.js +2 -116
  35. package/dist/vue/KvIconButton.script.js +118 -0
  36. package/dist/vue/KvImageUpload.js +1 -1
  37. package/dist/vue/KvImpactVerticalSelector.js +1 -1
  38. package/dist/vue/KvInlineActivityCard.js +1 -1
  39. package/dist/vue/KvInlineActivityFeed.js +1 -1
  40. package/dist/vue/KvIntroductionLoanCard.js +247 -220
  41. package/dist/vue/KvIntroductionLoanCard.script.js +223 -0
  42. package/dist/vue/KvLendAmountButton.js +1 -1
  43. package/dist/vue/KvLendCta.js +355 -389
  44. package/dist/vue/KvLendCta.script.js +391 -0
  45. package/dist/vue/KvLightbox.js +18 -18
  46. package/dist/vue/KvLightbox.script.js +147 -0
  47. package/dist/vue/KvLightbox.vue.d.ts +21 -0
  48. package/dist/vue/KvLineGraph.js +1 -1
  49. package/dist/vue/KvLoadingSpinner.js +1 -1
  50. package/dist/vue/KvLoanActivities.js +75 -149
  51. package/dist/vue/KvLoanActivities.script.js +151 -0
  52. package/dist/vue/KvLoanActivities.vue.d.ts +21 -0
  53. package/dist/vue/KvLoanBookmark.js +22 -33
  54. package/dist/vue/KvLoanBookmark.script.js +35 -0
  55. package/dist/vue/KvLoanCallouts.js +1 -1
  56. package/dist/vue/KvLoanInfoCard.js +2 -2
  57. package/dist/vue/KvLoanProgressGroup.js +1 -1
  58. package/dist/vue/KvLoanTag.js +44 -123
  59. package/dist/vue/KvLoanTag.script.js +125 -0
  60. package/dist/vue/KvLoanUse.js +14 -111
  61. package/dist/vue/KvLoanUse.script.js +113 -0
  62. package/dist/vue/KvMap.js +1 -1
  63. package/dist/vue/KvMaterialIcon.js +1 -1
  64. package/dist/vue/KvPageContainer.js +1 -1
  65. package/dist/vue/KvPagination.js +1 -1
  66. package/dist/vue/KvPieChart.js +1 -1
  67. package/dist/vue/KvPieChartV2.js +1 -1
  68. package/dist/vue/KvPieChartV2.vue.d.ts +21 -0
  69. package/dist/vue/KvPill.js +1 -1
  70. package/dist/vue/KvPopper.js +1 -1
  71. package/dist/vue/KvProgressBar.js +1 -1
  72. package/dist/vue/KvProgressCircle.js +1 -1
  73. package/dist/vue/KvPulsingDot.js +1 -1
  74. package/dist/vue/KvRadio.js +1 -1
  75. package/dist/vue/KvSecondaryNav.js +1 -1
  76. package/dist/vue/KvSelect.js +1 -1
  77. package/dist/vue/KvSideSheet.js +1 -1
  78. package/dist/vue/KvSimpleMap.js +1 -1
  79. package/dist/vue/KvStackedBarGraph.js +1 -1
  80. package/dist/vue/KvSwitch.js +1 -1
  81. package/dist/vue/KvTab.js +1 -1
  82. package/dist/vue/KvTabPanel.js +1 -1
  83. package/dist/vue/KvTabs.js +1 -1
  84. package/dist/vue/KvTextInput.js +1 -1
  85. package/dist/vue/KvTextLink.js +1 -1
  86. package/dist/vue/KvThemeProvider.js +1 -1
  87. package/dist/vue/KvToast.js +1 -1
  88. package/dist/vue/KvTooltip.js +1 -1
  89. package/dist/vue/KvTreeMapChart.js +1 -1
  90. package/dist/vue/KvUserAvatar.js +1 -1
  91. package/dist/vue/KvUtilityMenu.js +1 -1
  92. package/dist/vue/KvVerticalCarousel.js +1 -1
  93. package/dist/vue/KvVotingCard.js +1 -1
  94. package/dist/vue/KvVotingCardV2.js +1 -1
  95. package/dist/vue/KvVotingCardV2.vue.d.ts +21 -0
  96. package/dist/vue/KvWideLoanCard.js +206 -232
  97. package/dist/vue/KvWideLoanCard.script.js +235 -0
  98. package/dist/vue/KvWwwHeader/KvHeaderAboutMenu.js +1 -1
  99. package/dist/vue/KvWwwHeader/KvHeaderDropdownLink.js +1 -1
  100. package/dist/vue/KvWwwHeader/KvHeaderLinkBar.js +1 -1
  101. package/dist/vue/KvWwwHeader/KvHeaderLogo.js +1 -1
  102. package/dist/vue/KvWwwHeader/KvHeaderMobileMenu.js +1 -1
  103. package/dist/vue/KvWwwHeader/KvHeaderMyKivaMenu.js +1 -1
  104. package/dist/vue/KvWwwHeader/KvHeaderTakeActionMenu.js +1 -1
  105. package/dist/vue/KvWwwHeader/LendMenu/KvLendListMenu.js +1 -1
  106. package/dist/vue/KvWwwHeader/LendMenu/KvLendMegaMenu.js +1 -1
  107. package/dist/vue/KvWwwHeader/LendMenu/KvLendMenu.js +1 -1
  108. package/dist/vue/KvWwwHeader/LendMenu/KvLendMenuCountryList.js +1 -1
  109. package/dist/vue/KvWwwHeader/LendMenu/KvLendMenuSearchList.js +1 -1
  110. package/dist/vue/KvWwwHeader.js +1 -1
  111. package/dist/vue/KvWwwHeaderBasic/AboutMenu.js +1 -1
  112. package/dist/vue/KvWwwHeaderBasic/HeaderMenuGroup.js +1 -1
  113. package/dist/vue/KvWwwHeaderBasic/KvWwwHeaderBasic.js +1 -1
  114. package/dist/vue/KvWwwHeaderBasic/LinkBar.js +1 -1
  115. package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/CategoriesPanel.js +1 -1
  116. package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/MobileLendMenu.js +1 -1
  117. package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/MyKivaPanel.js +1 -1
  118. package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/RegionsPanel.js +1 -1
  119. package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/SearchPanel.js +1 -1
  120. package/dist/vue/KvWwwHeaderBasic/MobileMenu.js +1 -1
  121. package/dist/vue/KvWwwHeaderBasic/MyKivaMenu.js +1 -1
  122. package/dist/vue/KvWwwHeaderBasic/SearchBar.js +1 -1
  123. package/package.json +2 -2
  124. package/vite.config.ts +16 -13
  125. package/dist/vue/KvClassicLoanCard2.js +0 -255
  126. package/dist/vue/KvCompactLoanCard2.js +0 -418
  127. package/dist/vue/KvFormAssemblyForm2.js +0 -4
  128. package/dist/vue/KvIconButton2.js +0 -4
  129. package/dist/vue/KvIntroductionLoanCard2.js +0 -250
  130. package/dist/vue/KvLendCta2.js +0 -357
  131. package/dist/vue/KvLightbox2.js +0 -117
  132. package/dist/vue/KvLoanActivities2.js +0 -77
  133. package/dist/vue/KvLoanBookmark2.js +0 -24
  134. package/dist/vue/KvLoanTag2.js +0 -46
  135. package/dist/vue/KvLoanUse2.js +0 -16
  136. package/dist/vue/KvWideLoanCard2.js +0 -209
  137. /package/dist/vue/{KvAccordionItem2.js → KvAccordionItem.script.js} +0 -0
  138. /package/dist/vue/{KvActivityRow2.js → KvActivityRow.script.js} +0 -0
  139. /package/dist/vue/{KvAtbModal2.js → KvAtbModal.script.js} +0 -0
  140. /package/dist/vue/{KvBorrowerImage2.js → KvBorrowerImage.script.js} +0 -0
  141. /package/dist/vue/{KvButton2.js → KvButton.script.js} +0 -0
  142. /package/dist/vue/{KvCardFrame2.js → KvCardFrame.script.js} +0 -0
  143. /package/dist/vue/{KvCarousel2.js → KvCarousel.script.js} +0 -0
  144. /package/dist/vue/{KvCartModal2.js → KvCartModal.script.js} +0 -0
  145. /package/dist/vue/{KvCartPill2.js → KvCartPill.script.js} +0 -0
  146. /package/dist/vue/{KvCheckbox2.js → KvCheckbox.script.js} +0 -0
  147. /package/dist/vue/{KvCheckoutReceipt2.js → KvCheckoutReceipt.script.js} +0 -0
  148. /package/dist/vue/{KvChip2.js → KvChip.script.js} +0 -0
  149. /package/dist/vue/{KvCommentsAdd2.js → KvCommentsAdd.script.js} +0 -0
  150. /package/dist/vue/{KvCommentsContainer2.js → KvCommentsContainer.script.js} +0 -0
  151. /package/dist/vue/{KvCommentsHeartButton2.js → KvCommentsHeartButton.script.js} +0 -0
  152. /package/dist/vue/{KvCommentsList2.js → KvCommentsList.script.js} +0 -0
  153. /package/dist/vue/{KvCommentsListItem2.js → KvCommentsListItem.script.js} +0 -0
  154. /package/dist/vue/{KvCommentsReplyButton2.js → KvCommentsReplyButton.script.js} +0 -0
  155. /package/dist/vue/{KvContentfulImg2.js → KvContentfulImg.script.js} +0 -0
  156. /package/dist/vue/{KvCountdownTimer2.js → KvCountdownTimer.script.js} +0 -0
  157. /package/dist/vue/{KvDatePicker2.js → KvDatePicker.script.js} +0 -0
  158. /package/dist/vue/{KvExpandable2.js → KvExpandable.script.js} +0 -0
  159. /package/dist/vue/{KvExpandableQuestion2.js → KvExpandableQuestion.script.js} +0 -0
  160. /package/dist/vue/{KvFlag2.js → KvFlag.script.js} +0 -0
  161. /package/dist/vue/{KvGrid2.js → KvGrid.script.js} +0 -0
  162. /package/dist/vue/{KvIconBag2.js → KvIconBag.script.js} +0 -0
  163. /package/dist/vue/{KvImageUpload2.js → KvImageUpload.script.js} +0 -0
  164. /package/dist/vue/{KvImpactVerticalSelector2.js → KvImpactVerticalSelector.script.js} +0 -0
  165. /package/dist/vue/{KvInlineActivityCard2.js → KvInlineActivityCard.script.js} +0 -0
  166. /package/dist/vue/{KvInlineActivityFeed2.js → KvInlineActivityFeed.script.js} +0 -0
  167. /package/dist/vue/{KvLendAmountButton2.js → KvLendAmountButton.script.js} +0 -0
  168. /package/dist/vue/{KvLineGraph2.js → KvLineGraph.script.js} +0 -0
  169. /package/dist/vue/{KvLoadingSpinner2.js → KvLoadingSpinner.script.js} +0 -0
  170. /package/dist/vue/{KvLoanCallouts2.js → KvLoanCallouts.script.js} +0 -0
  171. /package/dist/vue/{KvLoanProgressGroup2.js → KvLoanProgressGroup.script.js} +0 -0
  172. /package/dist/vue/{KvMap2.js → KvMap.script.js} +0 -0
  173. /package/dist/vue/{KvMaterialIcon2.js → KvMaterialIcon.script.js} +0 -0
  174. /package/dist/vue/{KvPageContainer2.js → KvPageContainer.script.js} +0 -0
  175. /package/dist/vue/{KvPagination2.js → KvPagination.script.js} +0 -0
  176. /package/dist/vue/{KvPieChart2.js → KvPieChart.script.js} +0 -0
  177. /package/dist/vue/{KvPieChartV22.js → KvPieChartV2.script.js} +0 -0
  178. /package/dist/vue/{KvPill2.js → KvPill.script.js} +0 -0
  179. /package/dist/vue/{KvPopper2.js → KvPopper.script.js} +0 -0
  180. /package/dist/vue/{KvProgressBar2.js → KvProgressBar.script.js} +0 -0
  181. /package/dist/vue/{KvProgressCircle2.js → KvProgressCircle.script.js} +0 -0
  182. /package/dist/vue/{KvPulsingDot2.js → KvPulsingDot.script.js} +0 -0
  183. /package/dist/vue/{KvRadio2.js → KvRadio.script.js} +0 -0
  184. /package/dist/vue/{KvSecondaryNav2.js → KvSecondaryNav.script.js} +0 -0
  185. /package/dist/vue/{KvSelect2.js → KvSelect.script.js} +0 -0
  186. /package/dist/vue/{KvSideSheet2.js → KvSideSheet.script.js} +0 -0
  187. /package/dist/vue/{KvSimpleMap2.js → KvSimpleMap.script.js} +0 -0
  188. /package/dist/vue/{KvStackedBarGraph2.js → KvStackedBarGraph.script.js} +0 -0
  189. /package/dist/vue/{KvSwitch2.js → KvSwitch.script.js} +0 -0
  190. /package/dist/vue/{KvTab2.js → KvTab.script.js} +0 -0
  191. /package/dist/vue/{KvTabPanel2.js → KvTabPanel.script.js} +0 -0
  192. /package/dist/vue/{KvTabs2.js → KvTabs.script.js} +0 -0
  193. /package/dist/vue/{KvTextInput2.js → KvTextInput.script.js} +0 -0
  194. /package/dist/vue/{KvTextLink2.js → KvTextLink.script.js} +0 -0
  195. /package/dist/vue/{KvThemeProvider2.js → KvThemeProvider.script.js} +0 -0
  196. /package/dist/vue/{KvToast2.js → KvToast.script.js} +0 -0
  197. /package/dist/vue/{KvTooltip2.js → KvTooltip.script.js} +0 -0
  198. /package/dist/vue/{KvTreeMapChart2.js → KvTreeMapChart.script.js} +0 -0
  199. /package/dist/vue/{KvUserAvatar2.js → KvUserAvatar.script.js} +0 -0
  200. /package/dist/vue/{KvUtilityMenu2.js → KvUtilityMenu.script.js} +0 -0
  201. /package/dist/vue/{KvVerticalCarousel2.js → KvVerticalCarousel.script.js} +0 -0
  202. /package/dist/vue/{KvVotingCard2.js → KvVotingCard.script.js} +0 -0
  203. /package/dist/vue/{KvVotingCardV22.js → KvVotingCardV2.script.js} +0 -0
  204. /package/dist/vue/KvWwwHeader/{KvHeaderAboutMenu2.js → KvHeaderAboutMenu.script.js} +0 -0
  205. /package/dist/vue/KvWwwHeader/{KvHeaderDropdownLink2.js → KvHeaderDropdownLink.script.js} +0 -0
  206. /package/dist/vue/KvWwwHeader/{KvHeaderLinkBar2.js → KvHeaderLinkBar.script.js} +0 -0
  207. /package/dist/vue/KvWwwHeader/{KvHeaderLogo2.js → KvHeaderLogo.script.js} +0 -0
  208. /package/dist/vue/KvWwwHeader/{KvHeaderMobileMenu2.js → KvHeaderMobileMenu.script.js} +0 -0
  209. /package/dist/vue/KvWwwHeader/{KvHeaderMyKivaMenu2.js → KvHeaderMyKivaMenu.script.js} +0 -0
  210. /package/dist/vue/KvWwwHeader/{KvHeaderTakeActionMenu2.js → KvHeaderTakeActionMenu.script.js} +0 -0
  211. /package/dist/vue/KvWwwHeader/LendMenu/{KvLendListMenu2.js → KvLendListMenu.script.js} +0 -0
  212. /package/dist/vue/KvWwwHeader/LendMenu/{KvLendMegaMenu2.js → KvLendMegaMenu.script.js} +0 -0
  213. /package/dist/vue/KvWwwHeader/LendMenu/{KvLendMenu2.js → KvLendMenu.script.js} +0 -0
  214. /package/dist/vue/KvWwwHeader/LendMenu/{KvLendMenuCountryList2.js → KvLendMenuCountryList.script.js} +0 -0
  215. /package/dist/vue/KvWwwHeader/LendMenu/{KvLendMenuSearchList2.js → KvLendMenuSearchList.script.js} +0 -0
  216. /package/dist/vue/{KvWwwHeader2.js → KvWwwHeader.script.js} +0 -0
  217. /package/dist/vue/KvWwwHeaderBasic/{AboutMenu2.js → AboutMenu.script.js} +0 -0
  218. /package/dist/vue/KvWwwHeaderBasic/{HeaderMenuGroup2.js → HeaderMenuGroup.script.js} +0 -0
  219. /package/dist/vue/KvWwwHeaderBasic/{KvWwwHeaderBasic2.js → KvWwwHeaderBasic.script.js} +0 -0
  220. /package/dist/vue/KvWwwHeaderBasic/{LinkBar2.js → LinkBar.script.js} +0 -0
  221. /package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/{CategoriesPanel2.js → CategoriesPanel.script.js} +0 -0
  222. /package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/{MobileLendMenu2.js → MobileLendMenu.script.js} +0 -0
  223. /package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/{MyKivaPanel2.js → MyKivaPanel.script.js} +0 -0
  224. /package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/{RegionsPanel2.js → RegionsPanel.script.js} +0 -0
  225. /package/dist/vue/KvWwwHeaderBasic/MobileLendMenu/{SearchPanel2.js → SearchPanel.script.js} +0 -0
  226. /package/dist/vue/KvWwwHeaderBasic/{MobileMenu2.js → MobileMenu.script.js} +0 -0
  227. /package/dist/vue/KvWwwHeaderBasic/{MyKivaMenu2.js → MyKivaMenu.script.js} +0 -0
  228. /package/dist/vue/KvWwwHeaderBasic/{SearchBar2.js → SearchBar.script.js} +0 -0
@@ -0,0 +1,391 @@
1
+ import u from "graphql-tag";
2
+ import { mdiChevronRight as d } from "@mdi/js";
3
+ import { throttle as h } from "../utils/throttle.js";
4
+ import { getLendCtaSelectedOption as o, getDropdownPriceArray as l } from "../utils/loanUtils.js";
5
+ import c from "./KvLendAmountButton.js";
6
+ import p from "./KvSelect.js";
7
+ import m from "./KvButton.js";
8
+ import f from "./KvMaterialIcon.js";
9
+ const n = "Other", v = 360, r = 480, a = 380, O = u`
10
+ fragment KvLendCta on LoanBasic {
11
+ id
12
+ name
13
+ status
14
+ minNoteSize
15
+ }
16
+ `, b = u`
17
+ fragment KvLendCtaUser on LoanBasic {
18
+ id
19
+ userProperties {
20
+ lentTo
21
+ }
22
+ }
23
+ `, D = {
24
+ name: "KvLendCta",
25
+ components: {
26
+ KvLendAmountButton: c,
27
+ KvUiButton: m,
28
+ KvUiSelect: p,
29
+ KvMaterialIcon: f
30
+ },
31
+ props: {
32
+ loan: {
33
+ type: Object,
34
+ default: () => ({})
35
+ },
36
+ unreservedAmount: {
37
+ type: String,
38
+ default: ""
39
+ },
40
+ basketItems: {
41
+ type: Array,
42
+ default: () => []
43
+ },
44
+ isLoading: {
45
+ type: Boolean,
46
+ default: !0
47
+ },
48
+ isAdding: {
49
+ type: Boolean,
50
+ default: !1
51
+ },
52
+ enableFiveDollarsNotes: {
53
+ type: Boolean,
54
+ default: !1
55
+ },
56
+ kvTrackFunction: {
57
+ type: Function,
58
+ required: !0
59
+ },
60
+ showViewLoan: {
61
+ type: Boolean,
62
+ default: !1
63
+ },
64
+ customLoanDetails: {
65
+ type: Boolean,
66
+ default: !1
67
+ },
68
+ externalLinks: {
69
+ type: Boolean,
70
+ default: !1
71
+ },
72
+ route: {
73
+ type: Object,
74
+ default: void 0
75
+ },
76
+ userBalance: {
77
+ type: String,
78
+ default: void 0
79
+ },
80
+ getCookie: {
81
+ type: Function,
82
+ default: void 0
83
+ },
84
+ setCookie: {
85
+ type: Function,
86
+ default: void 0
87
+ },
88
+ fiveDollarsSelected: {
89
+ type: Boolean,
90
+ default: !1
91
+ },
92
+ isVisitor: {
93
+ type: Boolean,
94
+ default: !0
95
+ },
96
+ primaryButtonText: {
97
+ type: String,
98
+ default: "Lend"
99
+ },
100
+ secondaryButtonText: {
101
+ type: String,
102
+ default: void 0
103
+ },
104
+ secondaryButtonHandler: {
105
+ type: Function,
106
+ default: void 0
107
+ },
108
+ /**
109
+ * Hide preset buttons under this amount when
110
+ * showPresetAmounts is true
111
+ * */
112
+ maxAmount: {
113
+ type: String,
114
+ default: ""
115
+ },
116
+ showPresetAmounts: {
117
+ type: Boolean,
118
+ default: !1
119
+ },
120
+ kvTrackCategory: {
121
+ type: String,
122
+ default: "Lending"
123
+ },
124
+ /**
125
+ * Breakpoint for narrow desktop layout (default: 480px)
126
+ * When component width is below this, it will use stacked layout even on desktop
127
+ */
128
+ narrowSidebarBreakpoint: {
129
+ type: Number,
130
+ default: r
131
+ },
132
+ /**
133
+ * Breakpoint for narrow desktop dropdown layout (default: 380px)
134
+ * When component width is below this in narrow desktop mode, dropdown moves to second row
135
+ */
136
+ narrowSidebarDropdownBreakpoint: {
137
+ type: Number,
138
+ default: a
139
+ }
140
+ },
141
+ emits: [
142
+ "show-loan-details",
143
+ "add-to-basket"
144
+ ],
145
+ data() {
146
+ var t, e;
147
+ return {
148
+ mdiChevronRight: d,
149
+ defaultAmountOptions: [25, 50, 75],
150
+ selectedOption: o(
151
+ this.getCookie,
152
+ this.setCookie,
153
+ this.enableFiveDollarsNotes,
154
+ (e = (t = this.route) == null ? void 0 : t.query) == null ? void 0 : e.utm_campaign,
155
+ this.unreservedAmount,
156
+ this.userBalance ? parseFloat(this.userBalance) : void 0,
157
+ this.fiveDollarsSelected
158
+ ),
159
+ selectedDropdownOption: n,
160
+ OTHER_OPTION: n,
161
+ // SSR-safe viewport width initialization
162
+ viewportWidth: typeof window < "u" ? window.innerWidth : 1024,
163
+ componentWidth: 1024,
164
+ resizeObserver: null,
165
+ MOBILE_DROPDOWN_BREAKPOINT: v,
166
+ NARROW_SIDEBAR_BREAKPOINT: r,
167
+ NARROW_SIDEBAR_DROPDOWN_BREAKPOINT: a
168
+ };
169
+ },
170
+ computed: {
171
+ readMorePath() {
172
+ return this.customLoanDetails ? "" : `/lend/${this.loanId}`;
173
+ },
174
+ loanId() {
175
+ var t;
176
+ return (t = this.loan) == null ? void 0 : t.id;
177
+ },
178
+ status() {
179
+ var t;
180
+ return ((t = this.loan) == null ? void 0 : t.status) ?? "";
181
+ },
182
+ minNoteSize() {
183
+ var t;
184
+ return ((t = this.loan) == null ? void 0 : t.minNoteSize) ?? "";
185
+ },
186
+ lentPreviously() {
187
+ var t, e;
188
+ return ((e = (t = this.loan) == null ? void 0 : t.userProperties) == null ? void 0 : e.lentTo) ?? !1;
189
+ },
190
+ isInBasket() {
191
+ var t;
192
+ return ((t = this.basketItems) == null ? void 0 : t.some((e) => e.__typename === "LoanReservation" && e.id === this.loanId)) ?? !1;
193
+ },
194
+ prices() {
195
+ const t = parseFloat(this.unreservedAmount < 25 ? this.minNoteSize : 25), e = l(
196
+ this.unreservedAmount,
197
+ this.isCompleteLoanActive,
198
+ t,
199
+ this.enableFiveDollarsNotes,
200
+ this.isVisitor
201
+ );
202
+ return this.maxAmount ? e.filter((s) => parseFloat(s) <= parseFloat(this.maxAmount)) : e;
203
+ },
204
+ presetButtonsPrices() {
205
+ const t = this.prices.slice(0, 3);
206
+ return this.prices.length === 4 && t.push(this.prices[3]), t;
207
+ },
208
+ presetDropdownPrices() {
209
+ if (this.prices.length === 4)
210
+ return [];
211
+ const t = this.prices.slice(this.defaultAmountOptions.length);
212
+ return t.unshift(n), t;
213
+ },
214
+ loanName() {
215
+ var t;
216
+ return ((t = this.loan) == null ? void 0 : t.name) ?? "";
217
+ },
218
+ presetAmountCtaButtonText() {
219
+ var t;
220
+ return ((t = this.loan) == null ? void 0 : t.borrowerCount) > 1 ? "Support" : `Support ${this.loanName}`;
221
+ },
222
+ defaultCtaButtonText() {
223
+ return this.showPresetAmounts ? this.presetAmountCtaButtonText : this.primaryButtonText || "Lend";
224
+ },
225
+ ctaButtonText() {
226
+ switch (this.state) {
227
+ case "loading":
228
+ return "Loading...";
229
+ case "refunded":
230
+ case "expired":
231
+ default:
232
+ return this.defaultCtaButtonText;
233
+ }
234
+ },
235
+ loanInBasketButtonText() {
236
+ return this.secondaryButtonText ? this.secondaryButtonText : this.showPresetAmounts ? "Continue to basket" : "Checkout now";
237
+ },
238
+ useFormSubmit() {
239
+ return !!(this.hideShowLendDropdown || this.lendButtonVisibility || this.showLendAgain || this.state === "lent-to" || this.isAdding);
240
+ },
241
+ state() {
242
+ return this.isLoading ? "loading" : this.isAdding ? "adding" : this.isInBasket ? "basketed" : this.status === "funded" || this.status === "refunded" || this.status === "expired" ? this.status : this.allSharesReserved ? "fully-reserved" : this.lentPreviously ? "lent-to" : "lend";
243
+ },
244
+ lendButtonVisibility() {
245
+ return this.state === "lend" || this.state === "loading";
246
+ },
247
+ showNonActionableLoanButton() {
248
+ return this.state === "refunded" || this.state === "expired";
249
+ },
250
+ hideShowLendDropdown() {
251
+ return this.state === "lend" || this.state === "lent-to";
252
+ },
253
+ allSharesReserved() {
254
+ return parseFloat(this.unreservedAmount) === 0;
255
+ },
256
+ isLessThan25() {
257
+ return this.enableFiveDollarsNotes ? !1 : this.isAmountLessThan25(this.unreservedAmount);
258
+ },
259
+ isLentTo() {
260
+ return this.state === "lent-to";
261
+ },
262
+ isCompleteLoanActive() {
263
+ return this.isAmountLessThan25(this.unreservedAmount) || this.isAmountBetween25And500(this.unreservedAmount);
264
+ },
265
+ isLendAmountButton() {
266
+ const t = this.maxAmount ? this.maxAmount : this.unreservedAmount;
267
+ return (this.lendButtonVisibility || this.state === "lent-to") && this.isAmountLessThan25(t) || this.showPresetAmounts && this.presetButtonsPrices.length === 1 && !this.isAdding;
268
+ },
269
+ isFunded() {
270
+ return this.state === "funded" || this.state === "fully-reserved";
271
+ },
272
+ amountToLend() {
273
+ return this.selectedDropdown ? this.selectedDropdownOption : this.isLessThan25 ? this.unreservedAmount : this.selectedOption;
274
+ },
275
+ amountForLendAmountButton() {
276
+ return this.maxAmount && parseFloat(this.maxAmount) === 25 ? Math.min(parseFloat(this.maxAmount), parseFloat(this.unreservedAmount)) : this.unreservedAmount;
277
+ },
278
+ showLendAgain() {
279
+ return this.isLentTo && !this.isLessThan25;
280
+ },
281
+ selectedDropdown() {
282
+ return this.selectedDropdownOption !== n;
283
+ },
284
+ showFilteredDropdown() {
285
+ return this.presetDropdownPrices.length > 1;
286
+ },
287
+ hideLendButton() {
288
+ return this.showPresetAmounts && (this.isAdding || this.presetButtonsPrices.length === 1);
289
+ },
290
+ /**
291
+ * Determines if component should use narrow desktop layout
292
+ * This is true when we're in desktop viewport but component width is narrow
293
+ */
294
+ isNarrowDesktop() {
295
+ return this.viewportWidth >= 768 && this.componentWidth < this.narrowSidebarBreakpoint;
296
+ }
297
+ },
298
+ watch: {
299
+ unreservedAmount(t, e) {
300
+ var s, i;
301
+ t !== e && e === "" && (this.selectedOption = o(
302
+ this.getCookie,
303
+ this.setCookie,
304
+ this.enableFiveDollarsNotes,
305
+ (i = (s = this.route) == null ? void 0 : s.query) == null ? void 0 : i.utm_campaign,
306
+ t,
307
+ this.userBalance ? parseFloat(this.userBalance) : void 0,
308
+ this.fiveDollarsSelected
309
+ )), this.showPresetAmounts && (this.selectedOption = n);
310
+ }
311
+ },
312
+ mounted() {
313
+ const t = () => {
314
+ var e;
315
+ this.viewportWidth = window.innerWidth, this.componentWidth = ((e = this.$refs.root) == null ? void 0 : e.offsetWidth) || 1024;
316
+ };
317
+ typeof window < "u" && (this.viewportWidth = window.innerWidth, window.ResizeObserver && this.$nextTick(() => {
318
+ this.resizeObserver = new window.ResizeObserver(h(t, 50)), this.$refs.root && (this.resizeObserver.observe(this.$refs.root), t());
319
+ }));
320
+ },
321
+ beforeUnmount() {
322
+ this.resizeHandler && typeof window < "u" && window.removeEventListener("resize", this.resizeHandler), this.resizeObserver && this.$refs.root && this.resizeObserver.disconnect();
323
+ },
324
+ methods: {
325
+ async addToBasket() {
326
+ this.kvTrackFunction(
327
+ this.kvTrackCategory,
328
+ "Add to basket",
329
+ this.showLendAgain ? "Lend again" : "lend-button-click",
330
+ this.loanId,
331
+ this.amountToLend
332
+ ), this.$emit("add-to-basket", this.amountToLend);
333
+ },
334
+ isAmountLessThan25(t) {
335
+ return t < 25 && t > 0;
336
+ },
337
+ isAmountBetween25And50(t) {
338
+ return t <= 50 && t > 25;
339
+ },
340
+ isAmountBetween25And500(t) {
341
+ return t < 500 && t >= 25;
342
+ },
343
+ trackLendAmountSelection(t) {
344
+ this.showPresetAmounts && (this.selectedOption = null), this.kvTrackFunction(
345
+ this.kvTrackCategory,
346
+ "Modify lend amount",
347
+ t,
348
+ this.loanId,
349
+ this.loanId
350
+ );
351
+ },
352
+ clickDropdown() {
353
+ this.kvTrackFunction(
354
+ this.kvTrackCategory,
355
+ "click-Modify loan amount",
356
+ "open dialog",
357
+ this.loanId,
358
+ this.loanId
359
+ );
360
+ },
361
+ clickSecondaryButton(t) {
362
+ this.secondaryButtonHandler ? (t.preventDefault(), t.stopPropagation(), this.secondaryButtonHandler()) : this.handleCheckout();
363
+ },
364
+ clickPresetButton(t) {
365
+ this.kvTrackFunction(
366
+ this.kvTrackCategory,
367
+ "Modify lend amount",
368
+ t,
369
+ this.loanId,
370
+ this.loanId
371
+ ), this.selectedOption = t, this.selectedDropdownOption = n;
372
+ },
373
+ handleCheckout() {
374
+ this.kvTrackFunction(
375
+ this.kvTrackCategory,
376
+ "click-Continue-to-checkout",
377
+ "Continue to checkout",
378
+ this.loanId,
379
+ this.loanId
380
+ );
381
+ },
382
+ isNarrowComponent() {
383
+ return this.componentWidth < 430;
384
+ }
385
+ }
386
+ };
387
+ export {
388
+ O as KV_LEND_CTA_FRAGMENT,
389
+ b as KV_LEND_CTA_USER_FRAGMENT,
390
+ D as default
391
+ };
@@ -1,5 +1,5 @@
1
- import v from "./KvLightbox2.js";
2
- import { resolveComponent as f, openBlock as n, createBlock as x, Transition as b, withCtx as u, withDirectives as h, createElementVNode as o, withModifiers as w, createElementBlock as r, createCommentVNode as s, normalizeClass as c, renderSlot as d, toDisplayString as k, createVNode as y, vShow as g } from "vue";
1
+ import v from "./KvLightbox.script.js";
2
+ import { resolveComponent as f, openBlock as n, createBlock as x, Transition as b, withCtx as u, withDirectives as h, createElementVNode as o, withModifiers as s, createElementBlock as w, createCommentVNode as r, normalizeClass as d, renderSlot as c, toDisplayString as k, createVNode as y, vShow as g } from "vue";
3
3
  import C from "../_virtual/_plugin-vue_export-helper.js";
4
4
  const _ = ["aria-label", "aria-describedby", "role"], p = { class: "tw-flex tw-p-2.5 md:tw-px-4 md:tw-pt-4 md:tw-pb-3.5" }, B = { class: "tw-flex-grow" }, S = { class: "tw-flex-1" }, L = {
5
5
  id: "kvLightboxBody",
@@ -23,16 +23,16 @@ function V(i, e, t, l, j, z) {
23
23
  default: u(() => [
24
24
  h(o("div", {
25
25
  class: "tw-z-modal tw-fixed tw-inset-0 tw-bg-black tw-bg-opacity-[75%]",
26
- onClick: e[3] || (e[3] = w((...a) => l.onScreenClick && l.onScreenClick(...a), ["stop", "prevent"]))
26
+ onClick: e[3] || (e[3] = s((...a) => l.onScreenClick && l.onScreenClick(...a), ["stop", "prevent"]))
27
27
  }, [
28
28
  o("div", null, [
29
- t.blurBackground ? (n(), r("div", {
29
+ t.blurBackground ? (n(), w("div", {
30
30
  key: 0,
31
31
  class: "tw-fixed tw-inset-0 tw-w-full tw-h-full tw-backdrop-blur-sm",
32
- onClick: e[0] || (e[0] = w((...a) => l.onScreenClick && l.onScreenClick(...a), ["stop", "prevent"]))
33
- })) : s("", !0),
32
+ onClick: e[0] || (e[0] = s((...a) => l.onScreenClick && l.onScreenClick(...a), ["stop", "prevent"]))
33
+ })) : r("", !0),
34
34
  o("div", {
35
- class: c(["tw-flex tw-absolute tw-inset-0", {
35
+ class: d(["tw-flex tw-absolute tw-inset-0", {
36
36
  "md:tw-px-2": t.variant === "lightbox",
37
37
  "tw-px-2": t.variant === "alert"
38
38
  }])
@@ -41,7 +41,7 @@ function V(i, e, t, l, j, z) {
41
41
  ref: "kvLightbox",
42
42
  tabindex: "-1",
43
43
  "data-test": "kv-lightbox",
44
- class: c(["tw-bg-primary tw-flex tw-flex-col tw-mx-auto md:tw-my-auto", {
44
+ class: d(["tw-bg-primary tw-flex tw-flex-col tw-mx-auto md:tw-my-auto", {
45
45
  "tw-w-full md:tw-w-auto": t.variant === "lightbox",
46
46
  "tw-mt-auto md:tw-my-auto": t.variant === "lightbox",
47
47
  "tw-min-h-half-screen md:tw-min-h-0": t.variant === "lightbox",
@@ -53,33 +53,33 @@ function V(i, e, t, l, j, z) {
53
53
  "aria-label": t.title ? t.title : null,
54
54
  "aria-describedby": t.variant === "alert" ? "kvLightboxBody" : null,
55
55
  role: l.role,
56
- onClick: e[2] || (e[2] = w(() => {
56
+ onClick: e[2] || (e[2] = s(() => {
57
57
  }, ["stop"]))
58
58
  }, [
59
59
  o("div", p, [
60
60
  o("div", B, [
61
- d(i.$slots, "header", {}, () => [
61
+ c(i.$slots, "header", {}, () => [
62
62
  o("h2", S, k(t.title), 1)
63
63
  ])
64
64
  ]),
65
- t.preventClose ? s("", !0) : (n(), r("button", {
65
+ t.preventClose ? r("", !0) : (n(), w("button", {
66
66
  key: 0,
67
- class: "tw-grid tw-content-center tw-justify-center tw-ml-auto tw-w-6 tw-h-6 tw--m-2 hover:tw-text-action-highlight",
68
- onClick: e[1] || (e[1] = w((a) => l.hide("close-x"), ["stop"]))
67
+ class: d(["tw-grid tw-content-center tw-justify-center tw-ml-auto tw-w-6 tw-h-6 tw--m-2 hover:tw-text-action-highlight", l.closeButtonClasses]),
68
+ onClick: e[1] || (e[1] = s((a) => l.hide("close-x"), ["stop"]))
69
69
  }, [
70
70
  y(m, {
71
71
  class: "tw-w-3 tw-h-3",
72
72
  icon: l.mdiClose
73
73
  }, null, 8, ["icon"]),
74
74
  e[4] || (e[4] = o("span", { class: "tw-sr-only" }, "Close", -1))
75
- ]))
75
+ ], 2))
76
76
  ]),
77
77
  o("div", L, [
78
- d(i.$slots, "default")
78
+ c(i.$slots, "default")
79
79
  ], 512),
80
- i.$slots.controls ? (n(), r("div", N, [
81
- d(i.$slots, "controls")
82
- ], 512)) : s("", !0)
80
+ i.$slots.controls ? (n(), w("div", N, [
81
+ c(i.$slots, "controls")
82
+ ], 512)) : r("", !0)
83
83
  ], 10, _)
84
84
  ], 2)
85
85
  ])
@@ -0,0 +1,147 @@
1
+ import { toRefs as L, ref as o, nextTick as b, computed as p, watch as T, onMounted as P, onBeforeUnmount as q } from "vue";
2
+ import { mdiClose as I } from "@mdi/js";
3
+ import { useFocusTrap as K } from "@vueuse/integrations/useFocusTrap";
4
+ import { hideOthers as M } from "../vendor/aria-hidden/dist/es2015/index.js";
5
+ import { lockScroll as O, unlockScroll as R } from "../utils/scrollLock.js";
6
+ import { lockPrintSingleEl as U, unlockPrintSingleEl as _ } from "../utils/printing.js";
7
+ import N from "./KvMaterialIcon.js";
8
+ const Q = {
9
+ components: {
10
+ KvMaterialIcon: N
11
+ },
12
+ props: {
13
+ /**
14
+ * Whether to apply a blur to the background behind the lightbox
15
+ */
16
+ blurBackground: {
17
+ type: Boolean,
18
+ default: !1
19
+ },
20
+ /**
21
+ * Whether the dialog is open or not
22
+ * */
23
+ visible: {
24
+ type: Boolean,
25
+ default: !1
26
+ },
27
+ /**
28
+ * Appearance and role of the lightbox
29
+ * @values lightbox, alert
30
+ * */
31
+ variant: {
32
+ type: String,
33
+ default: "lightbox",
34
+ validator(f) {
35
+ return ["lightbox", "alert"].includes(f);
36
+ }
37
+ },
38
+ /**
39
+ * The title of the dialog which describes the dialog to screenreaders, and if no
40
+ * content is in the `header` slot, will be displayed at the top of the lightbox.
41
+ * */
42
+ title: {
43
+ type: String,
44
+ required: !0
45
+ },
46
+ /**
47
+ * The dialog has no close X button, clicking the screen does not close,
48
+ * pressing ESC does not close.
49
+ * */
50
+ preventClose: {
51
+ type: Boolean,
52
+ default: !1
53
+ },
54
+ /**
55
+ * Clicking the screen behind the dialog does not close it. The close X button and
56
+ * pressing ESC still close it.
57
+ * */
58
+ preventBackgroundClose: {
59
+ type: Boolean,
60
+ default: !1
61
+ },
62
+ /**
63
+ * Milliseconds to keep the close X button hidden each time the dialog opens, after
64
+ * which it fades in. Pressing ESC still closes the dialog during the delay.
65
+ * */
66
+ closeButtonShowDelay: {
67
+ type: Number,
68
+ default: 0
69
+ }
70
+ },
71
+ emits: [
72
+ "lightbox-closed"
73
+ ],
74
+ setup(f, { emit: C }) {
75
+ const {
76
+ visible: n,
77
+ variant: m,
78
+ preventClose: y,
79
+ preventBackgroundClose: w,
80
+ closeButtonShowDelay: k
81
+ } = L(f), u = o(null), t = o(null), g = o(null), r = o(null), i = o(null);
82
+ b(() => {
83
+ const {
84
+ activate: e,
85
+ deactivate: l
86
+ } = K([
87
+ u.value,
88
+ // This lightbox
89
+ '[role="alert"]'
90
+ // Any open toasts/alerts on the page
91
+ ], {
92
+ allowOutsideClick: !0
93
+ // allow clicking outside the lightbox to close it
94
+ });
95
+ r.value = e, i.value = l;
96
+ });
97
+ let s = null, c = null, h = null;
98
+ const v = o(!1), B = p(() => k.value > 0), S = p(() => B.value ? [
99
+ "tw-transition-opacity tw-duration-500 motion-reduce:tw-transition-none",
100
+ { "tw-invisible tw-opacity-0": !v.value }
101
+ ] : null), x = () => {
102
+ if (!B.value) {
103
+ v.value = !0;
104
+ return;
105
+ }
106
+ v.value = !1, h = setTimeout(() => {
107
+ v.value = !0;
108
+ }, k.value);
109
+ }, E = p(() => m.value === "alert" ? "alertdialog" : "dialog"), a = (e = "") => {
110
+ var l;
111
+ clearTimeout(h), u.value && t.value && ((l = i.value) == null || l.call(i), t.value.scrollTop = 0, _(t.value)), R(), s && (s(), s = null), document.removeEventListener("keyup", c), n.value && C("lightbox-closed", { type: e });
112
+ };
113
+ c = (e) => {
114
+ e && e.key === "Escape" && !y.value && a();
115
+ };
116
+ const D = () => {
117
+ y.value || w.value || a("background-click");
118
+ }, d = () => {
119
+ n.value && (x(), document.addEventListener("keyup", c), b(() => {
120
+ var e;
121
+ if (u.value && t.value && ((e = r.value) == null || e.call(r), s = M(u.value), U(t.value)), O(), m.value === "alert") {
122
+ const l = g.value.querySelector("button");
123
+ l && l.focus();
124
+ }
125
+ }));
126
+ };
127
+ return T(n, () => {
128
+ n.value ? d() : a();
129
+ }), P(() => {
130
+ n.value && d();
131
+ }), q(() => a()), {
132
+ mdiClose: I,
133
+ role: E,
134
+ kvLightbox: u,
135
+ kvLightboxBody: t,
136
+ onKeyUp: c,
137
+ onScreenClick: D,
138
+ hide: a,
139
+ show: d,
140
+ controlsRef: g,
141
+ closeButtonClasses: S
142
+ };
143
+ }
144
+ };
145
+ export {
146
+ Q as default
147
+ };
@@ -20,6 +20,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
20
20
  type: BooleanConstructor;
21
21
  default: boolean;
22
22
  };
23
+ preventBackgroundClose: {
24
+ type: BooleanConstructor;
25
+ default: boolean;
26
+ };
27
+ closeButtonShowDelay: {
28
+ type: NumberConstructor;
29
+ default: number;
30
+ };
23
31
  }>, {
24
32
  mdiClose: string;
25
33
  role: import('vue').ComputedRef<"alertdialog" | "dialog">;
@@ -30,6 +38,9 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
30
38
  hide: (closedBy?: string) => void;
31
39
  show: () => void;
32
40
  controlsRef: import('vue').Ref<any, any>;
41
+ closeButtonClasses: import('vue').ComputedRef<(string | {
42
+ 'tw-invisible tw-opacity-0': boolean;
43
+ })[]>;
33
44
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, "lightbox-closed"[], "lightbox-closed", import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
34
45
  blurBackground: {
35
46
  type: BooleanConstructor;
@@ -52,6 +63,14 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
52
63
  type: BooleanConstructor;
53
64
  default: boolean;
54
65
  };
66
+ preventBackgroundClose: {
67
+ type: BooleanConstructor;
68
+ default: boolean;
69
+ };
70
+ closeButtonShowDelay: {
71
+ type: NumberConstructor;
72
+ default: number;
73
+ };
55
74
  }>> & Readonly<{
56
75
  "onLightbox-closed"?: (...args: any[]) => any;
57
76
  }>, {
@@ -59,6 +78,8 @@ declare const _default: import('vue').DefineComponent<import('vue').ExtractPropT
59
78
  visible: boolean;
60
79
  preventClose: boolean;
61
80
  blurBackground: boolean;
81
+ preventBackgroundClose: boolean;
82
+ closeButtonShowDelay: number;
62
83
  }, {}, {
63
84
  KvMaterialIcon: import('vue').DefineComponent<import('vue').ExtractPropTypes<{
64
85
  icon: {
@@ -1,4 +1,4 @@
1
- import u from "./KvLineGraph2.js";
1
+ import u from "./KvLineGraph.script.js";
2
2
  import { openBlock as e, createElementBlock as a, createElementVNode as o, normalizeStyle as r, Fragment as s, renderList as w, toDisplayString as i, createCommentVNode as c, normalizeClass as m } from "vue";
3
3
  import d from "../_virtual/_plugin-vue_export-helper.js";
4
4
  const f = { class: "tw-h-full tw-w-full tw-p-2.5" };
@@ -1,4 +1,4 @@
1
- import r from "./KvLoadingSpinner2.js";
1
+ import r from "./KvLoadingSpinner.script.js";
2
2
  import { openBlock as a, createElementBlock as i, normalizeClass as o, createStaticVNode as c } from "vue";
3
3
  import l from "../_virtual/_plugin-vue_export-helper.js";
4
4
  function n(w, e, t, s, d, f) {