@yamada-ui/react 2.1.6-dev-20260331094427 → 2.1.7-dev-20260404062241

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 (275) hide show
  1. package/dist/cjs/components/autocomplete/use-autocomplete.cjs +3 -6
  2. package/dist/cjs/components/autocomplete/use-autocomplete.cjs.map +1 -1
  3. package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
  4. package/dist/cjs/components/date-picker/use-date-picker.cjs +2 -8
  5. package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
  6. package/dist/cjs/components/indicator/indicator.cjs.map +1 -1
  7. package/dist/cjs/components/number-input/use-number-input.cjs.map +1 -1
  8. package/dist/cjs/components/slider/use-slider.cjs.map +1 -1
  9. package/dist/cjs/components/textarea/use-autosize.cjs.map +1 -1
  10. package/dist/cjs/components/toggle/use-toggle-group.cjs +1 -1
  11. package/dist/cjs/components/toggle/use-toggle-group.cjs.map +1 -1
  12. package/dist/cjs/core/css/calc.cjs.map +1 -1
  13. package/dist/cjs/core/css/css.cjs.map +1 -1
  14. package/dist/cjs/core/css/gradient.cjs.map +1 -1
  15. package/dist/cjs/core/css/grid.cjs.map +1 -1
  16. package/dist/cjs/hooks/use-counter/index.cjs.map +1 -1
  17. package/dist/cjs/utils/store.cjs.map +1 -1
  18. package/dist/esm/components/autocomplete/use-autocomplete.js +3 -6
  19. package/dist/esm/components/autocomplete/use-autocomplete.js.map +1 -1
  20. package/dist/esm/components/calendar/use-calendar.js.map +1 -1
  21. package/dist/esm/components/date-picker/use-date-picker.js +2 -8
  22. package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
  23. package/dist/esm/components/indicator/indicator.js.map +1 -1
  24. package/dist/esm/components/number-input/use-number-input.js.map +1 -1
  25. package/dist/esm/components/slider/use-slider.js.map +1 -1
  26. package/dist/esm/components/textarea/use-autosize.js.map +1 -1
  27. package/dist/esm/components/toggle/use-toggle-group.js +1 -1
  28. package/dist/esm/components/toggle/use-toggle-group.js.map +1 -1
  29. package/dist/esm/core/css/calc.js.map +1 -1
  30. package/dist/esm/core/css/css.js.map +1 -1
  31. package/dist/esm/core/css/gradient.js.map +1 -1
  32. package/dist/esm/core/css/grid.js.map +1 -1
  33. package/dist/esm/hooks/use-counter/index.js.map +1 -1
  34. package/dist/esm/utils/store.js.map +1 -1
  35. package/dist/types/components/accordion/accordion.d.ts +4 -2
  36. package/dist/types/components/accordion/use-accordion.d.ts +11 -11
  37. package/dist/types/components/airy/airy.d.ts +3 -2
  38. package/dist/types/components/alert/alert.d.ts +5 -2
  39. package/dist/types/components/alert/alert.style.d.ts +1 -1
  40. package/dist/types/components/alpha-slider/alpha-slider.d.ts +3 -2
  41. package/dist/types/components/aspect-ratio/aspect-ratio.d.ts +2 -2
  42. package/dist/types/components/autocomplete/autocomplete.d.ts +4 -2
  43. package/dist/types/components/autocomplete/autocomplete.style.d.ts +1 -1
  44. package/dist/types/components/autocomplete/use-autocomplete.d.ts +7 -5
  45. package/dist/types/components/avatar/avatar.d.ts +5 -5
  46. package/dist/types/components/avatar/avatar.style.d.ts +1 -1
  47. package/dist/types/components/avatar/use-avatar-group.d.ts +2 -2
  48. package/dist/types/components/badge/badge.d.ts +2 -2
  49. package/dist/types/components/bleed/bleed.d.ts +2 -2
  50. package/dist/types/components/blockquote/blockquote.d.ts +2 -2
  51. package/dist/types/components/breadcrumb/breadcrumb.d.ts +2 -2
  52. package/dist/types/components/breadcrumb/use-breadcrumb.d.ts +2 -2
  53. package/dist/types/components/button/button-group.d.ts +1 -0
  54. package/dist/types/components/button/button.d.ts +3 -2
  55. package/dist/types/components/button/icon-button.d.ts +2 -2
  56. package/dist/types/components/calendar/calendar.d.ts +3 -2
  57. package/dist/types/components/calendar/calendar.style.d.ts +2 -2
  58. package/dist/types/components/calendar/use-calendar.d.ts +9 -8
  59. package/dist/types/components/card/card.d.ts +2 -2
  60. package/dist/types/components/carousel/carousel.d.ts +3 -2
  61. package/dist/types/components/carousel/carousel.style.d.ts +2 -2
  62. package/dist/types/components/carousel/use-carousel.d.ts +3 -3
  63. package/dist/types/components/center/center.d.ts +2 -2
  64. package/dist/types/components/chart/chart.d.ts +5 -5
  65. package/dist/types/components/chart/radar-chart.d.ts +2 -2
  66. package/dist/types/components/chart/radial-chart.d.ts +2 -2
  67. package/dist/types/components/chart/use-chart.d.ts +2 -2
  68. package/dist/types/components/checkbox/checkbox-group.d.ts +2 -0
  69. package/dist/types/components/checkbox/checkbox.d.ts +5 -4
  70. package/dist/types/components/checkbox/use-checkbox-group.d.ts +3 -2
  71. package/dist/types/components/checkbox/use-checkbox.d.ts +1 -0
  72. package/dist/types/components/checkbox-card/checkbox-card-group.d.ts +3 -0
  73. package/dist/types/components/checkbox-card/checkbox-card.d.ts +7 -5
  74. package/dist/types/components/checkbox-card/checkbox-card.style.d.ts +1 -1
  75. package/dist/types/components/circle-progress/circle-progress.d.ts +3 -2
  76. package/dist/types/components/close-button/close-button.d.ts +3 -2
  77. package/dist/types/components/code/code.d.ts +2 -2
  78. package/dist/types/components/collapse/collapse.d.ts +3 -2
  79. package/dist/types/components/color-picker/color-picker.d.ts +6 -2
  80. package/dist/types/components/color-picker/color-picker.style.d.ts +1 -1
  81. package/dist/types/components/color-picker/use-color-picker.d.ts +5 -2
  82. package/dist/types/components/color-selector/color-selector.d.ts +6 -2
  83. package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
  84. package/dist/types/components/color-selector/use-color-selector.d.ts +5 -3
  85. package/dist/types/components/color-swatch/color-swatch.d.ts +2 -2
  86. package/dist/types/components/container/container.d.ts +2 -2
  87. package/dist/types/components/data-list/data-list.d.ts +2 -2
  88. package/dist/types/components/data-list/data-list.style.d.ts +1 -1
  89. package/dist/types/components/date-picker/date-picker.d.ts +5 -2
  90. package/dist/types/components/date-picker/use-date-picker.d.ts +7 -4
  91. package/dist/types/components/drawer/drawer.d.ts +5 -2
  92. package/dist/types/components/drawer/drawer.style.d.ts +2 -2
  93. package/dist/types/components/drawer/use-drawer.d.ts +2 -0
  94. package/dist/types/components/dropzone/dropzone.d.ts +8 -5
  95. package/dist/types/components/dropzone/dropzone.style.d.ts +1 -1
  96. package/dist/types/components/dropzone/use-dropzone.d.ts +1 -0
  97. package/dist/types/components/editable/editable.d.ts +5 -4
  98. package/dist/types/components/editable/use-editable.d.ts +3 -2
  99. package/dist/types/components/em/em.d.ts +2 -2
  100. package/dist/types/components/empty-state/empty-state.d.ts +2 -2
  101. package/dist/types/components/empty-state/empty-state.style.d.ts +2 -2
  102. package/dist/types/components/fade/fade.d.ts +3 -2
  103. package/dist/types/components/fade-scale/fade-scale.d.ts +1 -0
  104. package/dist/types/components/field/field.d.ts +3 -3
  105. package/dist/types/components/field/use-field-props.d.ts +3 -3
  106. package/dist/types/components/fieldset/fieldset.d.ts +4 -3
  107. package/dist/types/components/file-button/file-button.d.ts +4 -2
  108. package/dist/types/components/file-button/use-file-button.d.ts +20 -18
  109. package/dist/types/components/file-input/file-input.d.ts +4 -2
  110. package/dist/types/components/file-input/file-input.style.d.ts +1 -1
  111. package/dist/types/components/file-input/use-file-input.d.ts +16 -15
  112. package/dist/types/components/flex/flex.d.ts +2 -2
  113. package/dist/types/components/flip/flip.d.ts +5 -4
  114. package/dist/types/components/float/float.d.ts +2 -2
  115. package/dist/types/components/form/form.d.ts +4 -3
  116. package/dist/types/components/form/form.style.d.ts +1 -1
  117. package/dist/types/components/format/format-byte.d.ts +4 -4
  118. package/dist/types/components/format/format-date-time.d.ts +4 -4
  119. package/dist/types/components/format/format-number.d.ts +2 -2
  120. package/dist/types/components/format/use-format-byte.d.ts +1 -0
  121. package/dist/types/components/format/use-format-date-time.d.ts +1 -0
  122. package/dist/types/components/format/use-format-number.d.ts +1 -0
  123. package/dist/types/components/grid/grid-item.d.ts +2 -2
  124. package/dist/types/components/grid/grid.d.ts +2 -2
  125. package/dist/types/components/group/group.d.ts +3 -2
  126. package/dist/types/components/group/use-group.d.ts +2 -2
  127. package/dist/types/components/heading/heading.d.ts +2 -2
  128. package/dist/types/components/highlight/highlight.d.ts +2 -0
  129. package/dist/types/components/hue-slider/hue-slider.d.ts +4 -3
  130. package/dist/types/components/icon/icon.d.ts +5 -5
  131. package/dist/types/components/image/image.d.ts +2 -2
  132. package/dist/types/components/indicator/indicator.d.ts +5 -4
  133. package/dist/types/components/infinite-scroll-area/infinite-scroll-area.d.ts +2 -2
  134. package/dist/types/components/input/input-addon.d.ts +2 -2
  135. package/dist/types/components/input/input-element.d.ts +2 -2
  136. package/dist/types/components/input/input-group.d.ts +2 -0
  137. package/dist/types/components/input/input.d.ts +3 -2
  138. package/dist/types/components/kbd/kbd.d.ts +2 -2
  139. package/dist/types/components/link/link.d.ts +2 -2
  140. package/dist/types/components/link-box/link-box.d.ts +2 -2
  141. package/dist/types/components/list/list.d.ts +2 -2
  142. package/dist/types/components/loading/loading-provider.d.ts +2 -2
  143. package/dist/types/components/loading/loading.d.ts +4 -3
  144. package/dist/types/components/loading/use-loading-component.d.ts +1 -0
  145. package/dist/types/components/mark/mark.d.ts +2 -2
  146. package/dist/types/components/menu/menu.d.ts +3 -2
  147. package/dist/types/components/menu/menu.style.d.ts +2 -2
  148. package/dist/types/components/menu/use-menu.d.ts +11 -11
  149. package/dist/types/components/modal/modal.d.ts +6 -2
  150. package/dist/types/components/modal/modal.style.d.ts +2 -2
  151. package/dist/types/components/native-accordion/native-accordion.d.ts +2 -2
  152. package/dist/types/components/native-accordion/use-native-accordion.d.ts +2 -2
  153. package/dist/types/components/native-popover/native-popover.d.ts +2 -2
  154. package/dist/types/components/native-select/native-select.d.ts +4 -2
  155. package/dist/types/components/native-select/use-native-select.d.ts +1 -0
  156. package/dist/types/components/native-table/native-table.d.ts +4 -4
  157. package/dist/types/components/notice/notice.style.d.ts +1 -1
  158. package/dist/types/components/notice/use-notice.d.ts +3 -0
  159. package/dist/types/components/number-input/number-input.d.ts +3 -2
  160. package/dist/types/components/number-input/number-input.style.d.ts +1 -1
  161. package/dist/types/components/number-input/use-number-input.d.ts +1 -0
  162. package/dist/types/components/pagination/pagination.d.ts +3 -2
  163. package/dist/types/components/pagination/use-pagination.d.ts +2 -2
  164. package/dist/types/components/password-input/password-input.d.ts +3 -2
  165. package/dist/types/components/password-input/strength-meter.d.ts +2 -2
  166. package/dist/types/components/password-input/use-password-input.d.ts +3 -2
  167. package/dist/types/components/picture/picture.d.ts +1 -0
  168. package/dist/types/components/pin-input/pin-input.d.ts +4 -2
  169. package/dist/types/components/pin-input/use-pin-input.d.ts +8 -7
  170. package/dist/types/components/popover/popover.d.ts +3 -2
  171. package/dist/types/components/progress/progress.d.ts +4 -4
  172. package/dist/types/components/progress/use-progress.d.ts +706 -706
  173. package/dist/types/components/qr-code/qr-code.d.ts +2 -2
  174. package/dist/types/components/radio/radio-group.d.ts +2 -0
  175. package/dist/types/components/radio/radio.d.ts +5 -4
  176. package/dist/types/components/radio/use-radio-group.d.ts +3 -2
  177. package/dist/types/components/radio/use-radio.d.ts +1 -0
  178. package/dist/types/components/radio-card/radio-card-group.d.ts +3 -0
  179. package/dist/types/components/radio-card/radio-card.d.ts +7 -5
  180. package/dist/types/components/radio-card/radio-card.style.d.ts +1 -1
  181. package/dist/types/components/rating/use-rating.d.ts +8 -7
  182. package/dist/types/components/reorder/reorder.d.ts +3 -2
  183. package/dist/types/components/reorder/use-reorder.d.ts +3 -3
  184. package/dist/types/components/resizable/resizable.d.ts +2 -2
  185. package/dist/types/components/resizable/use-resizable.d.ts +2 -2
  186. package/dist/types/components/ripple/ripple.d.ts +3 -2
  187. package/dist/types/components/ripple/use-ripple.d.ts +2 -2
  188. package/dist/types/components/rotate/rotate.d.ts +3 -2
  189. package/dist/types/components/saturation-slider/saturation-slider.d.ts +2 -2
  190. package/dist/types/components/saturation-slider/use-saturation-slider.d.ts +3 -2
  191. package/dist/types/components/scroll-area/scroll-area.d.ts +2 -2
  192. package/dist/types/components/segmented-control/segmented-control.d.ts +3 -2
  193. package/dist/types/components/segmented-control/segmented-control.style.d.ts +2 -2
  194. package/dist/types/components/segmented-control/use-segmented-control.d.ts +10 -9
  195. package/dist/types/components/select/select.d.ts +4 -2
  196. package/dist/types/components/select/use-select.d.ts +6 -4
  197. package/dist/types/components/separator/separator.d.ts +2 -2
  198. package/dist/types/components/simple-grid/simple-grid.d.ts +3 -2
  199. package/dist/types/components/skeleton/skeleton.d.ts +2 -2
  200. package/dist/types/components/slide/slide.d.ts +3 -2
  201. package/dist/types/components/slide-fade/slide-fade.d.ts +3 -2
  202. package/dist/types/components/slider/slider.d.ts +2 -2
  203. package/dist/types/components/slider/use-slider.d.ts +3 -2
  204. package/dist/types/components/snacks/snacks.d.ts +2 -0
  205. package/dist/types/components/snacks/use-snacks.d.ts +1 -0
  206. package/dist/types/components/stack/h-stack.d.ts +2 -2
  207. package/dist/types/components/stack/stack.d.ts +2 -2
  208. package/dist/types/components/stack/v-stack.d.ts +2 -2
  209. package/dist/types/components/stack/z-stack.d.ts +2 -2
  210. package/dist/types/components/stat/stat.d.ts +2 -2
  211. package/dist/types/components/stat/stat.style.d.ts +2 -2
  212. package/dist/types/components/status/status.d.ts +2 -2
  213. package/dist/types/components/steps/steps.d.ts +2 -2
  214. package/dist/types/components/steps/steps.style.d.ts +1 -1
  215. package/dist/types/components/steps/use-steps.d.ts +10 -10
  216. package/dist/types/components/switch/switch.d.ts +2 -2
  217. package/dist/types/components/switch/use-switch.d.ts +1 -0
  218. package/dist/types/components/table/table.d.ts +4 -2
  219. package/dist/types/components/tabs/tabs.d.ts +2 -2
  220. package/dist/types/components/tabs/use-tabs.d.ts +16 -16
  221. package/dist/types/components/tag/tag.d.ts +2 -2
  222. package/dist/types/components/tag/tag.style.d.ts +1 -1
  223. package/dist/types/components/text/text.d.ts +2 -2
  224. package/dist/types/components/textarea/textarea.d.ts +4 -2
  225. package/dist/types/components/textarea/use-autosize.d.ts +2 -2
  226. package/dist/types/components/timeline/timeline.d.ts +5 -5
  227. package/dist/types/components/timeline/timeline.style.d.ts +2 -2
  228. package/dist/types/components/tip/tip.d.ts +2 -0
  229. package/dist/types/components/toggle/toggle-group.d.ts +1 -1
  230. package/dist/types/components/toggle/toggle.d.ts +7 -5
  231. package/dist/types/components/toggle/use-toggle-group.d.ts +2 -2
  232. package/dist/types/components/toggle/use-toggle.d.ts +3 -2
  233. package/dist/types/components/tooltip/tooltip.d.ts +4 -2
  234. package/dist/types/components/visually-hidden/visually-hidden.d.ts +2 -2
  235. package/dist/types/components/wrap/wrap.d.ts +3 -2
  236. package/dist/types/core/components/create-component.d.ts +7 -9
  237. package/dist/types/core/components/index.types.d.ts +0 -1
  238. package/dist/types/core/components/use-component-style.d.ts +0 -2
  239. package/dist/types/core/components/utils.d.ts +0 -1
  240. package/dist/types/core/constant.d.ts +0 -1
  241. package/dist/types/core/css/calc.d.ts +0 -1
  242. package/dist/types/core/css/config.d.ts +0 -1
  243. package/dist/types/core/css/css.d.ts +0 -1
  244. package/dist/types/core/css/index.types.d.ts +0 -1
  245. package/dist/types/core/css/styles.d.ts +0 -1
  246. package/dist/types/core/css/token.d.ts +0 -1
  247. package/dist/types/core/css/use-css.d.ts +0 -1
  248. package/dist/types/core/css/utils.d.ts +0 -2
  249. package/dist/types/core/generated-theme-tokens.types.d.ts +0 -1
  250. package/dist/types/core/index.d.ts +0 -2
  251. package/dist/types/core/system/color-mode-provider.d.ts +2 -2
  252. package/dist/types/core/system/config.d.ts +0 -1
  253. package/dist/types/core/system/create-system.d.ts +0 -1
  254. package/dist/types/core/system/factory.d.ts +0 -1
  255. package/dist/types/core/system/index.types.d.ts +0 -1
  256. package/dist/types/core/system/storage-script.d.ts +3 -3
  257. package/dist/types/core/system/styled.d.ts +2 -3
  258. package/dist/types/core/system/system-provider.d.ts +2 -2
  259. package/dist/types/core/system/var.d.ts +0 -2
  260. package/dist/types/hooks/use-async-callback/index.d.ts +1 -0
  261. package/dist/types/hooks/use-breakpoint/use-breakpoint-state.d.ts +2 -2
  262. package/dist/types/hooks/use-clickable/index.d.ts +7 -7
  263. package/dist/types/hooks/use-clipboard/index.d.ts +2 -2
  264. package/dist/types/hooks/use-combobox/index.d.ts +13 -12
  265. package/dist/types/hooks/use-counter/index.d.ts +2 -2
  266. package/dist/types/hooks/use-descendants/index.d.ts +2 -2
  267. package/dist/types/hooks/use-field-sizing/index.d.ts +2 -2
  268. package/dist/types/hooks/use-hover/index.d.ts +2 -2
  269. package/dist/types/hooks/use-popper/index.d.ts +2 -2
  270. package/dist/types/hooks/use-resize-observer/index.d.ts +3 -3
  271. package/dist/types/index.d.ts +103 -0
  272. package/dist/types/providers/i18n-provider/i18n-provider.d.ts +3 -3
  273. package/dist/types/providers/ui-provider/ui-provider.d.ts +3 -2
  274. package/dist/types/utils/children.d.ts +2 -2
  275. package/package.json +29 -10
