@adyen/bento-vue3 1.4.0 → 1.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/accordion.js +2 -2
  2. package/dist/alert.js +3 -3
  3. package/dist/assets/index.css +1 -1
  4. package/dist/assets/index10.css +1 -1
  5. package/dist/assets/index11.css +1 -1
  6. package/dist/assets/index12.css +1 -1
  7. package/dist/assets/index13.css +1 -1
  8. package/dist/assets/index14.css +1 -1
  9. package/dist/assets/index15.css +1 -1
  10. package/dist/assets/index16.css +1 -1
  11. package/dist/assets/index17.css +1 -1
  12. package/dist/assets/index18.css +1 -1
  13. package/dist/assets/index19.css +1 -1
  14. package/dist/assets/index2.css +1 -1
  15. package/dist/assets/index20.css +1 -1
  16. package/dist/assets/index21.css +1 -1
  17. package/dist/assets/index22.css +1 -1
  18. package/dist/assets/index23.css +1 -1
  19. package/dist/assets/index24.css +1 -1
  20. package/dist/assets/index25.css +1 -1
  21. package/dist/assets/index26.css +1 -1
  22. package/dist/assets/index27.css +1 -1
  23. package/dist/assets/index28.css +1 -1
  24. package/dist/assets/index3.css +1 -1
  25. package/dist/assets/index30.css +1 -1
  26. package/dist/assets/index31.css +1 -1
  27. package/dist/assets/index32.css +1 -1
  28. package/dist/assets/index33.css +1 -1
  29. package/dist/assets/index34.css +1 -1
  30. package/dist/assets/index35.css +1 -1
  31. package/dist/assets/index36.css +1 -1
  32. package/dist/assets/index37.css +1 -1
  33. package/dist/assets/index38.css +1 -1
  34. package/dist/assets/index39.css +1 -1
  35. package/dist/assets/index4.css +1 -1
  36. package/dist/assets/index40.css +1 -1
  37. package/dist/assets/index41.css +1 -1
  38. package/dist/assets/index42.css +1 -1
  39. package/dist/assets/index5.css +1 -1
  40. package/dist/assets/index6.css +1 -1
  41. package/dist/assets/index7.css +1 -1
  42. package/dist/assets/index8.css +1 -1
  43. package/dist/assets/index9.css +1 -1
  44. package/dist/avatar-image.js +1 -1
  45. package/dist/badge.js +1 -1
  46. package/dist/button.js +5 -5
  47. package/dist/card.js +2 -2
  48. package/dist/checkbox.js +6 -6
  49. package/dist/chunks/{base-button.6d2843c2.js → base-button.c4ac1ad1.js} +2 -2
  50. package/dist/chunks/{base-button.6d2843c2.js.map → base-button.c4ac1ad1.js.map} +1 -1
  51. package/dist/chunks/{base-modal.3ccb9eb5.js → base-modal.db7a9829.js} +4 -4
  52. package/dist/chunks/{base-modal.3ccb9eb5.js.map → base-modal.db7a9829.js.map} +1 -1
  53. package/dist/chunks/{button.a8462029.js → button.7d09c245.js} +2 -2
  54. package/dist/chunks/{button.a8462029.js.map → button.7d09c245.js.map} +1 -1
  55. package/dist/chunks/{calendar.3f930683.js → calendar.0e42130b.js} +4 -4
  56. package/dist/chunks/{calendar.3f930683.js.map → calendar.0e42130b.js.map} +1 -1
  57. package/dist/chunks/{checkbox.5e1e05ae.js → checkbox.17462cb0.js} +3 -3
  58. package/dist/chunks/{checkbox.5e1e05ae.js.map → checkbox.17462cb0.js.map} +1 -1
  59. package/dist/chunks/{controls-group.3b0dfb94.js → controls-group.0d6db9c0.js} +2 -2
  60. package/dist/chunks/{controls-group.3b0dfb94.js.map → controls-group.0d6db9c0.js.map} +1 -1
  61. package/dist/chunks/{copy.1d14b783.js → copy.c9a29be0.js} +3 -3
  62. package/dist/chunks/{copy.1d14b783.js.map → copy.c9a29be0.js.map} +1 -1
  63. package/dist/chunks/{dropdown-default-textbox.a90e84f9.js → dropdown-default-textbox.cd789a95.js} +2 -2
  64. package/dist/chunks/{dropdown-default-textbox.a90e84f9.js.map → dropdown-default-textbox.cd789a95.js.map} +1 -1
  65. package/dist/chunks/{dropdown.b798a82e.js → dropdown.ff4f94a8.js} +22 -22
  66. package/dist/chunks/{dropdown.b798a82e.js.map → dropdown.ff4f94a8.js.map} +1 -1
  67. package/dist/chunks/{error-message.9acead25.js → error-message.8c67a507.js} +2 -2
  68. package/dist/chunks/{error-message.9acead25.js.map → error-message.8c67a507.js.map} +1 -1
  69. package/dist/chunks/{footer-actions.9537d0df.js → footer-actions.a587e374.js} +3 -3
  70. package/dist/chunks/{footer-actions.9537d0df.js.map → footer-actions.a587e374.js.map} +1 -1
  71. package/dist/chunks/{index.e84dbeae.js → index.140bf28f.js} +2 -2
  72. package/dist/chunks/{index.e84dbeae.js.map → index.140bf28f.js.map} +1 -1
  73. package/dist/chunks/{index.228ecda0.js → index.450b70d5.js} +3 -3
  74. package/dist/chunks/{index.228ecda0.js.map → index.450b70d5.js.map} +1 -1
  75. package/dist/chunks/{index.89b00b94.js → index.77c651df.js} +2 -2
  76. package/dist/chunks/{index.89b00b94.js.map → index.77c651df.js.map} +1 -1
  77. package/dist/chunks/{index.9d8273fc.js → index.ee69b530.js} +6 -6
  78. package/dist/chunks/{index.9d8273fc.js.map → index.ee69b530.js.map} +1 -1
  79. package/dist/chunks/{index.c2a80208.js → index.fd1cd23a.js} +20 -20
  80. package/dist/chunks/{index.c2a80208.js.map → index.fd1cd23a.js.map} +1 -1
  81. package/dist/chunks/{index.d26fdf71.js → index.fdb0c13d.js} +2 -2
  82. package/dist/chunks/{index.d26fdf71.js.map → index.fdb0c13d.js.map} +1 -1
  83. package/dist/chunks/{listbox-option-tag.0c9c571e.js → listbox-option-tag.ffe70226.js} +3 -3
  84. package/dist/chunks/{listbox-option-tag.0c9c571e.js.map → listbox-option-tag.ffe70226.js.map} +1 -1
  85. package/dist/chunks/{listbox.6b52af1a.js → listbox.f535a736.js} +4 -4
  86. package/dist/chunks/{listbox.6b52af1a.js.map → listbox.f535a736.js.map} +1 -1
  87. package/dist/chunks/{loading-button.081adbf3.js → loading-button.bc6e3967.js} +2 -2
  88. package/dist/chunks/{loading-button.081adbf3.js.map → loading-button.bc6e3967.js.map} +1 -1
  89. package/dist/chunks/{tooltip.e4e34b86.js → tooltip.973c86d3.js} +2 -2
  90. package/dist/chunks/{tooltip.e4e34b86.js.map → tooltip.973c86d3.js.map} +1 -1
  91. package/dist/code-snippet.js +7 -7
  92. package/dist/country.js +2 -2
  93. package/dist/currency.js +1 -1
  94. package/dist/data-grid.js +192 -189
  95. package/dist/data-grid.js.map +1 -1
  96. package/dist/date-picker.js +20 -20
  97. package/dist/date-picker.js.map +1 -1
  98. package/dist/date-range-picker.js +2 -2
  99. package/dist/date.js +1 -1
  100. package/dist/divider.js +1 -1
  101. package/dist/dropdown.js +4 -4
  102. package/dist/empty-state.js +3 -3
  103. package/dist/filter-bar.js +13 -13
  104. package/dist/focus-trap.js +1 -1
  105. package/dist/form-layout.js +2 -2
  106. package/dist/header.js +2 -2
  107. package/dist/index.js +14 -14
  108. package/dist/info-icon.js +2 -2
  109. package/dist/input-field.js +4 -4
  110. package/dist/internal.js +6 -6
  111. package/dist/link.js +2 -2
  112. package/dist/loading-indicator.js +1 -1
  113. package/dist/menu.js +4 -4
  114. package/dist/modal.js +3 -3
  115. package/dist/pagination.js +3 -3
  116. package/dist/payment-method.js +2 -2
  117. package/dist/popover.js +3 -3
  118. package/dist/popper-container.js +2 -2
  119. package/dist/radio-group.js +4 -4
  120. package/dist/search-bar.js +2 -2
  121. package/dist/segmented-control.js +4 -4
  122. package/dist/sidepanel.js +5 -5
  123. package/dist/status.js +1 -1
  124. package/dist/structured-list.js +1 -1
  125. package/dist/summary-grid.js +3 -3
  126. package/dist/tabs.js +2 -2
  127. package/dist/tag.js +3 -3
  128. package/dist/textarea.js +4 -4
  129. package/dist/timeline.js +5 -5
  130. package/dist/toast.js +3 -3
  131. package/dist/toggle.js +2 -2
  132. package/dist/typography.js +1 -1
  133. package/dist/web-types.json +1 -1
  134. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as o, computed as d, openBlock as c, createBlock as E, resolveDynamicComponent as T, normalizeClass as u, withCtx as v, renderSlot as I } from "vue";
2
2
  import { _ as O } from "./_plugin-vue_export-helper.dad06003.js";
