@volverjs/ui-vue 0.0.4 → 0.0.5-beta.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 (204) hide show
  1. package/README.md +2 -2
  2. package/auto-imports.d.ts +12 -3
  3. package/bin/icons.cjs +1 -73
  4. package/dist/Volver.d.ts +19 -11
  5. package/dist/components/VvAccordion/VvAccordion.es.js +165 -106
  6. package/dist/components/VvAccordion/VvAccordion.umd.js +1 -1
  7. package/dist/components/VvAccordion/VvAccordion.vue.d.ts +4 -1
  8. package/dist/components/VvAccordion/index.d.ts +8 -3
  9. package/dist/components/VvAccordionGroup/VvAccordionGroup.es.js +264 -164
  10. package/dist/components/VvAccordionGroup/VvAccordionGroup.umd.js +1 -1
  11. package/dist/components/VvAccordionGroup/VvAccordionGroup.vue.d.ts +15 -12
  12. package/dist/components/VvAccordionGroup/index.d.ts +8 -0
  13. package/dist/components/VvAction/VvAction.es.js +266 -98
  14. package/dist/components/VvAction/VvAction.umd.js +1 -1
  15. package/dist/components/VvAction/VvAction.vue.d.ts +12 -12
  16. package/dist/components/VvAction/index.d.ts +2 -2
  17. package/dist/components/VvBadge/VvBadge.es.js +203 -44
  18. package/dist/components/VvBadge/VvBadge.umd.js +1 -1
  19. package/dist/components/VvBadge/VvBadge.vue.d.ts +2 -2
  20. package/dist/components/VvBadge/index.d.ts +1 -1
  21. package/dist/components/VvBreadcrumb/VvBreadcrumb.es.js +237 -75
  22. package/dist/components/VvBreadcrumb/VvBreadcrumb.umd.js +1 -1
  23. package/dist/components/VvBreadcrumb/VvBreadcrumb.vue.d.ts +11 -11
  24. package/dist/components/VvBreadcrumb/index.d.ts +1 -1
  25. package/dist/components/VvButton/VvButton.es.js +636 -360
  26. package/dist/components/VvButton/VvButton.umd.js +1 -1
  27. package/dist/components/VvButton/VvButton.vue.d.ts +18 -18
  28. package/dist/components/VvButton/index.d.ts +13 -13
  29. package/dist/components/VvButtonGroup/VvButtonGroup.es.js +251 -79
  30. package/dist/components/VvButtonGroup/VvButtonGroup.umd.js +1 -1
  31. package/dist/components/VvButtonGroup/VvButtonGroup.vue.d.ts +2 -2
  32. package/dist/components/VvButtonGroup/index.d.ts +1 -1
  33. package/dist/components/VvCard/VvCard.es.js +57 -38
  34. package/dist/components/VvCard/VvCard.umd.js +1 -1
  35. package/dist/components/VvCheckbox/VvCheckbox.es.js +552 -274
  36. package/dist/components/VvCheckbox/VvCheckbox.umd.js +1 -1
  37. package/dist/components/VvCheckbox/VvCheckbox.vue.d.ts +2 -2
  38. package/dist/components/VvCheckbox/index.d.ts +5 -5
  39. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.es.js +651 -340
  40. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.umd.js +1 -1
  41. package/dist/components/VvCheckboxGroup/VvCheckboxGroup.vue.d.ts +7 -7
  42. package/dist/components/VvCheckboxGroup/index.d.ts +3 -3
  43. package/dist/components/VvCombobox/VvCombobox.es.js +1532 -983
  44. package/dist/components/VvCombobox/VvCombobox.umd.js +1 -1
  45. package/dist/components/VvCombobox/VvCombobox.vue.d.ts +125 -51
  46. package/dist/components/VvCombobox/index.d.ts +36 -10
  47. package/dist/components/VvDialog/VvDialog.es.js +377 -141
  48. package/dist/components/VvDialog/VvDialog.umd.js +1 -1
  49. package/dist/components/VvDialog/VvDialog.vue.d.ts +12 -3
  50. package/dist/components/VvDialog/index.d.ts +4 -1
  51. package/dist/components/VvDropdown/VvDropdown.es.js +440 -244
  52. package/dist/components/VvDropdown/VvDropdown.umd.js +1 -1
  53. package/dist/components/VvDropdown/VvDropdown.vue.d.ts +113 -41
  54. package/dist/components/VvDropdown/VvDropdownAction.vue.d.ts +13 -13
  55. package/dist/components/VvDropdown/VvDropdownOption.vue.d.ts +2 -2
  56. package/dist/components/VvDropdown/index.d.ts +35 -11
  57. package/dist/components/VvDropdownAction/VvDropdownAction.es.js +363 -160
  58. package/dist/components/VvDropdownAction/VvDropdownAction.umd.js +1 -1
  59. package/dist/components/VvDropdownItem/VvDropdownItem.es.js +43 -28
  60. package/dist/components/VvDropdownItem/VvDropdownItem.umd.js +1 -1
  61. package/dist/components/VvDropdownOption/VvDropdownOption.es.js +275 -90
  62. package/dist/components/VvDropdownOption/VvDropdownOption.umd.js +1 -1
  63. package/dist/components/VvIcon/VvIcon.es.js +113 -65
  64. package/dist/components/VvIcon/VvIcon.umd.js +1 -1
  65. package/dist/components/VvIcon/VvIcon.vue.d.ts +7 -7
  66. package/dist/components/VvIcon/index.d.ts +2 -2
  67. package/dist/components/VvInputText/VvInputPasswordAction.d.ts +2 -2
  68. package/dist/components/VvInputText/VvInputStepAction.d.ts +1 -1
  69. package/dist/components/VvInputText/VvInputText.es.js +974 -460
  70. package/dist/components/VvInputText/VvInputText.umd.js +1 -1
  71. package/dist/components/VvInputText/VvInputText.vue.d.ts +96 -16
  72. package/dist/components/VvInputText/VvInputTextActions.d.ts +1 -1
  73. package/dist/components/VvInputText/index.d.ts +64 -11
  74. package/dist/components/VvProgress/VvProgress.es.js +206 -45
  75. package/dist/components/VvProgress/VvProgress.umd.js +1 -1
  76. package/dist/components/VvProgress/VvProgress.vue.d.ts +2 -2
  77. package/dist/components/VvProgress/index.d.ts +1 -1
  78. package/dist/components/VvRadio/VvRadio.es.js +489 -238
  79. package/dist/components/VvRadio/VvRadio.umd.js +1 -1
  80. package/dist/components/VvRadio/VvRadio.vue.d.ts +2 -2
  81. package/dist/components/VvRadio/index.d.ts +5 -5
  82. package/dist/components/VvRadioGroup/VvRadioGroup.es.js +588 -304
  83. package/dist/components/VvRadioGroup/VvRadioGroup.umd.js +1 -1
  84. package/dist/components/VvRadioGroup/VvRadioGroup.vue.d.ts +7 -7
  85. package/dist/components/VvRadioGroup/index.d.ts +3 -3
  86. package/dist/components/VvSelect/VvSelect.es.js +621 -324
  87. package/dist/components/VvSelect/VvSelect.umd.js +1 -1
  88. package/dist/components/VvSelect/VvSelect.vue.d.ts +13 -13
  89. package/dist/components/VvSelect/index.d.ts +3 -3
  90. package/dist/components/VvTextarea/VvTextarea.es.js +664 -353
  91. package/dist/components/VvTextarea/VvTextarea.umd.js +1 -1
  92. package/dist/components/VvTextarea/VvTextarea.vue.d.ts +10 -10
  93. package/dist/components/VvTextarea/index.d.ts +2 -2
  94. package/dist/components/VvTooltip/VvTooltip.es.js +205 -47
  95. package/dist/components/VvTooltip/VvTooltip.umd.js +1 -1
  96. package/dist/components/VvTooltip/VvTooltip.vue.d.ts +7 -7
  97. package/dist/components/VvTooltip/index.d.ts +2 -2
  98. package/dist/components/index.es.js +3508 -2231
  99. package/dist/components/index.umd.js +1 -1
  100. package/dist/composables/dropdown/useInjectDropdown.d.ts +1 -1
  101. package/dist/composables/dropdown/useProvideDropdown.d.ts +3 -3
  102. package/dist/composables/group/useInjectedGroupState.d.ts +2 -2
  103. package/dist/composables/group/useProvideGroupState.d.ts +1 -1
  104. package/dist/composables/useComponentFocus.d.ts +1 -1
  105. package/dist/composables/useComponentIcon.d.ts +7 -7
  106. package/dist/composables/useDebouncedInput.d.ts +4 -1
  107. package/dist/composables/useDefaults.d.ts +2 -0
  108. package/dist/composables/useModifiers.d.ts +1 -1
  109. package/dist/composables/useOptions.d.ts +2 -2
  110. package/dist/composables/useTextCount.d.ts +3 -3
  111. package/dist/composables/useUniqueId.d.ts +1 -1
  112. package/dist/composables/useVolver.d.ts +1 -1
  113. package/dist/directives/index.es.js +215 -55
  114. package/dist/directives/index.umd.js +1 -1
  115. package/dist/directives/v-tooltip.es.js +212 -53
  116. package/dist/directives/v-tooltip.umd.js +1 -1
  117. package/dist/icons.es.js +38 -23
  118. package/dist/icons.umd.js +1 -1
  119. package/dist/index.d.ts +0 -1
  120. package/dist/index.es.js +112 -3607
  121. package/dist/index.umd.js +1 -1
  122. package/dist/props/index.d.ts +40 -16
  123. package/dist/resolvers/unplugin.d.ts +7 -1
  124. package/dist/resolvers/unplugin.es.js +77 -37
  125. package/dist/resolvers/unplugin.umd.js +1 -1
  126. package/dist/stories/InputText/InputText.settings.d.ts +53 -0
  127. package/dist/stories/argTypes.d.ts +1 -1
  128. package/package.json +114 -36
  129. package/src/Volver.ts +49 -22
  130. package/src/assets/icons/detailed.json +1 -1
  131. package/src/assets/icons/normal.json +1 -1
  132. package/src/assets/icons/simple.json +1 -1
  133. package/src/components/VvAccordion/VvAccordion.vue +19 -22
  134. package/src/components/VvAccordion/index.ts +12 -4
  135. package/src/components/VvAccordionGroup/VvAccordionGroup.vue +19 -10
  136. package/src/components/VvAccordionGroup/index.ts +8 -0
  137. package/src/components/VvAction/VvAction.vue +7 -7
  138. package/src/components/VvAction/index.ts +1 -1
  139. package/src/components/VvBadge/VvBadge.vue +2 -2
  140. package/src/components/VvBadge/index.ts +1 -1
  141. package/src/components/VvBreadcrumb/VvBreadcrumb.vue +3 -3
  142. package/src/components/VvButton/VvButton.vue +11 -11
  143. package/src/components/VvButton/index.ts +10 -9
  144. package/src/components/VvButtonGroup/VvButtonGroup.vue +4 -7
  145. package/src/components/VvButtonGroup/index.ts +1 -1
  146. package/src/components/VvCard/VvCard.vue +2 -2
  147. package/src/components/VvCheckbox/VvCheckbox.vue +3 -7
  148. package/src/components/VvCheckbox/index.ts +11 -7
  149. package/src/components/VvCheckboxGroup/VvCheckboxGroup.vue +7 -10
  150. package/src/components/VvCheckboxGroup/index.ts +1 -1
  151. package/src/components/VvCombobox/VvCombobox.vue +39 -23
  152. package/src/components/VvCombobox/index.ts +1 -1
  153. package/src/components/VvDialog/VvDialog.vue +28 -11
  154. package/src/components/VvDialog/index.ts +5 -2
  155. package/src/components/VvDropdown/VvDropdown.vue +6 -5
  156. package/src/components/VvDropdown/VvDropdownAction.vue +7 -5
  157. package/src/components/VvDropdown/VvDropdownOption.vue +17 -10
  158. package/src/components/VvDropdown/index.ts +3 -3
  159. package/src/components/VvIcon/VvIcon.vue +3 -3
  160. package/src/components/VvIcon/index.ts +3 -3
  161. package/src/components/VvInputText/VvInputClearAction.ts +2 -2
  162. package/src/components/VvInputText/VvInputPasswordAction.ts +3 -4
  163. package/src/components/VvInputText/VvInputStepAction.ts +3 -2
  164. package/src/components/VvInputText/VvInputText.vue +128 -35
  165. package/src/components/VvInputText/VvInputTextActions.ts +5 -8
  166. package/src/components/VvInputText/index.ts +62 -1
  167. package/src/components/VvProgress/VvProgress.vue +2 -2
  168. package/src/components/VvProgress/index.ts +1 -1
  169. package/src/components/VvRadio/VvRadio.vue +3 -7
  170. package/src/components/VvRadio/index.ts +11 -7
  171. package/src/components/VvRadioGroup/VvRadioGroup.vue +7 -10
  172. package/src/components/VvRadioGroup/index.ts +1 -1
  173. package/src/components/VvSelect/VvSelect.vue +4 -4
  174. package/src/components/VvSelect/index.ts +1 -1
  175. package/src/components/VvTextarea/VvTextarea.vue +4 -4
  176. package/src/components/VvTextarea/index.ts +1 -1
  177. package/src/components/VvTooltip/VvTooltip.vue +2 -2
  178. package/src/components/VvTooltip/index.ts +3 -3
  179. package/src/composables/dropdown/useInjectDropdown.ts +2 -2
  180. package/src/composables/dropdown/useProvideDropdown.ts +2 -2
  181. package/src/composables/group/useInjectedGroupState.ts +1 -1
  182. package/src/composables/group/useProvideGroupState.ts +1 -1
  183. package/src/composables/useComponentIcon.ts +1 -1
  184. package/src/composables/useDebouncedInput.ts +10 -3
  185. package/src/composables/useDefaults.ts +89 -0
  186. package/src/composables/useModifiers.ts +4 -2
  187. package/src/composables/useOptions.ts +1 -1
  188. package/src/composables/useVolver.ts +2 -2
  189. package/src/directives/index.ts +1 -1
  190. package/src/directives/v-tooltip.ts +2 -2
  191. package/src/index.ts +0 -2
  192. package/src/props/index.ts +8 -8
  193. package/src/resolvers/unplugin.ts +15 -1
  194. package/src/stories/Accordion/Accordion.stories.mdx +8 -2
  195. package/src/stories/Accordion/Accordion.test.ts +21 -15
  196. package/src/stories/Accordion/AccordionSlots.stories.mdx +8 -8
  197. package/src/stories/AccordionGroup/AccordionGroup.stories.mdx +17 -1
  198. package/src/stories/AccordionGroup/AccordionGroup.test.ts +18 -12
  199. package/src/stories/AccordionGroup/AccordionGroupSlots.stories.mdx +1 -1
  200. package/src/stories/InputText/InputText.settings.ts +53 -0
  201. package/src/stories/InputText/InputText.stories.mdx +40 -0
  202. package/src/stories/InputText/InputText.test.ts +5 -2
  203. package/src/stories/argTypes.ts +2 -2
  204. package/src/types/group.d.ts +5 -0
