@primereact/headless 11.0.0-alpha.1 → 11.0.0-alpha.10

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 (351) hide show
  1. package/accordion/index.mjs +1 -1
  2. package/accordion/index.mjs.map +1 -1
  3. package/accordion/useAccordion.d.ts +6 -6
  4. package/animateonscroll/index.d.ts +2 -0
  5. package/animateonscroll/index.mjs +2 -0
  6. package/animateonscroll/index.mjs.map +1 -0
  7. package/animateonscroll/useAnimateOnScroll.d.ts +3 -0
  8. package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -0
  9. package/animateonscroll/useAnimateOnScroll.test.d.ts +0 -0
  10. package/autocomplete/index.d.ts +2 -0
  11. package/autocomplete/index.mjs +2 -0
  12. package/autocomplete/index.mjs.map +1 -0
  13. package/autocomplete/useAutoComplete.d.ts +87 -0
  14. package/autocomplete/useAutoComplete.props.d.ts +2 -0
  15. package/autocomplete/useAutoComplete.test.d.ts +0 -0
  16. package/breadcrumb/index.d.ts +2 -0
  17. package/breadcrumb/index.mjs +2 -0
  18. package/breadcrumb/index.mjs.map +1 -0
  19. package/breadcrumb/useBreadcrumb.d.ts +3 -0
  20. package/breadcrumb/useBreadcrumb.props.d.ts +2 -0
  21. package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
  22. package/carousel/index.d.ts +2 -0
  23. package/carousel/index.mjs +2 -0
  24. package/carousel/index.mjs.map +1 -0
  25. package/carousel/useCarousel.d.ts +23 -0
  26. package/carousel/useCarousel.props.d.ts +2 -0
  27. package/carousel/useCarousel.test.d.ts +0 -0
  28. package/checkboxgroup/index.d.ts +2 -0
  29. package/checkboxgroup/index.mjs +2 -0
  30. package/checkboxgroup/index.mjs.map +1 -0
  31. package/checkboxgroup/useCheckboxGroup.d.ts +7 -0
  32. package/checkboxgroup/useCheckboxGroup.props.d.ts +2 -0
  33. package/checkboxgroup/useCheckboxGroup.test.d.ts +0 -0
  34. package/collapsible/index.d.ts +2 -0
  35. package/collapsible/index.mjs +2 -0
  36. package/collapsible/index.mjs.map +1 -0
  37. package/collapsible/useCollapsible.d.ts +9 -0
  38. package/collapsible/useCollapsible.props.d.ts +2 -0
  39. package/collapsible/useCollapsible.test.d.ts +0 -0
  40. package/colorpicker/colorManager.d.ts +102 -0
  41. package/colorpicker/index.d.ts +3 -0
  42. package/colorpicker/index.mjs +2 -0
  43. package/colorpicker/index.mjs.map +1 -0
  44. package/colorpicker/useColorPicker.d.ts +59 -0
  45. package/colorpicker/useColorPicker.props.d.ts +2 -0
  46. package/colorpicker/useColorPicker.test.d.ts +0 -0
  47. package/commandmenu/index.d.ts +2 -0
  48. package/commandmenu/index.mjs +2 -0
  49. package/commandmenu/index.mjs.map +1 -0
  50. package/commandmenu/useCommandMenu.d.ts +11 -0
  51. package/commandmenu/useCommandMenu.props.d.ts +2 -0
  52. package/commandmenu/useCommandMenu.test.d.ts +0 -0
  53. package/compare/index.d.ts +2 -0
  54. package/compare/index.mjs +2 -0
  55. package/compare/index.mjs.map +1 -0
  56. package/compare/useCompare.d.ts +35 -0
  57. package/compare/useCompare.props.d.ts +2 -0
  58. package/compare/useCompare.test.d.ts +0 -0
  59. package/confirmdialog/index.d.ts +2 -0
  60. package/confirmdialog/index.mjs +2 -0
  61. package/confirmdialog/index.mjs.map +1 -0
  62. package/confirmdialog/useConfirmDialog.d.ts +43 -0
  63. package/confirmdialog/useConfirmDialog.props.d.ts +2 -0
  64. package/confirmdialog/useConfirmDialog.test.d.ts +0 -0
  65. package/confirmpopup/index.d.ts +2 -0
  66. package/confirmpopup/index.mjs +2 -0
  67. package/confirmpopup/index.mjs.map +1 -0
  68. package/confirmpopup/useConfirmPopup.d.ts +25 -0
  69. package/confirmpopup/useConfirmPopup.props.d.ts +2 -0
  70. package/confirmpopup/useConfirmPopup.test.d.ts +0 -0
  71. package/contextmenu/index.d.ts +2 -0
  72. package/contextmenu/index.mjs +2 -0
  73. package/contextmenu/index.mjs.map +1 -0
  74. package/contextmenu/useContextMenu.d.ts +1 -0
  75. package/contextmenu/useContextMenu.props.d.ts +2 -0
  76. package/contextmenu/useContextMenu.test.d.ts +0 -0
  77. package/dataview/index.d.ts +2 -0
  78. package/dataview/index.mjs +2 -0
  79. package/dataview/index.mjs.map +1 -0
  80. package/dataview/useDataView.d.ts +3 -0
  81. package/dataview/useDataView.props.d.ts +2 -0
  82. package/dataview/useDataView.test.d.ts +0 -0
  83. package/datepicker/index.d.ts +2 -0
  84. package/datepicker/index.mjs +2 -0
  85. package/datepicker/index.mjs.map +1 -0
  86. package/datepicker/useDatePicker.d.ts +114 -0
  87. package/datepicker/useDatePicker.props.d.ts +2 -0
  88. package/datepicker/useDatePicker.test.d.ts +0 -0
  89. package/dialog/index.d.ts +2 -0
  90. package/dialog/index.mjs +2 -0
  91. package/dialog/index.mjs.map +1 -0
  92. package/dialog/useDialog.d.ts +30 -0
  93. package/dialog/useDialog.props.d.ts +2 -0
  94. package/dialog/useDialog.test.d.ts +0 -0
  95. package/drawer/index.d.ts +2 -0
  96. package/drawer/index.mjs +2 -0
  97. package/drawer/index.mjs.map +1 -0
  98. package/drawer/useDrawer.d.ts +24 -0
  99. package/drawer/useDrawer.props.d.ts +2 -0
  100. package/drawer/useDrawer.test.d.ts +0 -0
  101. package/fieldset/index.mjs +1 -1
  102. package/fieldset/index.mjs.map +1 -1
  103. package/fieldset/useFieldset.d.ts +29 -1
  104. package/fileupload/index.d.ts +2 -0
  105. package/fileupload/index.mjs +2 -0
  106. package/fileupload/index.mjs.map +1 -0
  107. package/fileupload/useFileUpload.d.ts +26 -0
  108. package/fileupload/useFileUpload.props.d.ts +2 -0
  109. package/fileupload/useFileUpload.test.d.ts +0 -0
  110. package/floatlabel/index.d.ts +2 -0
  111. package/floatlabel/index.mjs +2 -0
  112. package/floatlabel/index.mjs.map +1 -0
  113. package/floatlabel/useFloatLabel.d.ts +1 -0
  114. package/floatlabel/useFloatLabel.props.d.ts +2 -0
  115. package/floatlabel/useFloatLabel.test.d.ts +0 -0
  116. package/fluid/index.d.ts +2 -0
  117. package/fluid/index.mjs +2 -0
  118. package/fluid/index.mjs.map +1 -0
  119. package/fluid/useFluid.d.ts +1 -0
  120. package/fluid/useFluid.props.d.ts +2 -0
  121. package/fluid/useFluid.test.d.ts +0 -0
  122. package/focustrap/index.d.ts +2 -0
  123. package/focustrap/index.mjs +2 -0
  124. package/focustrap/index.mjs.map +1 -0
  125. package/focustrap/useFocusTrap.d.ts +9 -0
  126. package/focustrap/useFocusTrap.props.d.ts +2 -0
  127. package/focustrap/useFocusTrap.test.d.ts +0 -0
  128. package/gallery/index.d.ts +2 -0
  129. package/gallery/index.mjs +2 -0
  130. package/gallery/index.mjs.map +1 -0
  131. package/gallery/item/index.d.ts +2 -0
  132. package/gallery/item/index.mjs +2 -0
  133. package/gallery/item/index.mjs.map +1 -0
  134. package/gallery/item/useGalleryItem.d.ts +45 -0
  135. package/gallery/item/useGalleryItem.props.d.ts +2 -0
  136. package/gallery/useGallery.d.ts +31 -0
  137. package/gallery/useGallery.props.d.ts +2 -0
  138. package/gallery/useGallery.test.d.ts +0 -0
  139. package/iconfield/index.d.ts +2 -0
  140. package/iconfield/index.mjs +2 -0
  141. package/iconfield/index.mjs.map +1 -0
  142. package/iconfield/useIconField.d.ts +1 -0
  143. package/iconfield/useIconField.props.d.ts +2 -0
  144. package/iconfield/useIconField.test.d.ts +0 -0
  145. package/iftalabel/index.d.ts +2 -0
  146. package/iftalabel/index.mjs +2 -0
  147. package/iftalabel/index.mjs.map +1 -0
  148. package/iftalabel/useIftaLabel.d.ts +1 -0
  149. package/iftalabel/useIftaLabel.props.d.ts +2 -0
  150. package/iftalabel/useIftaLabel.test.d.ts +0 -0
  151. package/inplace/index.mjs +1 -1
  152. package/inplace/index.mjs.map +1 -1
  153. package/inplace/useInplace.d.ts +1 -1
  154. package/inputgroup/index.d.ts +2 -0
  155. package/inputgroup/index.mjs +2 -0
  156. package/inputgroup/index.mjs.map +1 -0
  157. package/inputgroup/useInputGroup.d.ts +1 -0
  158. package/inputgroup/useInputGroup.props.d.ts +2 -0
  159. package/inputgroup/useInputGroup.test.d.ts +0 -0
  160. package/inputnumber/index.d.ts +2 -0
  161. package/inputnumber/index.mjs +2 -0
  162. package/inputnumber/index.mjs.map +1 -0
  163. package/inputnumber/useInputNumber.d.ts +23 -0
  164. package/inputnumber/useInputNumber.props.d.ts +2 -0
  165. package/inputnumber/useInputNumber.test.d.ts +0 -0
  166. package/inputotp/index.d.ts +2 -0
  167. package/inputotp/index.mjs +2 -0
  168. package/inputotp/index.mjs.map +1 -0
  169. package/inputotp/useInputOtp.d.ts +14 -0
  170. package/inputotp/useInputOtp.props.d.ts +2 -0
  171. package/inputotp/useInputOtp.test.d.ts +0 -0
  172. package/inputtags/index.d.ts +2 -0
  173. package/inputtags/index.mjs +2 -0
  174. package/inputtags/index.mjs.map +1 -0
  175. package/inputtags/useInputTags.d.ts +86 -0
  176. package/inputtags/useInputTags.props.d.ts +2 -0
  177. package/inputtags/useInputTags.test.d.ts +0 -0
  178. package/knob/index.d.ts +2 -0
  179. package/knob/index.mjs +2 -0
  180. package/knob/index.mjs.map +1 -0
  181. package/knob/useKnob.d.ts +17 -0
  182. package/knob/useKnob.props.d.ts +2 -0
  183. package/knob/useKnob.test.d.ts +0 -0
  184. package/listbox/index.d.ts +2 -0
  185. package/listbox/index.mjs +2 -0
  186. package/listbox/index.mjs.map +1 -0
  187. package/listbox/useListbox.d.ts +52 -0
  188. package/listbox/useListbox.props.d.ts +2 -0
  189. package/listbox/useListbox.test.d.ts +0 -0
  190. package/menu/index.d.ts +2 -0
  191. package/menu/index.mjs +2 -0
  192. package/menu/index.mjs.map +1 -0
  193. package/menu/sub/index.d.ts +2 -0
  194. package/menu/sub/index.mjs +2 -0
  195. package/menu/sub/index.mjs.map +1 -0
  196. package/menu/sub/useMenuSub.d.ts +19 -0
  197. package/menu/sub/useMenuSub.props.d.ts +2 -0
  198. package/menu/useMenu.d.ts +34 -0
  199. package/menu/useMenu.props.d.ts +2 -0
  200. package/menu/useMenu.test.d.ts +0 -0
  201. package/message/index.d.ts +2 -0
  202. package/message/index.mjs +2 -0
  203. package/message/index.mjs.map +1 -0
  204. package/message/useMessage.d.ts +6 -0
  205. package/message/useMessage.props.d.ts +2 -0
  206. package/message/useMessage.test.d.ts +0 -0
  207. package/orgchart/index.d.ts +2 -0
  208. package/orgchart/index.mjs +2 -0
  209. package/orgchart/index.mjs.map +1 -0
  210. package/orgchart/useOrgChart.d.ts +20 -0
  211. package/orgchart/useOrgChart.props.d.ts +2 -0
  212. package/orgchart/useOrgChart.test.d.ts +0 -0
  213. package/overlay/index.d.ts +2 -0
  214. package/overlay/index.mjs +2 -0
  215. package/overlay/index.mjs.map +1 -0
  216. package/overlay/useOverlay.d.ts +16 -0
  217. package/overlay/useOverlay.props.d.ts +2 -0
  218. package/overlay/useOverlay.test.d.ts +0 -0
  219. package/overlaybadge/index.d.ts +2 -0
  220. package/overlaybadge/index.mjs +2 -0
  221. package/overlaybadge/index.mjs.map +1 -0
  222. package/overlaybadge/useOverlayBadge.d.ts +1 -0
  223. package/overlaybadge/useOverlayBadge.props.d.ts +2 -0
  224. package/overlaybadge/useOverlayBadge.test.d.ts +0 -0
  225. package/package.json +6 -6
  226. package/paginator/index.d.ts +2 -0
  227. package/paginator/index.mjs +2 -0
  228. package/paginator/index.mjs.map +1 -0
  229. package/paginator/usePaginator.d.ts +19 -0
  230. package/paginator/usePaginator.props.d.ts +2 -0
  231. package/paginator/usePaginator.test.d.ts +0 -0
  232. package/panel/index.mjs +1 -1
  233. package/panel/index.mjs.map +1 -1
  234. package/panel/usePanel.d.ts +24 -7
  235. package/password/index.d.ts +2 -0
  236. package/password/index.mjs +2 -0
  237. package/password/index.mjs.map +1 -0
  238. package/password/usePassword.d.ts +9 -0
  239. package/password/usePassword.props.d.ts +2 -0
  240. package/password/usePassword.test.d.ts +0 -0
  241. package/placer/index.d.ts +2 -0
  242. package/placer/index.mjs +2 -0
  243. package/placer/index.mjs.map +1 -0
  244. package/placer/usePlacer.d.ts +12 -0
  245. package/placer/usePlacer.props.d.ts +2 -0
  246. package/placer/usePlacer.test.d.ts +0 -0
  247. package/popover/index.d.ts +2 -0
  248. package/popover/index.mjs +2 -0
  249. package/popover/index.mjs.map +1 -0
  250. package/popover/usePopover.d.ts +19 -0
  251. package/popover/usePopover.props.d.ts +2 -0
  252. package/popover/usePopover.test.d.ts +0 -0
  253. package/portal/index.d.ts +2 -0
  254. package/portal/index.mjs +2 -0
  255. package/portal/index.mjs.map +1 -0
  256. package/portal/usePortal.d.ts +3 -0
  257. package/portal/usePortal.props.d.ts +2 -0
  258. package/portal/usePortal.test.d.ts +0 -0
  259. package/positioner/index.d.ts +2 -0
  260. package/positioner/index.mjs +2 -0
  261. package/positioner/index.mjs.map +1 -0
  262. package/positioner/usePositioner copy.d.ts +18 -0
  263. package/positioner/usePositioner.d.ts +11 -0
  264. package/positioner/usePositioner.props.d.ts +2 -0
  265. package/positioner/usePositioner.test.d.ts +0 -0
  266. package/radiobuttongroup/index.d.ts +2 -0
  267. package/radiobuttongroup/index.mjs +2 -0
  268. package/radiobuttongroup/index.mjs.map +1 -0
  269. package/radiobuttongroup/useRadioButtonGroup.d.ts +7 -0
  270. package/radiobuttongroup/useRadioButtonGroup.props.d.ts +2 -0
  271. package/radiobuttongroup/useRadioButtonGroup.test.d.ts +0 -0
  272. package/rating/index.d.ts +2 -0
  273. package/rating/index.mjs +2 -0
  274. package/rating/index.mjs.map +1 -0
  275. package/rating/useRating.d.ts +15 -0
  276. package/rating/useRating.props.d.ts +2 -0
  277. package/rating/useRating.test.d.ts +0 -0
  278. package/select/index.d.ts +2 -0
  279. package/select/index.mjs +2 -0
  280. package/select/index.mjs.map +1 -0
  281. package/select/useSelect.d.ts +87 -0
  282. package/select/useSelect.props.d.ts +2 -0
  283. package/select/useSelect.test.d.ts +1 -0
  284. package/slider/index.d.ts +2 -0
  285. package/slider/index.mjs +2 -0
  286. package/slider/index.mjs.map +1 -0
  287. package/slider/useSlider.d.ts +20 -0
  288. package/slider/useSlider.props.d.ts +2 -0
  289. package/slider/useSlider.test.d.ts +0 -0
  290. package/speeddial/index.d.ts +2 -0
  291. package/speeddial/index.mjs +2 -0
  292. package/speeddial/index.mjs.map +1 -0
  293. package/speeddial/useSpeedDial.d.ts +16 -0
  294. package/speeddial/useSpeedDial.props.d.ts +2 -0
  295. package/speeddial/useSpeedDial.test.d.ts +0 -0
  296. package/terminal/index.d.ts +2 -0
  297. package/terminal/index.mjs +2 -0
  298. package/terminal/index.mjs.map +1 -0
  299. package/terminal/useTerminal.d.ts +13 -0
  300. package/terminal/useTerminal.props.d.ts +2 -0
  301. package/terminal/useTerminal.test.d.ts +0 -0
  302. package/textarea/index.d.ts +2 -0
  303. package/textarea/index.mjs +2 -0
  304. package/textarea/index.mjs.map +1 -0
  305. package/textarea/useTextarea.d.ts +4 -0
  306. package/textarea/useTextarea.props.d.ts +2 -0
  307. package/textarea/useTextarea.test.d.ts +0 -0
  308. package/timeline/index.d.ts +2 -0
  309. package/timeline/index.mjs +2 -0
  310. package/timeline/index.mjs.map +1 -0
  311. package/timeline/useTimeline.d.ts +1 -0
  312. package/timeline/useTimeline.props.d.ts +2 -0
  313. package/timeline/useTimeline.test.d.ts +0 -0
  314. package/toast/index.d.ts +2 -0
  315. package/toast/index.mjs +2 -0
  316. package/toast/index.mjs.map +1 -0
  317. package/toast/useToast.d.ts +31 -0
  318. package/toast/useToast.props.d.ts +2 -0
  319. package/toast/useToast.test.d.ts +0 -0
  320. package/toaster/index.d.ts +3 -0
  321. package/toaster/index.mjs +2 -0
  322. package/toaster/index.mjs.map +1 -0
  323. package/toaster/toastStore.d.ts +40 -0
  324. package/toaster/useToaster.d.ts +26 -0
  325. package/toaster/useToaster.props.d.ts +2 -0
  326. package/toaster/useToaster.test.d.ts +0 -0
  327. package/togglebuttongroup/index.d.ts +2 -0
  328. package/togglebuttongroup/index.mjs +2 -0
  329. package/togglebuttongroup/index.mjs.map +1 -0
  330. package/togglebuttongroup/useToggleButtonGroup.d.ts +8 -0
  331. package/togglebuttongroup/useToggleButtonGroup.props.d.ts +2 -0
  332. package/togglebuttongroup/useToggleButtonGroup.test.d.ts +0 -0
  333. package/tooltip/group/index.d.ts +2 -0
  334. package/tooltip/group/index.mjs +2 -0
  335. package/tooltip/group/index.mjs.map +1 -0
  336. package/tooltip/group/useTooltipGroup.d.ts +9 -0
  337. package/tooltip/group/useTooltipGroup.props.d.ts +2 -0
  338. package/tooltip/group/useTooltipGroup.test.d.ts +0 -0
  339. package/tooltip/index.d.ts +2 -0
  340. package/tooltip/index.mjs +2 -0
  341. package/tooltip/index.mjs.map +1 -0
  342. package/tooltip/useTooltip.d.ts +28 -0
  343. package/tooltip/useTooltip.props.d.ts +2 -0
  344. package/tooltip/useTooltip.test.d.ts +0 -0
  345. package/tree/TreeDragDropService.d.ts +24 -0
  346. package/tree/index.d.ts +3 -0
  347. package/tree/index.mjs +2 -0
  348. package/tree/index.mjs.map +1 -0
  349. package/tree/useTree.d.ts +27 -0
  350. package/tree/useTree.props.d.ts +2 -0
  351. package/tree/useTree.test.d.ts +0 -0