@@ -1 +1 @@
1
- {"version":3,"file":"grid.cjs","names":["repeats: { [key: string]: string }","globalValues","splitValues","isCSSFunction","value","isCSSToken","getCSSFunction","values","generateCalc"],"sources":["../../../../src/core/css/grid.ts"],"sourcesContent":["import type { TransformOptions } from \"./utils\"\nimport { generateCalc } from \"./calc\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst repeats: { [key: string]: string } = {\n fill: \"auto-fill\",\n fit: \"auto-fit\",\n}\n\nexport function grid(value: any, { system, ...rest }: TransformOptions) {\n if (value == null || globalValues.has(value)) return value\n\n const values = splitValues(value, (current) => current === \" \")\n\n if (!values.length) return value\n\n const computedValues = values.map((value): string => {\n const prevent = isCSSFunction(value)\n\n if (!prevent) {\n const token = `sizes.${value}`\n\n if (isCSSToken(system)(token)) {\n return system.cssMap![token]!.ref\n } else {\n return value\n }\n }\n\n const { type, values } = getCSSFunction(value)\n\n if (!type || !values) return value\n\n if (type === \"repeat\") {\n let [repeat, tracks] = splitValues(values)\n\n repeat = repeat && repeat in repeats ? repeats[repeat] : repeat\n tracks = grid(tracks, { system, ...rest })\n\n return `repeat(${repeat}, ${tracks})`\n } else {\n return generateCalc(\"sizes\")(value, { system, ...rest })\n }\n })\n\n return computedValues.join(\" \")\n}\n"],"mappings":";;;;AAUA,MAAMA,UAAqC;CACzC,MAAM;CACN,KAAK;CACN;AAED,SAAgB,KAAK,OAAY,EAAE,QAAQ,GAAG,QAA0B;AACtE,KAAI,SAAS,QAAQC,2BAAa,IAAI,MAAM,CAAE,QAAO;CAErD,MAAM,SAASC,0BAAY,QAAQ,YAAY,YAAY,IAAI;AAE/D,KAAI,CAAC,OAAO,OAAQ,QAAO;AA+B3B,QA7BuB,OAAO,KAAK,YAAkB;AAGnD,MAAI,CAFYC,4BAAcC,QAAM,EAEtB;GACZ,MAAM,QAAQ,SAASA;AAEvB,OAAIC,yBAAW,OAAO,CAAC,MAAM,CAC3B,QAAO,OAAO,OAAQ,OAAQ;OAE9B,QAAOD;;EAIX,MAAM,EAAE,MAAM,qBAAWE,6BAAeF,QAAM;AAE9C,MAAI,CAAC,QAAQ,CAACG,SAAQ,QAAOH;AAE7B,MAAI,SAAS,UAAU;GACrB,IAAI,CAAC,QAAQ,UAAUF,0BAAYK,SAAO;AAE1C,YAAS,UAAU,UAAU,UAAU,QAAQ,UAAU;AACzD,YAAS,KAAK,QAAQ;IAAE;IAAQ,GAAG;IAAM,CAAC;AAE1C,UAAO,UAAU,OAAO,IAAI,OAAO;QAEnC,QAAOC,0BAAa,QAAQ,CAACJ,SAAO;GAAE;GAAQ,GAAG;GAAM,CAAC;GAE1D,CAEoB,KAAK,IAAI"}
1
+ {"version":3,"file":"grid.cjs","names":["repeats: { [key: string]: string }","globalValues","splitValues","isCSSFunction","value","isCSSToken","getCSSFunction","values","generateCalc"],"sources":["../../../../src/core/css/grid.ts"],"sourcesContent":["import type { TransformOptions } from \"./utils\"\nimport { generateCalc } from \"./calc\"\nimport {\n getCSSFunction,\n globalValues,\n isCSSFunction,\n isCSSToken,\n splitValues,\n} from \"./utils\"\n\nconst repeats: { [key: string]: string } = {\n fill: \"auto-fill\",\n fit: \"auto-fit\",\n}\n\nexport function grid(value: any, { system, ...rest }: TransformOptions) {\n if (value == null || globalValues.has(value)) return value\n\n const values = splitValues(value, (current) => current === \" \")\n\n if (!values.length) return value\n\n const computedValues = values.map((value): string => {\n const prevent = isCSSFunction(value)\n\n if (!prevent) {\n const token = `sizes.${value}`\n\n if (isCSSToken(system)(token)) {\n return system.cssMap[token]!.ref\n } else {\n return value\n }\n }\n\n const { type, values } = getCSSFunction(value)\n\n if (!type || !values) return value\n\n if (type === \"repeat\") {\n let [repeat, tracks] = splitValues(values)\n\n repeat = repeat && repeat in repeats ? repeats[repeat] : repeat\n tracks = grid(tracks, { system, ...rest })\n\n return `repeat(${repeat}, ${tracks})`\n } else {\n return generateCalc(\"sizes\")(value, { system, ...rest })\n }\n })\n\n return computedValues.join(\" \")\n}\n"],"mappings":";;;;AAUA,MAAMA,UAAqC;CACzC,MAAM;CACN,KAAK;CACN;AAED,SAAgB,KAAK,OAAY,EAAE,QAAQ,GAAG,QAA0B;AACtE,KAAI,SAAS,QAAQC,2BAAa,IAAI,MAAM,CAAE,QAAO;CAErD,MAAM,SAASC,0BAAY,QAAQ,YAAY,YAAY,IAAI;AAE/D,KAAI,CAAC,OAAO,OAAQ,QAAO;AA+B3B,QA7BuB,OAAO,KAAK,YAAkB;AAGnD,MAAI,CAFYC,4BAAcC,QAAM,EAEtB;GACZ,MAAM,QAAQ,SAASA;AAEvB,OAAIC,yBAAW,OAAO,CAAC,MAAM,CAC3B,QAAO,OAAO,OAAO,OAAQ;OAE7B,QAAOD;;EAIX,MAAM,EAAE,MAAM,qBAAWE,6BAAeF,QAAM;AAE9C,MAAI,CAAC,QAAQ,CAACG,SAAQ,QAAOH;AAE7B,MAAI,SAAS,UAAU;GACrB,IAAI,CAAC,QAAQ,UAAUF,0BAAYK,SAAO;AAE1C,YAAS,UAAU,UAAU,UAAU,QAAQ,UAAU;AACzD,YAAS,KAAK,QAAQ;IAAE;IAAQ,GAAG;IAAM,CAAC;AAE1C,UAAO,UAAU,OAAO,IAAI,OAAO;QAEnC,QAAOC,0BAAa,QAAQ,CAACJ,SAAO;GAAE;GAAQ,GAAG;GAAM,CAAC;GAE1D,CAEoB,KAAK,IAAI"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","names":["useCallbackRef","countDecimal","value","next: number | string"],"sources":["../../../../src/hooks/use-counter/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport {\n clampNumber,\n countDecimal,\n toPrecision,\n useCallbackRef,\n} from \"../../utils\"\n\nconst parse = (value: number | string): number =>\n parseFloat(value.toString().replace(/[^\\w.-]+/g, \"\"))\n\nconst getCountDecimal = (value: number, step: number): number =>\n Math.max(countDecimal(step), countDecimal(value))\n\nconst casting = (\n value: number | string,\n step: number,\n precision?: number,\n): string | undefined => {\n value = parse(value)\n\n return !Number.isNaN(value)\n ? toPrecision(value, precision ?? getCountDecimal(value, step))\n : undefined\n}\n\nexport interface UseCounterProps {\n /**\n * The initial value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n defaultValue?: number | string\n /**\n * This controls the value update behavior in general.\n *\n * - If `true` and you use the stepper or up/down arrow keys,\n * the value will not exceed the `max` or go lower than `min`.\n *\n * - If `false`, the value will be allowed to go out of range.\n *\n * @default true\n */\n keepWithinRange?: boolean\n /**\n * The maximum value of the counter\n *\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number\n /**\n * The minimum value of the counter\n *\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number\n /**\n * The number of decimal points used to round the value.\n */\n precision?: number\n /**\n * The step used to increment or decrement the value.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n value?: number | string\n /**\n * The callback fired when the value changes.\n */\n onChange?: (valueAsString: string, valueAsNumber: number) => void\n}\n\n/**\n * `useCounter` is a custom hook that returns the current counter value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-counter\n */\nexport const useCounter = ({\n keepWithinRange = true,\n max: maxValue = Number.MAX_SAFE_INTEGER,\n min: minValue = Number.MIN_SAFE_INTEGER,\n step: stepProp = 1,\n ...props\n}: UseCounterProps = {}) => {\n const onChange = useCallbackRef(props.onChange)\n\n const [defaultValue, setValue] = useState<number | string>(() => {\n if (props.defaultValue == null) return \"\"\n\n return casting(props.defaultValue, stepProp, props.precision) ?? \"\"\n })\n\n const isControlled = typeof props.value !== \"undefined\"\n const value = isControlled ? (props.value as number | string) : defaultValue\n\n const countDecimal = getCountDecimal(parse(value), stepProp)\n\n const precision = props.precision ?? countDecimal\n\n const update = useCallback(\n (next: number | string) => {\n if (next === value) return\n\n if (!isControlled) setValue(next.toString())\n\n onChange(next.toString(), parse(next))\n },\n [onChange, isControlled, value],\n )\n\n const clamp = useCallback(\n (value: number) => {\n let nextValue = value\n\n if (keepWithinRange)\n nextValue = clampNumber(nextValue, minValue, maxValue)\n\n return toPrecision(nextValue, precision)\n },\n [precision, keepWithinRange, maxValue, minValue],\n )\n\n const increment = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") {\n next = parse(step)\n } else {\n next = parse(value) + step\n }\n\n next = clamp(next as number)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const decrement = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") {\n next = parse(-step)\n } else {\n next = parse(value) - step\n }\n\n next = clamp(next as number)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const reset = useCallback(() => {\n let next: number | string\n\n if (props.defaultValue == null) {\n next = \"\"\n } else {\n next = casting(props.defaultValue, stepProp, props.precision) ?? minValue\n }\n\n update(next)\n }, [props.defaultValue, props.precision, stepProp, update, minValue])\n\n const cast = useCallback(\n (value: number | string) => {\n const nextValue = casting(value, stepProp, precision) ?? minValue\n\n update(nextValue)\n },\n [precision, stepProp, update, minValue],\n )\n\n const valueAsNumber = parse(value)\n\n const out = valueAsNumber < minValue || maxValue < valueAsNumber\n const max = valueAsNumber === maxValue\n const min = valueAsNumber === minValue\n\n return {\n cast,\n clamp,\n decrement,\n increment,\n max,\n min,\n out,\n precision,\n reset,\n setValue,\n step: stepProp,\n update,\n value,\n valueAsNumber,\n }\n}\n\nexport type UseCounterReturn = ReturnType<typeof useCounter>\n"],"mappings":";;;;;;;;AAUA,MAAM,SAAS,UACb,WAAW,MAAM,UAAU,CAAC,QAAQ,aAAa,GAAG,CAAC;AAEvD,MAAM,mBAAmB,OAAe,SACtC,KAAK,wDAAiB,KAAK,sDAAe,MAAM,CAAC;AAEnD,MAAM,WACJ,OACA,MACA,cACuB;AACvB,SAAQ,MAAM,MAAM;AAEpB,QAAO,CAAC,OAAO,MAAM,MAAM,sDACX,OAAO,aAAa,gBAAgB,OAAO,KAAK,CAAC,GAC7D;;;;;;;AA0DN,MAAa,cAAc,EACzB,kBAAkB,MAClB,KAAK,WAAW,OAAO,kBACvB,KAAK,WAAW,OAAO,kBACvB,MAAM,WAAW,GACjB,GAAG,UACgB,EAAE,KAAK;CAC1B,MAAM,WAAWA,2BAAe,MAAM,SAAS;CAE/C,MAAM,CAAC,cAAc,sCAA4C;AAC/D,MAAI,MAAM,gBAAgB,KAAM,QAAO;AAEvC,SAAO,QAAQ,MAAM,cAAc,UAAU,MAAM,UAAU,IAAI;GACjE;CAEF,MAAM,eAAe,OAAO,MAAM,UAAU;CAC5C,MAAM,QAAQ,eAAgB,MAAM,QAA4B;CAEhE,MAAMC,iBAAe,gBAAgB,MAAM,MAAM,EAAE,SAAS;CAE5D,MAAM,YAAY,MAAM,aAAaA;CAErC,MAAM,iCACH,SAA0B;AACzB,MAAI,SAAS,MAAO;AAEpB,MAAI,CAAC,aAAc,UAAS,KAAK,UAAU,CAAC;AAE5C,WAAS,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;IAExC;EAAC;EAAU;EAAc;EAAM,CAChC;CAED,MAAM,gCACH,YAAkB;EACjB,IAAI,YAAYC;AAEhB,MAAI,gBACF,gEAAwB,WAAW,UAAU,SAAS;AAExD,4DAAmB,WAAW,UAAU;IAE1C;EAAC;EAAW;EAAiB;EAAU;EAAS,CACjD;CAED,MAAM,oCACH,OAAO,aAAa;EACnB,IAAIC;AAEJ,MAAI,UAAU,GACZ,QAAO,MAAM,KAAK;MAElB,QAAO,MAAM,MAAM,GAAG;AAGxB,SAAO,MAAM,KAAe;AAE5B,SAAO,KAAK;IAEd;EAAC;EAAO;EAAU;EAAQ;EAAM,CACjC;CAED,MAAM,oCACH,OAAO,aAAa;EACnB,IAAIA;AAEJ,MAAI,UAAU,GACZ,QAAO,MAAM,CAAC,KAAK;MAEnB,QAAO,MAAM,MAAM,GAAG;AAGxB,SAAO,MAAM,KAAe;AAE5B,SAAO,KAAK;IAEd;EAAC;EAAO;EAAU;EAAQ;EAAM,CACjC;CAED,MAAM,qCAA0B;EAC9B,IAAIA;AAEJ,MAAI,MAAM,gBAAgB,KACxB,QAAO;MAEP,QAAO,QAAQ,MAAM,cAAc,UAAU,MAAM,UAAU,IAAI;AAGnE,SAAO,KAAK;IACX;EAAC,MAAM;EAAc,MAAM;EAAW;EAAU;EAAQ;EAAS,CAAC;CAErE,MAAM,+BACH,YAA2B;AAG1B,SAFkB,QAAQD,SAAO,UAAU,UAAU,IAAI,SAExC;IAEnB;EAAC;EAAW;EAAU;EAAQ;EAAS,CACxC;CAED,MAAM,gBAAgB,MAAM,MAAM;AAMlC,QAAO;EACL;EACA;EACA;EACA;EACA,KARU,kBAAkB;EAS5B,KARU,kBAAkB;EAS5B,KAXU,gBAAgB,YAAY,WAAW;EAYjD;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACD"}
1
+ {"version":3,"file":"index.cjs","names":["useCallbackRef","countDecimal","value","next: number | string"],"sources":["../../../../src/hooks/use-counter/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useState } from \"react\"\nimport {\n clampNumber,\n countDecimal,\n toPrecision,\n useCallbackRef,\n} from \"../../utils\"\n\nconst parse = (value: number | string): number =>\n parseFloat(value.toString().replace(/[^\\w.-]+/g, \"\"))\n\nconst getCountDecimal = (value: number, step: number): number =>\n Math.max(countDecimal(step), countDecimal(value))\n\nconst casting = (\n value: number | string,\n step: number,\n precision?: number,\n): string | undefined => {\n value = parse(value)\n\n return !Number.isNaN(value)\n ? toPrecision(value, precision ?? getCountDecimal(value, step))\n : undefined\n}\n\nexport interface UseCounterProps {\n /**\n * The initial value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n defaultValue?: number | string\n /**\n * This controls the value update behavior in general.\n *\n * - If `true` and you use the stepper or up/down arrow keys,\n * the value will not exceed the `max` or go lower than `min`.\n *\n * - If `false`, the value will be allowed to go out of range.\n *\n * @default true\n */\n keepWithinRange?: boolean\n /**\n * The maximum value of the counter\n *\n * @default Number.MAX_SAFE_INTEGER\n */\n max?: number\n /**\n * The minimum value of the counter\n *\n * @default Number.MIN_SAFE_INTEGER\n */\n min?: number\n /**\n * The number of decimal points used to round the value.\n */\n precision?: number\n /**\n * The step used to increment or decrement the value.\n *\n * @default 1\n */\n step?: number\n /**\n * The value of the counter.\n * Should be less than `max` and greater than `min`.\n */\n value?: number | string\n /**\n * The callback fired when the value changes.\n */\n onChange?: (valueAsString: string, valueAsNumber: number) => void\n}\n\n/**\n * `useCounter` is a custom hook that returns the current counter value.\n *\n * @see https://yamada-ui.com/docs/hooks/use-counter\n */\nexport const useCounter = ({\n keepWithinRange = true,\n max: maxValue = Number.MAX_SAFE_INTEGER,\n min: minValue = Number.MIN_SAFE_INTEGER,\n step: stepProp = 1,\n ...props\n}: UseCounterProps = {}) => {\n const onChange = useCallbackRef(props.onChange)\n\n const [defaultValue, setValue] = useState<number | string>(() => {\n if (props.defaultValue == null) return \"\"\n\n return casting(props.defaultValue, stepProp, props.precision) ?? \"\"\n })\n\n const isControlled = typeof props.value !== \"undefined\"\n const value = isControlled ? (props.value as number | string) : defaultValue\n\n const countDecimal = getCountDecimal(parse(value), stepProp)\n\n const precision = props.precision ?? countDecimal\n\n const update = useCallback(\n (next: number | string) => {\n if (next === value) return\n\n if (!isControlled) setValue(next.toString())\n\n onChange(next.toString(), parse(next))\n },\n [onChange, isControlled, value],\n )\n\n const clamp = useCallback(\n (value: number) => {\n let nextValue = value\n\n if (keepWithinRange)\n nextValue = clampNumber(nextValue, minValue, maxValue)\n\n return toPrecision(nextValue, precision)\n },\n [precision, keepWithinRange, maxValue, minValue],\n )\n\n const increment = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") {\n next = parse(step)\n } else {\n next = parse(value) + step\n }\n\n next = clamp(next)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const decrement = useCallback(\n (step = stepProp) => {\n let next: number | string\n\n if (value === \"\") {\n next = parse(-step)\n } else {\n next = parse(value) - step\n }\n\n next = clamp(next)\n\n update(next)\n },\n [clamp, stepProp, update, value],\n )\n\n const reset = useCallback(() => {\n let next: number | string\n\n if (props.defaultValue == null) {\n next = \"\"\n } else {\n next = casting(props.defaultValue, stepProp, props.precision) ?? minValue\n }\n\n update(next)\n }, [props.defaultValue, props.precision, stepProp, update, minValue])\n\n const cast = useCallback(\n (value: number | string) => {\n const nextValue = casting(value, stepProp, precision) ?? minValue\n\n update(nextValue)\n },\n [precision, stepProp, update, minValue],\n )\n\n const valueAsNumber = parse(value)\n\n const out = valueAsNumber < minValue || maxValue < valueAsNumber\n const max = valueAsNumber === maxValue\n const min = valueAsNumber === minValue\n\n return {\n cast,\n clamp,\n decrement,\n increment,\n max,\n min,\n out,\n precision,\n reset,\n setValue,\n step: stepProp,\n update,\n value,\n valueAsNumber,\n }\n}\n\nexport type UseCounterReturn = ReturnType<typeof useCounter>\n"],"mappings":";;;;;;;;AAUA,MAAM,SAAS,UACb,WAAW,MAAM,UAAU,CAAC,QAAQ,aAAa,GAAG,CAAC;AAEvD,MAAM,mBAAmB,OAAe,SACtC,KAAK,wDAAiB,KAAK,sDAAe,MAAM,CAAC;AAEnD,MAAM,WACJ,OACA,MACA,cACuB;AACvB,SAAQ,MAAM,MAAM;AAEpB,QAAO,CAAC,OAAO,MAAM,MAAM,sDACX,OAAO,aAAa,gBAAgB,OAAO,KAAK,CAAC,GAC7D;;;;;;;AA0DN,MAAa,cAAc,EACzB,kBAAkB,MAClB,KAAK,WAAW,OAAO,kBACvB,KAAK,WAAW,OAAO,kBACvB,MAAM,WAAW,GACjB,GAAG,UACgB,EAAE,KAAK;CAC1B,MAAM,WAAWA,2BAAe,MAAM,SAAS;CAE/C,MAAM,CAAC,cAAc,sCAA4C;AAC/D,MAAI,MAAM,gBAAgB,KAAM,QAAO;AAEvC,SAAO,QAAQ,MAAM,cAAc,UAAU,MAAM,UAAU,IAAI;GACjE;CAEF,MAAM,eAAe,OAAO,MAAM,UAAU;CAC5C,MAAM,QAAQ,eAAgB,MAAM,QAA4B;CAEhE,MAAMC,iBAAe,gBAAgB,MAAM,MAAM,EAAE,SAAS;CAE5D,MAAM,YAAY,MAAM,aAAaA;CAErC,MAAM,iCACH,SAA0B;AACzB,MAAI,SAAS,MAAO;AAEpB,MAAI,CAAC,aAAc,UAAS,KAAK,UAAU,CAAC;AAE5C,WAAS,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;IAExC;EAAC;EAAU;EAAc;EAAM,CAChC;CAED,MAAM,gCACH,YAAkB;EACjB,IAAI,YAAYC;AAEhB,MAAI,gBACF,gEAAwB,WAAW,UAAU,SAAS;AAExD,4DAAmB,WAAW,UAAU;IAE1C;EAAC;EAAW;EAAiB;EAAU;EAAS,CACjD;CAED,MAAM,oCACH,OAAO,aAAa;EACnB,IAAIC;AAEJ,MAAI,UAAU,GACZ,QAAO,MAAM,KAAK;MAElB,QAAO,MAAM,MAAM,GAAG;AAGxB,SAAO,MAAM,KAAK;AAElB,SAAO,KAAK;IAEd;EAAC;EAAO;EAAU;EAAQ;EAAM,CACjC;CAED,MAAM,oCACH,OAAO,aAAa;EACnB,IAAIA;AAEJ,MAAI,UAAU,GACZ,QAAO,MAAM,CAAC,KAAK;MAEnB,QAAO,MAAM,MAAM,GAAG;AAGxB,SAAO,MAAM,KAAK;AAElB,SAAO,KAAK;IAEd;EAAC;EAAO;EAAU;EAAQ;EAAM,CACjC;CAED,MAAM,qCAA0B;EAC9B,IAAIA;AAEJ,MAAI,MAAM,gBAAgB,KACxB,QAAO;MAEP,QAAO,QAAQ,MAAM,cAAc,UAAU,MAAM,UAAU,IAAI;AAGnE,SAAO,KAAK;IACX;EAAC,MAAM;EAAc,MAAM;EAAW;EAAU;EAAQ;EAAS,CAAC;CAErE,MAAM,+BACH,YAA2B;AAG1B,SAFkB,QAAQD,SAAO,UAAU,UAAU,IAAI,SAExC;IAEnB;EAAC;EAAW;EAAU;EAAQ;EAAS,CACxC;CAED,MAAM,gBAAgB,MAAM,MAAM;AAMlC,QAAO;EACL;EACA;EACA;EACA;EACA,KARU,kBAAkB;EAS5B,KARU,kBAAkB;EAS5B,KAXU,gBAAgB,YAAY,WAAW;EAYjD;EACA;EACA;EACA,MAAM;EACN;EACA;EACA;EACD"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.cjs","names":[],"sources":["../../../src/utils/store.ts"],"sourcesContent":["\"use client\"\n\nimport type { Path, Value } from \"@yamada-ui/utils\"\nimport {\n getMemoizedObject,\n isArray,\n isObject,\n isUndefined,\n runIfFn,\n toArray,\n} from \"@yamada-ui/utils\"\nimport { useSyncExternalStore } from \"react\"\n\nconst DEFAULT_IDENTIFIER = \"default\"\n\ninterface Subscribe {\n (listener: () => void): () => void\n}\n\ninterface Store<Y> {\n queue: Map<string, (() => void)[]>\n ref: { current: Y }\n get: () => Y\n set: (nextState: ((prevState: Y) => Y) | Y, key?: string | string[]) => void\n update: (key?: string | string[]) => void\n key?: string\n}\n\ntype IndexOrPath<Y> = Y extends any[]\n ? number\n : Y extends object\n ? Path<Y>\n : undefined\n\ntype ReturnArrayValue<Y extends any[], D> = D extends number\n ? undefined | Y[D]\n : Y\n\ntype ReturnObjectValue<Y extends object, D> = D extends string ? Value<Y, D> : Y\n\ntype ReturnValue<Y, D> = Y extends any[]\n ? ReturnArrayValue<Y, D>\n : Y extends object\n ? ReturnObjectValue<Y, D>\n : Y\n\ninterface UseStore<Y> {\n <D extends IndexOrPath<Y>>(path?: D, key?: string): ReturnValue<Y, D>\n}\n\ninterface CreateMethod<Y, M extends Function> {\n (store: Store<Y>): M\n}\n\ntype Methods<Y, M extends CustomMethods<Y>> = Omit<\n Store<Y>,\n \"key\" | \"update\"\n> & {\n [D in keyof M]: ReturnType<M[D]>\n} & { update: () => void }\n\ninterface CustomMethods<Y> {\n [key: string]: CreateMethod<Y, (...args: any[]) => Promise<void> | void>\n}\n\ninterface CreateStoreOptions<Y> {\n proxyHandler?: ProxyHandler<{ current: Y }>\n subscribe?: CreateMethod<Y, Subscribe>\n}\n\nexport function createStore<Y, M extends CustomMethods<Y>>(\n initialState: (() => Y) | Y,\n additionalMethods?: M,\n options: CreateStoreOptions<Y> = {},\n): [UseStore<Y>, Methods<Y, M>] {\n const queue = new Map<string, (() => void)[]>()\n const ref = new Proxy(\n { current: runIfFn(initialState) },\n { ...options.proxyHandler },\n )\n\n function get() {\n return ref.current\n }\n\n function executeQueue(key: string) {\n const listeners = queue.get(key) ?? []\n\n if (!listeners.length)\n console.warn(`createStore: ${key} is not subscribed.`)\n\n listeners.forEach((listener) => listener())\n }\n\n function update(key?: string | string[]) {\n if (!isUndefined(key)) {\n toArray(key).forEach(executeQueue)\n }\n\n executeQueue(DEFAULT_IDENTIFIER)\n }\n\n function set(nextState: ((prevState: Y) => Y) | Y, key?: string | string[]) {\n ref.current = runIfFn(nextState, ref.current)\n\n update(key)\n }\n\n const methods = { ref, get, queue, set, update }\n\n function useStore<D extends IndexOrPath<Y>>(path?: D, key?: string) {\n const customSubscribe = options.subscribe?.({\n key,\n ...methods,\n })\n\n const subscribe = function (listener: () => void) {\n if (key) {\n const listeners = queue.get(key) ?? []\n\n if (listeners.length)\n console.warn(`createStore: ${key} is already subscribed.`)\n\n queue.set(key, [listener])\n } else {\n const listeners = queue.get(DEFAULT_IDENTIFIER) ?? []\n\n queue.set(DEFAULT_IDENTIFIER, [...listeners, listener])\n }\n\n return function () {\n if (key) {\n queue.delete(key)\n } else {\n const listeners = queue.get(DEFAULT_IDENTIFIER) ?? []\n\n queue.set(\n DEFAULT_IDENTIFIER,\n listeners.filter((fn) => fn !== listener),\n )\n }\n }\n }\n\n function getSnapshot<H extends ReturnValue<Y, D>>(): H {\n if (!isUndefined(path)) {\n if (isObject(ref.current)) {\n return getMemoizedObject(ref.current, path) as H\n } else if (isArray(ref.current)) {\n return ref.current[path as number] as unknown as H\n }\n }\n\n return ref.current as unknown as H\n }\n\n return useSyncExternalStore(\n customSubscribe ?? subscribe,\n getSnapshot,\n getSnapshot,\n )\n }\n\n const customMethods = Object.fromEntries(\n Object.entries(additionalMethods ?? {}).map(([key, value]) => [\n key,\n value(methods),\n ]),\n ) as { [D in keyof M]: ReturnType<M[D]> }\n\n return [useStore, { ...methods, ...customMethods }]\n}\n"],"mappings":";;;;;;;AAaA,MAAM,qBAAqB;AAyD3B,SAAgB,YACd,cACA,mBACA,UAAiC,EAAE,EACL;CAC9B,MAAM,wBAAQ,IAAI,KAA6B;CAC/C,MAAM,MAAM,IAAI,MACd,EAAE,uCAAiB,aAAa,EAAE,EAClC,EAAE,GAAG,QAAQ,cAAc,CAC5B;CAED,SAAS,MAAM;AACb,SAAO,IAAI;;CAGb,SAAS,aAAa,KAAa;EACjC,MAAM,YAAY,MAAM,IAAI,IAAI,IAAI,EAAE;AAEtC,MAAI,CAAC,UAAU,OACb,SAAQ,KAAK,gBAAgB,IAAI,qBAAqB;AAExD,YAAU,SAAS,aAAa,UAAU,CAAC;;CAG7C,SAAS,OAAO,KAAyB;AACvC,MAAI,mCAAa,IAAI,CACnB,+BAAQ,IAAI,CAAC,QAAQ,aAAa;AAGpC,eAAa,mBAAmB;;CAGlC,SAAS,IAAI,WAAsC,KAAyB;AAC1E,MAAI,wCAAkB,WAAW,IAAI,QAAQ;AAE7C,SAAO,IAAI;;CAGb,MAAM,UAAU;EAAE;EAAK;EAAK;EAAO;EAAK;EAAQ;CAEhD,SAAS,SAAmC,MAAU,KAAc;EAClE,MAAM,kBAAkB,QAAQ,YAAY;GAC1C;GACA,GAAG;GACJ,CAAC;EAEF,MAAM,YAAY,SAAU,UAAsB;AAChD,OAAI,KAAK;AAGP,SAFkB,MAAM,IAAI,IAAI,IAAI,EAAE,EAExB,OACZ,SAAQ,KAAK,gBAAgB,IAAI,yBAAyB;AAE5D,UAAM,IAAI,KAAK,CAAC,SAAS,CAAC;UACrB;IACL,MAAM,YAAY,MAAM,IAAI,mBAAmB,IAAI,EAAE;AAErD,UAAM,IAAI,oBAAoB,CAAC,GAAG,WAAW,SAAS,CAAC;;AAGzD,UAAO,WAAY;AACjB,QAAI,IACF,OAAM,OAAO,IAAI;SACZ;KACL,MAAM,YAAY,MAAM,IAAI,mBAAmB,IAAI,EAAE;AAErD,WAAM,IACJ,oBACA,UAAU,QAAQ,OAAO,OAAO,SAAS,CAC1C;;;;EAKP,SAAS,cAA8C;AACrD,OAAI,mCAAa,KAAK,EACpB;uCAAa,IAAI,QAAQ,CACvB,gDAAyB,IAAI,SAAS,KAAK;2CAC1B,IAAI,QAAQ,CAC7B,QAAO,IAAI,QAAQ;;AAIvB,UAAO,IAAI;;AAGb,yCACE,mBAAmB,WACnB,aACA,YACD;;CAGH,MAAM,gBAAgB,OAAO,YAC3B,OAAO,QAAQ,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAC5D,KACA,MAAM,QAAQ,CACf,CAAC,CACH;AAED,QAAO,CAAC,UAAU;EAAE,GAAG;EAAS,GAAG;EAAe,CAAC"}
1
+ {"version":3,"file":"store.cjs","names":[],"sources":["../../../src/utils/store.ts"],"sourcesContent":["\"use client\"\n\nimport type { Path, Value } from \"@yamada-ui/utils\"\nimport {\n getMemoizedObject,\n isArray,\n isObject,\n isUndefined,\n runIfFn,\n toArray,\n} from \"@yamada-ui/utils\"\nimport { useSyncExternalStore } from \"react\"\n\nconst DEFAULT_IDENTIFIER = \"default\"\n\ninterface Subscribe {\n (listener: () => void): () => void\n}\n\ninterface Store<Y> {\n queue: Map<string, (() => void)[]>\n ref: { current: Y }\n get: () => Y\n set: (nextState: ((prevState: Y) => Y) | Y, key?: string | string[]) => void\n update: (key?: string | string[]) => void\n key?: string\n}\n\ntype IndexOrPath<Y> = Y extends any[]\n ? number\n : Y extends object\n ? Path<Y>\n : undefined\n\ntype ReturnArrayValue<Y extends any[], D> = D extends number\n ? undefined | Y[D]\n : Y\n\ntype ReturnObjectValue<Y extends object, D> = D extends string ? Value<Y, D> : Y\n\ntype ReturnValue<Y, D> = Y extends any[]\n ? ReturnArrayValue<Y, D>\n : Y extends object\n ? ReturnObjectValue<Y, D>\n : Y\n\ninterface UseStore<Y> {\n <D extends IndexOrPath<Y>>(path?: D, key?: string): ReturnValue<Y, D>\n}\n\ninterface CreateMethod<Y, M extends Function> {\n (store: Store<Y>): M\n}\n\ntype Methods<Y, M extends CustomMethods<Y>> = Omit<\n Store<Y>,\n \"key\" | \"update\"\n> & {\n [D in keyof M]: ReturnType<M[D]>\n} & { update: () => void }\n\ninterface CustomMethods<Y> {\n [key: string]: CreateMethod<Y, (...args: any[]) => Promise<void> | void>\n}\n\ninterface CreateStoreOptions<Y> {\n proxyHandler?: ProxyHandler<{ current: Y }>\n subscribe?: CreateMethod<Y, Subscribe>\n}\n\nexport function createStore<Y, M extends CustomMethods<Y>>(\n initialState: (() => Y) | Y,\n additionalMethods?: M,\n options: CreateStoreOptions<Y> = {},\n): [UseStore<Y>, Methods<Y, M>] {\n const queue = new Map<string, (() => void)[]>()\n const ref = new Proxy(\n { current: runIfFn(initialState) },\n { ...options.proxyHandler },\n )\n\n function get() {\n return ref.current\n }\n\n function executeQueue(key: string) {\n const listeners = queue.get(key) ?? []\n\n if (!listeners.length)\n console.warn(`createStore: ${key} is not subscribed.`)\n\n listeners.forEach((listener) => listener())\n }\n\n function update(key?: string | string[]) {\n if (!isUndefined(key)) {\n toArray(key).forEach(executeQueue)\n }\n\n executeQueue(DEFAULT_IDENTIFIER)\n }\n\n function set(nextState: ((prevState: Y) => Y) | Y, key?: string | string[]) {\n ref.current = runIfFn(nextState, ref.current)\n\n update(key)\n }\n\n const methods = { ref, get, queue, set, update }\n\n function useStore<D extends IndexOrPath<Y>>(path?: D, key?: string) {\n const customSubscribe = options.subscribe?.({\n key,\n ...methods,\n })\n\n const subscribe = function (listener: () => void) {\n if (key) {\n const listeners = queue.get(key) ?? []\n\n if (listeners.length)\n console.warn(`createStore: ${key} is already subscribed.`)\n\n queue.set(key, [listener])\n } else {\n const listeners = queue.get(DEFAULT_IDENTIFIER) ?? []\n\n queue.set(DEFAULT_IDENTIFIER, [...listeners, listener])\n }\n\n return function () {\n if (key) {\n queue.delete(key)\n } else {\n const listeners = queue.get(DEFAULT_IDENTIFIER) ?? []\n\n queue.set(\n DEFAULT_IDENTIFIER,\n listeners.filter((fn) => fn !== listener),\n )\n }\n }\n }\n\n function getSnapshot<H extends ReturnValue<Y, D>>(): H {\n if (!isUndefined(path)) {\n if (isObject(ref.current)) {\n return getMemoizedObject(ref.current, path)\n } else if (isArray(ref.current)) {\n return ref.current[path as number] as unknown as H\n }\n }\n\n return ref.current as unknown as H\n }\n\n return useSyncExternalStore(\n customSubscribe ?? subscribe,\n getSnapshot,\n getSnapshot,\n )\n }\n\n const customMethods = Object.fromEntries(\n Object.entries(additionalMethods ?? {}).map(([key, value]) => [\n key,\n value(methods),\n ]),\n ) as { [D in keyof M]: ReturnType<M[D]> }\n\n return [useStore, { ...methods, ...customMethods }]\n}\n"],"mappings":";;;;;;;AAaA,MAAM,qBAAqB;AAyD3B,SAAgB,YACd,cACA,mBACA,UAAiC,EAAE,EACL;CAC9B,MAAM,wBAAQ,IAAI,KAA6B;CAC/C,MAAM,MAAM,IAAI,MACd,EAAE,uCAAiB,aAAa,EAAE,EAClC,EAAE,GAAG,QAAQ,cAAc,CAC5B;CAED,SAAS,MAAM;AACb,SAAO,IAAI;;CAGb,SAAS,aAAa,KAAa;EACjC,MAAM,YAAY,MAAM,IAAI,IAAI,IAAI,EAAE;AAEtC,MAAI,CAAC,UAAU,OACb,SAAQ,KAAK,gBAAgB,IAAI,qBAAqB;AAExD,YAAU,SAAS,aAAa,UAAU,CAAC;;CAG7C,SAAS,OAAO,KAAyB;AACvC,MAAI,mCAAa,IAAI,CACnB,+BAAQ,IAAI,CAAC,QAAQ,aAAa;AAGpC,eAAa,mBAAmB;;CAGlC,SAAS,IAAI,WAAsC,KAAyB;AAC1E,MAAI,wCAAkB,WAAW,IAAI,QAAQ;AAE7C,SAAO,IAAI;;CAGb,MAAM,UAAU;EAAE;EAAK;EAAK;EAAO;EAAK;EAAQ;CAEhD,SAAS,SAAmC,MAAU,KAAc;EAClE,MAAM,kBAAkB,QAAQ,YAAY;GAC1C;GACA,GAAG;GACJ,CAAC;EAEF,MAAM,YAAY,SAAU,UAAsB;AAChD,OAAI,KAAK;AAGP,SAFkB,MAAM,IAAI,IAAI,IAAI,EAAE,EAExB,OACZ,SAAQ,KAAK,gBAAgB,IAAI,yBAAyB;AAE5D,UAAM,IAAI,KAAK,CAAC,SAAS,CAAC;UACrB;IACL,MAAM,YAAY,MAAM,IAAI,mBAAmB,IAAI,EAAE;AAErD,UAAM,IAAI,oBAAoB,CAAC,GAAG,WAAW,SAAS,CAAC;;AAGzD,UAAO,WAAY;AACjB,QAAI,IACF,OAAM,OAAO,IAAI;SACZ;KACL,MAAM,YAAY,MAAM,IAAI,mBAAmB,IAAI,EAAE;AAErD,WAAM,IACJ,oBACA,UAAU,QAAQ,OAAO,OAAO,SAAS,CAC1C;;;;EAKP,SAAS,cAA8C;AACrD,OAAI,mCAAa,KAAK,EACpB;uCAAa,IAAI,QAAQ,CACvB,gDAAyB,IAAI,SAAS,KAAK;2CAC1B,IAAI,QAAQ,CAC7B,QAAO,IAAI,QAAQ;;AAIvB,UAAO,IAAI;;AAGb,yCACE,mBAAmB,WACnB,aACA,YACD;;CAGH,MAAM,gBAAgB,OAAO,YAC3B,OAAO,QAAQ,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAC5D,KACA,MAAM,QAAQ,CACf,CAAC,CACH;AAED,QAAO,CAAC,UAAU;EAAE,GAAG;EAAS,GAAG;EAAe,CAAC"}
@@ -71,7 +71,7 @@ const useAutocomplete = (props = {}) => {
71
71
  onChange: onChangeProp
72
72
  });
