@adyen/bento-vue2 1.26.0 → 1.27.0

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 (203) hide show
  1. package/dist/@types/components.d.ts +4 -0
  2. package/dist/@types/index.d.ts +513 -136
  3. package/dist/accordion.js +2 -2
  4. package/dist/action-bar.js +61 -146
  5. package/dist/action-bar.js.map +1 -1
  6. package/dist/alert.js +3 -3
  7. package/dist/assets/base-modal.css +1 -1
  8. package/dist/assets/button-actions.css +1 -1
  9. package/dist/assets/button.css +1 -1
  10. package/dist/assets/dialog-page.css +1 -1
  11. package/dist/assets/dropdown.css +1 -1
  12. package/dist/assets/index.css +1 -1
  13. package/dist/assets/index10.css +1 -1
  14. package/dist/assets/index11.css +1 -1
  15. package/dist/assets/index12.css +1 -1
  16. package/dist/assets/index13.css +1 -1
  17. package/dist/assets/index14.css +1 -1
  18. package/dist/assets/index15.css +1 -1
  19. package/dist/assets/index16.css +1 -1
  20. package/dist/assets/index17.css +1 -1
  21. package/dist/assets/index18.css +1 -1
  22. package/dist/assets/index19.css +1 -1
  23. package/dist/assets/index2.css +1 -1
  24. package/dist/assets/index20.css +1 -1
  25. package/dist/assets/index21.css +1 -1
  26. package/dist/assets/index22.css +1 -1
  27. package/dist/assets/index23.css +1 -1
  28. package/dist/assets/index24.css +1 -1
  29. package/dist/assets/index25.css +1 -1
  30. package/dist/assets/index26.css +1 -1
  31. package/dist/assets/index27.css +1 -1
  32. package/dist/assets/index28.css +1 -1
  33. package/dist/assets/index29.css +1 -1
  34. package/dist/assets/index3.css +1 -1
  35. package/dist/assets/index30.css +1 -1
  36. package/dist/assets/index31.css +1 -1
  37. package/dist/assets/index32.css +1 -1
  38. package/dist/assets/index33.css +1 -1
  39. package/dist/assets/index34.css +1 -1
  40. package/dist/assets/index35.css +1 -1
  41. package/dist/assets/index36.css +1 -1
  42. package/dist/assets/index37.css +1 -1
  43. package/dist/assets/index38.css +1 -1
  44. package/dist/assets/index39.css +1 -1
  45. package/dist/assets/index4.css +1 -1
  46. package/dist/assets/index40.css +1 -1
  47. package/dist/assets/index41.css +1 -1
  48. package/dist/assets/index42.css +1 -1
  49. package/dist/assets/index43.css +1 -1
  50. package/dist/assets/index44.css +1 -1
  51. package/dist/assets/index45.css +1 -1
  52. package/dist/assets/index46.css +1 -1
  53. package/dist/assets/index47.css +1 -1
  54. package/dist/assets/index48.css +1 -1
  55. package/dist/assets/index49.css +1 -0
  56. package/dist/assets/index5.css +1 -1
  57. package/dist/assets/index6.css +1 -1
  58. package/dist/assets/index7.css +1 -1
  59. package/dist/assets/index8.css +1 -1
  60. package/dist/assets/index9.css +1 -1
  61. package/dist/assets/use-cached-selected-values.css +1 -1
  62. package/dist/avatar-image.js +1 -1
  63. package/dist/badge.js +1 -1
  64. package/dist/button.js +5 -5
  65. package/dist/card.js +3 -3
  66. package/dist/checkbox.js +5 -5
  67. package/dist/chunks/{base-button.ad74b6f8.js → base-button.852204dc.js} +2 -2
  68. package/dist/chunks/{base-button.ad74b6f8.js.map → base-button.852204dc.js.map} +1 -1
  69. package/dist/chunks/{base-modal.1fff7abe.js → base-modal.4fb7528b.js} +6 -6
  70. package/dist/chunks/{base-modal.1fff7abe.js.map → base-modal.4fb7528b.js.map} +1 -1
  71. package/dist/chunks/{button-actions-with-menu.e845d77a.js → button-actions-with-menu.bf968959.js} +4 -4
  72. package/dist/chunks/{button-actions-with-menu.e845d77a.js.map → button-actions-with-menu.bf968959.js.map} +1 -1
  73. package/dist/chunks/{button-actions.81db18e8.js → button-actions.87e589e3.js} +31 -29
  74. package/dist/chunks/button-actions.87e589e3.js.map +1 -0
  75. package/dist/chunks/button.cb90b55c.js +101 -0
  76. package/dist/chunks/button.cb90b55c.js.map +1 -0
  77. package/dist/chunks/{calendar.640b8d25.js → calendar.f02e0a5a.js} +5 -5
  78. package/dist/chunks/{calendar.640b8d25.js.map → calendar.f02e0a5a.js.map} +1 -1
  79. package/dist/chunks/{checkbox.bfed007c.js → checkbox.9f9c978a.js} +3 -3
  80. package/dist/chunks/{checkbox.bfed007c.js.map → checkbox.9f9c978a.js.map} +1 -1
  81. package/dist/chunks/{controls-group.4fb50009.js → controls-group.121a307d.js} +3 -3
  82. package/dist/chunks/{controls-group.4fb50009.js.map → controls-group.121a307d.js.map} +1 -1
  83. package/dist/chunks/{copy.f85700c6.js → copy.6808b2dc.js} +4 -4
  84. package/dist/chunks/{copy.f85700c6.js.map → copy.6808b2dc.js.map} +1 -1
  85. package/dist/chunks/{dialog-page.73da22cf.js → dialog-page.7fd7d006.js} +3 -3
  86. package/dist/chunks/{dialog-page.73da22cf.js.map → dialog-page.7fd7d006.js.map} +1 -1
  87. package/dist/chunks/{dropdown-default-textbox.54ca1b18.js → dropdown-default-textbox.d0f17d96.js} +3 -3
  88. package/dist/chunks/{dropdown-default-textbox.54ca1b18.js.map → dropdown-default-textbox.d0f17d96.js.map} +1 -1
  89. package/dist/chunks/{dropdown.10c034aa.js → dropdown.a8037bca.js} +188 -197
  90. package/dist/chunks/dropdown.a8037bca.js.map +1 -0
  91. package/dist/chunks/{error-message.31ec12b7.js → error-message.bdcc1020.js} +2 -2
  92. package/dist/chunks/{error-message.31ec12b7.js.map → error-message.bdcc1020.js.map} +1 -1
  93. package/dist/chunks/{events.58c00e6d.js → events.f14a214b.js} +5 -5
  94. package/dist/chunks/events.f14a214b.js.map +1 -0
  95. package/dist/chunks/{fixed-scroller.4eb9a9ac.js → fixed-scroller.82ef6187.js} +2 -2
  96. package/dist/chunks/{fixed-scroller.4eb9a9ac.js.map → fixed-scroller.82ef6187.js.map} +1 -1
  97. package/dist/chunks/{footer-actions.a1e09b4f.js → footer-actions.58d14a16.js} +4 -4
  98. package/dist/chunks/{footer-actions.a1e09b4f.js.map → footer-actions.58d14a16.js.map} +1 -1
  99. package/dist/chunks/{index.15b088b9.js → index.0a30d358.js} +6 -6
  100. package/dist/chunks/{index.15b088b9.js.map → index.0a30d358.js.map} +1 -1
  101. package/dist/chunks/{index.d553d3d1.js → index.1deef79e.js} +2 -2
  102. package/dist/chunks/{index.d553d3d1.js.map → index.1deef79e.js.map} +1 -1
  103. package/dist/chunks/index.3c69be27.js +85 -0
  104. package/dist/chunks/index.3c69be27.js.map +1 -0
  105. package/dist/chunks/index.561786f6.js +126 -0
  106. package/dist/chunks/index.561786f6.js.map +1 -0
  107. package/dist/chunks/{index.b21197ca.js → index.614a5138.js} +2 -2
  108. package/dist/chunks/{index.b21197ca.js.map → index.614a5138.js.map} +1 -1
  109. package/dist/chunks/{index.8b8c3b16.js → index.854d6498.js} +9 -9
  110. package/dist/chunks/{index.8b8c3b16.js.map → index.854d6498.js.map} +1 -1
  111. package/dist/chunks/{index.885d05a9.js → index.939dd5cf.js} +2 -2
  112. package/dist/chunks/{index.885d05a9.js.map → index.939dd5cf.js.map} +1 -1
  113. package/dist/chunks/{index.1ea85d4a.js → index.a48e7f99.js} +6 -6
  114. package/dist/chunks/{index.1ea85d4a.js.map → index.a48e7f99.js.map} +1 -1
  115. package/dist/chunks/{index.317fca12.js → index.bd1d28d0.js} +3 -3
  116. package/dist/chunks/{index.317fca12.js.map → index.bd1d28d0.js.map} +1 -1
  117. package/dist/chunks/{index.671768a1.js → index.c8621e8e.js} +3 -3
  118. package/dist/chunks/{index.671768a1.js.map → index.c8621e8e.js.map} +1 -1
  119. package/dist/chunks/{index.7eefc59c.js → index.ccc7e8d7.js} +3 -3
  120. package/dist/chunks/{index.7eefc59c.js.map → index.ccc7e8d7.js.map} +1 -1
  121. package/dist/chunks/{index.dd30e538.js → index.e29a6907.js} +2 -2
  122. package/dist/chunks/{index.dd30e538.js.map → index.e29a6907.js.map} +1 -1
  123. package/dist/chunks/{keyboard-navigation.ca47dfa8.js → keyboard-navigation.bbc3d15c.js} +2 -2
  124. package/dist/chunks/{keyboard-navigation.ca47dfa8.js.map → keyboard-navigation.bbc3d15c.js.map} +1 -1
  125. package/dist/chunks/{listbox-option-tag.6bbb6bbe.js → listbox-option-tag.8708be60.js} +3 -3
  126. package/dist/chunks/{listbox-option-tag.6bbb6bbe.js.map → listbox-option-tag.8708be60.js.map} +1 -1
  127. package/dist/chunks/{loading-button.eafc9e1b.js → loading-button.692dbdc8.js} +2 -2
  128. package/dist/chunks/{loading-button.eafc9e1b.js.map → loading-button.692dbdc8.js.map} +1 -1
  129. package/dist/chunks/{payment-method.6c1ce07c.js → payment-method.c55dd352.js} +2 -2
  130. package/dist/chunks/{payment-method.6c1ce07c.js.map → payment-method.c55dd352.js.map} +1 -1
  131. package/dist/chunks/{tooltip.58ef3f4a.js → tooltip.efddb5f3.js} +4 -4
  132. package/dist/chunks/{tooltip.58ef3f4a.js.map → tooltip.efddb5f3.js.map} +1 -1
  133. package/dist/chunks/{use-bento-toast-controller.c3277f73.js → use-bento-toast-controller.5dac1f3c.js} +2 -2
  134. package/dist/chunks/{use-bento-toast-controller.c3277f73.js.map → use-bento-toast-controller.5dac1f3c.js.map} +1 -1
  135. package/dist/chunks/{use-cached-selected-values.69297473.js → use-cached-selected-values.98a9ed01.js} +225 -206
  136. package/dist/chunks/use-cached-selected-values.98a9ed01.js.map +1 -0
  137. package/dist/code-snippet.js +131 -129
  138. package/dist/code-snippet.js.map +1 -1
  139. package/dist/country.js +2 -2
  140. package/dist/currency.js +1 -1
  141. package/dist/dashboard-template.js +109 -0
  142. package/dist/dashboard-template.js.map +1 -0
  143. package/dist/data-grid-template.js +1 -1
  144. package/dist/data-grid.js +78 -70
  145. package/dist/data-grid.js.map +1 -1
  146. package/dist/date-picker.js +8 -8
  147. package/dist/date-range-picker.js +2 -2
  148. package/dist/date.js +1 -1
  149. package/dist/divider.js +1 -1
  150. package/dist/dropdown.js +7 -7
  151. package/dist/empty-state.js +3 -3
  152. package/dist/filter-bar.js +77 -75
  153. package/dist/filter-bar.js.map +1 -1
  154. package/dist/focus-trap.js +1 -1
  155. package/dist/form-layout.js +2 -2
  156. package/dist/header.js +4 -4
  157. package/dist/index.js +82 -79
  158. package/dist/index.js.map +1 -1
  159. package/dist/info-icon.js +3 -3
  160. package/dist/input-field.js +4 -4
  161. package/dist/internal.js +8 -8
  162. package/dist/link.js +1 -1
  163. package/dist/loading-indicator.js +1 -1
  164. package/dist/menu.js +1 -1
  165. package/dist/modal-fullscreen.js +6 -6
  166. package/dist/modal.js +6 -6
  167. package/dist/pagination.js +4 -4
  168. package/dist/payment-method.js +1 -1
  169. package/dist/popover.js +1 -1
  170. package/dist/popper-container.js +1 -1
  171. package/dist/radio-group.js +4 -4
  172. package/dist/search-bar.js +2 -2
  173. package/dist/secondary-nav.js +2 -2
  174. package/dist/segmented-control.js +40 -41
  175. package/dist/segmented-control.js.map +1 -1
  176. package/dist/selection-card.js +4 -4
  177. package/dist/sidepanel.js +6 -6
  178. package/dist/status.js +2 -2
  179. package/dist/stepper.js +4 -4
  180. package/dist/structured-list.js +1 -1
  181. package/dist/summary-grid.js +3 -3
  182. package/dist/tabs.js +68 -67
  183. package/dist/tabs.js.map +1 -1
  184. package/dist/tag.js +3 -3
  185. package/dist/textarea.js +4 -4
  186. package/dist/timeline.js +7 -7
  187. package/dist/toast.js +4 -4
  188. package/dist/toggle.js +2 -2
  189. package/dist/tutorial.js +68 -53
  190. package/dist/tutorial.js.map +1 -1
  191. package/dist/typography.js +1 -1
  192. package/dist/web-types.json +133 -70
  193. package/package.json +9 -6
  194. package/dist/chunks/button-actions.81db18e8.js.map +0 -1
  195. package/dist/chunks/button.9d6435ae.js +0 -100
  196. package/dist/chunks/button.9d6435ae.js.map +0 -1
  197. package/dist/chunks/checkmark.a6ed8f47.js +0 -26
  198. package/dist/chunks/checkmark.a6ed8f47.js.map +0 -1
  199. package/dist/chunks/dropdown.10c034aa.js.map +0 -1
  200. package/dist/chunks/events.58c00e6d.js.map +0 -1
  201. package/dist/chunks/index.aaf965f8.js +0 -147
  202. package/dist/chunks/index.aaf965f8.js.map +0 -1
  203. package/dist/chunks/use-cached-selected-values.69297473.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { ref as o, computed as n, defineComponent as c, toRefs as _ } from "vue";
2
- import { B as u } from "./index.dd30e538.js";
2
+ import { B as u } from "./index.e29a6907.js";
3
3
  import "./index.4c062058.js";
4
4
  import { n as p } from "./_plugin-vue2_normalizer.71e2aa87.js";