@@ -0,0 +1,2 @@
1
+ import{withHeadless as me}from"@primereact/core/headless";import{useControlledState as de}from"@primereact/hooks";import{isRTL as fe}from"@primeuix/utils";import*as h from"react";var j={value:void 0,defaultValue:void 0,orientation:"horizontal",min:0,max:100,step:1,minStepsBetweenThumbs:0,onValueChange:void 0,onValueChangeEnd:void 0,disabled:!1,readOnly:!1};var Me=me({name:"useSlider",defaultProps:j,setup({props:r}){var Y,q,K,U;let[M,G]=de({value:r.value,defaultValue:r.defaultValue,onChange:r.onValueChange}),[B,O]=h.useState(!1),b=h.useRef(0),g=h.useRef(null),R=h.useRef(null),l=(Y=r.min)!=null?Y:0,V=(q=r.max)!=null?q:100,A=(K=r.step)!=null?K:1,J=(U=r.minStepsBetweenThumbs)!=null?U:0,m=r.orientation==="horizontal",v=h.useRef(!1),E=h.useRef(0);function D(e,t,n){return Math.min(Math.max(e,t),n)}function Q(e){let t=e.toString();if(t.includes("e-"))return Number(t.split("e-")[1]||0);let n=t.indexOf(".");return n>=0?t.length-n-1:0}function W(e,t,n){if(!t)return e;let u=Q(t),i=Math.round((e-n)/t)*t+n;return Number(i.toFixed(u))}let I=e=>D(W(e,A,l),l,V);function S(){return Array.isArray(M)}function P(){var n;let e=M!==void 0?M:(n=r.value)!=null?n:r.defaultValue;return(Array.isArray(e)?e:e!==void 0?[e]:[l]).map(u=>I(u))}function $(){let e=P();return S()?e:e[0]}function C(e){var t,n;return(n=(t=R.current)==null?void 0:t.querySelector(`[data-index="${e}"]`))!=null?n:null}function F(e){var t,n;return(n=(t=C(e))==null?void 0:t.hasAttribute("data-disabled"))!=null?n:!1}function z(e){if(g.current===null||g.current===e)return;let t=R.current;if(!t){g.current=null;return}let n=t.querySelector(`[data-index="${g.current}"] input[type="range"]`);g.current=null,n==null||n.blur()}function Z(e,t,n){let u=e.map((c,s)=>s),i=R.current?u.filter(c=>!F(c)):u;if(!i.length)return-1;let a=i[0],o=Math.abs(e[a]-t),d=n?m?n.clientX:n.clientY:null;for(let c of i.slice(1)){let s=Math.abs(e[c]-t);if(s<o)a=c,o=s;else if(s===o&&d!==null){let f=C(a),T=C(c);if(f&&T){let x=f.getBoundingClientRect(),y=T.getBoundingClientRect(),w=m?x.left+x.width/2:x.top+x.height/2,_=m?y.left+y.width/2:y.top+y.height/2;if(w===_)a=d<w?Math.min(a,c):Math.max(a,c);else{let se=Math.abs(d-w);Math.abs(d-_)<se&&(a=c)}}}}return a}function N(e){var n;return(n=P()[e])!=null?n:l}function H(e){let t=V-l;return t?D((e-l)/t*100,0,100):0}function p(){var s;let e=P(),t=S(),n=e.length?Math.min(...e):l,u=e.length?Math.max(...e):l,i=t?n:l,a=t?u:(s=e[0])!=null?s:l,o=H(i),d=H(a),c=Math.max(d-o,0);return m?{position:"absolute",insetInlineStart:`${o}%`,width:`${c}%`}:{position:"absolute",bottom:`${o}%`,height:`${c}%`}}function ee(e){let t=N(e),n=H(t);return m?{position:"absolute",insetInlineStart:`${n}%`,translate:"-50% 0"}:{position:"absolute",bottom:`${n}%`,translate:"0 50%"}}function te(e){R.current=e}function ne(e){var t,n;return(n=(t=R.current)==null?void 0:t.getBoundingClientRect())!=null?n:e.currentTarget.getBoundingClientRect()}function k(e,t=0){var f;let n=ne(e),u=m?n.width:n.height;if(!u)return l;let a=((m?e.clientX-n.left:e.clientY-n.top)-t)/u,o=D(a,0,1),d=m&&fe((f=R.current)!=null?f:e.currentTarget),c=m?d?1-o:o:1-o,s=l+c*(V-l);return I(s)}function L(e,t,n){let u=P(),i=Math.max(J*(A||1),0),a=e>0?u[e-1]+i:l,o=e<u.length-1?u[e+1]-i:V,d=Math.min(a,o),c=Math.max(a,o),s=D(I(t),d,c),f=[...u];f[e]=s;let T=S()?f:f[0];return G([T,{originalEvent:n,value:T}]),T}function X(e){let t=k(e,E.current),n=P(),u=Z(n,t,e);u!==-1&&(z(u),b.current=u,E.current=0,L(b.current,t,e))}function re(e){if(!(r.disabled||r.readOnly)&&!(e.pointerType==="mouse"&&e.button!==0)){if(e.preventDefault(),e.currentTarget.setPointerCapture(e.pointerId),O(!0),v.current){v.current=!1;return}E.current=0,X(e)}}function ue(e){r.disabled||r.readOnly||B&&(F(b.current)||(e.preventDefault(),L(b.current,k(e,E.current),e)))}function ae(e){var t;r.disabled||r.readOnly||(e.preventDefault(),e.currentTarget.releasePointerCapture(e.pointerId),O(!1),v.current=!1,E.current=0,(t=r.onValueChangeEnd)==null||t.call(r,{originalEvent:e,value:$()}))}function ie(e,t){var u;if(r.disabled||r.readOnly||e.pointerType==="mouse"&&e.button!==0)return;e.preventDefault(),(u=R.current)==null||u.setPointerCapture(e.pointerId);let n=C(t);if(n){let i=n.getBoundingClientRect(),a=m?i.left+i.width/2:i.top+i.height/2,o=m?e.clientX:e.clientY;E.current=o-a}else E.current=0;z(t),b.current=t,v.current=!0}function oe(e,t){var u;if(r.disabled||r.readOnly)return;b.current=t;let n=L(t,Number(e.target.value),e);(u=r.onValueChangeEnd)==null||u.call(r,{originalEvent:e,value:n})}function ce(e,t){r.disabled||r.readOnly||(g.current=t,b.current=t)}function le(e,t){var n;r.disabled||r.readOnly||(b.current=t,g.current===t&&(g.current=null),(n=r.onValueChangeEnd)==null||n.call(r,{originalEvent:e,value:$()}))}return{state:{value:M,isDragging:B},range:S,getThumbValue:N,getRangeStyle:p,getThumbStyle:ee,setRootRef:te,onTrackPointerDown:re,onTrackPointerMove:ue,onTrackPointerUp:ae,updateValueFromPointer:X,onThumbPointerDown:ie,onInputChange:oe,onInputFocus:ce,onInputBlur:le}}});export{j as defaultProps,Me as useSlider};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/slider/useSlider.ts","../../src/slider/useSlider.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks';\nimport { isRTL } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useSlider.props';\n\nexport const useSlider = withHeadless({\n name: 'useSlider',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n const [isDragging, setIsDragging] = React.useState(false);\n const activeIndex = React.useRef(0);\n const focusedIndex = React.useRef<number | null>(null);\n const rootRef = React.useRef<HTMLDivElement | null>(null);\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n const step = props.step ?? 1;\n const minStepsBetweenThumbs = props.minStepsBetweenThumbs ?? 0;\n const isHorizontal = props.orientation === 'horizontal';\n const isThumbPointerDown = React.useRef(false);\n const dragOffsetPx = React.useRef(0);\n\n // methods\n function clamp(value: number, minValue: number, maxValue: number) {\n return Math.min(Math.max(value, minValue), maxValue);\n }\n\n function getPrecision(stepValue: number) {\n const stepString = stepValue.toString();\n\n if (stepString.includes('e-')) {\n return Number(stepString.split('e-')[1] || 0);\n }\n\n const dotIndex = stepString.indexOf('.');\n\n return dotIndex >= 0 ? stepString.length - dotIndex - 1 : 0;\n }\n\n function roundToStep(value: number, stepValue: number, minValue: number) {\n if (!stepValue) return value;\n\n const precision = getPrecision(stepValue);\n const rounded = Math.round((value - minValue) / stepValue) * stepValue + minValue;\n\n return Number(rounded.toFixed(precision));\n }\n\n const normalizeValue = (value: number) => clamp(roundToStep(value, step, min), min, max);\n\n function range() {\n return Array.isArray(valueState);\n }\n\n function getValues() {\n const sourceValue = valueState !== undefined ? valueState : (props.value ?? props.defaultValue);\n const rawValues = Array.isArray(sourceValue) ? sourceValue : sourceValue !== undefined ? [sourceValue] : [min];\n\n return rawValues.map((value) => normalizeValue(value));\n }\n\n function getValueState() {\n const values = getValues();\n\n if (range()) {\n return values;\n }\n\n return values[0];\n }\n\n function getThumbElement(index: number) {\n return rootRef.current?.querySelector<HTMLElement>(`[data-index=\"${index}\"]`) ?? null;\n }\n\n function isThumbDisabled(index: number) {\n return getThumbElement(index)?.hasAttribute('data-disabled') ?? false;\n }\n\n function blurFocusedThumbIfDifferent(nextIndex: number) {\n if (focusedIndex.current === null || focusedIndex.current === nextIndex) return;\n\n const rootNode = rootRef.current;\n\n if (!rootNode) {\n focusedIndex.current = null;\n\n return;\n }\n\n const input = rootNode.querySelector<HTMLInputElement>(`[data-index=\"${focusedIndex.current}\"] input[type=\"range\"]`);\n\n focusedIndex.current = null;\n input?.blur();\n }\n\n function getClosestEnabledValueIndex(values: number[], nextValue: number, event?: React.PointerEvent<HTMLDivElement>) {\n const indices = values.map((_, index) => index);\n const enabledIndices = rootRef.current ? indices.filter((index) => !isThumbDisabled(index)) : indices;\n\n if (!enabledIndices.length) return -1;\n\n let closestIndex = enabledIndices[0];\n let smallestDistance = Math.abs(values[closestIndex] - nextValue);\n const pointerAxis = event ? (isHorizontal ? event.clientX : event.clientY) : null;\n\n for (const index of enabledIndices.slice(1)) {\n const distance = Math.abs(values[index] - nextValue);\n\n if (distance < smallestDistance) {\n closestIndex = index;\n smallestDistance = distance;\n } else if (distance === smallestDistance && pointerAxis !== null) {\n const closestElement = getThumbElement(closestIndex);\n const candidateElement = getThumbElement(index);\n\n if (closestElement && candidateElement) {\n const closestRect = closestElement.getBoundingClientRect();\n const candidateRect = candidateElement.getBoundingClientRect();\n const closestCenter = isHorizontal ? closestRect.left + closestRect.width / 2 : closestRect.top + closestRect.height / 2;\n const candidateCenter = isHorizontal ? candidateRect.left + candidateRect.width / 2 : candidateRect.top + candidateRect.height / 2;\n\n if (closestCenter === candidateCenter) {\n closestIndex = pointerAxis < closestCenter ? Math.min(closestIndex, index) : Math.max(closestIndex, index);\n } else {\n const closestDelta = Math.abs(pointerAxis - closestCenter);\n const candidateDelta = Math.abs(pointerAxis - candidateCenter);\n\n if (candidateDelta < closestDelta) {\n closestIndex = index;\n }\n }\n }\n }\n }\n\n return closestIndex;\n }\n\n function getThumbValue(index: number) {\n const values = getValues();\n\n return values[index] ?? min;\n }\n\n function getValuePercent(value: number) {\n const rangeValue = max - min;\n\n if (!rangeValue) return 0;\n\n return clamp(((value - min) / rangeValue) * 100, 0, 100);\n }\n\n function getRangeStyle(): React.CSSProperties {\n const values = getValues();\n const isRange = range();\n const minValue = values.length ? Math.min(...values) : min;\n const maxValue = values.length ? Math.max(...values) : min;\n const startValue = isRange ? minValue : min;\n const endValue = isRange ? maxValue : (values[0] ?? min);\n const startPercent = getValuePercent(startValue);\n const endPercent = getValuePercent(endValue);\n const sizePercent = Math.max(endPercent - startPercent, 0);\n\n return isHorizontal\n ? {\n position: 'absolute',\n insetInlineStart: `${startPercent}%`,\n width: `${sizePercent}%`\n }\n : {\n position: 'absolute',\n bottom: `${startPercent}%`,\n height: `${sizePercent}%`\n };\n }\n\n function getThumbStyle(index: number): React.CSSProperties {\n const value = getThumbValue(index);\n const percent = getValuePercent(value);\n\n return isHorizontal\n ? {\n position: 'absolute',\n insetInlineStart: `${percent}%`,\n translate: '-50% 0'\n }\n : {\n position: 'absolute',\n bottom: `${percent}%`,\n translate: '0 50%'\n };\n }\n\n function setRootRef(node: HTMLDivElement | null) {\n rootRef.current = node;\n }\n\n function getRootRect(event: React.PointerEvent<HTMLDivElement>) {\n return rootRef.current?.getBoundingClientRect() ?? event.currentTarget.getBoundingClientRect();\n }\n\n function getValueFromPointer(event: React.PointerEvent<HTMLDivElement>, offsetPx: number = 0) {\n const rect = getRootRect(event);\n const size = isHorizontal ? rect.width : rect.height;\n\n if (!size) return min;\n\n const pointerPosition = isHorizontal ? event.clientX - rect.left : event.clientY - rect.top;\n const position = (pointerPosition - offsetPx) / size;\n const clampedPosition = clamp(position, 0, 1);\n const isRtl = isHorizontal && isRTL(rootRef.current ?? event.currentTarget);\n const orientedPosition = isHorizontal ? (isRtl ? 1 - clampedPosition : clampedPosition) : 1 - clampedPosition;\n const value = min + orientedPosition * (max - min);\n\n return normalizeValue(value);\n }\n\n function updateValueAt(index: number, nextValue: number, originalEvent: React.PointerEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement> | React.ChangeEvent<HTMLInputElement>) {\n const values = getValues();\n const minDistance = Math.max(minStepsBetweenThumbs * (step || 1), 0);\n const minValue = index > 0 ? values[index - 1] + minDistance : min;\n const maxValue = index < values.length - 1 ? values[index + 1] - minDistance : max;\n const lowerBound = Math.min(minValue, maxValue);\n const upperBound = Math.max(minValue, maxValue);\n const clampedValue = clamp(normalizeValue(nextValue), lowerBound, upperBound);\n const nextValues = [...values];\n\n nextValues[index] = clampedValue;\n\n const nextValueState = range() ? nextValues : nextValues[0];\n\n setValueState([\n nextValueState,\n {\n originalEvent,\n value: nextValueState\n }\n ]);\n\n return nextValueState;\n }\n\n function updateValueFromPointer(event: React.PointerEvent<HTMLDivElement>) {\n const nextValue = getValueFromPointer(event, dragOffsetPx.current);\n const values = getValues();\n const closestIndex = getClosestEnabledValueIndex(values, nextValue, event);\n\n if (closestIndex === -1) return;\n\n blurFocusedThumbIfDifferent(closestIndex);\n activeIndex.current = closestIndex;\n dragOffsetPx.current = 0;\n updateValueAt(activeIndex.current, nextValue, event);\n }\n\n function onTrackPointerDown(event: React.PointerEvent<HTMLDivElement>) {\n if (props.disabled || props.readOnly) return;\n\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n event.currentTarget.setPointerCapture(event.pointerId);\n setIsDragging(true);\n\n if (isThumbPointerDown.current) {\n isThumbPointerDown.current = false;\n\n return;\n }\n\n dragOffsetPx.current = 0;\n\n updateValueFromPointer(event);\n }\n\n function onTrackPointerMove(event: React.PointerEvent<HTMLDivElement>) {\n if (props.disabled || props.readOnly) return;\n\n if (!isDragging) return;\n\n if (isThumbDisabled(activeIndex.current)) return;\n\n event.preventDefault();\n updateValueAt(activeIndex.current, getValueFromPointer(event, dragOffsetPx.current), event);\n }\n\n function onTrackPointerUp(event: React.PointerEvent<HTMLDivElement>) {\n if (props.disabled || props.readOnly) return;\n\n event.preventDefault();\n event.currentTarget.releasePointerCapture(event.pointerId);\n setIsDragging(false);\n isThumbPointerDown.current = false;\n dragOffsetPx.current = 0;\n\n props.onValueChangeEnd?.({\n originalEvent: event,\n value: getValueState()\n });\n }\n\n function onThumbPointerDown(event: React.PointerEvent<HTMLDivElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n if (event.pointerType === 'mouse' && event.button !== 0) return;\n\n event.preventDefault();\n rootRef.current?.setPointerCapture(event.pointerId);\n const thumb = getThumbElement(index);\n\n if (thumb) {\n const thumbRect = thumb.getBoundingClientRect();\n const thumbCenter = isHorizontal ? thumbRect.left + thumbRect.width / 2 : thumbRect.top + thumbRect.height / 2;\n const pointerAxis = isHorizontal ? event.clientX : event.clientY;\n\n dragOffsetPx.current = pointerAxis - thumbCenter;\n } else {\n dragOffsetPx.current = 0;\n }\n\n blurFocusedThumbIfDifferent(index);\n activeIndex.current = index;\n isThumbPointerDown.current = true;\n }\n\n function onInputChange(event: React.ChangeEvent<HTMLInputElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n activeIndex.current = index;\n const nextValueState = updateValueAt(index, Number(event.target.value), event);\n\n props.onValueChangeEnd?.({\n originalEvent: event,\n value: nextValueState\n });\n }\n\n function onInputFocus(event: React.FocusEvent<HTMLInputElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n focusedIndex.current = index;\n activeIndex.current = index;\n }\n\n function onInputBlur(event: React.FocusEvent<HTMLInputElement>, index: number) {\n if (props.disabled || props.readOnly) return;\n\n activeIndex.current = index;\n\n if (focusedIndex.current === index) {\n focusedIndex.current = null;\n }\n\n props.onValueChangeEnd?.({\n originalEvent: event,\n value: getValueState()\n });\n }\n\n const state = {\n value: valueState,\n isDragging\n };\n\n return {\n state,\n // methods\n range,\n getThumbValue,\n getRangeStyle,\n getThumbStyle,\n setRootRef,\n onTrackPointerDown,\n onTrackPointerMove,\n onTrackPointerUp,\n updateValueFromPointer,\n onThumbPointerDown,\n onInputChange,\n onInputFocus,\n onInputBlur\n };\n }\n});\n","import type { useSliderProps } from '@primereact/types/shared/slider';\n\nexport const defaultProps: useSliderProps = {\n value: undefined,\n defaultValue: undefined,\n orientation: 'horizontal',\n min: 0,\n max: 100,\n step: 1,\n minStepsBetweenThumbs: 0,\n onValueChange: undefined,\n onValueChangeEnd: undefined,\n disabled: false,\n readOnly: false\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","isRTL","React","defaultProps","useSlider","withHeadless","defaultProps","props","_a","_b","_c","_d","valueState","setValueState","useControlledState","isDragging","setIsDragging","activeIndex","focusedIndex","rootRef","min","max","step","minStepsBetweenThumbs","isHorizontal","isThumbPointerDown","dragOffsetPx","clamp","value","minValue","maxValue","getPrecision","stepValue","stepString","dotIndex","roundToStep","precision","rounded","normalizeValue","range","getValues","sourceValue","getValueState","values","getThumbElement","index","isThumbDisabled","blurFocusedThumbIfDifferent","nextIndex","rootNode","input","getClosestEnabledValueIndex","nextValue","event","indices","_","enabledIndices","closestIndex","smallestDistance","pointerAxis","distance","closestElement","candidateElement","closestRect","candidateRect","closestCenter","candidateCenter","closestDelta","getThumbValue","getValuePercent","rangeValue","getRangeStyle","isRange","startValue","endValue","startPercent","endPercent","sizePercent","getThumbStyle","percent","setRootRef","node","getRootRect","getValueFromPointer","offsetPx","rect","size","position","clampedPosition","isRtl","isRTL","orientedPosition","updateValueAt","originalEvent","minDistance","lowerBound","upperBound","clampedValue","nextValues","nextValueState","updateValueFromPointer","onTrackPointerDown","onTrackPointerMove","onTrackPointerUp","onThumbPointerDown","thumb","thumbRect","thumbCenter","onInputChange","onInputFocus","onInputBlur"]}
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ export declare const useSlider: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/slider").useSliderProps, unknown, {
3
+ state: {
4
+ value: number | number[] | undefined;
5
+ isDragging: boolean;
6
+ };
7
+ range: () => boolean;
8
+ getThumbValue: (index: number) => number;
9
+ getRangeStyle: () => React.CSSProperties;
10
+ getThumbStyle: (index: number) => React.CSSProperties;
11
+ setRootRef: (node: HTMLDivElement | null) => void;
12
+ onTrackPointerDown: (event: React.PointerEvent<HTMLDivElement>) => void;
13
+ onTrackPointerMove: (event: React.PointerEvent<HTMLDivElement>) => void;
14
+ onTrackPointerUp: (event: React.PointerEvent<HTMLDivElement>) => void;
15
+ updateValueFromPointer: (event: React.PointerEvent<HTMLDivElement>) => void;
16
+ onThumbPointerDown: (event: React.PointerEvent<HTMLDivElement>, index: number) => void;
17
+ onInputChange: (event: React.ChangeEvent<HTMLInputElement>, index: number) => void;
18
+ onInputFocus: (event: React.FocusEvent<HTMLInputElement>, index: number) => void;
19
+ onInputBlur: (event: React.FocusEvent<HTMLInputElement>, index: number) => void;
20
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useSliderProps } from '@primereact/types/shared/slider';
2
+ export declare const defaultProps: useSliderProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useSpeedDial';
2
+ export * from './useSpeedDial.props';
@@ -0,0 +1,2 @@
1
+ var rt=Object.defineProperty;var O=Object.getOwnPropertySymbols;var ot=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable;var A=(n,r,i)=>r in n?rt(n,r,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[r]=i,K=(n,r)=>{for(var i in r||(r={}))ot.call(r,i)&&A(n,i,r[i]);if(O)for(var i of O(r))it.call(r,i)&&A(n,i,r[i]);return n};import{withHeadless as at}from"@primereact/core/headless";import{useEventListener as ct,useUnmountEffect as lt,useUpdateEffect as ut}from"@primereact/hooks";import{useControlledState as dt}from"@primereact/hooks/use-controlled-state";import{$dt as g}from"@primeuix/styled";import{find as ft,findSingle as h,focus as $}from"@primeuix/utils/dom";import*as l from"react";var U={visible:void 0,defaultVisible:void 0,direction:"up",transitionDelay:30,type:"linear",radius:0,hideOnClickOutside:!0,onVisibleChange:void 0};var kt=at({name:"useSpeedDial",defaultProps:U,setup:({props:n,elementRef:r})=>{var I;let[i,M]=dt({value:n.visible,defaultValue:(I=n.defaultVisible)!=null?I:!1,onChange:n.onVisibleChange}),[y,d]=l.useState(-1),f=l.useRef(null),E=l.useRef(!1),k=l.useRef(0),B={visible:i,focusedOptionIndex:y},V=l.useCallback(()=>{let t=k.current;return k.current+=1,t},[]),w=()=>ft(r.current,'[data-scope="speeddial"][data-part="item"]'),C=()=>w().length,F=()=>{let t=h(r.current,'[data-scope="speeddial"][data-part="trigger"]');t&&$(t)},D=()=>M([!0,{value:!0}]),p=()=>M([!1,{value:!1}]),N=l.useCallback(()=>{if(n.type!=="linear"){let t=h(r.current,'[data-scope="speeddial"][data-part="trigger"]'),e=h(f.current,'[data-scope="speeddial"][data-part="item"]');if(t&&e){let o=Math.abs(t.offsetWidth-e.offsetWidth),u=Math.abs(t.offsetHeight-e.offsetHeight);f.current.style.setProperty(g("item.diff.x").name,`${o/2}px`),f.current.style.setProperty(g("item.diff.y").name,`${u/2}px`)}}},[n.type,r]),[q,L]=ct({type:"click",listener:t=>{let e=t.target,o=r.current&&!r.current.contains(e);i&&o&&p(),E.current=!1}});ut(()=>(i&&(requestAnimationFrame(N),n.hideOnClickOutside&&q()),()=>{n.hideOnClickOutside&&L()}),[i]),lt(()=>{L()});let W=t=>{var o;let e=C();return(i?t:e-t-1)*((o=n.transitionDelay)!=null?o:30)},Y=t=>{var P;let{type:e,direction:o,radius:u}=n;if(e==="linear")return{};let m=C(),b=u||m*20,_=g("item.diff.x").variable,tt=g("item.diff.y").variable,x=s=>`calc(${s}px + ${_})`,v=s=>`calc(${s}px + ${tt})`;if(e==="circle"){let s=2*Math.PI/m;return{left:x(b*Math.cos(s*t)),top:v(b*Math.sin(s*t))}}let et=e==="semi-circle"?m-1:2*(m-1),H=Math.PI/et,st=x(b*Math.cos(H*t)),nt=v(b*Math.sin(H*t)),T=(P={"semi-circle":{up:(s,a)=>({left:s,bottom:a}),down:(s,a)=>({left:s,top:a}),left:(s,a)=>({right:a,top:s}),right:(s,a)=>({left:a,top:s})},"quarter-circle":{"up-left":(s,a)=>({right:s,bottom:a}),"up-right":(s,a)=>({left:s,bottom:a}),"down-left":(s,a)=>({right:a,top:s}),"down-right":(s,a)=>({left:a,top:s})}}[e])==null?void 0:P[o];return T?T(st,nt):{}},X=t=>K({transitionDelay:`${W(t)}ms`},Y(t)),j=t=>{let e=w(),o=t==="next",u=o?0:e.length-1;return y===-1?u:y+(o?1:-1)},z=t=>{let e=w();if(e[t]){d(t!=null?t:-1);let o=h(e[t],'[type="button"]');o&&$(o)}},c=(t,e)=>{let o=j(e);z(o),t.preventDefault()},R=()=>{p(),d(-1),F()},G=()=>{i?p():D(),E.current=!0},J=t=>{switch(t.code){case"ArrowDown":case"ArrowLeft":D(),c(t,"next");break;case"ArrowUp":case"ArrowRight":D(),c(t,"prev");break;case"Escape":R();break}},Q=t=>{let e=n.direction,o=["left","up-right","down-left"],u=["right","up-left","down-right"];switch(t.code){case"ArrowDown":e==="down"?c(t,"next"):c(t,"prev");break;case"ArrowUp":e==="down"?c(t,"prev"):c(t,"next");break;case"ArrowLeft":o.includes(e)||e==="down"?c(t,"next"):c(t,"prev");break;case"ArrowRight":u.includes(e)||e==="up"?c(t,"next"):c(t,"prev");break;case"Enter":case"NumpadEnter":case"Space":case"Escape":R();break;case"Home":d(-1),c(t,"next");break;case"End":d(-1),c(t,"prev");break}},Z=t=>{var e;(e=r.current)!=null&&e.contains(t.relatedTarget)||d(-1)},S=t=>{var e;p(),E.current=!0,(e=t.preventDefault)==null||e.call(t)};return{state:B,listRef:f,registerItem:V,getItemStyle:X,onBlur:Z,onKeyDown:Q,onTriggerClick:G,onTriggerKeyDown:J,onItemClick:S,onItemKeyDown:t=>{t.code==="Enter"&&S(t)}}}});export{U as defaultProps,kt as useSpeedDial};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/speeddial/useSpeedDial.ts","../../src/speeddial/useSpeedDial.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { $dt } from '@primeuix/styled';\nimport { find, findSingle, focus } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './useSpeedDial.props';\n\nexport const useSpeedDial = withHeadless({\n name: 'useSpeedDial',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const [visibleState, setVisibleState] = useControlledState({\n value: props.visible,\n defaultValue: props.defaultVisible ?? false,\n onChange: props.onVisibleChange\n });\n\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<string | number>(-1);\n const listRef = React.useRef<HTMLUListElement | null>(null);\n const isItemClicked = React.useRef(false);\n const itemCounter = React.useRef(0);\n\n const state = {\n visible: visibleState,\n focusedOptionIndex\n };\n\n const registerItem = React.useCallback(() => {\n const index = itemCounter.current;\n\n itemCounter.current += 1;\n\n return index;\n }, []);\n\n const getItems = () => find(elementRef.current as HTMLDivElement, '[data-scope=\"speeddial\"][data-part=\"item\"]');\n const getItemCount = () => getItems().length;\n\n const focusButton = () => {\n const buttonEl = findSingle(elementRef.current as HTMLDivElement, '[data-scope=\"speeddial\"][data-part=\"trigger\"]') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n };\n\n const show = () => setVisibleState([true, { value: true }]);\n const hide = () => setVisibleState([false, { value: false }]);\n\n const calculateItemDiff = React.useCallback(() => {\n if (props.type !== 'linear') {\n const button = findSingle(elementRef.current as HTMLDivElement, '[data-scope=\"speeddial\"][data-part=\"trigger\"]') as HTMLButtonElement;\n const firstItem = findSingle(listRef.current as HTMLUListElement, '[data-scope=\"speeddial\"][data-part=\"item\"]') as HTMLLIElement;\n\n if (button && firstItem) {\n const wDiff = Math.abs(button.offsetWidth - firstItem.offsetWidth);\n const hDiff = Math.abs(button.offsetHeight - firstItem.offsetHeight);\n\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.x').name, `${wDiff / 2}px`);\n (listRef.current as HTMLUListElement).style.setProperty($dt('item.diff.y').name, `${hDiff / 2}px`);\n }\n }\n }, [props.type, elementRef]);\n\n const [bindDocumentClickListener, unbindDocumentClickListener] = useEventListener({\n type: 'click',\n listener: (event) => {\n const target = event.target as Node;\n const isOutside = elementRef.current && !elementRef.current.contains(target);\n\n if (visibleState && isOutside) {\n hide();\n }\n\n isItemClicked.current = false;\n }\n });\n\n useUpdateEffect(() => {\n if (visibleState) {\n requestAnimationFrame(calculateItemDiff);\n\n if (props.hideOnClickOutside) {\n bindDocumentClickListener();\n }\n }\n\n return () => {\n if (props.hideOnClickOutside) {\n unbindDocumentClickListener();\n }\n };\n }, [visibleState]);\n\n useUnmountEffect(() => {\n unbindDocumentClickListener();\n });\n\n const calculateTransitionDelay = (index: number) => {\n const length = getItemCount();\n\n return (visibleState ? index : length - index - 1) * (props.transitionDelay ?? 30);\n };\n\n const calculatePointStyle = (index: number): React.CSSProperties => {\n const { type, direction, radius: propRadius } = props;\n\n if (type === 'linear') {\n return {};\n }\n\n const length = getItemCount();\n const radius = (propRadius || length * 20) as number;\n const diffX = $dt('item.diff.x').variable;\n const diffY = $dt('item.diff.y').variable;\n\n const createCoord = (value: number) => `calc(${value}px + ${diffX})`;\n const createCoordY = (value: number) => `calc(${value}px + ${diffY})`;\n\n if (type === 'circle') {\n const step = (2 * Math.PI) / length;\n\n return {\n left: createCoord(radius * Math.cos(step * index)),\n top: createCoordY(radius * Math.sin(step * index))\n };\n }\n\n const stepDivisor = type === 'semi-circle' ? length - 1 : 2 * (length - 1);\n const step = Math.PI / stepDivisor;\n const x = createCoord(radius * Math.cos(step * index));\n const y = createCoordY(radius * Math.sin(step * index));\n\n const pointStyleMap: Record<string, Record<string, (x: string, y: string) => React.CSSProperties>> = {\n 'semi-circle': {\n up: (x, y) => ({ left: x, bottom: y }),\n down: (x, y) => ({ left: x, top: y }),\n left: (x, y) => ({ right: y, top: x }),\n right: (x, y) => ({ left: y, top: x })\n },\n 'quarter-circle': {\n 'up-left': (x, y) => ({ right: x, bottom: y }),\n 'up-right': (x, y) => ({ left: x, bottom: y }),\n 'down-left': (x, y) => ({ right: y, top: x }),\n 'down-right': (x, y) => ({ left: y, top: x })\n }\n };\n\n const styleMapper = pointStyleMap[type as string]?.[direction as string];\n\n return styleMapper ? styleMapper(x, y) : {};\n };\n\n const getItemStyle = (index: number): React.CSSProperties => ({\n transitionDelay: `${calculateTransitionDelay(index)}ms`,\n ...calculatePointStyle(index)\n });\n\n const findOptionIndex = (direction: 'next' | 'prev') => {\n const items = getItems();\n const isNext = direction === 'next';\n const fallbackIndex = isNext ? 0 : items.length - 1;\n // const newIndex = index === -1 ? items[fallbackIndex]?.id : index;\n // const matchedIndex = items.findIndex((item) => item.getAttribute('id') === newIndex);\n\n return focusedOptionIndex === -1 ? fallbackIndex : (focusedOptionIndex as number) + (isNext ? 1 : -1);\n };\n\n const changeFocusedOptionIndex = (index: number) => {\n const items = getItems();\n\n if (items[index]) {\n setFocusedOptionIndex(index ?? -1);\n\n const buttonEl = findSingle(items[index], '[type=\"button\"]') as HTMLButtonElement;\n\n if (buttonEl) {\n focus(buttonEl);\n }\n }\n };\n\n const navigate = (event: React.KeyboardEvent, direction: 'next' | 'prev') => {\n const optionIndex = findOptionIndex(direction);\n\n changeFocusedOptionIndex(optionIndex);\n event.preventDefault();\n };\n\n const hideAndFocusButton = () => {\n hide();\n setFocusedOptionIndex(-1);\n focusButton();\n };\n\n const onTriggerClick = () => {\n if (visibleState) {\n hide();\n } else {\n show();\n }\n\n isItemClicked.current = true;\n };\n\n const onTriggerKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n show();\n navigate(event, 'next');\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n show();\n navigate(event, 'prev');\n break;\n\n case 'Escape':\n hideAndFocusButton();\n break;\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n const direction = props.direction as string;\n const leftDirections = ['left', 'up-right', 'down-left'];\n const rightDirections = ['right', 'up-left', 'down-right'];\n\n switch (event.code) {\n case 'ArrowDown':\n if (direction === 'down') {\n navigate(event, 'next');\n } else {\n navigate(event, 'prev');\n }\n\n break;\n\n case 'ArrowUp':\n if (direction === 'down') {\n navigate(event, 'prev');\n } else {\n navigate(event, 'next');\n }\n\n break;\n\n case 'ArrowLeft':\n if (leftDirections.includes(direction) || direction === 'down') {\n navigate(event, 'next');\n } else {\n navigate(event, 'prev');\n }\n\n break;\n\n case 'ArrowRight':\n if (rightDirections.includes(direction) || direction === 'up') {\n navigate(event, 'next');\n } else {\n navigate(event, 'prev');\n }\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n case 'Escape':\n hideAndFocusButton();\n break;\n\n case 'Home':\n setFocusedOptionIndex(-1);\n navigate(event, 'next');\n break;\n\n case 'End':\n setFocusedOptionIndex(-1);\n navigate(event, 'prev');\n break;\n }\n };\n\n const onBlur = (event: React.FocusEvent) => {\n if (!elementRef.current?.contains(event.relatedTarget as Node)) {\n setFocusedOptionIndex(-1);\n }\n };\n\n const onItemClick = (event: React.MouseEvent | React.KeyboardEvent) => {\n hide();\n isItemClicked.current = true;\n event.preventDefault?.();\n };\n\n const onItemKeyDown = (event: React.KeyboardEvent) => {\n if (event.code === 'Enter') {\n onItemClick(event);\n }\n };\n\n return {\n state,\n //refs\n listRef,\n // methods\n registerItem,\n getItemStyle,\n onBlur,\n onKeyDown,\n onTriggerClick,\n onTriggerKeyDown,\n onItemClick,\n onItemKeyDown\n };\n }\n});\n","import type { useSpeedDialProps } from '@primereact/types/shared/speeddial';\n\nexport const defaultProps: useSpeedDialProps = {\n visible: undefined,\n defaultVisible: undefined,\n direction: 'up',\n transitionDelay: 30,\n type: 'linear',\n radius: 0,\n hideOnClickOutside: true,\n onVisibleChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","useUnmountEffect","useUpdateEffect","useControlledState","$dt","find","findSingle","focus","React","defaultProps","useSpeedDial","withHeadless","defaultProps","props","elementRef","_a","visibleState","setVisibleState","useControlledState","focusedOptionIndex","setFocusedOptionIndex","listRef","isItemClicked","itemCounter","state","registerItem","index","getItems","find","getItemCount","focusButton","buttonEl","findSingle","focus","show","hide","calculateItemDiff","button","firstItem","wDiff","hDiff","$dt","bindDocumentClickListener","unbindDocumentClickListener","useEventListener","event","target","isOutside","useUpdateEffect","useUnmountEffect","calculateTransitionDelay","length","calculatePointStyle","type","direction","propRadius","radius","diffX","diffY","createCoord","value","createCoordY","step","stepDivisor","x","y","styleMapper","getItemStyle","__spreadValues","findOptionIndex","items","isNext","fallbackIndex","changeFocusedOptionIndex","navigate","optionIndex","hideAndFocusButton","onTriggerClick","onTriggerKeyDown","onKeyDown","leftDirections","rightDirections","onBlur","onItemClick"]}
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ export declare const useSpeedDial: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/speeddial").useSpeedDialProps, unknown, {
3
+ state: {
4
+ visible: boolean | undefined;
5
+ focusedOptionIndex: string | number;
6
+ };
7
+ listRef: React.RefObject<HTMLUListElement | null>;
8
+ registerItem: () => number;
9
+ getItemStyle: (index: number) => React.CSSProperties;
10
+ onBlur: (event: React.FocusEvent) => void;
11
+ onKeyDown: (event: React.KeyboardEvent) => void;
12
+ onTriggerClick: () => void;
13
+ onTriggerKeyDown: (event: React.KeyboardEvent) => void;
14
+ onItemClick: (event: React.MouseEvent | React.KeyboardEvent) => void;
15
+ onItemKeyDown: (event: React.KeyboardEvent) => void;
16
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useSpeedDialProps } from '@primereact/types/shared/speeddial';
2
+ export declare const defaultProps: useSpeedDialProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useTerminal';
2
+ export * from './useTerminal.props';
@@ -0,0 +1,2 @@
1
+ var T=(c,u,o)=>new Promise((i,a)=>{var l=n=>{try{m(o.next(n))}catch(d){a(d)}},p=n=>{try{m(o.throw(n))}catch(d){a(d)}},m=n=>n.done?i(n.value):Promise.resolve(n.value).then(l,p);m((o=o.apply(c,u)).next())});import{withHeadless as x}from"@primereact/core/headless";import{focus as g}from"@primeuix/utils";import*as t from"react";var R={prompt:void 0,onCommand:void 0};var P=x({name:"useTerminal",defaultProps:R,setup({props:c,elementRef:u}){let[o,i]=t.useState(""),[a,l]=t.useState([]),[p,m]=t.useState(0),n=t.useRef(null),d={commandText:o,commands:a},f=t.useCallback(()=>{l([]),m(0)},[]),C=t.useCallback(s=>{s===null?f():s!==void 0&&l(e=>{if(e.length===0)return e;let r=[...e];return r[r.length-1].response=s,r})},[f]),h=t.useCallback(s=>T(null,null,function*(){if(!c.onCommand)return;let e=c.onCommand(s);if(e instanceof Promise){let r=yield e;C(r)}else C(e)}),[c.onCommand,C]);return t.useEffect(()=>{u.current&&(u.current.scrollTop=u.current.scrollHeight)}),{state:d,inputRef:n,onClick:()=>{n.current&&g(n.current)},onKeyDown:s=>{switch(s.code){case"ArrowUp":if(a&&a.length){let e=p-1<0?a.length-1:p-1,r=a[e];m(e),i(r.text)}break;case"Enter":case"NumpadEnter":if(o){let e=[...a];e.push({text:o}),m(r=>r+1),i(""),l(e),h(o)}break;default:break}},onInputChange:s=>{i(s.target.value)},clear:f}}});export{R as defaultProps,P as useTerminal};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/terminal/useTerminal.ts","../../src/terminal/useTerminal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { TerminalCommandItem, TerminalResponse } from '@primereact/types/shared/terminal';\nimport { focus } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useTerminal.props';\n\nexport const useTerminal = withHeadless({\n name: 'useTerminal',\n defaultProps,\n setup({ props, elementRef }) {\n const [commandTextState, setCommandTextState] = React.useState<string>('');\n const [commandsState, setCommandsState] = React.useState<TerminalCommandItem[]>([]);\n const [indexState, setIndexState] = React.useState<number>(0);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n const state = {\n commandText: commandTextState,\n commands: commandsState\n };\n\n const clear = React.useCallback(() => {\n setCommandsState([]);\n setIndexState(0);\n }, []);\n\n const handleResponse = React.useCallback(\n (response: TerminalResponse) => {\n if (response === null) {\n clear();\n } else if (response !== undefined) {\n setCommandsState((prev) => {\n if (prev.length === 0) return prev;\n\n const commands = [...prev];\n\n commands[commands.length - 1].response = response;\n\n return commands;\n });\n }\n },\n [clear]\n );\n\n const executeCommand = React.useCallback(\n async (text: string) => {\n if (!props.onCommand) return;\n\n const result = props.onCommand(text);\n\n if (result instanceof Promise) {\n const response = await result;\n\n handleResponse(response);\n } else {\n handleResponse(result);\n }\n },\n [props.onCommand, handleResponse]\n );\n\n React.useEffect(() => {\n if (elementRef.current) {\n elementRef.current.scrollTop = elementRef.current.scrollHeight;\n }\n });\n\n const onClick = () => {\n if (inputRef.current) {\n focus(inputRef.current);\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n switch (event.code) {\n case 'ArrowUp':\n if (commandsState && commandsState.length) {\n const prevIndex = indexState - 1 < 0 ? commandsState.length - 1 : indexState - 1;\n const command = commandsState[prevIndex];\n\n setIndexState(prevIndex);\n setCommandTextState(command.text);\n }\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n if (commandTextState) {\n const newCommands = [...commandsState];\n\n newCommands.push({ text: commandTextState });\n\n setIndexState((prevIndex) => prevIndex + 1);\n setCommandTextState('');\n setCommandsState(newCommands);\n executeCommand(commandTextState);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setCommandTextState(e.target.value);\n };\n\n return {\n state,\n inputRef,\n onClick,\n onKeyDown,\n onInputChange,\n clear\n };\n }\n});\n","import type { useTerminalProps } from '@primereact/types/shared/terminal';\n\nexport const defaultProps: useTerminalProps = {\n prompt: undefined,\n onCommand: undefined\n};\n"],"mappings":"6MAAA,OAAS,gBAAAA,MAAoB,4BAE7B,OAAS,SAAAC,MAAa,kBACtB,UAAYC,MAAW,QCDhB,IAAMC,EAAiC,CAC1C,OAAQ,OACR,UAAW,MACf,EDCO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,EAAO,WAAAC,CAAW,EAAG,CACzB,GAAM,CAACC,EAAkBC,CAAmB,EAAU,WAAiB,EAAE,EACnE,CAACC,EAAeC,CAAgB,EAAU,WAAgC,CAAC,CAAC,EAC5E,CAACC,EAAYC,CAAa,EAAU,WAAiB,CAAC,EACtDC,EAAiB,SAAyB,IAAI,EAE9CC,EAAQ,CACV,YAAaP,EACb,SAAUE,CACd,EAEMM,EAAc,cAAY,IAAM,CAClCL,EAAiB,CAAC,CAAC,EACnBE,EAAc,CAAC,CACnB,EAAG,CAAC,CAAC,EAECI,EAAuB,cACxBC,GAA+B,CACxBA,IAAa,KACbF,EAAM,EACCE,IAAa,QACpBP,EAAkBQ,GAAS,CACvB,GAAIA,EAAK,SAAW,EAAG,OAAOA,EAE9B,IAAMC,EAAW,CAAC,GAAGD,CAAI,EAEzB,OAAAC,EAASA,EAAS,OAAS,CAAC,EAAE,SAAWF,EAElCE,CACX,CAAC,CAET,EACA,CAACJ,CAAK,CACV,EAEMK,EAAuB,cAClBC,GAAiBC,EAAA,sBACpB,GAAI,CAACjB,EAAM,UAAW,OAEtB,IAAMkB,EAASlB,EAAM,UAAUgB,CAAI,EAEnC,GAAIE,aAAkB,QAAS,CAC3B,IAAMN,EAAW,MAAMM,EAEvBP,EAAeC,CAAQ,CAC3B,MACID,EAAeO,CAAM,CAE7B,GACA,CAAClB,EAAM,UAAWW,CAAc,CACpC,EAEA,OAAM,YAAU,IAAM,CACdV,EAAW,UACXA,EAAW,QAAQ,UAAYA,EAAW,QAAQ,aAE1D,CAAC,EA6CM,CACH,MAAAQ,EACA,SAAAD,EACA,QA9CY,IAAM,CACdA,EAAS,SACTW,EAAMX,EAAS,OAAO,CAE9B,EA2CI,UAzCeY,GAAiD,CAChE,OAAQA,EAAM,KAAM,CAChB,IAAK,UACD,GAAIhB,GAAiBA,EAAc,OAAQ,CACvC,IAAMiB,EAAYf,EAAa,EAAI,EAAIF,EAAc,OAAS,EAAIE,EAAa,EACzEgB,EAAUlB,EAAciB,CAAS,EAEvCd,EAAcc,CAAS,EACvBlB,EAAoBmB,EAAQ,IAAI,CACpC,CAEA,MAEJ,IAAK,QACL,IAAK,cACD,GAAIpB,EAAkB,CAClB,IAAMqB,EAAc,CAAC,GAAGnB,CAAa,EAErCmB,EAAY,KAAK,CAAE,KAAMrB,CAAiB,CAAC,EAE3CK,EAAec,GAAcA,EAAY,CAAC,EAC1ClB,EAAoB,EAAE,EACtBE,EAAiBkB,CAAW,EAC5BR,EAAeb,CAAgB,CACnC,CAEA,MAEJ,QACI,KACR,CACJ,EAWI,cATmBsB,GAA2C,CAC9DrB,EAAoBqB,EAAE,OAAO,KAAK,CACtC,EAQI,MAAAd,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","focus","React","defaultProps","useTerminal","withHeadless","defaultProps","props","elementRef","commandTextState","setCommandTextState","commandsState","setCommandsState","indexState","setIndexState","inputRef","state","clear","handleResponse","response","prev","commands","executeCommand","text","__async","result","focus","event","prevIndex","command","newCommands","e"]}
@@ -0,0 +1,13 @@
1
+ import { TerminalCommandItem } from '@primereact/types/shared/terminal';
2
+ import * as React from 'react';
3
+ export declare const useTerminal: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/terminal").useTerminalProps, unknown, {
4
+ state: {
5
+ commandText: string;
6
+ commands: TerminalCommandItem[];
7
+ };
8
+ inputRef: React.RefObject<HTMLInputElement | null>;
9
+ onClick: () => void;
10
+ onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
11
+ onInputChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
12
+ clear: () => void;
13
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useTerminalProps } from '@primereact/types/shared/terminal';
2
+ export declare const defaultProps: useTerminalProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useTextarea';
2
+ export * from './useTextarea.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as n}from"@primereact/core/headless";import{isCssSupported as u}from"@primereact/core/utils";import*as e from"react";var f={autoResize:void 0};var x=n({name:"useTextarea",defaultProps:f,setup({props:s}){let o=e.useMemo(()=>u("field-sizing","content"),[]),i=e.useCallback(t=>{if(!(!t||!t.offsetParent))if(o)t.style.minHeight||(t.style.minHeight=t.offsetHeight+"px"),t.style.width||(t.style.width=t.offsetWidth+"px"),t.style.fieldSizing="content";else{let p=window.getComputedStyle(t),r=parseFloat(p.maxHeight)||1/0;t.style.height="auto";let a=t.scrollHeight;a>=r?(t.style.overflowY="scroll",t.style.height=r+"px"):(t.style.overflowY="hidden",t.style.height=a+"px")}},[o]);return{onInput:e.useCallback(t=>{s.autoResize&&i(t.currentTarget)},[s.autoResize,i])}}});export{f as defaultProps,x as useTextarea};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/textarea/useTextarea.ts","../../src/textarea/useTextarea.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { isCssSupported } from '@primereact/core/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useTextarea.props';\n\nexport const useTextarea = withHeadless({\n name: 'useTextarea',\n defaultProps,\n setup({ props }) {\n const isFieldSizingSupported = React.useMemo(() => isCssSupported('field-sizing', 'content'), []);\n\n const resize = React.useCallback(\n (element: HTMLTextAreaElement) => {\n if (!element || !element.offsetParent) return;\n\n if (isFieldSizingSupported) {\n if (!element.style.minHeight) {\n element.style.minHeight = element.offsetHeight + 'px';\n }\n\n if (!element.style.width) {\n element.style.width = element.offsetWidth + 'px';\n }\n\n // Set field-sizing to content to enable automatic height adjustment\n (element.style as unknown as { fieldSizing: string }).fieldSizing = 'content';\n } else {\n // Fallback: JavaScript-based resize\n const computedStyle = window.getComputedStyle(element);\n const maxHeight = parseFloat(computedStyle.maxHeight) || Infinity;\n\n element.style.height = 'auto';\n\n const scrollHeight = element.scrollHeight;\n\n if (scrollHeight >= maxHeight) {\n element.style.overflowY = 'scroll';\n element.style.height = maxHeight + 'px';\n } else {\n element.style.overflowY = 'hidden';\n element.style.height = scrollHeight + 'px';\n }\n }\n },\n [isFieldSizingSupported]\n );\n\n const onInput = React.useCallback(\n (event: React.FormEvent<HTMLTextAreaElement>) => {\n if (props.autoResize) {\n resize(event.currentTarget);\n }\n },\n [props.autoResize, resize]\n );\n\n return {\n onInput\n };\n }\n});\n","import type { useTextareaProps } from '@primereact/types/shared/textarea';\n\nexport const defaultProps: useTextareaProps = {\n autoResize: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,kBAAAC,MAAsB,yBAC/B,UAAYC,MAAW,QCAhB,IAAMC,EAAiC,CAC1C,WAAY,MAChB,EDCO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CACb,IAAMC,EAA+B,UAAQ,IAAMC,EAAe,eAAgB,SAAS,EAAG,CAAC,CAAC,EAE1FC,EAAe,cAChBC,GAAiC,CAC9B,GAAI,GAACA,GAAW,CAACA,EAAQ,cAEzB,GAAIH,EACKG,EAAQ,MAAM,YACfA,EAAQ,MAAM,UAAYA,EAAQ,aAAe,MAGhDA,EAAQ,MAAM,QACfA,EAAQ,MAAM,MAAQA,EAAQ,YAAc,MAI/CA,EAAQ,MAA6C,YAAc,cACjE,CAEH,IAAMC,EAAgB,OAAO,iBAAiBD,CAAO,EAC/CE,EAAY,WAAWD,EAAc,SAAS,GAAK,IAEzDD,EAAQ,MAAM,OAAS,OAEvB,IAAMG,EAAeH,EAAQ,aAEzBG,GAAgBD,GAChBF,EAAQ,MAAM,UAAY,SAC1BA,EAAQ,MAAM,OAASE,EAAY,OAEnCF,EAAQ,MAAM,UAAY,SAC1BA,EAAQ,MAAM,OAASG,EAAe,KAE9C,CACJ,EACA,CAACN,CAAsB,CAC3B,EAWA,MAAO,CACH,QAVkB,cACjBO,GAAgD,CACzCR,EAAM,YACNG,EAAOK,EAAM,aAAa,CAElC,EACA,CAACR,EAAM,WAAYG,CAAM,CAC7B,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","isCssSupported","React","defaultProps","useTextarea","withHeadless","defaultProps","props","isFieldSizingSupported","isCssSupported","resize","element","computedStyle","maxHeight","scrollHeight","event"]}
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ export declare const useTextarea: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/textarea").useTextareaProps, unknown, {
3
+ onInput: (event: React.FormEvent<HTMLTextAreaElement>) => void;
4
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useTextareaProps } from '@primereact/types/shared/textarea';
2
+ export declare const defaultProps: useTextareaProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useTimeline';
2
+ export * from './useTimeline.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as r}from"@primereact/core/headless";var e={};var m=r({name:"useTimeline",defaultProps:e});export{e as defaultProps,m as useTimeline};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/timeline/useTimeline.ts","../../src/timeline/useTimeline.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useTimeline.props';\n\nexport const useTimeline = withHeadless({\n name: 'useTimeline',\n defaultProps\n});\n","import type { useTimelineProps } from '@primereact/types/shared/timeline';\n\nexport const defaultProps: useTimelineProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAiC,CAAC,EDCxC,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,CACJ,CAAC","names":["withHeadless","defaultProps","useTimeline","withHeadless","defaultProps"]}
@@ -0,0 +1 @@
1
+ export declare const useTimeline: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/timeline").useTimelineProps, unknown, Record<PropertyKey, unknown>>;
@@ -0,0 +1,2 @@
1
+ import type { useTimelineProps } from '@primereact/types/shared/timeline';
2
+ export declare const defaultProps: useTimelineProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useToast';
2
+ export * from './useToast.props';
@@ -0,0 +1,2 @@
1
+ var pe=Object.defineProperty,fe=Object.defineProperties;var de=Object.getOwnPropertyDescriptors;var q=Object.getOwnPropertySymbols;var ge=Object.prototype.hasOwnProperty,he=Object.prototype.propertyIsEnumerable;var U=(c,r,t)=>r in c?pe(c,r,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[r]=t,W=(c,r)=>{for(var t in r||(r={}))ge.call(r,t)&&U(c,t,r[t]);if(q)for(var t of q(r))he.call(r,t)&&U(c,t,r[t]);return c},z=(c,r)=>fe(c,de(r));import{withHeadless as ye}from"@primereact/core/headless";import{ToastStore as Re}from"@primereact/headless/toaster";import{useMountEffect as Te}from"@primereact/hooks/use-mount-effect";import{useVisibilityChange as xe}from"@primereact/hooks/use-visibility-change";import*as i from"react";var G={toast:{},toaster:void 0};var we=50,be=.11,Ae=ye({name:"useToast",defaultProps:G,setup:({props:c,elementRef:r})=>{var B,F;let{toast:t,toaster:e}=c,M=i.useMemo(()=>!(e!=null&&e.toasts)||!Array.isArray(e==null?void 0:e.toasts)?0:(e==null?void 0:e.toasts.findIndex(n=>n.id===t.id))||0,[e==null?void 0:e.toasts,t.id]),D=xe(),[J,K]=i.useState(!1),[m,T]=i.useState(null),[Q,I]=i.useState(null),[x,Z]=i.useState(!1),[ee,w]=i.useState(!1),[P,te]=i.useState(!1),[ne,L]=i.useState(!1),[C,b]=i.useState(0),[ie,v]=i.useState(0),y=t.dismissible!==!1&&t.variant!=="loading",g=i.useRef(t.duration||(e==null?void 0:e.props.timeout)||6e3),A=i.useRef(0),p=i.useRef(null),S=i.useRef(null),E=i.useRef(0),O=i.useRef(0),H=i.useMemo(()=>{var n,u;return(u=(n=e==null?void 0:e.state.heights)==null?void 0:n.findIndex(s=>s.toastId===t.id))!=null?u:0},[e==null?void 0:e.state.heights,t.id]),V=i.useMemo(()=>t.duration||(e==null?void 0:e.props.timeout)||6e3,[t.duration,e==null?void 0:e.props.timeout]),h=i.useRef(0);h.current=(F=(B=e==null?void 0:e.state.heights)==null?void 0:B.reduce((n,u,s)=>s>=H?n:n+u.height,0))!=null?F:0;let k=t.variant==="loading";i.useEffect(()=>{g.current=V},[V]),Te(()=>{Z(!0)}),i.useEffect(()=>{let n=r.current;if(!n||!t.id)return;let u=n.getBoundingClientRect().height;return v(u),e==null||e.setHeights(s=>[{toastId:t.id,height:u},...s]),()=>e==null?void 0:e.setHeights(s=>s.filter(o=>o.toastId!==t.id))},[e==null?void 0:e.setHeights,t.id]),i.useLayoutEffect(()=>{if(!x||!t.id||!(e!=null&&e.setHeights))return;let n=r.current;if(!n)return;let u=n.style.height;n.style.height="auto";let s=n==null?void 0:n.getBoundingClientRect().height;n.style.height=u,v(s),e==null||e.setHeights(o=>o.find(a=>a.toastId===t.id)?o.map(a=>a.toastId===t.id?z(W({},a),{height:s}):a):[{toastId:t.id,height:s},...o])},[x,t.title,t.description,t.id,t.jsx,t.action,t.icon,e==null?void 0:e.setHeights]);let l=i.useCallback(()=>{e==null||e.handleFocusManagement(r.current),K(!0),b(h.current),e==null||e.setHeights(n=>n.filter(u=>u.toastId!==t.id)),requestAnimationFrame(()=>{let n=r.current;if(!n)return;let s=getComputedStyle(n).transitionDuration,o=parseFloat(s)*(s.includes("ms")?1:1e3);setTimeout(()=>{Re.remove(t.id)},o!=null?o:10)})},[t,e==null?void 0:e.setHeights]);i.useEffect(()=>{var n;t.removed&&(l(),(n=t.onDismiss)==null||n.call(t,t))},[t.removed,l]);let se=i.useCallback(()=>{if(O.current<E.current){let n=new Date().getTime()-E.current;g.current=g.current-n}O.current=new Date().getTime()},[]),re=i.useCallback(()=>{g.current!==1/0&&(E.current=new Date().getTime(),S.current=setTimeout(()=>{var n;(n=t.onTimeout)==null||n.call(t,t),l()},g.current))},[t,l]);i.useEffect(()=>{if(!(t.variant==="loading"||t.duration===1/0))return e!=null&&e.state.isExpanded||e!=null&&e.state.isInteracting||!D?se():re(),()=>{S.current&&clearTimeout(S.current)}},[e==null?void 0:e.state.isExpanded,e==null?void 0:e.state.isInteracting,t,l,D]);let ue=()=>{w(!1),T(null),p.current=null},oe=n=>{n.button===0&&(k||!y||(A.current=new Date().getTime(),b(h.current),n.target.setPointerCapture(n.pointerId),w(!0),p.current={x:n.clientX,y:n.clientY}))},ce=n=>{var X,_,$;if(!p.current||!y||((_=(X=window.getSelection())==null?void 0:X.toString().length)!=null?_:0)>0)return;let u=n.clientY-p.current.y,s=n.clientX-p.current.x,o=Math.abs(s)>1||Math.abs(u)>1,f=(($=e==null?void 0:e.props.position)!=null?$:"bottom-right").split("-"),a=f[0],Y=f[1];!m&&o&&T(Math.abs(s)>Math.abs(u)?"x":"y");let d={x:0,y:0},N=R=>{let j=R*(me=>1/(1.5+Math.abs(me)/20))(R);return Math.abs(j)<Math.abs(R)?j:R};m==="x"?d.x=Y==="left"&&s<0||Y==="right"&&s>0?s:N(s):m==="y"&&(d.y=a==="top"&&u<0||a==="bottom"&&u>0?u:N(u)),(Math.abs(d.x)>0||Math.abs(d.y)>0)&&L(!0),r.current.style.setProperty("--swipe-amount-x",`${d.x}px`),r.current.style.setProperty("--swipe-amount-y",`${d.y}px`)},ae=()=>{var f,a;if(P||!y)return;w(!1),p.current=null;let n=Number(r.current.style.getPropertyValue("--swipe-amount-x").replace("px","")||0),u=Number(r.current.style.getPropertyValue("--swipe-amount-y").replace("px","")||0),s=m==="x"?n:u,o=Math.abs(s)/(new Date().getTime()-((f=A.current)!=null?f:0));if(Math.abs(s)>=we||o>be){b(h.current),I(m==="x"?n>0?"right":"left":u>0?"down":"up"),l(),(a=t.onDismiss)==null||a.call(t,t),te(!0);return}else r.current.style.setProperty("--swipe-amount-x","0px"),r.current.style.setProperty("--swipe-amount-y","0px");L(!1),T(null)},le=()=>{var n;k||!y||(l(),(n=t.onDismiss)==null||n.call(t,t))};return{state:{mounted:x,swiping:ee,swipeOut:P,swipeOutDirection:Q,swipeDirection:m,initialHeight:ie,isSwiped:ne,offsetBeforeRemove:C,removed:J},offset:h.current,offsetBeforeRemove:C,index:M,visibleIndex:H,isVisible:H+1<=((e==null?void 0:e.props.limit)||3),isFront:M===0,toaster:e,onPointerDown:oe,onPointerMove:ce,onPointerUp:ae,onDragEnd:ue,handleCloseOnClick:le}}});export{G as defaultProps,Ae as useToast};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/toast/useToast.ts","../../src/toast/useToast.props.ts"],"sourcesContent":["/**\n * This toast system is inspired by Sonner by Emil Kowalski.\n * The architecture and API ideas were adapted for this project.\n * https://github.com/emilkowalski/sonner\n */\n\nimport { withHeadless } from '@primereact/core/headless';\nimport { ToastStore } from '@primereact/headless/toaster';\nimport { useMountEffect } from '@primereact/hooks/use-mount-effect';\nimport { useVisibilityChange } from '@primereact/hooks/use-visibility-change';\nimport * as React from 'react';\nimport { defaultProps } from './useToast.props';\n\nconst SWIPE_THRESHOLD = 50;\nconst VELOCITY_THRESHOLD = 0.11;\n\nexport const useToast = withHeadless({\n name: 'useToast',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const { toast, toaster } = props;\n\n const index = React.useMemo(() => {\n if (!toaster?.toasts || !Array.isArray(toaster?.toasts)) return 0;\n\n return toaster?.toasts.findIndex((t) => t.id === toast.id) || 0;\n }, [toaster?.toasts, toast.id]);\n\n const isDocumentVisible = useVisibilityChange();\n const [removed, setRemoved] = React.useState(false);\n const [swipeDirection, setSwipeDirection] = React.useState<'x' | 'y' | null>(null);\n const [swipeOutDirection, setSwipeOutDirection] = React.useState<'left' | 'right' | 'up' | 'down' | null>(null);\n const [mounted, setMounted] = React.useState(false);\n const [swiping, setSwiping] = React.useState(false);\n const [swipeOut, setSwipeOut] = React.useState(false);\n const [isSwiped, setIsSwiped] = React.useState(false);\n const [offsetBeforeRemove, setOffsetBeforeRemove] = React.useState(0);\n const [initialHeight, setInitialHeight] = React.useState(0);\n\n const dismissible = toast.dismissible !== false && toast.variant !== 'loading';\n\n const remainingTimeRef = React.useRef(toast.duration || toaster?.props.timeout || 6000);\n const swipeStartTimeRef = React.useRef<number>(0);\n const pointerStartPositionRef = React.useRef<{ x: number; y: number } | null>(null);\n\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const timeoutStartTimeRef = React.useRef<number>(0);\n const lastTimeoutStartTimeRef = React.useRef<number>(0);\n\n const visibleIndex = React.useMemo(() => {\n return toaster?.state.heights?.findIndex((h) => h.toastId === toast.id) ?? 0;\n }, [toaster?.state.heights, toast.id]);\n\n const duration = React.useMemo(() => {\n return toast.duration || toaster?.props.timeout || 6000;\n }, [toast.duration, toaster?.props.timeout]);\n\n const offset = React.useRef(0);\n\n offset.current =\n toaster?.state.heights?.reduce((prev, curr, reducerIndex) => {\n if (reducerIndex >= visibleIndex) return prev;\n\n return prev + curr.height;\n }, 0) ?? 0;\n\n const disabled = toast.variant === 'loading';\n\n React.useEffect(() => {\n remainingTimeRef.current = duration;\n }, [duration]);\n\n useMountEffect(() => {\n setMounted(true);\n });\n\n React.useEffect(() => {\n const toastNode = elementRef.current;\n\n if (!toastNode || !toast.id) return;\n\n const height = toastNode.getBoundingClientRect().height;\n\n setInitialHeight(height);\n\n toaster?.setHeights((prev) => [{ toastId: toast.id!, height }, ...prev]);\n\n return () => toaster?.setHeights((prev) => prev.filter((h) => h.toastId !== toast.id));\n }, [toaster?.setHeights, toast.id]);\n\n React.useLayoutEffect(() => {\n if (!mounted || !toast.id || !toaster?.setHeights) return;\n\n const toastNode = elementRef.current;\n\n if (!toastNode) return;\n\n const originalHeight = toastNode.style.height;\n\n toastNode.style.height = 'auto';\n const newHeight = toastNode?.getBoundingClientRect().height;\n\n toastNode.style.height = originalHeight;\n\n setInitialHeight(newHeight);\n\n toaster?.setHeights((prev) => {\n const isAlreadyExists = prev.find((h) => h.toastId === toast.id);\n\n if (!isAlreadyExists) {\n return [{ toastId: toast.id!, height: newHeight }, ...prev];\n } else {\n return prev.map((h) => (h.toastId === toast.id ? { ...h, height: newHeight } : h));\n }\n });\n }, [mounted, toast.title, toast.description, toast.id, toast.jsx, toast.action, toast.icon, toaster?.setHeights]);\n\n const deleteToast = React.useCallback(() => {\n toaster?.handleFocusManagement(elementRef.current);\n\n setRemoved(true);\n setOffsetBeforeRemove(offset.current);\n toaster?.setHeights((prev) => prev.filter((h) => h.toastId !== toast.id));\n\n requestAnimationFrame(() => {\n const toastNode = elementRef.current;\n\n if (!toastNode) return;\n\n const computedStyle = getComputedStyle(toastNode);\n const durationStr = computedStyle.transitionDuration;\n const durationMs = parseFloat(durationStr) * (durationStr.includes('ms') ? 1 : 1000);\n\n setTimeout(() => {\n ToastStore.remove(toast.id!);\n }, durationMs ?? 10);\n });\n }, [toast, toaster?.setHeights]);\n\n React.useEffect(() => {\n if (toast.removed) {\n deleteToast();\n toast.onDismiss?.(toast);\n }\n }, [toast.removed, deleteToast]);\n\n const pauseTimer = React.useCallback(() => {\n if (lastTimeoutStartTimeRef.current < timeoutStartTimeRef.current) {\n const elapsedTime = new Date().getTime() - timeoutStartTimeRef.current;\n\n remainingTimeRef.current = remainingTimeRef.current - elapsedTime;\n }\n\n lastTimeoutStartTimeRef.current = new Date().getTime();\n }, []);\n\n const startTimer = React.useCallback(() => {\n if (remainingTimeRef.current === Infinity) return;\n\n timeoutStartTimeRef.current = new Date().getTime();\n\n timeoutRef.current = setTimeout(() => {\n toast.onTimeout?.(toast);\n deleteToast();\n }, remainingTimeRef.current);\n }, [toast, deleteToast]);\n\n React.useEffect(() => {\n if (toast.variant === 'loading' || toast.duration === Infinity) return;\n\n if (toaster?.state.isExpanded || toaster?.state.isInteracting || !isDocumentVisible) {\n pauseTimer();\n } else {\n startTimer();\n }\n\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, [toaster?.state.isExpanded, toaster?.state.isInteracting, toast, deleteToast, isDocumentVisible]);\n\n const onDragEnd = () => {\n setSwiping(false);\n setSwipeDirection(null);\n pointerStartPositionRef.current = null;\n };\n\n const onPointerDown = (event: React.PointerEvent<HTMLDivElement>) => {\n if (event.button !== 0) return;\n\n if (disabled || !dismissible) return;\n\n swipeStartTimeRef.current = new Date().getTime();\n setOffsetBeforeRemove(offset.current);\n\n (event.target as HTMLElement).setPointerCapture(event.pointerId);\n\n setSwiping(true);\n pointerStartPositionRef.current = { x: event.clientX, y: event.clientY };\n };\n\n const onPointerMove = (event: React.PointerEvent<HTMLDivElement>) => {\n if (!pointerStartPositionRef.current || !dismissible) return;\n\n if ((window.getSelection()?.toString().length ?? 0) > 0) return;\n\n const yDelta = event.clientY - pointerStartPositionRef.current.y;\n const xDelta = event.clientX - pointerStartPositionRef.current.x;\n\n const isRealSwipe = Math.abs(xDelta) > 1 || Math.abs(yDelta) > 1;\n\n const position = (toaster?.props.position ?? 'bottom-right').split('-');\n const side = position[0];\n const align = position[1];\n\n if (!swipeDirection && isRealSwipe) {\n setSwipeDirection(Math.abs(xDelta) > Math.abs(yDelta) ? 'x' : 'y');\n }\n\n const swipeAmount = { x: 0, y: 0 };\n\n const applyDampening = (delta: number) => {\n const dampen = (delta: number) => {\n const factor = Math.abs(delta) / 20;\n\n return 1 / (1.5 + factor);\n };\n\n const dampenedDelta = delta * dampen(delta);\n\n return Math.abs(dampenedDelta) < Math.abs(delta) ? dampenedDelta : delta;\n };\n\n if (swipeDirection === 'x') {\n swipeAmount.x = (align === 'left' && xDelta < 0) || (align === 'right' && xDelta > 0) ? xDelta : applyDampening(xDelta);\n } else if (swipeDirection === 'y') {\n swipeAmount.y = (side === 'top' && yDelta < 0) || (side === 'bottom' && yDelta > 0) ? yDelta : applyDampening(yDelta);\n }\n\n if (Math.abs(swipeAmount.x) > 0 || Math.abs(swipeAmount.y) > 0) {\n setIsSwiped(true);\n }\n\n (elementRef.current as HTMLElement).style.setProperty('--swipe-amount-x', `${swipeAmount.x}px`);\n (elementRef.current as HTMLElement).style.setProperty('--swipe-amount-y', `${swipeAmount.y}px`);\n };\n\n const onPointerUp = () => {\n if (swipeOut || !dismissible) return;\n\n setSwiping(false);\n pointerStartPositionRef.current = null;\n const swipeAmountX = Number((elementRef.current as HTMLElement).style.getPropertyValue('--swipe-amount-x').replace('px', '') || 0);\n const swipeAmountY = Number((elementRef.current as HTMLElement).style.getPropertyValue('--swipe-amount-y').replace('px', '') || 0);\n\n const swipeAmount = swipeDirection === 'x' ? swipeAmountX : swipeAmountY;\n const velocity = Math.abs(swipeAmount) / (new Date().getTime() - (swipeStartTimeRef.current ?? 0));\n\n if (Math.abs(swipeAmount) >= SWIPE_THRESHOLD || velocity > VELOCITY_THRESHOLD) {\n setOffsetBeforeRemove(offset.current);\n\n if (swipeDirection === 'x') {\n setSwipeOutDirection(swipeAmountX > 0 ? 'right' : 'left');\n } else {\n setSwipeOutDirection(swipeAmountY > 0 ? 'down' : 'up');\n }\n\n deleteToast();\n toast.onDismiss?.(toast);\n setSwipeOut(true);\n\n return;\n } else {\n (elementRef.current as HTMLElement).style.setProperty('--swipe-amount-x', `0px`);\n (elementRef.current as HTMLElement).style.setProperty('--swipe-amount-y', `0px`);\n }\n\n setIsSwiped(false);\n setSwipeDirection(null);\n };\n\n const handleCloseOnClick = () => {\n if (disabled || !dismissible) return;\n\n deleteToast();\n toast.onDismiss?.(toast);\n };\n\n const state = {\n mounted,\n swiping,\n swipeOut,\n swipeOutDirection,\n swipeDirection,\n initialHeight,\n isSwiped,\n offsetBeforeRemove,\n removed\n };\n\n return {\n state,\n offset: offset.current,\n offsetBeforeRemove,\n index,\n visibleIndex,\n isVisible: visibleIndex + 1 <= (toaster?.props.limit || 3),\n isFront: index === 0,\n toaster,\n onPointerDown,\n onPointerMove,\n onPointerUp,\n onDragEnd,\n handleCloseOnClick\n };\n }\n});\n","import type { useToastProps } from '@primereact/types/shared/toast';\n\nexport const defaultProps: useToastProps = {\n toast: {},\n toaster: undefined\n};\n"],"mappings":"ubAMA,OAAS,gBAAAA,OAAoB,4BAC7B,OAAS,cAAAC,OAAkB,+BAC3B,OAAS,kBAAAC,OAAsB,qCAC/B,OAAS,uBAAAC,OAA2B,0CACpC,UAAYC,MAAW,QCRhB,IAAMC,EAA8B,CACvC,MAAO,CAAC,EACR,QAAS,MACb,EDQA,IAAMC,GAAkB,GAClBC,GAAqB,IAEdC,GAAWC,GAAa,CACjC,KAAM,WACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,EAAO,WAAAC,CAAW,IAAM,CAnBtC,IAAAC,EAAAC,EAoBQ,GAAM,CAAE,MAAAC,EAAO,QAAAC,CAAQ,EAAIL,EAErBM,EAAc,UAAQ,IACpB,EAACD,GAAA,MAAAA,EAAS,SAAU,CAAC,MAAM,QAAQA,GAAA,YAAAA,EAAS,MAAM,EAAU,GAEzDA,GAAA,YAAAA,EAAS,OAAO,UAAWE,GAAMA,EAAE,KAAOH,EAAM,MAAO,EAC/D,CAACC,GAAA,YAAAA,EAAS,OAAQD,EAAM,EAAE,CAAC,EAExBI,EAAoBC,GAAoB,EACxC,CAACC,EAASC,CAAU,EAAU,WAAS,EAAK,EAC5C,CAACC,EAAgBC,CAAiB,EAAU,WAA2B,IAAI,EAC3E,CAACC,EAAmBC,CAAoB,EAAU,WAAkD,IAAI,EACxG,CAACC,EAASC,CAAU,EAAU,WAAS,EAAK,EAC5C,CAACC,GAASC,CAAU,EAAU,WAAS,EAAK,EAC5C,CAACC,EAAUC,EAAW,EAAU,WAAS,EAAK,EAC9C,CAACC,GAAUC,CAAW,EAAU,WAAS,EAAK,EAC9C,CAACC,EAAoBC,CAAqB,EAAU,WAAS,CAAC,EAC9D,CAACC,GAAeC,CAAgB,EAAU,WAAS,CAAC,EAEpDC,EAAcxB,EAAM,cAAgB,IAASA,EAAM,UAAY,UAE/DyB,EAAyB,SAAOzB,EAAM,WAAYC,GAAA,YAAAA,EAAS,MAAM,UAAW,GAAI,EAChFyB,EAA0B,SAAe,CAAC,EAC1CC,EAAgC,SAAwC,IAAI,EAE5EC,EAAmB,SAA6C,IAAI,EACpEC,EAA4B,SAAe,CAAC,EAC5CC,EAAgC,SAAe,CAAC,EAEhDC,EAAqB,UAAQ,IAAM,CAjDjD,IAAAjC,EAAAC,EAkDY,OAAOA,GAAAD,EAAAG,GAAA,YAAAA,EAAS,MAAM,UAAf,YAAAH,EAAwB,UAAWkC,GAAMA,EAAE,UAAYhC,EAAM,MAA7D,KAAAD,EAAoE,CAC/E,EAAG,CAACE,GAAA,YAAAA,EAAS,MAAM,QAASD,EAAM,EAAE,CAAC,EAE/BiC,EAAiB,UAAQ,IACpBjC,EAAM,WAAYC,GAAA,YAAAA,EAAS,MAAM,UAAW,IACpD,CAACD,EAAM,SAAUC,GAAA,YAAAA,EAAS,MAAM,OAAO,CAAC,EAErCiC,EAAe,SAAO,CAAC,EAE7BA,EAAO,SACHnC,GAAAD,EAAAG,GAAA,YAAAA,EAAS,MAAM,UAAf,YAAAH,EAAwB,OAAO,CAACqC,EAAMC,EAAMC,IACpCA,GAAgBN,EAAqBI,EAElCA,EAAOC,EAAK,OACpB,KAJH,KAAArC,EAIS,EAEb,IAAMuC,EAAWtC,EAAM,UAAY,UAE7B,YAAU,IAAM,CAClByB,EAAiB,QAAUQ,CAC/B,EAAG,CAACA,CAAQ,CAAC,EAEbM,GAAe,IAAM,CACjB1B,EAAW,EAAI,CACnB,CAAC,EAEK,YAAU,IAAM,CAClB,IAAM2B,EAAY3C,EAAW,QAE7B,GAAI,CAAC2C,GAAa,CAACxC,EAAM,GAAI,OAE7B,IAAMyC,EAASD,EAAU,sBAAsB,EAAE,OAEjD,OAAAjB,EAAiBkB,CAAM,EAEvBxC,GAAA,MAAAA,EAAS,WAAYkC,GAAS,CAAC,CAAE,QAASnC,EAAM,GAAK,OAAAyC,CAAO,EAAG,GAAGN,CAAI,GAE/D,IAAMlC,GAAA,YAAAA,EAAS,WAAYkC,GAASA,EAAK,OAAQH,GAAMA,EAAE,UAAYhC,EAAM,EAAE,EACxF,EAAG,CAACC,GAAA,YAAAA,EAAS,WAAYD,EAAM,EAAE,CAAC,EAE5B,kBAAgB,IAAM,CACxB,GAAI,CAACY,GAAW,CAACZ,EAAM,IAAM,EAACC,GAAA,MAAAA,EAAS,YAAY,OAEnD,IAAMuC,EAAY3C,EAAW,QAE7B,GAAI,CAAC2C,EAAW,OAEhB,IAAME,EAAiBF,EAAU,MAAM,OAEvCA,EAAU,MAAM,OAAS,OACzB,IAAMG,EAAYH,GAAA,YAAAA,EAAW,wBAAwB,OAErDA,EAAU,MAAM,OAASE,EAEzBnB,EAAiBoB,CAAS,EAE1B1C,GAAA,MAAAA,EAAS,WAAYkC,GACOA,EAAK,KAAMH,GAAMA,EAAE,UAAYhC,EAAM,EAAE,EAKpDmC,EAAK,IAAKH,GAAOA,EAAE,UAAYhC,EAAM,GAAK4C,EAAAC,EAAA,GAAKb,GAAL,CAAQ,OAAQW,CAAU,GAAIX,CAAE,EAF1E,CAAC,CAAE,QAAShC,EAAM,GAAK,OAAQ2C,CAAU,EAAG,GAAGR,CAAI,EAKtE,EAAG,CAACvB,EAASZ,EAAM,MAAOA,EAAM,YAAaA,EAAM,GAAIA,EAAM,IAAKA,EAAM,OAAQA,EAAM,KAAMC,GAAA,YAAAA,EAAS,UAAU,CAAC,EAEhH,IAAM6C,EAAoB,cAAY,IAAM,CACxC7C,GAAA,MAAAA,EAAS,sBAAsBJ,EAAW,SAE1CU,EAAW,EAAI,EACfc,EAAsBa,EAAO,OAAO,EACpCjC,GAAA,MAAAA,EAAS,WAAYkC,GAASA,EAAK,OAAQH,GAAMA,EAAE,UAAYhC,EAAM,EAAE,GAEvE,sBAAsB,IAAM,CACxB,IAAMwC,EAAY3C,EAAW,QAE7B,GAAI,CAAC2C,EAAW,OAGhB,IAAMO,EADgB,iBAAiBP,CAAS,EACd,mBAC5BQ,EAAa,WAAWD,CAAW,GAAKA,EAAY,SAAS,IAAI,EAAI,EAAI,KAE/E,WAAW,IAAM,CACbE,GAAW,OAAOjD,EAAM,EAAG,CAC/B,EAAGgD,GAAA,KAAAA,EAAc,EAAE,CACvB,CAAC,CACL,EAAG,CAAChD,EAAOC,GAAA,YAAAA,EAAS,UAAU,CAAC,EAEzB,YAAU,IAAM,CA3I9B,IAAAH,EA4IgBE,EAAM,UACN8C,EAAY,GACZhD,EAAAE,EAAM,YAAN,MAAAF,EAAA,KAAAE,EAAkBA,GAE1B,EAAG,CAACA,EAAM,QAAS8C,CAAW,CAAC,EAE/B,IAAMI,GAAmB,cAAY,IAAM,CACvC,GAAIpB,EAAwB,QAAUD,EAAoB,QAAS,CAC/D,IAAMsB,EAAc,IAAI,KAAK,EAAE,QAAQ,EAAItB,EAAoB,QAE/DJ,EAAiB,QAAUA,EAAiB,QAAU0B,CAC1D,CAEArB,EAAwB,QAAU,IAAI,KAAK,EAAE,QAAQ,CACzD,EAAG,CAAC,CAAC,EAECsB,GAAmB,cAAY,IAAM,CACnC3B,EAAiB,UAAY,MAEjCI,EAAoB,QAAU,IAAI,KAAK,EAAE,QAAQ,EAEjDD,EAAW,QAAU,WAAW,IAAM,CAjKlD,IAAA9B,GAkKgBA,EAAAE,EAAM,YAAN,MAAAF,EAAA,KAAAE,EAAkBA,GAClB8C,EAAY,CAChB,EAAGrB,EAAiB,OAAO,EAC/B,EAAG,CAACzB,EAAO8C,CAAW,CAAC,EAEjB,YAAU,IAAM,CAClB,GAAI,EAAA9C,EAAM,UAAY,WAAaA,EAAM,WAAa,KAEtD,OAAIC,GAAA,MAAAA,EAAS,MAAM,YAAcA,GAAA,MAAAA,EAAS,MAAM,eAAiB,CAACG,EAC9D8C,GAAW,EAEXE,GAAW,EAGR,IAAM,CACLxB,EAAW,SAAS,aAAaA,EAAW,OAAO,CAC3D,CACJ,EAAG,CAAC3B,GAAA,YAAAA,EAAS,MAAM,WAAYA,GAAA,YAAAA,EAAS,MAAM,cAAeD,EAAO8C,EAAa1C,CAAiB,CAAC,EAEnG,IAAMiD,GAAY,IAAM,CACpBtC,EAAW,EAAK,EAChBN,EAAkB,IAAI,EACtBkB,EAAwB,QAAU,IACtC,EAEM2B,GAAiBC,GAA8C,CAC7DA,EAAM,SAAW,IAEjBjB,GAAY,CAACd,IAEjBE,EAAkB,QAAU,IAAI,KAAK,EAAE,QAAQ,EAC/CL,EAAsBa,EAAO,OAAO,EAEnCqB,EAAM,OAAuB,kBAAkBA,EAAM,SAAS,EAE/DxC,EAAW,EAAI,EACfY,EAAwB,QAAU,CAAE,EAAG4B,EAAM,QAAS,EAAGA,EAAM,OAAQ,GAC3E,EAEMC,GAAiBD,GAA8C,CAzM7E,IAAAzD,EAAAC,EAAA0D,EA4MY,GAFI,CAAC9B,EAAwB,SAAW,CAACH,KAEpCzB,GAAAD,EAAA,OAAO,aAAa,IAApB,YAAAA,EAAuB,WAAW,SAAlC,KAAAC,EAA4C,GAAK,EAAG,OAEzD,IAAM2D,EAASH,EAAM,QAAU5B,EAAwB,QAAQ,EACzDgC,EAASJ,EAAM,QAAU5B,EAAwB,QAAQ,EAEzDiC,EAAc,KAAK,IAAID,CAAM,EAAI,GAAK,KAAK,IAAID,CAAM,EAAI,EAEzDG,IAAYJ,EAAAxD,GAAA,YAAAA,EAAS,MAAM,WAAf,KAAAwD,EAA2B,gBAAgB,MAAM,GAAG,EAChEK,EAAOD,EAAS,CAAC,EACjBE,EAAQF,EAAS,CAAC,EAEpB,CAACrD,GAAkBoD,GACnBnD,EAAkB,KAAK,IAAIkD,CAAM,EAAI,KAAK,IAAID,CAAM,EAAI,IAAM,GAAG,EAGrE,IAAMM,EAAc,CAAE,EAAG,EAAG,EAAG,CAAE,EAE3BC,EAAkBC,GAAkB,CAOtC,IAAMC,EAAgBD,GANNA,IAGL,GAAK,IAFG,KAAK,IAAIA,EAAK,EAAI,KAKAA,CAAK,EAE1C,OAAO,KAAK,IAAIC,CAAa,EAAI,KAAK,IAAID,CAAK,EAAIC,EAAgBD,CACvE,EAEI1D,IAAmB,IACnBwD,EAAY,EAAKD,IAAU,QAAUJ,EAAS,GAAOI,IAAU,SAAWJ,EAAS,EAAKA,EAASM,EAAeN,CAAM,EAC/GnD,IAAmB,MAC1BwD,EAAY,EAAKF,IAAS,OAASJ,EAAS,GAAOI,IAAS,UAAYJ,EAAS,EAAKA,EAASO,EAAeP,CAAM,IAGpH,KAAK,IAAIM,EAAY,CAAC,EAAI,GAAK,KAAK,IAAIA,EAAY,CAAC,EAAI,IACzD7C,EAAY,EAAI,EAGnBtB,EAAW,QAAwB,MAAM,YAAY,mBAAoB,GAAGmE,EAAY,CAAC,IAAI,EAC7FnE,EAAW,QAAwB,MAAM,YAAY,mBAAoB,GAAGmE,EAAY,CAAC,IAAI,CAClG,EAEMI,GAAc,IAAM,CAvPlC,IAAAtE,EAAAC,EAwPY,GAAIiB,GAAY,CAACQ,EAAa,OAE9BT,EAAW,EAAK,EAChBY,EAAwB,QAAU,KAClC,IAAM0C,EAAe,OAAQxE,EAAW,QAAwB,MAAM,iBAAiB,kBAAkB,EAAE,QAAQ,KAAM,EAAE,GAAK,CAAC,EAC3HyE,EAAe,OAAQzE,EAAW,QAAwB,MAAM,iBAAiB,kBAAkB,EAAE,QAAQ,KAAM,EAAE,GAAK,CAAC,EAE3HmE,EAAcxD,IAAmB,IAAM6D,EAAeC,EACtDC,EAAW,KAAK,IAAIP,CAAW,GAAK,IAAI,KAAK,EAAE,QAAQ,IAAKlE,EAAA4B,EAAkB,UAAlB,KAAA5B,EAA6B,IAE/F,GAAI,KAAK,IAAIkE,CAAW,GAAKzE,IAAmBgF,EAAW/E,GAAoB,CAC3E6B,EAAsBa,EAAO,OAAO,EAGhCvB,EADAH,IAAmB,IACE6D,EAAe,EAAI,QAAU,OAE7BC,EAAe,EAAI,OAAS,IAFO,EAK5DxB,EAAY,GACZ/C,EAAAC,EAAM,YAAN,MAAAD,EAAA,KAAAC,EAAkBA,GAClBiB,GAAY,EAAI,EAEhB,MACJ,MACKpB,EAAW,QAAwB,MAAM,YAAY,mBAAoB,KAAK,EAC9EA,EAAW,QAAwB,MAAM,YAAY,mBAAoB,KAAK,EAGnFsB,EAAY,EAAK,EACjBV,EAAkB,IAAI,CAC1B,EAEM+D,GAAqB,IAAM,CAzRzC,IAAA1E,EA0RgBwC,GAAY,CAACd,IAEjBsB,EAAY,GACZhD,EAAAE,EAAM,YAAN,MAAAF,EAAA,KAAAE,EAAkBA,GACtB,EAcA,MAAO,CACH,MAbU,CACV,QAAAY,EACA,QAAAE,GACA,SAAAE,EACA,kBAAAN,EACA,eAAAF,EACA,cAAAc,GACA,SAAAJ,GACA,mBAAAE,EACA,QAAAd,CACJ,EAII,OAAQ4B,EAAO,QACf,mBAAAd,EACA,MAAAlB,EACA,aAAA6B,EACA,UAAWA,EAAe,KAAM9B,GAAA,YAAAA,EAAS,MAAM,QAAS,GACxD,QAASC,IAAU,EACnB,QAAAD,EACA,cAAAqD,GACA,cAAAE,GACA,YAAAY,GACA,UAAAf,GACA,mBAAAmB,EACJ,CACJ,CACJ,CAAC","names":["withHeadless","ToastStore","useMountEffect","useVisibilityChange","React","defaultProps","SWIPE_THRESHOLD","VELOCITY_THRESHOLD","useToast","withHeadless","defaultProps","props","elementRef","_a","_b","toast","toaster","index","t","isDocumentVisible","useVisibilityChange","removed","setRemoved","swipeDirection","setSwipeDirection","swipeOutDirection","setSwipeOutDirection","mounted","setMounted","swiping","setSwiping","swipeOut","setSwipeOut","isSwiped","setIsSwiped","offsetBeforeRemove","setOffsetBeforeRemove","initialHeight","setInitialHeight","dismissible","remainingTimeRef","swipeStartTimeRef","pointerStartPositionRef","timeoutRef","timeoutStartTimeRef","lastTimeoutStartTimeRef","visibleIndex","h","duration","offset","prev","curr","reducerIndex","disabled","useMountEffect","toastNode","height","originalHeight","newHeight","__spreadProps","__spreadValues","deleteToast","durationStr","durationMs","ToastStore","pauseTimer","elapsedTime","startTimer","onDragEnd","onPointerDown","event","onPointerMove","_c","yDelta","xDelta","isRealSwipe","position","side","align","swipeAmount","applyDampening","delta","dampenedDelta","onPointerUp","swipeAmountX","swipeAmountY","velocity","handleCloseOnClick"]}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * This toast system is inspired by Sonner by Emil Kowalski.
3
+ * The architecture and API ideas were adapted for this project.
4
+ * https://github.com/emilkowalski/sonner
5
+ */
6
+ import * as React from 'react';
7
+ export declare const useToast: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/toast").useToastProps, unknown, {
8
+ state: {
9
+ mounted: boolean;
10
+ swiping: boolean;
11
+ swipeOut: boolean;
12
+ swipeOutDirection: "left" | "right" | "up" | "down" | null;
13
+ swipeDirection: "x" | "y" | null;
14
+ initialHeight: number;
15
+ isSwiped: boolean;
16
+ offsetBeforeRemove: number;
17
+ removed: boolean;
18
+ };
19
+ offset: number;
20
+ offsetBeforeRemove: number;
21
+ index: number;
22
+ visibleIndex: number;
23
+ isVisible: boolean;
24
+ isFront: boolean;
25
+ toaster: import("@primereact/types/shared/toaster").ToasterRootInstance | undefined;
26
+ onPointerDown: (event: React.PointerEvent<HTMLDivElement>) => void;
27
+ onPointerMove: (event: React.PointerEvent<HTMLDivElement>) => void;
28
+ onPointerUp: () => void;
29
+ onDragEnd: () => void;
30
+ handleCloseOnClick: () => void;
31
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useToastProps } from '@primereact/types/shared/toast';
2
+ export declare const defaultProps: useToastProps;
File without changes
@@ -0,0 +1,3 @@
1
+ export * from './toastStore';
2
+ export * from './useToaster';
3
+ export * from './useToaster.props';
@@ -0,0 +1,2 @@
1
+ var N=Object.defineProperty,$=Object.defineProperties;var q=Object.getOwnPropertyDescriptors;var y=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var I=(o,e,t)=>e in o?N(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,n=(o,e)=>{for(var t in e||(e={}))B.call(e,t)&&I(o,t,e[t]);if(y)for(var t of y(e))C.call(e,t)&&I(o,t,e[t]);return o},T=(o,e)=>$(o,q(e));var E=(o,e,t)=>new Promise((r,s)=>{var f=u=>{try{c(t.next(u))}catch(m){s(m)}},i=u=>{try{c(t.throw(u))}catch(m){s(m)}},c=u=>u.done?r(u.value):Promise.resolve(u.value).then(f,i);c((t=t.apply(o,e)).next())});var O=0,R=()=>`toast-${++O}-${Date.now()}`,v=class{constructor(){this.listeners=new Set;this.snapshot=()=>this.toasts;this.subscribe=e=>(this.listeners.add(e),()=>{this.listeners.delete(e)});this.add=e=>this.create(e);this.update=(e,t)=>{this.commit(r=>r.map(s=>s.id===e?T(n(n({},s),t),{id:e}):s))};this.dismiss=e=>{if(e===void 0){this.commit(r=>r.map(s=>T(n({},s),{removed:!0})));return}if(this.toasts.some(r=>r.id===e))return this.commit(r=>r.map(s=>s.id===e?T(n({},s),{removed:!0}):s)),e};this.remove=e=>{if(this.toasts.some(r=>r.id===e))return this.commit(r=>r.filter(s=>s.id!==e)),e};this.clear=e=>{if(this.toasts.length){if(e){this.commit(t=>t.filter(r=>r.group!==e));return}this.commit([])}};this.get=e=>this.toasts.find(t=>t.id===e);this.success=e=>this.create(T(n({},e),{variant:"success"}));this.danger=e=>this.create(T(n({},e),{variant:"danger"}));this.warn=e=>this.create(T(n({},e),{variant:"warn"}));this.info=e=>this.create(T(n({},e),{variant:"info"}));this.loading=e=>{var t;return this.create(T(n({},e),{variant:"loading",dismissible:(t=e.dismissible)!=null?t:!1}))};this.custom=(e,t)=>{let r=this.ensureId(t==null?void 0:t.id),s=typeof e=="function"?e(r):e;return this.create(T(n({},t),{id:r,variant:"custom",jsx:s}))};this.promise=(e,t)=>E(this,null,function*(){var f,i,c;let r=T(n({},t.loading),{id:(f=t.loading.id)!=null?f:R(),variant:"loading"}),s=this.create(r);try{let u=yield e,m=typeof t.success=="function"?t.success(u):t.success;return m?this.update(s,T(n({},m),{id:s,variant:(i=m.variant)!=null?i:"success",removed:!1})):this.remove(s),u}catch(u){let m=typeof t.error=="function"?t.error(u):t.error;throw m?this.update(s,T(n({},m),{id:s,variant:(c=m.variant)!=null?c:"danger",removed:!1})):this.remove(s),u}});this.toasts=[]}emit(){this.listeners.forEach(e=>e())}commit(e){let t=typeof e=="function"?e(this.snapshot()):[...e];this.toasts=t,this.emit()}ensureId(e){return typeof e=="number"&&!Number.isNaN(e)||typeof e=="string"&&e.length>0?e:R()}create(e){var s;let t=this.ensureId(e.id),r=(s=e.dismissible)!=null?s:!0;return this.commit(f=>{let i=f.findIndex(c=>c.id===t);if(i!==-1){let c=[...f];return c[i]=T(n(n({},c[i]),e),{id:t,dismissible:r,removed:!1}),c}return[T(n({},e),{id:t,dismissible:r,removed:!1}),...f]}),t}},d=new v,U=o=>d.add(o),k=Object.assign(U,{success:d.success,danger:d.danger,warn:d.warn,info:d.info,loading:d.loading,dismiss:d.dismiss,custom:d.custom,remove:d.remove,clear:d.clear,promise:d.promise});import{withHeadless as W}from"@primereact/core/headless";import*as l from"react";var b={timeout:6e3,gap:12,position:"bottom-right",group:void 0,limit:3};var X=W({name:"useToaster",defaultProps:b,setup:({props:o})=>{let e=l.useSyncExternalStore(d.subscribe,()=>d.snapshot(),()=>d.snapshot()),t=l.useMemo(()=>o.group?e.filter(a=>a.group===o.group):e.filter(a=>!a.group),[e,o.group]),[r,s]=l.useState([]),[f,i]=l.useState(!1),[c,u]=l.useState(!1),m=l.useRef(!1),x={isExpanded:f,isInteracting:c,heights:r},S=()=>{i(!0)},M=()=>{i(!0)},P=()=>{if(!c&&!m.current){if(e.some(a=>a.removed===!0))return;i(!1)}},w=()=>{i(!1)},H=a=>{a.target instanceof HTMLElement&&a.target.dataset.dismissible==="false"||u(!0)},L=()=>{u(!1)},F=a=>{let h=a.currentTarget,p=document.activeElement;p&&p.matches(":focus-visible")&&h.contains(p)&&(m.current=!0,i(!0))},A=a=>{let h=a.currentTarget,p=a.relatedTarget;p&&h.contains(p)||(m.current=!1,!c&&(e.some(g=>g.removed===!0)||i(!1)))},D=a=>{if(!a)return;let h=document.activeElement;if(!a.contains(h))return;let p=a.nextElementSibling,g=a.previousElementSibling;requestAnimationFrame(()=>{p?p.focus({preventScroll:!0}):g&&g.focus({preventScroll:!0})})};return l.useEffect(()=>{t.length<=1&&i(!1)},[t]),l.useEffect(()=>()=>{d.clear(o.group)},[]),{state:x,toasts:t,setHeights:s,onRegionMouseEnter:S,onRegionMouseMove:M,onRegionMouseLeave:P,onRegionDragEnd:w,onRegionPointerDown:H,onRegionPointerUp:L,onRegionFocus:F,onRegionBlur:A,handleFocusManagement:D}}});export{d as ToastStore,b as defaultProps,k as toast,X as useToaster};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/toaster/toastStore.ts","../../src/toaster/useToaster.ts","../../src/toaster/useToaster.props.ts"],"sourcesContent":["import type { ToastId, ToastPromiseType, ToastType } from '@primereact/types/shared/toaster';\nimport type * as React from 'react';\n\ntype ToastStateAction = ToastType[] | ((prev: ToastType[]) => ToastType[]);\n\nlet toastCounter = 0;\nconst generateId = (): string => `toast-${++toastCounter}-${Date.now()}`;\n\nclass ToastManager {\n private toasts: ToastType[];\n private listeners: Set<() => void> = new Set();\n\n constructor() {\n this.toasts = [];\n }\n\n private emit() {\n this.listeners.forEach((listener) => listener());\n }\n\n snapshot = (): ToastType[] => this.toasts;\n\n subscribe = (listener: () => void): (() => void) => {\n this.listeners.add(listener);\n\n return () => {\n this.listeners.delete(listener);\n };\n };\n\n private commit(action: ToastStateAction) {\n const nextState = typeof action === 'function' ? (action as (prev: ToastType[]) => ToastType[])(this.snapshot()) : [...action];\n\n this.toasts = nextState;\n this.emit();\n }\n\n private ensureId(id?: ToastId): ToastId {\n if ((typeof id === 'number' && !Number.isNaN(id)) || (typeof id === 'string' && id.length > 0)) {\n return id;\n }\n\n return generateId();\n }\n\n add = (toast: ToastType): ToastId => {\n return this.create(toast);\n };\n\n create(toast: ToastType): ToastId {\n const id = this.ensureId(toast.id);\n const dismissible = toast.dismissible ?? true;\n\n this.commit((prev) => {\n const index = prev.findIndex((t) => t.id === id);\n\n if (index !== -1) {\n const next = [...prev];\n\n next[index] = { ...next[index], ...toast, id, dismissible, removed: false };\n\n return next;\n }\n\n return [{ ...toast, id, dismissible, removed: false }, ...prev];\n });\n\n return id;\n }\n\n update = (id: ToastId, updates: Partial<ToastType>) => {\n this.commit((prev) => prev.map((toast) => (toast.id === id ? { ...toast, ...updates, id } : toast)));\n };\n\n dismiss = (id?: ToastId): ToastId | undefined => {\n if (id === undefined) {\n this.commit((prev) => prev.map((toast) => ({ ...toast, removed: true })));\n\n return undefined;\n }\n\n const exists = this.toasts.some((toast) => toast.id === id);\n\n if (!exists) {\n return undefined;\n }\n\n this.commit((prev) => prev.map((toast) => (toast.id === id ? { ...toast, removed: true } : toast)));\n\n return id;\n };\n\n remove = (id: ToastId): ToastId | undefined => {\n const exists = this.toasts.some((toast) => toast.id === id);\n\n if (!exists) {\n return undefined;\n }\n\n this.commit((prev) => prev.filter((toast) => toast.id !== id));\n\n return id;\n };\n\n clear = (group?: string) => {\n if (!this.toasts.length) {\n return;\n }\n\n if (group) {\n this.commit((prev) => prev.filter((toast) => toast.group !== group));\n\n return;\n }\n\n this.commit([]);\n };\n\n get = (id: ToastId): ToastType | undefined => {\n return this.toasts.find((toast) => toast.id === id);\n };\n\n success = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'success' });\n };\n\n danger = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'danger' });\n };\n\n warn = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'warn' });\n };\n\n info = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'info' });\n };\n\n loading = (toast: ToastType): ToastId => {\n return this.create({ ...toast, variant: 'loading', dismissible: toast.dismissible ?? false });\n };\n\n custom = (jsx: React.ReactElement | ((id: ToastId) => React.ReactElement), options?: Partial<ToastType>): ToastId => {\n const id = this.ensureId(options?.id);\n const element = typeof jsx === 'function' ? jsx(id) : jsx;\n\n return this.create({\n ...options,\n id,\n variant: 'custom',\n jsx: element\n });\n };\n\n promise = async <T>(promise: Promise<T>, options: ToastPromiseType<T>): Promise<T> => {\n const loadingToast: ToastType = {\n ...options.loading,\n id: options.loading.id ?? generateId(),\n variant: 'loading'\n };\n\n const toastId = this.create(loadingToast);\n\n try {\n const data = await promise;\n const successToast = typeof options.success === 'function' ? options.success(data) : options.success;\n\n if (successToast) {\n this.update(toastId, {\n ...successToast,\n id: toastId,\n variant: successToast.variant ?? 'success',\n removed: false\n });\n } else {\n this.remove(toastId);\n }\n\n return data;\n } catch (error) {\n const errorToast = typeof options.error === 'function' ? options.error(error) : options.error;\n\n if (errorToast) {\n this.update(toastId, {\n ...errorToast,\n id: toastId,\n variant: errorToast.variant ?? 'danger',\n removed: false\n });\n } else {\n this.remove(toastId);\n }\n\n throw error;\n }\n };\n}\n\nexport const ToastStore = new ToastManager();\n\nconst baseToast = (toast: ToastType) => ToastStore.add(toast);\n\nexport const toast = Object.assign(baseToast, {\n success: ToastStore.success,\n danger: ToastStore.danger,\n warn: ToastStore.warn,\n info: ToastStore.info,\n loading: ToastStore.loading,\n dismiss: ToastStore.dismiss,\n custom: ToastStore.custom,\n remove: ToastStore.remove,\n clear: ToastStore.clear,\n promise: ToastStore.promise\n});\n","import { withHeadless } from '@primereact/core/headless';\nimport type { ToastId, ToastType } from '@primereact/types/shared/toaster';\nimport * as React from 'react';\nimport { ToastStore } from './toastStore';\nimport { defaultProps } from './useToaster.props';\n\nexport const useToaster = withHeadless({\n name: 'useToaster',\n defaultProps,\n setup: ({ props }) => {\n const toasts = React.useSyncExternalStore(\n ToastStore.subscribe,\n () => ToastStore.snapshot(),\n () => ToastStore.snapshot()\n );\n\n const filteredToasts: ToastType[] = React.useMemo(() => {\n if (props.group) {\n return toasts.filter((toast) => toast.group === props.group);\n }\n\n return toasts.filter((toast) => !toast.group);\n }, [toasts, props.group]);\n\n const [heights, setHeights] = React.useState<{ height: number; toastId: ToastId }[]>([]);\n const [isExpanded, setIsExpanded] = React.useState<boolean>(false);\n const [isInteracting, setIsInteracting] = React.useState<boolean>(false);\n\n const focusWithinRef = React.useRef<boolean>(false);\n\n const state = {\n isExpanded,\n isInteracting,\n heights\n };\n\n const onRegionMouseEnter = () => {\n setIsExpanded(true);\n };\n\n const onRegionMouseMove = () => {\n setIsExpanded(true);\n };\n\n const onRegionMouseLeave = () => {\n if (!isInteracting && !focusWithinRef.current) {\n if (toasts.some((t) => t.removed === true)) return;\n\n setIsExpanded(false);\n }\n };\n\n const onRegionDragEnd = () => {\n setIsExpanded(false);\n };\n\n const onRegionPointerDown = (event: React.PointerEvent) => {\n if (event.target instanceof HTMLElement && event.target.dataset.dismissible === 'false') return;\n\n setIsInteracting(true);\n };\n\n const onRegionPointerUp = () => {\n setIsInteracting(false);\n };\n\n const onRegionFocus = (event: React.FocusEvent<HTMLElement>) => {\n const region = event.currentTarget;\n const activeEl = document.activeElement as HTMLElement;\n\n if (activeEl && activeEl.matches(':focus-visible') && region.contains(activeEl)) {\n focusWithinRef.current = true;\n setIsExpanded(true);\n }\n };\n\n const onRegionBlur = (event: React.FocusEvent<HTMLElement>) => {\n const region = event.currentTarget;\n const related = event.relatedTarget as HTMLElement | null;\n\n if (related && region.contains(related)) {\n return;\n }\n\n focusWithinRef.current = false;\n\n if (isInteracting) return;\n\n if (toasts.some((t) => t.removed === true)) return;\n\n setIsExpanded(false);\n };\n\n const handleFocusManagement = (toastEl: HTMLElement | null) => {\n if (!toastEl) return;\n\n const activeEl = document.activeElement as HTMLElement;\n\n if (!toastEl.contains(activeEl)) {\n return;\n }\n\n const nextToastEl = toastEl.nextElementSibling as HTMLElement | null;\n const prevToastEl = toastEl.previousElementSibling as HTMLElement | null;\n\n requestAnimationFrame(() => {\n if (nextToastEl) nextToastEl.focus({ preventScroll: true });\n else if (prevToastEl) prevToastEl.focus({ preventScroll: true });\n });\n };\n\n React.useEffect(() => {\n if (filteredToasts.length <= 1) {\n setIsExpanded(false);\n }\n }, [filteredToasts]);\n\n React.useEffect(() => {\n return () => {\n ToastStore.clear(props.group);\n };\n }, []);\n\n return {\n state,\n toasts: filteredToasts,\n setHeights,\n onRegionMouseEnter,\n onRegionMouseMove,\n onRegionMouseLeave,\n onRegionDragEnd,\n onRegionPointerDown,\n onRegionPointerUp,\n onRegionFocus,\n onRegionBlur,\n handleFocusManagement\n };\n }\n});\n","import type { useToasterProps } from '@primereact/types/shared/toaster';\n\nexport const defaultProps: useToasterProps = {\n timeout: 6000,\n gap: 12,\n position: 'bottom-right',\n group: undefined,\n limit: 3\n};\n"],"mappings":"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","names":["toastCounter","generateId","ToastManager","listener","toast","id","updates","prev","__spreadProps","__spreadValues","group","_a","jsx","options","element","promise","__async","_b","_c","loadingToast","toastId","data","successToast","error","errorToast","action","nextState","dismissible","index","t","next","ToastStore","baseToast","withHeadless","React","defaultProps","useToaster","withHeadless","defaultProps","props","toasts","ToastStore","filteredToasts","toast","heights","setHeights","isExpanded","setIsExpanded","isInteracting","setIsInteracting","focusWithinRef","state","onRegionMouseEnter","onRegionMouseMove","onRegionMouseLeave","t","onRegionDragEnd","onRegionPointerDown","event","onRegionPointerUp","onRegionFocus","region","activeEl","onRegionBlur","related","handleFocusManagement","toastEl","nextToastEl","prevToastEl"]}
@@ -0,0 +1,40 @@
1
+ import type { ToastId, ToastPromiseType, ToastType } from '@primereact/types/shared/toaster';
2
+ import type * as React from 'react';
3
+ declare class ToastManager {
4
+ private toasts;
5
+ private listeners;
6
+ constructor();
7
+ private emit;
8
+ snapshot: () => ToastType[];
9
+ subscribe: (listener: () => void) => (() => void);
10
+ private commit;
11
+ private ensureId;
12
+ add: (toast: ToastType) => ToastId;
13
+ create(toast: ToastType): ToastId;
14
+ update: (id: ToastId, updates: Partial<ToastType>) => void;
15
+ dismiss: (id?: ToastId) => ToastId | undefined;
16
+ remove: (id: ToastId) => ToastId | undefined;
17
+ clear: (group?: string) => void;
18
+ get: (id: ToastId) => ToastType | undefined;
19
+ success: (toast: ToastType) => ToastId;
20
+ danger: (toast: ToastType) => ToastId;
21
+ warn: (toast: ToastType) => ToastId;
22
+ info: (toast: ToastType) => ToastId;
23
+ loading: (toast: ToastType) => ToastId;
24
+ custom: (jsx: React.ReactElement | ((id: ToastId) => React.ReactElement), options?: Partial<ToastType>) => ToastId;
25
+ promise: <T>(promise: Promise<T>, options: ToastPromiseType<T>) => Promise<T>;
26
+ }
27
+ export declare const ToastStore: ToastManager;
28
+ export declare const toast: ((toast: ToastType) => ToastId) & {
29
+ success: (toast: ToastType) => ToastId;
30
+ danger: (toast: ToastType) => ToastId;
31
+ warn: (toast: ToastType) => ToastId;
32
+ info: (toast: ToastType) => ToastId;
33
+ loading: (toast: ToastType) => ToastId;
34
+ dismiss: (id?: ToastId) => ToastId | undefined;
35
+ custom: (jsx: React.ReactElement | ((id: ToastId) => React.ReactElement), options?: Partial<ToastType>) => ToastId;
36
+ remove: (id: ToastId) => ToastId | undefined;
37
+ clear: (group?: string) => void;
38
+ promise: <T>(promise: Promise<T>, options: ToastPromiseType<T>) => Promise<T>;
39
+ };
40
+ export {};
@@ -0,0 +1,26 @@
1
+ import type { ToastId, ToastType } from '@primereact/types/shared/toaster';
2
+ import * as React from 'react';
3
+ export declare const useToaster: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/toaster").useToasterProps, unknown, {
4
+ state: {
5
+ isExpanded: boolean;
6
+ isInteracting: boolean;
7
+ heights: {
8
+ height: number;
9
+ toastId: ToastId;
10
+ }[];
11
+ };
12
+ toasts: ToastType[];
13
+ setHeights: React.Dispatch<React.SetStateAction<{
14
+ height: number;
15
+ toastId: ToastId;
16
+ }[]>>;
17
+ onRegionMouseEnter: () => void;
18
+ onRegionMouseMove: () => void;
19
+ onRegionMouseLeave: () => void;
20
+ onRegionDragEnd: () => void;
21
+ onRegionPointerDown: (event: React.PointerEvent) => void;
22
+ onRegionPointerUp: () => void;
23
+ onRegionFocus: (event: React.FocusEvent<HTMLElement>) => void;
24
+ onRegionBlur: (event: React.FocusEvent<HTMLElement>) => void;
25
+ handleFocusManagement: (toastEl: HTMLElement | null) => void;
26
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useToasterProps } from '@primereact/types/shared/toaster';
2
+ export declare const defaultProps: useToasterProps;
File without changes
@@ -0,0 +1,2 @@
1
+ export * from './useToggleButtonGroup';
2
+ export * from './useToggleButtonGroup.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as p}from"@primereact/core/headless";import{useControlledState as d}from"@primereact/hooks/use-controlled-state";import*as l from"react";var r={value:void 0,defaultValue:void 0,onValueChange:void 0,multiple:!1,allowEmpty:!0};var h=p({name:"useToggleButtonGroup",defaultProps:r,setup({props:o}){let[u,n]=d({value:o.value,defaultValue:o.defaultValue,onChange:o.onValueChange}),a={value:u},s=l.useCallback(e=>{let t=null;if(o.multiple){if(t=e.pressed?[...u||[],e.value]:(u||[]).filter(i=>i!==e.value),!o.allowEmpty&&t.length===0)return}else if(t=e.pressed?e.value:null,!o.allowEmpty&&t===null)return;n==null||n([t,{originalEvent:e.originalEvent,value:t}])},[u,n]);return{state:a,updateChange:s,isPressed:(e,t)=>{if(e!==void 0)return o.multiple?e==null?void 0:e.includes(t):e===t}}}});export{r as defaultProps,h as useToggleButtonGroup};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/togglebuttongroup/useToggleButtonGroup.ts","../../src/togglebuttongroup/useToggleButtonGroup.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport type { useToggleButtonGroupExposes } from '@primereact/types/shared/togglebuttongroup';\nimport * as React from 'react';\nimport { defaultProps } from './useToggleButtonGroup.props';\n\nexport const useToggleButtonGroup = withHeadless({\n name: 'useToggleButtonGroup',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState\n };\n\n // methods\n const updateChange = React.useCallback(\n (event: Parameters<useToggleButtonGroupExposes['updateChange']>[0]) => {\n let newValue = null;\n\n if (props.multiple) {\n newValue = event.pressed ? [...((valueState as unknown[]) || []), event.value] : ((valueState as unknown[]) || []).filter((v) => v !== event.value);\n if (!props.allowEmpty && newValue.length === 0) return;\n } else {\n newValue = event.pressed ? event.value : null;\n if (!props.allowEmpty && newValue === null) return;\n }\n\n setValueState?.([newValue, { originalEvent: event.originalEvent, value: newValue }]);\n },\n [valueState, setValueState]\n );\n\n const isPressed = (value: unknown | unknown[] | undefined, toggleButtonValue: unknown) => {\n if (value === undefined) return;\n\n return props.multiple ? (value as unknown[])?.includes(toggleButtonValue) : value === toggleButtonValue;\n };\n\n return {\n state,\n // methods\n updateChange,\n isPressed\n };\n }\n});\n","import type { useToggleButtonGroupProps } from '@primereact/types/shared/togglebuttongroup';\n\nexport const defaultProps: useToggleButtonGroupProps = {\n value: undefined,\n defaultValue: undefined,\n onValueChange: undefined,\n multiple: false,\n allowEmpty: true\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCAEnC,UAAYC,MAAW,QCDhB,IAAMC,EAA0C,CACnD,MAAO,OACP,aAAc,OACd,cAAe,OACf,SAAU,GACV,WAAY,EAChB,EDFO,IAAMC,EAAuBC,EAAa,CAC7C,KAAM,uBACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CACb,GAAM,CAACC,EAAYC,CAAa,EAAIC,EAAmB,CACnD,MAAOH,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EAEKI,EAAQ,CACV,MAAOH,CACX,EAGMI,EAAqB,cACtBC,GAAsE,CACnE,IAAIC,EAAW,KAEf,GAAIP,EAAM,UAEN,GADAO,EAAWD,EAAM,QAAU,CAAC,GAAKL,GAA4B,CAAC,EAAIK,EAAM,KAAK,GAAML,GAA4B,CAAC,GAAG,OAAQO,GAAMA,IAAMF,EAAM,KAAK,EAC9I,CAACN,EAAM,YAAcO,EAAS,SAAW,EAAG,eAEhDA,EAAWD,EAAM,QAAUA,EAAM,MAAQ,KACrC,CAACN,EAAM,YAAcO,IAAa,KAAM,OAGhDL,GAAA,MAAAA,EAAgB,CAACK,EAAU,CAAE,cAAeD,EAAM,cAAe,MAAOC,CAAS,CAAC,EACtF,EACA,CAACN,EAAYC,CAAa,CAC9B,EAQA,MAAO,CACH,MAAAE,EAEA,aAAAC,EACA,UAVc,CAACI,EAAwCC,IAA+B,CACtF,GAAID,IAAU,OAEd,OAAOT,EAAM,SAAYS,GAAA,YAAAA,EAAqB,SAASC,GAAqBD,IAAUC,CAC1F,CAOA,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","React","defaultProps","useToggleButtonGroup","withHeadless","defaultProps","props","valueState","setValueState","useControlledState","state","updateChange","event","newValue","v","value","toggleButtonValue"]}