73
73
  const [inputValue, setInputValue] = useControllableState({
74
- defaultValue: defaultInputValue ?? getInputValue((0, utils_exports.isArray)(value) ? void 0 : valueMap[value]),
74
+ defaultValue: defaultInputValue ?? getInputValue((0, utils_exports.isString)(value) ? valueMap[value] : void 0),
75
75
  value: inputValueProp,
76
76
  onChange: onInputChangeProp
77
77
  });
@@ -252,10 +252,7 @@ const useAutocomplete = (props = {}) => {
252
252
  if ((0, utils_exports.isArray)(value)) setInputValue("");
253
253
  else if (allowCustomValue) {
254
254
  if (inputValue) setValue(inputValue);
255
- } else {
256
- const item = valueMap[value];
257
- setInputValue(getInputValue(item));
258
- }
255
+ } else setInputValue(getInputValue((0, utils_exports.isString)(value) ? valueMap[value] : void 0));
259
256
  }
260
257
  }, [
261
258
  allowCustomValue,
@@ -278,7 +275,7 @@ const useAutocomplete = (props = {}) => {
278
275
  ]);
279
276
  useUpdateEffect(() => {
280
277
  if ((0, utils_exports.isArray)(valueProp)) return;
281
- setInputValue(getInputValue(valueProp ? valueMap[valueProp] : void 0));
278
+ setInputValue(getInputValue((0, utils_exports.isString)(valueProp) ? valueMap[valueProp] : void 0));
282
279
  }, [valueProp]);