5
- import "../assets/index5.css";
5
+ import "../assets/index2.css";
6
6
  const d = (t) => {
7
7
  const a = o(t);
8
8
  return n(() => a.value ? a.value.trim().charAt(0).toUpperCase() : null);
@@ -46,4 +46,4 @@ export {
46
46
  r as a,
47
47
  d as u
48
48
  };
49
- //# sourceMappingURL=index.7eefc59c.js.map
49
+ //# sourceMappingURL=index.ccc7e8d7.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.7eefc59c.js","sources":["../../src/composables/initials.ts","../../src/components/avatar-image/avatar-image.types.ts","../../src/components/avatar-image/avatar-image.vue"],"sourcesContent":["import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '@/types';\n\n/** Extracts the first letter of a username\n * @param username - The name to return the initials of\n * Common patterns:\n * 1. John => J\n * 2. John Smith => J\n * John Smith Doe Holly => J\n */\nexport const useInitials = (username: MaybeRef<string | null>): ComputedRef<string | null> => {\n const computedUsername = ref(username);\n return computed(() => (computedUsername.value ? computedUsername.value.trim().charAt(0).toUpperCase() : null));\n};\n","export enum BentoAvatarImageVariant {\n LARGE = 'large',\n SMALL = 'small',\n}\n\nexport enum BentoAvatarImageColor {\n BLUE = 'blue',\n GREEN = 'green',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","<template>\n <div class=\"b-avatar-image\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"avatar\">\n <img v-if=\"src\" :src=\"src\" class=\"b-avatar-image__image\" alt=\"Profile picture\" data-testid=\"avatar-content\" />\n <div v-else class=\"b-avatar-image__default\" data-testid=\"avatar-content\">\n <bento-typography el=\"span\" variant=\"body\" strongest>\n {{ initials }}\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, toRefs } from 'vue';\n import { BentoAvatarImageColor, BentoAvatarImageVariant } from './avatar-image.types';\n import { BentoTypography } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n const props = withDefaults(\n defineProps<{\n /**\n * Avatar color. Defaults to yellow.\n */\n color?: BentoAvatarImageColor;\n\n /**\n * Image src to load the profile picture.\n */\n src?: string;\n\n /**\n * Name of the user that will be used to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username?: string;\n\n /**\n * Variants supported for small and large.\n * Default - large\n */\n variant?: BentoAvatarImageVariant;\n }>(),\n {\n color: BentoAvatarImageColor.YELLOW,\n src: null,\n username: null,\n variant: BentoAvatarImageVariant.LARGE,\n }\n );\n\n const { username } = toRefs(props);\n const initials = useInitials(username);\n\n const conditionalClasses = computed(() => ({\n [`b-avatar-image--${BentoAvatarImageVariant.SMALL}`]: props.variant === BentoAvatarImageVariant.SMALL,\n [`b-avatar-image--${props.color}`]: props.color,\n }));\n</script>\n\n<script lang=\"ts\">\n export default {\n name: 'avatar-image',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar-image.scss\" />\n"],"names":["useInitials","username","computedUsername","ref","computed","BentoAvatarImageVariant","BentoAvatarImageVariant2","BentoAvatarImageColor","BentoAvatarImageColor2","__default__","toRefs","props","initials","conditionalClasses"],"mappings":";;;;;AAUa,MAAAA,IAAA,CAAAC,MAAA;AACT,QAAAC,IAAAC,EAAAF,CAAA;AACA,SAAAG,EAAA,MAAAF,EAAA,QAAAA,EAAA,MAAA,KAAA,EAAA,OAAA,CAAA,EAAA,YAAA,IAAA,IAAA;AACJ;ACbY,IAAAG,IAAA,kBAAAC,OACRA,EAAA,QAAA,SACAA,EAAA,QAAA,SAFQA,IAAAD,KAAA,CAAA,CAAA,GAKAE,IAAA,kBAAAC,OACRA,EAAA,OAAA,QACAA,EAAA,QAAA,SACAA,EAAA,MAAA,OACAA,EAAA,SAAA,UAJQA,IAAAD,KAAA,CAAA,CAAA;ACyDR,MAAAE,IAAA;AAAA,EAAe,MAAA;AAEf;;;;;;;;;iBAZA,EAAA,UAAAR,EAAA,IAAAS,EAAAC,CAAA,GACAC,IAAAZ,EAAAC,CAAA,GAEAY,IAAAT,EAAA,OAAA;AAAA,MAA2C,CAAA,mBAAAC,EAAA,OAAA,GAAAM,EAAA,YAAAN,EAAA;AAAA,MACyD,CAAA,mBAAAM,EAAA,OAAA,GAAAA,EAAA;AAAA,IACtD,EAAA;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.ccc7e8d7.js","sources":["../../src/composables/initials.ts","../../src/components/avatar-image/avatar-image.types.ts","../../src/components/avatar-image/avatar-image.vue"],"sourcesContent":["import { computed, ComputedRef, ref } from 'vue';\nimport { MaybeRef } from '@/types';\n\n/** Extracts the first letter of a username\n * @param username - The name to return the initials of\n * Common patterns:\n * 1. John => J\n * 2. John Smith => J\n * John Smith Doe Holly => J\n */\nexport const useInitials = (username: MaybeRef<string | null>): ComputedRef<string | null> => {\n const computedUsername = ref(username);\n return computed(() => (computedUsername.value ? computedUsername.value.trim().charAt(0).toUpperCase() : null));\n};\n","export enum BentoAvatarImageVariant {\n LARGE = 'large',\n SMALL = 'small',\n}\n\nexport enum BentoAvatarImageColor {\n BLUE = 'blue',\n GREEN = 'green',\n RED = 'red',\n YELLOW = 'yellow',\n}\n","<template>\n <div class=\"b-avatar-image\" :class=\"conditionalClasses\" aria-hidden=\"true\" data-testid=\"avatar\">\n <img v-if=\"src\" :src=\"src\" class=\"b-avatar-image__image\" alt=\"Profile picture\" data-testid=\"avatar-content\" />\n <div v-else class=\"b-avatar-image__default\" data-testid=\"avatar-content\">\n <bento-typography el=\"span\" variant=\"body\" strongest>\n {{ initials }}\n </bento-typography>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, toRefs } from 'vue';\n import { BentoAvatarImageColor, BentoAvatarImageVariant } from './avatar-image.types';\n import { BentoTypography } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n const props = withDefaults(\n defineProps<{\n /**\n * Avatar color. Defaults to yellow.\n */\n color?: BentoAvatarImageColor;\n\n /**\n * Image src to load the profile picture.\n */\n src?: string;\n\n /**\n * Name of the user that will be used to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username?: string;\n\n /**\n * Variants supported for small and large.\n * Default - large\n */\n variant?: BentoAvatarImageVariant;\n }>(),\n {\n color: BentoAvatarImageColor.YELLOW,\n src: null,\n username: null,\n variant: BentoAvatarImageVariant.LARGE,\n }\n );\n\n const { username } = toRefs(props);\n const initials = useInitials(username);\n\n const conditionalClasses = computed(() => ({\n [`b-avatar-image--${BentoAvatarImageVariant.SMALL}`]: props.variant === BentoAvatarImageVariant.SMALL,\n [`b-avatar-image--${props.color}`]: props.color,\n }));\n</script>\n\n<script lang=\"ts\">\n export default {\n name: 'avatar-image',\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar-image.scss\" />\n"],"names":["useInitials","username","computedUsername","ref","computed","BentoAvatarImageVariant","BentoAvatarImageVariant2","BentoAvatarImageColor","BentoAvatarImageColor2","__default__","toRefs","props","initials","conditionalClasses"],"mappings":";;;;;AAUa,MAAAA,IAAA,CAAAC,MAAA;AACT,QAAAC,IAAAC,EAAAF,CAAA;AACA,SAAAG,EAAA,MAAAF,EAAA,QAAAA,EAAA,MAAA,KAAA,EAAA,OAAA,CAAA,EAAA,YAAA,IAAA,IAAA;AACJ;ACbY,IAAAG,IAAA,kBAAAC,OACRA,EAAA,QAAA,SACAA,EAAA,QAAA,SAFQA,IAAAD,KAAA,CAAA,CAAA,GAKAE,IAAA,kBAAAC,OACRA,EAAA,OAAA,QACAA,EAAA,QAAA,SACAA,EAAA,MAAA,OACAA,EAAA,SAAA,UAJQA,IAAAD,KAAA,CAAA,CAAA;ACyDR,MAAAE,IAAA;AAAA,EAAe,MAAA;AAEf;;;;;;;;;iBAZA,EAAA,UAAAR,EAAA,IAAAS,EAAAC,CAAA,GACAC,IAAAZ,EAAAC,CAAA,GAEAY,IAAAT,EAAA,OAAA;AAAA,MAA2C,CAAA,mBAAAC,EAAA,OAAA,GAAAM,EAAA,YAAAN,EAAA;AAAA,MACyD,CAAA,mBAAAM,EAAA,OAAA,GAAAA,EAAA;AAAA,IACtD,EAAA;;;;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as _, computed as c } from "vue";
2
2
  import { n as E } from "./_plugin-vue2_normalizer.71e2aa87.js";
3
- import "../assets/index29.css";
3
+ import "../assets/index46.css";
4
4
  var e = /* @__PURE__ */ ((t) => (t.CAPTION = "caption", t.BODY = "body", t.SUBTITLE = "subtitle", t.TITLE = "title", t))(e || {}), s = /* @__PURE__ */ ((t) => (t.WIDE = "wide", t.STRONGER = "stronger", t.STRONGER_WIDE = "stronger-wide", t.STRONGEST = "strongest", t.STRONGEST_WIDE = "strongest-wide", t.MEDIUM = "m", t.LARGE = "l", t.MOBILE = "mobile", t))(s || {}), l = /* @__PURE__ */ ((t) => (t.H1 = "h1", t.H2 = "h2", t.H3 = "h3", t.H4 = "h4", t.H5 = "h5", t.H6 = "h6", t.DIV = "div", t.PARAGRAPH = "p", t.SPAN = "span", t))(l || {});
5
5
  const T = ["development", "DEVELOPMENT", "dev", "DEV"], d = () => T.includes(process.env.NODE_ENV);
6
6
  function n(...t) {
@@ -76,4 +76,4 @@ export {
76
76
  d as i,
77
77
  n as p
78
78
  };
79
- //# sourceMappingURL=index.dd30e538.js.map
79
+ //# sourceMappingURL=index.e29a6907.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.dd30e538.js","sources":["../../../core/src/components/typography/typography.types.ts","../../src/utils/ts/dev-environment.ts","../../src/utils/ts/print-development-warning.ts","../../src/utils/ts/deprecate.ts","../../src/components/typography/typography.vue"],"sourcesContent":["/**\n * @deprecated for usage with properties since version 2.0. Use the string literal instead.\n */\nexport enum BentoTypographyVariant {\n CAPTION = 'caption',\n BODY = 'body',\n /** @deprecated Use \"TITLE\" instead. */\n SUBTITLE = 'subtitle',\n TITLE = 'title',\n}\n\nexport enum BentoTypographyModifier {\n WIDE = 'wide',\n STRONGER = 'stronger',\n STRONGER_WIDE = 'stronger-wide',\n STRONGEST = 'strongest',\n STRONGEST_WIDE = 'strongest-wide',\n MEDIUM = 'm',\n LARGE = 'l',\n MOBILE = 'mobile',\n}\n\n/**\n * @deprecated for usage with properties since version 2.0. Use the string literal instead.\n */\nexport enum BentoTypographyElement {\n H1 = 'h1',\n H2 = 'h2',\n H3 = 'h3',\n H4 = 'h4',\n H5 = 'h5',\n H6 = 'h6',\n DIV = 'div',\n PARAGRAPH = 'p',\n SPAN = 'span',\n}\n","const DEV_ENVIROMENT_NAMES = ['development', 'DEVELOPMENT', 'dev', 'DEV'];\n\nexport const isDevelopmentEnviroment = () => DEV_ENVIROMENT_NAMES.includes(process.env.NODE_ENV);\n","import { isDevelopmentEnviroment } from '@/utils/ts/dev-environment';\n\n/**\n * Prints console.warn messages in development mode only.\n *\n * @see console.warn for what parameters you can use\n */\n\nexport function printDevelopmentWarning(...args: Parameters<typeof console.warn>) {\n if (isDevelopmentEnviroment()) {\n // eslint-disable-next-line no-console\n console.warn(...args);\n }\n}\n","import { printDevelopmentWarning } from './print-development-warning';\n\nconst DEPRECATION_STYLES = ['color: red', 'background: yellow'].join(';');\nconst shownMessages = new Set<string>();\n\n/**\n * Informs users about the deprecations in development mode only.\n *\n * @param title Indicates what is being deprecated.\n * @param deprecationMessage How to avoid the deprecation by giving an example of the alternatives. Backticks can be used to multi-line the message.\n * @param toBeRemovedInVersion The version it will be removed. Must be in X.Y.Z format.\n */\nexport function deprecate(title: string, deprecationMessage: string, toBeRemovedInVersion: string) {\n // If the message is already showing, don't show it again\n if (!shownMessages.has(title)) {\n printDevelopmentWarning(`%cDEPRECATED:\\x1b[0m ${title}`, DEPRECATION_STYLES);\n // Format multi-line descriptions with the backtick\n printDevelopmentWarning(`${deprecationMessage.replaceAll(' ', '').trim()}`);\n printDevelopmentWarning(`To be removed in: %c${toBeRemovedInVersion}`, DEPRECATION_STYLES);\n shownMessages.add(title);\n }\n}\n\n/**\n * Reset shownMessages set\n *\n * @deprecated For testing purposes only. Do not use.\n */\nexport function resetShownMessages() {\n shownMessages.clear();\n}\n","<template>\n <component :is=\"el\" class=\"b-typography\" :class=\"conditionalClasses\" data-testid=\"typography\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue';\n import {\n BentoTypographyElement,\n BentoTypographyModifier,\n BentoTypographyVariant,\n } from '@/core/components/typography/typography.types';\n import { deprecate } from '@/utils/ts/deprecate';\n\n const props = withDefaults(\n defineProps<{\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el?: BentoTypographyElement | `${BentoTypographyElement}`;\n\n /**\n * Adds the large class modifier.\n * Applicable to the Title variant.\n */\n large?: boolean;\n\n /**\n * Adds the medium class modifier.\n * Applicable to the Title variant.\n */\n medium?: boolean;\n\n /**\n * Adds the stronger class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n stronger?: boolean;\n\n /**\n * Adds the strongest class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n strongest?: boolean;\n\n /**\n * Sets the type of typography variant.\n * @values caption, body, title.\n */\n variant?: BentoTypographyVariant | `${BentoTypographyVariant}`;\n\n /**\n * Adds the medium class modifier.\n * Applicable to tje Body variant.\n */\n wide?: boolean;\n }>(),\n {\n el: BentoTypographyElement.PARAGRAPH,\n large: false,\n medium: false,\n stronger: false,\n strongest: false,\n variant: BentoTypographyVariant.BODY,\n wide: false,\n }\n );\n\n if (props.variant === BentoTypographyVariant.SUBTITLE) {\n deprecate(\n 'BentoTypography \"subtitle\" variant (BentoTypographyVariant.SUBTITLE)',\n `Use the \"title\" or \"BentoTypographyVariant.TITLE\" variant and (optionally) combine it with a size property. e.g. medium / large.\n <bento-typography :variant=\"BentoTypographyVariant.TITLE\" medium>`,\n '2.0.0'\n );\n }\n\n const conditionalClasses = computed(() => ({\n // Caption\n [`b-typography--${BentoTypographyVariant.CAPTION}`]: props.variant === BentoTypographyVariant.CAPTION,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.wide,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.stronger,\n\n // Body\n [`b-typography--${BentoTypographyVariant.BODY}`]: props.variant === BentoTypographyVariant.BODY,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.BODY && props.wide,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.BODY && props.stronger,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGEST}`]:\n props.variant === BentoTypographyVariant.BODY && props.strongest,\n\n // Subtitle\n [`b-typography--${BentoTypographyVariant.SUBTITLE}`]: props.variant === BentoTypographyVariant.SUBTITLE,\n [`b-typography--${BentoTypographyVariant.SUBTITLE}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.SUBTITLE && props.stronger,\n\n // Title\n [`b-typography--${BentoTypographyVariant.TITLE}`]:\n props.variant === BentoTypographyVariant.TITLE && !props.medium && !props.large,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.MEDIUM}`]:\n props.variant === BentoTypographyVariant.TITLE && props.medium,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.LARGE}`]:\n props.variant === BentoTypographyVariant.TITLE && props.large,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * The Typography component makes it easy to apply a default set of font weights, sizes and other text styles\n * easily to text. The variants and properties match with those found in Figma.\n *\n * For example, seeing text with the typography styling of\n *\n * @example\n * import { BentoTypography } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoTypography },\n * template: `\n * <bento-typography>\n * ... text content\n * </bento-typography>\n * `\n * }\n */\n export default {\n name: 'bento-typography',\n inheritAttrs: true,\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"@/core/components/typography/typography.scss\" />\n<style lang=\"scss\">\n // Reset preset browser margin on all elements but allow for it to be overriden\n .b-typography {\n margin: 0;\n }\n</style>\n"],"names":["BentoTypographyVariant","BentoTypographyVariant2","BentoTypographyModifier","BentoTypographyModifier2","BentoTypographyElement","BentoTypographyElement2","DEV_ENVIROMENT_NAMES","isDevelopmentEnviroment","printDevelopmentWarning","args","DEPRECATION_STYLES","shownMessages","deprecate","title","deprecationMessage","toBeRemovedInVersion","__default__","props","conditionalClasses","computed"],"mappings":"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"}
1
+ {"version":3,"file":"index.e29a6907.js","sources":["../../../core/src/components/typography/typography.types.ts","../../src/utils/ts/dev-environment.ts","../../src/utils/ts/print-development-warning.ts","../../src/utils/ts/deprecate.ts","../../src/components/typography/typography.vue"],"sourcesContent":["/**\n * @deprecated for usage with properties since version 2.0. Use the string literal instead.\n */\nexport enum BentoTypographyVariant {\n CAPTION = 'caption',\n BODY = 'body',\n /** @deprecated Use \"TITLE\" instead. */\n SUBTITLE = 'subtitle',\n TITLE = 'title',\n}\n\nexport enum BentoTypographyModifier {\n WIDE = 'wide',\n STRONGER = 'stronger',\n STRONGER_WIDE = 'stronger-wide',\n STRONGEST = 'strongest',\n STRONGEST_WIDE = 'strongest-wide',\n MEDIUM = 'm',\n LARGE = 'l',\n MOBILE = 'mobile',\n}\n\n/**\n * @deprecated for usage with properties since version 2.0. Use the string literal instead.\n */\nexport enum BentoTypographyElement {\n H1 = 'h1',\n H2 = 'h2',\n H3 = 'h3',\n H4 = 'h4',\n H5 = 'h5',\n H6 = 'h6',\n DIV = 'div',\n PARAGRAPH = 'p',\n SPAN = 'span',\n}\n","const DEV_ENVIROMENT_NAMES = ['development', 'DEVELOPMENT', 'dev', 'DEV'];\n\nexport const isDevelopmentEnviroment = () => DEV_ENVIROMENT_NAMES.includes(process.env.NODE_ENV);\n","import { isDevelopmentEnviroment } from '@/utils/ts/dev-environment';\n\n/**\n * Prints console.warn messages in development mode only.\n *\n * @see console.warn for what parameters you can use\n */\n\nexport function printDevelopmentWarning(...args: Parameters<typeof console.warn>) {\n if (isDevelopmentEnviroment()) {\n // eslint-disable-next-line no-console\n console.warn(...args);\n }\n}\n","import { printDevelopmentWarning } from './print-development-warning';\n\nconst DEPRECATION_STYLES = ['color: red', 'background: yellow'].join(';');\nconst shownMessages = new Set<string>();\n\n/**\n * Informs users about the deprecations in development mode only.\n *\n * @param title Indicates what is being deprecated.\n * @param deprecationMessage How to avoid the deprecation by giving an example of the alternatives. Backticks can be used to multi-line the message.\n * @param toBeRemovedInVersion The version it will be removed. Must be in X.Y.Z format.\n */\nexport function deprecate(title: string, deprecationMessage: string, toBeRemovedInVersion: string) {\n // If the message is already showing, don't show it again\n if (!shownMessages.has(title)) {\n printDevelopmentWarning(`%cDEPRECATED:\\x1b[0m ${title}`, DEPRECATION_STYLES);\n // Format multi-line descriptions with the backtick\n printDevelopmentWarning(`${deprecationMessage.replaceAll(' ', '').trim()}`);\n printDevelopmentWarning(`To be removed in: %c${toBeRemovedInVersion}`, DEPRECATION_STYLES);\n shownMessages.add(title);\n }\n}\n\n/**\n * Reset shownMessages set\n *\n * @deprecated For testing purposes only. Do not use.\n */\nexport function resetShownMessages() {\n shownMessages.clear();\n}\n","<template>\n <component :is=\"el\" class=\"b-typography\" :class=\"conditionalClasses\" data-testid=\"typography\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\n import { computed } from 'vue';\n import {\n BentoTypographyElement,\n BentoTypographyModifier,\n BentoTypographyVariant,\n } from '@/core/components/typography/typography.types';\n import { deprecate } from '@/utils/ts/deprecate';\n\n const props = withDefaults(\n defineProps<{\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el?: BentoTypographyElement | `${BentoTypographyElement}`;\n\n /**\n * Adds the large class modifier.\n * Applicable to the Title variant.\n */\n large?: boolean;\n\n /**\n * Adds the medium class modifier.\n * Applicable to the Title variant.\n */\n medium?: boolean;\n\n /**\n * Adds the stronger class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n stronger?: boolean;\n\n /**\n * Adds the strongest class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n strongest?: boolean;\n\n /**\n * Sets the type of typography variant.\n * @values caption, body, title.\n */\n variant?: BentoTypographyVariant | `${BentoTypographyVariant}`;\n\n /**\n * Adds the medium class modifier.\n * Applicable to tje Body variant.\n */\n wide?: boolean;\n }>(),\n {\n el: BentoTypographyElement.PARAGRAPH,\n large: false,\n medium: false,\n stronger: false,\n strongest: false,\n variant: BentoTypographyVariant.BODY,\n wide: false,\n }\n );\n\n if (props.variant === BentoTypographyVariant.SUBTITLE) {\n deprecate(\n 'BentoTypography \"subtitle\" variant (BentoTypographyVariant.SUBTITLE)',\n `Use the \"title\" or \"BentoTypographyVariant.TITLE\" variant and (optionally) combine it with a size property. e.g. medium / large.\n <bento-typography :variant=\"BentoTypographyVariant.TITLE\" medium>`,\n '2.0.0'\n );\n }\n\n const conditionalClasses = computed(() => ({\n // Caption\n [`b-typography--${BentoTypographyVariant.CAPTION}`]: props.variant === BentoTypographyVariant.CAPTION,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.wide,\n [`b-typography--${BentoTypographyVariant.CAPTION}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.CAPTION && props.stronger,\n\n // Body\n [`b-typography--${BentoTypographyVariant.BODY}`]: props.variant === BentoTypographyVariant.BODY,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.WIDE}`]:\n props.variant === BentoTypographyVariant.BODY && props.wide,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.BODY && props.stronger,\n [`b-typography--${BentoTypographyVariant.BODY}-${BentoTypographyModifier.STRONGEST}`]:\n props.variant === BentoTypographyVariant.BODY && props.strongest,\n\n // Subtitle\n [`b-typography--${BentoTypographyVariant.SUBTITLE}`]: props.variant === BentoTypographyVariant.SUBTITLE,\n [`b-typography--${BentoTypographyVariant.SUBTITLE}-${BentoTypographyModifier.STRONGER}`]:\n props.variant === BentoTypographyVariant.SUBTITLE && props.stronger,\n\n // Title\n [`b-typography--${BentoTypographyVariant.TITLE}`]:\n props.variant === BentoTypographyVariant.TITLE && !props.medium && !props.large,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.MEDIUM}`]:\n props.variant === BentoTypographyVariant.TITLE && props.medium,\n [`b-typography--${BentoTypographyVariant.TITLE}-${BentoTypographyModifier.LARGE}`]:\n props.variant === BentoTypographyVariant.TITLE && props.large,\n }));\n</script>\n\n<script lang=\"ts\">\n /**\n * The Typography component makes it easy to apply a default set of font weights, sizes and other text styles\n * easily to text. The variants and properties match with those found in Figma.\n *\n * For example, seeing text with the typography styling of\n *\n * @example\n * import { BentoTypography } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoTypography },\n * template: `\n * <bento-typography>\n * ... text content\n * </bento-typography>\n * `\n * }\n */\n export default {\n name: 'bento-typography',\n inheritAttrs: true,\n };\n</script>\n\n<style lang=\"scss\" scoped src=\"@/core/components/typography/typography.scss\" />\n<style lang=\"scss\">\n // Reset preset browser margin on all elements but allow for it to be overriden\n .b-typography {\n margin: 0;\n }\n</style>\n"],"names":["BentoTypographyVariant","BentoTypographyVariant2","BentoTypographyModifier","BentoTypographyModifier2","BentoTypographyElement","BentoTypographyElement2","DEV_ENVIROMENT_NAMES","isDevelopmentEnviroment","printDevelopmentWarning","args","DEPRECATION_STYLES","shownMessages","deprecate","title","deprecationMessage","toBeRemovedInVersion","__default__","props","conditionalClasses","computed"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { l as a } from "./events.58c00e6d.js";
1
+ import { l as a } from "./events.f14a214b.js";
2
2
  var t = /* @__PURE__ */ ((s) => (s.ARROW_DOWN = "keydown:arrow-down", s.ARROW_LEFT = "keydown:arrow-left", s.ARROW_RIGHT = "keydown:arrow-right", s.ARROW_UP = "keydown:arrow-up", s.END = "keydown:end", s.ENTER = "keydown:enter", s.ESCAPE = "keydown:escape", s.HOME = "keydown:home", s.PAGE_DOWN = "keydown:page-down", s.PAGE_UP = "keydown:page-up", s.SHIFT_PAGE_DOWN = "keydown:shift-page-down", s.SHIFT_PAGE_UP = "keydown:shift-page-up", s.TAB = "keydown:tab", s.SPACE = "keydown:space", s))(t || {});
3
3
  const d = (s) => (e) => {
4
4
  switch (e.key) {
@@ -62,4 +62,4 @@ export {
62
62
  t as B,
63
63
  r as a
64
64
  };
65
- //# sourceMappingURL=keyboard-navigation.ca47dfa8.js.map
65
+ //# sourceMappingURL=keyboard-navigation.bbc3d15c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard-navigation.ca47dfa8.js","sources":["../../src/types/keyboard-navigation.ts","../../src/directives/keyboard-navigation/keyboard-navigation.ts"],"sourcesContent":["export enum BentoKeyboardNavigationKeyDownEvent {\n ARROW_DOWN = 'keydown:arrow-down',\n ARROW_LEFT = 'keydown:arrow-left',\n ARROW_RIGHT = 'keydown:arrow-right',\n ARROW_UP = 'keydown:arrow-up',\n END = 'keydown:end',\n ENTER = 'keydown:enter',\n ESCAPE = 'keydown:escape',\n HOME = 'keydown:home',\n PAGE_DOWN = 'keydown:page-down',\n PAGE_UP = 'keydown:page-up',\n SHIFT_PAGE_DOWN = 'keydown:shift-page-down',\n SHIFT_PAGE_UP = 'keydown:shift-page-up',\n TAB = 'keydown:tab',\n SPACE = 'keydown:space',\n}\n","import { listen } from '@/utils/ts/events';\nimport { Binding } from './keyboard-navigation.types';\nimport { BentoKeyboardNavigationKeyDownEvent } from '@/types';\nimport type { DirectiveHook } from 'vue';\n\nconst onKeyEvent = (el: Element) => (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ESCAPE, { detail: event }));\n break;\n case 'Enter':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ENTER, { detail: event }));\n break;\n case 'Tab':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.TAB, { detail: event }));\n break;\n // Space\n case ' ':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.SPACE, { detail: event }));\n break;\n case 'Right':\n case 'ArrowRight':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_RIGHT, { detail: event }));\n break;\n case 'Left':\n case 'ArrowLeft':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_LEFT, { detail: event }));\n break;\n case 'Up':\n case 'ArrowUp':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_UP, { detail: event }));\n break;\n case 'Down':\n case 'ArrowDown':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_DOWN, { detail: event }));\n break;\n case 'PageUp':\n if (event.shiftKey) {\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.SHIFT_PAGE_UP, { detail: event }));\n } else {\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.PAGE_UP, { detail: event }));\n }\n break;\n case 'PageDown':\n if (event.shiftKey) {\n el.dispatchEvent(\n new CustomEvent(BentoKeyboardNavigationKeyDownEvent.SHIFT_PAGE_DOWN, { detail: event })\n );\n } else {\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.PAGE_DOWN, { detail: event }));\n }\n break;\n case 'Home':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.HOME, { detail: event }));\n break;\n case 'End':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.END, { detail: event }));\n break;\n default:\n break;\n }\n};\n\nconst bindDirective: DirectiveHook<Element> = (el, binding: Binding<undefined>) => {\n // Register the listener cleanup function\n // eslint-disable-next-line no-param-reassign, dot-notation\n binding['keyDownListener'] = listen(el, 'keydown', onKeyEvent(el));\n};\n\nconst unbindDirective: DirectiveHook<Element> = (_, binding: Binding<undefined>) => {\n if (binding.keyDownListener) {\n binding.keyDownListener();\n }\n};\n\nexport const BentoKeyboardNavigationDirective = {\n // Vue 2 Directive hooks\n bind: bindDirective,\n unbind: unbindDirective,\n // Vue 3 Directive hooks\n beforeMount: bindDirective,\n unmounted: unbindDirective,\n};\n"],"names":["BentoKeyboardNavigationKeyDownEvent","onKeyEvent","el","event","bindDirective","binding","listen","unbindDirective","_","BentoKeyboardNavigationDirective"],"mappings":";AAAY,IAAAA,sBAAAA,OACRA,EAAA,aAAa,sBACbA,EAAA,aAAa,sBACbA,EAAA,cAAc,uBACdA,EAAA,WAAW,oBACXA,EAAA,MAAM,eACNA,EAAA,QAAQ,iBACRA,EAAA,SAAS,kBACTA,EAAA,OAAO,gBACPA,EAAA,YAAY,qBACZA,EAAA,UAAU,mBACVA,EAAA,kBAAkB,2BAClBA,EAAA,gBAAgB,yBAChBA,EAAA,MAAM,eACNA,EAAA,QAAQ,iBAdAA,IAAAA,KAAA,CAAA,CAAA;ACKZ,MAAMC,IAAa,CAACC,MAAgB,CAACC,MAAyB;AAC1D,UAAQA,EAAM,KAAK;AAAA,IACf,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,QAAQ,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC/F;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,OAAO,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC9F;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,KAAK,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC5F;AAAA,IAEJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,OAAO,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC9F;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,aAAa,EAAE,QAAQG,EAAO,CAAA,CAAC;AACpG;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,YAAY,EAAE,QAAQG,EAAO,CAAA,CAAC;AACnG;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,UAAU,EAAE,QAAQG,EAAO,CAAA,CAAC;AACjG;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,YAAY,EAAE,QAAQG,EAAO,CAAA,CAAC;AACnG;AAAA,IACJ,KAAK;AACD,MAAIA,EAAM,WACHD,EAAA,cAAc,IAAI,YAAYF,EAAoC,eAAe,EAAE,QAAQG,EAAO,CAAA,CAAC,IAEnGD,EAAA,cAAc,IAAI,YAAYF,EAAoC,SAAS,EAAE,QAAQG,EAAO,CAAA,CAAC;AAEpG;AAAA,IACJ,KAAK;AACD,MAAIA,EAAM,WACHD,EAAA;AAAA,QACC,IAAI,YAAYF,EAAoC,iBAAiB,EAAE,QAAQG,GAAO;AAAA,MAAA,IAGvFD,EAAA,cAAc,IAAI,YAAYF,EAAoC,WAAW,EAAE,QAAQG,EAAO,CAAA,CAAC;AAEtG;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,MAAM,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC7F;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,KAAK,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC5F;AAAA,EAGR;AACJ,GAEMC,IAAwC,CAACF,GAAIG,MAAgC;AAG/E,EAAAA,EAAQ,kBAAqBC,EAAOJ,GAAI,WAAWD,EAAWC,CAAE,CAAC;AACrE,GAEMK,IAA0C,CAACC,GAAGH,MAAgC;AAChF,EAAIA,EAAQ,mBACRA,EAAQ,gBAAgB;AAEhC,GAEaI,IAAmC;AAAA;AAAA,EAE5C,MAAML;AAAA,EACN,QAAQG;AAAA;AAAA,EAER,aAAaH;AAAA,EACb,WAAWG;AACf;"}
1
+ {"version":3,"file":"keyboard-navigation.bbc3d15c.js","sources":["../../src/types/keyboard-navigation.ts","../../src/directives/keyboard-navigation/keyboard-navigation.ts"],"sourcesContent":["export enum BentoKeyboardNavigationKeyDownEvent {\n ARROW_DOWN = 'keydown:arrow-down',\n ARROW_LEFT = 'keydown:arrow-left',\n ARROW_RIGHT = 'keydown:arrow-right',\n ARROW_UP = 'keydown:arrow-up',\n END = 'keydown:end',\n ENTER = 'keydown:enter',\n ESCAPE = 'keydown:escape',\n HOME = 'keydown:home',\n PAGE_DOWN = 'keydown:page-down',\n PAGE_UP = 'keydown:page-up',\n SHIFT_PAGE_DOWN = 'keydown:shift-page-down',\n SHIFT_PAGE_UP = 'keydown:shift-page-up',\n TAB = 'keydown:tab',\n SPACE = 'keydown:space',\n}\n","import { listen } from '@/utils/ts/events';\nimport { Binding } from './keyboard-navigation.types';\nimport { BentoKeyboardNavigationKeyDownEvent } from '@/types';\nimport type { DirectiveHook } from 'vue';\n\nconst onKeyEvent = (el: Element) => (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Esc':\n case 'Escape':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ESCAPE, { detail: event }));\n break;\n case 'Enter':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ENTER, { detail: event }));\n break;\n case 'Tab':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.TAB, { detail: event }));\n break;\n // Space\n case ' ':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.SPACE, { detail: event }));\n break;\n case 'Right':\n case 'ArrowRight':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_RIGHT, { detail: event }));\n break;\n case 'Left':\n case 'ArrowLeft':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_LEFT, { detail: event }));\n break;\n case 'Up':\n case 'ArrowUp':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_UP, { detail: event }));\n break;\n case 'Down':\n case 'ArrowDown':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.ARROW_DOWN, { detail: event }));\n break;\n case 'PageUp':\n if (event.shiftKey) {\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.SHIFT_PAGE_UP, { detail: event }));\n } else {\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.PAGE_UP, { detail: event }));\n }\n break;\n case 'PageDown':\n if (event.shiftKey) {\n el.dispatchEvent(\n new CustomEvent(BentoKeyboardNavigationKeyDownEvent.SHIFT_PAGE_DOWN, { detail: event })\n );\n } else {\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.PAGE_DOWN, { detail: event }));\n }\n break;\n case 'Home':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.HOME, { detail: event }));\n break;\n case 'End':\n el.dispatchEvent(new CustomEvent(BentoKeyboardNavigationKeyDownEvent.END, { detail: event }));\n break;\n default:\n break;\n }\n};\n\nconst bindDirective: DirectiveHook<Element> = (el, binding: Binding<undefined>) => {\n // Register the listener cleanup function\n // eslint-disable-next-line no-param-reassign, dot-notation\n binding['keyDownListener'] = listen(el, 'keydown', onKeyEvent(el));\n};\n\nconst unbindDirective: DirectiveHook<Element> = (_, binding: Binding<undefined>) => {\n if (binding.keyDownListener) {\n binding.keyDownListener();\n }\n};\n\nexport const BentoKeyboardNavigationDirective = {\n // Vue 2 Directive hooks\n bind: bindDirective,\n unbind: unbindDirective,\n // Vue 3 Directive hooks\n beforeMount: bindDirective,\n unmounted: unbindDirective,\n};\n"],"names":["BentoKeyboardNavigationKeyDownEvent","onKeyEvent","el","event","bindDirective","binding","listen","unbindDirective","_","BentoKeyboardNavigationDirective"],"mappings":";AAAY,IAAAA,sBAAAA,OACRA,EAAA,aAAa,sBACbA,EAAA,aAAa,sBACbA,EAAA,cAAc,uBACdA,EAAA,WAAW,oBACXA,EAAA,MAAM,eACNA,EAAA,QAAQ,iBACRA,EAAA,SAAS,kBACTA,EAAA,OAAO,gBACPA,EAAA,YAAY,qBACZA,EAAA,UAAU,mBACVA,EAAA,kBAAkB,2BAClBA,EAAA,gBAAgB,yBAChBA,EAAA,MAAM,eACNA,EAAA,QAAQ,iBAdAA,IAAAA,KAAA,CAAA,CAAA;ACKZ,MAAMC,IAAa,CAACC,MAAgB,CAACC,MAAyB;AAC1D,UAAQA,EAAM,KAAK;AAAA,IACf,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,QAAQ,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC/F;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,OAAO,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC9F;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,KAAK,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC5F;AAAA,IAEJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,OAAO,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC9F;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,aAAa,EAAE,QAAQG,EAAO,CAAA,CAAC;AACpG;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,YAAY,EAAE,QAAQG,EAAO,CAAA,CAAC;AACnG;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,UAAU,EAAE,QAAQG,EAAO,CAAA,CAAC;AACjG;AAAA,IACJ,KAAK;AAAA,IACL,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,YAAY,EAAE,QAAQG,EAAO,CAAA,CAAC;AACnG;AAAA,IACJ,KAAK;AACD,MAAIA,EAAM,WACHD,EAAA,cAAc,IAAI,YAAYF,EAAoC,eAAe,EAAE,QAAQG,EAAO,CAAA,CAAC,IAEnGD,EAAA,cAAc,IAAI,YAAYF,EAAoC,SAAS,EAAE,QAAQG,EAAO,CAAA,CAAC;AAEpG;AAAA,IACJ,KAAK;AACD,MAAIA,EAAM,WACHD,EAAA;AAAA,QACC,IAAI,YAAYF,EAAoC,iBAAiB,EAAE,QAAQG,GAAO;AAAA,MAAA,IAGvFD,EAAA,cAAc,IAAI,YAAYF,EAAoC,WAAW,EAAE,QAAQG,EAAO,CAAA,CAAC;AAEtG;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,MAAM,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC7F;AAAA,IACJ,KAAK;AACE,MAAAD,EAAA,cAAc,IAAI,YAAYF,EAAoC,KAAK,EAAE,QAAQG,EAAO,CAAA,CAAC;AAC5F;AAAA,EAGR;AACJ,GAEMC,IAAwC,CAACF,GAAIG,MAAgC;AAG/E,EAAAA,EAAQ,kBAAqBC,EAAOJ,GAAI,WAAWD,EAAWC,CAAE,CAAC;AACrE,GAEMK,IAA0C,CAACC,GAAGH,MAAgC;AAChF,EAAIA,EAAQ,mBACRA,EAAQ,gBAAgB;AAEhC,GAEaI,IAAmC;AAAA;AAAA,EAE5C,MAAML;AAAA,EACN,QAAQG;AAAA;AAAA,EAER,aAAaH;AAAA,EACb,WAAWG;AACf;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as i, toRefs as m, computed as r } from "vue";
2
- import { A as v, u as b, B as n, a as f } from "./index.7eefc59c.js";
3
- import { B as _ } from "./index.dd30e538.js";
2
+ import { A as v, u as b, B as n, a as f } from "./index.ccc7e8d7.js";
3
+ import { B as _ } from "./index.e29a6907.js";
4
4
  import "./index.4c062058.js";
5
5
  import { n as c } from "./_plugin-vue2_normalizer.71e2aa87.js";
6
6
  import { BentoTag as d } from "../tag.js";
@@ -104,4 +104,4 @@ export {
104
104
  j as B,
105
105
  q as L
106
106
  };
107
- //# sourceMappingURL=listbox-option-tag.6bbb6bbe.js.map
107
+ //# sourceMappingURL=listbox-option-tag.8708be60.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"listbox-option-tag.6bbb6bbe.js","sources":["../../src/components/internal/avatar/avatar.vue","../../src/components/internal/listbox/components/listbox-option-tag/listbox-option-tag.vue"],"sourcesContent":["<template>\n <div class=\"b-avatar\" :aria-label=\"computedAriaLabel\">\n <avatar-image\n :src=\"src\"\n :username=\"computedUsername\"\n :variant=\"BentoAvatarImageVariant.SMALL\"\n :color=\"avatarColor\"\n />\n <bento-typography v-if=\"!iconOnly\" class=\"b-avatar__label\" el=\"span\" variant=\"body\">\n {{ username }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, toRefs } from 'vue';\n import { AvatarImage, BentoAvatarImageColor, BentoAvatarImageVariant } from '@/components/avatar-image';\n import { BentoTypography } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n /**\n * Displays an user profile including an avatar and optionally a label.\n *\n * @example\n * import { BentoUserProfile } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoUserProfile },\n * template: `\n * <bento-user-profile :src=\"userAvatarSrc\" username=\"Jane\" />\n */\n export default defineComponent({\n name: 'bento-avatar',\n components: { AvatarImage, BentoTypography },\n props: {\n /**\n * Displays the user profile without the label.\n */\n iconOnly: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Name of the user that will be used both in the label and to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username: {\n type: String,\n required: true,\n },\n\n /**\n * Image src to load the profile picture.\n */\n src: {\n type: String,\n default: null,\n },\n },\n\n setup(props) {\n const { username } = toRefs(props);\n\n const computedAriaLabel = computed(() => (props.iconOnly ? props.username : null));\n const computedUsername = computed(() => (!props.src ? props.username : null));\n const initials = useInitials(username);\n\n // Returns the UTF-16 char code\n const charCode = computed(() => (initials.value ? initials.value.charCodeAt(0) - 65 : null));\n\n // Returns a computed color based on the letter passed\n const avatarColor = computed(() => {\n const numberOfAlphabetLetters = 26;\n const numberOfColors = Object.keys(BentoAvatarImageColor).length;\n const rangeStep = numberOfAlphabetLetters / numberOfColors;\n\n if (charCode.value <= rangeStep) {\n return BentoAvatarImageColor.YELLOW;\n }\n if (charCode.value <= rangeStep * 2) {\n return BentoAvatarImageColor.BLUE;\n }\n if (charCode.value <= rangeStep * 3) {\n return BentoAvatarImageColor.GREEN;\n }\n return BentoAvatarImageColor.RED;\n });\n\n return {\n // Enums\n BentoAvatarImageVariant,\n\n // Values\n computedAriaLabel,\n computedUsername,\n avatarColor,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar.scss\" />\n","<template>\n <span class=\"b-listbox-tag-option\">\n <span aria-hidden=\"true\">\n <bento-tag class=\"b-listbox-tag-option__tag\" :label=\"option.value.toString()\" :variant=\"variant\" />\n </span>\n <bento-typography v-if=\"option.label\" el=\"span\" class=\"b-listbox-tag-option__label\">\n {{ option.label }}\n </bento-typography>\n </span>\n</template>\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import type { BentoListboxOptionItem } from '@/types';\n import { BentoTag, BentoTagVariant } from '@/components/tag';\n import { BentoTypography } from '@/components/typography';\n\n /**\n * A Tag Dropdown option item used in the Dropdown and Filter components.\n */\n export default defineComponent({\n name: 'listbox-tag-option',\n components: {\n BentoTag,\n BentoTypography,\n },\n props: {\n /**\n * The option item that contains all the option item's data.\n * @type {BentoListboxOptionItem}\n */\n option: {\n type: Object as PropType<BentoListboxOptionItem>,\n required: true,\n },\n },\n setup(props) {\n const variant = computed(() => props.option.data as BentoTagVariant);\n\n return {\n // Values\n variant,\n };\n },\n });\n</script>\n<style lang=\"scss\" scoped src=\"./listbox-option-tag.scss\" />\n"],"names":["_sfc_main$1","defineComponent","AvatarImage","BentoTypography","props","username","toRefs","computedAriaLabel","computed","computedUsername","initials","useInitials","charCode","avatarColor","rangeStep","BentoAvatarImageColor","BentoAvatarImageVariant","_sfc_main","BentoTag"],"mappings":";;;;;;;AA+BA,MAAAA,IAAAC,EAAA;AAAA,EAAA,MAAA;AAAA,EACA,YAAA,EAAA,aAAAC,GAAA,iBAAAC,EAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IACA,UAAA;AAAA,MAIA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACA,UAAA;AAAA,MASA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IACA,KAAA;AAAA,MAKA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAC,GAAA;AAGA,UAAA,EAAA,UAAAC,EAAA,IAAAC,EAAAF,CAAA,GAEAG,IAAAC,EAAA,MAAAJ,EAAA,WAAAA,EAAA,WAAA,IAAA,GACAK,IAAAD,EAAA,MAAAJ,EAAA,MAAA,OAAAA,EAAA,QAAA,GACAM,IAAAC,EAAAN,CAAA,GAGAO,IAAAJ,EAAA,MAAAE,EAAA,QAAAA,EAAA,MAAA,WAAA,CAAA,IAAA,KAAA,IAAA,GAGAG,IAAAL,EAAA,MAAA;AAGA,YAAAM,IAAA,KADA,OAAA,KAAAC,CAAA,EAAA;AAGA,aAAAH,EAAA,SAAAE,IACAC,EAAA,SAEAH,EAAA,SAAAE,IAAA,IACAC,EAAA,OAEAH,EAAA,SAAAE,IAAA,IACAC,EAAA,QAEAA,EAAA;AAAA,IAAA,CAAA;AAGA,WAAA;AAAA;AAAA,MAAA,yBAAAC;AAAA;AAAA,MAEA,mBAAAT;AAAA,MAGA,kBAAAE;AAAA,MACA,aAAAI;AAAA,IACA;AAAA,EACA;AAEA,CAAA;;;;;;;;;;;;;;qBCnFAI,IAAAhB,EAAA;AAAA,EAAA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,UAAAiB;AAAA,IACA,iBAAAf;AAAA,EACA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACA,QAAA;AAAA,MAKA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAC,GAAA;AAIA,WAAA;AAAA;AAAA,MAAA,SAFAI,EAAA,MAAAJ,EAAA,OAAA,IAAA;AAAA,IAIA;AAAA,EACA;AAEA,CAAA;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"listbox-option-tag.8708be60.js","sources":["../../src/components/internal/avatar/avatar.vue","../../src/components/internal/listbox/components/listbox-option-tag/listbox-option-tag.vue"],"sourcesContent":["<template>\n <div class=\"b-avatar\" :aria-label=\"computedAriaLabel\">\n <avatar-image\n :src=\"src\"\n :username=\"computedUsername\"\n :variant=\"BentoAvatarImageVariant.SMALL\"\n :color=\"avatarColor\"\n />\n <bento-typography v-if=\"!iconOnly\" class=\"b-avatar__label\" el=\"span\" variant=\"body\">\n {{ username }}\n </bento-typography>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, toRefs } from 'vue';\n import { AvatarImage, BentoAvatarImageColor, BentoAvatarImageVariant } from '@/components/avatar-image';\n import { BentoTypography } from '@/components/typography';\n import { useInitials } from '@/composables';\n\n /**\n * Displays an user profile including an avatar and optionally a label.\n *\n * @example\n * import { BentoUserProfile } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoUserProfile },\n * template: `\n * <bento-user-profile :src=\"userAvatarSrc\" username=\"Jane\" />\n */\n export default defineComponent({\n name: 'bento-avatar',\n components: { AvatarImage, BentoTypography },\n props: {\n /**\n * Displays the user profile without the label.\n */\n iconOnly: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Name of the user that will be used both in the label and to extract initials to display default value.\n * John => J\n * John Smith => JS\n * John Smith Doe => JD\n * John Smith Doe Holly => JH\n */\n username: {\n type: String,\n required: true,\n },\n\n /**\n * Image src to load the profile picture.\n */\n src: {\n type: String,\n default: null,\n },\n },\n\n setup(props) {\n const { username } = toRefs(props);\n\n const computedAriaLabel = computed(() => (props.iconOnly ? props.username : null));\n const computedUsername = computed(() => (!props.src ? props.username : null));\n const initials = useInitials(username);\n\n // Returns the UTF-16 char code\n const charCode = computed(() => (initials.value ? initials.value.charCodeAt(0) - 65 : null));\n\n // Returns a computed color based on the letter passed\n const avatarColor = computed(() => {\n const numberOfAlphabetLetters = 26;\n const numberOfColors = Object.keys(BentoAvatarImageColor).length;\n const rangeStep = numberOfAlphabetLetters / numberOfColors;\n\n if (charCode.value <= rangeStep) {\n return BentoAvatarImageColor.YELLOW;\n }\n if (charCode.value <= rangeStep * 2) {\n return BentoAvatarImageColor.BLUE;\n }\n if (charCode.value <= rangeStep * 3) {\n return BentoAvatarImageColor.GREEN;\n }\n return BentoAvatarImageColor.RED;\n });\n\n return {\n // Enums\n BentoAvatarImageVariant,\n\n // Values\n computedAriaLabel,\n computedUsername,\n avatarColor,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./avatar.scss\" />\n","<template>\n <span class=\"b-listbox-tag-option\">\n <span aria-hidden=\"true\">\n <bento-tag class=\"b-listbox-tag-option__tag\" :label=\"option.value.toString()\" :variant=\"variant\" />\n </span>\n <bento-typography v-if=\"option.label\" el=\"span\" class=\"b-listbox-tag-option__label\">\n {{ option.label }}\n </bento-typography>\n </span>\n</template>\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import type { BentoListboxOptionItem } from '@/types';\n import { BentoTag, BentoTagVariant } from '@/components/tag';\n import { BentoTypography } from '@/components/typography';\n\n /**\n * A Tag Dropdown option item used in the Dropdown and Filter components.\n */\n export default defineComponent({\n name: 'listbox-tag-option',\n components: {\n BentoTag,\n BentoTypography,\n },\n props: {\n /**\n * The option item that contains all the option item's data.\n * @type {BentoListboxOptionItem}\n */\n option: {\n type: Object as PropType<BentoListboxOptionItem>,\n required: true,\n },\n },\n setup(props) {\n const variant = computed(() => props.option.data as BentoTagVariant);\n\n return {\n // Values\n variant,\n };\n },\n });\n</script>\n<style lang=\"scss\" scoped src=\"./listbox-option-tag.scss\" />\n"],"names":["_sfc_main$1","defineComponent","AvatarImage","BentoTypography","props","username","toRefs","computedAriaLabel","computed","computedUsername","initials","useInitials","charCode","avatarColor","rangeStep","BentoAvatarImageColor","BentoAvatarImageVariant","_sfc_main","BentoTag"],"mappings":";;;;;;;AA+BA,MAAAA,IAAAC,EAAA;AAAA,EAAA,MAAA;AAAA,EACA,YAAA,EAAA,aAAAC,GAAA,iBAAAC,EAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IACA,UAAA;AAAA,MAIA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACA,UAAA;AAAA,MASA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IACA,KAAA;AAAA,MAKA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAC,GAAA;AAGA,UAAA,EAAA,UAAAC,EAAA,IAAAC,EAAAF,CAAA,GAEAG,IAAAC,EAAA,MAAAJ,EAAA,WAAAA,EAAA,WAAA,IAAA,GACAK,IAAAD,EAAA,MAAAJ,EAAA,MAAA,OAAAA,EAAA,QAAA,GACAM,IAAAC,EAAAN,CAAA,GAGAO,IAAAJ,EAAA,MAAAE,EAAA,QAAAA,EAAA,MAAA,WAAA,CAAA,IAAA,KAAA,IAAA,GAGAG,IAAAL,EAAA,MAAA;AAGA,YAAAM,IAAA,KADA,OAAA,KAAAC,CAAA,EAAA;AAGA,aAAAH,EAAA,SAAAE,IACAC,EAAA,SAEAH,EAAA,SAAAE,IAAA,IACAC,EAAA,OAEAH,EAAA,SAAAE,IAAA,IACAC,EAAA,QAEAA,EAAA;AAAA,IAAA,CAAA;AAGA,WAAA;AAAA;AAAA,MAAA,yBAAAC;AAAA;AAAA,MAEA,mBAAAT;AAAA,MAGA,kBAAAE;AAAA,MACA,aAAAI;AAAA,IACA;AAAA,EACA;AAEA,CAAA;;;;;;;;;;;;;;qBCnFAI,IAAAhB,EAAA;AAAA,EAAA,MAAA;AAAA,EACA,YAAA;AAAA,IACA,UAAAiB;AAAA,IACA,iBAAAf;AAAA,EACA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IACA,QAAA;AAAA,MAKA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAC,GAAA;AAIA,WAAA;AAAA;AAAA,MAAA,SAFAI,EAAA,MAAAJ,EAAA,OAAA,IAAA;AAAA,IAIA;AAAA,EACA;AAEA,CAAA;;;;;;;;;;;;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as d, computed as r } from "vue";
2
2
  import { BentoLoadingIndicator as p } from "../loading-indicator.js";
3
- import { a as i } from "./button.9d6435ae.js";
3
+ import { a as i } from "./button.cb90b55c.js";
4
4
  import { C as u } from "./cross-circle-fill.27580c4b.js";
5
5
  import { C as _ } from "./checkmark-circle-fill.345311d2.js";
6
6
  import { n as f } from "./_plugin-vue2_normalizer.71e2aa87.js";
@@ -96,4 +96,4 @@ export {
96
96
  T as B,
97
97
  e as a
98
98
  };
99
- //# sourceMappingURL=loading-button.eafc9e1b.js.map
99
+ //# sourceMappingURL=loading-button.692dbdc8.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"loading-button.eafc9e1b.js","sources":["../../src/components/button/components/loading-button/loading-button.types.ts","../../src/components/button/components/loading-button/loading-button.vue"],"sourcesContent":["export enum BentoLoadingButtonState {\n START = 'start',\n LOADING = 'loading',\n SUCCESS = 'success',\n FAIL = 'fail',\n}\n\nexport type BentoLoadingButtonIconState = Partial<{ [key in BentoLoadingButtonState]: string }>;\n","<template>\n <bento-button\n :critical=\"isCritical\"\n :variant=\"variant\"\n :condensed=\"condensed\"\n :disabled=\"disabled\"\n :inverse=\"inverse\"\n class=\"b-loading-button\"\n :class=\"conditionalClasses\"\n @click.capture.stop=\"onClick\"\n >\n <slot></slot>\n <template v-if=\"state !== 'start'\" #iconLeft>\n <span class=\"b-loading-button__icon\" data-testid=\"loading-button-rotating-icon\">\n <cross v-if=\"state === 'fail'\" svg-title=\"failed\" />\n <checkmark v-else-if=\"state === 'success'\" svg-title=\"succeded\" />\n <!-- TODO: Replace with new loading-indicator component -->\n <bento-loading-indicator v-else-if=\"state === 'loading'\" small :inverse=\"isInverseLoadingIndicator\" />\n </span>\n </template>\n </bento-button>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, PropType } from 'vue';\n import { BentoLoadingButtonState } from './loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import BentoButton from '@/components/button/button.vue';\n import Cross from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import Checkmark from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n\n const props = defineProps({\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: BentoButton.props.condensed.type,\n default: false,\n },\n\n /**\n * Displays loading-button as critical\n */\n critical: {\n type: BentoButton.props.critical.type,\n default: false,\n },\n\n /**\n * Disables button functonality\n */\n disabled: {\n type: BentoButton.props.disabled.type,\n default: false,\n },\n\n /**\n * Sets color set to inverse\n */\n inverse: {\n type: Boolean,\n default: false,\n },\n\n /**\n * State of the button.\n * @values start, loading, success, fail\n */\n state: {\n type: String as PropType<BentoLoadingButtonState | `${BentoLoadingButtonState}`>,\n default: BentoLoadingButtonState.START,\n validator: (value: BentoLoadingButtonState) => Object.values(BentoLoadingButtonState).includes(value),\n },\n\n /**\n * Types of flavour of Button\n * @values primary, secondary, tertiary\n */\n variant: {\n type: BentoButton.props.variant.type,\n default: 'primary',\n validator: BentoButton.props.variant.validator,\n },\n });\n\n const emit = defineEmits<{\n /**\n * Click event handler\n */\n (e: 'click', event: MouseEvent): void;\n }>();\n\n const conditionalClasses = computed(() => ({\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.LOADING}`]:\n props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n 'b-loading-button--loading': props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.SUCCESS}`]:\n props.state === BentoLoadingButtonState.SUCCESS,\n [`b-loading-button--inverse`]: props.inverse,\n }));\n\n const isInverseLoadingIndicator = computed(\n () => (props.variant === 'primary' && !props.inverse) || (props.variant !== 'primary' && props.inverse)\n );\n const isCritical = computed(\n () =>\n (props.critical && props.state === BentoLoadingButtonState.START) ||\n props.state === BentoLoadingButtonState.FAIL\n );\n\n const onClick = (e: MouseEvent) => {\n // Prevent Vue3 from triggering event twice\n e.stopPropagation();\n\n if (props.state !== BentoLoadingButtonState.LOADING) {\n emit('click', e);\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Loading Button component is used for cases where pressing a button starts an event that requires a loading state, e.g. when you have any sort of asynchronous action and are waiting for a response\n *\n * @example\n * import { BentoLoadingButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoLoadingButton },\n * template: `\n * <bento-loading-button state=\"loading\" variant=\"secondary\">\n * Loading\n * </bento-loading button>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./loading-button.scss\" />\n"],"names":["BentoLoadingButtonState","BentoLoadingButtonState2","__default__","conditionalClasses","computed","props","isInverseLoadingIndicator","isCritical","e","emit"],"mappings":";;;;;;;AAAY,IAAAA,IAAA,kBAAAC,OACRA,EAAA,QAAA,SACAA,EAAA,UAAA,WACAA,EAAA,UAAA,WACAA,EAAA,OAAA,QAJQA,IAAAD,KAAA,CAAA,CAAA;ACwIR,MAAAE,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA5CAC,IAAAC,EAAA,OAAA;AAAA,MAA2C,CAAA,qBAAAC,EAAA,WAAAL,EAAA,SAAA,GAAAK,EAAA,UAAAL,EAAA,WAAA,CAAAK,EAAA;AAAA,MAEuB,6BAAAA,EAAA,UAAAL,EAAA,WAAA,CAAAK,EAAA;AAAA,MACyB,CAAA,qBAAAA,EAAA,WAAAL,EAAA,SAAA,GAAAK,EAAA,UAAAL,EAAA;AAAA,MAE3C,CAAA,2BAAA,GAAAK,EAAA;AAAA,IACP,EAAA,GAGzCC,IAAAF;AAAA,MAAkC,MAAAC,EAAA,YAAA,aAAA,CAAAA,EAAA,WAAAA,EAAA,YAAA,aAAAA,EAAA;AAAA,IACiE,GAEnGE,IAAAH;AAAA,MAAmB,MAAAC,EAAA,YAAAA,EAAA,UAAAL,EAAA,SAAAK,EAAA,UAAAL,EAAA;AAAA,IAG6B;wHAGhD,CAAAQ,MAAA;AAEI,MAAAA,EAAA,gBAAA,GAEAH,EAAA,UAAAL,EAAA,WACIS,EAAA,SAAAD,CAAA;AAAA,IACJ;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"loading-button.692dbdc8.js","sources":["../../src/components/button/components/loading-button/loading-button.types.ts","../../src/components/button/components/loading-button/loading-button.vue"],"sourcesContent":["export enum BentoLoadingButtonState {\n START = 'start',\n LOADING = 'loading',\n SUCCESS = 'success',\n FAIL = 'fail',\n}\n\nexport type BentoLoadingButtonIconState = Partial<{ [key in BentoLoadingButtonState]: string }>;\n","<template>\n <bento-button\n :critical=\"isCritical\"\n :variant=\"variant\"\n :condensed=\"condensed\"\n :disabled=\"disabled\"\n :inverse=\"inverse\"\n class=\"b-loading-button\"\n :class=\"conditionalClasses\"\n @click.capture.stop=\"onClick\"\n >\n <slot></slot>\n <template v-if=\"state !== 'start'\" #iconLeft>\n <span class=\"b-loading-button__icon\" data-testid=\"loading-button-rotating-icon\">\n <cross v-if=\"state === 'fail'\" svg-title=\"failed\" />\n <checkmark v-else-if=\"state === 'success'\" svg-title=\"succeded\" />\n <!-- TODO: Replace with new loading-indicator component -->\n <bento-loading-indicator v-else-if=\"state === 'loading'\" small :inverse=\"isInverseLoadingIndicator\" />\n </span>\n </template>\n </bento-button>\n</template>\n\n<script setup lang=\"ts\">\n import { computed, PropType } from 'vue';\n import { BentoLoadingButtonState } from './loading-button.types';\n import { BentoLoadingIndicator } from '@/components/loading-indicator';\n import BentoButton from '@/components/button/button.vue';\n import Cross from '@adyen/ui-assets-icons-16/vue/cross-circle-fill';\n import Checkmark from '@adyen/ui-assets-icons-16/vue/checkmark-circle-fill';\n\n const props = defineProps({\n /**\n * Reduces sizing of button\n */\n condensed: {\n type: BentoButton.props.condensed.type,\n default: false,\n },\n\n /**\n * Displays loading-button as critical\n */\n critical: {\n type: BentoButton.props.critical.type,\n default: false,\n },\n\n /**\n * Disables button functonality\n */\n disabled: {\n type: BentoButton.props.disabled.type,\n default: false,\n },\n\n /**\n * Sets color set to inverse\n */\n inverse: {\n type: Boolean,\n default: false,\n },\n\n /**\n * State of the button.\n * @values start, loading, success, fail\n */\n state: {\n type: String as PropType<BentoLoadingButtonState | `${BentoLoadingButtonState}`>,\n default: BentoLoadingButtonState.START,\n validator: (value: BentoLoadingButtonState) => Object.values(BentoLoadingButtonState).includes(value),\n },\n\n /**\n * Types of flavour of Button\n * @values primary, secondary, tertiary\n */\n variant: {\n type: BentoButton.props.variant.type,\n default: 'primary',\n validator: BentoButton.props.variant.validator,\n },\n });\n\n const emit = defineEmits<{\n /**\n * Click event handler\n */\n (e: 'click', event: MouseEvent): void;\n }>();\n\n const conditionalClasses = computed(() => ({\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.LOADING}`]:\n props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n 'b-loading-button--loading': props.state === BentoLoadingButtonState.LOADING && !props.disabled,\n [`b-loading-button--${props.variant}-${BentoLoadingButtonState.SUCCESS}`]:\n props.state === BentoLoadingButtonState.SUCCESS,\n [`b-loading-button--inverse`]: props.inverse,\n }));\n\n const isInverseLoadingIndicator = computed(\n () => (props.variant === 'primary' && !props.inverse) || (props.variant !== 'primary' && props.inverse)\n );\n const isCritical = computed(\n () =>\n (props.critical && props.state === BentoLoadingButtonState.START) ||\n props.state === BentoLoadingButtonState.FAIL\n );\n\n const onClick = (e: MouseEvent) => {\n // Prevent Vue3 from triggering event twice\n e.stopPropagation();\n\n if (props.state !== BentoLoadingButtonState.LOADING) {\n emit('click', e);\n }\n };\n</script>\n\n<script lang=\"ts\">\n /**\n * Loading Button component is used for cases where pressing a button starts an event that requires a loading state, e.g. when you have any sort of asynchronous action and are waiting for a response\n *\n * @example\n * import { BentoLoadingButton } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoLoadingButton },\n * template: `\n * <bento-loading-button state=\"loading\" variant=\"secondary\">\n * Loading\n * </bento-loading button>\n * `\n * }\n */\n export default {};\n</script>\n\n<style lang=\"scss\" scoped src=\"./loading-button.scss\" />\n"],"names":["BentoLoadingButtonState","BentoLoadingButtonState2","__default__","conditionalClasses","computed","props","isInverseLoadingIndicator","isCritical","e","emit"],"mappings":";;;;;;;AAAY,IAAAA,IAAA,kBAAAC,OACRA,EAAA,QAAA,SACAA,EAAA,UAAA,WACAA,EAAA,UAAA,WACAA,EAAA,OAAA,QAJQA,IAAAD,KAAA,CAAA,CAAA;ACwIR,MAAAE,IAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA5CAC,IAAAC,EAAA,OAAA;AAAA,MAA2C,CAAA,qBAAAC,EAAA,WAAAL,EAAA,SAAA,GAAAK,EAAA,UAAAL,EAAA,WAAA,CAAAK,EAAA;AAAA,MAEuB,6BAAAA,EAAA,UAAAL,EAAA,WAAA,CAAAK,EAAA;AAAA,MACyB,CAAA,qBAAAA,EAAA,WAAAL,EAAA,SAAA,GAAAK,EAAA,UAAAL,EAAA;AAAA,MAE3C,CAAA,2BAAA,GAAAK,EAAA;AAAA,IACP,EAAA,GAGzCC,IAAAF;AAAA,MAAkC,MAAAC,EAAA,YAAA,aAAA,CAAAA,EAAA,WAAAA,EAAA,YAAA,aAAAA,EAAA;AAAA,IACiE,GAEnGE,IAAAH;AAAA,MAAmB,MAAAC,EAAA,YAAAA,EAAA,UAAAL,EAAA,SAAAK,EAAA,UAAAL,EAAA;AAAA,IAG6B;wHAGhD,CAAAQ,MAAA;AAEI,MAAAA,EAAA,gBAAA,GAEAH,EAAA,UAAAL,EAAA,WACIS,EAAA,SAAAD,CAAA;AAAA,IACJ;;;;;;;;;;;;;;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  import { ref as a, watch as r, defineComponent as p, toRef as _, computed as u, inject as y } from "vue";
2
- import { B as f } from "./index.dd30e538.js";
2
+ import { B as f } from "./index.e29a6907.js";
3
3
  import { S as h } from "./summary-grid.keys.1d1028c2.js";
4
4
  import v from "@adyen/ui-assets-payment-method-icons/vue/unknowncard";
5
5
  import { n as b } from "./_plugin-vue2_normalizer.71e2aa87.js";
@@ -83,4 +83,4 @@ const L = k.exports;
83
83
  export {
84
84
  L as B
85
85
  };
86
- //# sourceMappingURL=payment-method.6c1ce07c.js.map
86
+ //# sourceMappingURL=payment-method.c55dd352.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payment-method.6c1ce07c.js","sources":["../../src/components/payment-method/composables/use-payment-icon/use-payment-icon.ts","../../src/components/payment-method/payment-method.vue"],"sourcesContent":["import { ref, Ref, watch } from 'vue';\n\n/**\n * Generates the payment icon URl from a payment icons string.\n * @param paymentType - the payment icon you wish to generate a URL for.\n * @returns the payment icon URL to the SVG for a specific payment icon.\n */\nexport const paymentMethodToCdnUrl = (paymentType: string) =>\n `https://checkoutshopper-live.cdn.adyen.com/checkoutshopper/images/logos/${paymentType.toLowerCase()}.svg`;\n\n/**\n * Dynamically retrieves the payment method icon SVG from the @adyen/ui-assets-payment-method-icons package.\n *\n * @param type the type of payment method\n * @param useFallback if fallback icon should be used in case of error\n * @returns\n */\nexport const usePaymentIcon = (type: Ref<string>) => {\n const paymentType = ref(type);\n const paymentIconSrc = ref<string>();\n\n watch(\n paymentType,\n newPaymentType => {\n if (newPaymentType == null || newPaymentType === 'Unknowncard') {\n return;\n }\n // TODO: what about when to use checkoutshopper-test? Should we add this to the config of Bento?\n paymentIconSrc.value = paymentMethodToCdnUrl(newPaymentType);\n },\n { immediate: true }\n );\n\n return paymentIconSrc;\n};\n","<template>\n <div class=\"b-payment-method\">\n <div class=\"b-payment-method__icon-container\">\n <img\n v-if=\"type !== 'Unknowncard' && !hasErroredOnImage\"\n aria-hidden=\"true\"\n class=\"b-payment-method__icon\"\n :class=\"conditionalIconClasses\"\n :alt=\"label\"\n :src=\"paymentMethodIconSrc\"\n @error=\"onSrcError\"\n />\n <unknown-card-icon v-else :svg-title=\"label\" aria-hidden=\"true\" />\n </div>\n <div class=\"b-payment-method__label\">\n <span v-if=\"isSummaryGridLayout\">{{ label }}</span>\n <bento-typography v-else el=\"span\">{{ label }}</bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, inject, ref, toRef, watch } from 'vue';\n import { BentoTypography } from '@/components/typography';\n import { SUMMARY_GRID_LAYOUT_INJECTION_KEY } from '@/components/summary-grid/summary-grid.keys';\n import { BentoSummaryGridLayout } from '@/components/summary-grid';\n import { usePaymentIcon } from './composables/use-payment-icon/use-payment-icon';\n import UnknownCardIcon from '@adyen/ui-assets-payment-method-icons/vue/unknowncard';\n\n /**\n * A payment method type component to display the type's icon and label.\n *\n * @example\n * import { BentoPaymentMethod} from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoPaymentMethod },\n * template: `\n * <bento-payment-method type=\"Ideal\" />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-payment-method',\n components: { BentoTypography, UnknownCardIcon },\n props: {\n /**\n * The type of payment method to display.\n */\n type: {\n type: String,\n default: 'Unknowncard',\n },\n\n /**\n * The label describing to the payment method icon.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Render payment method icon in a smaller size\n */\n small: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const type = toRef(props, 'type');\n const hasErroredOnImage = ref(false);\n const paymentMethodIconSrc = usePaymentIcon(type);\n const conditionalIconClasses = computed(() => ({\n 'b-payment-method__icon--small': props.small,\n }));\n\n /* == Summary-grid styles == */\n const registerPaymentMethodInSummaryGrid: BentoSummaryGridLayout = inject(\n SUMMARY_GRID_LAYOUT_INJECTION_KEY,\n () => ({\n isSummaryGridLayout: false,\n })\n );\n\n const { isSummaryGridLayout } = registerPaymentMethodInSummaryGrid();\n\n /**\n * This funciton is fired if the payment image source is not valid and has thrown an error.\n */\n const onSrcError = () => {\n hasErroredOnImage.value = true;\n };\n\n // Reset the image error to be able to load the new payment type\n watch(\n () => type.value,\n (newType, oldType) => {\n if (newType !== oldType) {\n hasErroredOnImage.value = false;\n }\n }\n );\n\n return {\n // Values\n conditionalIconClasses,\n hasErroredOnImage,\n isSummaryGridLayout,\n paymentMethodIconSrc,\n\n // Methods\n onSrcError,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./payment-method.scss\" />\n"],"names":["paymentMethodToCdnUrl","paymentType","usePaymentIcon","type","ref","paymentIconSrc","watch","newPaymentType","_sfc_main","defineComponent","BentoTypography","UnknownCardIcon","props","toRef","hasErroredOnImage","paymentMethodIconSrc","conditionalIconClasses","computed","registerPaymentMethodInSummaryGrid","inject","SUMMARY_GRID_LAYOUT_INJECTION_KEY","isSummaryGridLayout","onSrcError","newType","oldType"],"mappings":";;;;;;AAOO,MAAAA,IAAA,CAAAC,MAAA,2EAAAA,EAAA,YAAA,SAUMC,IAAA,CAAAC,MAAA;AACT,QAAAF,IAAAG,EAAAD,CAAA,GACAE,IAAAD,EAAA;AAEA,SAAAE;AAAA,IAAAL;AAAA,IACI,CAAAM,MAAA;AAEI,MAAAA,KAAA,QAAAA,MAAA,kBAIAF,EAAA,QAAAL,EAAAO,CAAA;AAAA,IAA2D;AAAA,IAC/D,EAAA,WAAA,GAAA;AAAA,EACkB,GAGtBF;AACJ,GCQAG,IAAAC,EAAA;AAAA,EAAA,MAAA;AAAA,EACA,YAAA,EAAA,iBAAAC,GAAA,iBAAAC,EAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IACA,MAAA;AAAA,MAIA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IACA,OAAA;AAAA,MAKA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IACA,OAAA;AAAA,MAKA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAC,GAAA;AAEA,UAAAT,IAAAU,EAAAD,GAAA,MAAA,GACAE,IAAAV,EAAA,EAAA,GACAW,IAAAb,EAAAC,CAAA,GACAa,IAAAC,EAAA,OAAA;AAAA,MAAA,iCAAAL,EAAA;AAAA,IACA,EAAA,GAIAM,IAAAC;AAAA,MAAAC;AAAA,MACA,OAAA;AAAA,QACA,qBAAA;AAAA,MACA;AAAA,IACA,GAGA,EAAA,qBAAAC,EAAA,IAAAH,EAAA,GAKAI,IAAA,MAAA;AACA,MAAAR,EAAA,QAAA;AAAA,IAAA;AAIA,WAAAR;AAAA,MAAA,MAAAH,EAAA;AAAA,MACA,CAAAoB,GAAAC,MAAA;AAEA,QAAAD,MAAAC,MACAV,EAAA,QAAA;AAAA,MACA;AAAA,IACA,GAGA;AAAA;AAAA,MAAA,wBAAAE;AAAA,MAEA,mBAAAF;AAAA,MACA,qBAAAO;AAAA,MACA,sBAAAN;AAAA;AAAA,MACA,YAAAO;AAAA,IAGA;AAAA,EACA;AAEA,CAAA;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"payment-method.c55dd352.js","sources":["../../src/components/payment-method/composables/use-payment-icon/use-payment-icon.ts","../../src/components/payment-method/payment-method.vue"],"sourcesContent":["import { ref, Ref, watch } from 'vue';\n\n/**\n * Generates the payment icon URl from a payment icons string.\n * @param paymentType - the payment icon you wish to generate a URL for.\n * @returns the payment icon URL to the SVG for a specific payment icon.\n */\nexport const paymentMethodToCdnUrl = (paymentType: string) =>\n `https://checkoutshopper-live.cdn.adyen.com/checkoutshopper/images/logos/${paymentType.toLowerCase()}.svg`;\n\n/**\n * Dynamically retrieves the payment method icon SVG from the @adyen/ui-assets-payment-method-icons package.\n *\n * @param type the type of payment method\n * @param useFallback if fallback icon should be used in case of error\n * @returns\n */\nexport const usePaymentIcon = (type: Ref<string>) => {\n const paymentType = ref(type);\n const paymentIconSrc = ref<string>();\n\n watch(\n paymentType,\n newPaymentType => {\n if (newPaymentType == null || newPaymentType === 'Unknowncard') {\n return;\n }\n // TODO: what about when to use checkoutshopper-test? Should we add this to the config of Bento?\n paymentIconSrc.value = paymentMethodToCdnUrl(newPaymentType);\n },\n { immediate: true }\n );\n\n return paymentIconSrc;\n};\n","<template>\n <div class=\"b-payment-method\">\n <div class=\"b-payment-method__icon-container\">\n <img\n v-if=\"type !== 'Unknowncard' && !hasErroredOnImage\"\n aria-hidden=\"true\"\n class=\"b-payment-method__icon\"\n :class=\"conditionalIconClasses\"\n :alt=\"label\"\n :src=\"paymentMethodIconSrc\"\n @error=\"onSrcError\"\n />\n <unknown-card-icon v-else :svg-title=\"label\" aria-hidden=\"true\" />\n </div>\n <div class=\"b-payment-method__label\">\n <span v-if=\"isSummaryGridLayout\">{{ label }}</span>\n <bento-typography v-else el=\"span\">{{ label }}</bento-typography>\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, inject, ref, toRef, watch } from 'vue';\n import { BentoTypography } from '@/components/typography';\n import { SUMMARY_GRID_LAYOUT_INJECTION_KEY } from '@/components/summary-grid/summary-grid.keys';\n import { BentoSummaryGridLayout } from '@/components/summary-grid';\n import { usePaymentIcon } from './composables/use-payment-icon/use-payment-icon';\n import UnknownCardIcon from '@adyen/ui-assets-payment-method-icons/vue/unknowncard';\n\n /**\n * A payment method type component to display the type's icon and label.\n *\n * @example\n * import { BentoPaymentMethod} from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoPaymentMethod },\n * template: `\n * <bento-payment-method type=\"Ideal\" />\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-payment-method',\n components: { BentoTypography, UnknownCardIcon },\n props: {\n /**\n * The type of payment method to display.\n */\n type: {\n type: String,\n default: 'Unknowncard',\n },\n\n /**\n * The label describing to the payment method icon.\n */\n label: {\n type: String,\n required: true,\n },\n\n /**\n * Render payment method icon in a smaller size\n */\n small: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\n const type = toRef(props, 'type');\n const hasErroredOnImage = ref(false);\n const paymentMethodIconSrc = usePaymentIcon(type);\n const conditionalIconClasses = computed(() => ({\n 'b-payment-method__icon--small': props.small,\n }));\n\n /* == Summary-grid styles == */\n const registerPaymentMethodInSummaryGrid: BentoSummaryGridLayout = inject(\n SUMMARY_GRID_LAYOUT_INJECTION_KEY,\n () => ({\n isSummaryGridLayout: false,\n })\n );\n\n const { isSummaryGridLayout } = registerPaymentMethodInSummaryGrid();\n\n /**\n * This funciton is fired if the payment image source is not valid and has thrown an error.\n */\n const onSrcError = () => {\n hasErroredOnImage.value = true;\n };\n\n // Reset the image error to be able to load the new payment type\n watch(\n () => type.value,\n (newType, oldType) => {\n if (newType !== oldType) {\n hasErroredOnImage.value = false;\n }\n }\n );\n\n return {\n // Values\n conditionalIconClasses,\n hasErroredOnImage,\n isSummaryGridLayout,\n paymentMethodIconSrc,\n\n // Methods\n onSrcError,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./payment-method.scss\" />\n"],"names":["paymentMethodToCdnUrl","paymentType","usePaymentIcon","type","ref","paymentIconSrc","watch","newPaymentType","_sfc_main","defineComponent","BentoTypography","UnknownCardIcon","props","toRef","hasErroredOnImage","paymentMethodIconSrc","conditionalIconClasses","computed","registerPaymentMethodInSummaryGrid","inject","SUMMARY_GRID_LAYOUT_INJECTION_KEY","isSummaryGridLayout","onSrcError","newType","oldType"],"mappings":";;;;;;AAOO,MAAAA,IAAA,CAAAC,MAAA,2EAAAA,EAAA,YAAA,SAUMC,IAAA,CAAAC,MAAA;AACT,QAAAF,IAAAG,EAAAD,CAAA,GACAE,IAAAD,EAAA;AAEA,SAAAE;AAAA,IAAAL;AAAA,IACI,CAAAM,MAAA;AAEI,MAAAA,KAAA,QAAAA,MAAA,kBAIAF,EAAA,QAAAL,EAAAO,CAAA;AAAA,IAA2D;AAAA,IAC/D,EAAA,WAAA,GAAA;AAAA,EACkB,GAGtBF;AACJ,GCQAG,IAAAC,EAAA;AAAA,EAAA,MAAA;AAAA,EACA,YAAA,EAAA,iBAAAC,GAAA,iBAAAC,EAAA;AAAA,EACA,OAAA;AAAA;AAAA;AAAA;AAAA,IACA,MAAA;AAAA,MAIA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IACA,OAAA;AAAA,MAKA,MAAA;AAAA,MACA,UAAA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IACA,OAAA;AAAA,MAKA,MAAA;AAAA,MACA,SAAA;AAAA,IACA;AAAA,EACA;AAAA,EACA,MAAAC,GAAA;AAEA,UAAAT,IAAAU,EAAAD,GAAA,MAAA,GACAE,IAAAV,EAAA,EAAA,GACAW,IAAAb,EAAAC,CAAA,GACAa,IAAAC,EAAA,OAAA;AAAA,MAAA,iCAAAL,EAAA;AAAA,IACA,EAAA,GAIAM,IAAAC;AAAA,MAAAC;AAAA,MACA,OAAA;AAAA,QACA,qBAAA;AAAA,MACA;AAAA,IACA,GAGA,EAAA,qBAAAC,EAAA,IAAAH,EAAA,GAKAI,IAAA,MAAA;AACA,MAAAR,EAAA,QAAA;AAAA,IAAA;AAIA,WAAAR;AAAA,MAAA,MAAAH,EAAA;AAAA,MACA,CAAAoB,GAAAC,MAAA;AAEA,QAAAD,MAAAC,MACAV,EAAA,QAAA;AAAA,MACA;AAAA,IACA,GAGA;AAAA;AAAA,MAAA,wBAAAE;AAAA,MAEA,mBAAAF;AAAA,MACA,qBAAAO;AAAA,MACA,sBAAAN;AAAA;AAAA,MACA,YAAAO;AAAA,IAGA;AAAA,EACA;AAEA,CAAA;;;;;;;;;;;;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { computed as d, defineComponent as b, reactive as g, nextTick as w } from "vue";
2
- import { l as r } from "./events.58c00e6d.js";
2
+ import { l as r } from "./events.f14a214b.js";
3
3
  import { g as v } from "./unique-id.a2a2b458.js";
4
- import { P as S, a as D, b as N } from "./index.671768a1.js";
4
+ import { P as S, a as D, b as N } from "./index.c8621e8e.js";
5
5
  import { V as W } from "./index.4c062058.js";
6
- import { B as I } from "./index.dd30e538.js";
6
+ import { B as I } from "./index.e29a6907.js";
7
7
  import { n as x } from "./_plugin-vue2_normalizer.71e2aa87.js";
8
8
  import "../assets/tooltip.css";
9
9
  const l = { ...S };
@@ -170,4 +170,4 @@ export {
170
170
  A as a,
171
171
  y as b
172
172
  };
173
- //# sourceMappingURL=tooltip.58ef3f4a.js.map
173
+ //# sourceMappingURL=tooltip.efddb5f3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip.58ef3f4a.js","sources":["../../src/directives/tooltip/tooltip.types.ts","../../src/types/utils-events.ts","../../src/components/tooltip/tooltip.vue","../../src/directives/tooltip/tooltip.ts"],"sourcesContent":["import { PopperContainerPositionBasic } from '@/components/popper-container';\nimport type { DirectiveBinding } from 'vue/types/options';\n\nexport const BentoTooltipPosition = { ...PopperContainerPositionBasic };\nexport type BentoTooltipPosition = PopperContainerPositionBasic;\n\nexport enum BentoTooltipState {\n HIDDEN = 'hidden',\n}\n\nexport interface BentoTooltipDirectiveBinding extends Readonly<DirectiveBinding> {\n readonly value: string;\n}\n","import type { Vue } from 'vue-demi';\n\nexport interface ListenOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n self?: boolean;\n vm?: Vue;\n onCleanup?: () => void;\n}\n\nexport enum EventKey {\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_UP = 'ArrowUp',\n ARROW_RIGHT = 'ArrowRight',\n ARROW_DOWN = 'ArrowDown',\n PAGE_UP = 'PageUp',\n PAGE_DOWN = 'PageDown',\n END = 'End',\n HOME = 'Home',\n}\n\n/**\n * @deprecated `Event.keyCode` is deprecated. Use `EventKey` instead\n */\nexport enum KeyCode {\n ESCAPE = 27,\n ENTER = 13,\n ARROW_LEFT = 37,\n ARROW_UP = 38,\n ARROW_RIGHT = 39,\n ARROW_DOWN = 40,\n PAGE_UP = 33,\n PAGE_DOWN = 34,\n END = 35,\n HOME = 36,\n}\n","<template>\n <popper-container\n :id=\"id\"\n :aria-role=\"PopperContainerAriaRole.TOOLTIP\"\n :aria-hidden=\"!isShown\"\n :arrow=\"{ classes: ['b-tooltip__arrow'] }\"\n :class=\"conditionalClasses\"\n :fallback-position=\"['top', 'bottom', 'right', 'left']\"\n :is-hidden=\"!isShown\"\n :offset=\"[0, 4]\"\n :position=\"position\"\n :tabindex=\"tabIndex\"\n :target-element=\"targetElement\"\n class=\"b-tooltip\"\n >\n <bento-typography el=\"span\" variant=\"caption\">\n {{ content }}\n </bento-typography>\n </popper-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTooltipPosition, BentoTooltipState } from '@/directives/tooltip/tooltip.types';\n import { PopperContainer, PopperContainerAriaRole } from '@/components/popper-container';\n import { BentoTypography } from '@/components/typography';\n import { VueNodeElement } from '@/types';\n\n /**\n * Tooltip container, to be used internally to render the tooltip container where the text is shown.\n */\n export const Tooltip = {\n name: 'tooltip',\n components: { BentoTypography, PopperContainer },\n props: {\n /**\n * The tooltip's id. Necessary for accessibility purposes.\n */\n id: { type: String, default: null },\n /**\n * Tooltip's target reference to the DOM element or Vue component.\n * The tooltip will position itself relatively to target element, in the specified position.\n */\n targetElement: { type: [Element, Object] as PropType<VueNodeElement>, required: true },\n /**\n * Tooltip's position relative to the target element.\n * Possible values are: 'top', 'bottom', 'left' and 'right'.\n */\n position: {\n type: String as PropType<BentoTooltipPosition>,\n default: BentoTooltipPosition.TOP,\n validator: value => Object.values(BentoTooltipPosition).includes(value as BentoTooltipPosition),\n },\n /**\n * Tooltip's offset.\n * If specified, the tooltip will have an offset in pixels between it and the target element\n * in specified position.\n */\n offset: { type: Number, default: 0 },\n /**\n * Tooltip's text content.\n */\n content: { type: String, required: true },\n /**\n * Shows / Hides the Tooltip component\n */\n isShown: { type: Boolean, default: false },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n [`b-tooltip--${BentoTooltipState.HIDDEN}`]: !props.isShown,\n }));\n\n const tabIndex = computed((): number => (props.isShown ? 1 : -1));\n\n return {\n // Enums\n PopperContainerAriaRole,\n\n // Values\n conditionalClasses,\n tabIndex,\n };\n },\n };\n\n export default defineComponent(Tooltip);\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import { nextTick, reactive } from 'vue';\nimport { listen } from '@/utils/ts/events';\nimport { generateUid } from '@/utils/ts/unique-id';\nimport { EventKey } from '@/types/utils-events';\nimport { BentoTooltipDirectiveBinding, BentoTooltipPosition } from './tooltip.types';\nimport { createApp, h, isVue2, Vue2 } from 'vue-demi';\nimport BentoTooltip from '@/components/tooltip/tooltip.vue';\n\ninterface TooltipInstance {\n target: HTMLElement;\n content: string;\n position: BentoTooltipPosition;\n removeListeners: Array<() => void>;\n}\n\n/**\n * Tooltip directive to render a tooltip on a given HTML element or component.\n *\n * @usage\n * import { BentoTooltipDirective, BentoTooltipPosition } from '@adyen/bento-vue2';\n *\n * export default {\n * directives: { BentoTooltipDirective },\n * template: `\n * <bento-button\n * v-bento-tooltip-directive:BentoTooltipPosition.BOTTOM=\"refToTextContent\"\n * >\n * Button text\n * </bento-button>\n * `,\n * }\n */\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\nconst tooltipId = generateUid('tooltip');\n\nlet tooltipVNode;\n\n// Reusable Tooltip component instance.\nlet tooltip;\n// Global visibility state to prevent tooltips from showing after it being instructed to hide\nlet open = false;\n\nconst tooltipProps = reactive({\n targetElement: null,\n content: 'START_MESSAGE',\n id: tooltipId,\n position: undefined,\n isShown: false,\n});\n\n/**\n * Creates a new Tooltip component instance and inserts it into DOM.\n * @param {HTMLElement} el the target element for the Tooltip\n * @internal\n */\nconst createTooltip = (el: HTMLElement) => {\n // Sets the target's tabindex so as to make the tooltip interactive via keyboard navigation\n el.setAttribute('tabindex', '0');\n\n if (isVue2) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Type error for Vue method in Vue 3 but this code only executes in vue 2 so ignoring.\n const TooltipComponent = Vue2.extend(BentoTooltip);\n tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '', id: tooltipId } }).$mount();\n document.body.appendChild(tooltip.$el);\n } else {\n tooltipProps.targetElement = el;\n tooltip = createApp({\n components: { BentoTooltip },\n setup() {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Type error for h method in Vue 2 but this code only executes in vue 3 so ignoring.\n return () => h(BentoTooltip, { ...tooltipProps }, '');\n },\n });\n tooltipVNode = document.createElement('div');\n tooltipVNode.id = 'tooltip-parent';\n document.body.appendChild(tooltipVNode);\n tooltip.mount('#tooltip-parent');\n }\n};\n\n/**\n * Removes Tooltip component instance from the DOM and destroys it.\n * @internal\n */\nconst destroyTooltip = () => {\n if (isVue2) {\n if (document.contains(tooltip.$el)) {\n document.body.removeChild(tooltip.$el);\n }\n tooltip.$destroy();\n } else {\n tooltip.unmount();\n if (document.contains(tooltipVNode)) {\n document.body.removeChild(tooltipVNode);\n }\n }\n\n tooltip = undefined;\n};\n\n/**\n * Returns tooltip position based on the specified argument.\n * By default returns 'top' if no argument is specified.\n * @param {BentoTooltipDirectiveBinding} binding Directive binding object.\n * @returns {string} Tooltip position.\n * @internal\n */\nconst getTooltipPosition = (binding: BentoTooltipDirectiveBinding): BentoTooltipPosition =>\n Object.values(BentoTooltipPosition).includes(binding.arg as BentoTooltipPosition)\n ? (binding.arg as BentoTooltipPosition)\n : BentoTooltipPosition.TOP;\n\n/**\n * Get the correct Tooltip instance for the given target element\n * @param {HTMLElement} el the target element for the Tooltip\n * @returns\n */\nconst getTooltipInstanceForTarget = (el: HTMLElement): TooltipInstance =>\n tooltipInstances.find(\n ctx =>\n // isEqualNode doesn't work correct for svg element, hence the second check here\n ctx.target.isEqualNode(el) && ctx.target === el\n );\n\n/**\n * On mouse enter event updates tooltip with correct content and position, and shows tooltip.\n * @param {?HTMLElement} el - Target element\n * @internal\n */\nconst showTooltip = (el?: HTMLElement) => {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n\n // If tooltip content is empty – do not show the tooltip\n if (!tooltipInstance.content || !el) {\n return;\n }\n\n if (el) {\n el.setAttribute(ariaDescribedByAttr, tooltipId);\n }\n\n // If the Tooltip is inside a dialog, move tooltip element inside of it\n // It gets restored to <body> when it gets hidden\n let isDialogOpen = false;\n document.querySelectorAll('dialog').forEach(node => {\n isDialogOpen = node?.open || isDialogOpen;\n });\n\n if (isDialogOpen) {\n if (isVue2) {\n el.after(tooltip.$el);\n // eslint-disable-next-line no-underscore-dangle\n } else if (tooltip?._instance?.vnode?.el) {\n // eslint-disable-next-line no-underscore-dangle\n el.after(tooltip?._instance?.vnode?.el);\n }\n isDialogOpen = false;\n }\n\n open = true;\n\n tooltip.content = tooltipInstance.content;\n tooltip.position = tooltipInstance.position;\n\n tooltipProps.content = tooltipInstance.content;\n tooltipProps.position = tooltipInstance.position;\n\n // Do calculations on a next tick, otherwise tooltip position calculations will be wrong\n nextTick(() => {\n // Do not open tooltip if it has been instructed to hide in process\n if (!open) {\n return;\n }\n tooltip.targetElement = el;\n tooltip.isShown = true;\n\n tooltipProps.targetElement = el;\n tooltipProps.isShown = true;\n });\n};\n\n/**\n * On mouse leave event hides the tooltip.\n * @internal\n */\nconst hideTooltip = (el?: HTMLElement) => {\n // Restore the tooltip element to body if it got move out of <body>\n if (tooltip.$el?.parentElement?.tagName && tooltip.$el?.parentElement?.tagName !== 'BODY') {\n document.body.appendChild(tooltip.$el);\n }\n\n open = false;\n tooltip.isShown = false;\n tooltipProps.isShown = false;\n if (el) {\n el.removeAttribute(ariaDescribedByAttr);\n }\n};\n\nconst tooltipBind = (el: HTMLElement, binding: BentoTooltipDirectiveBinding) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!binding.hasOwnProperty('value') || binding.value) {\n // Create Tooltip component singleton instance\n if (tooltipInstances.length === 0) {\n createTooltip(el);\n }\n\n const show = () => showTooltip(el);\n const hide = () => hideTooltip(el);\n\n // Create and store context object, which has directive related handlers and content.\n const tooltipInstance: TooltipInstance = {\n target: el,\n content: binding.value,\n position: getTooltipPosition(binding),\n removeListeners: [\n listen(el, 'mouseenter', show),\n listen(el, 'mouseleave', hide),\n listen(el, 'focus', show),\n listen(el, 'blur', hide),\n listen(el, 'keydown', evt => {\n const keyboardEvent = <KeyboardEvent>evt;\n if (keyboardEvent.key === EventKey.ESCAPE) {\n hide();\n }\n }),\n ],\n };\n\n tooltipInstances.push(tooltipInstance);\n }\n};\n\nconst tooltipUpdate = (el: HTMLElement, binding: BentoTooltipDirectiveBinding) => {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n if (tooltipInstance) {\n // Update tooltip content value if it is changed\n if (tooltipInstance?.content !== binding.value) {\n tooltipInstance.content = binding.value;\n // If tooltip is currently shown for current element – update tooltip's content value\n if (tooltip.isShown && tooltip.targetElement.isEqualNode(el)) {\n if (!tooltipInstance.content) {\n tooltip.isShown = false;\n } else {\n tooltip.content = binding.value;\n }\n }\n }\n // Update tooltip position if it is changed\n if (tooltipInstance.position !== binding.arg) {\n const position = getTooltipPosition(binding);\n tooltipInstance.position = position;\n tooltip.position = position;\n }\n } else if (!tooltipInstance && binding.value) {\n // If I don't have a tooltip instance yet but the value passed was updated\n tooltipBind(el, binding);\n }\n};\n\nconst tooltipUnbind = (el: HTMLElement) => {\n const context = getTooltipInstanceForTarget(el);\n\n // Prevent unbinding/removing when there's nothing to unbind, leads to stack overflow errors\n if (!context) {\n return;\n }\n\n context.removeListeners.forEach(removeListener => {\n removeListener();\n });\n\n // If el is removed while tooltip is displayed, the tooltip doesnt hide as\n // there is no el to trigger mouseleave/blur.\n hideTooltip();\n\n tooltipInstances.splice(tooltipInstances.indexOf(context), 1);\n\n // If all the elements using the directive are removed, then no point having\n // the component on the page.\n if (tooltipInstances.length === 0) {\n destroyTooltip();\n }\n};\n\n/**\n * This directive allows you to bind a tooltip to an element.\n * Tooltip can be configured to be shown in one of four positions: 'top', 'left', 'right' and 'bottom'.\n *\n * @example\n * import { BentoTooltipDirective as BentoTooltip, BentoTooltipPosition } from '@adyen/bento-vue2';\n *\n * export default {\n * directives: { BentoTooltip },\n * methods: {\n * contentExpression() {\n * return 'tooltip content';\n * },\n * },\n * template: `<div>\n * <div v-bento-tooltip:left=\"refToTooltipContent\"></div>\n * <div v-bento-tooltip:[TooltipPosition.BOTTOM]=\"refToTooltipContent\"></div>\n *\n * <!-- If you don't specify the position then by default it's `TooltipPosition.TOP` -->\n * <div v-bento-tooltip=\"refToTooltipContent\"></div>\n *\n * <!-- Tooltip content can also be a data property or a method or a computed property as well -->\n * <div v-bento-tooltip=\"contentExpression()\"></div>\n * </div>`,\n * };\n */\nexport const BentoTooltipDirective = {\n // Vue 2 Directive hooks\n bind(el, binding) {\n tooltipBind(el, binding);\n },\n update(el, binding) {\n tooltipUpdate(el, binding);\n },\n unbind(el) {\n tooltipUnbind(el);\n },\n // Vue 3 Directive hooks\n beforeMount(el, binding) {\n tooltipBind(el, binding);\n },\n mounted(el, binding) {\n tooltipUpdate(el, binding);\n },\n updated(el, binding) {\n tooltipUpdate(el, binding);\n },\n unmounted(el) {\n tooltipUnbind(el);\n },\n};\n"],"names":["BentoTooltipPosition","PopperContainerPositionBasic","BentoTooltipState","BentoTooltipState2","EventKey","EventKey2","KeyCode","KeyCode2","Tooltip","BentoTypography","PopperContainer","value","props","conditionalClasses","computed","tabIndex","PopperContainerAriaRole","_sfc_main","defineComponent","tooltipInstances","ariaDescribedByAttr","tooltipId","generateUid","tooltip","open","tooltipProps","reactive","createTooltip","el","TooltipComponent","Vue2","BentoTooltip","destroyTooltip","getTooltipPosition","binding","getTooltipInstanceForTarget","ctx","showTooltip","tooltipInstance","isDialogOpen","node","nextTick","hideTooltip","_b","_a","_d","_c","tooltipBind","show","hide","listen","evt","tooltipUpdate","position","tooltipUnbind","context","removeListener","BentoTooltipDirective"],"mappings":"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"}
1
+ {"version":3,"file":"tooltip.efddb5f3.js","sources":["../../src/directives/tooltip/tooltip.types.ts","../../src/types/utils-events.ts","../../src/components/tooltip/tooltip.vue","../../src/directives/tooltip/tooltip.ts"],"sourcesContent":["import { PopperContainerPositionBasic } from '@/components/popper-container';\nimport type { DirectiveBinding } from 'vue/types/options';\n\nexport const BentoTooltipPosition = { ...PopperContainerPositionBasic };\nexport type BentoTooltipPosition = PopperContainerPositionBasic;\n\nexport enum BentoTooltipState {\n HIDDEN = 'hidden',\n}\n\nexport interface BentoTooltipDirectiveBinding extends Readonly<DirectiveBinding> {\n readonly value: string;\n}\n","import type { Vue } from 'vue-demi';\n\nexport interface ListenOptions {\n capture?: boolean;\n passive?: boolean;\n once?: boolean;\n self?: boolean;\n vm?: Vue;\n onCleanup?: () => void;\n}\n\nexport enum EventKey {\n ESCAPE = 'Escape',\n ENTER = 'Enter',\n ARROW_LEFT = 'ArrowLeft',\n ARROW_UP = 'ArrowUp',\n ARROW_RIGHT = 'ArrowRight',\n ARROW_DOWN = 'ArrowDown',\n PAGE_UP = 'PageUp',\n PAGE_DOWN = 'PageDown',\n END = 'End',\n HOME = 'Home',\n}\n\n/**\n * @deprecated `Event.keyCode` is deprecated. Use `EventKey` instead\n */\nexport enum KeyCode {\n ESCAPE = 27,\n ENTER = 13,\n ARROW_LEFT = 37,\n ARROW_UP = 38,\n ARROW_RIGHT = 39,\n ARROW_DOWN = 40,\n PAGE_UP = 33,\n PAGE_DOWN = 34,\n END = 35,\n HOME = 36,\n}\n","<template>\n <popper-container\n :id=\"id\"\n :aria-role=\"PopperContainerAriaRole.TOOLTIP\"\n :aria-hidden=\"!isShown\"\n :arrow=\"{ classes: ['b-tooltip__arrow'] }\"\n :class=\"conditionalClasses\"\n :fallback-position=\"['top', 'bottom', 'right', 'left']\"\n :is-hidden=\"!isShown\"\n :offset=\"[0, 4]\"\n :position=\"position\"\n :tabindex=\"tabIndex\"\n :target-element=\"targetElement\"\n class=\"b-tooltip\"\n >\n <bento-typography el=\"span\" variant=\"caption\">\n {{ content }}\n </bento-typography>\n </popper-container>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTooltipPosition, BentoTooltipState } from '@/directives/tooltip/tooltip.types';\n import { PopperContainer, PopperContainerAriaRole } from '@/components/popper-container';\n import { BentoTypography } from '@/components/typography';\n import { VueNodeElement } from '@/types';\n\n /**\n * Tooltip container, to be used internally to render the tooltip container where the text is shown.\n */\n export const Tooltip = {\n name: 'tooltip',\n components: { BentoTypography, PopperContainer },\n props: {\n /**\n * The tooltip's id. Necessary for accessibility purposes.\n */\n id: { type: String, default: null },\n /**\n * Tooltip's target reference to the DOM element or Vue component.\n * The tooltip will position itself relatively to target element, in the specified position.\n */\n targetElement: { type: [Element, Object] as PropType<VueNodeElement>, required: true },\n /**\n * Tooltip's position relative to the target element.\n * Possible values are: 'top', 'bottom', 'left' and 'right'.\n */\n position: {\n type: String as PropType<BentoTooltipPosition>,\n default: BentoTooltipPosition.TOP,\n validator: value => Object.values(BentoTooltipPosition).includes(value as BentoTooltipPosition),\n },\n /**\n * Tooltip's offset.\n * If specified, the tooltip will have an offset in pixels between it and the target element\n * in specified position.\n */\n offset: { type: Number, default: 0 },\n /**\n * Tooltip's text content.\n */\n content: { type: String, required: true },\n /**\n * Shows / Hides the Tooltip component\n */\n isShown: { type: Boolean, default: false },\n },\n setup(props) {\n const conditionalClasses = computed(() => ({\n [`b-tooltip--${BentoTooltipState.HIDDEN}`]: !props.isShown,\n }));\n\n const tabIndex = computed((): number => (props.isShown ? 1 : -1));\n\n return {\n // Enums\n PopperContainerAriaRole,\n\n // Values\n conditionalClasses,\n tabIndex,\n };\n },\n };\n\n export default defineComponent(Tooltip);\n</script>\n\n<style lang=\"scss\" scoped src=\"./tooltip.scss\" />\n","import { nextTick, reactive } from 'vue';\nimport { listen } from '@/utils/ts/events';\nimport { generateUid } from '@/utils/ts/unique-id';\nimport { EventKey } from '@/types/utils-events';\nimport { BentoTooltipDirectiveBinding, BentoTooltipPosition } from './tooltip.types';\nimport { createApp, h, isVue2, Vue2 } from 'vue-demi';\nimport BentoTooltip from '@/components/tooltip/tooltip.vue';\n\ninterface TooltipInstance {\n target: HTMLElement;\n content: string;\n position: BentoTooltipPosition;\n removeListeners: Array<() => void>;\n}\n\n/**\n * Tooltip directive to render a tooltip on a given HTML element or component.\n *\n * @usage\n * import { BentoTooltipDirective, BentoTooltipPosition } from '@adyen/bento-vue2';\n *\n * export default {\n * directives: { BentoTooltipDirective },\n * template: `\n * <bento-button\n * v-bento-tooltip-directive:BentoTooltipPosition.BOTTOM=\"refToTextContent\"\n * >\n * Button text\n * </bento-button>\n * `,\n * }\n */\nconst tooltipInstances: Array<TooltipInstance> = [];\nconst ariaDescribedByAttr = 'aria-describedby';\nconst tooltipId = generateUid('tooltip');\n\nlet tooltipVNode;\n\n// Reusable Tooltip component instance.\nlet tooltip;\n// Global visibility state to prevent tooltips from showing after it being instructed to hide\nlet open = false;\n\nconst tooltipProps = reactive({\n targetElement: null,\n content: 'START_MESSAGE',\n id: tooltipId,\n position: undefined,\n isShown: false,\n});\n\n/**\n * Creates a new Tooltip component instance and inserts it into DOM.\n * @param {HTMLElement} el the target element for the Tooltip\n * @internal\n */\nconst createTooltip = (el: HTMLElement) => {\n // Sets the target's tabindex so as to make the tooltip interactive via keyboard navigation\n el.setAttribute('tabindex', '0');\n\n if (isVue2) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Type error for Vue method in Vue 3 but this code only executes in vue 2 so ignoring.\n const TooltipComponent = Vue2.extend(BentoTooltip);\n tooltip = new TooltipComponent({ propsData: { targetElement: el, content: '', id: tooltipId } }).$mount();\n document.body.appendChild(tooltip.$el);\n } else {\n tooltipProps.targetElement = el;\n tooltip = createApp({\n components: { BentoTooltip },\n setup() {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore: Type error for h method in Vue 2 but this code only executes in vue 3 so ignoring.\n return () => h(BentoTooltip, { ...tooltipProps }, '');\n },\n });\n tooltipVNode = document.createElement('div');\n tooltipVNode.id = 'tooltip-parent';\n document.body.appendChild(tooltipVNode);\n tooltip.mount('#tooltip-parent');\n }\n};\n\n/**\n * Removes Tooltip component instance from the DOM and destroys it.\n * @internal\n */\nconst destroyTooltip = () => {\n if (isVue2) {\n if (document.contains(tooltip.$el)) {\n document.body.removeChild(tooltip.$el);\n }\n tooltip.$destroy();\n } else {\n tooltip.unmount();\n if (document.contains(tooltipVNode)) {\n document.body.removeChild(tooltipVNode);\n }\n }\n\n tooltip = undefined;\n};\n\n/**\n * Returns tooltip position based on the specified argument.\n * By default returns 'top' if no argument is specified.\n * @param {BentoTooltipDirectiveBinding} binding Directive binding object.\n * @returns {string} Tooltip position.\n * @internal\n */\nconst getTooltipPosition = (binding: BentoTooltipDirectiveBinding): BentoTooltipPosition =>\n Object.values(BentoTooltipPosition).includes(binding.arg as BentoTooltipPosition)\n ? (binding.arg as BentoTooltipPosition)\n : BentoTooltipPosition.TOP;\n\n/**\n * Get the correct Tooltip instance for the given target element\n * @param {HTMLElement} el the target element for the Tooltip\n * @returns\n */\nconst getTooltipInstanceForTarget = (el: HTMLElement): TooltipInstance =>\n tooltipInstances.find(\n ctx =>\n // isEqualNode doesn't work correct for svg element, hence the second check here\n ctx.target.isEqualNode(el) && ctx.target === el\n );\n\n/**\n * On mouse enter event updates tooltip with correct content and position, and shows tooltip.\n * @param {?HTMLElement} el - Target element\n * @internal\n */\nconst showTooltip = (el?: HTMLElement) => {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n\n // If tooltip content is empty – do not show the tooltip\n if (!tooltipInstance.content || !el) {\n return;\n }\n\n if (el) {\n el.setAttribute(ariaDescribedByAttr, tooltipId);\n }\n\n // If the Tooltip is inside a dialog, move tooltip element inside of it\n // It gets restored to <body> when it gets hidden\n let isDialogOpen = false;\n document.querySelectorAll('dialog').forEach(node => {\n isDialogOpen = node?.open || isDialogOpen;\n });\n\n if (isDialogOpen) {\n if (isVue2) {\n el.after(tooltip.$el);\n // eslint-disable-next-line no-underscore-dangle\n } else if (tooltip?._instance?.vnode?.el) {\n // eslint-disable-next-line no-underscore-dangle\n el.after(tooltip?._instance?.vnode?.el);\n }\n isDialogOpen = false;\n }\n\n open = true;\n\n tooltip.content = tooltipInstance.content;\n tooltip.position = tooltipInstance.position;\n\n tooltipProps.content = tooltipInstance.content;\n tooltipProps.position = tooltipInstance.position;\n\n // Do calculations on a next tick, otherwise tooltip position calculations will be wrong\n nextTick(() => {\n // Do not open tooltip if it has been instructed to hide in process\n if (!open) {\n return;\n }\n tooltip.targetElement = el;\n tooltip.isShown = true;\n\n tooltipProps.targetElement = el;\n tooltipProps.isShown = true;\n });\n};\n\n/**\n * On mouse leave event hides the tooltip.\n * @internal\n */\nconst hideTooltip = (el?: HTMLElement) => {\n // Restore the tooltip element to body if it got move out of <body>\n if (tooltip.$el?.parentElement?.tagName && tooltip.$el?.parentElement?.tagName !== 'BODY') {\n document.body.appendChild(tooltip.$el);\n }\n\n open = false;\n tooltip.isShown = false;\n tooltipProps.isShown = false;\n if (el) {\n el.removeAttribute(ariaDescribedByAttr);\n }\n};\n\nconst tooltipBind = (el: HTMLElement, binding: BentoTooltipDirectiveBinding) => {\n // eslint-disable-next-line no-prototype-builtins\n if (!binding.hasOwnProperty('value') || binding.value) {\n // Create Tooltip component singleton instance\n if (tooltipInstances.length === 0) {\n createTooltip(el);\n }\n\n const show = () => showTooltip(el);\n const hide = () => hideTooltip(el);\n\n // Create and store context object, which has directive related handlers and content.\n const tooltipInstance: TooltipInstance = {\n target: el,\n content: binding.value,\n position: getTooltipPosition(binding),\n removeListeners: [\n listen(el, 'mouseenter', show),\n listen(el, 'mouseleave', hide),\n listen(el, 'focus', show),\n listen(el, 'blur', hide),\n listen(el, 'keydown', evt => {\n const keyboardEvent = <KeyboardEvent>evt;\n if (keyboardEvent.key === EventKey.ESCAPE) {\n hide();\n }\n }),\n ],\n };\n\n tooltipInstances.push(tooltipInstance);\n }\n};\n\nconst tooltipUpdate = (el: HTMLElement, binding: BentoTooltipDirectiveBinding) => {\n const tooltipInstance = getTooltipInstanceForTarget(el);\n if (tooltipInstance) {\n // Update tooltip content value if it is changed\n if (tooltipInstance?.content !== binding.value) {\n tooltipInstance.content = binding.value;\n // If tooltip is currently shown for current element – update tooltip's content value\n if (tooltip.isShown && tooltip.targetElement.isEqualNode(el)) {\n if (!tooltipInstance.content) {\n tooltip.isShown = false;\n } else {\n tooltip.content = binding.value;\n }\n }\n }\n // Update tooltip position if it is changed\n if (tooltipInstance.position !== binding.arg) {\n const position = getTooltipPosition(binding);\n tooltipInstance.position = position;\n tooltip.position = position;\n }\n } else if (!tooltipInstance && binding.value) {\n // If I don't have a tooltip instance yet but the value passed was updated\n tooltipBind(el, binding);\n }\n};\n\nconst tooltipUnbind = (el: HTMLElement) => {\n const context = getTooltipInstanceForTarget(el);\n\n // Prevent unbinding/removing when there's nothing to unbind, leads to stack overflow errors\n if (!context) {\n return;\n }\n\n context.removeListeners.forEach(removeListener => {\n removeListener();\n });\n\n // If el is removed while tooltip is displayed, the tooltip doesnt hide as\n // there is no el to trigger mouseleave/blur.\n hideTooltip();\n\n tooltipInstances.splice(tooltipInstances.indexOf(context), 1);\n\n // If all the elements using the directive are removed, then no point having\n // the component on the page.\n if (tooltipInstances.length === 0) {\n destroyTooltip();\n }\n};\n\n/**\n * This directive allows you to bind a tooltip to an element.\n * Tooltip can be configured to be shown in one of four positions: 'top', 'left', 'right' and 'bottom'.\n *\n * @example\n * import { BentoTooltipDirective as BentoTooltip, BentoTooltipPosition } from '@adyen/bento-vue2';\n *\n * export default {\n * directives: { BentoTooltip },\n * methods: {\n * contentExpression() {\n * return 'tooltip content';\n * },\n * },\n * template: `<div>\n * <div v-bento-tooltip:left=\"refToTooltipContent\"></div>\n * <div v-bento-tooltip:[TooltipPosition.BOTTOM]=\"refToTooltipContent\"></div>\n *\n * <!-- If you don't specify the position then by default it's `TooltipPosition.TOP` -->\n * <div v-bento-tooltip=\"refToTooltipContent\"></div>\n *\n * <!-- Tooltip content can also be a data property or a method or a computed property as well -->\n * <div v-bento-tooltip=\"contentExpression()\"></div>\n * </div>`,\n * };\n */\nexport const BentoTooltipDirective = {\n // Vue 2 Directive hooks\n bind(el, binding) {\n tooltipBind(el, binding);\n },\n update(el, binding) {\n tooltipUpdate(el, binding);\n },\n unbind(el) {\n tooltipUnbind(el);\n },\n // Vue 3 Directive hooks\n beforeMount(el, binding) {\n tooltipBind(el, binding);\n },\n mounted(el, binding) {\n tooltipUpdate(el, binding);\n },\n updated(el, binding) {\n tooltipUpdate(el, binding);\n },\n unmounted(el) {\n tooltipUnbind(el);\n },\n};\n"],"names":["BentoTooltipPosition","PopperContainerPositionBasic","BentoTooltipState","BentoTooltipState2","EventKey","EventKey2","KeyCode","KeyCode2","Tooltip","BentoTypography","PopperContainer","value","props","conditionalClasses","computed","tabIndex","PopperContainerAriaRole","_sfc_main","defineComponent","tooltipInstances","ariaDescribedByAttr","tooltipId","generateUid","tooltip","open","tooltipProps","reactive","createTooltip","el","TooltipComponent","Vue2","BentoTooltip","destroyTooltip","getTooltipPosition","binding","getTooltipInstanceForTarget","ctx","showTooltip","tooltipInstance","isDialogOpen","node","nextTick","hideTooltip","_b","_a","_d","_c","tooltipBind","show","hide","listen","evt","tooltipUpdate","position","tooltipUnbind","context","removeListener","BentoTooltipDirective"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { ref as n, computed as i, getCurrentInstance as c, readonly as u } from "vue";
2
2
  import "./index.4c062058.js";
3
- import { p as d } from "./index.dd30e538.js";
3
+ import { p as d } from "./index.e29a6907.js";
4
4
  import { g as m } from "./unique-id.a2a2b458.js";
5
5
  const a = (t, s) => {
6
6
  const e = t.value.findIndex((o) => o.id === s);
@@ -49,4 +49,4 @@ export {
49
49
  f as t,
50
50
  v as u
51
51
  };
52
- //# sourceMappingURL=use-bento-toast-controller.c3277f73.js.map
52
+ //# sourceMappingURL=use-bento-toast-controller.5dac1f3c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-bento-toast-controller.c3277f73.js","sources":["../../src/composables/use-bento-toast-controller/toast-stack.ts","../../src/composables/use-bento-toast-controller/use-bento-toast-controller.ts"],"sourcesContent":["import { computed, ref, type Ref } from 'vue';\nimport { generateUid } from '@/utils/ts/unique-id';\nimport type { BentoToastItemsList, ToastStack } from './use-bento-toast-controller.types';\n\nconst dismissToast: (stack: Ref<BentoToastItemsList>, id: string) => void = (stack, id) => {\n const toastIndex = stack.value.findIndex(toast => toast.id === id);\n if (toastIndex !== -1) {\n stack.value.splice(toastIndex, 1);\n }\n};\n\nexport const toastStackInjectionKey = Symbol('toast-stack');\n\n/**\n * This utility creates a global reactive state to add new toasts and keep track of them.\n * @returns {ToastStack} An object that contains reactive stack property with all add toasts and a function to add new toasts\n */\nexport const createToastStack: () => ToastStack = () => {\n const stack = ref<BentoToastItemsList>([]);\n\n const addToast = params => {\n const id = generateUid('toast');\n const toast = {\n ...params,\n id,\n dismiss: () => dismissToast(stack, id),\n };\n\n stack.value.unshift(toast);\n\n return {\n dismiss: () => dismissToast(stack, id),\n };\n };\n\n return {\n // Even though stack is a reactive property, its content suppose to be only changed from this module.\n // For this reason we return \"stack\" as readonly prop, but also return methods that can affect \"stack\" content.\n stack: computed(() => Object.freeze(Array.from(stack.value))),\n /**\n * A function that allows to add new toasts\n * @param {Object} params Toast parameters\n * @param {String} params.text A text to display inside the toast\n * @param {Object} [params.action] An object that defines action parameters for the toast\n * @param {String} params.action.text An action button text\n * @param {Function} params.action.handler A callback that would be called when action button is clicked\n * @return {Object} An object that includes \"dismiss\" function to programatically dismiss the toast\n */\n addToast,\n };\n};\n","import { getCurrentInstance, inject, readonly, ref } from 'vue';\nimport { isVue2 } from 'vue-demi';\nimport { printDevelopmentWarning } from '../../utils/ts/print-development-warning';\nimport { toastStackInjectionKey } from './toast-stack';\nimport { UseBentoToastController } from './use-bento-toast-controller.types';\n\nexport function useBentoToastController(): UseBentoToastController {\n const toastStack = isVue2\n ? getCurrentInstance()?.proxy[toastStackInjectionKey]\n : inject(toastStackInjectionKey, null);\n if (!toastStack) {\n printDevelopmentWarning('Toast does not work without Vue.use(BentoPlugin, { withToast: true })');\n // Return placeholder functions so client code won't brake, but Toasts just won't show up\n return {\n stack: readonly(ref([])),\n addToast: () => ({\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- intentional empty function explained by the comment above\n dismiss: () => {},\n }),\n };\n }\n // Return a new object so unintentional reassigning its properties won't override a global state\n return { ...toastStack };\n}\n"],"names":["dismissToast","stack","id","toastIndex","toast","toastStackInjectionKey","createToastStack","ref","addToast","params","generateUid","computed","useBentoToastController","toastStack","_a","getCurrentInstance","printDevelopmentWarning","readonly"],"mappings":";;;;AAIA,MAAMA,IAAsE,CAACC,GAAOC,MAAO;AACvF,QAAMC,IAAaF,EAAM,MAAM,UAAU,CAASG,MAAAA,EAAM,OAAOF,CAAE;AACjE,EAAIC,MAAe,MACTF,EAAA,MAAM,OAAOE,GAAY,CAAC;AAExC,GAEaE,IAAyB,OAAO,aAAa,GAM7CC,IAAqC,MAAM;AAC9C,QAAAL,IAAQM,EAAyB,CAAA,CAAE,GAEnCC,IAAW,CAAUC,MAAA;AACjB,UAAAP,IAAKQ,EAAY,OAAO,GACxBN,IAAQ;AAAA,MACV,GAAGK;AAAA,MACH,IAAAP;AAAA,MACA,SAAS,MAAMF,EAAaC,GAAOC,CAAE;AAAA,IAAA;AAGnC,WAAAD,EAAA,MAAM,QAAQG,CAAK,GAElB;AAAA,MACH,SAAS,MAAMJ,EAAaC,GAAOC,CAAE;AAAA,IAAA;AAAA,EACzC;AAGG,SAAA;AAAA;AAAA;AAAA,IAGH,OAAOS,EAAS,MAAM,OAAO,OAAO,MAAM,KAAKV,EAAM,KAAK,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAU5D,UAAAO;AAAA,EAAA;AAER;AC5CO,SAASI,IAAmD;;AACzD,QAAAC,KACAC,IAAAC,EAAmB,MAAnB,gBAAAD,EAAsB,MAAMT;AAElC,SAAKQ,IAYE,EAAE,GAAGA,OAXRG,EAAwB,uEAAuE,GAExF;AAAA,IACH,OAAOC,EAASV,EAAI,CAAA,CAAE,CAAC;AAAA,IACvB,UAAU,OAAO;AAAA;AAAA,MAEb,SAAS,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EACpB;AAKZ;"}
1
+ {"version":3,"file":"use-bento-toast-controller.5dac1f3c.js","sources":["../../src/composables/use-bento-toast-controller/toast-stack.ts","../../src/composables/use-bento-toast-controller/use-bento-toast-controller.ts"],"sourcesContent":["import { computed, ref, type Ref } from 'vue';\nimport { generateUid } from '@/utils/ts/unique-id';\nimport type { BentoToastItemsList, ToastStack } from './use-bento-toast-controller.types';\n\nconst dismissToast: (stack: Ref<BentoToastItemsList>, id: string) => void = (stack, id) => {\n const toastIndex = stack.value.findIndex(toast => toast.id === id);\n if (toastIndex !== -1) {\n stack.value.splice(toastIndex, 1);\n }\n};\n\nexport const toastStackInjectionKey = Symbol('toast-stack');\n\n/**\n * This utility creates a global reactive state to add new toasts and keep track of them.\n * @returns {ToastStack} An object that contains reactive stack property with all add toasts and a function to add new toasts\n */\nexport const createToastStack: () => ToastStack = () => {\n const stack = ref<BentoToastItemsList>([]);\n\n const addToast = params => {\n const id = generateUid('toast');\n const toast = {\n ...params,\n id,\n dismiss: () => dismissToast(stack, id),\n };\n\n stack.value.unshift(toast);\n\n return {\n dismiss: () => dismissToast(stack, id),\n };\n };\n\n return {\n // Even though stack is a reactive property, its content suppose to be only changed from this module.\n // For this reason we return \"stack\" as readonly prop, but also return methods that can affect \"stack\" content.\n stack: computed(() => Object.freeze(Array.from(stack.value))),\n /**\n * A function that allows to add new toasts\n * @param {Object} params Toast parameters\n * @param {String} params.text A text to display inside the toast\n * @param {Object} [params.action] An object that defines action parameters for the toast\n * @param {String} params.action.text An action button text\n * @param {Function} params.action.handler A callback that would be called when action button is clicked\n * @return {Object} An object that includes \"dismiss\" function to programatically dismiss the toast\n */\n addToast,\n };\n};\n","import { getCurrentInstance, inject, readonly, ref } from 'vue';\nimport { isVue2 } from 'vue-demi';\nimport { printDevelopmentWarning } from '../../utils/ts/print-development-warning';\nimport { toastStackInjectionKey } from './toast-stack';\nimport { UseBentoToastController } from './use-bento-toast-controller.types';\n\nexport function useBentoToastController(): UseBentoToastController {\n const toastStack = isVue2\n ? getCurrentInstance()?.proxy[toastStackInjectionKey]\n : inject(toastStackInjectionKey, null);\n if (!toastStack) {\n printDevelopmentWarning('Toast does not work without Vue.use(BentoPlugin, { withToast: true })');\n // Return placeholder functions so client code won't brake, but Toasts just won't show up\n return {\n stack: readonly(ref([])),\n addToast: () => ({\n // eslint-disable-next-line @typescript-eslint/no-empty-function -- intentional empty function explained by the comment above\n dismiss: () => {},\n }),\n };\n }\n // Return a new object so unintentional reassigning its properties won't override a global state\n return { ...toastStack };\n}\n"],"names":["dismissToast","stack","id","toastIndex","toast","toastStackInjectionKey","createToastStack","ref","addToast","params","generateUid","computed","useBentoToastController","toastStack","_a","getCurrentInstance","printDevelopmentWarning","readonly"],"mappings":";;;;AAIA,MAAMA,IAAsE,CAACC,GAAOC,MAAO;AACvF,QAAMC,IAAaF,EAAM,MAAM,UAAU,CAASG,MAAAA,EAAM,OAAOF,CAAE;AACjE,EAAIC,MAAe,MACTF,EAAA,MAAM,OAAOE,GAAY,CAAC;AAExC,GAEaE,IAAyB,OAAO,aAAa,GAM7CC,IAAqC,MAAM;AAC9C,QAAAL,IAAQM,EAAyB,CAAA,CAAE,GAEnCC,IAAW,CAAUC,MAAA;AACjB,UAAAP,IAAKQ,EAAY,OAAO,GACxBN,IAAQ;AAAA,MACV,GAAGK;AAAA,MACH,IAAAP;AAAA,MACA,SAAS,MAAMF,EAAaC,GAAOC,CAAE;AAAA,IAAA;AAGnC,WAAAD,EAAA,MAAM,QAAQG,CAAK,GAElB;AAAA,MACH,SAAS,MAAMJ,EAAaC,GAAOC,CAAE;AAAA,IAAA;AAAA,EACzC;AAGG,SAAA;AAAA;AAAA;AAAA,IAGH,OAAOS,EAAS,MAAM,OAAO,OAAO,MAAM,KAAKV,EAAM,KAAK,CAAC,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAU5D,UAAAO;AAAA,EAAA;AAER;AC5CO,SAASI,IAAmD;;AACzD,QAAAC,KACAC,IAAAC,EAAmB,MAAnB,gBAAAD,EAAsB,MAAMT;AAElC,SAAKQ,IAYE,EAAE,GAAGA,OAXRG,EAAwB,uEAAuE,GAExF;AAAA,IACH,OAAOC,EAASV,EAAI,CAAA,CAAE,CAAC;AAAA,IACvB,UAAU,OAAO;AAAA;AAAA,MAEb,SAAS,MAAM;AAAA,MAAC;AAAA,IAAA;AAAA,EACpB;AAKZ;"}