@yamada-ui/react 2.2.1-dev-20260413015504 → 2.2.1-dev-20260421145002

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 (297) hide show
  1. package/dist/cjs/components/autocomplete/autocomplete.cjs +1 -1
  2. package/dist/cjs/components/autocomplete/autocomplete.cjs.map +1 -1
  3. package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
  4. package/dist/cjs/components/chart/chart.cjs.map +1 -1
  5. package/dist/cjs/components/date-picker/date-picker.cjs +1 -1
  6. package/dist/cjs/components/date-picker/date-picker.cjs.map +1 -1
  7. package/dist/cjs/components/drawer/use-drawer.cjs +1 -1
  8. package/dist/cjs/components/drawer/use-drawer.cjs.map +1 -1
  9. package/dist/cjs/components/format/namespace.cjs.map +1 -1
  10. package/dist/cjs/components/group/use-group.cjs +1 -1
  11. package/dist/cjs/components/group/use-group.cjs.map +1 -1
  12. package/dist/cjs/components/indicator/indicator.cjs +4 -3
  13. package/dist/cjs/components/indicator/indicator.cjs.map +1 -1
  14. package/dist/cjs/components/input/use-input-border.cjs +4 -2
  15. package/dist/cjs/components/input/use-input-border.cjs.map +1 -1
  16. package/dist/cjs/components/native-select/native-select.cjs +1 -1
  17. package/dist/cjs/components/native-select/native-select.cjs.map +1 -1
  18. package/dist/cjs/components/native-select/use-native-select.cjs +1 -1
  19. package/dist/cjs/components/native-select/use-native-select.cjs.map +1 -1
  20. package/dist/cjs/components/number-input/number-input.style.cjs +1 -1
  21. package/dist/cjs/components/number-input/number-input.style.cjs.map +1 -1
  22. package/dist/cjs/components/password-input/password-input.style.cjs +1 -1
  23. package/dist/cjs/components/password-input/password-input.style.cjs.map +1 -1
  24. package/dist/cjs/components/select/select.cjs +1 -1
  25. package/dist/cjs/components/select/select.cjs.map +1 -1
  26. package/dist/cjs/components/sidebar/sidebar.cjs +1 -1
  27. package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
  28. package/dist/cjs/components/table/table.cjs +0 -3
  29. package/dist/cjs/components/table/table.cjs.map +1 -1
  30. package/dist/cjs/core/css/at-rule.cjs.map +1 -1
  31. package/dist/cjs/core/css/color-mix.cjs +1 -1
  32. package/dist/cjs/core/css/color-mix.cjs.map +1 -1
  33. package/dist/cjs/core/css/color-scheme.cjs.map +1 -1
  34. package/dist/cjs/core/css/styles.cjs +92 -92
  35. package/dist/cjs/core/css/styles.cjs.map +1 -1
  36. package/dist/cjs/core/system/var.cjs.map +1 -1
  37. package/dist/cjs/hooks/use-combobox/index.cjs +1 -1
  38. package/dist/cjs/hooks/use-combobox/index.cjs.map +1 -1
  39. package/dist/cjs/hooks/use-local-storage/index.cjs +1 -1
  40. package/dist/cjs/hooks/use-local-storage/index.cjs.map +1 -1
  41. package/dist/cjs/utils/ref.cjs +1 -1
  42. package/dist/cjs/utils/ref.cjs.map +1 -1
  43. package/dist/esm/components/autocomplete/autocomplete.js +1 -1
  44. package/dist/esm/components/autocomplete/autocomplete.js.map +1 -1
  45. package/dist/esm/components/calendar/use-calendar.js.map +1 -1
  46. package/dist/esm/components/chart/chart.js.map +1 -1
  47. package/dist/esm/components/date-picker/date-picker.js +1 -1
  48. package/dist/esm/components/date-picker/date-picker.js.map +1 -1
  49. package/dist/esm/components/drawer/use-drawer.js +1 -1
  50. package/dist/esm/components/drawer/use-drawer.js.map +1 -1
  51. package/dist/esm/components/format/namespace.js.map +1 -1
  52. package/dist/esm/components/group/use-group.js +1 -1
  53. package/dist/esm/components/group/use-group.js.map +1 -1
  54. package/dist/esm/components/indicator/indicator.js +4 -3
  55. package/dist/esm/components/indicator/indicator.js.map +1 -1
  56. package/dist/esm/components/input/use-input-border.js +4 -2
  57. package/dist/esm/components/input/use-input-border.js.map +1 -1
  58. package/dist/esm/components/native-select/native-select.js +1 -1
  59. package/dist/esm/components/native-select/native-select.js.map +1 -1
  60. package/dist/esm/components/native-select/use-native-select.js +1 -1
  61. package/dist/esm/components/native-select/use-native-select.js.map +1 -1
  62. package/dist/esm/components/number-input/number-input.style.js +1 -1
  63. package/dist/esm/components/number-input/number-input.style.js.map +1 -1
  64. package/dist/esm/components/password-input/password-input.style.js +1 -1
  65. package/dist/esm/components/password-input/password-input.style.js.map +1 -1
  66. package/dist/esm/components/select/select.js +1 -1
  67. package/dist/esm/components/select/select.js.map +1 -1
  68. package/dist/esm/components/sidebar/sidebar.js +1 -1
  69. package/dist/esm/components/sidebar/sidebar.js.map +1 -1
  70. package/dist/esm/components/table/table.js +0 -3
  71. package/dist/esm/components/table/table.js.map +1 -1
  72. package/dist/esm/core/css/at-rule.js.map +1 -1
  73. package/dist/esm/core/css/color-mix.js +1 -1
  74. package/dist/esm/core/css/color-mix.js.map +1 -1
  75. package/dist/esm/core/css/color-scheme.js.map +1 -1
  76. package/dist/esm/core/css/styles.js +92 -92
  77. package/dist/esm/core/css/styles.js.map +1 -1
  78. package/dist/esm/core/system/var.js.map +1 -1
  79. package/dist/esm/hooks/use-combobox/index.js +1 -1
  80. package/dist/esm/hooks/use-combobox/index.js.map +1 -1
  81. package/dist/esm/hooks/use-local-storage/index.js +1 -1
  82. package/dist/esm/hooks/use-local-storage/index.js.map +1 -1
  83. package/dist/esm/utils/ref.js +1 -1
  84. package/dist/esm/utils/ref.js.map +1 -1
  85. package/dist/types/components/accordion/accordion.d.ts +2 -2
  86. package/dist/types/components/accordion/use-accordion.d.ts +11 -11
  87. package/dist/types/components/action-bar/action-bar.d.ts +2 -2
  88. package/dist/types/components/airy/airy.d.ts +2 -2
  89. package/dist/types/components/alert/alert.d.ts +2 -2
  90. package/dist/types/components/alpha-slider/alpha-slider.d.ts +2 -2
  91. package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
  92. package/dist/types/components/autocomplete/autocomplete.d.ts +2 -2
  93. package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
  94. package/dist/types/components/autocomplete/use-autocomplete.d.ts +5 -5
  95. package/dist/types/components/avatar/avatar.d.ts +5 -5
  96. package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
  97. package/dist/types/components/badge/badge.d.ts +2 -2
  98. package/dist/types/components/bleed/bleed.d.ts +2 -2
  99. package/dist/types/components/blockquote/blockquote.d.ts +2 -2
  100. package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
  101. package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
  102. package/dist/types/components/button/button.d.ts +2 -2
  103. package/dist/types/components/button/icon-button.d.ts +2 -2
  104. package/dist/types/components/calendar/calendar.d.ts +2 -2
  105. package/dist/types/components/calendar/calendar.style.d.ts +2 -2
  106. package/dist/types/components/calendar/use-calendar.d.ts +9 -9
  107. package/dist/types/components/card/card.d.ts +2 -2
  108. package/dist/types/components/carousel/carousel.d.ts +2 -2
  109. package/dist/types/components/carousel/carousel.style.d.ts +2 -2
  110. package/dist/types/components/carousel/use-carousel.d.ts +3 -3
  111. package/dist/types/components/center/center.d.ts +2 -2
  112. package/dist/types/components/chart/bar-chart.d.ts +2 -2
  113. package/dist/types/components/chart/chart.d.ts +11 -9
  114. package/dist/types/components/chart/composed-chart.d.ts +2 -2
  115. package/dist/types/components/chart/polar-chart.style.d.ts +1 -1
  116. package/dist/types/components/chart/radar-chart.d.ts +2 -2
  117. package/dist/types/components/chart/radial-chart.d.ts +2 -2
  118. package/dist/types/components/chart/use-chart.d.ts +2 -2
  119. package/dist/types/components/checkbox/checkbox.d.ts +5 -5
  120. package/dist/types/components/checkbox/checkbox.style.d.ts +1 -1
  121. package/dist/types/components/checkbox/use-checkbox-group.d.ts +2 -2
  122. package/dist/types/components/checkbox-card/checkbox-card.d.ts +5 -5
  123. package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
  124. package/dist/types/components/circle-progress/circle-progress.d.ts +2 -2
  125. package/dist/types/components/close-button/close-button.d.ts +2 -2
  126. package/dist/types/components/code/code.d.ts +2 -2
  127. package/dist/types/components/collapse/collapse.d.ts +2 -2
  128. package/dist/types/components/color-picker/color-picker.d.ts +2 -2
  129. package/dist/types/components/color-picker/color-picker.style.d.ts +1 -1
  130. package/dist/types/components/color-picker/use-color-picker.d.ts +2 -2
  131. package/dist/types/components/color-selector/color-selector.d.ts +2 -2
  132. package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
  133. package/dist/types/components/color-selector/use-color-selector.d.ts +3 -3
  134. package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
  135. package/dist/types/components/container/container.d.ts +2 -2
  136. package/dist/types/components/data-list/data-list.d.ts +2 -2
  137. package/dist/types/components/data-list/data-list.style.d.ts +1 -1
  138. package/dist/types/components/date-picker/date-picker.d.ts +2 -2
  139. package/dist/types/components/date-picker/use-date-picker.d.ts +4 -4
  140. package/dist/types/components/drawer/drawer.d.ts +2 -2
  141. package/dist/types/components/drawer/drawer.style.d.ts +2 -2
  142. package/dist/types/components/dropzone/dropzone.d.ts +4 -4
  143. package/dist/types/components/editable/editable.d.ts +4 -4
  144. package/dist/types/components/editable/use-editable.d.ts +2 -2
  145. package/dist/types/components/em/em.d.ts +2 -2
  146. package/dist/types/components/empty-state/empty-state.d.ts +2 -2
  147. package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
  148. package/dist/types/components/fade/fade.d.ts +2 -2
  149. package/dist/types/components/field/field.d.ts +3 -3
  150. package/dist/types/components/field/use-field-props.d.ts +3 -3
  151. package/dist/types/components/fieldset/fieldset.d.ts +3 -3
  152. package/dist/types/components/file-button/file-button.d.ts +2 -2
  153. package/dist/types/components/file-button/use-file-button.d.ts +18 -18
  154. package/dist/types/components/file-input/file-input.d.ts +2 -2
  155. package/dist/types/components/file-input/file-input.style.d.ts +1 -1
  156. package/dist/types/components/file-input/use-file-input.d.ts +15 -15
  157. package/dist/types/components/flex/flex.d.ts +2 -2
  158. package/dist/types/components/flip/flip.d.ts +4 -4
  159. package/dist/types/components/float/float.d.ts +2 -2
  160. package/dist/types/components/form/form.d.ts +3 -3
  161. package/dist/types/components/format/format-byte.d.ts +4 -4
  162. package/dist/types/components/format/format-date-time.d.ts +4 -4
  163. package/dist/types/components/format/format-number.d.ts +2 -2
  164. package/dist/types/components/grid/grid-item.d.ts +2 -2
  165. package/dist/types/components/grid/grid.d.ts +2 -2
  166. package/dist/types/components/group/group.d.ts +2 -2
  167. package/dist/types/components/group/use-group.d.ts +2 -2
  168. package/dist/types/components/heading/heading.d.ts +2 -2
  169. package/dist/types/components/hue-slider/hue-slider.d.ts +3 -3
  170. package/dist/types/components/icon/icon.d.ts +5 -5
  171. package/dist/types/components/image/image.d.ts +2 -2
  172. package/dist/types/components/indicator/indicator.d.ts +4 -4
  173. package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
  174. package/dist/types/components/input/input-addon.d.ts +2 -2
  175. package/dist/types/components/input/input-element.d.ts +2 -2
  176. package/dist/types/components/input/input.d.ts +2 -2
  177. package/dist/types/components/input/use-input-border.d.ts +2 -5
  178. package/dist/types/components/kbd/kbd.d.ts +2 -2
  179. package/dist/types/components/link/link.d.ts +2 -2
  180. package/dist/types/components/link-box/link-box.d.ts +2 -2
  181. package/dist/types/components/list/list.d.ts +2 -2
  182. package/dist/types/components/loading/loading-provider.d.ts +2 -2
  183. package/dist/types/components/loading/loading.d.ts +3 -3
  184. package/dist/types/components/mark/mark.d.ts +2 -2
  185. package/dist/types/components/menu/menu.d.ts +2 -2
  186. package/dist/types/components/menu/menu.style.d.ts +2 -2
  187. package/dist/types/components/menu/use-menu.d.ts +11 -11
  188. package/dist/types/components/modal/modal.d.ts +2 -2
  189. package/dist/types/components/modal/modal.style.d.ts +2 -2
  190. package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
  191. package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
  192. package/dist/types/components/native-popover/native-popover.d.ts +2 -2
  193. package/dist/types/components/native-select/native-select.d.ts +2 -2
  194. package/dist/types/components/native-table/native-table.d.ts +4 -4
  195. package/dist/types/components/notice/notice.style.d.ts +1 -1
  196. package/dist/types/components/number-input/number-input.d.ts +2 -2
  197. package/dist/types/components/number-input/number-input.style.d.ts +1 -1
  198. package/dist/types/components/pagination/pagination.d.ts +2 -2
  199. package/dist/types/components/pagination/use-pagination.d.ts +2 -2
  200. package/dist/types/components/password-input/password-input.d.ts +2 -2
  201. package/dist/types/components/password-input/strength-meter.d.ts +2 -2
  202. package/dist/types/components/password-input/strength-meter.style.d.ts +1 -1
  203. package/dist/types/components/password-input/use-password-input.d.ts +2 -2
  204. package/dist/types/components/pin-input/pin-input.d.ts +2 -2
  205. package/dist/types/components/pin-input/use-pin-input.d.ts +7 -7
  206. package/dist/types/components/popover/popover.d.ts +2 -2
  207. package/dist/types/components/progress/progress.d.ts +4 -4
  208. package/dist/types/components/progress/use-progress.d.ts +706 -706
  209. package/dist/types/components/qr-code/qr-code.d.ts +2 -2
  210. package/dist/types/components/radio/radio.d.ts +5 -5
  211. package/dist/types/components/radio/radio.style.d.ts +1 -1
  212. package/dist/types/components/radio/use-radio-group.d.ts +2 -2
  213. package/dist/types/components/radio-card/radio-card.d.ts +5 -5
  214. package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
  215. package/dist/types/components/rating/use-rating.d.ts +7 -7
  216. package/dist/types/components/reorder/reorder.d.ts +2 -2
  217. package/dist/types/components/reorder/reorder.style.d.ts +1 -1
  218. package/dist/types/components/reorder/use-reorder.d.ts +3 -3
  219. package/dist/types/components/resizable/resizable.d.ts +2 -2
  220. package/dist/types/components/resizable/resizable.style.d.ts +2 -2
  221. package/dist/types/components/resizable/use-resizable.d.ts +2 -2
  222. package/dist/types/components/ripple/ripple.d.ts +2 -2
  223. package/dist/types/components/ripple/use-ripple.d.ts +2 -2
  224. package/dist/types/components/rotate/rotate.d.ts +2 -2
  225. package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
  226. package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +2 -2
  227. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  228. package/dist/types/components/segmented-control/segmented-control.d.ts +2 -2
  229. package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
  230. package/dist/types/components/segmented-control/use-segmented-control.d.ts +9 -9
  231. package/dist/types/components/select/select.d.ts +2 -2
  232. package/dist/types/components/select/select.style.d.ts +1 -1
  233. package/dist/types/components/select/use-select.d.ts +4 -4
  234. package/dist/types/components/separator/separator.d.ts +2 -2
  235. package/dist/types/components/sidebar/sidebar.d.ts +2 -2
  236. package/dist/types/components/sidebar/sidebar.style.d.ts +1 -1
  237. package/dist/types/components/sidebar/use-sidebar.d.ts +9 -9
  238. package/dist/types/components/simple-grid/simple-grid.d.ts +2 -2
  239. package/dist/types/components/skeleton/skeleton.d.ts +2 -2
  240. package/dist/types/components/slide/slide.d.ts +2 -2
  241. package/dist/types/components/slide-fade/slide-fade.d.ts +2 -2
  242. package/dist/types/components/slider/slider.d.ts +2 -2
  243. package/dist/types/components/slider/use-slider.d.ts +2 -2
  244. package/dist/types/components/stack/h-stack.d.ts +2 -2
  245. package/dist/types/components/stack/stack.d.ts +2 -2
  246. package/dist/types/components/stack/v-stack.d.ts +2 -2
  247. package/dist/types/components/stack/z-stack.d.ts +2 -2
  248. package/dist/types/components/stat/stat.d.ts +2 -2
  249. package/dist/types/components/status/status.d.ts +2 -2
  250. package/dist/types/components/status/status.style.d.ts +2 -2
  251. package/dist/types/components/steps/steps.d.ts +2 -2
  252. package/dist/types/components/steps/steps.style.d.ts +1 -1
  253. package/dist/types/components/steps/use-steps.d.ts +10 -10
  254. package/dist/types/components/switch/switch.d.ts +2 -2
  255. package/dist/types/components/table/table.d.ts +2 -2
  256. package/dist/types/components/tabs/tabs.d.ts +2 -2
  257. package/dist/types/components/tabs/use-tabs.d.ts +16 -16
  258. package/dist/types/components/tag/tag.d.ts +2 -2
  259. package/dist/types/components/tag/tag.style.d.ts +1 -1
  260. package/dist/types/components/text/text.d.ts +2 -2
  261. package/dist/types/components/textarea/textarea.d.ts +2 -2
  262. package/dist/types/components/textarea/use-autosize.d.ts +2 -2
  263. package/dist/types/components/timeline/timeline.d.ts +5 -5
  264. package/dist/types/components/timeline/timeline.style.d.ts +1 -1
  265. package/dist/types/components/toggle/toggle.d.ts +5 -5
  266. package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
  267. package/dist/types/components/toggle/use-toggle.d.ts +2 -2
  268. package/dist/types/components/tooltip/tooltip.d.ts +2 -2
  269. package/dist/types/components/tree/tree.d.ts +2 -2
  270. package/dist/types/components/tree/tree.style.d.ts +1 -1
  271. package/dist/types/components/tree/use-tree.d.ts +182 -182
  272. package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
  273. package/dist/types/components/wrap/wrap.d.ts +2 -2
  274. package/dist/types/core/components/create-component.d.ts +7 -7
  275. package/dist/types/core/css/index.d.ts +2 -2
  276. package/dist/types/core/css/index.types.d.ts +2 -1
  277. package/dist/types/core/css/styles.d.ts +44 -44
  278. package/dist/types/core/generated-theme-tokens.types.d.ts +17 -17
  279. package/dist/types/core/index.d.ts +2 -2
  280. package/dist/types/core/system/color-mode-provider.d.ts +2 -2
  281. package/dist/types/core/system/storage-script.d.ts +3 -3
  282. package/dist/types/core/system/styled.d.ts +2 -2
  283. package/dist/types/core/system/system-provider.d.ts +2 -2
  284. package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
  285. package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
  286. package/dist/types/hooks/use-combobox/index.d.ts +12 -12
  287. package/dist/types/hooks/use-counter/index.d.ts +2 -2
  288. package/dist/types/hooks/use-descendants/index.d.ts +2 -2
  289. package/dist/types/hooks/use-field-sizing/index.d.ts +2 -2
  290. package/dist/types/hooks/use-hover/index.d.ts +2 -2
  291. package/dist/types/hooks/use-popper/index.d.ts +2 -2
  292. package/dist/types/hooks/use-resize-observer/index.d.ts +3 -3
  293. package/dist/types/index.d.ts +3 -3
  294. package/dist/types/providers/i18n-provider/i18n-provider.d.ts +2 -2
  295. package/dist/types/providers/ui-provider/ui-provider.d.ts +2 -2
  296. package/dist/types/utils/children.d.ts +2 -2
  297. package/package.json +8 -8
@@ -114,7 +114,7 @@ const AutocompleteRoot = withProvider((props) => {
114
114
  css
115
115
  }, getRootProps(groupItemProps), rootProps)(),