283
280
  const getRootProps = useCallback((props$1) => ({
284
281
  ...dataProps,
@@ -1 +1 @@
1
- {"version":3,"file":"use-autocomplete.js","names":["defaultRender: AutocompleteItemRender","defaultFilter: AutocompleteFilter","items","item","match","createContext","valueMap: { [key: string]: ComboboxItemWithValue }","valueMap","value","onClear","inputValue","getRootProps: PropGetter","props","getFieldProps: PropGetter","ref","getInputProps: PropGetter<\"input\">","getContentProps: PropGetter","getIconProps: PropGetter"],"sources":["../../../../src/components/autocomplete/use-autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type {\n ComboboxItem,\n ComboboxItemWithValue,\n UseComboboxItemProps,\n UseComboboxProps,\n} from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox, useComboboxItem } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isComposing,\n isNumber,\n isString,\n isUndefined,\n match,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\ninterface AutocompleteRenderProps extends ComboboxItemWithValue {\n count: number\n focused: boolean\n index: number\n separator: string\n onClear: () => void\n max?: number\n}\n\nexport interface AutocompleteItemRender {\n (props: AutocompleteRenderProps): ReactNode\n}\n\nconst defaultRender: AutocompleteItemRender = ({\n count,\n focused,\n index,\n label,\n max,\n separator,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {label}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nconst getInputValue = (item?: ComboboxItemWithValue) =>\n isString(item?.label) ? item.label : (item?.query ?? \"\")\n\nexport interface AutocompleteFilter {\n (\n inputValue: string,\n items: ComboboxItem[],\n matcher: AutocompleteMatcher,\n ): ComboboxItem[]\n}\n\nconst defaultFilter: AutocompleteFilter = (inputValue, items, match) => {\n if (!inputValue.length) return items\n\n return items\n .map((item) => {\n if (\"items\" in item) {\n const items = item.items.filter((item) => {\n if (\"query\" in item) {\n return isString(item.query) && match(item.query, inputValue)\n } else if (isString(item.label)) {\n return isString(item.label) && match(item.label, inputValue)\n }\n })\n\n if (items.length) return { ...item, items }\n } else if (\"query\" in item) {\n if (isString(item.query) && match(item.query, inputValue)) return item\n } else if (isString(item.label)) {\n if (isString(item.label) && match(item.label, inputValue)) return item\n }\n })\n .filter(Boolean) as ComboboxItem[]\n}\n\nexport type AutocompleteMatcher = typeof match\n\ninterface AutocompleteContext extends Pick<\n UseAutocompleteReturn,\n \"max\" | \"value\"\n> {}\n\nconst [AutocompleteContext, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n })\n\nexport { AutocompleteContext, useAutocompleteContext }\n\nexport interface UseAutocompleteProps<Multiple extends boolean = false>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\" | \"value\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, the autocomplete will allow custom value.\n *\n * @default false\n */\n allowCustomValue?: boolean\n /**\n * If `true`, the autocomplete will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: string\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: Multiple extends true ? string[] : string\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: ReactNode\n /**\n * The function to filter the items.\n */\n filter?: AutocompleteFilter\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: string\n /**\n * If provided, generate options based on items.\n *\n * @default []\n */\n items?: ComboboxItem[]\n /**\n * The function to match the items.\n */\n matcher?: AutocompleteMatcher\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * If `true`, the autocomplete will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the autocomplete will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the autocomplete will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The placeholder for autocomplete.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The value of the autocomplete.\n */\n value?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: Multiple extends true ? string[] : string) => void\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: string) => void\n /**\n * The function to render the selected items.\n */\n render?: (props: AutocompleteRenderProps) => ReactNode\n}\n\nexport const useAutocomplete = <Multiple extends boolean = false>(\n props: UseAutocompleteProps<Multiple> = {},\n) => {\n type MaybeValue = Multiple extends true ? string[] : string\n\n const { t } = useI18n(\"autocomplete\")\n const {\n props: {\n id,\n ref,\n name,\n allowCustomValue = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultValue = (multiple ? [] : \"\") as MaybeValue,\n disabled,\n emptyMessage = t(\"No results found\"),\n filter = defaultFilter,\n focusOnClear = true,\n inputValue: inputValueProp,\n items = [],\n matcher = match,\n max,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n placeholder,\n readOnly,\n render = defaultRender,\n required,\n separator = \",\",\n value: valueProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const valueMap = useMemo<{ [key: string]: ComboboxItemWithValue }>(() => {\n const valueMap: { [key: string]: ComboboxItemWithValue } = {}\n\n items.forEach((item) => {\n if (\"items\" in item) {\n item.items.forEach((item) => {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n })\n } else {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n }\n })\n\n return valueMap\n }, [items])\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [inputValue, setInputValue] = useControllableState({\n defaultValue:\n defaultInputValue ??\n getInputValue(isArray(value) ? undefined : valueMap[value as string]),\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const onChange = useCallback(\n (selectedValue: string) => {\n setValue((prev) => {\n if (isArray(prev)) {\n if (prev.includes(selectedValue)) {\n return prev.filter(\n (prevValue) => prevValue !== selectedValue,\n ) as MaybeValue\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, selectedValue] as MaybeValue\n } else {\n return prev\n }\n } else {\n return selectedValue as MaybeValue\n }\n })\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n const item = valueMap[selectedValue]\n\n setInputValue(getInputValue(item))\n }\n },\n [max, setInputValue, setValue, value, valueMap],\n )\n const {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onSelect,\n } = useCombobox({\n closeOnSelect,\n disabled,\n initialFocusValue: isArray(value) ? value[0] : value,\n openOnClick: false,\n openOnEnter: false,\n openOnSpace: false,\n readOnly,\n selectFocusRef: inputRef,\n selectOnSpace: false,\n onChange,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const filteredItems = useMemo<ComboboxItem[]>(() => {\n if (!items.length) return []\n\n return filter(inputValue, items, matcher)\n }, [filter, inputValue, items, matcher])\n const resolvedItems = useMemo<ComboboxItem[]>(() => {\n return filteredItems.length\n ? filteredItems\n : [{ \"data-empty\": \"\", label: emptyMessage }]\n }, [filteredItems, emptyMessage])\n const empty = useMemo(\n () => !resolvedItems.filter(({ hidden }) => !hidden).length,\n [resolvedItems],\n )\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((value, index) => {\n const item = valueMap[value] ?? { label: value, value }\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n if (item.value) onChange(item.value)\n }\n\n const component = render({\n count,\n focused,\n index,\n max,\n separator,\n onClear,\n ...item,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [focused, max, onChange, render, separator, value, valueMap])\n const hasValues = isArray(value) && !!value.length\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n activeDescendant.current = null\n\n const inputValue = ev.target.value\n\n setInputValue(inputValue)\n\n if (inputValue.length || isArray(value)) return\n\n setValue(\"\" as MaybeValue)\n },\n [\n activeDescendant,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n setInputValue,\n setValue,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (!isArray(value)) return\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) => prev.slice(0, -1) as MaybeValue)\n },\n Enter: (ev) => {\n if (!open || !inputValue.length || activeDescendant.current) return\n\n const item = filteredItems[0]\n\n if (!item) {\n if (!allowCustomValue || !isArray(value)) return\n\n ev.preventDefault()\n\n onSelect(inputValue)\n } else {\n ev.preventDefault()\n\n if (\"items\" in item) {\n onSelect(item.items[0]?.value)\n } else {\n onSelect(item.value)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n activeDescendant,\n allowCustomValue,\n disabled,\n filteredItems,\n onSelect,\n open,\n setValue,\n value,\n ],\n )\n\n const onClick = useCallback(() => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n inputRef.current?.focus()\n\n if (openOnClick) onOpenWithActiveDescendant(descendants.enabledFirstValue)\n }, [descendants, interactive, onOpenWithActiveDescendant, openOnClick])\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n\n focusByClickRef.current = false\n },\n [openOnFocus, onOpenWithActiveDescendant, descendants.enabledFirstValue],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n setFocused(false)\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n if (allowCustomValue) {\n if (inputValue) setValue(inputValue as MaybeValue)\n } else {\n const item = valueMap[value as string]\n\n setInputValue(getInputValue(item))\n }\n }\n }\n },\n [allowCustomValue, inputValue, setInputValue, setValue, value, valueMap],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => (isArray(prev) ? [] : \"\") as MaybeValue)\n setInputValue(\"\")\n\n if (focusOnClear) inputRef.current?.focus()\n }, [focusOnClear, interactive, setInputValue, setValue])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n setInputValue(\n getInputValue(valueProp ? valueMap[valueProp as string] : undefined),\n )\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n ...props,\n }),\n [dataProps],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n }),\n\n [getTriggerProps, onClick],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}) => ({\n id,\n ref: mergeRefs(props.ref, ref, inputRef),\n name,\n style: {\n ...(!focused && isArray(value) && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...props.style,\n },\n \"data-max\": dataAttr(\n isArray(value) && isNumber(max) && value.length >= max,\n ),\n autoCapitalize: \"off\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n disabled,\n placeholder: hasValues ? undefined : placeholder,\n readOnly,\n required,\n spellCheck: false,\n value: inputValue,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n [\n dataProps,\n disabled,\n focused,\n hasValues,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n placeholder,\n readOnly,\n ref,\n required,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n hidden: empty,\n ...props,\n }),\n [empty, getComboboxContentProps],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n descendants,\n inputValue,\n interactive,\n items: resolvedItems,\n max,\n open,\n setInputValue,\n setValue,\n value,\n valueMap,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n onSelect,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport interface UseAutocompleteOptionProps extends UseComboboxItemProps {}\n\nexport const useAutocompleteOption = ({\n children,\n closeOnSelect,\n disabled,\n hidden,\n value,\n ...rest\n}: UseAutocompleteOptionProps = {}) => {\n const { max, value: selectedValue } = useAutocompleteContext()\n\n value ??= isString(children) ? children : undefined\n\n const selected = isArray(selectedValue)\n ? !isUndefined(value) && selectedValue.includes(value)\n : selectedValue === value\n const completed =\n isNumber(max) && isArray(selectedValue) && selectedValue.length >= max\n const { getIndicatorProps, getItemProps } = useComboboxItem({\n children,\n closeOnSelect,\n disabled: disabled || hidden || (completed && !selected),\n hidden,\n selected,\n value,\n ...rest,\n })\n\n const getOptionProps: PropGetter = useCallback(\n (props = {}) => getItemProps(props),\n [getItemProps],\n )\n\n return { getIndicatorProps, getOptionProps }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-autocomplete.js","names":["defaultRender: AutocompleteItemRender","defaultFilter: AutocompleteFilter","items","item","match","createContext","valueMap: { [key: string]: ComboboxItemWithValue }","valueMap","value","onClear","inputValue","getRootProps: PropGetter","props","getFieldProps: PropGetter","ref","getInputProps: PropGetter<\"input\">","getContentProps: PropGetter","getIconProps: PropGetter"],"sources":["../../../../src/components/autocomplete/use-autocomplete.tsx"],"sourcesContent":["\"use client\"\n\nimport type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from \"react\"\nimport type { HTMLProps, HTMLRefAttributes, PropGetter } from \"../../core\"\nimport type {\n ComboboxItem,\n ComboboxItemWithValue,\n UseComboboxItemProps,\n UseComboboxProps,\n} from \"../../hooks/use-combobox\"\nimport type { Dict } from \"../../utils\"\nimport type { FieldProps } from \"../field\"\nimport {\n cloneElement,\n isValidElement,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from \"react\"\nimport { useCombobox, useComboboxItem } from \"../../hooks/use-combobox\"\nimport { useControllableState } from \"../../hooks/use-controllable-state\"\nimport { useI18n } from \"../../providers/i18n-provider\"\nimport {\n ariaAttr,\n cast,\n contains,\n createContext,\n dataAttr,\n handlerAll,\n isArray,\n isComposing,\n isNumber,\n isString,\n isUndefined,\n match,\n mergeRefs,\n runIfFn,\n runKeyAction,\n useUpdateEffect,\n visuallyHiddenAttributes,\n} from \"../../utils\"\nimport { useFieldProps } from \"../field\"\n\ninterface AutocompleteRenderProps extends ComboboxItemWithValue {\n count: number\n focused: boolean\n index: number\n separator: string\n onClear: () => void\n max?: number\n}\n\nexport interface AutocompleteItemRender {\n (props: AutocompleteRenderProps): ReactNode\n}\n\nconst defaultRender: AutocompleteItemRender = ({\n count,\n focused,\n index,\n label,\n max,\n separator,\n}) => {\n const last = count - 1 === index\n\n return (\n <span style={{ marginInlineEnd: \"var(--gap)\" }}>\n {label}\n {((!isNumber(max) || count < max) && focused) || !last ? separator : null}\n </span>\n )\n}\n\nconst getInputValue = (item?: ComboboxItemWithValue) =>\n isString(item?.label) ? item.label : (item?.query ?? \"\")\n\nexport interface AutocompleteFilter {\n (\n inputValue: string,\n items: ComboboxItem[],\n matcher: AutocompleteMatcher,\n ): ComboboxItem[]\n}\n\nconst defaultFilter: AutocompleteFilter = (inputValue, items, match) => {\n if (!inputValue.length) return items\n\n return items\n .map((item) => {\n if (\"items\" in item) {\n const items = item.items.filter((item) => {\n if (\"query\" in item) {\n return isString(item.query) && match(item.query, inputValue)\n } else if (isString(item.label)) {\n return isString(item.label) && match(item.label, inputValue)\n }\n })\n\n if (items.length) return { ...item, items }\n } else if (\"query\" in item) {\n if (isString(item.query) && match(item.query, inputValue)) return item\n } else if (isString(item.label)) {\n if (isString(item.label) && match(item.label, inputValue)) return item\n }\n })\n .filter(Boolean) as ComboboxItem[]\n}\n\nexport type AutocompleteMatcher = typeof match\n\ninterface AutocompleteContext extends Pick<\n UseAutocompleteReturn,\n \"max\" | \"value\"\n> {}\n\nconst [AutocompleteContext, useAutocompleteContext] =\n createContext<AutocompleteContext>({\n name: \"AutocompleteContext\",\n })\n\nexport { AutocompleteContext, useAutocompleteContext }\n\nexport interface UseAutocompleteProps<Multiple extends boolean = false>\n extends\n Omit<HTMLProps, \"defaultValue\" | \"onChange\" | \"ref\" | \"value\">,\n Omit<\n UseComboboxProps,\n \"defaultValue\" | \"initialFocusValue\" | \"onChange\" | \"ref\" | \"value\"\n >,\n HTMLRefAttributes<\"input\">,\n FieldProps {\n /**\n * If `true`, the autocomplete will allow custom value.\n *\n * @default false\n */\n allowCustomValue?: boolean\n /**\n * If `true`, the autocomplete will be closed when the input value changes.\n *\n * @default false\n */\n closeOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * The initial value of the input.\n */\n defaultInputValue?: string\n /**\n * The initial value of the autocomplete.\n */\n defaultValue?: Multiple extends true ? string[] : string\n /**\n * The message displayed when the search yields no hits.\n *\n * @default 'No results found'\n */\n emptyMessage?: ReactNode\n /**\n * The function to filter the items.\n */\n filter?: AutocompleteFilter\n /**\n * If `true`, the input will be focused when the clear icon is clicked.\n *\n * @default true\n */\n focusOnClear?: boolean\n /**\n * The `id` attribute of the input element.\n */\n id?: string\n /**\n * The value of the input.\n */\n inputValue?: string\n /**\n * If provided, generate options based on items.\n *\n * @default []\n */\n items?: ComboboxItem[]\n /**\n * The function to match the items.\n */\n matcher?: AutocompleteMatcher\n /**\n * The maximum selectable value.\n */\n max?: number\n /**\n * If `true`, the autocomplete will be multiple.\n *\n * @default false\n */\n multiple?: Multiple\n /**\n * The `name` attribute of the input element.\n */\n name?: string\n /**\n * If `true`, the autocomplete will be opened when the input value changes.\n *\n * @default true\n */\n openOnChange?: ((ev: ChangeEvent<HTMLInputElement>) => boolean) | boolean\n /**\n * If `true`, the autocomplete will be opened when the input is focused.\n *\n * @default true\n */\n openOnFocus?: boolean\n /**\n * The placeholder for autocomplete.\n */\n placeholder?: string\n /**\n * The visual separator between each value.\n *\n * @default ','\n */\n separator?: string\n /**\n * The value of the autocomplete.\n */\n value?: Multiple extends true ? string[] : string\n /**\n * The callback invoked when value state changes.\n */\n onChange?: (value: Multiple extends true ? string[] : string) => void\n /**\n * The callback invoked when input value state changes.\n */\n onInputChange?: (value: string) => void\n /**\n * The function to render the selected items.\n */\n render?: (props: AutocompleteRenderProps) => ReactNode\n}\n\nexport const useAutocomplete = <Multiple extends boolean = false>(\n props: UseAutocompleteProps<Multiple> = {},\n) => {\n type MaybeValue = Multiple extends true ? string[] : string\n\n const { t } = useI18n(\"autocomplete\")\n const {\n props: {\n id,\n ref,\n name,\n allowCustomValue = false,\n closeOnChange = false,\n multiple = false,\n closeOnSelect = !multiple,\n defaultInputValue,\n defaultValue = (multiple ? [] : \"\") as MaybeValue,\n disabled,\n emptyMessage = t(\"No results found\"),\n filter = defaultFilter,\n focusOnClear = true,\n inputValue: inputValueProp,\n items = [],\n matcher = match,\n max,\n openOnChange = true,\n openOnClick = true,\n openOnFocus = true,\n placeholder,\n readOnly,\n render = defaultRender,\n required,\n separator = \",\",\n value: valueProp,\n onChange: onChangeProp,\n onInputChange: onInputChangeProp,\n ...rest\n },\n ariaProps,\n dataProps,\n eventProps,\n } = useFieldProps(props)\n const fieldRef = useRef<HTMLDivElement>(null)\n const contentRef = useRef<HTMLDivElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n const focusByClickRef = useRef<boolean>(false)\n const valueMap = useMemo<{ [key: string]: ComboboxItemWithValue }>(() => {\n const valueMap: { [key: string]: ComboboxItemWithValue } = {}\n\n items.forEach((item) => {\n if (\"items\" in item) {\n item.items.forEach((item) => {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n })\n } else {\n item.value ??= isString(item.label) ? item.label : undefined\n\n if (!isUndefined(item.value)) valueMap[item.value] = item\n }\n })\n\n return valueMap\n }, [items])\n const [focused, setFocused] = useState(false)\n const [value, setValue] = useControllableState({\n defaultValue,\n value: valueProp,\n onChange: onChangeProp,\n })\n const [inputValue, setInputValue] = useControllableState({\n defaultValue:\n defaultInputValue ??\n getInputValue(isString(value) ? valueMap[value] : undefined),\n value: inputValueProp,\n onChange: onInputChangeProp,\n })\n const onChange = useCallback(\n (selectedValue: string) => {\n setValue((prev) => {\n if (isArray(prev)) {\n if (prev.includes(selectedValue)) {\n return prev.filter(\n (prevValue) => prevValue !== selectedValue,\n ) as MaybeValue\n } else if (!isNumber(max) || prev.length < max) {\n return [...prev, selectedValue] as MaybeValue\n } else {\n return prev\n }\n } else {\n return selectedValue as MaybeValue\n }\n })\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n const item = valueMap[selectedValue]\n\n setInputValue(getInputValue(item))\n }\n },\n [max, setInputValue, setValue, value, valueMap],\n )\n const {\n activeDescendant,\n descendants,\n interactive,\n open,\n getContentProps: getComboboxContentProps,\n getSeparatorProps,\n getTriggerProps,\n popoverProps,\n onActiveDescendant,\n onClose,\n onOpen,\n onOpenWithActiveDescendant,\n onSelect,\n } = useCombobox({\n closeOnSelect,\n disabled,\n initialFocusValue: isArray(value) ? value[0] : value,\n openOnClick: false,\n openOnEnter: false,\n openOnSpace: false,\n readOnly,\n selectFocusRef: inputRef,\n selectOnSpace: false,\n onChange,\n ...ariaProps,\n ...dataProps,\n ...eventProps,\n ...rest,\n })\n const filteredItems = useMemo<ComboboxItem[]>(() => {\n if (!items.length) return []\n\n return filter(inputValue, items, matcher)\n }, [filter, inputValue, items, matcher])\n const resolvedItems = useMemo<ComboboxItem[]>(() => {\n return filteredItems.length\n ? filteredItems\n : [{ \"data-empty\": \"\", label: emptyMessage }]\n }, [filteredItems, emptyMessage])\n const empty = useMemo(\n () => !resolvedItems.filter(({ hidden }) => !hidden).length,\n [resolvedItems],\n )\n const children = useMemo<ReactNode>(() => {\n if (!isArray(value)) return null\n\n const count = value.length\n\n return value.map((value, index) => {\n const item = valueMap[value] ?? { label: value, value }\n\n const onClear = (ev?: MouseEvent<HTMLElement>) => {\n ev?.preventDefault()\n ev?.stopPropagation()\n\n if (item.value) onChange(item.value)\n }\n\n const component = render({\n count,\n focused,\n index,\n max,\n separator,\n onClear,\n ...item,\n })\n\n if (isValidElement<Dict>(component)) {\n return cloneElement(component, { ...component.props, key: index })\n } else {\n return component\n }\n })\n }, [focused, max, onChange, render, separator, value, valueMap])\n const hasValues = isArray(value) && !!value.length\n\n const onInputChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement>) => {\n if (isArray(value) && value.length === max) return\n\n if (runIfFn(closeOnChange, ev)) {\n onClose()\n } else if (runIfFn(openOnChange, ev)) {\n onOpen()\n }\n\n activeDescendant.current = null\n\n const inputValue = ev.target.value\n\n setInputValue(inputValue)\n\n if (inputValue.length || isArray(value)) return\n\n setValue(\"\" as MaybeValue)\n },\n [\n activeDescendant,\n closeOnChange,\n max,\n onClose,\n onOpen,\n openOnChange,\n setInputValue,\n setValue,\n value,\n ],\n )\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent<HTMLInputElement>) => {\n if (disabled || isComposing(ev)) return\n\n const inputValue = cast<HTMLInputElement>(ev.target).value\n\n runKeyAction(\n ev,\n {\n Backspace: (ev) => {\n if (!isArray(value)) return\n if (inputValue.length) return\n\n ev.preventDefault()\n\n setValue((prev) => prev.slice(0, -1) as MaybeValue)\n },\n Enter: (ev) => {\n if (!open || !inputValue.length || activeDescendant.current) return\n\n const item = filteredItems[0]\n\n if (!item) {\n if (!allowCustomValue || !isArray(value)) return\n\n ev.preventDefault()\n\n onSelect(inputValue)\n } else {\n ev.preventDefault()\n\n if (\"items\" in item) {\n onSelect(item.items[0]?.value)\n } else {\n onSelect(item.value)\n }\n }\n },\n },\n { preventDefault: false },\n )\n },\n [\n activeDescendant,\n allowCustomValue,\n disabled,\n filteredItems,\n onSelect,\n open,\n setValue,\n value,\n ],\n )\n\n const onClick = useCallback(() => {\n if (!interactive) return\n\n focusByClickRef.current = true\n\n inputRef.current?.focus()\n\n if (openOnClick) onOpenWithActiveDescendant(descendants.enabledFirstValue)\n }, [descendants, interactive, onOpenWithActiveDescendant, openOnClick])\n\n const onMouseDown = useCallback(\n (ev: MouseEvent<HTMLInputElement>) => {\n if (!openOnFocus) return\n\n ev.preventDefault()\n ev.stopPropagation()\n },\n [openOnFocus],\n )\n\n const onFocus = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n ev.preventDefault()\n ev.stopPropagation()\n\n setFocused(true)\n\n if (openOnFocus && !focusByClickRef.current)\n onOpenWithActiveDescendant(descendants.enabledFirstValue)\n\n focusByClickRef.current = false\n },\n [openOnFocus, onOpenWithActiveDescendant, descendants.enabledFirstValue],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent<HTMLInputElement>) => {\n if (\n contains(fieldRef.current, ev.relatedTarget) ||\n contains(contentRef.current, ev.relatedTarget)\n ) {\n ev.preventDefault()\n } else {\n setFocused(false)\n\n if (isArray(value)) {\n setInputValue(\"\")\n } else {\n if (allowCustomValue) {\n if (inputValue) setValue(inputValue as MaybeValue)\n } else {\n const item = isString(value) ? valueMap[value] : undefined\n\n setInputValue(getInputValue(item))\n }\n }\n }\n },\n [allowCustomValue, inputValue, setInputValue, setValue, value, valueMap],\n )\n\n const onClear = useCallback(() => {\n if (!interactive) return\n\n setValue((prev) => (isArray(prev) ? [] : \"\") as MaybeValue)\n setInputValue(\"\")\n\n if (focusOnClear) inputRef.current?.focus()\n }, [focusOnClear, interactive, setInputValue, setValue])\n\n useUpdateEffect(() => {\n if (isArray(valueProp)) return\n\n setInputValue(\n getInputValue(isString(valueProp) ? valueMap[valueProp] : undefined),\n )\n }, [valueProp])\n\n const getRootProps: PropGetter = useCallback(\n (props) => ({\n ...dataProps,\n ...props,\n }),\n [dataProps],\n )\n\n const getFieldProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getTriggerProps({\n ref: mergeRefs(ref, fieldRef),\n tabIndex: -1,\n ...props,\n onClick: handlerAll(props.onClick, onClick),\n }),\n\n [getTriggerProps, onClick],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}) => ({\n id,\n ref: mergeRefs(props.ref, ref, inputRef),\n name,\n style: {\n ...(!focused && isArray(value) && !!value.length\n ? visuallyHiddenAttributes.style\n : {}),\n ...props.style,\n },\n \"data-max\": dataAttr(\n isArray(value) && isNumber(max) && value.length >= max,\n ),\n autoCapitalize: \"off\",\n autoComplete: \"off\",\n autoCorrect: \"off\",\n disabled,\n placeholder: hasValues ? undefined : placeholder,\n readOnly,\n required,\n spellCheck: false,\n value: inputValue,\n ...dataProps,\n ...props,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onInputChange),\n onFocus: handlerAll(props.onFocus, onFocus),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n onMouseDown: handlerAll(props.onMouseDown, onMouseDown),\n }),\n [\n dataProps,\n disabled,\n focused,\n hasValues,\n id,\n inputValue,\n max,\n name,\n onBlur,\n onFocus,\n onInputChange,\n onKeyDown,\n onMouseDown,\n placeholder,\n readOnly,\n ref,\n required,\n value,\n ],\n )\n\n const getContentProps: PropGetter = useCallback(\n ({ ref, ...props } = {}) =>\n getComboboxContentProps({\n ref: mergeRefs(ref, contentRef),\n hidden: empty,\n ...props,\n }),\n [empty, getComboboxContentProps],\n )\n\n const getIconProps: PropGetter = useCallback(\n (props) => ({ ...dataProps, ...props }),\n [dataProps],\n )\n\n const getClearIconProps: PropGetter = useCallback(\n (props = {}) =>\n getIconProps({\n \"aria-disabled\": ariaAttr(!interactive),\n \"aria-label\": t(\"Clear value\"),\n role: \"button\",\n tabIndex: interactive ? 0 : -1,\n ...props,\n onClick: handlerAll(props.onClick, onClear),\n onKeyDown: handlerAll(props.onKeyDown, (ev) =>\n runKeyAction(ev, { Enter: onClear, Space: onClear }),\n ),\n }),\n [getIconProps, interactive, onClear, t],\n )\n\n return {\n children,\n descendants,\n inputValue,\n interactive,\n items: resolvedItems,\n max,\n open,\n setInputValue,\n setValue,\n value,\n valueMap,\n getClearIconProps,\n getContentProps,\n getFieldProps,\n getIconProps,\n getInputProps,\n getRootProps,\n getSeparatorProps,\n popoverProps,\n onActiveDescendant,\n onChange,\n onClose,\n onInputChange,\n onOpen,\n onSelect,\n }\n}\n\nexport type UseAutocompleteReturn = ReturnType<typeof useAutocomplete>\n\nexport interface UseAutocompleteOptionProps extends UseComboboxItemProps {}\n\nexport const useAutocompleteOption = ({\n children,\n closeOnSelect,\n disabled,\n hidden,\n value,\n ...rest\n}: UseAutocompleteOptionProps = {}) => {\n const { max, value: selectedValue } = useAutocompleteContext()\n\n value ??= isString(children) ? children : undefined\n\n const selected = isArray(selectedValue)\n ? !isUndefined(value) && selectedValue.includes(value)\n : selectedValue === value\n const completed =\n isNumber(max) && isArray(selectedValue) && selectedValue.length >= max\n const { getIndicatorProps, getItemProps } = useComboboxItem({\n children,\n closeOnSelect,\n disabled: disabled || hidden || (completed && !selected),\n hidden,\n selected,\n value,\n ...rest,\n })\n\n const getOptionProps: PropGetter = useCallback(\n (props = {}) => getItemProps(props),\n [getItemProps],\n )\n\n return { getIndicatorProps, getOptionProps }\n}\n\nexport type UseAutocompleteOptionReturn = ReturnType<\n typeof useAutocompleteOption\n>\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-calendar.js","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 }[]","createContext","value","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","getMonthProps: PropGetter<\"table\">","getWeekdayProps: RequiredPropGetter<\"th\", { value: number }>","getButtonProps: PropGetter<\"button\">","getPrevButtonProps: PropGetter<\"button\">","getNextButtonProps: PropGetter<\"button\">","holiday","selectedValue","ev","calendarProps: (keyof UseCalendarProps)[]"],"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 as Date[])\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.js","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 }[]","createContext","value","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","getMonthProps: PropGetter<\"table\">","getWeekdayProps: RequiredPropGetter<\"th\", { value: number }>","getButtonProps: PropGetter<\"button\">","getPrevButtonProps: PropGetter<\"button\">","getNextButtonProps: PropGetter<\"button\">","holiday","selectedValue","ev","calendarProps: (keyof UseCalendarProps)[]"],"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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"}
@@ -213,10 +213,7 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
213
213
  const minDate$1 = value.start && align === "end" ? dayjs(value.start).add(1, "day").toDate() : void 0;
214
214
  const maxDate$1 = value.end && align === "start" ? dayjs(value.end).subtract(1, "day").toDate() : void 0;
215
215
  const date = stringToDate(inputValue$1, minDate$1, maxDate$1);
216
- setInputValue((prev) => (0, utils_exports.isObject)(prev) ? {
217
- ...prev,
218
- [align]: inputValue$1
219
- } : prev);
216
+ setInputValue((prev) => (0, utils_exports.isObject)(prev) ? Object.assign({}, prev, { [align]: inputValue$1 }) : prev);
220
217
  setValue((prev) => (0, utils_exports.isObject)(prev) && !(0, utils_exports.isDate)(prev) ? {
221
218
  ...prev,
222
219
  [align]: date
@@ -277,10 +274,7 @@ const useDatePicker = ({ maxDate = DEFAULT_MAX_DATE, minDate = DEFAULT_MIN_DATE,
277
274
  const date = stringToDate(inputValue$1, value.start && align === "end" ? dayjs(value.start).add(1, "day").toDate() : void 0, value.end && align === "start" ? dayjs(value.end).subtract(1, "day").toDate() : void 0);
278
275
  if (!date) return;
279
276
  ev$1.preventDefault();
280
- setInputValue((prev) => (0, utils_exports.isObject)(prev) ? {
281
- ...prev,
282
- [align]: dateToString(date)
283
- } : prev);
277
+ setInputValue((prev) => (0, utils_exports.isObject)(prev) ? Object.assign({}, prev, { [align]: dateToString(date) }) : prev);
284
278
  setValue((prev) => (0, utils_exports.isObject)(prev) && !(0, utils_exports.isDate)(prev) ? {
285
279
  ...prev,
286
280
  [align]: date