@@ -1,8 +1,60 @@
1
- import { inject as p, defineComponent as g, ref as I, watch as N, computed as f, openBlock as O, createBlock as D, resolveDynamicComponent as W, unref as i, mergeProps as h, withCtx as b, renderSlot as k, createTextVNode as A, toDisplayString as J, provide as K, createElementBlock as T, toRefs as Y, createVNode as F } from "vue";
1
+ import { inject, defineComponent, ref, watch, computed, openBlock, createBlock, resolveDynamicComponent, unref, mergeProps, withCtx, renderSlot, createTextVNode, toDisplayString, provide, createElementBlock, toRefs, createVNode } from "vue";
2
2
  import "mitt";
3
- import { useElementHover as G, useFocus as z, useFocusWithin as H } from "@vueuse/core";
4
- var m = /* @__PURE__ */ ((e) => (e.left = "left", e.right = "right", e.top = "top", e.bottom = "bottom", e))(m || {}), E = /* @__PURE__ */ ((e) => (e.topStart = "top-start", e.topEnd = "top-end", e.bottomStart = "bottom-start", e.bottomEnd = "bottom-end", e.leftStart = "left-start", e.leftEnd = "left-end", e.rightStart = "right-start", e.rightEnd = "right-end", e))(E || {}), _ = /* @__PURE__ */ ((e) => (e.before = "before", e.after = "after", e))(_ || {}), y = /* @__PURE__ */ ((e) => (e.button = "button", e.submit = "submit", e.reset = "reset", e))(y || {}), l = /* @__PURE__ */ ((e) => (e.nuxtLink = "nuxt-link", e.routerLink = "router-link", e.a = "a", e.button = "button", e))(l || {}), C = /* @__PURE__ */ ((e) => (e.button = "button", e.link = "link", e.menuitem = "menuitem", e))(C || {}), P = /* @__PURE__ */ ((e) => (e._blank = "_blank", e._self = "_self", e._parent = "_parent", e._top = "_top", e))(P || {});
5
- const q = Symbol.for("volver"), Q = Symbol.for("dropdownTrigger"), U = Symbol.for("dropdownItem"), $ = Symbol.for("dropdownAction"), X = {
3
+ import { useElementHover, useFocus, useFocusWithin } from "@vueuse/core";
4
+ var Side = /* @__PURE__ */ ((Side2) => {
5
+ Side2["left"] = "left";
6
+ Side2["right"] = "right";
7
+ Side2["top"] = "top";
8
+ Side2["bottom"] = "bottom";
9
+ return Side2;
10
+ })(Side || {});
11
+ var Placement = /* @__PURE__ */ ((Placement2) => {
12
+ Placement2["topStart"] = "top-start";
13
+ Placement2["topEnd"] = "top-end";
14
+ Placement2["bottomStart"] = "bottom-start";
15
+ Placement2["bottomEnd"] = "bottom-end";
16
+ Placement2["leftStart"] = "left-start";
17
+ Placement2["leftEnd"] = "left-end";
18
+ Placement2["rightStart"] = "right-start";
19
+ Placement2["rightEnd"] = "right-end";
20
+ return Placement2;
21
+ })(Placement || {});
22
+ var Position = /* @__PURE__ */ ((Position2) => {
23
+ Position2["before"] = "before";
24
+ Position2["after"] = "after";
25
+ return Position2;
26
+ })(Position || {});
27
+ var ButtonType = /* @__PURE__ */ ((ButtonType2) => {
28
+ ButtonType2["button"] = "button";
29
+ ButtonType2["submit"] = "submit";
30
+ ButtonType2["reset"] = "reset";
31
+ return ButtonType2;
32
+ })(ButtonType || {});
33
+ var ActionTag = /* @__PURE__ */ ((ActionTag2) => {
34
+ ActionTag2["nuxtLink"] = "nuxt-link";
35
+ ActionTag2["routerLink"] = "router-link";
36
+ ActionTag2["a"] = "a";
37
+ ActionTag2["button"] = "button";
38
+ return ActionTag2;
39
+ })(ActionTag || {});
40
+ var ActionRoles = /* @__PURE__ */ ((ActionRoles2) => {
41
+ ActionRoles2["button"] = "button";
42
+ ActionRoles2["link"] = "link";
43
+ ActionRoles2["menuitem"] = "menuitem";
44
+ return ActionRoles2;
45
+ })(ActionRoles || {});
46
+ var AnchorTarget = /* @__PURE__ */ ((AnchorTarget2) => {
47
+ AnchorTarget2["_blank"] = "_blank";
48
+ AnchorTarget2["_self"] = "_self";
49
+ AnchorTarget2["_parent"] = "_parent";
50
+ AnchorTarget2["_top"] = "_top";
51
+ return AnchorTarget2;
52
+ })(AnchorTarget || {});
53
+ const INJECTION_KEY_VOLVER = Symbol.for("volver");
54
+ const INJECTION_KEY_DROPDOWN_TRIGGER = Symbol.for("dropdownTrigger");
55
+ const INJECTION_KEY_DROPDOWN_ITEM = Symbol.for("dropdownItem");
56
+ const INJECTION_KEY_DROPDOWN_ACTION = Symbol.for("dropdownAction");
57
+ const LinkProps = {
6
58
  /**
7
59
  * The router-link/nuxt-link property, if it is defined the button is rendered as a ruouter-link or nuxt-link.
8
60
  * @see Documentation of [router-link](https://router.vuejs.org/api/#router-link) and [nuxt-link](https://nuxtjs.org/api/components-nuxt-link/)
@@ -19,7 +71,7 @@ const q = Symbol.for("volver"), Q = Symbol.for("dropdownTrigger"), U = Symbol.fo
19
71
  */
20
72
  target: {
21
73
  type: String,
22
- validator: (e) => Object.values(P).includes(e)
74
+ validator: (value) => Object.values(AnchorTarget).includes(value)
23
75
  },
24
76
  /**
25
77
  * Anchor rel
@@ -28,224 +80,375 @@ const q = Symbol.for("volver"), Q = Symbol.for("dropdownTrigger"), U = Symbol.fo
28
80
  type: String,
29
81
  default: "noopener noreferrer"
30
82
  }
31
- }, Z = {
83
+ };
84
+ const DisabledProps = {
32
85
  /**
33
86
  * Whether the form control is disabled
34
87
  */
35
88
  disabled: Boolean
36
- }, x = {
89
+ };
90
+ const ActiveProps = {
37
91
  /**
38
92
  * Whether the item is active
39
93
  */
40
94
  active: Boolean
41
- }, ee = {
95
+ };
96
+ const PressedProps = {
42
97
  /**
43
98
  * Whether the item is pressed
44
99
  */
45
100
  pressed: Boolean
46
- }, te = {
101
+ };
102
+ const LabelProps = {
47
103
  /**
48
104
  * The item label
49
105
  */
50
106
  label: [String, Number]
51
- }, re = {
107
+ };
108
+ const ModifiersProps = {
52
109
  /**
53
110
  * Component BEM modifiers
54
111
  */
55
112
  modifiers: [String, Array]
56
113
  };
57
- _.before;
58
- m.bottom;
59
- const w = {
60
- ...Z,
61
- ...te,
62
- ...ee,
63
- ...x,
64
- ...X,
114
+ ({
115
+ /**
116
+ * VvIcon name or props
117
+ * @see VVIcon
118
+ */
119
+ icon: { type: [String, Object] },
120
+ /**
121
+ * VvIcon position
122
+ */
123
+ iconPosition: {
124
+ type: String,
125
+ default: Position.before,
126
+ validation: (value) => Object.values(Position).includes(value)
127
+ }
128
+ });
129
+ ({
130
+ /**
131
+ * Dropdown placement
132
+ */
133
+ placement: {
134
+ type: String,
135
+ default: Side.bottom,
136
+ validator: (value) => {
137
+ return Object.values(Side).includes(value) || Object.values(Placement).includes(value);
138
+ }
139
+ },
140
+ /**
141
+ * Dropdown show / hide transition name
142
+ */
143
+ transitionName: {
144
+ type: String
145
+ },
146
+ /**
147
+ * Offset of the dropdown from the trigger
148
+ * @see https://floating-ui.com/docs/offset
149
+ */
150
+ offset: {
151
+ type: [Number, String, Object],
152
+ default: 0
153
+ },
154
+ /**
155
+ * Move dropdown to the side if there is no space in the default position
156
+ * @see https://floating-ui.com/docs/shift
157
+ */
158
+ shift: {
159
+ type: [Boolean, Object],
160
+ default: false
161
+ },
162
+ /**
163
+ * Flip dropdown position if there is no space in the default position
164
+ * @see https://floating-ui.com/docs/flip
165
+ */
166
+ flip: {
167
+ type: [Boolean, Object],
168
+ default: true
169
+ },
170
+ /**
171
+ * Size of the dropdown
172
+ * @see https://floating-ui.com/docs/size
173
+ */
174
+ size: {
175
+ type: [Boolean, Object],
176
+ default: () => ({ padding: 10 })
177
+ },
178
+ /**
179
+ * Automatically change the position of the dropdown
180
+ * @see https://floating-ui.com/docs/autoPlacement
181
+ */
182
+ autoPlacement: {
183
+ type: [Boolean, Object],
184
+ default: false
185
+ },
186
+ /**
187
+ * Add arrow to the dropdown
188
+ * @see https://floating-ui.com/docs/arrow
189
+ */
190
+ arrow: {
191
+ type: Boolean,
192
+ default: false
193
+ },
194
+ /**
195
+ * Close dropdown on click outside
196
+ */
197
+ autoClose: {
198
+ type: Boolean,
199
+ default: true
200
+ },
201
+ /**
202
+ * Autofocus first item on dropdown open
203
+ */
204
+ autofocusFirst: {
205
+ type: Boolean,
206
+ default: true
207
+ },
208
+ /**
209
+ * Set dropdown width to the same as the trigger
210
+ */
211
+ triggerWidth: {
212
+ type: Boolean
213
+ }
214
+ });
215
+ const ActionProps = {
216
+ ...DisabledProps,
217
+ ...LabelProps,
218
+ ...PressedProps,
219
+ ...ActiveProps,
220
+ ...LinkProps,
65
221
  /**
66
222
  * Button type
67
223
  */
68
224
  type: {
69
225
  type: String,
70
- default: y.button,
71
- validator: (e) => Object.values(y).includes(e)
226
+ default: ButtonType.button,
227
+ validator: (value) => Object.values(ButtonType).includes(value)
72
228
  }
73
- }, oe = ["click", "mouseover", "mouseleave"], ne = w;
74
- function se() {
75
- return p(q);
229
+ };
230
+ const VvActionEvents = ["click", "mouseover", "mouseleave"];
231
+ const VvActionProps = ActionProps;
232
+ function useVolver() {
233
+ return inject(INJECTION_KEY_VOLVER);
76
234
  }
77
- function ae() {
78
- return p(Q, {});
235
+ function useInjectedDropdownTrigger() {
236
+ return inject(INJECTION_KEY_DROPDOWN_TRIGGER, {});
79
237
  }
80
- function ue() {
81
- return p(U, {});
238
+ function useInjectedDropdownItem() {
239
+ return inject(INJECTION_KEY_DROPDOWN_ITEM, {});
82
240
  }
83
- function le() {
84
- return p($, {});
241
+ function useInjectedDropdownAction() {
242
+ return inject(INJECTION_KEY_DROPDOWN_ACTION, {});
85
243
  }
86
- const ie = {
244
+ const __default__$2 = {
87
245
  name: "VvAction"
88
- }, ce = /* @__PURE__ */ g({
89
- ...ie,
90
- props: ne,
91
- emits: oe,
92
- setup(e, { expose: n, emit: u }) {
93
- const t = e, o = se(), a = I(null);
94
- n({ $el: a });
246
+ };
247
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
248
+ ...__default__$2,
249
+ props: VvActionProps,
250
+ emits: VvActionEvents,
251
+ setup(__props, { expose, emit }) {
252
+ const props = __props;
253
+ const volver = useVolver();
254
+ const element = ref(null);
255
+ expose({ $el: element });
95
256
  const {
96
- reference: c,
97
- bus: s,
98
- aria: d,
99
- expanded: v
100
- } = ae();
101
- N(
102
- () => a.value,
103
- (r) => {
104
- c && (c.value = r);
257
+ reference: dropdownTriggerReference,
258
+ bus: dropdownEventBus,
259
+ aria: dropdownAria,
260
+ expanded: dropdownExpanded
261
+ } = useInjectedDropdownTrigger();
262
+ watch(
263
+ () => element.value,
264
+ (newValue) => {
265
+ if (dropdownTriggerReference) {
266
+ dropdownTriggerReference.value = newValue;
267
+ }
105
268
  }
106
269
  );
107
- const S = f(() => t.pressed || (v == null ? void 0 : v.value)), { role: V } = le(), j = f(() => {
108
- switch (!0) {
109
- case t.disabled:
110
- return l.button;
111
- case t.to !== void 0:
112
- return o != null && o.nuxt ? l.nuxtLink : l.routerLink;
113
- case t.href !== void 0:
114
- return l.a;
270
+ const pressed = computed(() => {
271
+ return props.pressed || (dropdownExpanded == null ? void 0 : dropdownExpanded.value);
272
+ });
273
+ const { role } = useInjectedDropdownAction();
274
+ const hasTag = computed(() => {
275
+ switch (true) {
276
+ case props.disabled:
277
+ return ActionTag.button;
278
+ case props.to !== void 0:
279
+ return (volver == null ? void 0 : volver.nuxt) ? ActionTag.nuxtLink : ActionTag.routerLink;
280
+ case props.href !== void 0:
281
+ return ActionTag.a;
115
282
  default:
116
- return l.button;
283
+ return ActionTag.button;
117
284
  }
118
- }), L = f(() => {
119
- const r = {
120
- ...d == null ? void 0 : d.value,
121
- "aria-pressed": S.value ? !0 : void 0,
122
- role: V
285
+ });
286
+ const hasProps = computed(() => {
287
+ const toReturn = {
288
+ ...dropdownAria == null ? void 0 : dropdownAria.value,
289
+ "aria-pressed": pressed.value ? true : void 0,
290
+ role
123
291
  };
124
- switch (j.value) {
125
- case l.a:
292
+ switch (hasTag.value) {
293
+ case ActionTag.a:
126
294
  return {
127
- ...r,
128
- href: t.href,
129
- target: t.target,
130
- rel: t.rel
295
+ ...toReturn,
296
+ href: props.href,
297
+ target: props.target,
298
+ rel: props.rel
131
299
  };
132
- case l.routerLink:
133
- case l.nuxtLink:
300
+ case ActionTag.routerLink:
301
+ case ActionTag.nuxtLink:
134
302
  return {
135
- ...r,
136
- to: t.to,
137
- target: t.target
303
+ ...toReturn,
304
+ to: props.to,
305
+ target: props.target
138
306
  };
139
307
  default:
140
308
  return {
141
- ...r,
142
- type: t.type,
143
- disabled: t.disabled
309
+ ...toReturn,
310
+ type: props.type,
311
+ disabled: props.disabled
144
312
  };
145
313
  }
146
- }), B = (r) => {
147
- if (t.disabled) {
148
- r.preventDefault();
314
+ });
315
+ const onClick = (e) => {
316
+ if (props.disabled) {
317
+ e.preventDefault();
149
318
  return;
150
319
  }
151
- s == null || s.emit("click", r), u("click", r);
152
- }, R = (r) => {
153
- s == null || s.emit("mouseover", r), u("mouseover", r);
154
- }, M = (r) => {
155
- s == null || s.emit("mouseleave", r), u("mouseleave", r);
320
+ dropdownEventBus == null ? void 0 : dropdownEventBus.emit("click", e);
321
+ emit("click", e);
322
+ };
323
+ const onMouseover = (e) => {
324
+ dropdownEventBus == null ? void 0 : dropdownEventBus.emit("mouseover", e);
325
+ emit("mouseover", e);
326
+ };
327
+ const onMouseleave = (e) => {
328
+ dropdownEventBus == null ? void 0 : dropdownEventBus.emit("mouseleave", e);
329
+ emit("mouseleave", e);
330
+ };
331
+ return (_ctx, _cache) => {
332
+ return openBlock(), createBlock(resolveDynamicComponent(unref(hasTag)), mergeProps(unref(hasProps), {
333
+ ref_key: "element",
334
+ ref: element,
335
+ class: {
336
+ active: _ctx.active,
337
+ pressed: unref(pressed),
338
+ disabled: _ctx.disabled
339
+ },
340
+ onClickPassive: onClick,
341
+ onMouseoverPassive: onMouseover,
342
+ onMouseleavePassive: onMouseleave
343
+ }), {
344
+ default: withCtx(() => [
345
+ renderSlot(_ctx.$slots, "default", {}, () => [
346
+ createTextVNode(toDisplayString(_ctx.label), 1)
347
+ ])
348
+ ]),
349
+ _: 3
350
+ }, 16, ["class"]);
156
351
  };
157
- return (r, me) => (O(), D(W(i(j)), h(i(L), {
158
- ref_key: "element",
159
- ref: a,
160
- class: {
161
- active: r.active,
162
- pressed: i(S),
163
- disabled: r.disabled
164
- },
165
- onClickPassive: B,
166
- onMouseoverPassive: R,
167
- onMouseleavePassive: M
168
- }), {
169
- default: b(() => [
170
- k(r.$slots, "default", {}, () => [
171
- A(J(r.label), 1)
172
- ])
173
- ]),
174
- _: 3
175
- }, 16, ["class"]));
176
352
  }
177
353
  });
178
- function de({
179
- expanded: e
354
+ function useProvideDropdownAction({
355
+ expanded
180
356
  }) {
181
- K($, {
182
- role: C.menuitem,
183
- expanded: e
357
+ provide(INJECTION_KEY_DROPDOWN_ACTION, {
358
+ role: ActionRoles.menuitem,
359
+ expanded
184
360
  });
185
361
  }
186
- const fe = {
362
+ const __default__$1 = {
187
363
  name: "VvDropdownItem"
188
- }, pe = /* @__PURE__ */ g({
189
- ...fe,
190
- setup(e) {
191
- const { role: n, expanded: u } = ue(), t = I(null);
192
- de({ expanded: u });
193
- const o = G(t), { focused: a } = z(t), { focused: c } = H(t);
194
- return N(o, (s) => {
195
- s && (a.value = !0);
196
- }), (s, d) => (O(), T("li", h({ role: i(n) }, {
197
- ref_key: "element",
198
- ref: t,
199
- class: ["vv-dropdown__item", { "focus-visible": i(a) || i(c) }]
200
- }), [
201
- k(s.$slots, "default")
202
- ], 16));
364
+ };
365
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
366
+ ...__default__$1,
367
+ setup(__props) {
368
+ const { role, expanded } = useInjectedDropdownItem();
369
+ const element = ref(null);
370
+ useProvideDropdownAction({ expanded });
371
+ const hovered = useElementHover(element);
372
+ const { focused } = useFocus(element);
373
+ const { focused: focusedWithin } = useFocusWithin(element);
374
+ watch(hovered, (newValue) => {
375
+ if (newValue) {
376
+ focused.value = true;
377
+ }
378
+ });
379
+ return (_ctx, _cache) => {
380
+ return openBlock(), createElementBlock("li", mergeProps({ role: unref(role) }, {
381
+ ref_key: "element",
382
+ ref: element,
383
+ class: ["vv-dropdown__item", { "focus-visible": unref(focused) || unref(focusedWithin) }]
384
+ }), [
385
+ renderSlot(_ctx.$slots, "default")
386
+ ], 16);
387
+ };
203
388
  }
204
389
  });
205
- function ve(e, n, u) {
206
- return f(() => {
207
- const t = {
208
- [e]: !0
209
- }, o = typeof (n == null ? void 0 : n.value) == "string" ? n.value.split(" ") : n == null ? void 0 : n.value;
210
- return o && Array.isArray(o) && o.forEach((a) => {
211
- t[`${e}--${a}`] = !0;
212
- }), u && Object.keys(u.value).forEach((a) => {
213
- t[`${e}--${a}`] = i(u.value[a]);
214
- }), t;
390
+ function useModifiers(prefix, modifiers, others) {
391
+ return computed(() => {
392
+ const toReturn = {
393
+ [prefix]: true
394
+ };
395
+ const modifiersArray = typeof (modifiers == null ? void 0 : modifiers.value) === "string" ? modifiers.value.split(" ") : modifiers == null ? void 0 : modifiers.value;
396
+ if (modifiersArray) {
397
+ if (Array.isArray(modifiersArray)) {
398
+ modifiersArray.forEach((modifier) => {
399
+ if (modifier) {
400
+ toReturn[`${prefix}--${modifier}`] = true;
401
+ }
402
+ });
403
+ }
404
+ }
405
+ if (others) {
406
+ Object.keys(others.value).forEach((key) => {
407
+ toReturn[`${prefix}--${key}`] = unref(others.value[key]);
408
+ });
409
+ }
410
+ return toReturn;
215
411
  });
216
412
  }
217
- const be = {
413
+ const __default__ = {
218
414
  name: "VvDropdownAction"
219
- }, Oe = /* @__PURE__ */ g({
220
- ...be,
415
+ };
416
+ const _sfc_main = /* @__PURE__ */ defineComponent({
417
+ ...__default__,
221
418
  props: {
222
- ...w,
223
- ...re
419
+ ...ActionProps,
420
+ ...ModifiersProps
224
421
  },
225
- setup(e) {
226
- const n = e, { modifiers: u } = Y(n), t = ve("vv-dropdown-action", u);
227
- return (o, a) => (O(), D(pe, null, {
228
- default: b(() => [
229
- F(ce, h({
230
- disabled: o.disabled,
231
- pressed: o.pressed,
232
- active: o.active,
233
- type: o.type,
234
- to: o.to,
235
- href: o.href,
236
- target: o.target,
237
- rel: o.rel
238
- }, { class: i(t) }), {
239
- default: b(() => [
240
- k(o.$slots, "default")
241
- ]),
242
- _: 3
243
- }, 16, ["class"])
244
- ]),
245
- _: 3
246
- }));
422
+ setup(__props) {
423
+ const props = __props;
424
+ const { modifiers } = toRefs(props);
425
+ const bemCssClasses = useModifiers("vv-dropdown-action", modifiers);
426
+ return (_ctx, _cache) => {
427
+ return openBlock(), createBlock(_sfc_main$1, null, {
428
+ default: withCtx(() => [
429
+ createVNode(_sfc_main$2, mergeProps({
430
+ disabled: _ctx.disabled,
431
+ pressed: _ctx.pressed,
432
+ active: _ctx.active,
433
+ type: _ctx.type,
434
+ to: _ctx.to,
435
+ href: _ctx.href,
436
+ target: _ctx.target,
437
+ rel: _ctx.rel
438
+ }, { class: unref(bemCssClasses) }), {
439
+ default: withCtx(() => [
440
+ renderSlot(_ctx.$slots, "default", {}, () => [
441
+ createTextVNode(toDisplayString(_ctx.label), 1)
442
+ ])
443
+ ]),
444
+ _: 3
445
+ }, 16, ["class"])
446
+ ]),
447
+ _: 3
448
+ });
449
+ };
247
450
  }
248
451
  });
249
452
  export {
250
- Oe as default
453
+ _sfc_main as default
251
454
  };
@@ -1 +1 @@
1
- (function(t,c){typeof exports=="object"&&typeof module<"u"?module.exports=c(require("vue"),require("mitt"),require("@vueuse/core")):typeof define=="function"&&define.amd?define(["vue","mitt","@vueuse/core"],c):(t=typeof globalThis<"u"?globalThis:t||self,t.VvDropdownAction=c(t.vue,null,t.core))})(this,function(t,c,p){"use strict";var b=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(b||{}),g=(e=>(e.topStart="top-start",e.topEnd="top-end",e.bottomStart="bottom-start",e.bottomEnd="bottom-end",e.leftStart="left-start",e.leftEnd="left-end",e.rightStart="right-start",e.rightEnd="right-end",e))(g||{}),m=(e=>(e.before="before",e.after="after",e))(m||{}),_=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(_||{}),u=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(u||{}),h=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(h||{}),k=(e=>(e._blank="_blank",e._self="_self",e._parent="_parent",e._top="_top",e))(k||{});const C=Symbol.for("volver"),D=Symbol.for("dropdownTrigger"),I=Symbol.for("dropdownItem"),v=Symbol.for("dropdownAction"),N={to:{type:[String,Object]},href:String,target:{type:String,validator:e=>Object.values(k).includes(e)},rel:{type:String,default:"noopener noreferrer"}},w={disabled:Boolean},E={active:Boolean},P={pressed:Boolean},$={label:[String,Number]},B={modifiers:[String,Array]};m.before,b.bottom;const O={...w,...$,...P,...E,...N,type:{type:String,default:_.button,validator:e=>Object.values(_).includes(e)}},V=["click","mouseover","mouseleave"],L=O;function R(){return t.inject(C)}function M(){return t.inject(D,{})}function A(){return t.inject(I,{})}function T(){return t.inject(v,{})}const W={name:"VvAction"},J=t.defineComponent({...W,props:L,emits:V,setup(e,{expose:s,emit:i}){const r=e,n=R(),l=t.ref(null);s({$el:l});const{reference:d,bus:a,aria:f,expanded:y}=M();t.watch(()=>l.value,o=>{d&&(d.value=o)});const j=t.computed(()=>r.pressed||(y==null?void 0:y.value)),{role:z}=T(),S=t.computed(()=>{switch(!0){case r.disabled:return u.button;case r.to!==void 0:return n!=null&&n.nuxt?u.nuxtLink:u.routerLink;case r.href!==void 0:return u.a;default:return u.button}}),H=t.computed(()=>{const o={...f==null?void 0:f.value,"aria-pressed":j.value?!0:void 0,role:z};switch(S.value){case u.a:return{...o,href:r.href,target:r.target,rel:r.rel};case u.routerLink:case u.nuxtLink:return{...o,to:r.to,target:r.target};default:return{...o,type:r.type,disabled:r.disabled}}}),Q=o=>{if(r.disabled){o.preventDefault();return}a==null||a.emit("click",o),i("click",o)},U=o=>{a==null||a.emit("mouseover",o),i("mouseover",o)},X=o=>{a==null||a.emit("mouseleave",o),i("mouseleave",o)};return(o,x)=>(t.openBlock(),t.createBlock(t.resolveDynamicComponent(t.unref(S)),t.mergeProps(t.unref(H),{ref_key:"element",ref:l,class:{active:o.active,pressed:t.unref(j),disabled:o.disabled},onClickPassive:Q,onMouseoverPassive:U,onMouseleavePassive:X}),{default:t.withCtx(()=>[t.renderSlot(o.$slots,"default",{},()=>[t.createTextVNode(t.toDisplayString(o.label),1)])]),_:3},16,["class"]))}});function K({expanded:e}){t.provide(v,{role:h.menuitem,expanded:e})}const Y={name:"VvDropdownItem"},q=t.defineComponent({...Y,setup(e){const{role:s,expanded:i}=A(),r=t.ref(null);K({expanded:i});const n=p.useElementHover(r),{focused:l}=p.useFocus(r),{focused:d}=p.useFocusWithin(r);return t.watch(n,a=>{a&&(l.value=!0)}),(a,f)=>(t.openBlock(),t.createElementBlock("li",t.mergeProps({role:t.unref(s)},{ref_key:"element",ref:r,class:["vv-dropdown__item",{"focus-visible":t.unref(l)||t.unref(d)}]}),[t.renderSlot(a.$slots,"default")],16))}});function F(e,s,i){return t.computed(()=>{const r={[e]:!0},n=typeof(s==null?void 0:s.value)=="string"?s.value.split(" "):s==null?void 0:s.value;return n&&Array.isArray(n)&&n.forEach(l=>{r[`${e}--${l}`]=!0}),i&&Object.keys(i.value).forEach(l=>{r[`${e}--${l}`]=t.unref(i.value[l])}),r})}const G={name:"VvDropdownAction"};return t.defineComponent({...G,props:{...O,...B},setup(e){const s=e,{modifiers:i}=t.toRefs(s),r=F("vv-dropdown-action",i);return(n,l)=>(t.openBlock(),t.createBlock(q,null,{default:t.withCtx(()=>[t.createVNode(J,t.mergeProps({disabled:n.disabled,pressed:n.pressed,active:n.active,type:n.type,to:n.to,href:n.href,target:n.target,rel:n.rel},{class:t.unref(r)}),{default:t.withCtx(()=>[t.renderSlot(n.$slots,"default")]),_:3},16,["class"])]),_:3}))}})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue"),require("mitt"),require("@vueuse/core")):"function"==typeof define&&define.amd?define(["vue","mitt","@vueuse/core"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VvDropdownAction=t(e.vue,null,e.core)}(this,(function(e,t,o){"use strict";var r=(e=>(e.left="left",e.right="right",e.top="top",e.bottom="bottom",e))(r||{}),n=(e=>(e.before="before",e.after="after",e))(n||{}),l=(e=>(e.button="button",e.submit="submit",e.reset="reset",e))(l||{}),u=(e=>(e.nuxtLink="nuxt-link",e.routerLink="router-link",e.a="a",e.button="button",e))(u||{}),a=(e=>(e.button="button",e.link="link",e.menuitem="menuitem",e))(a||{}),s=(e=>(e._blank="_blank",e._self="_self",e._parent="_parent",e._top="_top",e))(s||{});const i=Symbol.for("volver"),d=Symbol.for("dropdownTrigger"),c=Symbol.for("dropdownItem"),f=Symbol.for("dropdownAction"),p={to:{type:[String,Object]},href:String,target:{type:String,validator:e=>Object.values(s).includes(e)},rel:{type:String,default:"noopener noreferrer"}},v={disabled:Boolean},m={active:Boolean},b={pressed:Boolean},y={label:[String,Number]},g={modifiers:[String,Array]};n.before,r.bottom,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean;const k={...v,...y,...b,...m,...p,type:{type:String,default:l.button,validator:e=>Object.values(l).includes(e)}},h=k;const x=e.defineComponent({name:"VvAction",props:h,emits:["click","mouseover","mouseleave"],setup(t,{expose:o,emit:r}){const n=t,l=e.inject(i),a=e.ref(null);o({$el:a});const{reference:s,bus:c,aria:p,expanded:v}=e.inject(d,{});e.watch((()=>a.value),(e=>{s&&(s.value=e)}));const m=e.computed((()=>n.pressed||(null==v?void 0:v.value))),{role:b}=e.inject(f,{}),y=e.computed((()=>{switch(!0){case n.disabled:return u.button;case void 0!==n.to:return(null==l?void 0:l.nuxt)?u.nuxtLink:u.routerLink;case void 0!==n.href:return u.a;default:return u.button}})),g=e.computed((()=>{const e={...null==p?void 0:p.value,"aria-pressed":!!m.value||void 0,role:b};switch(y.value){case u.a:return{...e,href:n.href,target:n.target,rel:n.rel};case u.routerLink:case u.nuxtLink:return{...e,to:n.to,target:n.target};default:return{...e,type:n.type,disabled:n.disabled}}})),k=e=>{n.disabled?e.preventDefault():(null==c||c.emit("click",e),r("click",e))},h=e=>{null==c||c.emit("mouseover",e),r("mouseover",e)},x=e=>{null==c||c.emit("mouseleave",e),r("mouseleave",e)};return(t,o)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(y)),e.mergeProps(e.unref(g),{ref_key:"element",ref:a,class:{active:t.active,pressed:e.unref(m),disabled:t.disabled},onClickPassive:k,onMouseoverPassive:h,onMouseleavePassive:x}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"]))}});const B=e.defineComponent({name:"VvDropdownItem",setup(t){const{role:r,expanded:n}=e.inject(c,{}),l=e.ref(null);!function({expanded:t}){e.provide(f,{role:a.menuitem,expanded:t})}({expanded:n});const u=o.useElementHover(l),{focused:s}=o.useFocus(l),{focused:i}=o.useFocusWithin(l);return e.watch(u,(e=>{e&&(s.value=!0)})),(t,o)=>(e.openBlock(),e.createElementBlock("li",e.mergeProps({role:e.unref(r)},{ref_key:"element",ref:l,class:["vv-dropdown__item",{"focus-visible":e.unref(s)||e.unref(i)}]}),[e.renderSlot(t.$slots,"default")],16))}});return e.defineComponent({name:"VvDropdownAction",props:{...k,...g},setup(t){const o=t,{modifiers:r}=e.toRefs(o),n=function(t,o,r){return e.computed((()=>{const n={[t]:!0},l="string"==typeof(null==o?void 0:o.value)?o.value.split(" "):null==o?void 0:o.value;return l&&Array.isArray(l)&&l.forEach((e=>{e&&(n[`${t}--${e}`]=!0)})),r&&Object.keys(r.value).forEach((o=>{n[`${t}--${o}`]=e.unref(r.value[o])})),n}))}("vv-dropdown-action",r);return(t,o)=>(e.openBlock(),e.createBlock(B,null,{default:e.withCtx((()=>[e.createVNode(x,e.mergeProps({disabled:t.disabled,pressed:t.pressed,active:t.active,type:t.type,to:t.to,href:t.href,target:t.target,rel:t.rel},{class:e.unref(n)}),{default:e.withCtx((()=>[e.renderSlot(t.$slots,"default",{},(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]))])),_:3},16,["class"])])),_:3}))}})}));