116
116
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_popover.PopoverTrigger, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(AutocompleteField, {
117
- ...getFieldProps(varProps),
117
+ ...getFieldProps({ ...varProps }),
118
118
  children: fieldChildren
119
119
  }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_input_element.InputElement, {
120
120
  clickable: clearable && hasValue,
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.cjs","names":["createSlotComponent","autocompleteStyle","XIcon","useGroupItemProps","usePopoverStyleProps","useAutocomplete","createComboboxItem","createComboboxChildren","useInputBorder","ComboboxDescendantsContext","ComboboxContext","AutocompleteContext","mergeProps","useInputPropsContext","ChevronDownIcon","useComboboxGroupContext","useComboboxGroup","ComboboxGroupContext","styled","useAutocompleteOption","CheckIcon","MinusIcon"],"sources":["../../../../src/components/autocomplete/autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ReactElement, ReactNode } from \"react\"\nimport type {\n GenericsComponent,\n HTMLProps,\n HTMLStyledProps,\n ThemeProps,\n} from \"../../core\"\nimport type {\n ComboboxItem,\n UseComboboxGroupProps,\n} from \"../../hooks/use-combobox\"\nimport type { Merge } from \"../../utils\"\nimport type { UseInputBorderProps } from \"../input\"\nimport type { UsePopoverStyleProps, UsePopupAnimationProps } from \"../popover\"\nimport type { AutocompleteStyle } from \"./autocomplete.style\"\nimport type {\n UseAutocompleteOptionProps,\n UseAutocompleteProps,\n UseAutocompleteReturn,\n} from \"./use-autocomplete\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, mergeProps, styled } from \"../../core\"\nimport {\n ComboboxContext,\n ComboboxDescendantsContext,\n ComboboxGroupContext,\n createComboboxChildren,\n createComboboxItem,\n useComboboxGroup,\n useComboboxGroupContext,\n} from \"../../hooks/use-combobox\"\nimport { cast, isArray } from \"../../utils\"\nimport { useGroupItemProps } from \"../group\"\nimport { CheckIcon, ChevronDownIcon, MinusIcon, XIcon } from \"../icon\"\nimport { InputGroup, useInputBorder, useInputPropsContext } from \"../input\"\nimport { Popover, usePopoverStyleProps } from \"../popover\"\nimport { autocompleteStyle } from \"./autocomplete.style\"\nimport {\n AutocompleteContext,\n useAutocomplete,\n useAutocompleteOption,\n} from \"./use-autocomplete\"\n\ninterface ComponentContext\n extends\n Pick<UseAutocompleteReturn, \"getInputProps\" | \"getSeparatorProps\">,\n Pick<\n AutocompleteRootProps,\n \"emptyIcon\" | \"emptyProps\" | \"groupProps\" | \"inputProps\" | \"optionProps\"\n > {}\n\nexport interface AutocompleteRootProps<Multiple extends boolean = false>\n extends\n Omit<\n HTMLStyledProps,\n \"defaultValue\" | \"filter\" | \"offset\" | \"onChange\" | \"ref\" | \"value\"\n >,\n Merge<UseAutocompleteProps<Multiple>, UsePopoverStyleProps>,\n UsePopupAnimationProps,\n ThemeProps<AutocompleteStyle>,\n UseInputBorderProps {\n /**\n * If `true`, display the clear icon.\n *\n * @default true\n */\n clearable?: boolean\n /**\n * The icon to be used in the clear button.\n */\n clearIcon?: ReactNode\n /**\n * The icon to be used in the empty element.\n */\n emptyIcon?: ReactNode\n /**\n * The icon to be used in the autocomplete.\n */\n icon?: ReactNode\n /**\n * Props for content element.\n */\n contentProps?: AutocompleteContentProps\n /**\n * The props for the end element.\n */\n elementProps?: InputGroup.ElementProps\n /**\n * Props for empty element.\n */\n emptyProps?: AutocompleteEmptyProps\n /**\n * Props for group element.\n */\n groupProps?: Omit<AutocompleteGroupProps, \"children\" | \"label\">\n /**\n * Props for icon element.\n */\n iconProps?: AutocompleteIconProps\n /**\n * The props for the input element.\n */\n inputProps?: HTMLStyledProps<\"input\">\n /**\n * Props for option element.\n */\n optionProps?: Omit<AutocompleteOptionProps, \"children\" | \"value\">\n /**\n * Props for root element.\n */\n rootProps?: InputGroup.RootProps\n}\n\nconst {\n ComponentContext,\n PropsContext: AutocompletePropsContext,\n useComponentContext,\n usePropsContext: useAutocompletePropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<\n AutocompleteRootProps,\n AutocompleteStyle,\n ComponentContext\n>(\"autocomplete\", autocompleteStyle)\n\nexport { AutocompletePropsContext, useAutocompletePropsContext }\n\n/**\n * `Autocomplete` is a component used to display suggestions in response to user text input.\n *\n * @see https://yamada-ui.com/docs/components/autocomplete\n */\nexport const AutocompleteRoot = withProvider(\n <Multiple extends boolean = false>(\n props: AutocompleteRootProps<Multiple>,\n ) => {\n const [\n groupItemProps,\n {\n className,\n css,\n colorScheme,\n animationScheme = \"block-start\",\n children,\n clearable = true,\n clearIcon = <XIcon />,\n duration,\n emptyIcon,\n errorBorderColor,\n focusBorderColor,\n icon,\n items: itemsProp,\n contentProps,\n elementProps,\n emptyProps,\n groupProps,\n iconProps,\n inputProps,\n optionProps,\n rootProps,\n ...rest\n },\n ] = useGroupItemProps(props)\n const popoverStyleProps = usePopoverStyleProps(rest)\n const items = useMemo<ComboboxItem[]>(() => {\n if (itemsProp) return itemsProp\n\n return createComboboxItem(children, {\n Group: AutocompleteGroup,\n Label: AutocompleteLabel,\n Option: AutocompleteOption,\n })\n }, [itemsProp, children])\n const {\n children: fieldChildren,\n descendants,\n items: computedItems,\n max,\n value,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onSelect,\n } = useAutocomplete({ items, ...rest, ...popoverStyleProps })\n const mergedPopoverProps = useMemo<Popover.RootProps>(\n () => ({\n animationScheme,\n duration,\n ...popoverProps,\n }),\n [animationScheme, duration, popoverProps],\n )\n const computedChildren = useMemo(\n () =>\n createComboboxChildren(computedItems, {\n Empty: AutocompleteEmpty,\n Group: AutocompleteGroup,\n Option: AutocompleteOption,\n }),\n [computedItems],\n )\n const varProps = useInputBorder({ errorBorderColor, focusBorderColor })\n const comboboxContext = useMemo(\n () => ({ onActiveDescendant, onClose, onSelect }),\n [onActiveDescendant, onClose, onSelect],\n )\n const autocompleteContext = useMemo(() => ({ max, value }), [value, max])\n const componentContext = useMemo(\n () => ({\n emptyIcon,\n emptyProps,\n getInputProps,\n getSeparatorProps,\n groupProps,\n inputProps,\n optionProps,\n }),\n [\n emptyIcon,\n emptyProps,\n getInputProps,\n getSeparatorProps,\n groupProps,\n inputProps,\n optionProps,\n ],\n )\n const hasValue = isArray(value) ? !!value.length : !!value\n\n return (\n <ComboboxDescendantsContext value={descendants}>\n <ComboboxContext value={comboboxContext}>\n <AutocompleteContext value={autocompleteContext}>\n <ComponentContext value={componentContext}>\n <Popover.Root {...mergedPopoverProps}>\n <InputGroup.Root\n colorScheme={colorScheme}\n {...mergeProps(\n { className, css },\n getRootProps(groupItemProps),\n rootProps,\n )()}\n >\n <Popover.Trigger>\n <AutocompleteField {...getFieldProps(varProps)}>\n {fieldChildren}\n </AutocompleteField>\n </Popover.Trigger>\n\n <InputGroup.Element\n {...{ clickable: clearable && hasValue, ...elementProps }}\n >\n {clearable && hasValue ? (\n <AutocompleteIcon\n icon={clearIcon}\n {...getClearIconProps(iconProps)}\n />\n ) : (\n <AutocompleteIcon\n icon={icon}\n {...getIconProps(iconProps)}\n />\n )}\n </InputGroup.Element>\n </InputGroup.Root>\n\n <AutocompleteContent\n {...cast<AutocompleteContentProps>(\n getContentProps(cast<HTMLProps>(contentProps)),\n )}\n >\n {computedChildren}\n </AutocompleteContent>\n </Popover.Root>\n </ComponentContext>\n </AutocompleteContext>\n </ComboboxContext>\n </ComboboxDescendantsContext>\n )\n },\n \"root\",\n)((props) => {\n const context = useInputPropsContext()\n\n return mergeProps(context, props)()\n}) as GenericsComponent<{\n <Multiple extends boolean = false>(\n props: AutocompleteRootProps<Multiple>,\n ): ReactElement\n}>\n\ninterface AutocompleteFieldProps extends HTMLStyledProps {}\n\nconst AutocompleteField = withContext<\"div\", AutocompleteFieldProps>(\n \"div\",\n \"field\",\n)({ \"data-group-propagate\": \"\" }, ({ children, ...rest }) => {\n const { getInputProps, inputProps } = useComponentContext()\n\n return {\n ...rest,\n children: (\n <>\n {children}\n <AutocompleteInput {...getInputProps(inputProps)} />\n </>\n ),\n }\n})\n\ninterface AutocompleteInputProps extends HTMLStyledProps<\"input\"> {}\n\nconst AutocompleteInput = withContext<\"input\", AutocompleteInputProps>(\n \"input\",\n \"input\",\n)()\n\ninterface AutocompleteIconProps extends HTMLStyledProps {\n icon?: ReactNode\n}\n\nconst AutocompleteIcon = withContext<\"div\", AutocompleteIconProps>(\n \"div\",\n \"icon\",\n)(undefined, ({ children, icon, ...rest }) => ({\n children: icon || children || <ChevronDownIcon />,\n ...rest,\n}))\n\ninterface AutocompleteContentProps extends Popover.ContentProps {}\n\nconst AutocompleteContent = withContext<\"div\", AutocompleteContentProps>(\n Popover.Content,\n \"content\",\n)()\n\nexport interface AutocompleteLabelProps extends HTMLStyledProps<\"span\"> {}\n\nexport const AutocompleteLabel = withContext<\"span\", AutocompleteLabelProps>(\n \"span\",\n \"label\",\n)(undefined, (props) => {\n const { getLabelProps } = useComboboxGroupContext()\n\n return getLabelProps(props)\n})\n\nexport interface AutocompleteGroupProps\n extends UseComboboxGroupProps, HTMLStyledProps {\n /**\n * The label of the group.\n */\n label?: ReactNode\n /**\n * Props for the label component.\n */\n labelProps?: AutocompleteLabelProps\n}\n\nexport const AutocompleteGroup = withContext<\"div\", AutocompleteGroupProps>(\n ({ children, label, labelProps, ...rest }) => {\n const { groupProps } = useComponentContext()\n const { getGroupProps, getLabelProps } = useComboboxGroup(\n mergeProps(groupProps, rest)(),\n )\n const context = useMemo(() => ({ getLabelProps }), [getLabelProps])\n\n return (\n <ComboboxGroupContext value={context}>\n <styled.div {...getGroupProps()}>\n {label ? (\n <AutocompleteLabel {...labelProps}>{label}</AutocompleteLabel>\n ) : null}\n {children}\n </styled.div>\n </ComboboxGroupContext>\n )\n },\n \"group\",\n)()\n\nexport interface AutocompleteOptionProps\n extends UseAutocompleteOptionProps, HTMLStyledProps {\n /**\n * The icon to be used in the autocomplete option.\n */\n icon?: ReactNode\n}\n\nexport const AutocompleteOption = withContext<\"div\", AutocompleteOptionProps>(\n ({ children, icon: iconProp, ...rest }) => {\n const { optionProps: { icon, ...optionProps } = {} } = useComponentContext()\n const { getIndicatorProps, getOptionProps } = useAutocompleteOption(\n mergeProps(optionProps, rest)(),\n )\n\n return (\n <styled.div {...getOptionProps()}>\n <AutocompleteIndicator {...getIndicatorProps()}>\n {iconProp ?? icon ?? <CheckIcon />}\n </AutocompleteIndicator>\n {children}\n </styled.div>\n )\n },\n \"option\",\n)()\n\ninterface AutocompleteEmptyProps extends HTMLStyledProps {\n /**\n * The icon to be used in the autocomplete option.\n */\n icon?: ReactNode\n}\n\nconst AutocompleteEmpty = withContext<\"div\", AutocompleteEmptyProps>(\n ({ children, icon, ...rest }) => {\n const { emptyIcon, emptyProps } = useComponentContext()\n\n return (\n <styled.div {...mergeProps(emptyProps, rest)()}>\n <AutocompleteIndicator>\n {icon ?? emptyIcon ?? <MinusIcon />}\n </AutocompleteIndicator>\n {children}\n </styled.div>\n )\n },\n \"empty\",\n)()\n\ninterface AutocompleteIndicatorProps extends HTMLStyledProps {}\n\nconst AutocompleteIndicator = withContext<\"div\", AutocompleteIndicatorProps>(\n \"div\",\n \"indicator\",\n)()\n"],"mappings":"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"}
1
+ {"version":3,"file":"autocomplete.cjs","names":["createSlotComponent","autocompleteStyle","XIcon","useGroupItemProps","usePopoverStyleProps","useAutocomplete","createComboboxItem","createComboboxChildren","useInputBorder","ComboboxDescendantsContext","ComboboxContext","AutocompleteContext","mergeProps","useInputPropsContext","ChevronDownIcon","useComboboxGroupContext","useComboboxGroup","ComboboxGroupContext","styled","useAutocompleteOption","CheckIcon","MinusIcon"],"sources":["../../../../src/components/autocomplete/autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ReactElement, ReactNode } from \"react\"\nimport type {\n GenericsComponent,\n HTMLProps,\n HTMLStyledProps,\n ThemeProps,\n} from \"../../core\"\nimport type {\n ComboboxItem,\n UseComboboxGroupProps,\n} from \"../../hooks/use-combobox\"\nimport type { Merge } from \"../../utils\"\nimport type { UseInputBorderProps } from \"../input\"\nimport type { UsePopoverStyleProps, UsePopupAnimationProps } from \"../popover\"\nimport type { AutocompleteStyle } from \"./autocomplete.style\"\nimport type {\n UseAutocompleteOptionProps,\n UseAutocompleteProps,\n UseAutocompleteReturn,\n} from \"./use-autocomplete\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, mergeProps, styled } from \"../../core\"\nimport {\n ComboboxContext,\n ComboboxDescendantsContext,\n ComboboxGroupContext,\n createComboboxChildren,\n createComboboxItem,\n useComboboxGroup,\n useComboboxGroupContext,\n} from \"../../hooks/use-combobox\"\nimport { cast, isArray } from \"../../utils\"\nimport { useGroupItemProps } from \"../group\"\nimport { CheckIcon, ChevronDownIcon, MinusIcon, XIcon } from \"../icon\"\nimport { InputGroup, useInputBorder, useInputPropsContext } from \"../input\"\nimport { Popover, usePopoverStyleProps } from \"../popover\"\nimport { autocompleteStyle } from \"./autocomplete.style\"\nimport {\n AutocompleteContext,\n useAutocomplete,\n useAutocompleteOption,\n} from \"./use-autocomplete\"\n\ninterface ComponentContext\n extends\n Pick<UseAutocompleteReturn, \"getInputProps\" | \"getSeparatorProps\">,\n Pick<\n AutocompleteRootProps,\n \"emptyIcon\" | \"emptyProps\" | \"groupProps\" | \"inputProps\" | \"optionProps\"\n > {}\n\nexport interface AutocompleteRootProps<Multiple extends boolean = false>\n extends\n Omit<\n HTMLStyledProps,\n \"defaultValue\" | \"filter\" | \"offset\" | \"onChange\" | \"ref\" | \"value\"\n >,\n Merge<UseAutocompleteProps<Multiple>, UsePopoverStyleProps>,\n UsePopupAnimationProps,\n ThemeProps<AutocompleteStyle>,\n UseInputBorderProps {\n /**\n * If `true`, display the clear icon.\n *\n * @default true\n */\n clearable?: boolean\n /**\n * The icon to be used in the clear button.\n */\n clearIcon?: ReactNode\n /**\n * The icon to be used in the empty element.\n */\n emptyIcon?: ReactNode\n /**\n * The icon to be used in the autocomplete.\n */\n icon?: ReactNode\n /**\n * Props for content element.\n */\n contentProps?: AutocompleteContentProps\n /**\n * The props for the end element.\n */\n elementProps?: InputGroup.ElementProps\n /**\n * Props for empty element.\n */\n emptyProps?: AutocompleteEmptyProps\n /**\n * Props for group element.\n */\n groupProps?: Omit<AutocompleteGroupProps, \"children\" | \"label\">\n /**\n * Props for icon element.\n */\n iconProps?: AutocompleteIconProps\n /**\n * The props for the input element.\n */\n inputProps?: HTMLStyledProps<\"input\">\n /**\n * Props for option element.\n */\n optionProps?: Omit<AutocompleteOptionProps, \"children\" | \"value\">\n /**\n * Props for root element.\n */\n rootProps?: InputGroup.RootProps\n}\n\nconst {\n ComponentContext,\n PropsContext: AutocompletePropsContext,\n useComponentContext,\n usePropsContext: useAutocompletePropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<\n AutocompleteRootProps,\n AutocompleteStyle,\n ComponentContext\n>(\"autocomplete\", autocompleteStyle)\n\nexport { AutocompletePropsContext, useAutocompletePropsContext }\n\n/**\n * `Autocomplete` is a component used to display suggestions in response to user text input.\n *\n * @see https://yamada-ui.com/docs/components/autocomplete\n */\nexport const AutocompleteRoot = withProvider(\n <Multiple extends boolean = false>(\n props: AutocompleteRootProps<Multiple>,\n ) => {\n const [\n groupItemProps,\n {\n className,\n css,\n colorScheme,\n animationScheme = \"block-start\",\n children,\n clearable = true,\n clearIcon = <XIcon />,\n duration,\n emptyIcon,\n errorBorderColor,\n focusBorderColor,\n icon,\n items: itemsProp,\n contentProps,\n elementProps,\n emptyProps,\n groupProps,\n iconProps,\n inputProps,\n optionProps,\n rootProps,\n ...rest\n },\n ] = useGroupItemProps(props)\n const popoverStyleProps = usePopoverStyleProps(rest)\n const items = useMemo<ComboboxItem[]>(() => {\n if (itemsProp) return itemsProp\n\n return createComboboxItem(children, {\n Group: AutocompleteGroup,\n Label: AutocompleteLabel,\n Option: AutocompleteOption,\n })\n }, [itemsProp, children])\n const {\n children: fieldChildren,\n descendants,\n items: computedItems,\n max,\n value,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onSelect,\n } = useAutocomplete({ items, ...rest, ...popoverStyleProps })\n const mergedPopoverProps = useMemo<Popover.RootProps>(\n () => ({\n animationScheme,\n duration,\n ...popoverProps,\n }),\n [animationScheme, duration, popoverProps],\n )\n const computedChildren = useMemo(\n () =>\n createComboboxChildren(computedItems, {\n Empty: AutocompleteEmpty,\n Group: AutocompleteGroup,\n Option: AutocompleteOption,\n }),\n [computedItems],\n )\n const varProps = useInputBorder({ errorBorderColor, focusBorderColor })\n const comboboxContext = useMemo(\n () => ({ onActiveDescendant, onClose, onSelect }),\n [onActiveDescendant, onClose, onSelect],\n )\n const autocompleteContext = useMemo(() => ({ max, value }), [value, max])\n const componentContext = useMemo(\n () => ({\n emptyIcon,\n emptyProps,\n getInputProps,\n getSeparatorProps,\n groupProps,\n inputProps,\n optionProps,\n }),\n [\n emptyIcon,\n emptyProps,\n getInputProps,\n getSeparatorProps,\n groupProps,\n inputProps,\n optionProps,\n ],\n )\n const hasValue = isArray(value) ? !!value.length : !!value\n\n return (\n <ComboboxDescendantsContext value={descendants}>\n <ComboboxContext value={comboboxContext}>\n <AutocompleteContext value={autocompleteContext}>\n <ComponentContext value={componentContext}>\n <Popover.Root {...mergedPopoverProps}>\n <InputGroup.Root\n colorScheme={colorScheme}\n {...mergeProps(\n { className, css },\n getRootProps(groupItemProps),\n rootProps,\n )()}\n >\n <Popover.Trigger>\n <AutocompleteField {...getFieldProps({ ...varProps })}>\n {fieldChildren}\n </AutocompleteField>\n </Popover.Trigger>\n\n <InputGroup.Element\n {...{ clickable: clearable && hasValue, ...elementProps }}\n >\n {clearable && hasValue ? (\n <AutocompleteIcon\n icon={clearIcon}\n {...getClearIconProps(iconProps)}\n />\n ) : (\n <AutocompleteIcon\n icon={icon}\n {...getIconProps(iconProps)}\n />\n )}\n </InputGroup.Element>\n </InputGroup.Root>\n\n <AutocompleteContent\n {...cast<AutocompleteContentProps>(\n getContentProps(cast<HTMLProps>(contentProps)),\n )}\n >\n {computedChildren}\n </AutocompleteContent>\n </Popover.Root>\n </ComponentContext>\n </AutocompleteContext>\n </ComboboxContext>\n </ComboboxDescendantsContext>\n )\n },\n \"root\",\n)((props) => {\n const context = useInputPropsContext()\n\n return mergeProps(context, props)()\n}) as GenericsComponent<{\n <Multiple extends boolean = false>(\n props: AutocompleteRootProps<Multiple>,\n ): ReactElement\n}>\n\ninterface AutocompleteFieldProps extends HTMLStyledProps {}\n\nconst AutocompleteField = withContext<\"div\", AutocompleteFieldProps>(\n \"div\",\n \"field\",\n)({ \"data-group-propagate\": \"\" }, ({ children, ...rest }) => {\n const { getInputProps, inputProps } = useComponentContext()\n\n return {\n ...rest,\n children: (\n <>\n {children}\n <AutocompleteInput {...getInputProps(inputProps)} />\n </>\n ),\n }\n})\n\ninterface AutocompleteInputProps extends HTMLStyledProps<\"input\"> {}\n\nconst AutocompleteInput = withContext<\"input\", AutocompleteInputProps>(\n \"input\",\n \"input\",\n)()\n\ninterface AutocompleteIconProps extends HTMLStyledProps {\n icon?: ReactNode\n}\n\nconst AutocompleteIcon = withContext<\"div\", AutocompleteIconProps>(\n \"div\",\n \"icon\",\n)(undefined, ({ children, icon, ...rest }) => ({\n children: icon || children || <ChevronDownIcon />,\n ...rest,\n}))\n\ninterface AutocompleteContentProps extends Popover.ContentProps {}\n\nconst AutocompleteContent = withContext<\"div\", AutocompleteContentProps>(\n Popover.Content,\n \"content\",\n)()\n\nexport interface AutocompleteLabelProps extends HTMLStyledProps<\"span\"> {}\n\nexport const AutocompleteLabel = withContext<\"span\", AutocompleteLabelProps>(\n \"span\",\n \"label\",\n)(undefined, (props) => {\n const { getLabelProps } = useComboboxGroupContext()\n\n return getLabelProps(props)\n})\n\nexport interface AutocompleteGroupProps\n extends UseComboboxGroupProps, HTMLStyledProps {\n /**\n * The label of the group.\n */\n label?: ReactNode\n /**\n * Props for the label component.\n */\n labelProps?: AutocompleteLabelProps\n}\n\nexport const AutocompleteGroup = withContext<\"div\", AutocompleteGroupProps>(\n ({ children, label, labelProps, ...rest }) => {\n const { groupProps } = useComponentContext()\n const { getGroupProps, getLabelProps } = useComboboxGroup(\n mergeProps(groupProps, rest)(),\n )\n const context = useMemo(() => ({ getLabelProps }), [getLabelProps])\n\n return (\n <ComboboxGroupContext value={context}>\n <styled.div {...getGroupProps()}>\n {label ? (\n <AutocompleteLabel {...labelProps}>{label}</AutocompleteLabel>\n ) : null}\n {children}\n </styled.div>\n </ComboboxGroupContext>\n )\n },\n \"group\",\n)()\n\nexport interface AutocompleteOptionProps\n extends UseAutocompleteOptionProps, HTMLStyledProps {\n /**\n * The icon to be used in the autocomplete option.\n */\n icon?: ReactNode\n}\n\nexport const AutocompleteOption = withContext<\"div\", AutocompleteOptionProps>(\n ({ children, icon: iconProp, ...rest }) => {\n const { optionProps: { icon, ...optionProps } = {} } = useComponentContext()\n const { getIndicatorProps, getOptionProps } = useAutocompleteOption(\n mergeProps(optionProps, rest)(),\n )\n\n return (\n <styled.div {...getOptionProps()}>\n <AutocompleteIndicator {...getIndicatorProps()}>\n {iconProp ?? icon ?? <CheckIcon />}\n </AutocompleteIndicator>\n {children}\n </styled.div>\n )\n },\n \"option\",\n)()\n\ninterface AutocompleteEmptyProps extends HTMLStyledProps {\n /**\n * The icon to be used in the autocomplete option.\n */\n icon?: ReactNode\n}\n\nconst AutocompleteEmpty = withContext<\"div\", AutocompleteEmptyProps>(\n ({ children, icon, ...rest }) => {\n const { emptyIcon, emptyProps } = useComponentContext()\n\n return (\n <styled.div {...mergeProps(emptyProps, rest)()}>\n <AutocompleteIndicator>\n {icon ?? emptyIcon ?? <MinusIcon />}\n </AutocompleteIndicator>\n {children}\n </styled.div>\n )\n },\n \"empty\",\n)()\n\ninterface AutocompleteIndicatorProps extends HTMLStyledProps {}\n\nconst AutocompleteIndicator = withContext<\"div\", AutocompleteIndicatorProps>(\n \"div\",\n \"indicator\",\n)()\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-calendar.cjs","names":["DEFAULT_HOLIDAYS: Date[]","DEFAULT_WEEKEND_DAYS: number[]","DEFAULT_FIRST_DAY_OF_WEEK: StartDayOfWeek","DEFAULT_MAX_DATE: Date","DEFAULT_MIN_DATE: Date","weekdays: { label: string; value: number }[]","weeks: { label: string; value: Date }[][]","days: { label: string; value: Date }[]","createDescendants","createContext","useI18n","useDateTimeFormat","value","useControllableState","startOfMonth","yearItems: { label: string; value: string }[]","yearItems","monthItems: { label: string; value: string }[]","month","monthItems","index: null | number","descendant: Descendant<HTMLTableCellElement> | undefined","getRootProps: PropGetter","getNavigationProps: PropGetter<\"nav\">","getYearSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n >","getMonthSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n >","getStatusProps: PropGetter","visuallyHiddenAttributes","getMonthProps: PropGetter<\"table\">","mergeRefs","getWeekdayProps: RequiredPropGetter<\"th\", { value: number }>","getButtonProps: PropGetter<\"button\">","getPrevButtonProps: PropGetter<\"button\">","getNextButtonProps: PropGetter<\"button\">","holiday","selectedValue","ev","calendarProps: (keyof UseCalendarProps)[]","useSplitProps"],"sources":["../../../../src/components/calendar/use-calendar.ts"],"sourcesContent":["\"use client\"\n\nimport type { FocusEvent, KeyboardEvent } from \"react\"\nimport type { HTMLProps, PropGetter, RequiredPropGetter } from \"../../core\"\nimport type { Descendant } from \"../../hooks/use-descendants\"\nimport type { Locale } from \"../../providers/i18n-provider\"\nimport type { AnyString, Dict } from \"../../utils\"\nimport dayjs from \"dayjs\"\nimport { useCallback, useMemo, useRef } from \"react\"\nimport { useSplitProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport const DEFAULT_HOLIDAYS: Date[] = []\nexport const DEFAULT_WEEKEND_DAYS: number[] = [0, 6]\nexport const DEFAULT_FIRST_DAY_OF_WEEK: StartDayOfWeek = \"sunday\"\nexport const DEFAULT_MAX_DATE: Date = new Date(\"2099-12-31\")\nexport const DEFAULT_MIN_DATE: Date = new Date(\"1900-01-01\")\n\nexport type MaybeDate = Date | Date[] | undefined | { end?: Date; start?: Date }\nexport type MaybeDateValue<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> = Range extends true\n ? { end?: Date; start?: Date }\n : Multiple extends true\n ? Date[]\n : Date | undefined\nexport type StartDayOfWeek = \"monday\" | \"sunday\"\nexport interface CalendarFormat {\n day?: Intl.DateTimeFormatOptions[\"day\"] | null\n month?: Intl.DateTimeFormatOptions[\"month\"] | null\n weekday?: Intl.DateTimeFormatOptions[\"weekday\"] | null\n year?: Intl.DateTimeFormatOptions[\"year\"] | null\n}\n\nexport const getStartOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .startOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getEndOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .endOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getWeekdays = (\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: number }[] => {\n let weekdays: { label: string; value: number }[] = []\n\n const date = getStartOfWeek(new Date(), startDayOfWeek)\n\n for (let i = 0; i < 7; i += 1) {\n const label = format(date)\n const value = date.getDay()\n\n weekdays = [...weekdays, { label, value }]\n\n date.setDate(date.getDate() + 1)\n }\n\n return weekdays\n}\n\nexport const getMonthDays = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: Date }[][] => {\n const currentMonth = date.getMonth()\n const startOfMonth = new Date(date.getFullYear(), currentMonth, 1)\n const endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)\n const startDate = getStartOfWeek(startOfMonth, startDayOfWeek)\n const endDate = getEndOfWeek(endOfMonth, startDayOfWeek)\n\n const weeks: { label: string; value: Date }[][] = []\n\n while (startDate <= endDate) {\n const days: { label: string; value: Date }[] = []\n\n for (let i = 0; i < 7; i += 1) {\n const value = new Date(startDate)\n const label = format(value)\n\n days.push({ label, value })\n\n startDate.setDate(startDate.getDate() + 1)\n }\n\n weeks.push(days)\n }\n\n return weeks\n}\n\nexport const isSameYear = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"year\")\n\nexport const isSameMonth = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"month\")\n\nexport const isSameDate = (\n date: Date | undefined,\n comparison: Date | undefined,\n) =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"date\")\n\nexport const isAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"date\")\n\nexport const isBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"date\")\n\nexport const isSameAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isAfter(date, \"date\"))\n\nexport const isSameBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isBefore(date, \"date\"))\n\nexport const isAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"month\")\n\nexport const isBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"month\")\n\nexport const isSameAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isAfter(date, \"month\"))\n\nexport const isSameBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isBefore(date, \"month\"))\n\nexport const isAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"year\")\n\nexport const isBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"year\")\n\nexport const isSameAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isAfter(date, \"year\"))\n\nexport const isSameBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isBefore(date, \"year\"))\n\nexport const isIncludeDates = (comparison: Date, dates: Date[]) =>\n dates.some((date) => dayjs(date).isSame(comparison, \"date\"))\n\nexport const isInRange = (date: Date, minDate?: Date, maxDate?: Date) => {\n const hasMinDate = minDate instanceof Date\n const hasMaxDate = maxDate instanceof Date\n\n if (!hasMaxDate && !hasMinDate) return false\n\n const minInRange = hasMinDate ? isAfterDate(date, minDate) : false\n const maxInRange = hasMaxDate ? isBeforeDate(date, maxDate) : false\n\n return maxInRange && minInRange\n}\n\nexport const sortDates = (dates: Date[], type: \"asc\" | \"desc\" = \"asc\") => {\n if (type === \"asc\") {\n return dates.sort((a, b) => (dayjs(a).isAfter(b, \"date\") ? 1 : -1))\n } else {\n return dates.sort((a, b) => (dayjs(a).isBefore(b, \"date\") ? 1 : -1))\n }\n}\n\nexport const updateMaybeDateValue =\n (value: Date, max?: number) =>\n (prev: MaybeDate): MaybeDate => {\n if (isArray(prev)) {\n if (isIncludeDates(value, prev)) {\n return prev.filter((prevValue) => !isSameDate(prevValue, value))\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, value]\n } else {\n return prev\n }\n } else if (isObject(prev) && !isDate(prev)) {\n const { end, start } = prev\n\n if ((start && end) || !start) {\n return { end: undefined, start: value }\n } else {\n if (isSameDate(start, value)) {\n return { end: undefined, start: undefined }\n } else if (isBeforeDate(value, start)) {\n return { end: start, start: value }\n } else {\n return { end: value, start }\n }\n }\n } else {\n if (isSameDate(prev, value)) {\n return undefined\n } else {\n return value\n }\n }\n }\n\nexport const getAdjustedMonth = (value: MaybeDate, month: Date) => {\n if (isDate(value)) {\n if (!isSameMonth(value, month)) month = dayjs(value).set(\"date\", 1).toDate()\n } else if (isArray(value)) {\n const lastValue = value.at(-1)\n\n if (lastValue && !isSameMonth(lastValue, month))\n month = dayjs(lastValue).set(\"date\", 1).toDate()\n } else if (isObject(value)) {\n if (value.end) {\n month = dayjs(value.end).set(\"date\", 1).toDate()\n } else if (value.start) {\n month = dayjs(value.start).set(\"date\", 1).toDate()\n }\n }\n\n return month\n}\n\nconst {\n DescendantsContext: CalendarDescendantsContext,\n useDescendant: useCalendarDescendant,\n useDescendants: useCalendarDescendants,\n} = createDescendants<HTMLTableCellElement>()\n\nexport {\n CalendarDescendantsContext,\n useCalendarDescendant,\n useCalendarDescendants,\n}\n\ninterface CalendarContext extends Omit<\n UseCalendarReturn,\n | \"descendants\"\n | \"getMonthProps\"\n | \"getMonthSelectProps\"\n | \"getNavigationProps\"\n | \"getNextButtonProps\"\n | \"getPrevButtonProps\"\n | \"getRootProps\"\n | \"getStatusProps\"\n | \"getWeekdayProps\"\n | \"getYearSelectProps\"\n | \"monthDays\"\n | \"monthItems\"\n | \"weekdays\"\n | \"yearItems\"\n> {}\n\nconst [CalendarContext, useCalendarContext] = createContext<CalendarContext>({\n name: \"CalendarContext\",\n})\n\nexport { CalendarContext, useCalendarContext }\n\nexport interface UseCalendarProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> extends Omit<HTMLProps, \"defaultValue\" | \"onChange\"> {\n /**\n * The initial month of the calendar.\n *\n * @default new Date()\n */\n defaultMonth?: Date\n /**\n * The initial value of the calendar.\n */\n defaultValue?: MaybeDateValue<Multiple, Range>\n /**\n * If `true`, disables the calendar.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: CalendarFormat\n /**\n * Define holidays.\n */\n holidays?: Date[]\n /**\n * The locale of the calendar.\n *\n * @default 'en-US'\n */\n locale?: AnyString | Locale\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * The maximum possible date.\n *\n * @default new Date(2099, 11, 31)\n */\n maxDate?: Date\n /**\n * The minimum possible date.\n *\n * @default new Date(1900, 0, 1)\n */\n minDate?: Date\n /**\n * The month of the calendar.\n */\n month?: Date\n /**\n * If `true`, the calendar will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * If `true`, enables date range selection.\n *\n * @default false\n */\n range?: Range\n /**\n * Define the start day of the week.\n *\n * @default 'monday'\n */\n startDayOfWeek?: StartDayOfWeek\n /**\n * If `true`, highlight today.\n *\n * @default true\n */\n today?: boolean\n /**\n * The value of the calendar.\n */\n value?: MaybeDateValue<Multiple, Range>\n /**\n * Define weekend days.\n *\n * @default [0, 6]\n */\n weekendDays?: number[]\n /**\n * Callback function to determine whether the day should be disabled.\n */\n excludeDate?: (date: Date) => boolean\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: MaybeDateValue<Multiple, Range>) => void\n /**\n * The callback invoked when month state changes.\n */\n onChangeMonth?: (value: Date) => void\n}\n\nexport const useCalendar = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n defaultMonth = new Date(),\n multiple = false as Multiple,\n range = false as Range,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled = false,\n excludeDate,\n format: format = {},\n holidays = DEFAULT_HOLIDAYS,\n locale: localeProp,\n max,\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n month: monthProp,\n startDayOfWeek = DEFAULT_FIRST_DAY_OF_WEEK,\n today = true,\n value: valueProp,\n weekendDays = DEFAULT_WEEKEND_DAYS,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n ...rest\n}: UseCalendarProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { locale: defaultLocale, t } = useI18n(\"calendar\")\n const locale = localeProp ?? defaultLocale\n const dateTimeFormat = useDateTimeFormat({ locale })\n const yearFormat = useCallback(\n (value: Date) => {\n if (format.year === null) {\n return value.getFullYear().toString()\n } else {\n const year = format.year ?? \"numeric\"\n\n return dateTimeFormat(value, { year })\n }\n },\n [dateTimeFormat, format.year],\n )\n const monthFormat = useCallback(\n (value: Date) => {\n if (format.month === null) {\n return (value.getMonth() + 1).toString()\n } else {\n const month = format.month ?? \"short\"\n\n return dateTimeFormat(value, { month })\n }\n },\n [dateTimeFormat, format.month],\n )\n const weekdayFormat = useCallback(\n (value: Date) => {\n return dateTimeFormat(value, {\n weekday: format.weekday ?? \"short\",\n })\n },\n [dateTimeFormat, format.weekday],\n )\n const dayFormat = useCallback(\n (value: Date) => {\n if (format.day) {\n return dateTimeFormat(value, {\n day: format.day,\n })\n } else {\n return value.getDate().toString()\n }\n },\n [dateTimeFormat, format.day],\n )\n const descendants = useCalendarDescendants()\n const monthRef = useRef<HTMLTableElement>(null)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n defaultMonth = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) {\n defaultMonth = getAdjustedMonth(valueProp, defaultMonth)\n } else if (defaultValue) {\n defaultMonth = getAdjustedMonth(defaultValue, defaultMonth)\n }\n\n return defaultMonth\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const { endOfMonth, startOfMonth } = useMemo(() => {\n const startOfMonth = dayjs(month).startOf(\"month\").toDate()\n const endOfMonth = dayjs(month).endOf(\"month\").toDate()\n\n return { endOfMonth, startOfMonth }\n }, [month])\n const weekdays = useMemo(\n () => getWeekdays(startDayOfWeek, weekdayFormat),\n [startDayOfWeek, weekdayFormat],\n )\n const monthDays = useMemo(\n () => getMonthDays(month, startDayOfWeek, dayFormat),\n [month, startDayOfWeek, dayFormat],\n )\n const yearItems = useMemo(() => {\n const minYear = dayjs(minDate).year()\n const maxYear = dayjs(maxDate).year()\n const yearItems: { label: string; value: string }[] = []\n\n for (let year = minYear; year <= maxYear; year++) {\n const label = yearFormat(dayjs().set(\"year\", year).toDate())\n const value = year.toString()\n\n yearItems.push({ label, value })\n }\n\n return yearItems\n }, [maxDate, minDate, yearFormat])\n const monthItems = useMemo(() => {\n const monthItems: { label: string; value: string }[] = []\n const date = dayjs(month).toDate()\n\n for (let month = 0; month < 12; month++) {\n date.setMonth(month)\n\n if (isAfterMonth(date, maxDate)) continue\n if (isBeforeMonth(date, minDate)) continue\n\n const label = monthFormat(dayjs().set(\"month\", month).toDate())\n const value = month.toString()\n\n monthItems.push({ label, value })\n }\n\n return monthItems\n }, [month, maxDate, minDate, monthFormat])\n\n const onChange = useCallback(\n (value: Date) => {\n if (isBeforeDate(value, minDate)) return\n if (isAfterDate(value, maxDate)) return\n\n setValue(\n (prev) =>\n updateMaybeDateValue(value, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n },\n [max, maxDate, minDate, setValue],\n )\n\n const onMonthChange = useCallback(\n (month: Date) => {\n if (isAfterMonth(month, maxDate)) {\n setMonth(dayjs(maxDate).set(\"date\", 1).toDate())\n } else if (isBeforeMonth(month, minDate)) {\n setMonth(dayjs(minDate).set(\"date\", 1).toDate())\n } else {\n setMonth((prev) => {\n if (isSameMonth(prev, month)) return prev\n\n return month\n })\n }\n },\n [maxDate, minDate, setMonth],\n )\n\n const onPrevMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, minDate)) return prev\n\n return dayjs(prev).subtract(1, \"month\").toDate()\n })\n }, [minDate, setMonth])\n\n const onNextMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, maxDate)) return prev\n\n return dayjs(prev).add(1, \"month\").toDate()\n })\n }, [maxDate, setMonth])\n\n const onFocus = useCallback(() => {\n let index: null | number = null\n let descendant: Descendant<HTMLTableCellElement> | undefined\n\n if (value) {\n if (isDate(value)) {\n if (isSameMonth(month, new Date())) index = new Date().getDate() - 1\n } else if (isArray(value)) {\n const firstValue = value[0]\n\n if (firstValue && isSameMonth(month, firstValue))\n index = firstValue.getDate() - 1\n } else if (isObject(value)) {\n if (value.start && isSameMonth(month, value.start)) {\n index = value.start.getDate() - 1\n } else if (value.end && isSameMonth(month, value.end)) {\n index = value.end.getDate() - 1\n }\n }\n } else if (isSameMonth(month, new Date())) {\n index = new Date().getDate() - 1\n }\n\n descendant = descendants.value(index)\n\n if (!descendant) descendant = descendants.enabledFirstValue()\n\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n\n if (monthRef.current) monthRef.current.tabIndex = -1\n }, [descendants, month, value])\n\n const onBlur = useCallback((ev: FocusEvent<HTMLTableElement>) => {\n if (contains(monthRef.current, ev.relatedTarget)) return\n\n if (monthRef.current) monthRef.current.tabIndex = 0\n }, [])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value])\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) => ({\n \"data-disabled\": dataAttr(disabled),\n ...rest,\n ...props,\n }),\n [disabled, rest],\n )\n\n const getNavigationProps: PropGetter<\"nav\"> = useCallback(\n (props = {}) => ({ \"data-disabled\": dataAttr(disabled), ...props }),\n [disabled],\n )\n\n const getYearSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the year\"),\n disabled,\n value: dayjs(month).get(\"year\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"year\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getMonthSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the month\"),\n disabled,\n value: dayjs(month).get(\"month\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"month\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getStatusProps: PropGetter = useCallback(\n (props = {}) => ({\n style: visuallyHiddenAttributes.style,\n \"aria-live\": \"polite\",\n children: dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n role: \"status\",\n ...props,\n }),\n [dateTimeFormat, month],\n )\n\n const getMonthProps: PropGetter<\"table\"> = useCallback(\n ({ ref, ...props } = {}) => ({\n ref: mergeRefs(ref, monthRef),\n \"aria-label\": dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n \"aria-multiselectable\": ariaAttr(multiple || range),\n \"data-disabled\": dataAttr(disabled),\n role: \"grid\",\n tabIndex: disabled ? -1 : 0,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onFocus: handlerAll(props.onFocus, onFocus),\n }),\n [dateTimeFormat, disabled, month, multiple, onBlur, onFocus, range],\n )\n\n const getWeekdayProps: RequiredPropGetter<\"th\", { value: number }> =\n useCallback(\n ({ value, ...props }) => ({\n \"data-disabled\": dataAttr(disabled),\n \"data-value\": value.toString(),\n abbr: dateTimeFormat(dayjs().set(\"day\", value).toDate(), {\n weekday: \"long\",\n }),\n ...props,\n }),\n [dateTimeFormat, disabled],\n )\n\n const getButtonProps: PropGetter<\"button\"> = useCallback(\n (props) => ({\n type: \"button\",\n \"data-disabled\": dataAttr(disabled),\n ...props,\n }),\n [disabled],\n )\n\n const getPrevButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the previous month\"),\n disabled: isSameBeforeMonth(month, minDate),\n ...props,\n onClick: handlerAll(props.onClick, onPrevMonth),\n }),\n [getButtonProps, minDate, month, onPrevMonth, t],\n )\n\n const getNextButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the next month\"),\n disabled: isSameAfterMonth(month, maxDate),\n ...props,\n onClick: handlerAll(props.onClick, onNextMonth),\n }),\n [getButtonProps, maxDate, month, onNextMonth, t],\n )\n\n return {\n descendants,\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n monthDays,\n monthItems,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekdays,\n weekendDays,\n yearItems,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getRootProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n }\n}\n\nexport type UseCalendarReturn = ReturnType<typeof useCalendar>\n\nexport interface UseCalendarDayProps extends Omit<HTMLProps<\"td\">, \"value\"> {\n value: Date\n}\n\nexport const useCalendarDay = ({ value, ...rest }: UseCalendarDayProps) => {\n const { t } = useI18n(\"calendar\")\n const {\n disabled: rootDisabled,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n startDayOfWeek,\n today: highlightToday,\n value: selectedValue,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n } = useCalendarContext()\n const dateTimeFormat = useDateTimeFormat({ locale })\n const cellRef = useRef<HTMLTableCellElement>(null)\n const outside = useMemo(() => !isSameMonth(month, value), [month, value])\n const holiday = useMemo(\n () => holidays.some((holiday) => isSameDate(holiday, value)),\n [holidays, value],\n )\n const weekend = useMemo(\n () => weekendDays.includes(value.getDay()),\n [weekendDays, value],\n )\n const today = useMemo(\n () => highlightToday && isSameDate(value, new Date()),\n [highlightToday, value],\n )\n const selected = useMemo(() => {\n if (isDate(selectedValue)) {\n return isSameDate(selectedValue, value)\n } else if (isArray(selectedValue)) {\n return selectedValue.some((selectedValue) =>\n isSameDate(selectedValue, value),\n )\n } else if (isObject(selectedValue)) {\n return (\n isSameDate(selectedValue.start, value) ||\n isSameDate(selectedValue.end, value)\n )\n }\n }, [selectedValue, value])\n const disabled = useMemo(() => {\n if (rootDisabled) return true\n if (isAfterDate(value, maxDate)) return true\n if (isBeforeDate(value, minDate)) return true\n if (excludeDate?.(value)) return true\n if (\n isArray(selectedValue) &&\n isNumber(max) &&\n selectedValue.length >= max &&\n !isIncludeDates(value, selectedValue)\n )\n return true\n\n return false\n }, [excludeDate, max, maxDate, minDate, rootDisabled, selectedValue, value])\n const between = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n return isInRange(value, selectedValue?.start, selectedValue?.end)\n }, [selectedValue, value])\n const startValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, start)\n }, [selectedValue, value])\n const endValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, end)\n }, [selectedValue, value])\n const { descendants, register } = useCalendarDescendant({\n disabled: disabled,\n })\n\n const onFocusDescendant = useCallback(\n (descendant?: Descendant<HTMLTableCellElement>) => {\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n },\n [],\n )\n\n const onBlur = useCallback(() => {\n if (cellRef.current) cellRef.current.tabIndex = -1\n }, [])\n\n const onClick = useCallback(() => {\n if (disabled) return\n\n onChange(value)\n }, [disabled, onChange, value])\n\n const onPrevDate = useCallback(() => {\n const descendant = descendants.enabledPrevValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameBeforeDate(value, minDate)) {\n onPrevMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledLastValue()))\n }\n }, [descendants, minDate, onFocusDescendant, onPrevMonth, value])\n\n const onNextDate = useCallback(() => {\n const descendant = descendants.enabledNextValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameAfterDate(value, maxDate)) {\n onNextMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledFirstValue()))\n }\n }, [descendants, maxDate, onFocusDescendant, onNextMonth, value])\n\n const onPrevTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isBeforeDate(date, minDate)\n ? descendants.enabledFirstValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled) {\n onFocusDescendant(descendants.enabledNextValue(descendant, false))\n } else {\n onFocusDescendant(descendant)\n }\n })\n },\n [descendants, minDate, onFocusDescendant, onMonthChange],\n )\n\n const onNextTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isAfterDate(date, maxDate)\n ? descendants.enabledLastValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled) {\n onFocusDescendant(descendants.enabledPrevValue(descendant, false))\n } else {\n onFocusDescendant(descendant)\n }\n })\n },\n [descendants, maxDate, onFocusDescendant, onMonthChange],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLTableCellElement>) => {\n runKeyAction(ev, {\n ArrowDown: () =>\n onNextTraverseDate(dayjs(value).add(1, \"week\").toDate()),\n ArrowLeft: onPrevDate,\n ArrowRight: onNextDate,\n ArrowUp: () =>\n onPrevTraverseDate(dayjs(value).subtract(1, \"week\").toDate()),\n End: () => onNextTraverseDate(getEndOfWeek(value, startDayOfWeek)),\n Enter: onClick,\n Home: () => onPrevTraverseDate(getStartOfWeek(value, startDayOfWeek)),\n PageDown: (ev) => {\n if (ev.shiftKey) {\n onNextTraverseDate(dayjs(value).add(1, \"year\").toDate())\n } else {\n onNextTraverseDate(dayjs(value).add(1, \"month\").toDate())\n }\n },\n PageUp: (ev) => {\n if (ev.shiftKey) {\n onPrevTraverseDate(dayjs(value).subtract(1, \"year\").toDate())\n } else {\n onPrevTraverseDate(dayjs(value).subtract(1, \"month\").toDate())\n }\n },\n Space: onClick,\n })\n },\n [\n onClick,\n onNextDate,\n onNextTraverseDate,\n onPrevDate,\n onPrevTraverseDate,\n startDayOfWeek,\n value,\n ],\n )\n\n const getDayProps: PropGetter<\"td\"> = useCallback(\n ({ ref, \"aria-label\": ariaLabel, ...props } = {}) => {\n if (!ariaLabel) {\n ariaLabel = dateTimeFormat(dayjs(value).toDate(), {\n day: \"numeric\",\n month: \"long\",\n weekday: \"long\",\n year: \"numeric\",\n })\n\n if (today) ariaLabel = `${t(\"Today\")}, ${ariaLabel}`\n }\n\n return {\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": ariaLabel,\n \"aria-selected\": ariaAttr(selected),\n \"data-between\": dataAttr(between),\n \"data-disabled\": dataAttr(disabled),\n \"data-end\": dataAttr(endValue),\n \"data-holiday\": dataAttr(holiday),\n \"data-outside\": dataAttr(outside),\n \"data-selected\": dataAttr(selected),\n \"data-start\": dataAttr(startValue),\n \"data-today\": dataAttr(today),\n \"data-value\": dayjs(value).format(\"YYYY-MM-DD\"),\n \"data-weekend\": dataAttr(weekend),\n tabIndex: -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, cellRef, outside ? null : register),\n onBlur: handlerAll(props.onBlur, onBlur),\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, (ev) => ev.preventDefault()),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }\n },\n [\n between,\n dateTimeFormat,\n disabled,\n endValue,\n holiday,\n onBlur,\n onClick,\n onKeyDown,\n outside,\n register,\n rest,\n selected,\n startValue,\n t,\n today,\n value,\n weekend,\n ],\n )\n\n return { outside, getDayProps }\n}\n\nexport type UseCalendarDayReturn = ReturnType<typeof useCalendarDay>\n\nconst calendarProps: (keyof UseCalendarProps)[] = [\n \"defaultMonth\",\n \"defaultValue\",\n \"disabled\",\n \"excludeDate\",\n \"format\",\n \"holidays\",\n \"locale\",\n \"max\",\n \"maxDate\",\n \"minDate\",\n \"month\",\n \"range\",\n \"startDayOfWeek\",\n \"today\",\n \"value\",\n \"weekendDays\",\n \"onChange\",\n \"onChangeMonth\",\n]\n\nexport const useCalendarProps = <\n Y extends boolean = false,\n M extends boolean = false,\n D extends Dict = Dict,\n H extends keyof UseCalendarProps<Y, M> = keyof UseCalendarProps<Y, M>,\n>(\n props: D,\n omitKeys?: H[],\n) => {\n return useSplitProps(\n props,\n calendarProps.filter((key) => !omitKeys?.includes(key as H)),\n ) as unknown as [\n keyof UseCalendarProps<Y, M> extends H\n ? UseCalendarProps<Y, M>\n : Omit<UseCalendarProps<Y, M>, H>,\n Omit<\n M,\n keyof UseCalendarProps<Y, M> extends H\n ? keyof UseCalendarProps<Y, M>\n : Exclude<keyof UseCalendarProps<Y, M>, H>\n >,\n ]\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-calendar.cjs","names":["DEFAULT_HOLIDAYS: Date[]","DEFAULT_WEEKEND_DAYS: number[]","DEFAULT_FIRST_DAY_OF_WEEK: StartDayOfWeek","DEFAULT_MAX_DATE: Date","DEFAULT_MIN_DATE: Date","weekdays: { label: string; value: number }[]","weeks: { label: string; value: Date }[][]","days: { label: string; value: Date }[]","createDescendants","createContext","useI18n","useDateTimeFormat","value","useControllableState","startOfMonth","yearItems: { label: string; value: string }[]","yearItems","monthItems: { label: string; value: string }[]","month","monthItems","index: null | number","descendant: Descendant<HTMLTableCellElement> | undefined","getRootProps: PropGetter","getNavigationProps: PropGetter<\"nav\">","getYearSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n >","getMonthSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n >","getStatusProps: PropGetter","visuallyHiddenAttributes","getMonthProps: PropGetter<\"table\">","mergeRefs","getWeekdayProps: RequiredPropGetter<\"th\", { value: number }>","getButtonProps: PropGetter<\"button\">","getPrevButtonProps: PropGetter<\"button\">","getNextButtonProps: PropGetter<\"button\">","holiday","selectedValue","ev","calendarProps: (keyof UseCalendarProps)[]","useSplitProps"],"sources":["../../../../src/components/calendar/use-calendar.ts"],"sourcesContent":["\"use client\"\n\nimport type { FocusEvent, KeyboardEvent } from \"react\"\nimport type { HTMLProps, PropGetter, RequiredPropGetter } from \"../../core\"\nimport type { Descendant } from \"../../hooks/use-descendants\"\nimport type { Locale } from \"../../providers/i18n-provider\"\nimport type { AnyString, Dict } from \"../../utils\"\nimport dayjs from \"dayjs\"\nimport { useCallback, useMemo, useRef } from \"react\"\nimport { useSplitProps } from \"../../core\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { createDescendants } from \"../../hooks/use-descendants\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isDate,\n isNumber,\n isObject,\n mergeRefs,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useDateTimeFormat } from \"../format\"\n\nexport const DEFAULT_HOLIDAYS: Date[] = []\nexport const DEFAULT_WEEKEND_DAYS: number[] = [0, 6]\nexport const DEFAULT_FIRST_DAY_OF_WEEK: StartDayOfWeek = \"sunday\"\nexport const DEFAULT_MAX_DATE: Date = new Date(\"2099-12-31\")\nexport const DEFAULT_MIN_DATE: Date = new Date(\"1900-01-01\")\n\nexport type MaybeDate = Date | Date[] | undefined | { end?: Date; start?: Date }\nexport type MaybeDateValue<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> = Range extends true\n ? { end?: Date; start?: Date }\n : Multiple extends true\n ? Date[]\n : Date | undefined\nexport type StartDayOfWeek = \"monday\" | \"sunday\"\nexport interface CalendarFormat {\n day?: Intl.DateTimeFormatOptions[\"day\"] | null\n month?: Intl.DateTimeFormatOptions[\"month\"] | null\n weekday?: Intl.DateTimeFormatOptions[\"weekday\"] | null\n year?: Intl.DateTimeFormatOptions[\"year\"] | null\n}\n\nexport const getStartOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .startOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getEndOfWeek = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n): Date =>\n dayjs(date)\n .subtract(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .endOf(\"week\")\n .add(startDayOfWeek === \"monday\" ? 1 : 0, \"day\")\n .toDate()\n\nexport const getWeekdays = (\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: number }[] => {\n let weekdays: { label: string; value: number }[] = []\n\n const date = getStartOfWeek(new Date(), startDayOfWeek)\n\n for (let i = 0; i < 7; i += 1) {\n const label = format(date)\n const value = date.getDay()\n\n weekdays = [...weekdays, { label, value }]\n\n date.setDate(date.getDate() + 1)\n }\n\n return weekdays\n}\n\nexport const getMonthDays = (\n date: Date,\n startDayOfWeek: StartDayOfWeek,\n format: (value: Date) => string,\n): { label: string; value: Date }[][] => {\n const currentMonth = date.getMonth()\n const startOfMonth = new Date(date.getFullYear(), currentMonth, 1)\n const endOfMonth = new Date(date.getFullYear(), date.getMonth() + 1, 0)\n const startDate = getStartOfWeek(startOfMonth, startDayOfWeek)\n const endDate = getEndOfWeek(endOfMonth, startDayOfWeek)\n\n const weeks: { label: string; value: Date }[][] = []\n\n while (startDate <= endDate) {\n const days: { label: string; value: Date }[] = []\n\n for (let i = 0; i < 7; i += 1) {\n const value = new Date(startDate)\n const label = format(value)\n\n days.push({ label, value })\n\n startDate.setDate(startDate.getDate() + 1)\n }\n\n weeks.push(days)\n }\n\n return weeks\n}\n\nexport const isSameYear = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"year\")\n\nexport const isSameMonth = (\n date: Date | undefined,\n comparison: Date | undefined,\n): boolean =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"month\")\n\nexport const isSameDate = (\n date: Date | undefined,\n comparison: Date | undefined,\n) =>\n date instanceof Date &&\n comparison instanceof Date &&\n dayjs(date).isSame(comparison, \"date\")\n\nexport const isAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"date\")\n\nexport const isBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"date\")\n\nexport const isSameAfterDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isAfter(date, \"date\"))\n\nexport const isSameBeforeDate = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"date\") || dayjs(value).isBefore(date, \"date\"))\n\nexport const isAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"month\")\n\nexport const isBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"month\")\n\nexport const isSameAfterMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isAfter(date, \"month\"))\n\nexport const isSameBeforeMonth = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"month\") || dayjs(value).isBefore(date, \"month\"))\n\nexport const isAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isAfter(date, \"year\")\n\nexport const isBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date && dayjs(value).isBefore(date, \"year\")\n\nexport const isSameAfterYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isAfter(date, \"year\"))\n\nexport const isSameBeforeYear = (value: Date, date: Date | undefined) =>\n date instanceof Date &&\n (dayjs(date).isSame(value, \"year\") || dayjs(value).isBefore(date, \"year\"))\n\nexport const isIncludeDates = (comparison: Date, dates: Date[]) =>\n dates.some((date) => dayjs(date).isSame(comparison, \"date\"))\n\nexport const isInRange = (date: Date, minDate?: Date, maxDate?: Date) => {\n const hasMinDate = minDate instanceof Date\n const hasMaxDate = maxDate instanceof Date\n\n if (!hasMaxDate && !hasMinDate) return false\n\n const minInRange = hasMinDate ? isAfterDate(date, minDate) : false\n const maxInRange = hasMaxDate ? isBeforeDate(date, maxDate) : false\n\n return maxInRange && minInRange\n}\n\nexport const sortDates = (dates: Date[], type: \"asc\" | \"desc\" = \"asc\") => {\n if (type === \"asc\") {\n return dates.sort((a, b) => (dayjs(a).isAfter(b, \"date\") ? 1 : -1))\n } else {\n return dates.sort((a, b) => (dayjs(a).isBefore(b, \"date\") ? 1 : -1))\n }\n}\n\nexport const updateMaybeDateValue =\n (value: Date, max?: number) =>\n (prev: MaybeDate): MaybeDate => {\n if (isArray(prev)) {\n if (isIncludeDates(value, prev)) {\n return prev.filter((prevValue) => !isSameDate(prevValue, value))\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, value]\n } else {\n return prev\n }\n } else if (isObject(prev) && !isDate(prev)) {\n const { end, start } = prev\n\n if ((start && end) || !start) {\n return { end: undefined, start: value }\n } else {\n if (isSameDate(start, value)) {\n return { end: undefined, start: undefined }\n } else if (isBeforeDate(value, start)) {\n return { end: start, start: value }\n } else {\n return { end: value, start }\n }\n }\n } else {\n if (isSameDate(prev, value)) {\n return undefined\n } else {\n return value\n }\n }\n }\n\nexport const getAdjustedMonth = (value: MaybeDate, month: Date) => {\n if (isDate(value)) {\n if (!isSameMonth(value, month)) month = dayjs(value).set(\"date\", 1).toDate()\n } else if (isArray(value)) {\n const lastValue = value.at(-1)\n\n if (lastValue && !isSameMonth(lastValue, month))\n month = dayjs(lastValue).set(\"date\", 1).toDate()\n } else if (isObject(value)) {\n if (value.end) {\n month = dayjs(value.end).set(\"date\", 1).toDate()\n } else if (value.start) {\n month = dayjs(value.start).set(\"date\", 1).toDate()\n }\n }\n\n return month\n}\n\nconst {\n DescendantsContext: CalendarDescendantsContext,\n useDescendant: useCalendarDescendant,\n useDescendants: useCalendarDescendants,\n} = createDescendants<HTMLTableCellElement>()\n\nexport {\n CalendarDescendantsContext,\n useCalendarDescendant,\n useCalendarDescendants,\n}\n\ninterface CalendarContext extends Omit<\n UseCalendarReturn,\n | \"descendants\"\n | \"getMonthProps\"\n | \"getMonthSelectProps\"\n | \"getNavigationProps\"\n | \"getNextButtonProps\"\n | \"getPrevButtonProps\"\n | \"getRootProps\"\n | \"getStatusProps\"\n | \"getWeekdayProps\"\n | \"getYearSelectProps\"\n | \"monthDays\"\n | \"monthItems\"\n | \"weekdays\"\n | \"yearItems\"\n> {}\n\nconst [CalendarContext, useCalendarContext] = createContext<CalendarContext>({\n name: \"CalendarContext\",\n})\n\nexport { CalendarContext, useCalendarContext }\n\nexport interface UseCalendarProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n> extends Omit<HTMLProps, \"defaultValue\" | \"onChange\"> {\n /**\n * The initial month of the calendar.\n *\n * @default new Date()\n */\n defaultMonth?: Date\n /**\n * The initial value of the calendar.\n */\n defaultValue?: MaybeDateValue<Multiple, Range>\n /**\n * If `true`, disables the calendar.\n *\n * @default false\n */\n disabled?: boolean\n /**\n * The format used for conversion.\n * Check the docs to see the format of possible modifiers you can pass.\n *\n * @see https://day.js.org/docs/en/display/format#list-of-localized-formats\n */\n format?: CalendarFormat\n /**\n * Define holidays.\n */\n holidays?: Date[]\n /**\n * The locale of the calendar.\n *\n * @default 'en-US'\n */\n locale?: AnyString | Locale\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * The maximum possible date.\n *\n * @default new Date(2099, 11, 31)\n */\n maxDate?: Date\n /**\n * The minimum possible date.\n *\n * @default new Date(1900, 0, 1)\n */\n minDate?: Date\n /**\n * The month of the calendar.\n */\n month?: Date\n /**\n * If `true`, the calendar will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * If `true`, enables date range selection.\n *\n * @default false\n */\n range?: Range\n /**\n * Define the start day of the week.\n *\n * @default 'monday'\n */\n startDayOfWeek?: StartDayOfWeek\n /**\n * If `true`, highlight today.\n *\n * @default true\n */\n today?: boolean\n /**\n * The value of the calendar.\n */\n value?: MaybeDateValue<Multiple, Range>\n /**\n * Define weekend days.\n *\n * @default [0, 6]\n */\n weekendDays?: number[]\n /**\n * Callback function to determine whether the day should be disabled.\n */\n excludeDate?: (date: Date) => boolean\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: MaybeDateValue<Multiple, Range>) => void\n /**\n * The callback invoked when month state changes.\n */\n onChangeMonth?: (value: Date) => void\n}\n\nexport const useCalendar = <\n Multiple extends boolean = false,\n Range extends boolean = false,\n>({\n defaultMonth = new Date(),\n multiple = false as Multiple,\n range = false as Range,\n defaultValue = (range\n ? { end: undefined, start: undefined }\n : multiple\n ? []\n : undefined) as MaybeDateValue<Multiple, Range>,\n disabled = false,\n excludeDate,\n format = {},\n holidays = DEFAULT_HOLIDAYS,\n locale: localeProp,\n max,\n maxDate = DEFAULT_MAX_DATE,\n minDate = DEFAULT_MIN_DATE,\n month: monthProp,\n startDayOfWeek = DEFAULT_FIRST_DAY_OF_WEEK,\n today = true,\n value: valueProp,\n weekendDays = DEFAULT_WEEKEND_DAYS,\n onChange: onChangeProp,\n onChangeMonth: onChangeMonthProp,\n ...rest\n}: UseCalendarProps<Multiple, Range> = {}) => {\n if (dayjs(minDate).isAfter(dayjs(maxDate))) maxDate = minDate\n\n const { locale: defaultLocale, t } = useI18n(\"calendar\")\n const locale = localeProp ?? defaultLocale\n const dateTimeFormat = useDateTimeFormat({ locale })\n const yearFormat = useCallback(\n (value: Date) => {\n if (format.year === null) {\n return value.getFullYear().toString()\n } else {\n const year = format.year ?? \"numeric\"\n\n return dateTimeFormat(value, { year })\n }\n },\n [dateTimeFormat, format.year],\n )\n const monthFormat = useCallback(\n (value: Date) => {\n if (format.month === null) {\n return (value.getMonth() + 1).toString()\n } else {\n const month = format.month ?? \"short\"\n\n return dateTimeFormat(value, { month })\n }\n },\n [dateTimeFormat, format.month],\n )\n const weekdayFormat = useCallback(\n (value: Date) => {\n return dateTimeFormat(value, {\n weekday: format.weekday ?? \"short\",\n })\n },\n [dateTimeFormat, format.weekday],\n )\n const dayFormat = useCallback(\n (value: Date) => {\n if (format.day) {\n return dateTimeFormat(value, {\n day: format.day,\n })\n } else {\n return value.getDate().toString()\n }\n },\n [dateTimeFormat, format.day],\n )\n const descendants = useCalendarDescendants()\n const monthRef = useRef<HTMLTableElement>(null)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [month, setMonth] = useControllableState({\n defaultValue: () => {\n if (dayjs(minDate).isAfter(dayjs(defaultMonth)))\n defaultMonth = dayjs(minDate).set(\"date\", 1).toDate()\n\n if (valueProp) {\n defaultMonth = getAdjustedMonth(valueProp, defaultMonth)\n } else if (defaultValue) {\n defaultMonth = getAdjustedMonth(defaultValue, defaultMonth)\n }\n\n return defaultMonth\n },\n value: monthProp,\n onChange: onChangeMonthProp,\n })\n const { endOfMonth, startOfMonth } = useMemo(() => {\n const startOfMonth = dayjs(month).startOf(\"month\").toDate()\n const endOfMonth = dayjs(month).endOf(\"month\").toDate()\n\n return { endOfMonth, startOfMonth }\n }, [month])\n const weekdays = useMemo(\n () => getWeekdays(startDayOfWeek, weekdayFormat),\n [startDayOfWeek, weekdayFormat],\n )\n const monthDays = useMemo(\n () => getMonthDays(month, startDayOfWeek, dayFormat),\n [month, startDayOfWeek, dayFormat],\n )\n const yearItems = useMemo(() => {\n const minYear = dayjs(minDate).year()\n const maxYear = dayjs(maxDate).year()\n const yearItems: { label: string; value: string }[] = []\n\n for (let year = minYear; year <= maxYear; year++) {\n const label = yearFormat(dayjs().set(\"year\", year).toDate())\n const value = year.toString()\n\n yearItems.push({ label, value })\n }\n\n return yearItems\n }, [maxDate, minDate, yearFormat])\n const monthItems = useMemo(() => {\n const monthItems: { label: string; value: string }[] = []\n const date = dayjs(month).toDate()\n\n for (let month = 0; month < 12; month++) {\n date.setMonth(month)\n\n if (isAfterMonth(date, maxDate)) continue\n if (isBeforeMonth(date, minDate)) continue\n\n const label = monthFormat(dayjs().set(\"month\", month).toDate())\n const value = month.toString()\n\n monthItems.push({ label, value })\n }\n\n return monthItems\n }, [month, maxDate, minDate, monthFormat])\n\n const onChange = useCallback(\n (value: Date) => {\n if (isBeforeDate(value, minDate)) return\n if (isAfterDate(value, maxDate)) return\n\n setValue(\n (prev) =>\n updateMaybeDateValue(value, max)(prev) as MaybeDateValue<\n Multiple,\n Range\n >,\n )\n },\n [max, maxDate, minDate, setValue],\n )\n\n const onMonthChange = useCallback(\n (month: Date) => {\n if (isAfterMonth(month, maxDate)) {\n setMonth(dayjs(maxDate).set(\"date\", 1).toDate())\n } else if (isBeforeMonth(month, minDate)) {\n setMonth(dayjs(minDate).set(\"date\", 1).toDate())\n } else {\n setMonth((prev) => {\n if (isSameMonth(prev, month)) return prev\n\n return month\n })\n }\n },\n [maxDate, minDate, setMonth],\n )\n\n const onPrevMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, minDate)) return prev\n\n return dayjs(prev).subtract(1, \"month\").toDate()\n })\n }, [minDate, setMonth])\n\n const onNextMonth = useCallback(() => {\n setMonth((prev) => {\n if (isSameMonth(prev, maxDate)) return prev\n\n return dayjs(prev).add(1, \"month\").toDate()\n })\n }, [maxDate, setMonth])\n\n const onFocus = useCallback(() => {\n let index: null | number = null\n let descendant: Descendant<HTMLTableCellElement> | undefined\n\n if (value) {\n if (isDate(value)) {\n if (isSameMonth(month, new Date())) index = new Date().getDate() - 1\n } else if (isArray(value)) {\n const firstValue = value[0]\n\n if (firstValue && isSameMonth(month, firstValue))\n index = firstValue.getDate() - 1\n } else if (isObject(value)) {\n if (value.start && isSameMonth(month, value.start)) {\n index = value.start.getDate() - 1\n } else if (value.end && isSameMonth(month, value.end)) {\n index = value.end.getDate() - 1\n }\n }\n } else if (isSameMonth(month, new Date())) {\n index = new Date().getDate() - 1\n }\n\n descendant = descendants.value(index)\n\n if (!descendant) descendant = descendants.enabledFirstValue()\n\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n\n if (monthRef.current) monthRef.current.tabIndex = -1\n }, [descendants, month, value])\n\n const onBlur = useCallback((ev: FocusEvent<HTMLTableElement>) => {\n if (contains(monthRef.current, ev.relatedTarget)) return\n\n if (monthRef.current) monthRef.current.tabIndex = 0\n }, [])\n\n useUpdateEffect(() => {\n setMonth((prev) => getAdjustedMonth(value, prev))\n }, [value])\n\n const getRootProps: PropGetter = useCallback(\n (props = {}) => ({\n \"data-disabled\": dataAttr(disabled),\n ...rest,\n ...props,\n }),\n [disabled, rest],\n )\n\n const getNavigationProps: PropGetter<\"nav\"> = useCallback(\n (props = {}) => ({ \"data-disabled\": dataAttr(disabled), ...props }),\n [disabled],\n )\n\n const getYearSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the year\"),\n disabled,\n value: dayjs(month).get(\"year\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"year\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getMonthSelectProps: PropGetter<\n \"div\",\n { value?: string; onChange?: (value: string) => void },\n { value?: string; onChange?: (value: string) => void }\n > = useCallback(\n (props = {}) => ({\n \"aria-label\": t(\"Choose the month\"),\n disabled,\n value: dayjs(month).get(\"month\").toString(),\n ...props,\n onChange: handlerAll(props.onChange, (value) =>\n onMonthChange(dayjs(month).set(\"month\", parseInt(value)).toDate()),\n ),\n }),\n [disabled, month, onMonthChange, t],\n )\n\n const getStatusProps: PropGetter = useCallback(\n (props = {}) => ({\n style: visuallyHiddenAttributes.style,\n \"aria-live\": \"polite\",\n children: dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n role: \"status\",\n ...props,\n }),\n [dateTimeFormat, month],\n )\n\n const getMonthProps: PropGetter<\"table\"> = useCallback(\n ({ ref, ...props } = {}) => ({\n ref: mergeRefs(ref, monthRef),\n \"aria-label\": dateTimeFormat(dayjs(month).toDate(), {\n month: \"long\",\n year: \"numeric\",\n }),\n \"aria-multiselectable\": ariaAttr(multiple || range),\n \"data-disabled\": dataAttr(disabled),\n role: \"grid\",\n tabIndex: disabled ? -1 : 0,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onFocus: handlerAll(props.onFocus, onFocus),\n }),\n [dateTimeFormat, disabled, month, multiple, onBlur, onFocus, range],\n )\n\n const getWeekdayProps: RequiredPropGetter<\"th\", { value: number }> =\n useCallback(\n ({ value, ...props }) => ({\n \"data-disabled\": dataAttr(disabled),\n \"data-value\": value.toString(),\n abbr: dateTimeFormat(dayjs().set(\"day\", value).toDate(), {\n weekday: \"long\",\n }),\n ...props,\n }),\n [dateTimeFormat, disabled],\n )\n\n const getButtonProps: PropGetter<\"button\"> = useCallback(\n (props) => ({\n type: \"button\",\n \"data-disabled\": dataAttr(disabled),\n ...props,\n }),\n [disabled],\n )\n\n const getPrevButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the previous month\"),\n disabled: isSameBeforeMonth(month, minDate),\n ...props,\n onClick: handlerAll(props.onClick, onPrevMonth),\n }),\n [getButtonProps, minDate, month, onPrevMonth, t],\n )\n\n const getNextButtonProps: PropGetter<\"button\"> = useCallback(\n (props = {}) =>\n getButtonProps({\n \"aria-label\": t(\"Go to the next month\"),\n disabled: isSameAfterMonth(month, maxDate),\n ...props,\n onClick: handlerAll(props.onClick, onNextMonth),\n }),\n [getButtonProps, maxDate, month, onNextMonth, t],\n )\n\n return {\n descendants,\n disabled,\n endOfMonth,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n monthDays,\n monthItems,\n multiple,\n range,\n startDayOfWeek,\n startOfMonth,\n today,\n value,\n weekdays,\n weekendDays,\n yearItems,\n getMonthProps,\n getMonthSelectProps,\n getNavigationProps,\n getNextButtonProps,\n getPrevButtonProps,\n getRootProps,\n getStatusProps,\n getWeekdayProps,\n getYearSelectProps,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n }\n}\n\nexport type UseCalendarReturn = ReturnType<typeof useCalendar>\n\nexport interface UseCalendarDayProps extends Omit<HTMLProps<\"td\">, \"value\"> {\n value: Date\n}\n\nexport const useCalendarDay = ({ value, ...rest }: UseCalendarDayProps) => {\n const { t } = useI18n(\"calendar\")\n const {\n disabled: rootDisabled,\n excludeDate,\n holidays,\n locale,\n max,\n maxDate,\n minDate,\n month,\n startDayOfWeek,\n today: highlightToday,\n value: selectedValue,\n weekendDays,\n onChange,\n onMonthChange,\n onNextMonth,\n onPrevMonth,\n } = useCalendarContext()\n const dateTimeFormat = useDateTimeFormat({ locale })\n const cellRef = useRef<HTMLTableCellElement>(null)\n const outside = useMemo(() => !isSameMonth(month, value), [month, value])\n const holiday = useMemo(\n () => holidays.some((holiday) => isSameDate(holiday, value)),\n [holidays, value],\n )\n const weekend = useMemo(\n () => weekendDays.includes(value.getDay()),\n [weekendDays, value],\n )\n const today = useMemo(\n () => highlightToday && isSameDate(value, new Date()),\n [highlightToday, value],\n )\n const selected = useMemo(() => {\n if (isDate(selectedValue)) {\n return isSameDate(selectedValue, value)\n } else if (isArray(selectedValue)) {\n return selectedValue.some((selectedValue) =>\n isSameDate(selectedValue, value),\n )\n } else if (isObject(selectedValue)) {\n return (\n isSameDate(selectedValue.start, value) ||\n isSameDate(selectedValue.end, value)\n )\n }\n }, [selectedValue, value])\n const disabled = useMemo(() => {\n if (rootDisabled) return true\n if (isAfterDate(value, maxDate)) return true\n if (isBeforeDate(value, minDate)) return true\n if (excludeDate?.(value)) return true\n if (\n isArray(selectedValue) &&\n isNumber(max) &&\n selectedValue.length >= max &&\n !isIncludeDates(value, selectedValue)\n )\n return true\n\n return false\n }, [excludeDate, max, maxDate, minDate, rootDisabled, selectedValue, value])\n const between = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n return isInRange(value, selectedValue?.start, selectedValue?.end)\n }, [selectedValue, value])\n const startValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, start)\n }, [selectedValue, value])\n const endValue = useMemo(() => {\n if (isDate(selectedValue) || isArray(selectedValue)) return false\n\n const { end, start } = selectedValue ?? {}\n\n return start && end && isSameDate(value, end)\n }, [selectedValue, value])\n const { descendants, register } = useCalendarDescendant({\n disabled: disabled,\n })\n\n const onFocusDescendant = useCallback(\n (descendant?: Descendant<HTMLTableCellElement>) => {\n if (!descendant) return\n\n descendant.node.focus()\n descendant.node.tabIndex = 0\n },\n [],\n )\n\n const onBlur = useCallback(() => {\n if (cellRef.current) cellRef.current.tabIndex = -1\n }, [])\n\n const onClick = useCallback(() => {\n if (disabled) return\n\n onChange(value)\n }, [disabled, onChange, value])\n\n const onPrevDate = useCallback(() => {\n const descendant = descendants.enabledPrevValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameBeforeDate(value, minDate)) {\n onPrevMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledLastValue()))\n }\n }, [descendants, minDate, onFocusDescendant, onPrevMonth, value])\n\n const onNextDate = useCallback(() => {\n const descendant = descendants.enabledNextValue(cellRef.current, false)\n\n if (descendant) {\n onFocusDescendant(descendant)\n } else if (!isSameAfterDate(value, maxDate)) {\n onNextMonth()\n\n setTimeout(() => onFocusDescendant(descendants.enabledFirstValue()))\n }\n }, [descendants, maxDate, onFocusDescendant, onNextMonth, value])\n\n const onPrevTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isBeforeDate(date, minDate)\n ? descendants.enabledFirstValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled) {\n onFocusDescendant(descendants.enabledNextValue(descendant, false))\n } else {\n onFocusDescendant(descendant)\n }\n })\n },\n [descendants, minDate, onFocusDescendant, onMonthChange],\n )\n\n const onNextTraverseDate = useCallback(\n (date: Date) => {\n onMonthChange(dayjs(date).set(\"date\", 1).toDate())\n\n setTimeout(() => {\n const descendant = isAfterDate(date, maxDate)\n ? descendants.enabledLastValue()\n : descendants.value(date.getDate() - 1)\n\n if (!descendant) return\n\n if (descendant.disabled) {\n onFocusDescendant(descendants.enabledPrevValue(descendant, false))\n } else {\n onFocusDescendant(descendant)\n }\n })\n },\n [descendants, maxDate, onFocusDescendant, onMonthChange],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLTableCellElement>) => {\n runKeyAction(ev, {\n ArrowDown: () =>\n onNextTraverseDate(dayjs(value).add(1, \"week\").toDate()),\n ArrowLeft: onPrevDate,\n ArrowRight: onNextDate,\n ArrowUp: () =>\n onPrevTraverseDate(dayjs(value).subtract(1, \"week\").toDate()),\n End: () => onNextTraverseDate(getEndOfWeek(value, startDayOfWeek)),\n Enter: onClick,\n Home: () => onPrevTraverseDate(getStartOfWeek(value, startDayOfWeek)),\n PageDown: (ev) => {\n if (ev.shiftKey) {\n onNextTraverseDate(dayjs(value).add(1, \"year\").toDate())\n } else {\n onNextTraverseDate(dayjs(value).add(1, \"month\").toDate())\n }\n },\n PageUp: (ev) => {\n if (ev.shiftKey) {\n onPrevTraverseDate(dayjs(value).subtract(1, \"year\").toDate())\n } else {\n onPrevTraverseDate(dayjs(value).subtract(1, \"month\").toDate())\n }\n },\n Space: onClick,\n })\n },\n [\n onClick,\n onNextDate,\n onNextTraverseDate,\n onPrevDate,\n onPrevTraverseDate,\n startDayOfWeek,\n value,\n ],\n )\n\n const getDayProps: PropGetter<\"td\"> = useCallback(\n ({ ref, \"aria-label\": ariaLabel, ...props } = {}) => {\n if (!ariaLabel) {\n ariaLabel = dateTimeFormat(dayjs(value).toDate(), {\n day: \"numeric\",\n month: \"long\",\n weekday: \"long\",\n year: \"numeric\",\n })\n\n if (today) ariaLabel = `${t(\"Today\")}, ${ariaLabel}`\n }\n\n return {\n \"aria-disabled\": ariaAttr(disabled),\n \"aria-label\": ariaLabel,\n \"aria-selected\": ariaAttr(selected),\n \"data-between\": dataAttr(between),\n \"data-disabled\": dataAttr(disabled),\n \"data-end\": dataAttr(endValue),\n \"data-holiday\": dataAttr(holiday),\n \"data-outside\": dataAttr(outside),\n \"data-selected\": dataAttr(selected),\n \"data-start\": dataAttr(startValue),\n \"data-today\": dataAttr(today),\n \"data-value\": dayjs(value).format(\"YYYY-MM-DD\"),\n \"data-weekend\": dataAttr(weekend),\n tabIndex: -1,\n ...rest,\n ...props,\n ref: mergeRefs(ref, cellRef, outside ? null : register),\n onBlur: handlerAll(props.onBlur, onBlur),\n onClick: handlerAll(props.onClick, onClick),\n onFocus: handlerAll(props.onFocus, (ev) => ev.preventDefault()),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }\n },\n [\n between,\n dateTimeFormat,\n disabled,\n endValue,\n holiday,\n onBlur,\n onClick,\n onKeyDown,\n outside,\n register,\n rest,\n selected,\n startValue,\n t,\n today,\n value,\n weekend,\n ],\n )\n\n return { outside, getDayProps }\n}\n\nexport type UseCalendarDayReturn = ReturnType<typeof useCalendarDay>\n\nconst calendarProps: (keyof UseCalendarProps)[] = [\n \"defaultMonth\",\n \"defaultValue\",\n \"disabled\",\n \"excludeDate\",\n \"format\",\n \"holidays\",\n \"locale\",\n \"max\",\n \"maxDate\",\n \"minDate\",\n \"month\",\n \"range\",\n \"startDayOfWeek\",\n \"today\",\n \"value\",\n \"weekendDays\",\n \"onChange\",\n \"onChangeMonth\",\n]\n\nexport const useCalendarProps = <\n Y extends boolean = false,\n M extends boolean = false,\n D extends Dict = Dict,\n H extends keyof UseCalendarProps<Y, M> = keyof UseCalendarProps<Y, M>,\n>(\n props: D,\n omitKeys?: H[],\n) => {\n return useSplitProps(\n props,\n calendarProps.filter((key) => !omitKeys?.includes(key as H)),\n ) as unknown as [\n keyof UseCalendarProps<Y, M> extends H\n ? UseCalendarProps<Y, M>\n : Omit<UseCalendarProps<Y, M>, H>,\n Omit<\n M,\n keyof UseCalendarProps<Y, M> extends H\n ? keyof UseCalendarProps<Y, M>\n : Exclude<keyof UseCalendarProps<Y, M>, H>\n >,\n ]\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"chart.cjs","names":["createSlotComponent","chartStyle","useChart","useSplitChildren","ChartContext","styled","ResponsiveContainer","Fragment","varAttr","createContext","mergeProps","useChartLegend","Legend","useChartTooltip","Tooltip","useChartLabelList","LabelList","useChartLabel","Label"],"sources":["../../../../src/components/chart/chart.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n JSXElementConstructor,\n PropsWithChildren,\n ReactElement,\n ReactNode,\n RefObject,\n} from \"react\"\nimport type {\n ActiveDotProps,\n DataKey,\n DefaultLegendContentProps,\n DotItemDotProps,\n DotProps,\n LabelProps,\n RenderableText,\n ResponsiveContainerProps,\n TooltipContentProps,\n TooltipProps,\n} from \"recharts\"\nimport type { CSSProps, HTMLStyledProps, ThemeProps } from \"../../core\"\nimport type { Dict, Merge } from \"../../utils\"\nimport type { ChartStyle } from \"./chart.style\"\nimport type {\n UseChartLabelListProps,\n UseChartLabelProps,\n UseChartLegendProps,\n UseChartLegendReturn,\n UseChartTooltipProps,\n} from \"./use-chart\"\nimport { Fragment, isValidElement, useMemo, useRef } from \"react\"\nimport {\n Label,\n LabelList,\n Legend,\n ResponsiveContainer,\n Tooltip,\n} from \"recharts\"\nimport { createSlotComponent, mergeProps, styled, varAttr } from \"../../core\"\nimport {\n cast,\n createContext,\n isArray,\n isNull,\n isNumber,\n isObject,\n isString,\n isUndefined,\n useSplitChildren,\n} from \"../../utils\"\nimport { chartStyle } from \"./chart.style\"\nimport {\n ChartContext,\n useChart,\n useChartLabel,\n useChartLabelList,\n useChartLegend,\n useChartTooltip,\n} from \"./use-chart\"\n\nexport type ChartDot =\n | ((props: DotItemDotProps) => ReactNode)\n | boolean\n | Merge<Partial<DotProps>, HTMLStyledProps<\"circle\">>\n | ReactElement\n\nexport type ChartActiveDot =\n | ((props: ActiveDotProps) => ReactNode)\n | boolean\n | Merge<Partial<ActiveDotProps>, HTMLStyledProps<\"circle\">>\n | ReactElement\n\nexport type ChartLabel =\n | ((props: any) => ReactElement | RenderableText)\n | boolean\n | (Merge<\n HTMLStyledProps<\"text\">,\n Pick<\n LabelProps,\n | \"angle\"\n | \"content\"\n | \"formatter\"\n | \"index\"\n | \"labelRef\"\n | \"offset\"\n | \"parentViewBox\"\n | \"position\"\n | \"textBreakAll\"\n | \"value\"\n | \"viewBox\"\n | \"zIndex\"\n >\n > & { dataKey?: DataKey<any> })\n | number\n | ReactElement\n | string\n\nexport type ChartLabelList =\n | ((props: LabelProps) => ReactElement | RenderableText)\n | boolean\n | ChartLabelListProps\n | ReactElement\n\nexport type ChartTickLine = boolean | HTMLStyledProps<\"line\">\n\nexport type GradientStrategy = \"invert\" | \"shade\" | \"tint\"\n\nexport function mergeSeries<Y>(\n series: Y[],\n color: CSSProps[\"color\"] = \"mono\",\n strategy: GradientStrategy = \"invert\",\n): (Y & { color: CSSProps[\"color\"] })[] {\n const colors = gradients(series.length, color, strategy)\n\n return series.map((item, index) => ({ ...item, color: colors[index] }))\n}\n\nexport function mergeData<Y>(\n data: Y[],\n color: CSSProps[\"fill\"] = \"mono\",\n strategy: GradientStrategy = \"invert\",\n): (Y & { fill: CSSProps[\"fill\"] })[] {\n const colors = gradients(data.length, color, strategy)\n\n return data.map((item, index) => ({ ...item, fill: colors[index] }))\n}\n\nexport function gradients(\n length: number,\n color: CSSProps[\"color\"] = \"mono\",\n strategy: GradientStrategy = \"invert\",\n): CSSProps[\"color\"][] {\n return Array.from({ length }, (_, index) => {\n const value = Math.floor(100 - (100 / length) * index)\n const percent = `${value}%`\n\n if (strategy === \"invert\") {\n return [\n `tint(colors.${color}, ${percent})`,\n `shade(colors.${color}, ${percent})`,\n ]\n } else {\n return `${strategy}(colors.${color}, ${percent})`\n }\n })\n}\n\nfunction parseJSON(value: any) {\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\ninterface ComponentContext extends Pick<\n ChartProps,\n \"legendProps\" | \"tooltipProps\"\n> {\n nameKeyRef: RefObject<string | undefined>\n}\n\nexport interface ChartProps extends HTMLStyledProps, ThemeProps<ChartStyle> {\n /**\n * The components to render the chart components.\n */\n components: {\n component: JSXElementConstructor<any>\n fallback: ReactNode\n }[]\n /**\n * The function to render the chart.\n */\n render: (props: PropsWithChildren) => ReactNode\n /**\n * The color of the label list.\n */\n labelListColor?: CSSProps[\"color\"]\n /**\n * The fill of the label list.\n */\n labelListFill?: CSSProps[\"fill\"]\n /**\n * The fill of the tooltip cursor.\n */\n tooltipCursorFill?: CSSProps[\"fill\"]\n /**\n * The fill opacity of the tooltip cursor.\n */\n tooltipCursorFillOpacity?: CSSProps[\"fillOpacity\"]\n /**\n * The stroke of the tooltip cursor.\n */\n tooltipCursorStroke?: CSSProps[\"stroke\"]\n /**\n * If `true`, legend is visible.\n *\n * @default false\n */\n withLegend?: boolean\n /**\n * If `true`, tooltip is visible.\n *\n * @default true\n */\n withTooltip?: boolean\n /**\n * Props for the legend component.\n */\n legendProps?: ChartLegendProps\n /**\n * Props for the responsive container component.\n */\n responsiveContainerProps?: ResponsiveContainerProps\n /**\n * Props for the tooltip component.\n */\n tooltipProps?: ChartTooltipProps\n}\n\nconst {\n ComponentContext,\n PropsContext: ChartPropsContext,\n useComponentContext: useChartComponentContext,\n usePropsContext: useChartPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<ChartProps, ChartStyle, ComponentContext>(\n \"chart\",\n chartStyle,\n)\n\nexport { ChartPropsContext, useChartComponentContext, useChartPropsContext }\n\nexport const Chart = withProvider(\n ({\n children,\n components: componentsProp,\n render,\n withLegend = false,\n withTooltip = true,\n legendProps,\n responsiveContainerProps,\n tooltipProps,\n ...rest\n }: ChartProps) => {\n const { highlightedDataKey, onHighlight } = useChart()\n const nameKeyRef = useRef<string | undefined>(undefined)\n const components = useMemo(\n () => [\n ...componentsProp,\n {\n component: ChartLegend,\n fallback: withLegend ? <ChartLegend /> : null,\n },\n {\n component: ChartTooltip,\n fallback: withTooltip ? <ChartTooltip /> : null,\n },\n ],\n [componentsProp, withLegend, withTooltip],\n )\n const [omittedChildren, ...customComponents] = useSplitChildren(\n children,\n ...components.map(({ component }) => component),\n )\n const context = useMemo(\n () => ({\n highlightedDataKey,\n onHighlight,\n }),\n [highlightedDataKey, onHighlight],\n )\n const componentContext = useMemo(\n () => ({\n nameKeyRef,\n legendProps,\n tooltipProps,\n }),\n [legendProps, tooltipProps],\n )\n\n return (\n <ChartContext value={context}>\n <ComponentContext value={componentContext}>\n <styled.div {...rest}>\n <ResponsiveContainer {...responsiveContainerProps}>\n {render({\n children: (\n <>\n {components.map(({ fallback }, index) => (\n <Fragment key={index}>\n {customComponents[index] ?? fallback}\n </Fragment>\n ))}\n\n {omittedChildren}\n </>\n ),\n })}\n </ResponsiveContainer>\n </styled.div>\n </ComponentContext>\n </ChartContext>\n )\n },\n \"root\",\n)(\n undefined,\n ({\n labelListColor,\n labelListFill,\n tooltipCursorFill,\n tooltipCursorFillOpacity,\n tooltipCursorStroke,\n ...rest\n }) => ({\n \"--label-list-color\": varAttr(labelListColor, \"colors\"),\n \"--label-list-fill\": varAttr(labelListFill, \"colors\"),\n \"--tooltip-cursor-fill\": varAttr(tooltipCursorFill, \"colors\"),\n \"--tooltip-cursor-fill-opacity\": tooltipCursorFillOpacity,\n \"--tooltip-cursor-stroke\": varAttr(tooltipCursorStroke, \"colors\"),\n ...rest,\n }),\n)\n\ninterface ChartLegendContext extends Pick<\n UseChartLegendReturn,\n \"getLegendItemProps\"\n> {}\n\nconst [ChartLegendContext, useChartLegendContext] =\n createContext<ChartLegendContext>({\n name: \"ChartLegendContext\",\n })\n\nexport interface ChartLegendProps extends Merge<\n HTMLStyledProps,\n UseChartLegendProps\n> {\n /**\n * Props for the content component.\n */\n contentProps?: Omit<ChartLegendContentProps, \"formatter\" | \"payload\">\n}\n\nexport const ChartLegend = withContext<\"div\", ChartLegendProps>((props) => {\n const { legendProps } = useChartComponentContext()\n const { contentProps, ...rest } = mergeProps(legendProps, props)()\n const {\n getLegendContentProps,\n getLegendItemProps,\n getLegendProps,\n getRootProps,\n } = useChartLegend({\n content: ({ formatter, payload }) => (\n <ChartLegendContent\n formatter={formatter}\n payload={payload}\n {...getLegendContentProps(contentProps)}\n />\n ),\n ...rest,\n })\n const context = useMemo(() => ({ getLegendItemProps }), [getLegendItemProps])\n\n return (\n <ChartLegendContext value={context}>\n <styled.div asChild {...getRootProps()}>\n <Legend {...getLegendProps()} />\n </styled.div>\n </ChartLegendContext>\n )\n}, \"legend\")()\n\ninterface ChartLegendContentProps\n extends\n HTMLStyledProps,\n Pick<DefaultLegendContentProps, \"formatter\" | \"payload\"> {\n /**\n * If `true`, swatch is visible.\n */\n withSwatch?: boolean\n}\n\nconst ChartLegendContent = withContext<\"div\", ChartLegendContentProps>(\n ({ formatter, payload, withSwatch = true, ...rest }) => {\n const { nameKeyRef } = useChartComponentContext()\n const { getLegendItemProps } = useChartLegendContext()\n\n return (\n <styled.div {...rest}>\n {payload?.map((data, index) => {\n let value = data.value\n\n if (nameKeyRef.current)\n value = (data.payload as any)?.[nameKeyRef.current]\n\n const dataKey =\n isString(data.dataKey) || isNumber(data.dataKey)\n ? data.dataKey\n : value\n const color = parseJSON(data.color)\n const formattedValue = formatter?.(value, data, index) ?? value\n\n return (\n <ChartLegendItem key={index} {...getLegendItemProps({ dataKey })}>\n {withSwatch ? <ChartLegendSwatch bg={color} /> : null}\n <ChartLegendValue>{formattedValue}</ChartLegendValue>\n </ChartLegendItem>\n )\n })}\n </styled.div>\n )\n },\n \"legendContent\",\n)()\n\ninterface ChartLegendItemProps extends HTMLStyledProps {}\n\nconst ChartLegendItem = withContext<\"div\", ChartLegendItemProps>(\n \"div\",\n \"legendItem\",\n)()\n\ninterface ChartLegendSwatchProps extends HTMLStyledProps {}\n\nconst ChartLegendSwatch = withContext<\"div\", ChartLegendSwatchProps>(\n \"div\",\n \"legendSwatch\",\n)()\n\ninterface ChartLegendValueProps extends HTMLStyledProps<\"span\"> {}\n\nconst ChartLegendValue = withContext<\"span\", ChartLegendValueProps>(\n \"span\",\n \"legendValue\",\n)()\n\nexport interface ChartTooltipProps<\n Y extends (number | string)[] | number | string = number,\n M extends number | string = string,\n> extends Omit<Merge<HTMLStyledProps, UseChartTooltipProps<Y, M>>, \"cursor\"> {\n /**\n * Props for the cursor component.\n */\n cursor?: boolean | ChartTooltipCursorProps | ReactElement\n /**\n * Props for the content component.\n */\n contentProps?: Omit<\n ChartTooltipContentProps,\n \"formatter\" | \"label\" | \"labelFormatter\" | \"payload\"\n >\n}\n\nexport const ChartTooltip = <\n Y extends (number | string)[] | number | string,\n M extends number | string,\n>(\n props: ChartTooltipProps<Y, M>,\n) => {\n const { tooltipProps } = useChartComponentContext()\n const {\n cursor = false,\n contentProps,\n ...rest\n } = {\n ...tooltipProps,\n ...props,\n } as ChartTooltipProps<Y, M>\n const { getContentProps, getRootProps } = useChartTooltip<Y, M>({\n content: ({ formatter, label, labelFormatter, payload }) => (\n <ChartTooltipContent\n formatter={formatter}\n label={label}\n labelFormatter={labelFormatter}\n payload={payload}\n {...getContentProps(contentProps)}\n />\n ),\n cursor:\n isValidElement(cursor) || !cursor ? (\n cursor\n ) : (\n <ChartTooltipCursor {...(isObject(cursor) ? cursor : {})} />\n ),\n ...rest,\n })\n\n return <Tooltip {...cast<TooltipProps>(getRootProps())} />\n}\n\ninterface ChartTooltipCursorProps extends Omit<\n HTMLStyledProps<\"path\">,\n \"height\" | \"points\" | \"width\"\n> {\n brushBottom?: number\n height?: number\n payload?: Dict[]\n payloadIndex?: number\n points?: { x: number; y: number }[]\n width?: number\n}\n\nconst ChartTooltipCursor = withContext<\"path\", ChartTooltipCursorProps>(\n \"path\",\n \"tooltipCursor\",\n)(\n undefined,\n ({\n bottom: _bottom,\n brushBottom: _brushBottom,\n fill,\n height,\n left: _left,\n payload: _payload,\n payloadIndex: _payloadIndex,\n points,\n right: _right,\n stroke,\n top: _top,\n width,\n x,\n y,\n ...rest\n }) => {\n const d = points\n ? `M${points[0]?.x},${points[0]?.y}L${points[1]?.x},${points[1]?.y}`\n : `M ${x},${y} h ${width} v ${height} h -${width} Z`\n return {\n asChild: true,\n children: <path d={d} height={height} width={width} />,\n fill: fill === \"#ccc\" ? undefined : fill,\n stroke: stroke === \"#ccc\" ? undefined : stroke,\n ...rest,\n }\n },\n)\n\ninterface ChartTooltipContentProps\n extends\n HTMLStyledProps,\n Pick<\n TooltipContentProps<any, any>,\n \"formatter\" | \"label\" | \"labelFormatter\" | \"payload\"\n > {\n /**\n * If `true`, swatch is visible.\n */\n withSwatch?: boolean\n}\n\nconst ChartTooltipContent = withContext<\"div\", ChartTooltipContentProps>(\n ({\n formatter,\n label: labelProp,\n labelFormatter,\n payload,\n withSwatch = true,\n ...rest\n }) => {\n const { nameKeyRef } = useChartComponentContext()\n const label = labelFormatter\n ? labelFormatter(labelProp, payload)\n : labelProp\n\n return (\n <styled.div {...rest}>\n {!isUndefined(label) && !isNull(label) ? (\n <ChartTooltipLabel>{label}</ChartTooltipLabel>\n ) : null}\n\n <ChartTooltipList>\n {payload.map((data, index) => {\n if (nameKeyRef.current) data.name = data.payload[nameKeyRef.current]\n\n const color = parseJSON(data.color) || data.payload.fill\n const result =\n formatter?.(data.value, data.name, data, index, payload) ??\n (isArray(data.value) ? data.value.join(\", \") : data.value)\n const [value, name] = isArray(result) ? result : [result, data.name]\n\n return (\n <ChartTooltipItem key={index}>\n {withSwatch ? <ChartTooltipSwatch bg={color} /> : null}\n <ChartTooltipName>{name}</ChartTooltipName>\n <ChartTooltipValue>{value}</ChartTooltipValue>\n </ChartTooltipItem>\n )\n })}\n </ChartTooltipList>\n </styled.div>\n )\n },\n \"tooltipContent\",\n)()\n\ninterface ChartTooltipLabel extends HTMLStyledProps<\"p\"> {}\n\nconst ChartTooltipLabel = withContext<\"p\", ChartTooltipLabel>(\n \"p\",\n \"tooltipLabel\",\n)()\n\ninterface ChartTooltipList extends HTMLStyledProps {}\n\nconst ChartTooltipList = withContext<\"div\", ChartTooltipList>(\n \"div\",\n \"tooltipList\",\n)()\n\ninterface ChartTooltipItem extends HTMLStyledProps {}\n\nconst ChartTooltipItem = withContext<\"div\", ChartTooltipItem>(\n \"div\",\n \"tooltipItem\",\n)()\n\ninterface ChartTooltipSwatch extends HTMLStyledProps {}\n\nconst ChartTooltipSwatch = withContext<\"div\", ChartTooltipSwatch>(\n \"div\",\n \"tooltipSwatch\",\n)()\n\ninterface ChartTooltipName extends HTMLStyledProps<\"span\"> {}\n\nconst ChartTooltipName = withContext<\"span\", ChartTooltipName>(\n \"span\",\n \"tooltipName\",\n)()\n\ninterface ChartTooltipValue extends HTMLStyledProps<\"span\"> {}\n\nconst ChartTooltipValue = withContext<\"span\", ChartTooltipValue>(\n \"span\",\n \"tooltipValue\",\n)()\n\nexport interface ChartLabelListProps extends Merge<\n HTMLStyledProps<\"text\">,\n UseChartLabelListProps\n> {}\n\nexport const ChartLabelList = withContext<\"text\", ChartLabelListProps>(\n (props) => {\n const { getLabelListProps, getRootProps } = useChartLabelList(props)\n\n return (\n <styled.text asChild {...getRootProps()}>\n <LabelList {...getLabelListProps()} />\n </styled.text>\n )\n },\n \"labelList\",\n)()\n\nexport interface ChartLabelProps extends Merge<\n HTMLStyledProps<\"text\">,\n UseChartLabelProps\n> {}\n\nexport const ChartLabel = withContext<\"text\", ChartLabelProps>((props) => {\n const { getLabelProps, getRootProps } = useChartLabel(props)\n\n return (\n <styled.text asChild {...getRootProps()}>\n <Label {...getLabelProps()} />\n </styled.text>\n )\n}, \"label\")()\n"],"mappings":";;;;;;;;;;;;;;;;;;AA4GA,SAAgB,YACd,QACA,QAA2B,QAC3B,WAA6B,UACS;CACtC,MAAM,SAAS,UAAU,OAAO,QAAQ,OAAO,SAAS;AAExD,QAAO,OAAO,KAAK,MAAM,WAAW;EAAE,GAAG;EAAM,OAAO,OAAO;EAAQ,EAAE;;AAGzE,SAAgB,UACd,MACA,QAA0B,QAC1B,WAA6B,UACO;CACpC,MAAM,SAAS,UAAU,KAAK,QAAQ,OAAO,SAAS;AAEtD,QAAO,KAAK,KAAK,MAAM,WAAW;EAAE,GAAG;EAAM,MAAM,OAAO;EAAQ,EAAE;;AAGtE,SAAgB,UACd,QACA,QAA2B,QAC3B,WAA6B,UACR;AACrB,QAAO,MAAM,KAAK,EAAE,QAAQ,GAAG,GAAG,UAAU;EAE1C,MAAM,UAAU,GADF,KAAK,MAAM,MAAO,MAAM,SAAU,MAAM,CAC7B;AAEzB,MAAI,aAAa,SACf,QAAO,CACL,eAAe,MAAM,IAAI,QAAQ,IACjC,gBAAgB,MAAM,IAAI,QAAQ,GACnC;MAED,QAAO,GAAG,SAAS,UAAU,MAAM,IAAI,QAAQ;GAEjD;;AAGJ,SAAS,UAAU,OAAY;AAC7B,KAAI;AACF,SAAO,KAAK,MAAM,MAAM;SAClB;AACN,SAAO;;;AAqEX,MAAM,EACJ,kBACA,cAAc,mBACd,qBAAqB,0BACrB,iBAAiB,sBACjB,aACA,iBACEA,6CACF,SACAC,+BACD;AAID,MAAa,QAAQ,cAClB,EACC,UACA,YAAY,gBACZ,QACA,aAAa,OACb,cAAc,MACd,aACA,0BACA,cACA,GAAG,WACa;CAChB,MAAM,EAAE,oBAAoB,gBAAgBC,4BAAU;CACtD,MAAM,+BAAwC,OAAU;CACxD,MAAM,sCACE;EACJ,GAAG;EACH;GACE,WAAW;GACX,UAAU,aAAa,2CAAC,gBAAc,GAAG;GAC1C;EACD;GACE,WAAW;GACX,UAAU,cAAc,2CAAC,iBAAe,GAAG;GAC5C;EACF,EACD;EAAC;EAAgB;EAAY;EAAY,CAC1C;CACD,MAAM,CAAC,iBAAiB,GAAG,oBAAoBC,kCAC7C,UACA,GAAG,WAAW,KAAK,EAAE,gBAAgB,UAAU,CAChD;AAiBD,QACE,2CAACC;EAAa,iCAhBP;GACL;GACA;GACD,GACD,CAAC,oBAAoB,YAAY,CAClC;YAYG,2CAAC;GAAiB,iCAVb;IACL;IACA;IACA;IACD,GACD,CAAC,aAAa,aAAa,CAC5B;aAKK,2CAACC,uBAAO;IAAI,GAAI;cACd,2CAACC;KAAoB,GAAI;eACtB,OAAO,EACN,UACE,qFACG,WAAW,KAAK,EAAE,YAAY,UAC7B,2CAACC,4BACE,iBAAiB,UAAU,YADf,MAEJ,CACX,EAED,mBACA,EAEN,CAAC;MACkB;KACX;IACI;GACN;GAGnB,OACD,CACC,SACC,EACC,gBACA,eACA,mBACA,0BACA,qBACA,GAAG,YACE;CACL,sBAAsBC,oBAAQ,gBAAgB,SAAS;CACvD,qBAAqBA,oBAAQ,eAAe,SAAS;CACrD,yBAAyBA,oBAAQ,mBAAmB,SAAS;CAC7D,iCAAiC;CACjC,2BAA2BA,oBAAQ,qBAAqB,SAAS;CACjE,GAAG;CACJ,EACF;AAOD,MAAM,CAAC,oBAAoB,yBACzBC,8BAAkC,EAChC,MAAM,sBACP,CAAC;AAYJ,MAAa,cAAc,aAAsC,UAAU;CACzE,MAAM,EAAE,gBAAgB,0BAA0B;CAClD,MAAM,EAAE,cAAc,GAAG,SAASC,yBAAW,aAAa,MAAM,EAAE;CAClE,MAAM,EACJ,uBACA,oBACA,gBACA,iBACEC,iCAAe;EACjB,UAAU,EAAE,WAAW,cACrB,2CAAC;GACY;GACF;GACT,GAAI,sBAAsB,aAAa;IACvC;EAEJ,GAAG;EACJ,CAAC;AAGF,QACE,2CAAC;EAAmB,iCAHS,EAAE,oBAAoB,GAAG,CAAC,mBAAmB,CAAC;YAIzE,2CAACN,uBAAO;GAAI;GAAQ,GAAI,cAAc;aACpC,2CAACO,mBAAO,GAAI,gBAAgB,GAAI;IACrB;GACM;GAEtB,SAAS,EAAE;AAYd,MAAM,qBAAqB,aACxB,EAAE,WAAW,SAAS,aAAa,MAAM,GAAG,WAAW;CACtD,MAAM,EAAE,eAAe,0BAA0B;CACjD,MAAM,EAAE,uBAAuB,uBAAuB;AAEtD,QACE,2CAACP,uBAAO;EAAI,GAAI;YACb,SAAS,KAAK,MAAM,UAAU;GAC7B,IAAI,QAAQ,KAAK;AAEjB,OAAI,WAAW,QACb,SAAS,KAAK,UAAkB,WAAW;GAE7C,MAAM,0DACK,KAAK,QAAQ,oDAAa,KAAK,QAAQ,GAC5C,KAAK,UACL;GACN,MAAM,QAAQ,UAAU,KAAK,MAAM;GACnC,MAAM,iBAAiB,YAAY,OAAO,MAAM,MAAM,IAAI;AAE1D,UACE,4CAAC;IAA4B,GAAI,mBAAmB,EAAE,SAAS,CAAC;eAC7D,aAAa,2CAAC,qBAAkB,IAAI,QAAS,GAAG,MACjD,2CAAC,8BAAkB,iBAAkC;MAFjC,MAGJ;IAEpB;GACS;GAGjB,gBACD,EAAE;AAIH,MAAM,kBAAkB,YACtB,OACA,aACD,EAAE;AAIH,MAAM,oBAAoB,YACxB,OACA,eACD,EAAE;AAIH,MAAM,mBAAmB,YACvB,QACA,cACD,EAAE;AAmBH,MAAa,gBAIX,UACG;CACH,MAAM,EAAE,iBAAiB,0BAA0B;CACnD,MAAM,EACJ,SAAS,OACT,cACA,GAAG,SACD;EACF,GAAG;EACH,GAAG;EACJ;CACD,MAAM,EAAE,iBAAiB,iBAAiBQ,kCAAsB;EAC9D,UAAU,EAAE,WAAW,OAAO,gBAAgB,cAC5C,2CAAC;GACY;GACJ;GACS;GACP;GACT,GAAI,gBAAgB,aAAa;IACjC;EAEJ,kCACiB,OAAO,IAAI,CAAC,SACzB,SAEA,2CAAC,sBAAmB,mDAAc,OAAO,GAAG,SAAS,EAAE,GAAK;EAEhE,GAAG;EACJ,CAAC;AAEF,QAAO,2CAACC,oBAAQ,+CAAuB,cAAc,CAAC,GAAI;;AAe5D,MAAM,qBAAqB,YACzB,QACA,gBACD,CACC,SACC,EACC,QAAQ,SACR,aAAa,cACb,MACA,QACA,MAAM,OACN,SAAS,UACT,cAAc,eACd,QACA,OAAO,QACP,QACA,KAAK,MACL,OACA,GACA,GACA,GAAG,WACC;AAIJ,QAAO;EACL,SAAS;EACT,UAAU,2CAAC;GAAK,GALR,SACN,IAAI,OAAO,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,GAAG,OAAO,IAAI,EAAE,GAAG,OAAO,IAAI,MAC/D,KAAK,EAAE,GAAG,EAAE,KAAK,MAAM,KAAK,OAAO,MAAM,MAAM;GAGnB;GAAe;IAAS;EACtD,MAAM,SAAS,SAAS,SAAY;EACpC,QAAQ,WAAW,SAAS,SAAY;EACxC,GAAG;EACJ;EAEJ;AAeD,MAAM,sBAAsB,aACzB,EACC,WACA,OAAO,WACP,gBACA,SACA,aAAa,MACb,GAAG,WACC;CACJ,MAAM,EAAE,eAAe,0BAA0B;CACjD,MAAM,QAAQ,iBACV,eAAe,WAAW,QAAQ,GAClC;AAEJ,QACE,4CAACT,uBAAO;EAAI,GAAI;aACb,oDAAa,MAAM,IAAI,+CAAQ,MAAM,GACpC,2CAAC,+BAAmB,QAA0B,GAC5C,MAEJ,2CAAC,8BACE,QAAQ,KAAK,MAAM,UAAU;AAC5B,OAAI,WAAW,QAAS,MAAK,OAAO,KAAK,QAAQ,WAAW;GAE5D,MAAM,QAAQ,UAAU,KAAK,MAAM,IAAI,KAAK,QAAQ;GACpD,MAAM,SACJ,YAAY,KAAK,OAAO,KAAK,MAAM,MAAM,OAAO,QAAQ,oDAC/C,KAAK,MAAM,GAAG,KAAK,MAAM,KAAK,KAAK,GAAG,KAAK;GACtD,MAAM,CAAC,OAAO,uDAAgB,OAAO,GAAG,SAAS,CAAC,QAAQ,KAAK,KAAK;AAEpE,UACE,4CAAC;IACE,aAAa,2CAAC,sBAAmB,IAAI,QAAS,GAAG;IAClD,2CAAC,8BAAkB,OAAwB;IAC3C,2CAAC,+BAAmB,QAA0B;QAHzB,MAIJ;IAErB,GACe;GACR;GAGjB,iBACD,EAAE;AAIH,MAAM,oBAAoB,YACxB,KACA,eACD,EAAE;AAIH,MAAM,mBAAmB,YACvB,OACA,cACD,EAAE;AAIH,MAAM,mBAAmB,YACvB,OACA,cACD,EAAE;AAIH,MAAM,qBAAqB,YACzB,OACA,gBACD,EAAE;AAIH,MAAM,mBAAmB,YACvB,QACA,cACD,EAAE;AAIH,MAAM,oBAAoB,YACxB,QACA,eACD,EAAE;AAOH,MAAa,iBAAiB,aAC3B,UAAU;CACT,MAAM,EAAE,mBAAmB,iBAAiBU,oCAAkB,MAAM;AAEpE,QACE,2CAACV,uBAAO;EAAK;EAAQ,GAAI,cAAc;YACrC,2CAACW,sBAAU,GAAI,mBAAmB,GAAI;GAC1B;GAGlB,YACD,EAAE;AAOH,MAAa,aAAa,aAAsC,UAAU;CACxE,MAAM,EAAE,eAAe,iBAAiBC,gCAAc,MAAM;AAE5D,QACE,2CAACZ,uBAAO;EAAK;EAAQ,GAAI,cAAc;YACrC,2CAACa,kBAAM,GAAI,eAAe,GAAI;GAClB;GAEf,QAAQ,EAAE"}
1
+ {"version":3,"file":"chart.cjs","names":["createSlotComponent","chartStyle","useChart","useSplitChildren","ChartContext","styled","ResponsiveContainer","Fragment","varAttr","createContext","mergeProps","useChartLegend","Legend","useChartTooltip","Tooltip","useChartLabelList","LabelList","useChartLabel","Label"],"sources":["../../../../src/components/chart/chart.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n JSXElementConstructor,\n PropsWithChildren,\n ReactElement,\n ReactNode,\n RefObject,\n} from \"react\"\nimport type {\n ActiveDotProps,\n DataKey,\n DefaultLegendContentProps,\n DotItemDotProps,\n DotProps,\n LabelProps,\n RenderableText,\n ResponsiveContainerProps,\n TooltipContentProps,\n TooltipProps,\n} from \"recharts\"\nimport type {\n CSSProps,\n ExtractStyleValueWithCondition,\n HTMLStyledProps,\n ThemeProps,\n} from \"../../core\"\nimport type { Dict, Merge } from \"../../utils\"\nimport type { ChartStyle } from \"./chart.style\"\nimport type {\n UseChartLabelListProps,\n UseChartLabelProps,\n UseChartLegendProps,\n UseChartLegendReturn,\n UseChartTooltipProps,\n} from \"./use-chart\"\nimport { Fragment, isValidElement, useMemo, useRef } from \"react\"\nimport {\n Label,\n LabelList,\n Legend,\n ResponsiveContainer,\n Tooltip,\n} from \"recharts\"\nimport { createSlotComponent, mergeProps, styled, varAttr } from \"../../core\"\nimport {\n cast,\n createContext,\n isArray,\n isNull,\n isNumber,\n isObject,\n isString,\n isUndefined,\n useSplitChildren,\n} from \"../../utils\"\nimport { chartStyle } from \"./chart.style\"\nimport {\n ChartContext,\n useChart,\n useChartLabel,\n useChartLabelList,\n useChartLegend,\n useChartTooltip,\n} from \"./use-chart\"\n\nexport type ChartDot =\n | ((props: DotItemDotProps) => ReactNode)\n | boolean\n | Merge<Partial<DotProps>, HTMLStyledProps<\"circle\">>\n | ReactElement\n\nexport type ChartActiveDot =\n | ((props: ActiveDotProps) => ReactNode)\n | boolean\n | Merge<Partial<ActiveDotProps>, HTMLStyledProps<\"circle\">>\n | ReactElement\n\nexport type ChartLabel =\n | ((props: any) => ReactElement | RenderableText)\n | boolean\n | (Merge<\n HTMLStyledProps<\"text\">,\n Pick<\n LabelProps,\n | \"angle\"\n | \"content\"\n | \"formatter\"\n | \"index\"\n | \"labelRef\"\n | \"offset\"\n | \"parentViewBox\"\n | \"position\"\n | \"textBreakAll\"\n | \"value\"\n | \"viewBox\"\n | \"zIndex\"\n >\n > & { dataKey?: DataKey<any> })\n | number\n | ReactElement\n | string\n\nexport type ChartLabelList =\n | ((props: LabelProps) => ReactElement | RenderableText)\n | boolean\n | ChartLabelListProps\n | ReactElement\n\nexport type ChartTickLine = boolean | HTMLStyledProps<\"line\">\n\nexport type GradientStrategy = \"invert\" | \"shade\" | \"tint\"\n\nexport function mergeSeries<Y>(\n series: Y[],\n color: CSSProps[\"color\"] = \"mono\",\n strategy: GradientStrategy = \"invert\",\n): (Y & { color: CSSProps[\"color\"] })[] {\n const colors = gradients(series.length, color, strategy)\n\n return series.map((item, index) => ({ ...item, color: colors[index] }))\n}\n\nexport function mergeData<Y>(\n data: Y[],\n color: ExtractStyleValueWithCondition<CSSProps[\"fill\"]> = \"mono\",\n strategy: GradientStrategy = \"invert\",\n): (Y & { fill: CSSProps[\"fill\"] })[] {\n const colors = gradients(data.length, color, strategy)\n\n return data.map((item, index) => ({ ...item, fill: colors[index] }))\n}\n\nexport function gradients(\n length: number,\n color: ExtractStyleValueWithCondition<CSSProps[\"color\"]> = \"mono\",\n strategy: GradientStrategy = \"invert\",\n): CSSProps[\"color\"][] {\n return Array.from({ length }, (_, index) => {\n const value = Math.floor(100 - (100 / length) * index)\n const percent = `${value}%`\n\n if (strategy === \"invert\") {\n return [\n `tint(colors.${color as string}, ${percent})`,\n `shade(colors.${color as string}, ${percent})`,\n ]\n } else {\n return `${strategy}(colors.${color as string}, ${percent})`\n }\n })\n}\n\nfunction parseJSON(value: any) {\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\ninterface ComponentContext extends Pick<\n ChartProps,\n \"legendProps\" | \"tooltipProps\"\n> {\n nameKeyRef: RefObject<string | undefined>\n}\n\nexport interface ChartProps extends HTMLStyledProps, ThemeProps<ChartStyle> {\n /**\n * The components to render the chart components.\n */\n components: {\n component: JSXElementConstructor<any>\n fallback: ReactNode\n }[]\n /**\n * The function to render the chart.\n */\n render: (props: PropsWithChildren) => ReactNode\n /**\n * The color of the label list.\n */\n labelListColor?: CSSProps[\"color\"]\n /**\n * The fill of the label list.\n */\n labelListFill?: CSSProps[\"fill\"]\n /**\n * The fill of the tooltip cursor.\n */\n tooltipCursorFill?: CSSProps[\"fill\"]\n /**\n * The fill opacity of the tooltip cursor.\n */\n tooltipCursorFillOpacity?: CSSProps[\"fillOpacity\"]\n /**\n * The stroke of the tooltip cursor.\n */\n tooltipCursorStroke?: CSSProps[\"stroke\"]\n /**\n * If `true`, legend is visible.\n *\n * @default false\n */\n withLegend?: boolean\n /**\n * If `true`, tooltip is visible.\n *\n * @default true\n */\n withTooltip?: boolean\n /**\n * Props for the legend component.\n */\n legendProps?: ChartLegendProps\n /**\n * Props for the responsive container component.\n */\n responsiveContainerProps?: ResponsiveContainerProps\n /**\n * Props for the tooltip component.\n */\n tooltipProps?: ChartTooltipProps\n}\n\nconst {\n ComponentContext,\n PropsContext: ChartPropsContext,\n useComponentContext: useChartComponentContext,\n usePropsContext: useChartPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<ChartProps, ChartStyle, ComponentContext>(\n \"chart\",\n chartStyle,\n)\n\nexport { ChartPropsContext, useChartComponentContext, useChartPropsContext }\n\nexport const Chart = withProvider(\n ({\n children,\n components: componentsProp,\n render,\n withLegend = false,\n withTooltip = true,\n legendProps,\n responsiveContainerProps,\n tooltipProps,\n ...rest\n }: ChartProps) => {\n const { highlightedDataKey, onHighlight } = useChart()\n const nameKeyRef = useRef<string | undefined>(undefined)\n const components = useMemo(\n () => [\n ...componentsProp,\n {\n component: ChartLegend,\n fallback: withLegend ? <ChartLegend /> : null,\n },\n {\n component: ChartTooltip,\n fallback: withTooltip ? <ChartTooltip /> : null,\n },\n ],\n [componentsProp, withLegend, withTooltip],\n )\n const [omittedChildren, ...customComponents] = useSplitChildren(\n children,\n ...components.map(({ component }) => component),\n )\n const context = useMemo(\n () => ({\n highlightedDataKey,\n onHighlight,\n }),\n [highlightedDataKey, onHighlight],\n )\n const componentContext = useMemo(\n () => ({\n nameKeyRef,\n legendProps,\n tooltipProps,\n }),\n [legendProps, tooltipProps],\n )\n\n return (\n <ChartContext value={context}>\n <ComponentContext value={componentContext}>\n <styled.div {...rest}>\n <ResponsiveContainer {...responsiveContainerProps}>\n {render({\n children: (\n <>\n {components.map(({ fallback }, index) => (\n <Fragment key={index}>\n {customComponents[index] ?? fallback}\n </Fragment>\n ))}\n\n {omittedChildren}\n </>\n ),\n })}\n </ResponsiveContainer>\n </styled.div>\n </ComponentContext>\n </ChartContext>\n )\n },\n \"root\",\n)(\n undefined,\n ({\n labelListColor,\n labelListFill,\n tooltipCursorFill,\n tooltipCursorFillOpacity,\n tooltipCursorStroke,\n ...rest\n }) => ({\n \"--label-list-color\": varAttr(labelListColor, \"colors\"),\n \"--label-list-fill\": varAttr(labelListFill, \"colors\"),\n \"--tooltip-cursor-fill\": varAttr(tooltipCursorFill, \"colors\"),\n \"--tooltip-cursor-fill-opacity\": tooltipCursorFillOpacity,\n \"--tooltip-cursor-stroke\": varAttr(tooltipCursorStroke, \"colors\"),\n ...rest,\n }),\n)\n\ninterface ChartLegendContext extends Pick<\n UseChartLegendReturn,\n \"getLegendItemProps\"\n> {}\n\nconst [ChartLegendContext, useChartLegendContext] =\n createContext<ChartLegendContext>({\n name: \"ChartLegendContext\",\n })\n\nexport interface ChartLegendProps extends Merge<\n HTMLStyledProps,\n UseChartLegendProps\n> {\n /**\n * Props for the content component.\n */\n contentProps?: Omit<ChartLegendContentProps, \"formatter\" | \"payload\">\n}\n\nexport const ChartLegend = withContext<\"div\", ChartLegendProps>((props) => {\n const { legendProps } = useChartComponentContext()\n const { contentProps, ...rest } = mergeProps(legendProps, props)()\n const {\n getLegendContentProps,\n getLegendItemProps,\n getLegendProps,\n getRootProps,\n } = useChartLegend({\n content: ({ formatter, payload }) => (\n <ChartLegendContent\n formatter={formatter}\n payload={payload}\n {...getLegendContentProps(contentProps)}\n />\n ),\n ...rest,\n })\n const context = useMemo(() => ({ getLegendItemProps }), [getLegendItemProps])\n\n return (\n <ChartLegendContext value={context}>\n <styled.div asChild {...getRootProps()}>\n <Legend {...getLegendProps()} />\n </styled.div>\n </ChartLegendContext>\n )\n}, \"legend\")()\n\ninterface ChartLegendContentProps\n extends\n HTMLStyledProps,\n Pick<DefaultLegendContentProps, \"formatter\" | \"payload\"> {\n /**\n * If `true`, swatch is visible.\n */\n withSwatch?: boolean\n}\n\nconst ChartLegendContent = withContext<\"div\", ChartLegendContentProps>(\n ({ formatter, payload, withSwatch = true, ...rest }) => {\n const { nameKeyRef } = useChartComponentContext()\n const { getLegendItemProps } = useChartLegendContext()\n\n return (\n <styled.div {...rest}>\n {payload?.map((data, index) => {\n let value = data.value\n\n if (nameKeyRef.current)\n value = (data.payload as any)?.[nameKeyRef.current]\n\n const dataKey =\n isString(data.dataKey) || isNumber(data.dataKey)\n ? data.dataKey\n : value\n const color = parseJSON(data.color)\n const formattedValue = formatter?.(value, data, index) ?? value\n\n return (\n <ChartLegendItem key={index} {...getLegendItemProps({ dataKey })}>\n {withSwatch ? <ChartLegendSwatch bg={color} /> : null}\n <ChartLegendValue>{formattedValue}</ChartLegendValue>\n </ChartLegendItem>\n )\n })}\n </styled.div>\n )\n },\n \"legendContent\",\n)()\n\ninterface ChartLegendItemProps extends HTMLStyledProps {}\n\nconst ChartLegendItem = withContext<\"div\", ChartLegendItemProps>(\n \"div\",\n \"legendItem\",\n)()\n\ninterface ChartLegendSwatchProps extends HTMLStyledProps {}\n\nconst ChartLegendSwatch = withContext<\"div\", ChartLegendSwatchProps>(\n \"div\",\n \"legendSwatch\",\n)()\n\ninterface ChartLegendValueProps extends HTMLStyledProps<\"span\"> {}\n\nconst ChartLegendValue = withContext<\"span\", ChartLegendValueProps>(\n \"span\",\n \"legendValue\",\n)()\n\nexport interface ChartTooltipProps<\n Y extends (number | string)[] | number | string = number,\n M extends number | string = string,\n> extends Omit<Merge<HTMLStyledProps, UseChartTooltipProps<Y, M>>, \"cursor\"> {\n /**\n * Props for the cursor component.\n */\n cursor?: boolean | ChartTooltipCursorProps | ReactElement\n /**\n * Props for the content component.\n */\n contentProps?: Omit<\n ChartTooltipContentProps,\n \"formatter\" | \"label\" | \"labelFormatter\" | \"payload\"\n >\n}\n\nexport const ChartTooltip = <\n Y extends (number | string)[] | number | string,\n M extends number | string,\n>(\n props: ChartTooltipProps<Y, M>,\n) => {\n const { tooltipProps } = useChartComponentContext()\n const {\n cursor = false,\n contentProps,\n ...rest\n } = {\n ...tooltipProps,\n ...props,\n } as ChartTooltipProps<Y, M>\n const { getContentProps, getRootProps } = useChartTooltip<Y, M>({\n content: ({ formatter, label, labelFormatter, payload }) => (\n <ChartTooltipContent\n formatter={formatter}\n label={label}\n labelFormatter={labelFormatter}\n payload={payload}\n {...getContentProps(contentProps)}\n />\n ),\n cursor:\n isValidElement(cursor) || !cursor ? (\n cursor\n ) : (\n <ChartTooltipCursor {...(isObject(cursor) ? cursor : {})} />\n ),\n ...rest,\n })\n\n return <Tooltip {...cast<TooltipProps>(getRootProps())} />\n}\n\ninterface ChartTooltipCursorProps extends Omit<\n HTMLStyledProps<\"path\">,\n \"height\" | \"points\" | \"width\" | \"x\" | \"y\"\n> {\n brushBottom?: number\n height?: number\n payload?: Dict[]\n payloadIndex?: number\n points?: { x: number; y: number }[]\n width?: number\n x?: number\n y?: number\n}\n\nconst ChartTooltipCursor = withContext<\"path\", ChartTooltipCursorProps>(\n \"path\",\n \"tooltipCursor\",\n)(\n undefined,\n ({\n bottom: _bottom,\n brushBottom: _brushBottom,\n fill,\n height,\n left: _left,\n payload: _payload,\n payloadIndex: _payloadIndex,\n points,\n right: _right,\n stroke,\n top: _top,\n width,\n x,\n y,\n ...rest\n }) => {\n const d = points\n ? `M${points[0]?.x},${points[0]?.y}L${points[1]?.x},${points[1]?.y}`\n : `M ${x},${y} h ${width} v ${height} h -${width} Z`\n return {\n asChild: true,\n children: <path d={d} height={height} width={width} />,\n fill: fill === \"#ccc\" ? undefined : fill,\n stroke: stroke === \"#ccc\" ? undefined : stroke,\n ...rest,\n }\n },\n)\n\ninterface ChartTooltipContentProps\n extends\n HTMLStyledProps,\n Pick<\n TooltipContentProps<any, any>,\n \"formatter\" | \"label\" | \"labelFormatter\" | \"payload\"\n > {\n /**\n * If `true`, swatch is visible.\n */\n withSwatch?: boolean\n}\n\nconst ChartTooltipContent = withContext<\"div\", ChartTooltipContentProps>(\n ({\n formatter,\n label: labelProp,\n labelFormatter,\n payload,\n withSwatch = true,\n ...rest\n }) => {\n const { nameKeyRef } = useChartComponentContext()\n const label = labelFormatter\n ? labelFormatter(labelProp, payload)\n : labelProp\n\n return (\n <styled.div {...rest}>\n {!isUndefined(label) && !isNull(label) ? (\n <ChartTooltipLabel>{label}</ChartTooltipLabel>\n ) : null}\n\n <ChartTooltipList>\n {payload.map((data, index) => {\n if (nameKeyRef.current) data.name = data.payload[nameKeyRef.current]\n\n const color = parseJSON(data.color) || data.payload.fill\n const result =\n formatter?.(data.value, data.name, data, index, payload) ??\n (isArray(data.value) ? data.value.join(\", \") : data.value)\n const [value, name] = isArray(result) ? result : [result, data.name]\n\n return (\n <ChartTooltipItem key={index}>\n {withSwatch ? <ChartTooltipSwatch bg={color} /> : null}\n <ChartTooltipName>{name}</ChartTooltipName>\n <ChartTooltipValue>{value}</ChartTooltipValue>\n </ChartTooltipItem>\n )\n })}\n </ChartTooltipList>\n </styled.div>\n )\n },\n \"tooltipContent\",\n)()\n\ninterface ChartTooltipLabel extends HTMLStyledProps<\"p\"> {}\n\nconst ChartTooltipLabel = withContext<\"p\", ChartTooltipLabel>(\n \"p\",\n \"tooltipLabel\",\n)()\n\ninterface ChartTooltipList extends HTMLStyledProps {}\n\nconst ChartTooltipList = withContext<\"div\", ChartTooltipList>(\n \"div\",\n \"tooltipList\",\n)()\n\ninterface ChartTooltipItem extends HTMLStyledProps {}\n\nconst ChartTooltipItem = withContext<\"div\", ChartTooltipItem>(\n \"div\",\n \"tooltipItem\",\n)()\n\ninterface ChartTooltipSwatch extends HTMLStyledProps {}\n\nconst ChartTooltipSwatch = withContext<\"div\", ChartTooltipSwatch>(\n \"div\",\n \"tooltipSwatch\",\n)()\n\ninterface ChartTooltipName extends HTMLStyledProps<\"span\"> {}\n\nconst ChartTooltipName = withContext<\"span\", ChartTooltipName>(\n \"span\",\n \"tooltipName\",\n)()\n\ninterface ChartTooltipValue extends HTMLStyledProps<\"span\"> {}\n\nconst ChartTooltipValue = withContext<\"span\", ChartTooltipValue>(\n \"span\",\n \"tooltipValue\",\n)()\n\nexport interface ChartLabelListProps extends Merge<\n HTMLStyledProps<\"text\">,\n UseChartLabelListProps\n> {}\n\nexport const ChartLabelList = withContext<\"text\", ChartLabelListProps>(\n (props) => {\n const { getLabelListProps, getRootProps } = useChartLabelList(props)\n\n return (\n <styled.text asChild {...getRootProps()}>\n <LabelList {...getLabelListProps()} />\n </styled.text>\n )\n },\n \"labelList\",\n)()\n\nexport interface ChartLabelProps extends Merge<\n HTMLStyledProps<\"text\">,\n UseChartLabelProps\n> {}\n\nexport const ChartLabel = withContext<\"text\", ChartLabelProps>((props) => {\n const { getLabelProps, getRootProps } = useChartLabel(props)\n\n return (\n <styled.text asChild {...getRootProps()}>\n <Label {...getLabelProps()} />\n </styled.text>\n )\n}, \"label\")()\n"],"mappings":"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"}
@@ -78,7 +78,7 @@ const DatePicker = withProvider((props) => {
78
78
  colorScheme
79
79
  }, getRootProps(groupItemProps), rootProps)(),
80
80
  children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_popover.PopoverTrigger, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DatePickerField, {
81
- ...getFieldProps(varProps),
81
+ ...getFieldProps({ ...varProps }),
82
82
  children: fieldChildren
83
83
  }) }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_input_element.InputElement, {
84
84
  clickable: clearable && hasValue,
@@ -1 +1 @@
1
- {"version":3,"file":"date-picker.cjs","names":["createSlotComponent","datePickerStyle","XIcon","useGroupItemProps","usePopoverStyleProps","useDatePicker","useInputBorder","mergeProps","useInputPropsContext","useFieldSizing","styled","mergeRefs","CalendarIcon"],"sources":["../../../../src/components/date-picker/date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ReactElement, ReactNode } from \"react\"\nimport type {\n GenericsComponent,\n HTMLProps,\n HTMLStyledProps,\n ThemeProps,\n} from \"../../core\"\nimport type { Merge } from \"../../utils\"\nimport type { UseInputBorderProps } from \"../input\"\nimport type { UsePopoverStyleProps, UsePopupAnimationProps } from \"../popover\"\nimport type { DatePickerStyle } from \"./date-picker.style\"\nimport type { UseDatePickerProps, UseDatePickerReturn } from \"./use-date-picker\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, mergeProps, styled } from \"../../core\"\nimport { useFieldSizing } from \"../../hooks/use-field-sizing\"\nimport { cast, isArray, isDate, isObject, mergeRefs } from \"../../utils\"\nimport { Calendar } from \"../calendar\"\nimport { useGroupItemProps } from \"../group\"\nimport { CalendarIcon, XIcon } from \"../icon\"\nimport { InputGroup, useInputBorder, useInputPropsContext } from \"../input\"\nimport { Popover, usePopoverStyleProps } from \"../popover\"\nimport { datePickerStyle } from \"./date-picker.style\"\nimport { useDatePicker } from \"./use-date-picker\"\n\ninterface ComponentContext\n extends\n Pick<UseDatePickerReturn, \"getInputProps\" | \"range\" | \"separator\">,\n Pick<DatePickerProps, \"inputProps\"> {}\n\nexport interface DatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<\n HTMLStyledProps,\n \"defaultValue\" | \"offset\" | \"onChange\" | \"ref\" | \"value\"\n >,\n Merge<UseDatePickerProps<Multiple, Range>, UsePopoverStyleProps>,\n UsePopupAnimationProps,\n ThemeProps<DatePickerStyle>,\n UseInputBorderProps {\n /**\n * If `true`, display the clear icon.\n *\n * @default true\n */\n clearable?: boolean\n /**\n * The icon to be used in the clear button.\n */\n clearIcon?: ReactNode\n /**\n * The icon to be used in the date picker.\n */\n icon?: ReactNode\n /**\n * The placement of the popper relative to its reference.\n *\n * @default 'end-start'\n */\n placement?: Popover.RootProps[\"placement\"]\n /**\n * The size of the calendar component.\n */\n calendarProps?: Calendar.RootProps<Multiple, Range>\n /**\n * Props for content element.\n */\n contentProps?: DatePickerContentProps\n /**\n * The props for the end element.\n */\n elementProps?: InputGroup.ElementProps\n /**\n * Props for icon element.\n */\n iconProps?: DatePickerIconProps\n /**\n * The props for the input element.\n */\n inputProps?: HTMLStyledProps<\"input\">\n /**\n * Props for root element.\n */\n rootProps?: InputGroup.RootProps\n}\n\nconst {\n ComponentContext,\n PropsContext: DatePickerPropsContext,\n useComponentContext,\n usePropsContext: useDatePickerPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<DatePickerProps, DatePickerStyle, ComponentContext>(\n \"date-picker\",\n datePickerStyle,\n)\n\nexport { DatePickerPropsContext, useDatePickerPropsContext }\n\n/**\n * `DatePicker` is a component used for users to select a date.\n *\n * @see https://yamada-ui.com/docs/components/date-picker\n */\nexport const DatePicker = withProvider(\n <Multiple extends boolean = false, Range extends boolean = false>(\n props: DatePickerProps<Multiple, Range>,\n ) => {\n const [\n groupItemProps,\n {\n className,\n css,\n colorScheme,\n size,\n animationScheme = \"block-start\",\n children,\n clearable = true,\n clearIcon = <XIcon />,\n duration,\n errorBorderColor,\n focusBorderColor,\n icon,\n calendarProps,\n contentProps,\n elementProps,\n iconProps,\n inputProps,\n rootProps,\n ...rest\n },\n ] = useGroupItemProps(props)\n const popoverStyleProps = usePopoverStyleProps(rest)\n const {\n children: fieldChildren,\n range,\n separator,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n } = useDatePicker({ ...rest, ...popoverStyleProps })\n const mergedPopoverProps = useMemo<Popover.RootProps>(\n () => ({\n animationScheme,\n duration,\n ...popoverProps,\n }),\n [animationScheme, duration, popoverProps],\n )\n const varProps = useInputBorder({ errorBorderColor, focusBorderColor })\n const selectProps = useMemo<Calendar.RootProps[\"selectProps\"]>(\n () => ({ contentProps: { portalProps: { disabled: true } } }),\n [],\n )\n const componentContext = useMemo(\n () => ({ range, separator, getInputProps, inputProps }),\n [getInputProps, inputProps, range, separator],\n )\n const hasValue = isArray(value)\n ? !!value.length\n : isObject(value) && !isDate(value)\n ? !!value.end || !!value.start\n : !!value\n\n return (\n <ComponentContext value={componentContext}>\n <Popover.Root {...mergedPopoverProps}>\n <InputGroup.Root\n {...mergeProps(\n { className, css, colorScheme },\n getRootProps(groupItemProps),\n rootProps,\n )()}\n >\n <Popover.Trigger>\n <DatePickerField {...getFieldProps(varProps)}>\n {fieldChildren}\n </DatePickerField>\n </Popover.Trigger>\n\n <InputGroup.Element\n {...{ clickable: clearable && hasValue, ...elementProps }}\n >\n {clearable && hasValue ? (\n <DatePickerIcon\n icon={clearIcon}\n {...getClearIconProps(iconProps)}\n />\n ) : (\n <DatePickerIcon icon={icon} {...getIconProps(iconProps)} />\n )}\n </InputGroup.Element>\n </InputGroup.Root>\n\n <DatePickerContent\n {...cast<DatePickerContentProps>(\n getContentProps(cast<HTMLProps>(contentProps)),\n )}\n >\n <Calendar.Root\n colorScheme={colorScheme}\n size={size}\n fixed={false}\n selectProps={selectProps}\n {...getCalendarProps(calendarProps)}\n >\n {children}\n </Calendar.Root>\n </DatePickerContent>\n </Popover.Root>\n </ComponentContext>\n )\n },\n \"root\",\n { transferProps: [\"size\"] },\n)((props) => {\n const context = useInputPropsContext()\n\n return mergeProps(context, props)()\n}) as GenericsComponent<{\n <Multiple extends boolean = false, Range extends boolean = false>(\n props: DatePickerProps<Multiple, Range>,\n ): ReactElement\n}>\n\ninterface DatePickerFieldProps extends HTMLStyledProps {}\n\nconst DatePickerField = withContext<\"div\", DatePickerFieldProps>(\n \"div\",\n \"field\",\n)({ \"data-group-propagate\": \"\" }, ({ children, ...rest }) => {\n const { range, separator, getInputProps, inputProps } = useComponentContext()\n const computedChildren = useMemo(() => {\n if (range) {\n return (\n <>\n <DatePickerAdjustInput\n {...getInputProps({ align: \"start\", ...inputProps })}\n />\n <DatePickerSeparator>{separator}</DatePickerSeparator>\n <DatePickerAdjustInput\n {...getInputProps({ align: \"end\", ...inputProps })}\n />\n </>\n )\n } else {\n return (\n <>\n {children}\n <DatePickerInput {...getInputProps(inputProps)} />\n </>\n )\n }\n }, [children, getInputProps, inputProps, range, separator])\n\n return {\n ...rest,\n children: computedChildren,\n }\n})\n\ninterface DatePickerInputProps extends HTMLStyledProps<\"input\"> {}\n\nconst DatePickerInput = withContext<\"input\", DatePickerInputProps>(\n \"input\",\n \"input\",\n)()\n\ninterface DatePickerAdjustInputProps extends HTMLStyledProps<\"input\"> {}\n\nconst DatePickerAdjustInput = withContext<\"input\", DatePickerAdjustInputProps>(\n ({ ref, placeholder, value, ...rest }) => {\n const { ref: inputRef, text } = useFieldSizing({\n value: value?.toString() || placeholder,\n })\n\n return (\n <>\n {text}\n\n <styled.input\n ref={mergeRefs(ref, inputRef)}\n placeholder={placeholder}\n value={value}\n {...rest}\n />\n </>\n )\n },\n [\"input\", \"adjust\"],\n)()\n\ninterface DatePickerSeparatorProps extends HTMLStyledProps<\"span\"> {}\n\nconst DatePickerSeparator = withContext<\"span\", DatePickerSeparatorProps>(\n \"span\",\n \"separator\",\n)()\n\ninterface DatePickerIconProps extends HTMLStyledProps {\n icon?: ReactNode\n}\n\nconst DatePickerIcon = withContext<\"div\", DatePickerIconProps>(\"div\", \"icon\")(\n undefined,\n ({ children, icon, ...rest }) => ({\n children: icon || children || <CalendarIcon />,\n ...rest,\n }),\n)\n\ninterface DatePickerContentProps extends Popover.ContentProps {}\n\nconst DatePickerContent = withContext<\"div\", DatePickerContentProps>(\n Popover.Content,\n \"content\",\n)()\n"],"mappings":"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"}
1
+ {"version":3,"file":"date-picker.cjs","names":["createSlotComponent","datePickerStyle","XIcon","useGroupItemProps","usePopoverStyleProps","useDatePicker","useInputBorder","mergeProps","useInputPropsContext","useFieldSizing","styled","mergeRefs","CalendarIcon"],"sources":["../../../../src/components/date-picker/date-picker.tsx"],"sourcesContent":["\"use client\"\n\nimport type { ReactElement, ReactNode } from \"react\"\nimport type {\n GenericsComponent,\n HTMLProps,\n HTMLStyledProps,\n ThemeProps,\n} from \"../../core\"\nimport type { Merge } from \"../../utils\"\nimport type { UseInputBorderProps } from \"../input\"\nimport type { UsePopoverStyleProps, UsePopupAnimationProps } from \"../popover\"\nimport type { DatePickerStyle } from \"./date-picker.style\"\nimport type { UseDatePickerProps, UseDatePickerReturn } from \"./use-date-picker\"\nimport { useMemo } from \"react\"\nimport { createSlotComponent, mergeProps, styled } from \"../../core\"\nimport { useFieldSizing } from \"../../hooks/use-field-sizing\"\nimport { cast, isArray, isDate, isObject, mergeRefs } from \"../../utils\"\nimport { Calendar } from \"../calendar\"\nimport { useGroupItemProps } from \"../group\"\nimport { CalendarIcon, XIcon } from \"../icon\"\nimport { InputGroup, useInputBorder, useInputPropsContext } from \"../input\"\nimport { Popover, usePopoverStyleProps } from \"../popover\"\nimport { datePickerStyle } from \"./date-picker.style\"\nimport { useDatePicker } from \"./use-date-picker\"\n\ninterface ComponentContext\n extends\n Pick<UseDatePickerReturn, \"getInputProps\" | \"range\" | \"separator\">,\n Pick<DatePickerProps, \"inputProps\"> {}\n\nexport interface DatePickerProps<\n Multiple extends boolean = false,\n Range extends boolean = false,\n>\n extends\n Omit<\n HTMLStyledProps,\n \"defaultValue\" | \"offset\" | \"onChange\" | \"ref\" | \"value\"\n >,\n Merge<UseDatePickerProps<Multiple, Range>, UsePopoverStyleProps>,\n UsePopupAnimationProps,\n ThemeProps<DatePickerStyle>,\n UseInputBorderProps {\n /**\n * If `true`, display the clear icon.\n *\n * @default true\n */\n clearable?: boolean\n /**\n * The icon to be used in the clear button.\n */\n clearIcon?: ReactNode\n /**\n * The icon to be used in the date picker.\n */\n icon?: ReactNode\n /**\n * The placement of the popper relative to its reference.\n *\n * @default 'end-start'\n */\n placement?: Popover.RootProps[\"placement\"]\n /**\n * The size of the calendar component.\n */\n calendarProps?: Calendar.RootProps<Multiple, Range>\n /**\n * Props for content element.\n */\n contentProps?: DatePickerContentProps\n /**\n * The props for the end element.\n */\n elementProps?: InputGroup.ElementProps\n /**\n * Props for icon element.\n */\n iconProps?: DatePickerIconProps\n /**\n * The props for the input element.\n */\n inputProps?: HTMLStyledProps<\"input\">\n /**\n * Props for root element.\n */\n rootProps?: InputGroup.RootProps\n}\n\nconst {\n ComponentContext,\n PropsContext: DatePickerPropsContext,\n useComponentContext,\n usePropsContext: useDatePickerPropsContext,\n withContext,\n withProvider,\n} = createSlotComponent<DatePickerProps, DatePickerStyle, ComponentContext>(\n \"date-picker\",\n datePickerStyle,\n)\n\nexport { DatePickerPropsContext, useDatePickerPropsContext }\n\n/**\n * `DatePicker` is a component used for users to select a date.\n *\n * @see https://yamada-ui.com/docs/components/date-picker\n */\nexport const DatePicker = withProvider(\n <Multiple extends boolean = false, Range extends boolean = false>(\n props: DatePickerProps<Multiple, Range>,\n ) => {\n const [\n groupItemProps,\n {\n className,\n css,\n colorScheme,\n size,\n animationScheme = \"block-start\",\n children,\n clearable = true,\n clearIcon = <XIcon />,\n duration,\n errorBorderColor,\n focusBorderColor,\n icon,\n calendarProps,\n contentProps,\n elementProps,\n iconProps,\n inputProps,\n rootProps,\n ...rest\n },\n ] = useGroupItemProps(props)\n const popoverStyleProps = usePopoverStyleProps(rest)\n const {\n children: fieldChildren,\n range,\n separator,\n value,\n getCalendarProps,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n popoverProps,\n } = useDatePicker({ ...rest, ...popoverStyleProps })\n const mergedPopoverProps = useMemo<Popover.RootProps>(\n () => ({\n animationScheme,\n duration,\n ...popoverProps,\n }),\n [animationScheme, duration, popoverProps],\n )\n const varProps = useInputBorder({ errorBorderColor, focusBorderColor })\n const selectProps = useMemo<Calendar.RootProps[\"selectProps\"]>(\n () => ({ contentProps: { portalProps: { disabled: true } } }),\n [],\n )\n const componentContext = useMemo(\n () => ({ range, separator, getInputProps, inputProps }),\n [getInputProps, inputProps, range, separator],\n )\n const hasValue = isArray(value)\n ? !!value.length\n : isObject(value) && !isDate(value)\n ? !!value.end || !!value.start\n : !!value\n\n return (\n <ComponentContext value={componentContext}>\n <Popover.Root {...mergedPopoverProps}>\n <InputGroup.Root\n {...mergeProps(\n { className, css, colorScheme },\n getRootProps(groupItemProps),\n rootProps,\n )()}\n >\n <Popover.Trigger>\n <DatePickerField {...getFieldProps({ ...varProps })}>\n {fieldChildren}\n </DatePickerField>\n </Popover.Trigger>\n\n <InputGroup.Element\n {...{ clickable: clearable && hasValue, ...elementProps }}\n >\n {clearable && hasValue ? (\n <DatePickerIcon\n icon={clearIcon}\n {...getClearIconProps(iconProps)}\n />\n ) : (\n <DatePickerIcon icon={icon} {...getIconProps(iconProps)} />\n )}\n </InputGroup.Element>\n </InputGroup.Root>\n\n <DatePickerContent\n {...cast<DatePickerContentProps>(\n getContentProps(cast<HTMLProps>(contentProps)),\n )}\n >\n <Calendar.Root\n colorScheme={colorScheme}\n size={size}\n fixed={false}\n selectProps={selectProps}\n {...getCalendarProps(calendarProps)}\n >\n {children}\n </Calendar.Root>\n </DatePickerContent>\n </Popover.Root>\n </ComponentContext>\n )\n },\n \"root\",\n { transferProps: [\"size\"] },\n)((props) => {\n const context = useInputPropsContext()\n\n return mergeProps(context, props)()\n}) as GenericsComponent<{\n <Multiple extends boolean = false, Range extends boolean = false>(\n props: DatePickerProps<Multiple, Range>,\n ): ReactElement\n}>\n\ninterface DatePickerFieldProps extends HTMLStyledProps {}\n\nconst DatePickerField = withContext<\"div\", DatePickerFieldProps>(\n \"div\",\n \"field\",\n)({ \"data-group-propagate\": \"\" }, ({ children, ...rest }) => {\n const { range, separator, getInputProps, inputProps } = useComponentContext()\n const computedChildren = useMemo(() => {\n if (range) {\n return (\n <>\n <DatePickerAdjustInput\n {...getInputProps({ align: \"start\", ...inputProps })}\n />\n <DatePickerSeparator>{separator}</DatePickerSeparator>\n <DatePickerAdjustInput\n {...getInputProps({ align: \"end\", ...inputProps })}\n />\n </>\n )\n } else {\n return (\n <>\n {children}\n <DatePickerInput {...getInputProps(inputProps)} />\n </>\n )\n }\n }, [children, getInputProps, inputProps, range, separator])\n\n return {\n ...rest,\n children: computedChildren,\n }\n})\n\ninterface DatePickerInputProps extends HTMLStyledProps<\"input\"> {}\n\nconst DatePickerInput = withContext<\"input\", DatePickerInputProps>(\n \"input\",\n \"input\",\n)()\n\ninterface DatePickerAdjustInputProps extends HTMLStyledProps<\"input\"> {}\n\nconst DatePickerAdjustInput = withContext<\"input\", DatePickerAdjustInputProps>(\n ({ ref, placeholder, value, ...rest }) => {\n const { ref: inputRef, text } = useFieldSizing({\n value: value?.toString() || placeholder,\n })\n\n return (\n <>\n {text}\n\n <styled.input\n ref={mergeRefs(ref, inputRef)}\n placeholder={placeholder}\n value={value}\n {...rest}\n />\n </>\n )\n },\n [\"input\", \"adjust\"],\n)()\n\ninterface DatePickerSeparatorProps extends HTMLStyledProps<\"span\"> {}\n\nconst DatePickerSeparator = withContext<\"span\", DatePickerSeparatorProps>(\n \"span\",\n \"separator\",\n)()\n\ninterface DatePickerIconProps extends HTMLStyledProps {\n icon?: ReactNode\n}\n\nconst DatePickerIcon = withContext<\"div\", DatePickerIconProps>(\"div\", \"icon\")(\n undefined,\n ({ children, icon, ...rest }) => ({\n children: icon || children || <CalendarIcon />,\n ...rest,\n }),\n)\n\ninterface DatePickerContentProps extends Popover.ContentProps {}\n\nconst DatePickerContent = withContext<\"div\", DatePickerContentProps>(\n Popover.Content,\n \"content\",\n)()\n"],"mappings":"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"}
@@ -59,7 +59,7 @@ const useDrawer = ({ closeOnDrag = false, closeOnEsc, closeOnOverlay, dragConstr
59
59
  dragMomentum: false,
60
60
  dragSnapToOrigin: true,
61
61
  ...(0, require_utils_index.utils_exports.cast)(getModalContentProps((0, require_utils_index.utils_exports.cast)(props))),
62
- onDragEnd: (0, require_utils_index.utils_exports.handlerAll)(props.onDragEnd, onDragEnd)
62
+ onDragEnd: (0, require_utils_index.utils_exports.handlerAll)((ev, info) => props.onDragEnd?.(ev, info), onDragEnd)
63
63
  }), [
64
64
  drag,
65
65
  getDragRestriction,
@@ -1 +1 @@
1
- {"version":3,"file":"use-drawer.cjs","names":["useModal","onDragEnd: DragEndEventHandler","getContentProps: PropGetter<HTMLMotionProps<\"section\">>","getDragBarProps: PropGetter"],"sources":["../../../../src/components/drawer/use-drawer.ts"],"sourcesContent":["\"use client\"\n\nimport type { HTMLProps, PropGetter, SimplePlacement } from \"../../core\"\nimport type { UseModalProps } from \"../modal\"\nimport type { HTMLMotionProps } from \"../motion\"\nimport { useCallback, useMemo } from \"react\"\nimport { cast, handlerAll } from \"../../utils\"\nimport { useModal } from \"../modal\"\n\ntype DragEndEventHandler = Required<HTMLMotionProps>[\"onDragEnd\"]\n\nexport interface UseDrawerProps extends UseModalProps {\n /**\n * If `true`, then the drawer will close on drag.\n *\n * @default false\n */\n closeOnDrag?: boolean\n /**\n * Applies constraints on the permitted draggable area.\n *\n * @default 0\n */\n dragConstraints?: number\n /**\n * The degree of movement allowed outside constraints. 0 = no movement, 1 = full movement.\n *\n * @default 0.1\n */\n dragElastic?: number\n /**\n * Offset from being dragged to closing.\n *\n * @default 80\n */\n dragOffset?: number\n /**\n * Velocity of the drag that triggers close.\n *\n * @default 100\n */\n dragVelocity?: number\n /**\n * The placement of the drawer.\n *\n * @default 'inline-end'\n */\n placement?: SimplePlacement\n}\n\nexport const useDrawer = ({\n closeOnDrag = false,\n closeOnEsc,\n closeOnOverlay,\n dragConstraints = 0,\n dragElastic = 0.1,\n dragOffset = 80,\n dragVelocity = 100,\n placement = \"inline-end\",\n onEsc,\n ...rest\n}: UseDrawerProps = {}) => {\n const {\n getContentProps: getModalContentProps,\n onClose,\n ...modalProps\n } = useModal({\n closeOnEsc,\n closeOnOverlay,\n onEsc,\n ...rest,\n })\n\n const drag = useMemo<HTMLMotionProps[\"drag\"]>(() => {\n if (!closeOnDrag) return false\n\n switch (placement) {\n case \"block-start\":\n case \"block-end\":\n return \"y\"\n case \"inline-start\":\n case \"inline-end\":\n return \"x\"\n }\n }, [placement, closeOnDrag])\n\n const getDragRestriction = useCallback(\n (value: number) => {\n switch (placement) {\n case \"block-start\":\n return { bottom: value }\n case \"block-end\":\n return { top: value }\n case \"inline-start\":\n return { right: value }\n case \"inline-end\":\n return { left: value }\n }\n },\n [placement],\n )\n\n const onDragEnd: DragEndEventHandler = useCallback(\n (_, info) => {\n switch (placement) {\n case \"block-start\":\n if (\n info.velocity.y <= dragVelocity * -1 ||\n info.offset.y <= dragOffset * -1\n )\n onClose()\n break\n\n case \"block-end\":\n if (info.velocity.y >= dragVelocity || info.offset.y >= dragOffset)\n onClose()\n break\n\n case \"inline-start\":\n if (\n info.velocity.x <= dragVelocity * -1 ||\n info.offset.x <= dragOffset * -1\n )\n onClose()\n break\n\n case \"inline-end\":\n if (info.velocity.x >= dragVelocity || info.offset.x >= dragOffset)\n onClose()\n break\n }\n },\n [placement, dragVelocity, dragOffset, onClose],\n )\n\n const getContentProps: PropGetter<HTMLMotionProps<\"section\">> = useCallback(\n (props = {}) => ({\n drag,\n dragConstraints: getDragRestriction(dragConstraints),\n dragElastic: getDragRestriction(dragElastic),\n dragMomentum: false,\n dragSnapToOrigin: true,\n ...cast<HTMLMotionProps<\"section\">>(\n getModalContentProps(cast<HTMLProps<\"section\">>(props)),\n ),\n onDragEnd: handlerAll(props.onDragEnd, onDragEnd),\n }),\n [\n drag,\n getDragRestriction,\n dragConstraints,\n dragElastic,\n onDragEnd,\n getModalContentProps,\n ],\n )\n\n const getDragBarProps: PropGetter = useCallback(\n (props) => ({\n ...props,\n }),\n [],\n )\n\n return {\n ...modalProps,\n closeOnDrag,\n getContentProps,\n getDragBarProps,\n onClose,\n }\n}\n\nexport type UseDrawerReturn = ReturnType<typeof useDrawer>\n"],"mappings":";;;;;;;;;AAkDA,MAAa,aAAa,EACxB,cAAc,OACd,YACA,gBACA,kBAAkB,GAClB,cAAc,IACd,aAAa,IACb,eAAe,KACf,YAAY,cACZ,OACA,GAAG,SACe,EAAE,KAAK;CACzB,MAAM,EACJ,iBAAiB,sBACjB,SACA,GAAG,eACDA,2BAAS;EACX;EACA;EACA;EACA,GAAG;EACJ,CAAC;CAEF,MAAM,gCAA8C;AAClD,MAAI,CAAC,YAAa,QAAO;AAEzB,UAAQ,WAAR;GACE,KAAK;GACL,KAAK,YACH,QAAO;GACT,KAAK;GACL,KAAK,aACH,QAAO;;IAEV,CAAC,WAAW,YAAY,CAAC;CAE5B,MAAM,6CACH,UAAkB;AACjB,UAAQ,WAAR;GACE,KAAK,cACH,QAAO,EAAE,QAAQ,OAAO;GAC1B,KAAK,YACH,QAAO,EAAE,KAAK,OAAO;GACvB,KAAK,eACH,QAAO,EAAE,OAAO,OAAO;GACzB,KAAK,aACH,QAAO,EAAE,MAAM,OAAO;;IAG5B,CAAC,UAAU,CACZ;CAED,MAAMC,oCACH,GAAG,SAAS;AACX,UAAQ,WAAR;GACE,KAAK;AACH,QACE,KAAK,SAAS,KAAK,eAAe,MAClC,KAAK,OAAO,KAAK,aAAa,GAE9B,UAAS;AACX;GAEF,KAAK;AACH,QAAI,KAAK,SAAS,KAAK,gBAAgB,KAAK,OAAO,KAAK,WACtD,UAAS;AACX;GAEF,KAAK;AACH,QACE,KAAK,SAAS,KAAK,eAAe,MAClC,KAAK,OAAO,KAAK,aAAa,GAE9B,UAAS;AACX;GAEF,KAAK;AACH,QAAI,KAAK,SAAS,KAAK,gBAAgB,KAAK,OAAO,KAAK,WACtD,UAAS;AACX;;IAGN;EAAC;EAAW;EAAc;EAAY;EAAQ,CAC/C;CAED,MAAMC,0CACH,QAAQ,EAAE,MAAM;EACf;EACA,iBAAiB,mBAAmB,gBAAgB;EACpD,aAAa,mBAAmB,YAAY;EAC5C,cAAc;EACd,kBAAkB;EAClB,+CACE,iEAAgD,MAAM,CAAC,CACxD;EACD,6DAAsB,MAAM,WAAW,UAAU;EAClD,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAMC,0CACH,WAAW,EACV,GAAG,OACJ,GACD,EAAE,CACH;AAED,QAAO;EACL,GAAG;EACH;EACA;EACA;EACA;EACD"}
1
+ {"version":3,"file":"use-drawer.cjs","names":["useModal","onDragEnd: DragEndEventHandler","getContentProps: PropGetter<HTMLMotionProps<\"section\">>","getDragBarProps: PropGetter"],"sources":["../../../../src/components/drawer/use-drawer.ts"],"sourcesContent":["\"use client\"\n\nimport type { HTMLProps, PropGetter, SimplePlacement } from \"../../core\"\nimport type { UseModalProps } from \"../modal\"\nimport type { HTMLMotionProps } from \"../motion\"\nimport { useCallback, useMemo } from \"react\"\nimport { cast, handlerAll } from \"../../utils\"\nimport { useModal } from \"../modal\"\n\ntype DragEndEventHandler = Required<HTMLMotionProps>[\"onDragEnd\"]\n\nexport interface UseDrawerProps extends UseModalProps {\n /**\n * If `true`, then the drawer will close on drag.\n *\n * @default false\n */\n closeOnDrag?: boolean\n /**\n * Applies constraints on the permitted draggable area.\n *\n * @default 0\n */\n dragConstraints?: number\n /**\n * The degree of movement allowed outside constraints. 0 = no movement, 1 = full movement.\n *\n * @default 0.1\n */\n dragElastic?: number\n /**\n * Offset from being dragged to closing.\n *\n * @default 80\n */\n dragOffset?: number\n /**\n * Velocity of the drag that triggers close.\n *\n * @default 100\n */\n dragVelocity?: number\n /**\n * The placement of the drawer.\n *\n * @default 'inline-end'\n */\n placement?: SimplePlacement\n}\n\nexport const useDrawer = ({\n closeOnDrag = false,\n closeOnEsc,\n closeOnOverlay,\n dragConstraints = 0,\n dragElastic = 0.1,\n dragOffset = 80,\n dragVelocity = 100,\n placement = \"inline-end\",\n onEsc,\n ...rest\n}: UseDrawerProps = {}) => {\n const {\n getContentProps: getModalContentProps,\n onClose,\n ...modalProps\n } = useModal({\n closeOnEsc,\n closeOnOverlay,\n onEsc,\n ...rest,\n })\n\n const drag = useMemo<HTMLMotionProps[\"drag\"]>(() => {\n if (!closeOnDrag) return false\n\n switch (placement) {\n case \"block-start\":\n case \"block-end\":\n return \"y\"\n case \"inline-start\":\n case \"inline-end\":\n return \"x\"\n }\n }, [placement, closeOnDrag])\n\n const getDragRestriction = useCallback(\n (value: number) => {\n switch (placement) {\n case \"block-start\":\n return { bottom: value }\n case \"block-end\":\n return { top: value }\n case \"inline-start\":\n return { right: value }\n case \"inline-end\":\n return { left: value }\n }\n },\n [placement],\n )\n\n const onDragEnd: DragEndEventHandler = useCallback(\n (_, info) => {\n switch (placement) {\n case \"block-start\":\n if (\n info.velocity.y <= dragVelocity * -1 ||\n info.offset.y <= dragOffset * -1\n )\n onClose()\n break\n\n case \"block-end\":\n if (info.velocity.y >= dragVelocity || info.offset.y >= dragOffset)\n onClose()\n break\n\n case \"inline-start\":\n if (\n info.velocity.x <= dragVelocity * -1 ||\n info.offset.x <= dragOffset * -1\n )\n onClose()\n break\n\n case \"inline-end\":\n if (info.velocity.x >= dragVelocity || info.offset.x >= dragOffset)\n onClose()\n break\n }\n },\n [placement, dragVelocity, dragOffset, onClose],\n )\n\n const getContentProps: PropGetter<HTMLMotionProps<\"section\">> = useCallback(\n (props = {}) => ({\n drag,\n dragConstraints: getDragRestriction(dragConstraints),\n dragElastic: getDragRestriction(dragElastic),\n dragMomentum: false,\n dragSnapToOrigin: true,\n ...cast<HTMLMotionProps<\"section\">>(\n getModalContentProps(cast<HTMLProps<\"section\">>(props)),\n ),\n onDragEnd: handlerAll(\n (ev, info) => props.onDragEnd?.(ev, info),\n onDragEnd,\n ),\n }),\n [\n drag,\n getDragRestriction,\n dragConstraints,\n dragElastic,\n onDragEnd,\n getModalContentProps,\n ],\n )\n\n const getDragBarProps: PropGetter = useCallback(\n (props) => ({\n ...props,\n }),\n [],\n )\n\n return {\n ...modalProps,\n closeOnDrag,\n getContentProps,\n getDragBarProps,\n onClose,\n }\n}\n\nexport type UseDrawerReturn = ReturnType<typeof useDrawer>\n"],"mappings":";;;;;;;;;AAkDA,MAAa,aAAa,EACxB,cAAc,OACd,YACA,gBACA,kBAAkB,GAClB,cAAc,IACd,aAAa,IACb,eAAe,KACf,YAAY,cACZ,OACA,GAAG,SACe,EAAE,KAAK;CACzB,MAAM,EACJ,iBAAiB,sBACjB,SACA,GAAG,eACDA,2BAAS;EACX;EACA;EACA;EACA,GAAG;EACJ,CAAC;CAEF,MAAM,gCAA8C;AAClD,MAAI,CAAC,YAAa,QAAO;AAEzB,UAAQ,WAAR;GACE,KAAK;GACL,KAAK,YACH,QAAO;GACT,KAAK;GACL,KAAK,aACH,QAAO;;IAEV,CAAC,WAAW,YAAY,CAAC;CAE5B,MAAM,6CACH,UAAkB;AACjB,UAAQ,WAAR;GACE,KAAK,cACH,QAAO,EAAE,QAAQ,OAAO;GAC1B,KAAK,YACH,QAAO,EAAE,KAAK,OAAO;GACvB,KAAK,eACH,QAAO,EAAE,OAAO,OAAO;GACzB,KAAK,aACH,QAAO,EAAE,MAAM,OAAO;;IAG5B,CAAC,UAAU,CACZ;CAED,MAAMC,oCACH,GAAG,SAAS;AACX,UAAQ,WAAR;GACE,KAAK;AACH,QACE,KAAK,SAAS,KAAK,eAAe,MAClC,KAAK,OAAO,KAAK,aAAa,GAE9B,UAAS;AACX;GAEF,KAAK;AACH,QAAI,KAAK,SAAS,KAAK,gBAAgB,KAAK,OAAO,KAAK,WACtD,UAAS;AACX;GAEF,KAAK;AACH,QACE,KAAK,SAAS,KAAK,eAAe,MAClC,KAAK,OAAO,KAAK,aAAa,GAE9B,UAAS;AACX;GAEF,KAAK;AACH,QAAI,KAAK,SAAS,KAAK,gBAAgB,KAAK,OAAO,KAAK,WACtD,UAAS;AACX;;IAGN;EAAC;EAAW;EAAc;EAAY;EAAQ,CAC/C;CAED,MAAMC,0CACH,QAAQ,EAAE,MAAM;EACf;EACA,iBAAiB,mBAAmB,gBAAgB;EACpD,aAAa,mBAAmB,YAAY;EAC5C,cAAc;EACd,kBAAkB;EAClB,+CACE,iEAAgD,MAAM,CAAC,CACxD;EACD,8DACG,IAAI,SAAS,MAAM,YAAY,IAAI,KAAK,EACzC,UACD;EACF,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAMC,0CACH,WAAW,EACV,GAAG,OACJ,GACD,EAAE,CACH;AAED,QAAO;EACL,GAAG;EACH;EACA;EACA;EACA;EACD"}