3
- import "../assets/index36.css";
3
+ import "../assets/index37.css";
4
4
  var e = /* @__PURE__ */ ((t) => (t.CAPTION = "caption", t.BODY = "body", t.SUBTITLE = "subtitle", t.TITLE = "title", t))(e || {}), a = /* @__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))(a || {}), i = /* @__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))(i || {});
5
5
  const D = ["development", "DEVELOPMENT", "dev", "DEV"], $ = () => D.includes(process.env.NODE_ENV);
6
6
  function r(...t) {
@@ -121,4 +121,4 @@ export {
121
121
  _ as d,
122
122
  r as p
123
123
  };
124
- //# sourceMappingURL=index.89b00b94.js.map
124
+ //# sourceMappingURL=index.77c651df.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.89b00b94.js","sources":["../../../vue2/src/components/typography/typography.types.ts","../../../vue2/src/utils/ts/dev-environment.ts","../../../vue2/src/utils/ts/print-development-warning.ts","../../../vue2/src/utils/ts/deprecate.ts","../../../vue2/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(';');\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 printDevelopmentWarning(`%cDEPRECATED:\\x1b[0m ${title}`, DEPRECATION_STYLES);\n // Format multi-line descriptions with the backtick\n printDevelopmentWarning(`${deprecationMessage.replaceAll('\\t', '').replaceAll(' ', '').trim()}`);\n printDevelopmentWarning(`To be removed in: %c${toBeRemovedInVersion}`, DEPRECATION_STYLES);\n}\n","<template>\n <component :is=\"el\" class=\"b-typography\" :class=\"conditionalClasses\" data-testid=\"typography\">\n <slot />\n </component>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypographyElement, BentoTypographyModifier, BentoTypographyVariant } from './typography.types';\n import { deprecate } from '@/utils/ts/deprecate';\n\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 defineComponent({\n name: 'bento-typography',\n inheritAttrs: true,\n props: {\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el: {\n type: String as PropType<BentoTypographyElement | `${BentoTypographyElement}`>,\n default: BentoTypographyElement.PARAGRAPH,\n validator: (value: BentoTypographyElement) => Object.values(BentoTypographyElement).includes(value),\n },\n\n /**\n * Adds the stronger class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n stronger: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the strongest class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n strongest: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the type of typography variant.\n * @values caption, body, title.\n */\n variant: {\n type: String as PropType<BentoTypographyVariant | `${BentoTypographyVariant}`>,\n default: BentoTypographyVariant.BODY,\n validator: (value: BentoTypographyVariant) => Object.values(BentoTypographyVariant).includes(value),\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to the Title variant.\n */\n medium: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the large class modifier.\n * Applicable to the Title variant.\n */\n large: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to tje Body variant.\n */\n wide: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\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\n return {\n conditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./typography.scss\" />\n"],"names":["BentoTypographyVariant","BentoTypographyVariant2","BentoTypographyModifier","BentoTypographyModifier2","BentoTypographyElement","BentoTypographyElement2","DEV_ENVIROMENT_NAMES","isDevelopmentEnviroment","printDevelopmentWarning","args","DEPRECATION_STYLES","deprecate","title","deprecationMessage","toBeRemovedInVersion","_sfc_main","defineComponent","value","props","computed","openBlock","createBlock","resolveDynamicComponent","_ctx","normalizeClass"],"mappings":"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"}
1
+ {"version":3,"file":"index.77c651df.js","sources":["../../../vue2/src/components/typography/typography.types.ts","../../../vue2/src/utils/ts/dev-environment.ts","../../../vue2/src/utils/ts/print-development-warning.ts","../../../vue2/src/utils/ts/deprecate.ts","../../../vue2/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(';');\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 printDevelopmentWarning(`%cDEPRECATED:\\x1b[0m ${title}`, DEPRECATION_STYLES);\n // Format multi-line descriptions with the backtick\n printDevelopmentWarning(`${deprecationMessage.replaceAll('\\t', '').replaceAll(' ', '').trim()}`);\n printDevelopmentWarning(`To be removed in: %c${toBeRemovedInVersion}`, DEPRECATION_STYLES);\n}\n","<template>\n <component :is=\"el\" class=\"b-typography\" :class=\"conditionalClasses\" data-testid=\"typography\">\n <slot />\n </component>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType } from 'vue';\n import { BentoTypographyElement, BentoTypographyModifier, BentoTypographyVariant } from './typography.types';\n import { deprecate } from '@/utils/ts/deprecate';\n\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 defineComponent({\n name: 'bento-typography',\n inheritAttrs: true,\n props: {\n /**\n * Sets the HTML DOM element.\n * @values h1, h2, h3, h4, h5, h6, div, p, span\n */\n el: {\n type: String as PropType<BentoTypographyElement | `${BentoTypographyElement}`>,\n default: BentoTypographyElement.PARAGRAPH,\n validator: (value: BentoTypographyElement) => Object.values(BentoTypographyElement).includes(value),\n },\n\n /**\n * Adds the stronger class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n stronger: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the strongest class modifier.\n * Applicable to Caption, Body and Subtitle variants.\n */\n strongest: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Sets the type of typography variant.\n * @values caption, body, title.\n */\n variant: {\n type: String as PropType<BentoTypographyVariant | `${BentoTypographyVariant}`>,\n default: BentoTypographyVariant.BODY,\n validator: (value: BentoTypographyVariant) => Object.values(BentoTypographyVariant).includes(value),\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to the Title variant.\n */\n medium: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the large class modifier.\n * Applicable to the Title variant.\n */\n large: {\n type: Boolean,\n default: false,\n },\n\n /**\n * Adds the medium class modifier.\n * Applicable to tje Body variant.\n */\n wide: {\n type: Boolean,\n default: false,\n },\n },\n setup(props) {\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\n return {\n conditionalClasses,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./typography.scss\" />\n"],"names":["BentoTypographyVariant","BentoTypographyVariant2","BentoTypographyModifier","BentoTypographyModifier2","BentoTypographyElement","BentoTypographyElement2","DEV_ENVIROMENT_NAMES","isDevelopmentEnviroment","printDevelopmentWarning","args","DEPRECATION_STYLES","deprecate","title","deprecationMessage","toBeRemovedInVersion","_sfc_main","defineComponent","value","props","computed","openBlock","createBlock","resolveDynamicComponent","_ctx","normalizeClass"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { defineComponent as _, openBlock as o, createElementBlock as u, renderSlot as m, inject as I, computed as c, resolveComponent as e, resolveDirective as T, normalizeClass as k, createElementVNode as a, createVNode as l, withCtx as d, createTextVNode as N, toDisplayString as D, createBlock as r, createCommentVNode as i, withDirectives as E } from "vue";
2
2
  import { _ as y } from "./_plugin-vue_export-helper.dad06003.js";
3
- import { a as V } from "./button.a8462029.js";
3
+ import { a as V } from "./button.7d09c245.js";
4
4
  import { BentoInfoIcon as L } from "../info-icon.js";
5
- import { B as O, a as p } from "./index.89b00b94.js";
6
- import { C as U } from "./copy.1d14b783.js";
5
+ import { B as O, a as p } from "./index.77c651df.js";
6
+ import { C as U } from "./copy.c9a29be0.js";
7
7
  import { S as j } from "./search.d18f9657.js";
8
- import { b as w } from "./tooltip.e4e34b86.js";
9
- import "../assets/index41.css";
8
+ import { b as w } from "./tooltip.973c86d3.js";
9
+ import "../assets/index4.css";
10
10
  const R = _({
11
11
  name: "bento-structured-list"
12
12
  });
@@ -131,4 +131,4 @@ export {
131
131
  z as S,
132
132
  et as a
133
133
  };
134
- //# sourceMappingURL=index.9d8273fc.js.map
134
+ //# sourceMappingURL=index.ee69b530.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.9d8273fc.js","sources":["../../../vue2/src/components/structured-list/structured-list.vue","../../../vue2/src/components/structured-list/structured-list.keys.ts","../../../vue2/src/components/structured-list/components/structered-list-item/structured-list-item.vue"],"sourcesContent":["<template>\n <dl class=\"b-structured-list\">\n <slot />\n </dl>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent } from 'vue';\n\n /**\n * This is a list used to display pairs of information in a clear and organized manner.\n * `BentoStructureListItem` should be used to pass the label/value pairs to the list.\n *\n * @example\n * import { BentoStructuredListItem, BentoStructuredListItem } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoStructuredList, BentoStructuredListItem },\n * template: `\n * <bento-structured-list>\n * <bento-structured-list-item label=\"Payment\">\n * <bento-payment-method label=\"Klarna\" type=\"Klarna\" />\n * </bento-structured-list-item>\n * <bento-structured-list-item label=\"Amount\">\n * <bento-currency :currency=\"BentoCurrencyISOCode.USD\">\n * 123456\n * </bento-currency>\n * </bento-structured-list-item>\n * </bento-structured-list>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-structured-list',\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./structured-list.scss\" />\n","export const STRUCTURED_LIST_CONDENSED_INJECTION_KEY = Symbol('structured list condensed style injection key');\n","<template>\n <div class=\"b-structured-list-item\" :class=\"conditionalClasses\">\n <dt class=\"b-structured-list-item__label\">\n <bento-typography :variant=\"labelTypographyVariant\">\n {{ label }}\n </bento-typography>\n <bento-info-icon v-if=\"labelInfo\" class=\"b-structured-list-item__icon\" :tooltip-text=\"labelInfo\" />\n </dt>\n <dd class=\"b-structured-list-item__value\">\n <slot />\n <copy v-if=\"copy\" class=\"b-structured-list-item__icon\" :text=\"copy\" />\n <bento-button\n v-if=\"search\"\n v-bento-tooltip-directive:top=\"searchTooltip ? searchTooltip : $t('search')\"\n class=\"b-structured-list-item__icon\"\n variant=\"tertiary\"\n @click=\"search\"\n >\n <template #iconLeft>\n <search-icon :svg-title=\"$t('search')\" />\n </template>\n </bento-button>\n </dd>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, inject, PropType } from 'vue';\n\n // Components\n import { BentoButton } from '@/components/button';\n import { BentoInfoIcon } from '@/components/info-icon';\n import { BentoTypography, BentoTypographyVariant } from '@/components/typography';\n import Copy from '@/components/internal/copy/copy.vue';\n import SearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n\n // Directives\n import { BentoTooltipDirective } from '@/directives';\n\n // Keys\n import { STRUCTURED_LIST_CONDENSED_INJECTION_KEY } from '../../structured-list.keys';\n\n import messages from '../../messages.json';\n\n /**\n * This is an item of the `BentoStructuredList` meant to be used only with that component.\n * It consists of a label/value pair, and also the optional copy and search modifiers.\n *\n * @example\n * import { BentoCurrencyISOCode, BentoStructuredListItem, BentoStructuredListItem } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoStructuredListItem, BentoStructuredListItem },\n * template: `\n * <bento-structured-list>\n * <bento-structured-list-item label=\"Shopper\" search='searchShopper' search-tooltip='Find shopper'>\n * <bento-typography>\n * 143442642\n * </bento-status>\n * </bento-structured-list-item>\n * <bento-structured-list-item label=\"Amount\" copy='123456'>\n * <bento-currency :currency=\"BentoCurrencyISOCode.USD\">\n * 123456\n * </bento-currency>\n * </bento-structured-list-item>\n * </bento-structured-list>\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-structured-list-item',\n components: {\n BentoButton,\n BentoInfoIcon,\n BentoTypography,\n Copy,\n SearchIcon,\n },\n directives: { BentoTooltipDirective },\n props: {\n /**\n * Label to display for the value\n */\n label: {\n type: String,\n required: true,\n },\n /**\n * Text to display in info icon tooltip in the label to display for the value\n */\n labelInfo: {\n type: String,\n default: undefined,\n },\n /**\n * Text to copy when the user clicks `Copy` icon\n */\n copy: {\n type: String,\n default: undefined,\n },\n /**\n * Function to trigger when user clicks `Search` icon\n */\n search: {\n type: Function as PropType<(event: Event) => void>,\n default: undefined,\n },\n /**\n * Text to display when the user hovers over `Search` icon\n */\n searchTooltip: {\n type: String,\n default: undefined,\n },\n },\n setup() {\n const isCondensed = inject(STRUCTURED_LIST_CONDENSED_INJECTION_KEY, false);\n\n const conditionalClasses = computed(() => ({\n 'b-structured-list-item--condensed': isCondensed,\n }));\n\n const labelTypographyVariant = computed(() =>\n isCondensed ? BentoTypographyVariant.CAPTION : BentoTypographyVariant.BODY\n );\n\n return {\n // Values\n conditionalClasses,\n labelTypographyVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./structured-list-item.scss\" />\n"],"names":["_sfc_main$1","defineComponent","STRUCTURED_LIST_CONDENSED_INJECTION_KEY","_sfc_main","messages","BentoButton","BentoInfoIcon","BentoTypography","Copy","SearchIcon","BentoTooltipDirective","isCondensed","inject","conditionalClasses","computed","labelTypographyVariant","BentoTypographyVariant","_directive_bento_tooltip_directive","resolveDirective","createElementVNode","_hoisted_1","createVNode","_component_bento_typography","_ctx","withCtx","createCommentVNode","_hoisted_2","renderSlot","openBlock","createBlock","_component_copy","_component_search_icon"],"mappings":";;;;;;;;;AAgCI,MAAAA,IAAAC,EAAA;AAAA,EAA+B,MAAA;AAE/B,CAAA;;;;;;;oFClCSC,IAAA,OAAA,+CAAA;;;;GCqETC,IAAAF,EAAA;AAAA,EAA+B,MAAA,EAAA,UAAAG,EAAA;AAAA,EACV,MAAA;AAAA,EACX,YAAA;AAAA,IACM,aAAAC;AAAA,IACR,eAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,MAAAC;AAAA,IACA,YAAAC;AAAA,EACA;AAAA,EACJ,YAAA,EAAA,uBAAAC,EAAA;AAAA,EACoC,OAAA;AAAA;AAAA;AAAA;AAAA,IAC7B,OAAA;AAAA,MAII,MAAA;AAAA,MACG,UAAA;AAAA,IACI;AAAA;AAAA;AAAA;AAAA,IACd,WAAA;AAAA,MAIW,MAAA;AAAA,MACD,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,MAAA;AAAA,MAIM,MAAA;AAAA,MACI,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,QAAA;AAAA,MAIQ,MAAA;AAAA,MACE,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,eAAA;AAAA,MAIe,MAAA;AAAA,MACL,SAAA;AAAA,IACG;AAAA,EACb;AAAA,EACJ,QAAA;AAEI,UAAAC,IAAAC,EAAAV,GAAA,EAAA,GAEAW,IAAAC,EAAA,OAAA;AAAA,MAA2C,qCAAAH;AAAA,IACF,EAAA,GAGzCI,IAAAD;AAAA,MAA+B,MAAAH,IAAAK,EAAA,UAAAA,EAAA;AAAA,IAC2C;AAG1E,WAAA;AAAA;AAAA,MAAO,oBAAAH;AAAA,MAEH,wBAAAE;AAAA,IACA;AAAA,EACJ;AAER,CAAA;;;yHA/GME,IAAAC,EAAA,yBAAA;;;EAhBG,GAAA;AAAA,IAHcC,EAAA,MAAAC,GAAA;AAAA,MAAAC,EAAAC,GAAA,EAAA,SAAAC,EAAA,uBAAA,GAAA;AAAA,QAAH,SAAAC,EAAA,MAAA;AAAA;;QAEW,GAAA;AAAA,MAAA,GAAA,GAAA,CAAA,SAAA,CAAA;AAAA;QAA+C,KAAA;AAAA,QAAE,OAAA;AAAA;MAE5E,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA,KAAAC,EAAA,IAAA,EAAA;AAAA,IAAA,CAAA;AAAA,IAEoBN,EAAA,MAAAO,GAAA;AAAA,MAAAC,EAAAJ,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAsDA,EAAA,QAAAK,EAAA,GAAAC,EAAAC,GAAA;AAAA,QAAhB,KAAA;AAAA,QAAM,OAAA;AAAA;;;QAIpB,KAAA;AAAA,QACpC,OAAA;AAAA,QACM,SAAA;AAAA;MAEa,GAAA;AAAA,QACD,UAAAN,EAAA,MAAA;AAAA,UAAaH,EAAAU,GAAA;AAAA;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.ee69b530.js","sources":["../../../vue2/src/components/structured-list/structured-list.vue","../../../vue2/src/components/structured-list/structured-list.keys.ts","../../../vue2/src/components/structured-list/components/structered-list-item/structured-list-item.vue"],"sourcesContent":["<template>\n <dl class=\"b-structured-list\">\n <slot />\n </dl>\n</template>\n\n<script lang=\"ts\">\n import { defineComponent } from 'vue';\n\n /**\n * This is a list used to display pairs of information in a clear and organized manner.\n * `BentoStructureListItem` should be used to pass the label/value pairs to the list.\n *\n * @example\n * import { BentoStructuredListItem, BentoStructuredListItem } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoStructuredList, BentoStructuredListItem },\n * template: `\n * <bento-structured-list>\n * <bento-structured-list-item label=\"Payment\">\n * <bento-payment-method label=\"Klarna\" type=\"Klarna\" />\n * </bento-structured-list-item>\n * <bento-structured-list-item label=\"Amount\">\n * <bento-currency :currency=\"BentoCurrencyISOCode.USD\">\n * 123456\n * </bento-currency>\n * </bento-structured-list-item>\n * </bento-structured-list>\n * `\n * }\n */\n export default defineComponent({\n name: 'bento-structured-list',\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./structured-list.scss\" />\n","export const STRUCTURED_LIST_CONDENSED_INJECTION_KEY = Symbol('structured list condensed style injection key');\n","<template>\n <div class=\"b-structured-list-item\" :class=\"conditionalClasses\">\n <dt class=\"b-structured-list-item__label\">\n <bento-typography :variant=\"labelTypographyVariant\">\n {{ label }}\n </bento-typography>\n <bento-info-icon v-if=\"labelInfo\" class=\"b-structured-list-item__icon\" :tooltip-text=\"labelInfo\" />\n </dt>\n <dd class=\"b-structured-list-item__value\">\n <slot />\n <copy v-if=\"copy\" class=\"b-structured-list-item__icon\" :text=\"copy\" />\n <bento-button\n v-if=\"search\"\n v-bento-tooltip-directive:top=\"searchTooltip ? searchTooltip : $t('search')\"\n class=\"b-structured-list-item__icon\"\n variant=\"tertiary\"\n @click=\"search\"\n >\n <template #iconLeft>\n <search-icon :svg-title=\"$t('search')\" />\n </template>\n </bento-button>\n </dd>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, inject, PropType } from 'vue';\n\n // Components\n import { BentoButton } from '@/components/button';\n import { BentoInfoIcon } from '@/components/info-icon';\n import { BentoTypography, BentoTypographyVariant } from '@/components/typography';\n import Copy from '@/components/internal/copy/copy.vue';\n import SearchIcon from '@adyen/ui-assets-icons-16/vue/search';\n\n // Directives\n import { BentoTooltipDirective } from '@/directives';\n\n // Keys\n import { STRUCTURED_LIST_CONDENSED_INJECTION_KEY } from '../../structured-list.keys';\n\n import messages from '../../messages.json';\n\n /**\n * This is an item of the `BentoStructuredList` meant to be used only with that component.\n * It consists of a label/value pair, and also the optional copy and search modifiers.\n *\n * @example\n * import { BentoCurrencyISOCode, BentoStructuredListItem, BentoStructuredListItem } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoStructuredListItem, BentoStructuredListItem },\n * template: `\n * <bento-structured-list>\n * <bento-structured-list-item label=\"Shopper\" search='searchShopper' search-tooltip='Find shopper'>\n * <bento-typography>\n * 143442642\n * </bento-status>\n * </bento-structured-list-item>\n * <bento-structured-list-item label=\"Amount\" copy='123456'>\n * <bento-currency :currency=\"BentoCurrencyISOCode.USD\">\n * 123456\n * </bento-currency>\n * </bento-structured-list-item>\n * </bento-structured-list>\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-structured-list-item',\n components: {\n BentoButton,\n BentoInfoIcon,\n BentoTypography,\n Copy,\n SearchIcon,\n },\n directives: { BentoTooltipDirective },\n props: {\n /**\n * Label to display for the value\n */\n label: {\n type: String,\n required: true,\n },\n /**\n * Text to display in info icon tooltip in the label to display for the value\n */\n labelInfo: {\n type: String,\n default: undefined,\n },\n /**\n * Text to copy when the user clicks `Copy` icon\n */\n copy: {\n type: String,\n default: undefined,\n },\n /**\n * Function to trigger when user clicks `Search` icon\n */\n search: {\n type: Function as PropType<(event: Event) => void>,\n default: undefined,\n },\n /**\n * Text to display when the user hovers over `Search` icon\n */\n searchTooltip: {\n type: String,\n default: undefined,\n },\n },\n setup() {\n const isCondensed = inject(STRUCTURED_LIST_CONDENSED_INJECTION_KEY, false);\n\n const conditionalClasses = computed(() => ({\n 'b-structured-list-item--condensed': isCondensed,\n }));\n\n const labelTypographyVariant = computed(() =>\n isCondensed ? BentoTypographyVariant.CAPTION : BentoTypographyVariant.BODY\n );\n\n return {\n // Values\n conditionalClasses,\n labelTypographyVariant,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./structured-list-item.scss\" />\n"],"names":["_sfc_main$1","defineComponent","STRUCTURED_LIST_CONDENSED_INJECTION_KEY","_sfc_main","messages","BentoButton","BentoInfoIcon","BentoTypography","Copy","SearchIcon","BentoTooltipDirective","isCondensed","inject","conditionalClasses","computed","labelTypographyVariant","BentoTypographyVariant","_directive_bento_tooltip_directive","resolveDirective","createElementVNode","_hoisted_1","createVNode","_component_bento_typography","_ctx","withCtx","createCommentVNode","_hoisted_2","renderSlot","openBlock","createBlock","_component_copy","_component_search_icon"],"mappings":";;;;;;;;;AAgCI,MAAAA,IAAAC,EAAA;AAAA,EAA+B,MAAA;AAE/B,CAAA;;;;;;;oFClCSC,IAAA,OAAA,+CAAA;;;;GCqETC,IAAAF,EAAA;AAAA,EAA+B,MAAA,EAAA,UAAAG,EAAA;AAAA,EACV,MAAA;AAAA,EACX,YAAA;AAAA,IACM,aAAAC;AAAA,IACR,eAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,MAAAC;AAAA,IACA,YAAAC;AAAA,EACA;AAAA,EACJ,YAAA,EAAA,uBAAAC,EAAA;AAAA,EACoC,OAAA;AAAA;AAAA;AAAA;AAAA,IAC7B,OAAA;AAAA,MAII,MAAA;AAAA,MACG,UAAA;AAAA,IACI;AAAA;AAAA;AAAA;AAAA,IACd,WAAA;AAAA,MAIW,MAAA;AAAA,MACD,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,MAAA;AAAA,MAIM,MAAA;AAAA,MACI,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,QAAA;AAAA,MAIQ,MAAA;AAAA,MACE,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,eAAA;AAAA,MAIe,MAAA;AAAA,MACL,SAAA;AAAA,IACG;AAAA,EACb;AAAA,EACJ,QAAA;AAEI,UAAAC,IAAAC,EAAAV,GAAA,EAAA,GAEAW,IAAAC,EAAA,OAAA;AAAA,MAA2C,qCAAAH;AAAA,IACF,EAAA,GAGzCI,IAAAD;AAAA,MAA+B,MAAAH,IAAAK,EAAA,UAAAA,EAAA;AAAA,IAC2C;AAG1E,WAAA;AAAA;AAAA,MAAO,oBAAAH;AAAA,MAEH,wBAAAE;AAAA,IACA;AAAA,EACJ;AAER,CAAA;;;yHA/GME,IAAAC,EAAA,yBAAA;;;EAhBG,GAAA;AAAA,IAHcC,EAAA,MAAAC,GAAA;AAAA,MAAAC,EAAAC,GAAA,EAAA,SAAAC,EAAA,uBAAA,GAAA;AAAA,QAAH,SAAAC,EAAA,MAAA;AAAA;;QAEW,GAAA;AAAA,MAAA,GAAA,GAAA,CAAA,SAAA,CAAA;AAAA;QAA+C,KAAA;AAAA,QAAE,OAAA;AAAA;MAE5E,GAAA,MAAA,GAAA,CAAA,cAAA,CAAA,KAAAC,EAAA,IAAA,EAAA;AAAA,IAAA,CAAA;AAAA,IAEoBN,EAAA,MAAAO,GAAA;AAAA,MAAAC,EAAAJ,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAsDA,EAAA,QAAAK,EAAA,GAAAC,EAAAC,GAAA;AAAA,QAAhB,KAAA;AAAA,QAAM,OAAA;AAAA;;;QAIpB,KAAA;AAAA,QACpC,OAAA;AAAA,QACM,SAAA;AAAA;MAEa,GAAA;AAAA,QACD,UAAAN,EAAA,MAAA;AAAA,UAAaH,EAAAU,GAAA;AAAA;;;;;;;;;;;"}
@@ -1,23 +1,23 @@
1
1
  import { defineComponent as ye, reactive as ee, ref as h, computed as K, onMounted as Fe, resolveComponent as w, openBlock as f, createElementBlock as J, createElementVNode as F, createBlock as O, createCommentVNode as b, renderSlot as fe, createVNode as P, withCtx as k, createTextVNode as E, normalizeClass as ae, toRef as ge, watch as he, resolveDirective as Pe, withDirectives as Ue, toDisplayString as j, withKeys as $e } from "vue";
2
2
  import { B as Ne } from "./directive.0408e565.js";
3
- import { BentoPopover as Ae } from "../popover.js";
3
+ import { c as Ae } from "./dropdown-default-textbox.cd789a95.js";
4
+ import { BentoPopover as Be } from "../popover.js";
4
5
  import { g as W } from "./unique-id.a2a2b458.js";
5
6
  import { u as te } from "./i18n.6c402773.js";
6
- import { B as ke } from "./index.89b00b94.js";
7
- import { f as ve, v as Be, D as M } from "./date-input.9186a0bf.js";
8
- import { t as ne, f as Y } from "./index.e84dbeae.js";
7
+ import { B as ke } from "./index.77c651df.js";
8
+ import { f as ve, v as Ke, D as M } from "./date-input.9186a0bf.js";
9
+ import { t as ne, f as Y } from "./index.140bf28f.js";
9
10
  import { r as re, t as oe, e as C, d as se, f as ie } from "./index.f55fdc32.js";
10
- import { u as Ke } from "./use-form-layout-loading.d03e5d48.js";
11
- import { BentoInputField as Ye } from "../input-field.js";
12
- import { B as qe } from "./dropdown.b798a82e.js";
11
+ import { u as Ye } from "./use-form-layout-loading.d03e5d48.js";
12
+ import { BentoInputField as qe } from "../input-field.js";
13
+ import { B as Ve } from "./dropdown.ff4f94a8.js";
13
14
  import { d as z } from "./debounce.f8d92e44.js";
14
- import { u as Ve } from "./use-has-slot.9fac7123.js";
15
+ import { u as Le } from "./use-has-slot.9fac7123.js";
15
16
  import { e as Z } from "./index.fdf12170.js";
16
- import { C as G } from "./calendar.3f930683.js";
17
+ import { C as G } from "./calendar.0e42130b.js";
17
18
  import { _ as _e } from "./_plugin-vue_export-helper.dad06003.js";
18
- import { c as Le } from "./dropdown-default-textbox.a90e84f9.js";
19
- import { E as He } from "./error-message.9acead25.js";
20
- import "../assets/index25.css";
19
+ import { E as He } from "./error-message.8c67a507.js";
20
+ import "../assets/index5.css";
21
21
  function We(e, t) {
22
22
  re(2, arguments);
23
23
  var s = oe(e), d = ne(t);
@@ -60,8 +60,8 @@ const ze = /[\d]/, Je = /^\d{2}$/, Qe = /^\d{2}:\d{2}$/, Xe = (e) => {
60
60
  i18n: { messages: be },
61
61
  name: "date-range-picker-calendar",
62
62
  components: {
63
- BentoDropdown: qe,
64
- BentoInputField: Ye,
63
+ BentoDropdown: Ve,
64
+ BentoInputField: qe,
65
65
  BentoTypography: ke,
66
66
  Calendar: G
67
67
  },
@@ -196,7 +196,7 @@ const ze = /[\d]/, Je = /^\d{2}$/, Qe = /^\d{2}:\d{2}$/, Xe = (e) => {
196
196
  }, Re), u = (a) => {
197
197
  v(), n.endDate = ve(a), De(n.endDate);
198
198
  }, U = (a) => {
199
- Be(a);
199
+ Ke(a);
200
200
  }, H = z((a) => {
201
201
  if (q(a)) {
202
202
  m.value = !1, o.startDate = V(o.startDate, a);
@@ -250,7 +250,7 @@ const ze = /[\d]/, Je = /^\d{2}$/, Qe = /^\d{2}:\d{2}$/, Xe = (e) => {
250
250
  quickSelectRangeDefaultItems: S,
251
251
  formInputWrapperConditionalClasses: p,
252
252
  // Methods
253
- hasSlot: Ve(s),
253
+ hasSlot: Le(s),
254
254
  t: _,
255
255
  // Events
256
256
  onRangeSelectorInput: Me,
@@ -436,9 +436,9 @@ const oa = ({
436
436
  name: "bento-date-range-picker",
437
437
  components: {
438
438
  BentoTypography: ke,
439
- BentoPopover: Ae,
439
+ BentoPopover: Be,
440
440
  DateRangePickerCalendar: A,
441
- DropdownInputDefault: Le,
441
+ DropdownInputDefault: Ae,
442
442
  ErrorMessage: He
443
443
  },
444
444
  directives: { BentoClickOutsideDirective: Ne },
@@ -511,7 +511,7 @@ const oa = ({
511
511
  setup(e, { emit: t }) {
512
512
  const { locale: s, t: d } = te({ messages: Te }), _ = { de: se, enUS: C, fr: ie }, g = W("bento-date-range-picker-container"), o = W("bento-date-range-picker-label"), c = W("bento-date-range-picker-description"), p = W("bento-date-range-picker-error"), S = W("bento-date-range-picker-date-error"), v = K(
513
513
  () => e.label || d("dateRangePicker", { name: g })
514
- ), i = h(!1), R = h(null), D = h(!1), { isReadOnly: T } = Ke(ge(e, "readonly"));
514
+ ), i = h(!1), R = h(null), D = h(!1), { isReadOnly: T } = Ye(ge(e, "readonly"));
515
515
  he(
516
516
  () => e.disabled,
517
517
  () => {
@@ -701,4 +701,4 @@ export {
701
701
  A as D,
702
702
  B as a
703
703
  };
704
- //# sourceMappingURL=index.c2a80208.js.map
704
+ //# sourceMappingURL=index.fd1cd23a.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.c2a80208.js","sources":["../../../../node_modules/date-fns/esm/setHours/index.js","../../../../node_modules/date-fns/esm/setMinutes/index.js","../../../../node_modules/date-fns/esm/setSeconds/index.js","../../../vue2/src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.types.ts","../../../vue2/src/utils/ts/time-input.ts","../../../vue2/src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.vue","../../../vue2/src/components/date-range-picker/date-range-picker.types.ts","../../../vue2/src/components/date-range-picker/composables/use-date-range-picker-calendar-text.ts","../../../vue2/src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","export interface DateRangePickerCalendarFormData {\n startDate: string;\n endDate: string;\n startTime?: string;\n endTime?: string;\n}\n\nexport enum DateRangePickerCalendarEvent {\n CUSTOM_RANGE = 'custom-range',\n INPUT = 'input',\n ERROR = 'error',\n FORM_DATE = 'form-date',\n}\n\nexport type DateRangePickerCalendarRangeSelectorItems = Array<{\n label: string;\n value: string;\n data: { startDate: Date; endDate: Date };\n}>;\n","const validDigitRegex = /[\\d]/;\n\nconst hourRegex = /^\\d{2}$/;\nconst minuteRegex = /^\\d{2}:\\d{2}$/;\n\nexport const validateTimeInput = (event: KeyboardEvent) => {\n const { selectionStart } = event.target as HTMLInputElement;\n\n const isValidKey = validDigitRegex.test(event.key) || event.key === 'Backspace';\n const isValidColon = [1, 2, 4, 5].includes(selectionStart) && event.key === ':';\n\n if (!isValidKey && !isValidColon) {\n event.preventDefault();\n }\n};\n\nexport const formatTimeInputValue = (value: string) => {\n if (!value) {\n return value;\n }\n\n let formattedValue = value;\n\n // Format if the first value is bigger than 2, because it can't be bigger than 24 hours\n if (formattedValue.length === 1 && parseInt(value, 10) > 2) {\n return `0${formattedValue}:`;\n }\n\n const [secondToLastDigit, lastDigit] = formattedValue.slice(-2);\n if ([2, 5].includes(formattedValue.length) && lastDigit === ':') {\n formattedValue = `${formattedValue.slice(0, formattedValue.length - 2)}0${secondToLastDigit}`;\n }\n\n // Add `:` after hour/minute\n if (hourRegex.test(formattedValue) || minuteRegex.test(formattedValue)) {\n formattedValue += ':';\n }\n return formattedValue;\n};\n","<template>\n <div class=\"b-date-range-picker-calendar\">\n <!-- Form -->\n <div class=\"b-date-range-picker-calendar__form-container\">\n <div class=\"b-date-range-picker-calendar__form\">\n <bento-dropdown\n v-if=\"quickSelectRanges\"\n :aria-label=\"t('customRange')\"\n :items=\"quickSelectRangeDefaultItems\"\n :value=\"selectedRangeSelectorValue\"\n @input=\"onRangeSelectorInput\"\n />\n\n <template v-if=\"hasSlot('title')\">\n <slot name=\"title\" />\n </template>\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n From\n </bento-typography>\n <div :class=\"formInputWrapperConditionalClasses\">\n <bento-input-field\n :aria-label=\"$t('dateFrom')\"\n :value=\"dateTextInput.startDate\"\n :error=\"startDateError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onStartDateInput\"\n @keydown=\"onDateInputKeyDown\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n\n <bento-input-field\n v-if=\"allowTimeInput\"\n :aria-label=\"t('timeFrom')\"\n :value=\"dateTextInput.startTime\"\n :error=\"startTimeError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onStartTimeInput\"\n @keydown=\"onTimeInputKeyDown\"\n >\n <template #description>HH:MM:SS</template>\n </bento-input-field>\n </div>\n </div>\n\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n To\n </bento-typography>\n <div :class=\"formInputWrapperConditionalClasses\">\n <bento-input-field\n class=\"b-date-range-picker-calendar__form-input\"\n :aria-label=\"$t('dateTo')\"\n :value=\"dateTextInput.endDate\"\n :error=\"endDateError\"\n @input=\"onEndDateInput\"\n @keydown=\"onDateInputKeyDown\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n\n <bento-input-field\n v-if=\"allowTimeInput\"\n :aria-label=\"t('timeTo')\"\n :value=\"dateTextInput.endTime\"\n :error=\"endTimeError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onEndTimeInput\"\n @keydown=\"onTimeInputKeyDown\"\n >\n <template #description>HH:MM:SS</template>\n </bento-input-field>\n </div>\n </div>\n </div>\n\n <div v-if=\"hasSlot('actions')\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <!-- Calendar -->\n <div class=\"b-date-range-picker-calendar__calendars-container\">\n <calendar\n :value=\"value\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :number-of-months=\"numberOfMonths\"\n is-range\n @input=\"onDateInput\"\n @start-date-selected=\"onStartDateSelected\"\n @end-date-selected=\"onEndDateSelected\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType, reactive, ref } from 'vue';\n import { Calendar, CalendarRangeDateValue } from '@/internal';\n import { BentoTypography } from '@/components/typography';\n import { BentoInputField } from '@/components/input-field';\n import { BentoDropdown } from '@/components/dropdown';\n import { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\n import { debounce } from '@/utils/ts/debounce';\n import { useHasSlot } from '@/composables';\n import { formatDateInputValue, validateDateInput } from '@/utils/ts/date-input';\n import {\n DateRangePickerCalendarEvent,\n DateRangePickerCalendarFormData,\n DateRangePickerCalendarRangeSelectorItems,\n } from './date-range-picker-calendar.types';\n import { DateFormat } from '@/types';\n import { formatTimeInputValue, validateTimeInput } from '@/utils/ts/time-input';\n import setHours from 'date-fns/setHours';\n import setMinutes from 'date-fns/setMinutes';\n import setSeconds from 'date-fns/setSeconds';\n import format from 'date-fns/format';\n import endOfDay from 'date-fns/endOfDay';\n import messages from './messages.json';\n\n const FORM_INPUT_DEBOUNCE_TIME = 300;\n const RANGE_SELECTOR_CUSTOM_RANGE_KEY = 'customRange';\n type MessageSchema = (typeof messages)['en-US'];\n\n /**\n * Calendar for range dates. Contains the logic to handle the range forms.\n *\n * @example\n * import DatePickerCalendarRange from './date-range-picker-calendar.vue';\n *\n * export default {\n * components: { DatePickerCalendarRange },\n * template: `\n * <date-range-picker-calendar\n * :value=\"{startDate: new Date(), endDate: new Date() }\"\n * :first-day-of-week=\"BentoDatePickerFirstDayOfWeek.MONDAY\"\n * :is-date-disabled=\"(date: Date) => boolean\"\n * :number-of-months=\"2\"\n * @input=\"({ startDate, endDate }) => void\"\n * />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'date-range-picker-calendar',\n components: {\n BentoDropdown,\n BentoInputField,\n BentoTypography,\n Calendar,\n },\n props: {\n /**\n * Allows user to enter time values in the form\n */\n allowTimeInput: { type: Boolean, default: false },\n\n /**\n * Ranges form persistance data\n */\n dateFormData: {\n type: Object as PropType<DateRangePickerCalendarFormData>,\n default: () => ({ startDate: undefined, endDate: undefined, startTime: undefined, endTime: undefined }),\n },\n\n /**\n * Allows you to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: Calendar.props.firstDayOfWeek,\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: Calendar.props.isDateDisabled,\n\n /**\n * Set a maximum number of dates to be selectable by the range.\n */\n maxRange: Calendar.props.maxRange,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: Calendar.props.numberOfMonths,\n\n /**\n * Enables the custom range selector.\n * If provided, must be an array that sets the custom range dropdown items. Items are of the structure:\n * `label` - label of custom range item.\n * `value` - a unique key of the custom range item.\n * `data` - an object `{ startDate: Date; endDate: Date }` to set the date picker range to upon selecting.\n */\n quickSelectRanges: {\n type: Array as PropType<DateRangePickerCalendarRangeSelectorItems>,\n default: undefined,\n },\n\n /**\n * Selected date\n */\n value: { type: Object as PropType<CalendarRangeDateValue>, default: undefined },\n },\n emits: [\n DateRangePickerCalendarEvent.CUSTOM_RANGE,\n DateRangePickerCalendarEvent.INPUT,\n DateRangePickerCalendarEvent.ERROR,\n DateRangePickerCalendarEvent.FORM_DATE,\n ],\n setup(props, { emit, slots }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = { de, enUS, fr };\n const internalRangeDate = reactive({\n startDate: (props.value as CalendarRangeDateValue)?.startDate,\n endDate: (props.value as CalendarRangeDateValue)?.endDate,\n });\n const selectedRangeSelectorValue = ref(RANGE_SELECTOR_CUSTOM_RANGE_KEY);\n const formInputWrapperConditionalClasses = computed(() => ({\n 'b-date-range-picker-calendar__form-input-wrapper': props.allowTimeInput,\n }));\n const quickSelectRangeDefaultItems = computed(() => {\n if (props.quickSelectRanges) {\n return [\n { label: t('customRange'), value: RANGE_SELECTOR_CUSTOM_RANGE_KEY },\n ...props.quickSelectRanges,\n ];\n }\n return [];\n });\n\n /**\n * When selecting a custom range, set the range selecter if it is enabled.\n */\n const resetCustomRangeToDefault = () => {\n if (props?.quickSelectRanges) {\n selectedRangeSelectorValue.value = RANGE_SELECTOR_CUSTOM_RANGE_KEY;\n }\n };\n\n /**\n * Format date to a string value in format yyyy-MM-dd\n * @param {Date} dateToFormat Date to be formatted\n */\n const formatDate = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n return format(dateToFormat, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n };\n\n const formatTime = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n\n return format(dateToFormat, DateFormat.HOUR_MINUTE_SECONDS, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n };\n\n // Form error flags\n const startDateError = ref(false);\n const endDateError = ref(false);\n const startTimeError = ref(false);\n const endTimeError = ref(false);\n\n // Form input text used in range variant\n const dateTextInput = reactive({\n startDate: props.dateFormData.startDate,\n endDate: props.dateFormData.endDate,\n startTime: props.dateFormData.startTime,\n endTime: props.dateFormData.endTime,\n });\n\n const onDateInput = (selectedDate: Date) => {\n emit(DateRangePickerCalendarEvent.INPUT, selectedDate);\n };\n\n // Validate time\n const isValidTime = (timeText: string) => {\n // HH:MM:SS regex\n const timeRegex = /^(?:[01]\\d|2[01234]):(?:[012345]\\d):(?:[012345]\\d)$/;\n return timeRegex.test(timeText);\n };\n\n const setTimeInDate = (date: Date, time: string) => {\n if (!time || !isValidTime(time)) {\n return date;\n }\n\n let dateWithTime = new Date(date);\n\n const [hours, minutes, seconds] = time.split(':');\n dateWithTime = setHours(dateWithTime, parseInt(hours, 10));\n dateWithTime = setMinutes(dateWithTime, parseInt(minutes, 10));\n dateWithTime = setSeconds(dateWithTime, parseInt(seconds, 10));\n return dateWithTime;\n };\n\n const isValidDate = (dateText: string) => {\n // Is date selectable\n const isDateEnabled = (date: Date) => {\n // Check if function is set, otherwise all dates are enabled\n if (props.isDateDisabled) {\n return !props.isDateDisabled(date);\n }\n\n return true;\n };\n\n // YYYY-MM-DD regex\n const dateRegex = /^\\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$/;\n // Date matches text regex\n return dateRegex.test(dateText) && isDateEnabled(new Date(dateText));\n };\n\n /**\n * When mounted, set the input error states to true if the values are not valid\n */\n onMounted(() => {\n if (props.dateFormData.startDate && !isValidDate(props.dateFormData.startDate)) {\n startDateError.value = true;\n } else {\n startDateError.value = false;\n startTimeError.value = false;\n }\n\n if (props.dateFormData.endDate && !isValidDate(props.dateFormData.endDate)) {\n endDateError.value = true;\n } else {\n endDateError.value = false;\n endTimeError.value = false;\n }\n });\n\n const onStartDateSelected = (newStartDate: Date) => {\n resetCustomRangeToDefault();\n dateTextInput.startDate = formatDate(newStartDate);\n if (!dateTextInput.startTime) {\n // Set the time to the beginning of the day\n dateTextInput.startTime = formatTime(newStartDate);\n } else if (startTimeError.value) {\n // Set the form time if it was previously set\n dateTextInput.startTime = props.dateFormData?.startTime;\n }\n\n // Reset errors\n startDateError.value = false;\n startTimeError.value = false;\n };\n\n const onEndDateSelected = (newEndDate: Date) => {\n dateTextInput.endDate = formatDate(newEndDate);\n if (!dateTextInput.endTime) {\n // Set the time to the end of the day\n dateTextInput.endTime = formatTime(endOfDay(newEndDate));\n } else if (endTimeError.value) {\n // Set the form time if it was previously set\n dateTextInput.endTime = props.dateFormData?.endTime;\n }\n\n // Reset errors\n endDateError.value = false;\n endTimeError.value = false;\n };\n\n const getDate = (keyName: keyof CalendarRangeDateValue) => {\n const dateProp = (props.value as CalendarRangeDateValue)[keyName];\n if (dateProp) {\n return dateProp;\n }\n\n if (props.dateFormData[keyName] && isValidDate(props.dateFormData[keyName])) {\n return new Date(props.dateFormData[keyName]);\n }\n\n return undefined;\n };\n\n const validateStartDate = debounce((startDateText: string) => {\n // Checks for YYYY-MM-DD format\n if (isValidDate(startDateText)) {\n startDateError.value = false;\n // Format date string to Date object\n internalRangeDate.startDate = setTimeInDate(new Date(startDateText), dateTextInput.startTime);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(startDateText),\n endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(startDateText),\n endDate,\n });\n } else {\n // Indicate form error\n startDateError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n const onStartDateInput = (startDateText: string) => {\n resetCustomRangeToDefault();\n // Set the date as string when input through the form\n dateTextInput.startDate = formatDateInputValue(startDateText);\n validateStartDate(dateTextInput.startDate);\n };\n\n const validateEndDate = debounce((endDateText: string) => {\n // Checks for YYYY-MM-DD format\n if (isValidDate(endDateText)) {\n endDateError.value = false;\n internalRangeDate.endDate = setTimeInDate(new Date(endDateText), dateTextInput.endTime);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.endTime,\n endTime: endDateText,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n });\n } else {\n // Indicate form error\n endDateError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n const onEndDateInput = (endDateText: string) => {\n resetCustomRangeToDefault();\n // Set the date as string when input through the form\n dateTextInput.endDate = formatDateInputValue(endDateText);\n validateEndDate(dateTextInput.endDate);\n };\n\n const onDateInputKeyDown = (event: KeyboardEvent) => {\n validateDateInput(event);\n };\n\n const validateStartTime = debounce((startTimeText: string) => {\n if (isValidTime(startTimeText)) {\n startTimeError.value = false;\n internalRangeDate.startDate = setTimeInDate(internalRangeDate.startDate, startTimeText);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\n startTime: startTimeText,\n endTime: props.dateFormData.endTime,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\n });\n } else {\n // Indicate form error\n startTimeError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n });\n\n const validateEndTime = debounce((endTimeText: string) => {\n if (isValidTime(endTimeText)) {\n endTimeError.value = false;\n internalRangeDate.endDate = setTimeInDate(internalRangeDate.endDate, endTimeText);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.startTime,\n endTime: endTimeText,\n });\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n });\n } else {\n // Indicate form error\n endTimeError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n });\n\n const onStartTimeInput = (startTimeText: string) => {\n resetCustomRangeToDefault();\n dateTextInput.startTime = formatTimeInputValue(startTimeText);\n validateStartTime(dateTextInput.startTime);\n };\n\n const onEndTimeInput = (endDateText: string) => {\n resetCustomRangeToDefault();\n dateTextInput.endTime = formatTimeInputValue(endDateText);\n validateEndTime(dateTextInput.endTime);\n };\n\n const onTimeInputKeyDown = (event: KeyboardEvent) => {\n validateTimeInput(event);\n };\n\n const onRangeSelectorInput = (newCustomRangeValue: string) => {\n selectedRangeSelectorValue.value = newCustomRangeValue;\n const foundResult = props.quickSelectRanges?.find(({ value }) => value === newCustomRangeValue)?.data;\n if (foundResult) {\n dateTextInput.startDate = formatDate(foundResult.startDate);\n dateTextInput.endDate = formatDate(foundResult.endDate);\n if (!dateTextInput.startTime) {\n dateTextInput.startTime = formatTime(endOfDay(foundResult.startDate));\n }\n if (!dateTextInput.endTime) {\n dateTextInput.endTime = formatTime(endOfDay(foundResult.endDate));\n }\n emit(DateRangePickerCalendarEvent.CUSTOM_RANGE, foundResult);\n }\n };\n\n return {\n // Values\n dateTextInput,\n endDateError,\n endTimeError,\n selectedRangeSelectorValue,\n startDateError,\n startTimeError,\n quickSelectRangeDefaultItems,\n formInputWrapperConditionalClasses,\n\n // Methods\n hasSlot: useHasSlot(slots),\n t,\n\n // Events\n onRangeSelectorInput,\n onDateInput,\n onDateInputKeyDown,\n onEndDateInput,\n onEndDateSelected,\n onEndTimeInput,\n onStartDateSelected,\n onStartDateInput,\n onStartTimeInput,\n onTimeInputKeyDown,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker-calendar.scss\" />\n","export { CalendarFirstDayOfWeek as BentoDateRangePickerFirstDayOfWeek } from '@/internal';\nexport type {\n CalendarIsDateDisabled as BentoDateRangePickerIsDateDisabled,\n CalendarRangeDateValue as BentoDateRangePickerValue,\n} from '@/internal';\n\nexport enum BentoDateRangePickerEvent {\n INPUT = 'input',\n}\n","import { computed, reactive } from 'vue';\nimport { de, enUS, fr } from 'date-fns/locale';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { UseDateDisplayText } from './use-date-range-picker-calendar-text.types';\nimport { DateFormat } from '@/types';\nimport { CalendarRangeDateValue } from '@/internal';\nimport { DateRangePickerCalendarFormData } from '../components/date-range-picker-calendar/date-range-picker-calendar.types';\nimport format from 'date-fns/format';\n\nexport const useDateRangePickerCalendarText: UseDateDisplayText<CalendarRangeDateValue> = ({\n datePickerValue,\n isDateIncorrect,\n}) => {\n const { locale, t } = useI18n();\n const locales = { de, enUS, fr };\n\n const formatDate = (date: Date, dateFormat: DateFormat) =>\n format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n const formatTime = (date: Date) =>\n format(date, DateFormat.HOUR_MINUTE_SECONDS, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n // Handle the form input text\n const textInputDisplayValue = reactive<DateRangePickerCalendarFormData>({\n startDate: datePickerValue.value?.startDate\n ? formatDate(datePickerValue.value.startDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n endDate: datePickerValue.value?.endDate\n ? formatDate(datePickerValue.value.endDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n\n // Set time if the startDate/endDate are set\n startTime: datePickerValue.value?.startDate ? formatTime(datePickerValue.value?.startDate) : undefined,\n endTime: datePickerValue.value?.endDate ? formatTime(datePickerValue.value.endDate) : undefined,\n });\n\n const dateDisplayValue = computed(() => {\n // Display incorrect date when there's an error with the input\n if (isDateIncorrect.value) {\n return `${textInputDisplayValue.startDate || ''} - ${textInputDisplayValue.endDate || ''}`;\n }\n\n // Display \"Select a date\" when there's no date selected or input\n if (!datePickerValue.value || (!datePickerValue.value.startDate && !datePickerValue.value.endDate)) {\n return t('selectDateRange') as string;\n }\n\n const { startDate, endDate } = textInputDisplayValue;\n return `${formatDate(new Date(startDate), DateFormat.FULL_DATE_MONTH_FIRST)} - ${formatDate(\n new Date(endDate),\n DateFormat.FULL_DATE_MONTH_FIRST\n )}`;\n });\n\n const formatTextInputDisplayValue = () => '';\n\n return {\n // Values\n dateDisplayValue,\n textInputDisplayValue,\n\n // Methods\n formatTextInputDisplayValue,\n };\n};\n","<!-- TODO: Remove aria props as these are part of JSX elements /vue/types/jsx.d.ts -->\n<!-- eslint-disable vue/attribute-hyphenation -->\n<template>\n <div v-bento-click-outside-directive=\"closeDateRangePicker\" class=\"b-date-range-picker\">\n <!-- Label -->\n <div v-if=\"label\" :id=\"labelId\" class=\"b-date-range-picker__label\">\n <bento-typography el=\"span\" stronger>{{ label }}</bento-typography>\n <bento-typography v-if=\"optional\" class=\"b-date-range-picker__label-requirement\" el=\"span\">\n ({{ $t('optional') }})\n </bento-typography>\n <bento-typography v-if=\"required\" class=\"b-date-range-picker__label-requirement\" el=\"span\">\n ({{ $t('required') }})\n </bento-typography>\n </div>\n\n <!-- Input -->\n <div @keydown.enter=\"onEnterPressedOverInput\">\n <dropdown-input-default\n ref=\"inputContainerRef\"\n :ariaControls=\"datePickerContainerId\"\n :ariaExpanded=\"isDateRangePickerOpen\"\n :aria-labelledby=\"label ? labelId : null\"\n :aria-describedby=\"ariaDescribedBy\"\n :disabled=\"disabled\"\n :is-invalid=\"!!errorMessage || isDateIncorrect\"\n :open=\"isDateRangePickerOpen\"\n :display-value=\"dateDisplayValue\"\n :readonly=\"isReadOnly\"\n @open=\"openDateRangePicker\"\n @clear=\"clearDateRangePickerValue\"\n @close=\"closeDateRangePicker\"\n />\n </div>\n\n <!-- Error Messages -->\n <error-message\n v-if=\"isDateIncorrect\"\n :id=\"dateErrorId\"\n :error-message=\"$t('provideDateInAFormat').toString()\"\n class=\"b-date-range-picker__error-message\"\n />\n <error-message\n v-if=\"!!errorMessage\"\n :id=\"errorId\"\n :error-message=\"errorMessage\"\n class=\"b-date-range-picker__error-message\"\n />\n\n <!-- Description -->\n <bento-typography\n v-if=\"description\"\n :id=\"descriptionId\"\n class=\"b-date-range-picker__description\"\n :class=\"descriptionConditionalClasses\"\n el=\"span\"\n >\n {{ description }}\n </bento-typography>\n\n <!-- Calendar container -->\n <bento-popover\n v-if=\"inputContainerRef\"\n :id=\"datePickerContainerId\"\n class=\"b-date-range-picker__container\"\n :open=\"isDateRangePickerOpen\"\n :target-element=\"inputContainerRef\"\n :disable-focus-trap=\"true\"\n :aria-label=\"popoverAriaLabel\"\n position=\"bottom-start\"\n without-space\n fit-content\n >\n <date-range-picker-calendar\n :allow-time-input=\"allowTimeInput\"\n :quick-select-ranges=\"quickSelectRanges\"\n :value=\"value\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :number-of-months=\"numberOfMonths\"\n :date-form-data=\"textInputDisplayValue\"\n @custom-range=\"onRangeSelectorInput\"\n @input=\"onDateRangePickerInput\"\n @error=\"onDateRangePickerError\"\n @form-date=\"onDateRangePickerFormDateInputUpdate\"\n />\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef, watch } from 'vue';\n import { BentoClickOutsideDirective } from '@/directives';\n import { BentoDateRangePickerEvent, BentoDateRangePickerValue } from './date-range-picker.types';\n import { DateRangePickerCalendar } from './components/date-range-picker-calendar';\n import { DropdownInputDefault } from '@/components/dropdown/components';\n import { BentoPopover } from '@/components/popover';\n import { ErrorMessage } from '@/internal';\n import { generateUid } from '@/utils/ts/unique-id';\n import { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\n import { BentoTypography } from '../typography';\n import { useDateRangePickerCalendarText } from './composables/use-date-range-picker-calendar-text';\n import {\n DateRangePickerCalendarFormData,\n DateRangePickerCalendarRangeSelectorItems,\n } from './components/date-range-picker-calendar/date-range-picker-calendar.types';\n import { DateFormat } from '@/types';\n import format from 'date-fns/format';\n\n import messages from './messages.json';\n import { useFormLayoutFieldLoading } from '@/composables';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n /**\n * Date range picker selector.\n *\n * @example\n * import { BentoDateRangePicker } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDateRangePicker },\n * template: `\n * <bento-date-range-picker\n * label=\"Label\"\n * description=\"Supporting text\"\n * required\n * optional\n * disabled\n * @input=\"onDateChanged\"\n * v-model=\"selectedDate\"\n * />\n * `,\n * setup() {\n * const selectedDate = ref(new Date()); // reactive({ startDate: new Date(), endDate: new Date() })\n * return {\n * selectedDate,\n * }\n * }\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-date-range-picker',\n components: {\n BentoTypography,\n BentoPopover,\n DateRangePickerCalendar,\n DropdownInputDefault,\n ErrorMessage,\n },\n directives: { BentoClickOutsideDirective },\n props: {\n /**\n * Allows user to enter time values in the form\n */\n allowTimeInput: { type: Boolean, default: false },\n\n /**\n * Descriptive supporting text visbile underneath the dropdown.\n */\n description: { type: String, default: undefined },\n\n /**\n * Disables dropdown functionality.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Displays component in an error state with an error message\n */\n errorMessage: { type: String, default: null },\n\n /**\n * Allows user to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: DateRangePickerCalendar.props.firstDayOfWeek,\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: DateRangePickerCalendar.props.isDateDisabled,\n\n /**\n * Text that is displayed as a label above the element.\n */\n label: { type: String, default: undefined },\n\n /**\n * Highlights the dropdown is optional.\n */\n optional: { type: Boolean, default: false },\n\n /**\n * The Boolean readonly property, when present, makes the element not mutable, meaning the user can not edit the date range picker.\n */\n readonly: { type: Boolean, default: false },\n\n /**\n * Highlights the dropdown is required.\n */\n required: { type: Boolean, default: false },\n\n /**\n * Enables the range selector.\n * If provided, must be an array that sets the custom range dropdown items. Items are of the structure:\n * `label` - label of custom range item.\n * `value` - a unique key of the custom range item.\n * `data` - an object `{ startDate: Date; endDate: Date }` to set the date picker range to upon selecting.\n */\n quickSelectRanges: {\n type: Array as PropType<DateRangePickerCalendarRangeSelectorItems>,\n default: undefined,\n },\n\n /**\n * Set a maximum number of dates to be selectable by the range.\n */\n maxRange: DateRangePickerCalendar.props.maxRange,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: DateRangePickerCalendar.props.numberOfMonths,\n\n /**\n * Selected date\n */\n value: DateRangePickerCalendar.props.value,\n },\n emits: [BentoDateRangePickerEvent.INPUT],\n setup(props, { emit }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = { de, enUS, fr };\n const datePickerContainerId = generateUid('bento-date-range-picker-container');\n const labelId = generateUid('bento-date-range-picker-label');\n const descriptionId = generateUid('bento-date-range-picker-description');\n const errorId = generateUid('bento-date-range-picker-error');\n const dateErrorId = generateUid('bento-date-range-picker-date-error');\n const popoverAriaLabel = computed(\n () => props.label || t('dateRangePicker', { name: datePickerContainerId })\n );\n\n const isDateIncorrect = ref(false);\n const inputContainerRef = ref(null);\n const isDateRangePickerOpen = ref(false);\n const { isReadOnly } = useFormLayoutFieldLoading(toRef(props, 'readonly'));\n\n watch(\n () => props.disabled,\n () => {\n // Close date picker popover if it's opened when it's disabled\n if (props.disabled && isDateRangePickerOpen.value) {\n isDateRangePickerOpen.value = false;\n }\n }\n );\n\n const descriptionConditionalClasses = computed(() => ({\n 'b-date-range-picker__description--error': !!props.errorMessage || isDateIncorrect.value,\n }));\n\n const { dateDisplayValue, textInputDisplayValue, formatTextInputDisplayValue } =\n useDateRangePickerCalendarText({\n datePickerValue: toRef(props, 'value'),\n isDateIncorrect,\n });\n\n const ariaDescribedBy = computed(\n () =>\n `${props.description ? descriptionId : ''} ${props.errorMessage ? errorId : ''} ${\n isDateIncorrect.value ? dateErrorId : ''\n }`.trim() || null\n );\n\n const closeDateRangePicker = () => {\n isDateRangePickerOpen.value = false;\n };\n\n const openDateRangePicker = () => {\n isDateRangePickerOpen.value = true;\n formatTextInputDisplayValue();\n };\n\n const onDateRangePickerInput = (selectedRange: BentoDateRangePickerValue) => {\n // Reset the errors when the date is correct\n isDateIncorrect.value = false;\n\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n textInputDisplayValue.startDate = formatDate(selectedRange.startDate);\n textInputDisplayValue.endDate = formatDate(selectedRange.endDate);\n emit(BentoDateRangePickerEvent.INPUT, selectedRange);\n };\n\n const clearDateRangePickerValue = async () => {\n if (isDateIncorrect.value) {\n isDateIncorrect.value = false;\n }\n emit(BentoDateRangePickerEvent.INPUT, null);\n };\n\n const onEnterPressedOverInput = () => {\n // Close the date picker if the date is correct\n if (!isDateIncorrect.value) {\n isDateRangePickerOpen.value = false;\n }\n };\n\n const onDateRangePickerFormDateInputUpdate = (dateFormDate: DateRangePickerCalendarFormData) => {\n isDateIncorrect.value = false;\n\n if (dateFormDate.startTime) {\n textInputDisplayValue.startTime = dateFormDate.startTime;\n }\n\n if (dateFormDate.endTime) {\n textInputDisplayValue.endTime = dateFormDate.endTime;\n }\n };\n\n const onDateRangePickerError = dateTextInput => {\n isDateIncorrect.value = true;\n textInputDisplayValue.startDate = dateTextInput.startDate;\n textInputDisplayValue.endDate = dateTextInput.endDate;\n\n // Remove current date range selection\n emit(BentoDateRangePickerEvent.INPUT, { startDate: null, endDate: null });\n };\n\n const onRangeSelectorInput = (quickSelectRanges?: { startDate: Date; endDate: Date }) => {\n if (quickSelectRanges) {\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n textInputDisplayValue.startDate = formatDate(quickSelectRanges.startDate);\n textInputDisplayValue.endDate = formatDate(quickSelectRanges.endDate);\n emit(BentoDateRangePickerEvent.INPUT, quickSelectRanges);\n }\n };\n\n return {\n // Refs\n inputContainerRef,\n\n // Values,\n dateDisplayValue,\n datePickerContainerId,\n descriptionConditionalClasses,\n isDateIncorrect,\n isDateRangePickerOpen,\n isReadOnly,\n labelId,\n descriptionId,\n dateErrorId,\n errorId,\n popoverAriaLabel,\n ariaDescribedBy,\n textInputDisplayValue,\n\n // Events\n closeDateRangePicker,\n clearDateRangePickerValue,\n openDateRangePicker,\n onRangeSelectorInput,\n onEnterPressedOverInput,\n onDateRangePickerInput,\n onDateRangePickerError,\n onDateRangePickerFormDateInputUpdate,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker.scss\" />\n"],"names":["setHours","dirtyDate","dirtyHours","requiredArgs","date","toDate","hours","toInteger","setMinutes","dirtyMinutes","minutes","setSeconds","dirtySeconds","seconds","DateRangePickerCalendarEvent","DateRangePickerCalendarEvent2","validDigitRegex","hourRegex","minuteRegex","validateTimeInput","event","selectionStart","isValidKey","isValidColon","formatTimeInputValue","value","formattedValue","secondToLastDigit","lastDigit","FORM_INPUT_DEBOUNCE_TIME","RANGE_SELECTOR_CUSTOM_RANGE_KEY","_sfc_main$1","defineComponent","messages$1","BentoDropdown","BentoInputField","BentoTypography","Calendar","props","emit","slots","locale","t","useI18n","locales","de","enUS","fr","internalRangeDate","reactive","_a","_b","selectedRangeSelectorValue","ref","formInputWrapperConditionalClasses","computed","quickSelectRangeDefaultItems","resetCustomRangeToDefault","formatDate","dateToFormat","format","DateFormat","formatTime","startDateError","endDateError","startTimeError","endTimeError","dateTextInput","onDateInput","selectedDate","isValidTime","timeText","setTimeInDate","time","dateWithTime","isValidDate","dateText","isDateEnabled","onMounted","onStartDateSelected","newStartDate","onEndDateSelected","newEndDate","endOfDay","getDate","keyName","dateProp","validateStartDate","debounce","startDateText","endDate","onStartDateInput","formatDateInputValue","validateEndDate","endDateText","startDate","onEndDateInput","onDateInputKeyDown","validateDateInput","validateStartTime","startTimeText","validateEndTime","endTimeText","onStartTimeInput","onEndTimeInput","onTimeInputKeyDown","onRangeSelectorInput","newCustomRangeValue","foundResult","useHasSlot","_component_calendar","resolveComponent","createElementVNode","_hoisted_2$1","_hoisted_3","_ctx","openBlock","createBlock","_component_bento_dropdown","createCommentVNode","renderSlot","createVNode","_component_bento_typography","_component_bento_input_field","BentoDateRangePickerEvent","BentoDateRangePickerEvent2","useDateRangePickerCalendarText","datePickerValue","isDateIncorrect","dateFormat","textInputDisplayValue","_c","_d","_e","_sfc_main","messages","BentoPopover","DateRangePickerCalendar","DropdownInputDefault","ErrorMessage","BentoClickOutsideDirective","datePickerContainerId","generateUid","labelId","descriptionId","errorId","dateErrorId","popoverAriaLabel","inputContainerRef","isDateRangePickerOpen","isReadOnly","useFormLayoutFieldLoading","toRef","watch","descriptionConditionalClasses","dateDisplayValue","formatTextInputDisplayValue","ariaDescribedBy","quickSelectRanges","selectedRange","dateFormDate","createElementBlock","_hoisted_2","_component_error_message","normalizeClass","_component_bento_popover","_component_date_range_picker_calendar"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0Be,SAAAA,GAAAC,GAAAC,GAAA;AACf,EAAAC,GAAA,GAAA,SAAA;AACA,MAAAC,IAAAC,GAAAJ,CAAA,GACAK,IAAAC,GAAAL,CAAA;AACA,SAAAE,EAAA,SAAAE,CAAA,GACAF;AACA;ACNe,SAAAI,GAAAP,GAAAQ,GAAA;AACf,EAAAN,GAAA,GAAA,SAAA;AACA,MAAAC,IAAAC,GAAAJ,CAAA,GACAS,IAAAH,GAAAE,CAAA;AACA,SAAAL,EAAA,WAAAM,CAAA,GACAN;AACA;ACNe,SAAAO,GAAAV,GAAAW,GAAA;AACf,EAAAT,GAAA,GAAA,SAAA;AACA,MAAAC,IAAAC,GAAAJ,CAAA,GACAY,IAAAN,GAAAK,CAAA;AACA,SAAAR,EAAA,WAAAS,CAAA,GACAT;AACA;ACzBY,IAAAU,IAAA,kBAAAC,OACRA,EAAA,eAAA,gBACAA,EAAA,QAAA,SACAA,EAAA,QAAA,SACAA,EAAA,YAAA,aAJQA,IAAAD,KAAA,CAAA,CAAA;ACPZ,MAAAE,KAAA,QAEAC,KAAA,WACAC,KAAA,iBAEaC,KAAA,CAAAC,MAAA;AACT,QAAA,EAAA,gBAAAC,EAAA,IAAAD,EAAA,QAEAE,IAAAN,GAAA,KAAAI,EAAA,GAAA,KAAAA,EAAA,QAAA,aACAG,IAAA,CAAA,GAAA,GAAA,GAAA,CAAA,EAAA,SAAAF,CAAA,KAAAD,EAAA,QAAA;AAEA,EAAA,CAAAE,KAAA,CAAAC,KACIH,EAAA,eAAA;AAER,GAEaI,KAAA,CAAAC,MAAA;AACT,MAAA,CAAAA;AACI,WAAAA;AAGJ,MAAAC,IAAAD;AAGA,MAAAC,EAAA,WAAA,KAAA,SAAAD,GAAA,EAAA,IAAA;AACI,WAAA,IAAAC;AAGJ,QAAA,CAAAC,GAAAC,CAAA,IAAAF,EAAA,MAAA,EAAA;AACA,SAAA,CAAA,GAAA,CAAA,EAAA,SAAAA,EAAA,MAAA,KAAAE,MAAA,QACIF,IAAA,GAAAA,EAAA,MAAA,GAAAA,EAAA,SAAA,CAAA,KAAAC,OAIJV,GAAA,KAAAS,CAAA,KAAAR,GAAA,KAAAQ,CAAA,OACIA,KAAA,MAEJA;AACJ;;;;;;;;;;;GCsFIG,KAAA,KACAC,IAAA,eAsBAC,KAAAC,GAAA;AAAA,EAA+B,MAAA,EAAA,UAAAC,GAAA;AAAA,EACV,MAAA;AAAA,EACX,YAAA;AAAA,IACM,eAAAC;AAAA,IACR,iBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,UAAAC;AAAA,EACA;AAAA,EACJ,OAAA;AAAA;AAAA;AAAA;AAAA,IACO,gBAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAI6C,cAAA;AAAA,MAKlC,MAAA;AAAA,MACJ,SAAA,OAAA,EAAA,WAAA,QAAA,SAAA,QAAA,WAAA,QAAA,SAAA,OAAA;AAAA,IAC+F;AAAA;AAAA;AAAA;AAAA,IACzG,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAK+B,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKN,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKM,mBAAA;AAAA,MASZ,MAAA;AAAA,MACT,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,OAAA,EAAA,MAAA,QAAA,SAAA,OAAA;AAAA,EAK8E;AAAA,EAClF,OAAA;AAAA,IACOvB,EAAA;AAAA,IAC0BA,EAAA;AAAA,IACAA,EAAA;AAAA,IACAA,EAAA;AAAA,EACA;AAAA,EACjC,MAAAwB,GAAA,EAAA,MAAAC,GAAA,OAAAC,EAAA,GAAA;;AAEI,UAAA,EAAA,QAAAC,GAAA,GAAAC,EAAA,IAAAC,GAAA,EAAA,UAAAV,GAAA,CAAA,GACAW,IAAA,EAAA,IAAAC,IAAA,MAAAC,GAAA,IAAAC,GAAA,GACAC,IAAAC,GAAA;AAAA,MAAmC,YAAAC,KAAAZ,EAAA,UAAA,gBAAAY,GAAA;AAAA,MACqB,UAAAC,KAAAb,EAAA,UAAA,gBAAAa,GAAA;AAAA,IACF,CAAA,GAEtDC,IAAAC,EAAAvB,CAAA,GACAwB,IAAAC,EAAA,OAAA;AAAA,MAA2D,oDAAAjB,EAAA;AAAA,IACG,EAAA,GAE9DkB,IAAAD,EAAA,MACIjB,EAAA,oBACI;AAAA,MAAO,EAAA,OAAAI,EAAA,aAAA,GAAA,OAAAZ,EAAA;AAAA,MAC+D,GAAAQ,EAAA;AAAA,IACzD,IAGjB,CAAA,CAAQ,GAMZmB,IAAA,MAAA;AACI,MAAAnB,KAAA,QAAAA,EAAA,sBACIc,EAAA,QAAAtB;AAAA,IACJ,GAOJ4B,IAAA,CAAAC,MACIA,IAGAC,EAAAD,GAAAE,EAAA,yBAAA;AAAA,MAAgE,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,IACX,CAAA,IAHjD,IAORgB,IAAA,CAAAH,MACIA,IAIAC,EAAAD,GAAAE,EAAA,qBAAA;AAAA,MAA4D,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,IACP,CAAA,IAJjD,IASRiB,IAAAV,EAAA,EAAA,GACAW,IAAAX,EAAA,EAAA,GACAY,IAAAZ,EAAA,EAAA,GACAa,IAAAb,EAAA,EAAA,GAGAc,IAAAlB,GAAA;AAAA,MAA+B,WAAAX,EAAA,aAAA;AAAA,MACG,SAAAA,EAAA,aAAA;AAAA,MACF,WAAAA,EAAA,aAAA;AAAA,MACE,SAAAA,EAAA,aAAA;AAAA,IACF,CAAA,GAGhC8B,IAAA,CAAAC,MAAA;AACI,MAAA9B,EAAAzB,EAAA,OAAAuD,CAAA;AAAA,IAAqD,GAIzDC,IAAA,CAAAC,MAEI,sDACA,KAAAA,CAAA,GAGJC,IAAA,CAAApE,GAAAqE,MAAA;AACI,UAAA,CAAAA,KAAA,CAAAH,EAAAG,CAAA;AACI,eAAArE;AAGJ,UAAAsE,IAAA,IAAA,KAAAtE,CAAA;AAEA,YAAA,CAAAE,GAAAI,GAAAG,EAAA,IAAA4D,EAAA,MAAA,GAAA;AACA,aAAAC,IAAA1E,GAAA0E,GAAA,SAAApE,GAAA,EAAA,CAAA,GACAoE,IAAAlE,GAAAkE,GAAA,SAAAhE,GAAA,EAAA,CAAA,GACAgE,IAAA/D,GAAA+D,GAAA,SAAA7D,IAAA,EAAA,CAAA,GACA6D;AAAA,IAAO,GAGXC,IAAA,CAAAC,MAAA;AAEI,YAAAC,IAAA,CAAAzE,MAEIkC,EAAA,iBACI,CAAAA,EAAA,eAAAlC,CAAA,IAGJ;AAMJ,aAFA,qDAEA,KAAAwE,CAAA,KAAAC,EAAA,IAAA,KAAAD,CAAA,CAAA;AAAA,IAAmE;AAMvE,IAAAE,GAAA,MAAA;AACI,MAAAxC,EAAA,aAAA,aAAA,CAAAqC,EAAArC,EAAA,aAAA,SAAA,IACIyB,EAAA,QAAA,MAEAA,EAAA,QAAA,IACAE,EAAA,QAAA,KAGJ3B,EAAA,aAAA,WAAA,CAAAqC,EAAArC,EAAA,aAAA,OAAA,IACI0B,EAAA,QAAA,MAEAA,EAAA,QAAA,IACAE,EAAA,QAAA;AAAA,IACJ,CAAA;AAGJ,UAAAa,KAAA,CAAAC,MAAA;;AACI,MAAAvB,EAAA,GACAU,EAAA,YAAAT,EAAAsB,CAAA,GACAb,EAAA,YAEqDF,EAAA,UAGjDE,EAAA,aAAAjB,IAAAZ,EAAA,iBAAA,gBAAAY,EAAA,aAHAiB,EAAA,YAAAL,EAAAkB,CAAA,GAOJjB,EAAA,QAAA,IACAE,EAAA,QAAA;AAAA,IAAuB,GAG3BgB,KAAA,CAAAC,MAAA;;AACI,MAAAf,EAAA,UAAAT,EAAAwB,CAAA,GACAf,EAAA,UAE2DD,EAAA,UAGvDC,EAAA,WAAAjB,IAAAZ,EAAA,iBAAA,gBAAAY,EAAA,WAHAiB,EAAA,UAAAL,EAAAqB,EAAAD,CAAA,CAAA,GAOJlB,EAAA,QAAA,IACAE,EAAA,QAAA;AAAA,IAAqB,GAGzBkB,IAAA,CAAAC,MAAA;AACI,YAAAC,IAAAhD,EAAA,MAAA+C,CAAA;AACA,UAAAC;AACI,eAAAA;AAGJ,UAAAhD,EAAA,aAAA+C,CAAA,KAAAV,EAAArC,EAAA,aAAA+C,CAAA,CAAA;AACI,eAAA,IAAA,KAAA/C,EAAA,aAAA+C,CAAA,CAAA;AAAA,IAGG,GAGXE,KAAAC,EAAA,CAAAC,MAAA;AAEI,UAAAd,EAAAc,CAAA,GAAA;AACI,QAAA1B,EAAA,QAAA,IAEAf,EAAA,YAAAwB,EAAA,IAAA,KAAAiB,CAAA,GAAAtB,EAAA,SAAA;AAEA,cAAAuB,IAAAN,EAAA,SAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAA,IAAA,KAAA2E,CAAA;AAAA,UACR,SAAAC;AAAA,QACjC,CAAA,GAGJnD,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAA,IAAA,KAAA2E,CAAA;AAAA,UACJ,SAAAC;AAAA,QACjC,CAAA;AAAA;AAIJ,QAAA3B,EAAA,QAAA,IAEAxB,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,GAAAtC,EAAA,GAGJ8D,KAAA,CAAAF,MAAA;AACI,MAAAhC,EAAA,GAEAU,EAAA,YAAAyB,GAAAH,CAAA,GACAF,GAAApB,EAAA,SAAA;AAAA,IAAyC,GAG7C0B,KAAAL,EAAA,CAAAM,MAAA;AAEI,UAAAnB,EAAAmB,CAAA,GAAA;AACI,QAAA9B,EAAA,QAAA,IACAhB,EAAA,UAAAwB,EAAA,IAAA,KAAAsB,CAAA,GAAA3B,EAAA,OAAA;AAEA,cAAA4B,IAAAX,EAAA,WAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAAiF;AAAA,UACzC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,UAC2C,WAAAV,EAAA,aAAA;AAAA,UACb,SAAAwD;AAAA,QACrB,CAAA,GAGbvD,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAAiF;AAAA,UACrC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,QAC2C,CAAA;AAAA;AAI/C,QAAAgB,EAAA,QAAA,IAEAzB,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,GAAAtC,EAAA,GAGJmE,IAAA,CAAAF,MAAA;AACI,MAAArC,EAAA,GAEAU,EAAA,UAAAyB,GAAAE,CAAA,GACAD,GAAA1B,EAAA,OAAA;AAAA,IAAqC,GAGzC8B,IAAA,CAAA7E,MAAA;AACI,MAAA8E,GAAA9E,CAAA;AAAA,IAAuB,GAG3B+E,IAAAX,EAAA,CAAAY,MAAA;AACI,UAAA9B,EAAA8B,CAAA,GAAA;AACI,QAAAnC,EAAA,QAAA,IACAjB,EAAA,YAAAwB,EAAAxB,EAAA,WAAAoD,CAAA;AAEA,cAAAV,IAAAN,EAAA,SAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAA,IAAA,KAAAkC,EAAA,SAAA;AAAA,UACM,SAAA0C;AAAA,UAC/C,WAAAU;AAAA,UACW,SAAA9D,EAAA,aAAA;AAAA,QACiB,CAAA,GAGhCC,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAA,IAAA,KAAAkC,EAAA,SAAA;AAAA,UACU,SAAA0C;AAAA,QAC/C,CAAA;AAAA;AAIJ,QAAAzB,EAAA,QAAA,IAEA1B,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,CAAA,GAGJkC,KAAAb,EAAA,CAAAc,MAAA;AACI,UAAAhC,EAAAgC,CAAA,GAAA;AACI,QAAApC,EAAA,QAAA,IACAlB,EAAA,UAAAwB,EAAAxB,EAAA,SAAAsD,CAAA;AAEA,cAAAP,IAAAX,EAAA,WAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAAiF;AAAA,UACzC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,UAC2C,WAAAV,EAAA,aAAA;AAAA,UACb,SAAAgE;AAAA,QACrB,CAAA,GAEb/D,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAAiF;AAAA,UACrC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,QAC2C,CAAA;AAAA;AAI/C,QAAAkB,EAAA,QAAA,IAEA3B,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,CAAA,GAGJoC,KAAA,CAAAH,MAAA;AACI,MAAA3C,EAAA,GACAU,EAAA,YAAA3C,GAAA4E,CAAA,GACAD,EAAAhC,EAAA,SAAA;AAAA,IAAyC,GAG7CqC,KAAA,CAAAV,MAAA;AACI,MAAArC,EAAA,GACAU,EAAA,UAAA3C,GAAAsE,CAAA,GACAO,GAAAlC,EAAA,OAAA;AAAA,IAAqC,GAGzCsC,KAAA,CAAArF,MAAA;AACI,MAAAD,GAAAC,CAAA;AAAA,IAAuB,GAG3BsF,KAAA,CAAAC,MAAA;;AACI,MAAAvD,EAAA,QAAAuD;AACA,YAAAC,KAAAzD,KAAAD,IAAAZ,EAAA,sBAAA,gBAAAY,EAAA,KAAA,CAAA,EAAA,OAAAzB,EAAA,MAAAA,MAAAkF,OAAA,gBAAAxD,EAAA;AACA,MAAAyD,MACIzC,EAAA,YAAAT,EAAAkD,EAAA,SAAA,GACAzC,EAAA,UAAAT,EAAAkD,EAAA,OAAA,GACAzC,EAAA,cACIA,EAAA,YAAAL,EAAAqB,EAAAyB,EAAA,SAAA,CAAA,IAEJzC,EAAA,YACIA,EAAA,UAAAL,EAAAqB,EAAAyB,EAAA,OAAA,CAAA,IAEJrE,EAAAzB,EAAA,cAAA8F,CAAA;AAAA,IACJ;AAGJ,WAAA;AAAA;AAAA,MAAO,eAAAzC;AAAA,MAEH,cAAAH;AAAA,MACA,cAAAE;AAAA,MACA,4BAAAd;AAAA,MACA,gBAAAW;AAAA,MACA,gBAAAE;AAAA,MACA,8BAAAT;AAAA,MACA,oCAAAF;AAAA;AAAA,MACA,SAAAuD,GAAArE,CAAA;AAAA,MAGyB,GAAAE;AAAA;AAAA,MACzB,sBAAAgE;AAAA,MAGA,aAAAtC;AAAA,MACA,oBAAA6B;AAAA,MACA,gBAAAD;AAAA,MACA,mBAAAf;AAAA,MACA,gBAAAuB;AAAA,MACA,qBAAAzB;AAAA,MACA,kBAAAY;AAAA,MACA,kBAAAY;AAAA,MACA,oBAAAE;AAAA,IACA;AAAA,EACJ;AAER,CAAA;;;wFAtjBAK,IAAAC,EAAA,UAAA;;IA0EcC,EAAA,OAAAC,IAAA;AAAA,MArEyBD,EAAA,OAAAE,IAAA;AAAA,QAKzBC,EAAA,qBAAAC,EAAA,GAAAC,EAAAC,GAAA;AAAA,UAJgB,KAAA;AAAA,UACR,cAAAH,EAAA,EAAA,aAAA;AAAA,UACE,OAAAA,EAAA;AAAA,UACA,OAAAA,EAAA;AAAA;QAGI,GAAA,MAAA,GAAA,CAAA,cAAA,SAAA,SAAA,SAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,QACSJ,EAAA,QAAA,OAAA,IAAAK,GAAAL,EAAA,QAAA,SAAA,EAAA,KAAA,EAAA,GAAA,QAAA,EAAA,IAAAI,EAAA,IAAA,EAAA;AAAA,QAKFP,EAAA,OAAA,MAAA;AAAA,UAFOS,EAAAC,GAAA;AAAA,YAAU,UAAA;AAAA,YAAO,IAAA;AAAA;;;;;YAG3C,GAAA;AAAA,UAAA,CAAA;AAAA;;UAUwB,GAAA;AAAA;cAPe,cAAAP,EAAA,GAAA,UAAA;AAAA,cACT,OAAAA,EAAA,cAAA;AAAA,cAChB,OAAAA,EAAA;AAAA,cACE,OAAA;AAAA,cACP,SAAAA,EAAA;AAAA;YAEqB,GAAA;AAAA;;;cAIhB,GAAA;AAAA,YAAA,GAAA,GAAA,CAAA,cAAA,SAAA,SAAA,WAAA,WAAA,CAAA;AAAA,YASUA,EAAA,kBAAAC,EAAA,GAAAC,EAAAM,GAAA;AAAA,cARF,KAAA;AAAA,cACR,cAAAR,EAAA,EAAA,UAAA;AAAA,cACgB,OAAAA,EAAA,cAAA;AAAA,cAChB,OAAAA,EAAA;AAAA,cACE,OAAA;AAAA,cACP,SAAAA,EAAA;AAAA;YAEqB,GAAA;AAAA;;;;;UAKlC,GAAA,CAAA;AAAA,QAAA,CAAA;AAAA,QAC8BH,EAAA,OAAA,MAAA;AAAA,UAAAS,EAAAC,GAAA;AAAA,YAAU,UAAA;AAAA,YAAO,IAAA;AAAA;;;;;YAG3C,GAAA;AAAA,UAAA,CAAA;AAAA;;UAUwB,GAAA;AAAA;cAPD,OAAA;AAAA,cACP,cAAAP,EAAA,GAAA,QAAA;AAAA,cACY,OAAAA,EAAA,cAAA;AAAA,cACZ,OAAAA,EAAA;AAAA,cACE,SAAAA,EAAA;AAAA;YAEY,GAAA;AAAA;;;cAIhB,GAAA;AAAA,YAAA,GAAA,GAAA,CAAA,cAAA,SAAA,SAAA,WAAA,WAAA,CAAA;AAAA,YASUA,EAAA,kBAAAC,EAAA,GAAAC,EAAAM,GAAA;AAAA,cARF,KAAA;AAAA,cACR,cAAAR,EAAA,EAAA,QAAA;AAAA,cACc,OAAAA,EAAA,cAAA;AAAA,cACd,OAAAA,EAAA;AAAA,cACE,OAAA;AAAA,cACP,SAAAA,EAAA;AAAA;YAEqB,GAAA;AAAA;;;;;;QAM3B,CAAA;AAAA,MAAA,CAAA;AAAA;;MAMf,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAAA,CAAA;AAAA;MAEqBE,EAAAX,GAAA;AAAA,QACO,OAAAK,EAAA;AAAA,QACnB,qBAAAA,EAAA;AAAA,QACmB,oBAAAA,EAAA;AAAA,QACD,aAAAA,EAAA;AAAA,QACX,oBAAAA,EAAA;AAAA,QACW,YAAA;AAAA,QAClB,SAAAA,EAAA;AAAA,QACA,qBAAAA,EAAA;AAAA;;;;;;ACvFL,IAAAS,IAAA,kBAAAC,OACRA,EAAA,QAAA,SADQA,IAAAD,KAAA,CAAA,CAAA;ACGL,MAAAE,KAAA,CAAA;AAAA,EAAoF,iBAAAC;AAAA,EACvF,iBAAAC;AAEJ,MAAA;;AACI,QAAA,EAAA,QAAAvF,GAAA,GAAAC,EAAA,IAAAC,GAAA,GACAC,IAAA,EAAA,IAAAC,IAAA,MAAAC,GAAA,IAAAC,GAAA,GAEAW,IAAA,CAAAtD,GAAA6H,MAAArE,EAAAxD,GAAA6H,GAAA;AAAA,IAC6B,QAAArF,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,EAC4B,CAAA,GAGzDgB,IAAA,CAAA1D,MAAAwD,EAAAxD,GAAAyD,EAAA,qBAAA;AAAA,IACiD,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,EACQ,CAAA,GAIzDoF,IAAAjF,GAAA;AAAA,IAAwE,YAAAC,IAAA6E,EAAA,UAAA,QAAA7E,EAAA,YAAAQ,EAAAqE,EAAA,MAAA,WAAAlE,EAAA,uBAAA,IAAA;AAAA,IAG9D,UAAAV,IAAA4E,EAAA,UAAA,QAAA5E,EAAA,UAAAO,EAAAqE,EAAA,MAAA,SAAAlE,EAAA,uBAAA,IAAA;AAAA;AAAA,IAGA,YAAAsE,IAAAJ,EAAA,UAAA,QAAAI,EAAA,YAAArE,GAAAsE,IAAAL,EAAA,UAAA,gBAAAK,EAAA,SAAA,IAAA;AAAA,IAGuF,UAAAC,IAAAN,EAAA,UAAA,QAAAM,EAAA,UAAAvE,EAAAiE,EAAA,MAAA,OAAA,IAAA;AAAA,EACP,CAAA;AAuB1F,SAAA;AAAA;AAAA,IAAO,kBApBPxE,EAAA,MAAA;AAEI,UAAAyE,EAAA;AACI,eAAA,GAAAE,EAAA,aAAA,QAAAA,EAAA,WAAA;AAIJ,UAAA,CAAAH,EAAA,SAAA,CAAAA,EAAA,MAAA,aAAA,CAAAA,EAAA,MAAA;AACI,eAAArF,EAAA,iBAAA;AAGJ,YAAA,EAAA,WAAAqD,GAAA,SAAAL,EAAA,IAAAwC;AACA,aAAA,GAAAxE,EAAA,IAAA,KAAAqC,CAAA,GAAAlC,EAAA,qBAAA,OAAAH;AAAA,QAAiF,IAAA,KAAAgC,CAAA;AAAA,QAC7D7B,EAAA;AAAA,MACL;AAAA,IACf,CAAA;AAAA,IAOA,uBAAAqE;AAAA;AAAA,IACA,6BALJ,MAAA;AAAA,EAQI;AAER;;;;;;;;;;GC0EII,KAAAtG,GAAA;AAAA,EAA+B,MAAA,EAAA,UAAAuG,GAAA;AAAA,EACV,MAAA;AAAA,EACX,YAAA;AAAA,IACM,iBAAAnG;AAAA,IACR,cAAAoG;AAAA,IACA,yBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,cAAAC;AAAA,EACA;AAAA,EACJ,YAAA,EAAA,4BAAAC,GAAA;AAAA,EACyC,OAAA;AAAA;AAAA;AAAA;AAAA,IAClC,gBAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAI6C,aAAA,EAAA,MAAA,QAAA,SAAA,OAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAKN,cAAA,EAAA,MAAA,QAAA,SAAA,KAAA;AAAA;AAAA;AAAA;AAAA,IAKE,gBAAAH,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKE,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKA,OAAA,EAAA,MAAA,QAAA,SAAA,OAAA;AAAA;AAAA;AAAA;AAAA,IAKJ,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAA;AAAA,MASvB,MAAA;AAAA,MACT,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,UAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKwC,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKM,OAAAA,EAAA,MAAA;AAAA,EAKT;AAAA,EACzC,OAAA,CAAAb,EAAA,KAAA;AAAA,EACuC,MAAAtF,GAAA,EAAA,MAAAC,EAAA,GAAA;AAEnC,UAAA,EAAA,QAAAE,GAAA,GAAAC,EAAA,IAAAC,GAAA,EAAA,UAAA4F,GAAA,CAAA,GACA3F,IAAA,EAAA,IAAAC,IAAA,MAAAC,GAAA,IAAAC,GAAA,GACA8F,IAAAC,EAAA,mCAAA,GACAC,IAAAD,EAAA,+BAAA,GACAE,IAAAF,EAAA,qCAAA,GACAG,IAAAH,EAAA,+BAAA,GACAI,IAAAJ,EAAA,oCAAA,GACAK,IAAA5F;AAAA,MAAyB,MAAAjB,EAAA,SAAAI,EAAA,mBAAA,EAAA,MAAAmG,EAAA,CAAA;AAAA,IACoD,GAG7Eb,IAAA3E,EAAA,EAAA,GACA+F,IAAA/F,EAAA,IAAA,GACAgG,IAAAhG,EAAA,EAAA,GACA,EAAA,YAAAiG,EAAA,IAAAC,GAAAC,GAAAlH,GAAA,UAAA,CAAA;AAEA,IAAAmH;AAAA,MAAA,MAAAnH,EAAA;AAAA,MACgB,MAAA;AAGR,QAAAA,EAAA,YAAA+G,EAAA,UACIA,EAAA,QAAA;AAAA,MACJ;AAAA,IACJ;AAGJ,UAAAK,IAAAnG,EAAA,OAAA;AAAA,MAAsD,2CAAA,CAAA,CAAAjB,EAAA,gBAAA0F,EAAA;AAAA,IACiC,EAAA,GAGvF,EAAA,kBAAA2B,GAAA,uBAAAzB,GAAA,6BAAA0B,EAAA,IAAA9B,GAAA;AAAA,MACmC,iBAAA0B,GAAAlH,GAAA,OAAA;AAAA,MACU,iBAAA0F;AAAA,IACrC,CAAA,GAGR6B,IAAAtG;AAAA,MAAwB,MAAA,GAAAjB,EAAA,cAAA0G,IAAA,MAAA1G,EAAA,eAAA2G,IAAA,MAAAjB,EAAA,QAAAkB,IAAA,KAAA,KAAA,KAAA;AAAA,IAIH;AAyErB,WAAA;AAAA;AAAA,MAAO,mBAAAE;AAAA;AAAA,MAEH,kBAAAO;AAAA,MAGA,uBAAAd;AAAA,MACA,+BAAAa;AAAA,MACA,iBAAA1B;AAAA,MACA,uBAAAqB;AAAA,MACA,YAAAC;AAAA,MACA,SAAAP;AAAA,MACA,eAAAC;AAAA,MACA,aAAAE;AAAA,MACA,SAAAD;AAAA,MACA,kBAAAE;AAAA,MACA,iBAAAU;AAAA,MACA,uBAAA3B;AAAA;AAAA,MACA,sBAvFJ,MAAA;AACI,QAAAmB,EAAA,QAAA;AAAA,MAA8B;AAAA,MAyF9B,2BAnEJ,YAAA;AACI,QAAArB,EAAA,UACIA,EAAA,QAAA,KAEJzF,EAAAqF,EAAA,OAAA,IAAA;AAAA,MAA0C;AAAA,MAgE1C,qBAvFJ,MAAA;AACI,QAAAyB,EAAA,QAAA,IACAO,EAAA;AAAA,MAA4B;AAAA,MAsF5B,sBAlCJ,CAAAE,MAAA;AACI,YAAAA,GAAA;AACI,gBAAApG,IAAA,CAAAtD,MAAAwD,EAAAxD,GAAAyD,EAAA,yBAAA;AAAA,YACqD,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,UACI,CAAA;AAEzD,UAAAoF,EAAA,YAAAxE,EAAAoG,EAAA,SAAA,GACA5B,EAAA,UAAAxE,EAAAoG,EAAA,OAAA,GACAvH,EAAAqF,EAAA,OAAAkC,CAAA;AAAA;AAAA,MACJ;AAAA,MA0BA,yBA/DJ,MAAA;AAEI,QAAA9B,EAAA,UACIqB,EAAA,QAAA;AAAA,MACJ;AAAA,MA4DA,wBArFJ,CAAAU,MAAA;AAEI,QAAA/B,EAAA,QAAA;AAEA,cAAAtE,IAAA,CAAAtD,MAAAwD,EAAAxD,GAAAyD,EAAA,yBAAA;AAAA,UACqD,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,QACI,CAAA;AAGzD,QAAAoF,EAAA,YAAAxE,EAAAqG,EAAA,SAAA,GACA7B,EAAA,UAAAxE,EAAAqG,EAAA,OAAA,GACAxH,EAAAqF,EAAA,OAAAmC,CAAA;AAAA,MAAmD;AAAA,MA2EnD,wBA9CJ,CAAA5F,MAAA;AACI,QAAA6D,EAAA,QAAA,IACAE,EAAA,YAAA/D,EAAA,WACA+D,EAAA,UAAA/D,EAAA,SAGA5B,EAAAqF,EAAA,OAAA,EAAA,WAAA,MAAA,SAAA,KAAA,CAAA;AAAA,MAAwE;AAAA,MAyCxE,sCA3DJ,CAAAoC,MAAA;AACI,QAAAhC,EAAA,QAAA,IAEAgC,EAAA,cACI9B,EAAA,YAAA8B,EAAA,YAGJA,EAAA,YACI9B,EAAA,UAAA8B,EAAA;AAAA,MACJ;AAAA,IAmDA;AAAA,EACJ;AAER,CAAA;;;;;IA3WU7C,EAAA,SAAAC,EAAA,GAAA6C,EAAA,OAAA;AAAA,MARwB,KAAA;AAAA,MAAO,IAAA9C,EAAA;AAAA,MACjC,OAAA;AAAA,IAAA,GAAA;AAAA;QAAoC,IAAA;AAAA;;;;;QACZ,GAAA;AAAA,MAAA,CAAA;AAAA;QAAwD,KAAA;AAAA,QAAI,OAAA;AAAA;;;;;;MAG5D,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,MAELJ,EAAA,YAAAC,EAAA,GAAAC,EAAAK,GAAA;AAAA,QAF6D,KAAA;AAAA,QAAI,OAAA;AAAA;;;;;;;IAMxF,GAAA,GAAAwC,EAAA,KAAA3C,EAAA,IAAA,EAAA;AAAA,IAAaP,EAAA,OAAA;AAAA;IAeP,GAAA;AAAA;QAZsC,KAAA;AAAA,QACnC,cAAAG,EAAA;AAAA,QACiB,cAAAA,EAAA;AAAA,QACD,mBAAAA,EAAA,QAAAA,EAAA,UAAA;AAAA,QACE,oBAAAA,EAAA;AAAA,QACJ,UAAAA,EAAA;AAAA,QACR,cAAA,CAAA,CAAAA,EAAA,gBAAAA,EAAA;AAAA,QACyB,MAAAA,EAAA;AAAA,QACrB,iBAAAA,EAAA;AAAA,QACJ,UAAAA,EAAA;AAAA,QACC,QAAAA,EAAA;AAAA,QACA,SAAAA,EAAA;AAAA;;IAMS,GAAA,EAAA;AAAA;MACL,KAAA;AAAA,MACf,IAAAA,EAAA;AAAA,MACK,iBAAAA,EAAA,GAAA,sBAAA,EAAA,SAAA;AAAA;IAGE,GAAA,MAAA,GAAA,CAAA,MAAA,eAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAIVJ,EAAA,gBAAAC,EAAA,GAAAC,EAAA8C,GAAA;AAAA,MAHc,KAAA;AAAA,MACX,IAAAhD,EAAA;AAAA,MACK,iBAAAA,EAAA;AAAA;IAKA,GAAA,MAAA,GAAA,CAAA,MAAA,eAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAOSJ,EAAA,eAAAC,EAAA,GAAAC,EAAAK,GAAA;AAAA,MANG,KAAA;AAAA,MACb,IAAAP,EAAA;AAAA,MAEF,OAAAiD,GAAA,CAAA,oCAAAjD,EAAA,6BAAA,CAAA;AAAA;;;;;;IAOG,GAAA,GAAA,CAAA,MAAA,OAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAyBMJ,EAAA,qBAAAC,EAAA,GAAAC,EAAAgD,GAAA;AAAA,MAxBc,KAAA;AAAA,MACrB,IAAAlD,EAAA;AAAA,MACE,OAAA;AAAA,MACN,MAAAA,EAAA;AAAA,MACA,kBAAAA,EAAA;AAAA,MACY,sBAAA;AAAA,MACJ,cAAAA,EAAA;AAAA,MACI,UAAA;AAAA,MACb,iBAAA;AAAA;;;QAGuBM,EAAA6C,GAAA;AAAA,UACoB,oBAAAnD,EAAA;AAAA,UAC1B,uBAAAA,EAAA;AAAA,UACO,OAAAA,EAAA;AAAA,UACnB,qBAAAA,EAAA;AAAA,UACmB,oBAAAA,EAAA;AAAA,UACD,aAAAA,EAAA;AAAA,UACF,oBAAAA,EAAA;AAAA,UACF,kBAAAA,EAAA;AAAA,UACP,eAAAA,EAAA;AAAA,UACA,SAAAA,EAAA;AAAA,UACI,SAAAA,EAAA;AAAA;;;;;;;;;;","x_google_ignoreList":[0,1,2]}
1
+ {"version":3,"file":"index.fd1cd23a.js","sources":["../../../../node_modules/date-fns/esm/setHours/index.js","../../../../node_modules/date-fns/esm/setMinutes/index.js","../../../../node_modules/date-fns/esm/setSeconds/index.js","../../../vue2/src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.types.ts","../../../vue2/src/utils/ts/time-input.ts","../../../vue2/src/components/date-range-picker/components/date-range-picker-calendar/date-range-picker-calendar.vue","../../../vue2/src/components/date-range-picker/date-range-picker.types.ts","../../../vue2/src/components/date-range-picker/composables/use-date-range-picker-calendar-text.ts","../../../vue2/src/components/date-range-picker/date-range-picker.vue"],"sourcesContent":["import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * var result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date.\n *\n * @description\n * Set the seconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} seconds - the seconds of the new date\n * @returns {Date} the new date with the seconds set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\n\nexport default function setSeconds(dirtyDate, dirtySeconds) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var seconds = toInteger(dirtySeconds);\n date.setSeconds(seconds);\n return date;\n}","export interface DateRangePickerCalendarFormData {\n startDate: string;\n endDate: string;\n startTime?: string;\n endTime?: string;\n}\n\nexport enum DateRangePickerCalendarEvent {\n CUSTOM_RANGE = 'custom-range',\n INPUT = 'input',\n ERROR = 'error',\n FORM_DATE = 'form-date',\n}\n\nexport type DateRangePickerCalendarRangeSelectorItems = Array<{\n label: string;\n value: string;\n data: { startDate: Date; endDate: Date };\n}>;\n","const validDigitRegex = /[\\d]/;\n\nconst hourRegex = /^\\d{2}$/;\nconst minuteRegex = /^\\d{2}:\\d{2}$/;\n\nexport const validateTimeInput = (event: KeyboardEvent) => {\n const { selectionStart } = event.target as HTMLInputElement;\n\n const isValidKey = validDigitRegex.test(event.key) || event.key === 'Backspace';\n const isValidColon = [1, 2, 4, 5].includes(selectionStart) && event.key === ':';\n\n if (!isValidKey && !isValidColon) {\n event.preventDefault();\n }\n};\n\nexport const formatTimeInputValue = (value: string) => {\n if (!value) {\n return value;\n }\n\n let formattedValue = value;\n\n // Format if the first value is bigger than 2, because it can't be bigger than 24 hours\n if (formattedValue.length === 1 && parseInt(value, 10) > 2) {\n return `0${formattedValue}:`;\n }\n\n const [secondToLastDigit, lastDigit] = formattedValue.slice(-2);\n if ([2, 5].includes(formattedValue.length) && lastDigit === ':') {\n formattedValue = `${formattedValue.slice(0, formattedValue.length - 2)}0${secondToLastDigit}`;\n }\n\n // Add `:` after hour/minute\n if (hourRegex.test(formattedValue) || minuteRegex.test(formattedValue)) {\n formattedValue += ':';\n }\n return formattedValue;\n};\n","<template>\n <div class=\"b-date-range-picker-calendar\">\n <!-- Form -->\n <div class=\"b-date-range-picker-calendar__form-container\">\n <div class=\"b-date-range-picker-calendar__form\">\n <bento-dropdown\n v-if=\"quickSelectRanges\"\n :aria-label=\"t('customRange')\"\n :items=\"quickSelectRangeDefaultItems\"\n :value=\"selectedRangeSelectorValue\"\n @input=\"onRangeSelectorInput\"\n />\n\n <template v-if=\"hasSlot('title')\">\n <slot name=\"title\" />\n </template>\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n From\n </bento-typography>\n <div :class=\"formInputWrapperConditionalClasses\">\n <bento-input-field\n :aria-label=\"$t('dateFrom')\"\n :value=\"dateTextInput.startDate\"\n :error=\"startDateError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onStartDateInput\"\n @keydown=\"onDateInputKeyDown\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n\n <bento-input-field\n v-if=\"allowTimeInput\"\n :aria-label=\"t('timeFrom')\"\n :value=\"dateTextInput.startTime\"\n :error=\"startTimeError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onStartTimeInput\"\n @keydown=\"onTimeInputKeyDown\"\n >\n <template #description>HH:MM:SS</template>\n </bento-input-field>\n </div>\n </div>\n\n <div>\n <bento-typography stronger el=\"span\" class=\"b-date-range-picker-calendar__label\">\n To\n </bento-typography>\n <div :class=\"formInputWrapperConditionalClasses\">\n <bento-input-field\n class=\"b-date-range-picker-calendar__form-input\"\n :aria-label=\"$t('dateTo')\"\n :value=\"dateTextInput.endDate\"\n :error=\"endDateError\"\n @input=\"onEndDateInput\"\n @keydown=\"onDateInputKeyDown\"\n >\n <template #description>YYYY-MM-DD</template>\n </bento-input-field>\n\n <bento-input-field\n v-if=\"allowTimeInput\"\n :aria-label=\"t('timeTo')\"\n :value=\"dateTextInput.endTime\"\n :error=\"endTimeError\"\n class=\"b-date-range-picker-calendar__form-input\"\n @input=\"onEndTimeInput\"\n @keydown=\"onTimeInputKeyDown\"\n >\n <template #description>HH:MM:SS</template>\n </bento-input-field>\n </div>\n </div>\n </div>\n\n <div v-if=\"hasSlot('actions')\">\n <slot name=\"actions\" />\n </div>\n </div>\n\n <!-- Calendar -->\n <div class=\"b-date-range-picker-calendar__calendars-container\">\n <calendar\n :value=\"value\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :number-of-months=\"numberOfMonths\"\n is-range\n @input=\"onDateInput\"\n @start-date-selected=\"onStartDateSelected\"\n @end-date-selected=\"onEndDateSelected\"\n />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, onMounted, PropType, reactive, ref } from 'vue';\n import { Calendar, CalendarRangeDateValue } from '@/internal';\n import { BentoTypography } from '@/components/typography';\n import { BentoInputField } from '@/components/input-field';\n import { BentoDropdown } from '@/components/dropdown';\n import { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\n import { debounce } from '@/utils/ts/debounce';\n import { useHasSlot } from '@/composables';\n import { formatDateInputValue, validateDateInput } from '@/utils/ts/date-input';\n import {\n DateRangePickerCalendarEvent,\n DateRangePickerCalendarFormData,\n DateRangePickerCalendarRangeSelectorItems,\n } from './date-range-picker-calendar.types';\n import { DateFormat } from '@/types';\n import { formatTimeInputValue, validateTimeInput } from '@/utils/ts/time-input';\n import setHours from 'date-fns/setHours';\n import setMinutes from 'date-fns/setMinutes';\n import setSeconds from 'date-fns/setSeconds';\n import format from 'date-fns/format';\n import endOfDay from 'date-fns/endOfDay';\n import messages from './messages.json';\n\n const FORM_INPUT_DEBOUNCE_TIME = 300;\n const RANGE_SELECTOR_CUSTOM_RANGE_KEY = 'customRange';\n type MessageSchema = (typeof messages)['en-US'];\n\n /**\n * Calendar for range dates. Contains the logic to handle the range forms.\n *\n * @example\n * import DatePickerCalendarRange from './date-range-picker-calendar.vue';\n *\n * export default {\n * components: { DatePickerCalendarRange },\n * template: `\n * <date-range-picker-calendar\n * :value=\"{startDate: new Date(), endDate: new Date() }\"\n * :first-day-of-week=\"BentoDatePickerFirstDayOfWeek.MONDAY\"\n * :is-date-disabled=\"(date: Date) => boolean\"\n * :number-of-months=\"2\"\n * @input=\"({ startDate, endDate }) => void\"\n * />\n * `\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'date-range-picker-calendar',\n components: {\n BentoDropdown,\n BentoInputField,\n BentoTypography,\n Calendar,\n },\n props: {\n /**\n * Allows user to enter time values in the form\n */\n allowTimeInput: { type: Boolean, default: false },\n\n /**\n * Ranges form persistance data\n */\n dateFormData: {\n type: Object as PropType<DateRangePickerCalendarFormData>,\n default: () => ({ startDate: undefined, endDate: undefined, startTime: undefined, endTime: undefined }),\n },\n\n /**\n * Allows you to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: Calendar.props.firstDayOfWeek,\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: Calendar.props.isDateDisabled,\n\n /**\n * Set a maximum number of dates to be selectable by the range.\n */\n maxRange: Calendar.props.maxRange,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: Calendar.props.numberOfMonths,\n\n /**\n * Enables the custom range selector.\n * If provided, must be an array that sets the custom range dropdown items. Items are of the structure:\n * `label` - label of custom range item.\n * `value` - a unique key of the custom range item.\n * `data` - an object `{ startDate: Date; endDate: Date }` to set the date picker range to upon selecting.\n */\n quickSelectRanges: {\n type: Array as PropType<DateRangePickerCalendarRangeSelectorItems>,\n default: undefined,\n },\n\n /**\n * Selected date\n */\n value: { type: Object as PropType<CalendarRangeDateValue>, default: undefined },\n },\n emits: [\n DateRangePickerCalendarEvent.CUSTOM_RANGE,\n DateRangePickerCalendarEvent.INPUT,\n DateRangePickerCalendarEvent.ERROR,\n DateRangePickerCalendarEvent.FORM_DATE,\n ],\n setup(props, { emit, slots }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = { de, enUS, fr };\n const internalRangeDate = reactive({\n startDate: (props.value as CalendarRangeDateValue)?.startDate,\n endDate: (props.value as CalendarRangeDateValue)?.endDate,\n });\n const selectedRangeSelectorValue = ref(RANGE_SELECTOR_CUSTOM_RANGE_KEY);\n const formInputWrapperConditionalClasses = computed(() => ({\n 'b-date-range-picker-calendar__form-input-wrapper': props.allowTimeInput,\n }));\n const quickSelectRangeDefaultItems = computed(() => {\n if (props.quickSelectRanges) {\n return [\n { label: t('customRange'), value: RANGE_SELECTOR_CUSTOM_RANGE_KEY },\n ...props.quickSelectRanges,\n ];\n }\n return [];\n });\n\n /**\n * When selecting a custom range, set the range selecter if it is enabled.\n */\n const resetCustomRangeToDefault = () => {\n if (props?.quickSelectRanges) {\n selectedRangeSelectorValue.value = RANGE_SELECTOR_CUSTOM_RANGE_KEY;\n }\n };\n\n /**\n * Format date to a string value in format yyyy-MM-dd\n * @param {Date} dateToFormat Date to be formatted\n */\n const formatDate = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n return format(dateToFormat, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n };\n\n const formatTime = (dateToFormat?: Date) => {\n if (!dateToFormat) {\n return '';\n }\n\n return format(dateToFormat, DateFormat.HOUR_MINUTE_SECONDS, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n };\n\n // Form error flags\n const startDateError = ref(false);\n const endDateError = ref(false);\n const startTimeError = ref(false);\n const endTimeError = ref(false);\n\n // Form input text used in range variant\n const dateTextInput = reactive({\n startDate: props.dateFormData.startDate,\n endDate: props.dateFormData.endDate,\n startTime: props.dateFormData.startTime,\n endTime: props.dateFormData.endTime,\n });\n\n const onDateInput = (selectedDate: Date) => {\n emit(DateRangePickerCalendarEvent.INPUT, selectedDate);\n };\n\n // Validate time\n const isValidTime = (timeText: string) => {\n // HH:MM:SS regex\n const timeRegex = /^(?:[01]\\d|2[01234]):(?:[012345]\\d):(?:[012345]\\d)$/;\n return timeRegex.test(timeText);\n };\n\n const setTimeInDate = (date: Date, time: string) => {\n if (!time || !isValidTime(time)) {\n return date;\n }\n\n let dateWithTime = new Date(date);\n\n const [hours, minutes, seconds] = time.split(':');\n dateWithTime = setHours(dateWithTime, parseInt(hours, 10));\n dateWithTime = setMinutes(dateWithTime, parseInt(minutes, 10));\n dateWithTime = setSeconds(dateWithTime, parseInt(seconds, 10));\n return dateWithTime;\n };\n\n const isValidDate = (dateText: string) => {\n // Is date selectable\n const isDateEnabled = (date: Date) => {\n // Check if function is set, otherwise all dates are enabled\n if (props.isDateDisabled) {\n return !props.isDateDisabled(date);\n }\n\n return true;\n };\n\n // YYYY-MM-DD regex\n const dateRegex = /^\\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])$/;\n // Date matches text regex\n return dateRegex.test(dateText) && isDateEnabled(new Date(dateText));\n };\n\n /**\n * When mounted, set the input error states to true if the values are not valid\n */\n onMounted(() => {\n if (props.dateFormData.startDate && !isValidDate(props.dateFormData.startDate)) {\n startDateError.value = true;\n } else {\n startDateError.value = false;\n startTimeError.value = false;\n }\n\n if (props.dateFormData.endDate && !isValidDate(props.dateFormData.endDate)) {\n endDateError.value = true;\n } else {\n endDateError.value = false;\n endTimeError.value = false;\n }\n });\n\n const onStartDateSelected = (newStartDate: Date) => {\n resetCustomRangeToDefault();\n dateTextInput.startDate = formatDate(newStartDate);\n if (!dateTextInput.startTime) {\n // Set the time to the beginning of the day\n dateTextInput.startTime = formatTime(newStartDate);\n } else if (startTimeError.value) {\n // Set the form time if it was previously set\n dateTextInput.startTime = props.dateFormData?.startTime;\n }\n\n // Reset errors\n startDateError.value = false;\n startTimeError.value = false;\n };\n\n const onEndDateSelected = (newEndDate: Date) => {\n dateTextInput.endDate = formatDate(newEndDate);\n if (!dateTextInput.endTime) {\n // Set the time to the end of the day\n dateTextInput.endTime = formatTime(endOfDay(newEndDate));\n } else if (endTimeError.value) {\n // Set the form time if it was previously set\n dateTextInput.endTime = props.dateFormData?.endTime;\n }\n\n // Reset errors\n endDateError.value = false;\n endTimeError.value = false;\n };\n\n const getDate = (keyName: keyof CalendarRangeDateValue) => {\n const dateProp = (props.value as CalendarRangeDateValue)[keyName];\n if (dateProp) {\n return dateProp;\n }\n\n if (props.dateFormData[keyName] && isValidDate(props.dateFormData[keyName])) {\n return new Date(props.dateFormData[keyName]);\n }\n\n return undefined;\n };\n\n const validateStartDate = debounce((startDateText: string) => {\n // Checks for YYYY-MM-DD format\n if (isValidDate(startDateText)) {\n startDateError.value = false;\n // Format date string to Date object\n internalRangeDate.startDate = setTimeInDate(new Date(startDateText), dateTextInput.startTime);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(startDateText),\n endDate,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(startDateText),\n endDate,\n });\n } else {\n // Indicate form error\n startDateError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n const onStartDateInput = (startDateText: string) => {\n resetCustomRangeToDefault();\n // Set the date as string when input through the form\n dateTextInput.startDate = formatDateInputValue(startDateText);\n validateStartDate(dateTextInput.startDate);\n };\n\n const validateEndDate = debounce((endDateText: string) => {\n // Checks for YYYY-MM-DD format\n if (isValidDate(endDateText)) {\n endDateError.value = false;\n internalRangeDate.endDate = setTimeInDate(new Date(endDateText), dateTextInput.endTime);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.endTime,\n endTime: endDateText,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n });\n } else {\n // Indicate form error\n endDateError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n }, FORM_INPUT_DEBOUNCE_TIME);\n\n const onEndDateInput = (endDateText: string) => {\n resetCustomRangeToDefault();\n // Set the date as string when input through the form\n dateTextInput.endDate = formatDateInputValue(endDateText);\n validateEndDate(dateTextInput.endDate);\n };\n\n const onDateInputKeyDown = (event: KeyboardEvent) => {\n validateDateInput(event);\n };\n\n const validateStartTime = debounce((startTimeText: string) => {\n if (isValidTime(startTimeText)) {\n startTimeError.value = false;\n internalRangeDate.startDate = setTimeInDate(internalRangeDate.startDate, startTimeText);\n\n const endDate = getDate('endDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\n startTime: startTimeText,\n endTime: props.dateFormData.endTime,\n });\n\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate: new Date(internalRangeDate.startDate),\n endDate,\n });\n } else {\n // Indicate form error\n startTimeError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n });\n\n const validateEndTime = debounce((endTimeText: string) => {\n if (isValidTime(endTimeText)) {\n endTimeError.value = false;\n internalRangeDate.endDate = setTimeInDate(internalRangeDate.endDate, endTimeText);\n\n const startDate = getDate('startDate');\n\n emit(DateRangePickerCalendarEvent.FORM_DATE, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n startTime: props.dateFormData.startTime,\n endTime: endTimeText,\n });\n emit(DateRangePickerCalendarEvent.INPUT, {\n startDate,\n endDate: new Date(internalRangeDate.endDate),\n });\n } else {\n // Indicate form error\n endTimeError.value = true;\n // Emit Date picker calendar error\n emit(DateRangePickerCalendarEvent.ERROR, { ...dateTextInput });\n }\n });\n\n const onStartTimeInput = (startTimeText: string) => {\n resetCustomRangeToDefault();\n dateTextInput.startTime = formatTimeInputValue(startTimeText);\n validateStartTime(dateTextInput.startTime);\n };\n\n const onEndTimeInput = (endDateText: string) => {\n resetCustomRangeToDefault();\n dateTextInput.endTime = formatTimeInputValue(endDateText);\n validateEndTime(dateTextInput.endTime);\n };\n\n const onTimeInputKeyDown = (event: KeyboardEvent) => {\n validateTimeInput(event);\n };\n\n const onRangeSelectorInput = (newCustomRangeValue: string) => {\n selectedRangeSelectorValue.value = newCustomRangeValue;\n const foundResult = props.quickSelectRanges?.find(({ value }) => value === newCustomRangeValue)?.data;\n if (foundResult) {\n dateTextInput.startDate = formatDate(foundResult.startDate);\n dateTextInput.endDate = formatDate(foundResult.endDate);\n if (!dateTextInput.startTime) {\n dateTextInput.startTime = formatTime(endOfDay(foundResult.startDate));\n }\n if (!dateTextInput.endTime) {\n dateTextInput.endTime = formatTime(endOfDay(foundResult.endDate));\n }\n emit(DateRangePickerCalendarEvent.CUSTOM_RANGE, foundResult);\n }\n };\n\n return {\n // Values\n dateTextInput,\n endDateError,\n endTimeError,\n selectedRangeSelectorValue,\n startDateError,\n startTimeError,\n quickSelectRangeDefaultItems,\n formInputWrapperConditionalClasses,\n\n // Methods\n hasSlot: useHasSlot(slots),\n t,\n\n // Events\n onRangeSelectorInput,\n onDateInput,\n onDateInputKeyDown,\n onEndDateInput,\n onEndDateSelected,\n onEndTimeInput,\n onStartDateSelected,\n onStartDateInput,\n onStartTimeInput,\n onTimeInputKeyDown,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker-calendar.scss\" />\n","export { CalendarFirstDayOfWeek as BentoDateRangePickerFirstDayOfWeek } from '@/internal';\nexport type {\n CalendarIsDateDisabled as BentoDateRangePickerIsDateDisabled,\n CalendarRangeDateValue as BentoDateRangePickerValue,\n} from '@/internal';\n\nexport enum BentoDateRangePickerEvent {\n INPUT = 'input',\n}\n","import { computed, reactive } from 'vue';\nimport { de, enUS, fr } from 'date-fns/locale';\nimport { useI18n } from '@/utils/ts/i18n';\nimport { UseDateDisplayText } from './use-date-range-picker-calendar-text.types';\nimport { DateFormat } from '@/types';\nimport { CalendarRangeDateValue } from '@/internal';\nimport { DateRangePickerCalendarFormData } from '../components/date-range-picker-calendar/date-range-picker-calendar.types';\nimport format from 'date-fns/format';\n\nexport const useDateRangePickerCalendarText: UseDateDisplayText<CalendarRangeDateValue> = ({\n datePickerValue,\n isDateIncorrect,\n}) => {\n const { locale, t } = useI18n();\n const locales = { de, enUS, fr };\n\n const formatDate = (date: Date, dateFormat: DateFormat) =>\n format(date, dateFormat, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n const formatTime = (date: Date) =>\n format(date, DateFormat.HOUR_MINUTE_SECONDS, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n // Handle the form input text\n const textInputDisplayValue = reactive<DateRangePickerCalendarFormData>({\n startDate: datePickerValue.value?.startDate\n ? formatDate(datePickerValue.value.startDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n endDate: datePickerValue.value?.endDate\n ? formatDate(datePickerValue.value.endDate, DateFormat.NUMERIC_DATE_YEAR_FIRST)\n : undefined,\n\n // Set time if the startDate/endDate are set\n startTime: datePickerValue.value?.startDate ? formatTime(datePickerValue.value?.startDate) : undefined,\n endTime: datePickerValue.value?.endDate ? formatTime(datePickerValue.value.endDate) : undefined,\n });\n\n const dateDisplayValue = computed(() => {\n // Display incorrect date when there's an error with the input\n if (isDateIncorrect.value) {\n return `${textInputDisplayValue.startDate || ''} - ${textInputDisplayValue.endDate || ''}`;\n }\n\n // Display \"Select a date\" when there's no date selected or input\n if (!datePickerValue.value || (!datePickerValue.value.startDate && !datePickerValue.value.endDate)) {\n return t('selectDateRange') as string;\n }\n\n const { startDate, endDate } = textInputDisplayValue;\n return `${formatDate(new Date(startDate), DateFormat.FULL_DATE_MONTH_FIRST)} - ${formatDate(\n new Date(endDate),\n DateFormat.FULL_DATE_MONTH_FIRST\n )}`;\n });\n\n const formatTextInputDisplayValue = () => '';\n\n return {\n // Values\n dateDisplayValue,\n textInputDisplayValue,\n\n // Methods\n formatTextInputDisplayValue,\n };\n};\n","<!-- TODO: Remove aria props as these are part of JSX elements /vue/types/jsx.d.ts -->\n<!-- eslint-disable vue/attribute-hyphenation -->\n<template>\n <div v-bento-click-outside-directive=\"closeDateRangePicker\" class=\"b-date-range-picker\">\n <!-- Label -->\n <div v-if=\"label\" :id=\"labelId\" class=\"b-date-range-picker__label\">\n <bento-typography el=\"span\" stronger>{{ label }}</bento-typography>\n <bento-typography v-if=\"optional\" class=\"b-date-range-picker__label-requirement\" el=\"span\">\n ({{ $t('optional') }})\n </bento-typography>\n <bento-typography v-if=\"required\" class=\"b-date-range-picker__label-requirement\" el=\"span\">\n ({{ $t('required') }})\n </bento-typography>\n </div>\n\n <!-- Input -->\n <div @keydown.enter=\"onEnterPressedOverInput\">\n <dropdown-input-default\n ref=\"inputContainerRef\"\n :ariaControls=\"datePickerContainerId\"\n :ariaExpanded=\"isDateRangePickerOpen\"\n :aria-labelledby=\"label ? labelId : null\"\n :aria-describedby=\"ariaDescribedBy\"\n :disabled=\"disabled\"\n :is-invalid=\"!!errorMessage || isDateIncorrect\"\n :open=\"isDateRangePickerOpen\"\n :display-value=\"dateDisplayValue\"\n :readonly=\"isReadOnly\"\n @open=\"openDateRangePicker\"\n @clear=\"clearDateRangePickerValue\"\n @close=\"closeDateRangePicker\"\n />\n </div>\n\n <!-- Error Messages -->\n <error-message\n v-if=\"isDateIncorrect\"\n :id=\"dateErrorId\"\n :error-message=\"$t('provideDateInAFormat').toString()\"\n class=\"b-date-range-picker__error-message\"\n />\n <error-message\n v-if=\"!!errorMessage\"\n :id=\"errorId\"\n :error-message=\"errorMessage\"\n class=\"b-date-range-picker__error-message\"\n />\n\n <!-- Description -->\n <bento-typography\n v-if=\"description\"\n :id=\"descriptionId\"\n class=\"b-date-range-picker__description\"\n :class=\"descriptionConditionalClasses\"\n el=\"span\"\n >\n {{ description }}\n </bento-typography>\n\n <!-- Calendar container -->\n <bento-popover\n v-if=\"inputContainerRef\"\n :id=\"datePickerContainerId\"\n class=\"b-date-range-picker__container\"\n :open=\"isDateRangePickerOpen\"\n :target-element=\"inputContainerRef\"\n :disable-focus-trap=\"true\"\n :aria-label=\"popoverAriaLabel\"\n position=\"bottom-start\"\n without-space\n fit-content\n >\n <date-range-picker-calendar\n :allow-time-input=\"allowTimeInput\"\n :quick-select-ranges=\"quickSelectRanges\"\n :value=\"value\"\n :first-day-of-week=\"firstDayOfWeek\"\n :is-date-disabled=\"isDateDisabled\"\n :max-range=\"maxRange\"\n :number-of-months=\"numberOfMonths\"\n :date-form-data=\"textInputDisplayValue\"\n @custom-range=\"onRangeSelectorInput\"\n @input=\"onDateRangePickerInput\"\n @error=\"onDateRangePickerError\"\n @form-date=\"onDateRangePickerFormDateInputUpdate\"\n />\n </bento-popover>\n </div>\n</template>\n\n<script lang=\"ts\">\n import { computed, defineComponent, PropType, ref, toRef, watch } from 'vue';\n import { BentoClickOutsideDirective } from '@/directives';\n import { BentoDateRangePickerEvent, BentoDateRangePickerValue } from './date-range-picker.types';\n import { DateRangePickerCalendar } from './components/date-range-picker-calendar';\n import { DropdownInputDefault } from '@/components/dropdown/components';\n import { BentoPopover } from '@/components/popover';\n import { ErrorMessage } from '@/internal';\n import { generateUid } from '@/utils/ts/unique-id';\n import { de, enUS, fr } from 'date-fns/locale';\n import { useI18n } from '@/utils/ts/i18n';\n import { BentoTypography } from '../typography';\n import { useDateRangePickerCalendarText } from './composables/use-date-range-picker-calendar-text';\n import {\n DateRangePickerCalendarFormData,\n DateRangePickerCalendarRangeSelectorItems,\n } from './components/date-range-picker-calendar/date-range-picker-calendar.types';\n import { DateFormat } from '@/types';\n import format from 'date-fns/format';\n\n import messages from './messages.json';\n import { useFormLayoutFieldLoading } from '@/composables';\n\n type MessageSchema = (typeof messages)['en-US'];\n\n /**\n * Date range picker selector.\n *\n * @example\n * import { BentoDateRangePicker } from '@adyen/bento-vue2';\n *\n * export default {\n * components: { BentoDateRangePicker },\n * template: `\n * <bento-date-range-picker\n * label=\"Label\"\n * description=\"Supporting text\"\n * required\n * optional\n * disabled\n * @input=\"onDateChanged\"\n * v-model=\"selectedDate\"\n * />\n * `,\n * setup() {\n * const selectedDate = ref(new Date()); // reactive({ startDate: new Date(), endDate: new Date() })\n * return {\n * selectedDate,\n * }\n * }\n * }\n */\n export default defineComponent({\n i18n: { messages },\n name: 'bento-date-range-picker',\n components: {\n BentoTypography,\n BentoPopover,\n DateRangePickerCalendar,\n DropdownInputDefault,\n ErrorMessage,\n },\n directives: { BentoClickOutsideDirective },\n props: {\n /**\n * Allows user to enter time values in the form\n */\n allowTimeInput: { type: Boolean, default: false },\n\n /**\n * Descriptive supporting text visbile underneath the dropdown.\n */\n description: { type: String, default: undefined },\n\n /**\n * Disables dropdown functionality.\n */\n disabled: { type: Boolean, default: false },\n\n /**\n * Displays component in an error state with an error message\n */\n errorMessage: { type: String, default: null },\n\n /**\n * Allows user to set the first day of the week. 0 is sunday, 1 is monday, 6 is saturday\n */\n firstDayOfWeek: DateRangePickerCalendar.props.firstDayOfWeek,\n\n /**\n * Indicate if a date should be disabled or not\n */\n isDateDisabled: DateRangePickerCalendar.props.isDateDisabled,\n\n /**\n * Text that is displayed as a label above the element.\n */\n label: { type: String, default: undefined },\n\n /**\n * Highlights the dropdown is optional.\n */\n optional: { type: Boolean, default: false },\n\n /**\n * The Boolean readonly property, when present, makes the element not mutable, meaning the user can not edit the date range picker.\n */\n readonly: { type: Boolean, default: false },\n\n /**\n * Highlights the dropdown is required.\n */\n required: { type: Boolean, default: false },\n\n /**\n * Enables the range selector.\n * If provided, must be an array that sets the custom range dropdown items. Items are of the structure:\n * `label` - label of custom range item.\n * `value` - a unique key of the custom range item.\n * `data` - an object `{ startDate: Date; endDate: Date }` to set the date picker range to upon selecting.\n */\n quickSelectRanges: {\n type: Array as PropType<DateRangePickerCalendarRangeSelectorItems>,\n default: undefined,\n },\n\n /**\n * Set a maximum number of dates to be selectable by the range.\n */\n maxRange: DateRangePickerCalendar.props.maxRange,\n\n /**\n * Number of months rendered on pane\n */\n numberOfMonths: DateRangePickerCalendar.props.numberOfMonths,\n\n /**\n * Selected date\n */\n value: DateRangePickerCalendar.props.value,\n },\n emits: [BentoDateRangePickerEvent.INPUT],\n setup(props, { emit }) {\n const { locale, t } = useI18n<{ message: MessageSchema }>({ messages });\n const locales = { de, enUS, fr };\n const datePickerContainerId = generateUid('bento-date-range-picker-container');\n const labelId = generateUid('bento-date-range-picker-label');\n const descriptionId = generateUid('bento-date-range-picker-description');\n const errorId = generateUid('bento-date-range-picker-error');\n const dateErrorId = generateUid('bento-date-range-picker-date-error');\n const popoverAriaLabel = computed(\n () => props.label || t('dateRangePicker', { name: datePickerContainerId })\n );\n\n const isDateIncorrect = ref(false);\n const inputContainerRef = ref(null);\n const isDateRangePickerOpen = ref(false);\n const { isReadOnly } = useFormLayoutFieldLoading(toRef(props, 'readonly'));\n\n watch(\n () => props.disabled,\n () => {\n // Close date picker popover if it's opened when it's disabled\n if (props.disabled && isDateRangePickerOpen.value) {\n isDateRangePickerOpen.value = false;\n }\n }\n );\n\n const descriptionConditionalClasses = computed(() => ({\n 'b-date-range-picker__description--error': !!props.errorMessage || isDateIncorrect.value,\n }));\n\n const { dateDisplayValue, textInputDisplayValue, formatTextInputDisplayValue } =\n useDateRangePickerCalendarText({\n datePickerValue: toRef(props, 'value'),\n isDateIncorrect,\n });\n\n const ariaDescribedBy = computed(\n () =>\n `${props.description ? descriptionId : ''} ${props.errorMessage ? errorId : ''} ${\n isDateIncorrect.value ? dateErrorId : ''\n }`.trim() || null\n );\n\n const closeDateRangePicker = () => {\n isDateRangePickerOpen.value = false;\n };\n\n const openDateRangePicker = () => {\n isDateRangePickerOpen.value = true;\n formatTextInputDisplayValue();\n };\n\n const onDateRangePickerInput = (selectedRange: BentoDateRangePickerValue) => {\n // Reset the errors when the date is correct\n isDateIncorrect.value = false;\n\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n\n textInputDisplayValue.startDate = formatDate(selectedRange.startDate);\n textInputDisplayValue.endDate = formatDate(selectedRange.endDate);\n emit(BentoDateRangePickerEvent.INPUT, selectedRange);\n };\n\n const clearDateRangePickerValue = async () => {\n if (isDateIncorrect.value) {\n isDateIncorrect.value = false;\n }\n emit(BentoDateRangePickerEvent.INPUT, null);\n };\n\n const onEnterPressedOverInput = () => {\n // Close the date picker if the date is correct\n if (!isDateIncorrect.value) {\n isDateRangePickerOpen.value = false;\n }\n };\n\n const onDateRangePickerFormDateInputUpdate = (dateFormDate: DateRangePickerCalendarFormData) => {\n isDateIncorrect.value = false;\n\n if (dateFormDate.startTime) {\n textInputDisplayValue.startTime = dateFormDate.startTime;\n }\n\n if (dateFormDate.endTime) {\n textInputDisplayValue.endTime = dateFormDate.endTime;\n }\n };\n\n const onDateRangePickerError = dateTextInput => {\n isDateIncorrect.value = true;\n textInputDisplayValue.startDate = dateTextInput.startDate;\n textInputDisplayValue.endDate = dateTextInput.endDate;\n\n // Remove current date range selection\n emit(BentoDateRangePickerEvent.INPUT, { startDate: null, endDate: null });\n };\n\n const onRangeSelectorInput = (quickSelectRanges?: { startDate: Date; endDate: Date }) => {\n if (quickSelectRanges) {\n const formatDate = (date: Date) =>\n format(date, DateFormat.NUMERIC_DATE_YEAR_FIRST, {\n locale: locales[locale.value.substring(0, 2)] || enUS,\n });\n textInputDisplayValue.startDate = formatDate(quickSelectRanges.startDate);\n textInputDisplayValue.endDate = formatDate(quickSelectRanges.endDate);\n emit(BentoDateRangePickerEvent.INPUT, quickSelectRanges);\n }\n };\n\n return {\n // Refs\n inputContainerRef,\n\n // Values,\n dateDisplayValue,\n datePickerContainerId,\n descriptionConditionalClasses,\n isDateIncorrect,\n isDateRangePickerOpen,\n isReadOnly,\n labelId,\n descriptionId,\n dateErrorId,\n errorId,\n popoverAriaLabel,\n ariaDescribedBy,\n textInputDisplayValue,\n\n // Events\n closeDateRangePicker,\n clearDateRangePickerValue,\n openDateRangePicker,\n onRangeSelectorInput,\n onEnterPressedOverInput,\n onDateRangePickerInput,\n onDateRangePickerError,\n onDateRangePickerFormDateInputUpdate,\n };\n },\n });\n</script>\n\n<style lang=\"scss\" scoped src=\"./date-range-picker.scss\" />\n"],"names":["setHours","dirtyDate","dirtyHours","requiredArgs","date","toDate","hours","toInteger","setMinutes","dirtyMinutes","minutes","setSeconds","dirtySeconds","seconds","DateRangePickerCalendarEvent","DateRangePickerCalendarEvent2","validDigitRegex","hourRegex","minuteRegex","validateTimeInput","event","selectionStart","isValidKey","isValidColon","formatTimeInputValue","value","formattedValue","secondToLastDigit","lastDigit","FORM_INPUT_DEBOUNCE_TIME","RANGE_SELECTOR_CUSTOM_RANGE_KEY","_sfc_main$1","defineComponent","messages$1","BentoDropdown","BentoInputField","BentoTypography","Calendar","props","emit","slots","locale","t","useI18n","locales","de","enUS","fr","internalRangeDate","reactive","_a","_b","selectedRangeSelectorValue","ref","formInputWrapperConditionalClasses","computed","quickSelectRangeDefaultItems","resetCustomRangeToDefault","formatDate","dateToFormat","format","DateFormat","formatTime","startDateError","endDateError","startTimeError","endTimeError","dateTextInput","onDateInput","selectedDate","isValidTime","timeText","setTimeInDate","time","dateWithTime","isValidDate","dateText","isDateEnabled","onMounted","onStartDateSelected","newStartDate","onEndDateSelected","newEndDate","endOfDay","getDate","keyName","dateProp","validateStartDate","debounce","startDateText","endDate","onStartDateInput","formatDateInputValue","validateEndDate","endDateText","startDate","onEndDateInput","onDateInputKeyDown","validateDateInput","validateStartTime","startTimeText","validateEndTime","endTimeText","onStartTimeInput","onEndTimeInput","onTimeInputKeyDown","onRangeSelectorInput","newCustomRangeValue","foundResult","useHasSlot","_component_calendar","resolveComponent","createElementVNode","_hoisted_2$1","_hoisted_3","_ctx","openBlock","createBlock","_component_bento_dropdown","createCommentVNode","renderSlot","createVNode","_component_bento_typography","_component_bento_input_field","BentoDateRangePickerEvent","BentoDateRangePickerEvent2","useDateRangePickerCalendarText","datePickerValue","isDateIncorrect","dateFormat","textInputDisplayValue","_c","_d","_e","_sfc_main","messages","BentoPopover","DateRangePickerCalendar","DropdownInputDefault","ErrorMessage","BentoClickOutsideDirective","datePickerContainerId","generateUid","labelId","descriptionId","errorId","dateErrorId","popoverAriaLabel","inputContainerRef","isDateRangePickerOpen","isReadOnly","useFormLayoutFieldLoading","toRef","watch","descriptionConditionalClasses","dateDisplayValue","formatTextInputDisplayValue","ariaDescribedBy","quickSelectRanges","selectedRange","dateFormDate","createElementBlock","_hoisted_2","_component_error_message","normalizeClass","_component_bento_popover","_component_date_range_picker_calendar"],"mappings":";;;;;;;;;;;;;;;;;;;;AA0Be,SAAAA,GAAAC,GAAAC,GAAA;AACf,EAAAC,GAAA,GAAA,SAAA;AACA,MAAAC,IAAAC,GAAAJ,CAAA,GACAK,IAAAC,GAAAL,CAAA;AACA,SAAAE,EAAA,SAAAE,CAAA,GACAF;AACA;ACNe,SAAAI,GAAAP,GAAAQ,GAAA;AACf,EAAAN,GAAA,GAAA,SAAA;AACA,MAAAC,IAAAC,GAAAJ,CAAA,GACAS,IAAAH,GAAAE,CAAA;AACA,SAAAL,EAAA,WAAAM,CAAA,GACAN;AACA;ACNe,SAAAO,GAAAV,GAAAW,GAAA;AACf,EAAAT,GAAA,GAAA,SAAA;AACA,MAAAC,IAAAC,GAAAJ,CAAA,GACAY,IAAAN,GAAAK,CAAA;AACA,SAAAR,EAAA,WAAAS,CAAA,GACAT;AACA;ACzBY,IAAAU,IAAA,kBAAAC,OACRA,EAAA,eAAA,gBACAA,EAAA,QAAA,SACAA,EAAA,QAAA,SACAA,EAAA,YAAA,aAJQA,IAAAD,KAAA,CAAA,CAAA;ACPZ,MAAAE,KAAA,QAEAC,KAAA,WACAC,KAAA,iBAEaC,KAAA,CAAAC,MAAA;AACT,QAAA,EAAA,gBAAAC,EAAA,IAAAD,EAAA,QAEAE,IAAAN,GAAA,KAAAI,EAAA,GAAA,KAAAA,EAAA,QAAA,aACAG,IAAA,CAAA,GAAA,GAAA,GAAA,CAAA,EAAA,SAAAF,CAAA,KAAAD,EAAA,QAAA;AAEA,EAAA,CAAAE,KAAA,CAAAC,KACIH,EAAA,eAAA;AAER,GAEaI,KAAA,CAAAC,MAAA;AACT,MAAA,CAAAA;AACI,WAAAA;AAGJ,MAAAC,IAAAD;AAGA,MAAAC,EAAA,WAAA,KAAA,SAAAD,GAAA,EAAA,IAAA;AACI,WAAA,IAAAC;AAGJ,QAAA,CAAAC,GAAAC,CAAA,IAAAF,EAAA,MAAA,EAAA;AACA,SAAA,CAAA,GAAA,CAAA,EAAA,SAAAA,EAAA,MAAA,KAAAE,MAAA,QACIF,IAAA,GAAAA,EAAA,MAAA,GAAAA,EAAA,SAAA,CAAA,KAAAC,OAIJV,GAAA,KAAAS,CAAA,KAAAR,GAAA,KAAAQ,CAAA,OACIA,KAAA,MAEJA;AACJ;;;;;;;;;;;GCsFIG,KAAA,KACAC,IAAA,eAsBAC,KAAAC,GAAA;AAAA,EAA+B,MAAA,EAAA,UAAAC,GAAA;AAAA,EACV,MAAA;AAAA,EACX,YAAA;AAAA,IACM,eAAAC;AAAA,IACR,iBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,UAAAC;AAAA,EACA;AAAA,EACJ,OAAA;AAAA;AAAA;AAAA;AAAA,IACO,gBAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAI6C,cAAA;AAAA,MAKlC,MAAA;AAAA,MACJ,SAAA,OAAA,EAAA,WAAA,QAAA,SAAA,QAAA,WAAA,QAAA,SAAA,OAAA;AAAA,IAC+F;AAAA;AAAA;AAAA;AAAA,IACzG,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAK+B,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKN,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKM,mBAAA;AAAA,MASZ,MAAA;AAAA,MACT,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,OAAA,EAAA,MAAA,QAAA,SAAA,OAAA;AAAA,EAK8E;AAAA,EAClF,OAAA;AAAA,IACOvB,EAAA;AAAA,IAC0BA,EAAA;AAAA,IACAA,EAAA;AAAA,IACAA,EAAA;AAAA,EACA;AAAA,EACjC,MAAAwB,GAAA,EAAA,MAAAC,GAAA,OAAAC,EAAA,GAAA;;AAEI,UAAA,EAAA,QAAAC,GAAA,GAAAC,EAAA,IAAAC,GAAA,EAAA,UAAAV,GAAA,CAAA,GACAW,IAAA,EAAA,IAAAC,IAAA,MAAAC,GAAA,IAAAC,GAAA,GACAC,IAAAC,GAAA;AAAA,MAAmC,YAAAC,KAAAZ,EAAA,UAAA,gBAAAY,GAAA;AAAA,MACqB,UAAAC,KAAAb,EAAA,UAAA,gBAAAa,GAAA;AAAA,IACF,CAAA,GAEtDC,IAAAC,EAAAvB,CAAA,GACAwB,IAAAC,EAAA,OAAA;AAAA,MAA2D,oDAAAjB,EAAA;AAAA,IACG,EAAA,GAE9DkB,IAAAD,EAAA,MACIjB,EAAA,oBACI;AAAA,MAAO,EAAA,OAAAI,EAAA,aAAA,GAAA,OAAAZ,EAAA;AAAA,MAC+D,GAAAQ,EAAA;AAAA,IACzD,IAGjB,CAAA,CAAQ,GAMZmB,IAAA,MAAA;AACI,MAAAnB,KAAA,QAAAA,EAAA,sBACIc,EAAA,QAAAtB;AAAA,IACJ,GAOJ4B,IAAA,CAAAC,MACIA,IAGAC,EAAAD,GAAAE,EAAA,yBAAA;AAAA,MAAgE,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,IACX,CAAA,IAHjD,IAORgB,IAAA,CAAAH,MACIA,IAIAC,EAAAD,GAAAE,EAAA,qBAAA;AAAA,MAA4D,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,IACP,CAAA,IAJjD,IASRiB,IAAAV,EAAA,EAAA,GACAW,IAAAX,EAAA,EAAA,GACAY,IAAAZ,EAAA,EAAA,GACAa,IAAAb,EAAA,EAAA,GAGAc,IAAAlB,GAAA;AAAA,MAA+B,WAAAX,EAAA,aAAA;AAAA,MACG,SAAAA,EAAA,aAAA;AAAA,MACF,WAAAA,EAAA,aAAA;AAAA,MACE,SAAAA,EAAA,aAAA;AAAA,IACF,CAAA,GAGhC8B,IAAA,CAAAC,MAAA;AACI,MAAA9B,EAAAzB,EAAA,OAAAuD,CAAA;AAAA,IAAqD,GAIzDC,IAAA,CAAAC,MAEI,sDACA,KAAAA,CAAA,GAGJC,IAAA,CAAApE,GAAAqE,MAAA;AACI,UAAA,CAAAA,KAAA,CAAAH,EAAAG,CAAA;AACI,eAAArE;AAGJ,UAAAsE,IAAA,IAAA,KAAAtE,CAAA;AAEA,YAAA,CAAAE,GAAAI,GAAAG,EAAA,IAAA4D,EAAA,MAAA,GAAA;AACA,aAAAC,IAAA1E,GAAA0E,GAAA,SAAApE,GAAA,EAAA,CAAA,GACAoE,IAAAlE,GAAAkE,GAAA,SAAAhE,GAAA,EAAA,CAAA,GACAgE,IAAA/D,GAAA+D,GAAA,SAAA7D,IAAA,EAAA,CAAA,GACA6D;AAAA,IAAO,GAGXC,IAAA,CAAAC,MAAA;AAEI,YAAAC,IAAA,CAAAzE,MAEIkC,EAAA,iBACI,CAAAA,EAAA,eAAAlC,CAAA,IAGJ;AAMJ,aAFA,qDAEA,KAAAwE,CAAA,KAAAC,EAAA,IAAA,KAAAD,CAAA,CAAA;AAAA,IAAmE;AAMvE,IAAAE,GAAA,MAAA;AACI,MAAAxC,EAAA,aAAA,aAAA,CAAAqC,EAAArC,EAAA,aAAA,SAAA,IACIyB,EAAA,QAAA,MAEAA,EAAA,QAAA,IACAE,EAAA,QAAA,KAGJ3B,EAAA,aAAA,WAAA,CAAAqC,EAAArC,EAAA,aAAA,OAAA,IACI0B,EAAA,QAAA,MAEAA,EAAA,QAAA,IACAE,EAAA,QAAA;AAAA,IACJ,CAAA;AAGJ,UAAAa,KAAA,CAAAC,MAAA;;AACI,MAAAvB,EAAA,GACAU,EAAA,YAAAT,EAAAsB,CAAA,GACAb,EAAA,YAEqDF,EAAA,UAGjDE,EAAA,aAAAjB,IAAAZ,EAAA,iBAAA,gBAAAY,EAAA,aAHAiB,EAAA,YAAAL,EAAAkB,CAAA,GAOJjB,EAAA,QAAA,IACAE,EAAA,QAAA;AAAA,IAAuB,GAG3BgB,KAAA,CAAAC,MAAA;;AACI,MAAAf,EAAA,UAAAT,EAAAwB,CAAA,GACAf,EAAA,UAE2DD,EAAA,UAGvDC,EAAA,WAAAjB,IAAAZ,EAAA,iBAAA,gBAAAY,EAAA,WAHAiB,EAAA,UAAAL,EAAAqB,EAAAD,CAAA,CAAA,GAOJlB,EAAA,QAAA,IACAE,EAAA,QAAA;AAAA,IAAqB,GAGzBkB,IAAA,CAAAC,MAAA;AACI,YAAAC,IAAAhD,EAAA,MAAA+C,CAAA;AACA,UAAAC;AACI,eAAAA;AAGJ,UAAAhD,EAAA,aAAA+C,CAAA,KAAAV,EAAArC,EAAA,aAAA+C,CAAA,CAAA;AACI,eAAA,IAAA,KAAA/C,EAAA,aAAA+C,CAAA,CAAA;AAAA,IAGG,GAGXE,KAAAC,EAAA,CAAAC,MAAA;AAEI,UAAAd,EAAAc,CAAA,GAAA;AACI,QAAA1B,EAAA,QAAA,IAEAf,EAAA,YAAAwB,EAAA,IAAA,KAAAiB,CAAA,GAAAtB,EAAA,SAAA;AAEA,cAAAuB,IAAAN,EAAA,SAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAA,IAAA,KAAA2E,CAAA;AAAA,UACR,SAAAC;AAAA,QACjC,CAAA,GAGJnD,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAA,IAAA,KAAA2E,CAAA;AAAA,UACJ,SAAAC;AAAA,QACjC,CAAA;AAAA;AAIJ,QAAA3B,EAAA,QAAA,IAEAxB,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,GAAAtC,EAAA,GAGJ8D,KAAA,CAAAF,MAAA;AACI,MAAAhC,EAAA,GAEAU,EAAA,YAAAyB,GAAAH,CAAA,GACAF,GAAApB,EAAA,SAAA;AAAA,IAAyC,GAG7C0B,KAAAL,EAAA,CAAAM,MAAA;AAEI,UAAAnB,EAAAmB,CAAA,GAAA;AACI,QAAA9B,EAAA,QAAA,IACAhB,EAAA,UAAAwB,EAAA,IAAA,KAAAsB,CAAA,GAAA3B,EAAA,OAAA;AAEA,cAAA4B,IAAAX,EAAA,WAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAAiF;AAAA,UACzC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,UAC2C,WAAAV,EAAA,aAAA;AAAA,UACb,SAAAwD;AAAA,QACrB,CAAA,GAGbvD,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAAiF;AAAA,UACrC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,QAC2C,CAAA;AAAA;AAI/C,QAAAgB,EAAA,QAAA,IAEAzB,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,GAAAtC,EAAA,GAGJmE,IAAA,CAAAF,MAAA;AACI,MAAArC,EAAA,GAEAU,EAAA,UAAAyB,GAAAE,CAAA,GACAD,GAAA1B,EAAA,OAAA;AAAA,IAAqC,GAGzC8B,IAAA,CAAA7E,MAAA;AACI,MAAA8E,GAAA9E,CAAA;AAAA,IAAuB,GAG3B+E,IAAAX,EAAA,CAAAY,MAAA;AACI,UAAA9B,EAAA8B,CAAA,GAAA;AACI,QAAAnC,EAAA,QAAA,IACAjB,EAAA,YAAAwB,EAAAxB,EAAA,WAAAoD,CAAA;AAEA,cAAAV,IAAAN,EAAA,SAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAA,IAAA,KAAAkC,EAAA,SAAA;AAAA,UACM,SAAA0C;AAAA,UAC/C,WAAAU;AAAA,UACW,SAAA9D,EAAA,aAAA;AAAA,QACiB,CAAA,GAGhCC,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAA,IAAA,KAAAkC,EAAA,SAAA;AAAA,UACU,SAAA0C;AAAA,QAC/C,CAAA;AAAA;AAIJ,QAAAzB,EAAA,QAAA,IAEA1B,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,CAAA,GAGJkC,KAAAb,EAAA,CAAAc,MAAA;AACI,UAAAhC,EAAAgC,CAAA,GAAA;AACI,QAAApC,EAAA,QAAA,IACAlB,EAAA,UAAAwB,EAAAxB,EAAA,SAAAsD,CAAA;AAEA,cAAAP,IAAAX,EAAA,WAAA;AAEA,QAAA7C,EAAAzB,EAAA,WAAA;AAAA,UAA6C,WAAAiF;AAAA,UACzC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,UAC2C,WAAAV,EAAA,aAAA;AAAA,UACb,SAAAgE;AAAA,QACrB,CAAA,GAEb/D,EAAAzB,EAAA,OAAA;AAAA,UAAyC,WAAAiF;AAAA,UACrC,SAAA,IAAA,KAAA/C,EAAA,OAAA;AAAA,QAC2C,CAAA;AAAA;AAI/C,QAAAkB,EAAA,QAAA,IAEA3B,EAAAzB,EAAA,OAAA,EAAA,GAAAqD,EAAA,CAAA;AAAA,IACJ,CAAA,GAGJoC,KAAA,CAAAH,MAAA;AACI,MAAA3C,EAAA,GACAU,EAAA,YAAA3C,GAAA4E,CAAA,GACAD,EAAAhC,EAAA,SAAA;AAAA,IAAyC,GAG7CqC,KAAA,CAAAV,MAAA;AACI,MAAArC,EAAA,GACAU,EAAA,UAAA3C,GAAAsE,CAAA,GACAO,GAAAlC,EAAA,OAAA;AAAA,IAAqC,GAGzCsC,KAAA,CAAArF,MAAA;AACI,MAAAD,GAAAC,CAAA;AAAA,IAAuB,GAG3BsF,KAAA,CAAAC,MAAA;;AACI,MAAAvD,EAAA,QAAAuD;AACA,YAAAC,KAAAzD,KAAAD,IAAAZ,EAAA,sBAAA,gBAAAY,EAAA,KAAA,CAAA,EAAA,OAAAzB,EAAA,MAAAA,MAAAkF,OAAA,gBAAAxD,EAAA;AACA,MAAAyD,MACIzC,EAAA,YAAAT,EAAAkD,EAAA,SAAA,GACAzC,EAAA,UAAAT,EAAAkD,EAAA,OAAA,GACAzC,EAAA,cACIA,EAAA,YAAAL,EAAAqB,EAAAyB,EAAA,SAAA,CAAA,IAEJzC,EAAA,YACIA,EAAA,UAAAL,EAAAqB,EAAAyB,EAAA,OAAA,CAAA,IAEJrE,EAAAzB,EAAA,cAAA8F,CAAA;AAAA,IACJ;AAGJ,WAAA;AAAA;AAAA,MAAO,eAAAzC;AAAA,MAEH,cAAAH;AAAA,MACA,cAAAE;AAAA,MACA,4BAAAd;AAAA,MACA,gBAAAW;AAAA,MACA,gBAAAE;AAAA,MACA,8BAAAT;AAAA,MACA,oCAAAF;AAAA;AAAA,MACA,SAAAuD,GAAArE,CAAA;AAAA,MAGyB,GAAAE;AAAA;AAAA,MACzB,sBAAAgE;AAAA,MAGA,aAAAtC;AAAA,MACA,oBAAA6B;AAAA,MACA,gBAAAD;AAAA,MACA,mBAAAf;AAAA,MACA,gBAAAuB;AAAA,MACA,qBAAAzB;AAAA,MACA,kBAAAY;AAAA,MACA,kBAAAY;AAAA,MACA,oBAAAE;AAAA,IACA;AAAA,EACJ;AAER,CAAA;;;wFAtjBAK,IAAAC,EAAA,UAAA;;IA0EcC,EAAA,OAAAC,IAAA;AAAA,MArEyBD,EAAA,OAAAE,IAAA;AAAA,QAKzBC,EAAA,qBAAAC,EAAA,GAAAC,EAAAC,GAAA;AAAA,UAJgB,KAAA;AAAA,UACR,cAAAH,EAAA,EAAA,aAAA;AAAA,UACE,OAAAA,EAAA;AAAA,UACA,OAAAA,EAAA;AAAA;QAGI,GAAA,MAAA,GAAA,CAAA,cAAA,SAAA,SAAA,SAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,QACSJ,EAAA,QAAA,OAAA,IAAAK,GAAAL,EAAA,QAAA,SAAA,EAAA,KAAA,EAAA,GAAA,QAAA,EAAA,IAAAI,EAAA,IAAA,EAAA;AAAA,QAKFP,EAAA,OAAA,MAAA;AAAA,UAFOS,EAAAC,GAAA;AAAA,YAAU,UAAA;AAAA,YAAO,IAAA;AAAA;;;;;YAG3C,GAAA;AAAA,UAAA,CAAA;AAAA;;UAUwB,GAAA;AAAA;cAPe,cAAAP,EAAA,GAAA,UAAA;AAAA,cACT,OAAAA,EAAA,cAAA;AAAA,cAChB,OAAAA,EAAA;AAAA,cACE,OAAA;AAAA,cACP,SAAAA,EAAA;AAAA;YAEqB,GAAA;AAAA;;;cAIhB,GAAA;AAAA,YAAA,GAAA,GAAA,CAAA,cAAA,SAAA,SAAA,WAAA,WAAA,CAAA;AAAA,YASUA,EAAA,kBAAAC,EAAA,GAAAC,EAAAM,GAAA;AAAA,cARF,KAAA;AAAA,cACR,cAAAR,EAAA,EAAA,UAAA;AAAA,cACgB,OAAAA,EAAA,cAAA;AAAA,cAChB,OAAAA,EAAA;AAAA,cACE,OAAA;AAAA,cACP,SAAAA,EAAA;AAAA;YAEqB,GAAA;AAAA;;;;;UAKlC,GAAA,CAAA;AAAA,QAAA,CAAA;AAAA,QAC8BH,EAAA,OAAA,MAAA;AAAA,UAAAS,EAAAC,GAAA;AAAA,YAAU,UAAA;AAAA,YAAO,IAAA;AAAA;;;;;YAG3C,GAAA;AAAA,UAAA,CAAA;AAAA;;UAUwB,GAAA;AAAA;cAPD,OAAA;AAAA,cACP,cAAAP,EAAA,GAAA,QAAA;AAAA,cACY,OAAAA,EAAA,cAAA;AAAA,cACZ,OAAAA,EAAA;AAAA,cACE,SAAAA,EAAA;AAAA;YAEY,GAAA;AAAA;;;cAIhB,GAAA;AAAA,YAAA,GAAA,GAAA,CAAA,cAAA,SAAA,SAAA,WAAA,WAAA,CAAA;AAAA,YASUA,EAAA,kBAAAC,EAAA,GAAAC,EAAAM,GAAA;AAAA,cARF,KAAA;AAAA,cACR,cAAAR,EAAA,EAAA,QAAA;AAAA,cACc,OAAAA,EAAA,cAAA;AAAA,cACd,OAAAA,EAAA;AAAA,cACE,OAAA;AAAA,cACP,SAAAA,EAAA;AAAA;YAEqB,GAAA;AAAA;;;;;;QAM3B,CAAA;AAAA,MAAA,CAAA;AAAA;;MAMf,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAAA,CAAA;AAAA;MAEqBE,EAAAX,GAAA;AAAA,QACO,OAAAK,EAAA;AAAA,QACnB,qBAAAA,EAAA;AAAA,QACmB,oBAAAA,EAAA;AAAA,QACD,aAAAA,EAAA;AAAA,QACX,oBAAAA,EAAA;AAAA,QACW,YAAA;AAAA,QAClB,SAAAA,EAAA;AAAA,QACA,qBAAAA,EAAA;AAAA;;;;;;ACvFL,IAAAS,IAAA,kBAAAC,OACRA,EAAA,QAAA,SADQA,IAAAD,KAAA,CAAA,CAAA;ACGL,MAAAE,KAAA,CAAA;AAAA,EAAoF,iBAAAC;AAAA,EACvF,iBAAAC;AAEJ,MAAA;;AACI,QAAA,EAAA,QAAAvF,GAAA,GAAAC,EAAA,IAAAC,GAAA,GACAC,IAAA,EAAA,IAAAC,IAAA,MAAAC,GAAA,IAAAC,GAAA,GAEAW,IAAA,CAAAtD,GAAA6H,MAAArE,EAAAxD,GAAA6H,GAAA;AAAA,IAC6B,QAAArF,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,EAC4B,CAAA,GAGzDgB,IAAA,CAAA1D,MAAAwD,EAAAxD,GAAAyD,EAAA,qBAAA;AAAA,IACiD,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,EACQ,CAAA,GAIzDoF,IAAAjF,GAAA;AAAA,IAAwE,YAAAC,IAAA6E,EAAA,UAAA,QAAA7E,EAAA,YAAAQ,EAAAqE,EAAA,MAAA,WAAAlE,EAAA,uBAAA,IAAA;AAAA,IAG9D,UAAAV,IAAA4E,EAAA,UAAA,QAAA5E,EAAA,UAAAO,EAAAqE,EAAA,MAAA,SAAAlE,EAAA,uBAAA,IAAA;AAAA;AAAA,IAGA,YAAAsE,IAAAJ,EAAA,UAAA,QAAAI,EAAA,YAAArE,GAAAsE,IAAAL,EAAA,UAAA,gBAAAK,EAAA,SAAA,IAAA;AAAA,IAGuF,UAAAC,IAAAN,EAAA,UAAA,QAAAM,EAAA,UAAAvE,EAAAiE,EAAA,MAAA,OAAA,IAAA;AAAA,EACP,CAAA;AAuB1F,SAAA;AAAA;AAAA,IAAO,kBApBPxE,EAAA,MAAA;AAEI,UAAAyE,EAAA;AACI,eAAA,GAAAE,EAAA,aAAA,QAAAA,EAAA,WAAA;AAIJ,UAAA,CAAAH,EAAA,SAAA,CAAAA,EAAA,MAAA,aAAA,CAAAA,EAAA,MAAA;AACI,eAAArF,EAAA,iBAAA;AAGJ,YAAA,EAAA,WAAAqD,GAAA,SAAAL,EAAA,IAAAwC;AACA,aAAA,GAAAxE,EAAA,IAAA,KAAAqC,CAAA,GAAAlC,EAAA,qBAAA,OAAAH;AAAA,QAAiF,IAAA,KAAAgC,CAAA;AAAA,QAC7D7B,EAAA;AAAA,MACL;AAAA,IACf,CAAA;AAAA,IAOA,uBAAAqE;AAAA;AAAA,IACA,6BALJ,MAAA;AAAA,EAQI;AAER;;;;;;;;;;GC0EII,KAAAtG,GAAA;AAAA,EAA+B,MAAA,EAAA,UAAAuG,GAAA;AAAA,EACV,MAAA;AAAA,EACX,YAAA;AAAA,IACM,iBAAAnG;AAAA,IACR,cAAAoG;AAAA,IACA,yBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,cAAAC;AAAA,EACA;AAAA,EACJ,YAAA,EAAA,4BAAAC,GAAA;AAAA,EACyC,OAAA;AAAA;AAAA;AAAA;AAAA,IAClC,gBAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAI6C,aAAA,EAAA,MAAA,QAAA,SAAA,OAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAKN,cAAA,EAAA,MAAA,QAAA,SAAA,KAAA;AAAA;AAAA;AAAA;AAAA,IAKE,gBAAAH,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKE,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKA,OAAA,EAAA,MAAA,QAAA,SAAA,OAAA;AAAA;AAAA;AAAA;AAAA,IAKJ,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA,IAKA,UAAA,EAAA,MAAA,SAAA,SAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAKA,mBAAA;AAAA,MASvB,MAAA;AAAA,MACT,SAAA;AAAA,IACG;AAAA;AAAA;AAAA;AAAA,IACb,UAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKwC,gBAAAA,EAAA,MAAA;AAAA;AAAA;AAAA;AAAA,IAKM,OAAAA,EAAA,MAAA;AAAA,EAKT;AAAA,EACzC,OAAA,CAAAb,EAAA,KAAA;AAAA,EACuC,MAAAtF,GAAA,EAAA,MAAAC,EAAA,GAAA;AAEnC,UAAA,EAAA,QAAAE,GAAA,GAAAC,EAAA,IAAAC,GAAA,EAAA,UAAA4F,GAAA,CAAA,GACA3F,IAAA,EAAA,IAAAC,IAAA,MAAAC,GAAA,IAAAC,GAAA,GACA8F,IAAAC,EAAA,mCAAA,GACAC,IAAAD,EAAA,+BAAA,GACAE,IAAAF,EAAA,qCAAA,GACAG,IAAAH,EAAA,+BAAA,GACAI,IAAAJ,EAAA,oCAAA,GACAK,IAAA5F;AAAA,MAAyB,MAAAjB,EAAA,SAAAI,EAAA,mBAAA,EAAA,MAAAmG,EAAA,CAAA;AAAA,IACoD,GAG7Eb,IAAA3E,EAAA,EAAA,GACA+F,IAAA/F,EAAA,IAAA,GACAgG,IAAAhG,EAAA,EAAA,GACA,EAAA,YAAAiG,EAAA,IAAAC,GAAAC,GAAAlH,GAAA,UAAA,CAAA;AAEA,IAAAmH;AAAA,MAAA,MAAAnH,EAAA;AAAA,MACgB,MAAA;AAGR,QAAAA,EAAA,YAAA+G,EAAA,UACIA,EAAA,QAAA;AAAA,MACJ;AAAA,IACJ;AAGJ,UAAAK,IAAAnG,EAAA,OAAA;AAAA,MAAsD,2CAAA,CAAA,CAAAjB,EAAA,gBAAA0F,EAAA;AAAA,IACiC,EAAA,GAGvF,EAAA,kBAAA2B,GAAA,uBAAAzB,GAAA,6BAAA0B,EAAA,IAAA9B,GAAA;AAAA,MACmC,iBAAA0B,GAAAlH,GAAA,OAAA;AAAA,MACU,iBAAA0F;AAAA,IACrC,CAAA,GAGR6B,IAAAtG;AAAA,MAAwB,MAAA,GAAAjB,EAAA,cAAA0G,IAAA,MAAA1G,EAAA,eAAA2G,IAAA,MAAAjB,EAAA,QAAAkB,IAAA,KAAA,KAAA,KAAA;AAAA,IAIH;AAyErB,WAAA;AAAA;AAAA,MAAO,mBAAAE;AAAA;AAAA,MAEH,kBAAAO;AAAA,MAGA,uBAAAd;AAAA,MACA,+BAAAa;AAAA,MACA,iBAAA1B;AAAA,MACA,uBAAAqB;AAAA,MACA,YAAAC;AAAA,MACA,SAAAP;AAAA,MACA,eAAAC;AAAA,MACA,aAAAE;AAAA,MACA,SAAAD;AAAA,MACA,kBAAAE;AAAA,MACA,iBAAAU;AAAA,MACA,uBAAA3B;AAAA;AAAA,MACA,sBAvFJ,MAAA;AACI,QAAAmB,EAAA,QAAA;AAAA,MAA8B;AAAA,MAyF9B,2BAnEJ,YAAA;AACI,QAAArB,EAAA,UACIA,EAAA,QAAA,KAEJzF,EAAAqF,EAAA,OAAA,IAAA;AAAA,MAA0C;AAAA,MAgE1C,qBAvFJ,MAAA;AACI,QAAAyB,EAAA,QAAA,IACAO,EAAA;AAAA,MAA4B;AAAA,MAsF5B,sBAlCJ,CAAAE,MAAA;AACI,YAAAA,GAAA;AACI,gBAAApG,IAAA,CAAAtD,MAAAwD,EAAAxD,GAAAyD,EAAA,yBAAA;AAAA,YACqD,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,UACI,CAAA;AAEzD,UAAAoF,EAAA,YAAAxE,EAAAoG,EAAA,SAAA,GACA5B,EAAA,UAAAxE,EAAAoG,EAAA,OAAA,GACAvH,EAAAqF,EAAA,OAAAkC,CAAA;AAAA;AAAA,MACJ;AAAA,MA0BA,yBA/DJ,MAAA;AAEI,QAAA9B,EAAA,UACIqB,EAAA,QAAA;AAAA,MACJ;AAAA,MA4DA,wBArFJ,CAAAU,MAAA;AAEI,QAAA/B,EAAA,QAAA;AAEA,cAAAtE,IAAA,CAAAtD,MAAAwD,EAAAxD,GAAAyD,EAAA,yBAAA;AAAA,UACqD,QAAAjB,EAAAH,EAAA,MAAA,UAAA,GAAA,CAAA,CAAA,KAAAK;AAAA,QACI,CAAA;AAGzD,QAAAoF,EAAA,YAAAxE,EAAAqG,EAAA,SAAA,GACA7B,EAAA,UAAAxE,EAAAqG,EAAA,OAAA,GACAxH,EAAAqF,EAAA,OAAAmC,CAAA;AAAA,MAAmD;AAAA,MA2EnD,wBA9CJ,CAAA5F,MAAA;AACI,QAAA6D,EAAA,QAAA,IACAE,EAAA,YAAA/D,EAAA,WACA+D,EAAA,UAAA/D,EAAA,SAGA5B,EAAAqF,EAAA,OAAA,EAAA,WAAA,MAAA,SAAA,KAAA,CAAA;AAAA,MAAwE;AAAA,MAyCxE,sCA3DJ,CAAAoC,MAAA;AACI,QAAAhC,EAAA,QAAA,IAEAgC,EAAA,cACI9B,EAAA,YAAA8B,EAAA,YAGJA,EAAA,YACI9B,EAAA,UAAA8B,EAAA;AAAA,MACJ;AAAA,IAmDA;AAAA,EACJ;AAER,CAAA;;;;;IA3WU7C,EAAA,SAAAC,EAAA,GAAA6C,EAAA,OAAA;AAAA,MARwB,KAAA;AAAA,MAAO,IAAA9C,EAAA;AAAA,MACjC,OAAA;AAAA,IAAA,GAAA;AAAA;QAAoC,IAAA;AAAA;;;;;QACZ,GAAA;AAAA,MAAA,CAAA;AAAA;QAAwD,KAAA;AAAA,QAAI,OAAA;AAAA;;;;;;MAG5D,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,MAELJ,EAAA,YAAAC,EAAA,GAAAC,EAAAK,GAAA;AAAA,QAF6D,KAAA;AAAA,QAAI,OAAA;AAAA;;;;;;;IAMxF,GAAA,GAAAwC,EAAA,KAAA3C,EAAA,IAAA,EAAA;AAAA,IAAaP,EAAA,OAAA;AAAA;IAeP,GAAA;AAAA;QAZsC,KAAA;AAAA,QACnC,cAAAG,EAAA;AAAA,QACiB,cAAAA,EAAA;AAAA,QACD,mBAAAA,EAAA,QAAAA,EAAA,UAAA;AAAA,QACE,oBAAAA,EAAA;AAAA,QACJ,UAAAA,EAAA;AAAA,QACR,cAAA,CAAA,CAAAA,EAAA,gBAAAA,EAAA;AAAA,QACyB,MAAAA,EAAA;AAAA,QACrB,iBAAAA,EAAA;AAAA,QACJ,UAAAA,EAAA;AAAA,QACC,QAAAA,EAAA;AAAA,QACA,SAAAA,EAAA;AAAA;;IAMS,GAAA,EAAA;AAAA;MACL,KAAA;AAAA,MACf,IAAAA,EAAA;AAAA,MACK,iBAAAA,EAAA,GAAA,sBAAA,EAAA,SAAA;AAAA;IAGE,GAAA,MAAA,GAAA,CAAA,MAAA,eAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAIVJ,EAAA,gBAAAC,EAAA,GAAAC,EAAA8C,GAAA;AAAA,MAHc,KAAA;AAAA,MACX,IAAAhD,EAAA;AAAA,MACK,iBAAAA,EAAA;AAAA;IAKA,GAAA,MAAA,GAAA,CAAA,MAAA,eAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAOSJ,EAAA,eAAAC,EAAA,GAAAC,EAAAK,GAAA;AAAA,MANG,KAAA;AAAA,MACb,IAAAP,EAAA;AAAA,MAEF,OAAAiD,GAAA,CAAA,oCAAAjD,EAAA,6BAAA,CAAA;AAAA;;;;;;IAOG,GAAA,GAAA,CAAA,MAAA,OAAA,CAAA,KAAAI,EAAA,IAAA,EAAA;AAAA,IAyBMJ,EAAA,qBAAAC,EAAA,GAAAC,EAAAgD,GAAA;AAAA,MAxBc,KAAA;AAAA,MACrB,IAAAlD,EAAA;AAAA,MACE,OAAA;AAAA,MACN,MAAAA,EAAA;AAAA,MACA,kBAAAA,EAAA;AAAA,MACY,sBAAA;AAAA,MACJ,cAAAA,EAAA;AAAA,MACI,UAAA;AAAA,MACb,iBAAA;AAAA;;;QAGuBM,EAAA6C,GAAA;AAAA,UACoB,oBAAAnD,EAAA;AAAA,UAC1B,uBAAAA,EAAA;AAAA,UACO,OAAAA,EAAA;AAAA,UACnB,qBAAAA,EAAA;AAAA,UACmB,oBAAAA,EAAA;AAAA,UACD,aAAAA,EAAA;AAAA,UACF,oBAAAA,EAAA;AAAA,UACF,kBAAAA,EAAA;AAAA,UACP,eAAAA,EAAA;AAAA,UACA,SAAAA,EAAA;AAAA,UACI,SAAAA,EAAA;AAAA;;;;;;;;;;","x_google_ignoreList":[0,1,2]}