@primereact/headless 11.0.0-alpha.3 → 11.0.0-alpha.4

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.
@@ -0,0 +1,2 @@
1
+ export * from './useInputOtp';
2
+ export * from './useInputOtp.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as R}from"@primereact/core/headless";import{isTouchDevice as x}from"@primeuix/utils";import*as u from"react";var d={value:void 0,defaultValue:void 0,integerOnly:!1,mask:!1,onValueChange:void 0};var h=R({name:"useInputOtp",defaultProps:d,setup({props:n}){var E,I;let[g,M]=u.useState((I=(E=n.value)!=null?E:n.defaultValue)!=null?I:null),[r,c]=u.useState(()=>{var t,a;let e=(a=(t=n.value)!=null?t:n.defaultValue)!=null?a:"";return e&&typeof e=="string"?e.split(""):[]}),s=u.useRef(0),k={value:g,tokens:r},H=u.useCallback(()=>{let e=s.current;return s.current+=1,e},[]),L=u.useCallback(()=>n.integerOnly?"numeric":"text",[n.integerOnly]),b=u.useCallback(()=>n.mask?"password":"text",[n.maks]),i=e=>{var a;let t=r.join("");M(t),(a=n.onValueChange)==null||a.call(n,{originalEvent:e,value:t})},y=(e,t)=>{let a=e.nativeEvent,o=e.target,T=[...r];T[t]=o.value,c(T),i(e),a.inputType==="deleteContentBackward"?l(e):(a.inputType==="insertText"||a.inputType==="deleteContentForward"||x()&&e instanceof CustomEvent)&&p(e)},l=e=>{let t=f(e.target);t&&(t.focus(),t.select())},p=e=>{let t=m(e.target);t&&(t.focus(),t.select())},m=e=>{let t=e.nextElementSibling;return t?t.nodeName==="INPUT"?t:m(t):null},f=e=>{let t=e.previousElementSibling;return t?t.nodeName==="INPUT"?t:f(t):null};return{state:k,registerText:H,inputMode:L,inputType:b,onInput:y,onClick:e=>{setTimeout(()=>e.target.select(),1)},onKeyDown:e=>{if(!(e.ctrlKey||e.metaKey))switch(e.code){case"ArrowLeft":l(e),e.preventDefault();break;case"ArrowUp":case"ArrowDown":e.preventDefault();break;case"Backspace":e.target.value.length===0&&(l(e),e.preventDefault());break;case"ArrowRight":p(e),e.preventDefault();break;case"Enter":case"NumpadEnter":case"Tab":break;default:(n.integerOnly&&!(e.code!=="Space"&&Number(e.key)>=0&&Number(e.key)<=9)||r.join("").length>=s.current&&e.code!=="Delete")&&e.preventDefault();break}},onPaste:e=>{let t=e.clipboardData.getData("text");if(t.length){let a=t.substring(0,s.current);if(!n.integerOnly||!isNaN(Number(a))){let o=a.split("");c(o),i(e)}}e.preventDefault()}}}});export{d as defaultProps,h as useInputOtp};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/inputotp/useInputOtp.ts","../../src/inputotp/useInputOtp.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useInputOtpProps } from '@primereact/types/shared/inputotp';\nimport { isTouchDevice } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useInputOtp.props';\n\nexport const useInputOtp = withHeadless({\n name: 'useInputOtp',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = React.useState<useInputOtpProps['value']>(props.value ?? props.defaultValue ?? null);\n const [tokens, setTokens] = React.useState<string[]>(() => {\n const initialValue = props.value ?? props.defaultValue ?? '';\n\n return initialValue && typeof initialValue === 'string' ? initialValue.split('') : [];\n });\n const textCounter = React.useRef(0);\n\n const state = {\n value: valueState,\n tokens\n };\n\n const registerText = React.useCallback(() => {\n const index = textCounter.current;\n\n textCounter.current += 1;\n\n return index;\n }, []);\n\n const inputMode = React.useCallback(() => {\n return props.integerOnly ? 'numeric' : 'text';\n }, [props.integerOnly]);\n\n const inputType = React.useCallback(() => {\n return props.mask ? 'password' : 'text';\n }, [props.maks]);\n\n const updateValue = (event: React.FormEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>) => {\n const newValue = tokens.join('');\n\n setValueState(newValue);\n\n props.onValueChange?.({\n originalEvent: event,\n value: newValue\n });\n };\n\n const onInput = (event: React.FormEvent<HTMLInputElement>, index: number) => {\n const inputEvent = event.nativeEvent as InputEvent;\n const target = event.target as HTMLInputElement;\n const currentTokens = [...tokens];\n\n currentTokens[index] = target.value;\n setTokens(currentTokens);\n updateValue(event);\n\n if (inputEvent.inputType === 'deleteContentBackward') {\n moveToPrev(event);\n } else if (inputEvent.inputType === 'insertText' || inputEvent.inputType === 'deleteContentForward' || (isTouchDevice() && event instanceof CustomEvent)) {\n moveToNext(event);\n }\n };\n\n const moveToPrev = (event: React.FormEvent<HTMLInputElement>) => {\n const prevInput = findPrevInput(event.target as HTMLInputElement);\n\n if (prevInput) {\n prevInput.focus();\n prevInput.select();\n }\n };\n\n const moveToNext = (event: React.FormEvent<HTMLInputElement>) => {\n const nextInput = findNextInput(event.target as HTMLInputElement);\n\n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n };\n\n const findNextInput = (element: HTMLInputElement): HTMLInputElement | null => {\n const nextInput = element.nextElementSibling;\n\n if (!nextInput) return null;\n\n return nextInput.nodeName === 'INPUT' ? (nextInput as HTMLInputElement) : findNextInput(nextInput as HTMLInputElement);\n };\n\n const findPrevInput = (element: HTMLInputElement): HTMLInputElement | null => {\n const prevInput = element.previousElementSibling;\n\n if (!prevInput) return null;\n\n return prevInput.nodeName === 'INPUT' ? (prevInput as HTMLInputElement) : findPrevInput(prevInput as HTMLInputElement);\n };\n\n const onClick = (event: React.MouseEvent<HTMLInputElement>) => {\n setTimeout(() => (event.target as HTMLInputElement).select(), 1);\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n\n switch (event.code) {\n case 'ArrowLeft':\n moveToPrev(event);\n event.preventDefault();\n\n break;\n\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n\n break;\n\n case 'Backspace':\n if ((event.target as HTMLInputElement).value.length === 0) {\n moveToPrev(event);\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n moveToNext(event);\n event.preventDefault();\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Tab':\n break;\n\n default:\n if ((props.integerOnly && !(event.code !== 'Space' && Number(event.key) >= 0 && Number(event.key) <= 9)) || (tokens.join('').length >= textCounter.current && event.code !== 'Delete')) {\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const paste = event.clipboardData.getData('text');\n\n if (paste.length) {\n const pastedCode = paste.substring(0, textCounter.current);\n\n if (!props.integerOnly || !isNaN(Number(pastedCode))) {\n const newTokens = pastedCode.split('');\n\n setTokens(newTokens);\n updateValue(event);\n }\n }\n\n event.preventDefault();\n };\n\n return {\n state,\n // methods\n registerText,\n inputMode,\n inputType,\n onInput,\n onClick,\n onKeyDown,\n onPaste\n };\n }\n});\n","import type { useInputOtpProps } from '@primereact/types/shared/inputotp';\n\nexport const defaultProps: useInputOtpProps = {\n value: undefined,\n defaultValue: undefined,\n integerOnly: false,\n mask: false,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","isTouchDevice","React","defaultProps","useInputOtp","withHeadless","defaultProps","props","_a","_b","valueState","setValueState","tokens","setTokens","initialValue","textCounter","state","registerText","index","inputMode","inputType","updateValue","event","newValue","onInput","inputEvent","target","currentTokens","moveToPrev","isTouchDevice","moveToNext","prevInput","findPrevInput","nextInput","findNextInput","element","paste","pastedCode","newTokens"]}
@@ -0,0 +1,15 @@
1
+ import { useInputOtpProps } from '@primereact/types/shared/inputotp';
2
+ import * as React from 'react';
3
+ export declare const useInputOtp: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<useInputOtpProps, unknown, {
4
+ state: {
5
+ value: string | null | undefined;
6
+ tokens: string[];
7
+ };
8
+ registerText: () => number;
9
+ inputMode: () => "text" | "numeric";
10
+ inputType: () => "text" | "password";
11
+ onInput: (event: React.FormEvent<HTMLInputElement>, index: number) => void;
12
+ onClick: (event: React.MouseEvent<HTMLInputElement>) => void;
13
+ onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
14
+ onPaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;
15
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useInputOtpProps } from '@primereact/types/shared/inputotp';
2
+ export declare const defaultProps: useInputOtpProps;
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primereact/headless",
3
- "version": "11.0.0-alpha.3",
3
+ "version": "11.0.0-alpha.4",
4
4
  "author": "PrimeTek Informatics",
5
5
  "description": "",
6
6
  "homepage": "https://primereact.org/",
@@ -32,9 +32,9 @@
32
32
  "access": "public"
33
33
  },
34
34
  "dependencies": {
35
- "@primeuix/styled": "^0.7.0",
36
- "@primeuix/utils": "^0.6.0",
37
- "@primereact/core": "11.0.0-alpha.3",
38
- "@primereact/hooks": "11.0.0-alpha.3"
35
+ "@primeuix/styled": "^0.7.2",
36
+ "@primeuix/utils": "^0.6.1",
37
+ "@primereact/hooks": "11.0.0-alpha.4",
38
+ "@primereact/core": "11.0.0-alpha.4"
39
39
  }
40
40
  }
package/rating/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{withHeadless as V}from"@primereact/core/headless";import{focus as x,getFirstFocusableElement as C}from"@primeuix/utils";import*as n from"react";var d={modelValue:void 0,defaultValue:void 0,stars:5,disabled:!1,readOnly:!1,onChange:void 0};var y=V({name:"useRating",defaultProps:d,setup:({props:o,elementRef:R})=>{let{readOnly:u,disabled:c}=o,[i,l]=n.useState(o.modelValue),f=n.useRef(-1),E=n.useRef(!1),[b,g]=n.useState(-1),[F,I]=n.useState(!1),T={value:i,focusedOptionIndex:b,isFocusVisibleItem:F},r=e=>{f.current=e,g(e)},a=e=>{E.current=e,I(e)},v=(e,s)=>{if(!u&&!c){m(s),a(!1);let t=C(e.currentTarget);t&&t instanceof HTMLElement&&x(t)}},m=e=>{u||c||(f.current===e||i===e?(r(-1),a(!1),l(void 0)):(r(e),a(!0),l(e)))},h=(e,s)=>{var t;u||c||(r(s),a(((t=e.nativeEvent.sourceCapabilities)==null?void 0:t.firesTouchEvents)===!1))},p=e=>{var t;if(u||c)return;let s=e.relatedTarget;s&&((t=R.current)!=null&&t.contains(s))||(r(-1),a(!1))},O=(e,s)=>{u||c||(m(s),a(!0))};return n.useEffect(()=>{var e;(e=o==null?void 0:o.onChange)==null||e.call(o,{value:i,originalEvent:null})},[i]),{state:T,onOptionClick:v,onFocus:h,onBlur:p,onChange:O}}});export{d as defaultProps,y as useRating};
1
+ import{withHeadless as O}from"@primereact/core/headless";import{focus as S,getFirstFocusableElement as y}from"@primeuix/utils";import*as u from"react";var b={value:void 0,defaultValue:void 0,stars:5,disabled:!1,readOnly:!1,allowHalf:!0,onValueChange:void 0};var B=O({name:"useRating",defaultProps:b,setup:({props:t,elementRef:h})=>{var R,v,V;let{readOnly:d,disabled:m}=t,[s,f]=u.useState(t.allowHalf?(R=t.defaultValue)!=null?R:t.value:Math.ceil((V=(v=t.defaultValue)!=null?v:t.value)!=null?V:0)),[c,E]=u.useState(void 0),[H,o]=u.useState(void 0),[M,r]=u.useState(!1),g=u.useRef(void 0),I={value:s,hoverValue:c,focusedOptionIndex:H,isFocusVisibleItem:M},F=n=>{var i;let e=parseFloat(n.target.value),a=Math.ceil(e);o(a);let l=n.nativeEvent;r(((i=l.sourceCapabilities)==null?void 0:i.firesTouchEvents)===!1)},T=n=>{var a;let e=n.relatedTarget;e&&((a=h.current)!=null&&a.contains(e))||o(void 0)},w=n=>{f(Number(n.target.value));let e=parseFloat(n.target.value),a=Math.ceil(e);o(a),r(!0)},x=(n,e)=>{if(d||m)return;let a=t.allowHalf?e:Math.ceil(e!=null?e:0);g.current===a&&E(void 0),f(i=>i===a?void 0:a),r(!1);let l=y(n.currentTarget);l&&l instanceof HTMLElement&&S(l)},C=(n,e)=>{if(d||m)return;o(void 0);let a=e?t.allowHalf?e:Math.ceil(e!=null?e:0):void 0;E(a),g.current=a},L=n=>{var i;let e=(i=c!=null?c:s)!=null?i:0,a=Math.floor(e),l="empty";return n<=a?l="filled":n===a+1&&!Number.isInteger(e)&&(l="half"),l};return u.useEffect(()=>{var n;(n=t==null?void 0:t.onValueChange)==null||n.call(t,{value:s,originalEvent:null})},[s]),u.useEffect(()=>{var n,e,a;f(t.allowHalf?(n=t.defaultValue)!=null?n:t.value:Math.ceil((a=(e=t.defaultValue)!=null?e:t.value)!=null?a:0))},[t.value,t.defaultValue,t.allowHalf]),{state:I,onInputFocus:F,onInputBlur:T,onInputChange:w,getOptionState:L,onOptionClick:x,onOptionHover:C}}});export{b as defaultProps,B as useRating};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/rating/useRating.ts","../../src/rating/useRating.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { focus, getFirstFocusableElement } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useRating.props';\n\nexport const useRating = withHeadless({\n name: 'useRating',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const { readOnly, disabled } = props;\n const [valueState, setValueState] = React.useState(props.modelValue);\n const focusedOptionIndexRef = React.useRef(-1);\n const isFocusVisibleItemRef = React.useRef(false);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState(-1);\n const [isFocusVisibleItem, setIsFocusVisibleItem] = React.useState(false);\n\n const state = {\n value: valueState,\n focusedOptionIndex,\n isFocusVisibleItem\n };\n\n // methods\n const setFocusedOption = (val: number) => {\n focusedOptionIndexRef.current = val;\n setFocusedOptionIndex(val);\n };\n\n const setIsFocusVisible = (val: boolean) => {\n isFocusVisibleItemRef.current = val;\n setIsFocusVisibleItem(val);\n };\n\n const onOptionClick = (event: React.MouseEvent<HTMLDivElement>, value: number) => {\n if (!readOnly && !disabled) {\n onOptionSelect(value);\n setIsFocusVisible(false);\n\n const firstFocusableEl = getFirstFocusableElement(event.currentTarget);\n\n if (firstFocusableEl && firstFocusableEl instanceof HTMLElement) {\n focus(firstFocusableEl);\n }\n }\n };\n\n const onOptionSelect = (value: number) => {\n if (readOnly || disabled) return;\n\n if (focusedOptionIndexRef.current === value || valueState === value) {\n setFocusedOption(-1);\n setIsFocusVisible(false);\n setValueState(undefined);\n } else {\n setFocusedOption(value);\n setIsFocusVisible(true);\n setValueState(value);\n }\n };\n\n const onFocus = (event: React.FocusEvent<HTMLInputElement>, value: number) => {\n if (readOnly || disabled) return;\n\n setFocusedOption(value);\n setIsFocusVisible((event.nativeEvent as FocusEvent & { sourceCapabilities?: { firesTouchEvents: boolean } | null }).sourceCapabilities?.firesTouchEvents === false);\n };\n\n const onBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n if (readOnly || disabled) return;\n\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n if (relatedTarget && elementRef.current?.contains(relatedTarget)) {\n return;\n }\n\n setFocusedOption(-1);\n setIsFocusVisible(false);\n // formField.onBlur?.();\n };\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>, value: number) => {\n if (readOnly || disabled) return;\n\n onOptionSelect(value);\n setIsFocusVisible(true);\n };\n\n // effects\n\n React.useEffect(() => {\n props?.onChange?.({ value: valueState, originalEvent: null });\n }, [valueState]);\n\n return {\n state,\n // methods\n onOptionClick,\n onFocus,\n onBlur,\n onChange\n };\n }\n});\n","import type { useRatingProps } from '@primereact/types/shared/rating';\n\nexport const defaultProps: useRatingProps = {\n modelValue: undefined,\n defaultValue: undefined,\n stars: 5,\n disabled: false,\n readOnly: false,\n onChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,SAAAC,EAAO,4BAAAC,MAAgC,kBAChD,UAAYC,MAAW,QCAhB,IAAMC,EAA+B,CACxC,WAAY,OACZ,aAAc,OACd,MAAO,EACP,SAAU,GACV,SAAU,GACV,SAAU,MACd,EDJO,IAAMC,EAAYC,EAAa,CAClC,KAAM,YACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,EAAO,WAAAC,CAAW,IAAM,CAC9B,GAAM,CAAE,SAAAC,EAAU,SAAAC,CAAS,EAAIH,EACzB,CAACI,EAAYC,CAAa,EAAU,WAASL,EAAM,UAAU,EAC7DM,EAA8B,SAAO,EAAE,EACvCC,EAA8B,SAAO,EAAK,EAC1C,CAACC,EAAoBC,CAAqB,EAAU,WAAS,EAAE,EAC/D,CAACC,EAAoBC,CAAqB,EAAU,WAAS,EAAK,EAElEC,EAAQ,CACV,MAAOR,EACP,mBAAAI,EACA,mBAAAE,CACJ,EAGMG,EAAoBC,GAAgB,CACtCR,EAAsB,QAAUQ,EAChCL,EAAsBK,CAAG,CAC7B,EAEMC,EAAqBD,GAAiB,CACxCP,EAAsB,QAAUO,EAChCH,EAAsBG,CAAG,CAC7B,EAEME,EAAgB,CAACC,EAAyCC,IAAkB,CAC9E,GAAI,CAAChB,GAAY,CAACC,EAAU,CACxBgB,EAAeD,CAAK,EACpBH,EAAkB,EAAK,EAEvB,IAAMK,EAAmBC,EAAyBJ,EAAM,aAAa,EAEjEG,GAAoBA,aAA4B,aAChDE,EAAMF,CAAgB,CAE9B,CACJ,EAEMD,EAAkBD,GAAkB,CAClChB,GAAYC,IAEZG,EAAsB,UAAYY,GAASd,IAAec,GAC1DL,EAAiB,EAAE,EACnBE,EAAkB,EAAK,EACvBV,EAAc,MAAS,IAEvBQ,EAAiBK,CAAK,EACtBH,EAAkB,EAAI,EACtBV,EAAca,CAAK,GAE3B,EAEMK,EAAU,CAACN,EAA2CC,IAAkB,CA5DtF,IAAAM,EA6DgBtB,GAAYC,IAEhBU,EAAiBK,CAAK,EACtBH,IAAmBS,EAAAP,EAAM,YAA2F,qBAAjG,YAAAO,EAAqH,oBAAqB,EAAK,EACtK,EAEMC,EAAUR,GAA8C,CAnEtE,IAAAO,EAoEY,GAAItB,GAAYC,EAAU,OAE1B,IAAMuB,EAAgBT,EAAM,cAExBS,KAAiBF,EAAAvB,EAAW,UAAX,MAAAuB,EAAoB,SAASE,MAIlDb,EAAiB,EAAE,EACnBE,EAAkB,EAAK,EAE3B,EAEMY,EAAW,CAACV,EAA4CC,IAAkB,CACxEhB,GAAYC,IAEhBgB,EAAeD,CAAK,EACpBH,EAAkB,EAAI,EAC1B,EAIA,OAAM,YAAU,IAAM,CA1F9B,IAAAS,GA2FYA,EAAAxB,GAAA,YAAAA,EAAO,WAAP,MAAAwB,EAAA,KAAAxB,EAAkB,CAAE,MAAOI,EAAY,cAAe,IAAK,EAC/D,EAAG,CAACA,CAAU,CAAC,EAER,CACH,MAAAQ,EAEA,cAAAI,EACA,QAAAO,EACA,OAAAE,EACA,SAAAE,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","focus","getFirstFocusableElement","React","defaultProps","useRating","withHeadless","defaultProps","props","elementRef","readOnly","disabled","valueState","setValueState","focusedOptionIndexRef","isFocusVisibleItemRef","focusedOptionIndex","setFocusedOptionIndex","isFocusVisibleItem","setIsFocusVisibleItem","state","setFocusedOption","val","setIsFocusVisible","onOptionClick","event","value","onOptionSelect","firstFocusableEl","getFirstFocusableElement","focus","onFocus","_a","onBlur","relatedTarget","onChange"]}
1
+ {"version":3,"sources":["../../src/rating/useRating.ts","../../src/rating/useRating.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { focus, getFirstFocusableElement } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useRating.props';\n\nexport const useRating = withHeadless({\n name: 'useRating',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const { readOnly, disabled } = props;\n const [valueState, setValueState] = React.useState(props.allowHalf ? (props.defaultValue ?? props.value) : Math.ceil(props.defaultValue ?? props.value ?? 0));\n const [hoverValueState, setHoverValueState] = React.useState<number | undefined>(undefined);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<number | undefined>(undefined);\n const [isFocusVisibleItem, setIsFocusVisibleItem] = React.useState(false);\n\n const hoverValueRef = React.useRef<number | undefined>(undefined);\n\n const state = {\n value: valueState,\n hoverValue: hoverValueState,\n focusedOptionIndex,\n isFocusVisibleItem\n };\n\n // methods\n\n const onInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const inputValue = parseFloat(event.target.value);\n const starIndex = Math.ceil(inputValue);\n\n setFocusedOptionIndex(starIndex);\n\n const native = event.nativeEvent as FocusEvent & {\n sourceCapabilities?: {\n firesTouchEvents: boolean;\n };\n };\n\n setIsFocusVisibleItem(native.sourceCapabilities?.firesTouchEvents === false);\n };\n\n const onInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n if (relatedTarget && elementRef.current?.contains(relatedTarget)) {\n return;\n }\n\n setFocusedOptionIndex(undefined);\n };\n\n const onInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setValueState(Number(event.target.value));\n const inputValue = parseFloat(event.target.value);\n const starIndex = Math.ceil(inputValue);\n\n setFocusedOptionIndex(starIndex);\n setIsFocusVisibleItem(true);\n };\n\n const onOptionClick = (event: React.MouseEvent<HTMLDivElement>, value: number | undefined) => {\n if (readOnly || disabled) return;\n\n const effectiveValue = props.allowHalf ? value : Math.ceil(value ?? 0);\n\n if (hoverValueRef.current === effectiveValue) {\n setHoverValueState(undefined);\n }\n\n setValueState((prev) => (prev === effectiveValue ? undefined : effectiveValue));\n setIsFocusVisibleItem(false);\n\n const firstFocusableEl = getFirstFocusableElement(event.currentTarget);\n\n if (firstFocusableEl && firstFocusableEl instanceof HTMLElement) {\n focus(firstFocusableEl);\n }\n };\n\n const onOptionHover = (event: React.PointerEvent<HTMLDivElement>, value: number | undefined) => {\n if (readOnly || disabled) return;\n\n setFocusedOptionIndex(undefined);\n const newValue = value ? (props.allowHalf ? value : Math.ceil(value ?? 0)) : undefined;\n\n setHoverValueState(newValue);\n hoverValueRef.current = newValue;\n };\n\n const getOptionState = (value: number) => {\n const effectiveValue = hoverValueState ?? valueState ?? 0;\n\n const floor = Math.floor(effectiveValue);\n\n let state = 'empty';\n\n if (value <= floor) {\n state = 'filled';\n } else if (value === floor + 1 && !Number.isInteger(effectiveValue)) {\n state = 'half';\n }\n\n return state;\n };\n\n // effects\n\n React.useEffect(() => {\n props?.onValueChange?.({ value: valueState, originalEvent: null });\n }, [valueState]);\n\n React.useEffect(() => {\n setValueState(props.allowHalf ? (props.defaultValue ?? props.value) : Math.ceil(props.defaultValue ?? props.value ?? 0));\n }, [props.value, props.defaultValue, props.allowHalf]);\n\n return {\n state,\n // methods\n onInputFocus,\n onInputBlur,\n onInputChange,\n getOptionState,\n onOptionClick,\n onOptionHover\n };\n }\n});\n","import type { useRatingProps } from '@primereact/types/shared/rating';\n\nexport const defaultProps: useRatingProps = {\n value: undefined,\n defaultValue: undefined,\n stars: 5,\n disabled: false,\n readOnly: false,\n allowHalf: true,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","focus","getFirstFocusableElement","React","defaultProps","useRating","withHeadless","defaultProps","props","elementRef","_a","_b","_c","readOnly","disabled","valueState","setValueState","hoverValueState","setHoverValueState","focusedOptionIndex","setFocusedOptionIndex","isFocusVisibleItem","setIsFocusVisibleItem","hoverValueRef","state","onInputFocus","event","inputValue","starIndex","native","onInputBlur","relatedTarget","onInputChange","onOptionClick","value","effectiveValue","prev","firstFocusableEl","getFirstFocusableElement","focus","onOptionHover","newValue","getOptionState","floor"]}
@@ -2,11 +2,14 @@ import * as React from 'react';
2
2
  export declare const useRating: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/rating").useRatingProps, unknown, {
3
3
  state: {
4
4
  value: number | undefined;
5
- focusedOptionIndex: number;
5
+ hoverValue: number | undefined;
6
+ focusedOptionIndex: number | undefined;
6
7
  isFocusVisibleItem: boolean;
7
8
  };
8
- onOptionClick: (event: React.MouseEvent<HTMLDivElement>, value: number) => void;
9
- onFocus: (event: React.FocusEvent<HTMLInputElement>, value: number) => void;
10
- onBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
11
- onChange: (event: React.ChangeEvent<HTMLInputElement>, value: number) => void;
9
+ onInputFocus: (event: React.FocusEvent<HTMLInputElement>) => void;
10
+ onInputBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
11
+ onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
12
+ getOptionState: (value: number) => string;
13
+ onOptionClick: (event: React.MouseEvent<HTMLDivElement>, value: number | undefined) => void;
14
+ onOptionHover: (event: React.PointerEvent<HTMLDivElement>, value: number | undefined) => void;
12
15
  }>;
package/slider/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{withHeadless as ae}from"@primereact/core/headless";import{useEventListener as S}from"@primereact/hooks";import{focus as ue,getAttribute as re,getWindowScrollLeft as le,getWindowScrollTop as se,isRTL as ie}from"@primeuix/utils";import*as s from"react";var X={value:void 0,defaultValue:void 0,orientation:"horizontal",min:0,max:100,step:void 0,onValueChange:void 0};var be=ae({name:"useSlider",defaultProps:X,setup({props:t,elementRef:f}){var W,U;let[Y,L]=s.useState((U=(W=t.value)!=null?W:t.defaultValue)!=null?U:void 0),g=s.useRef(0),E=s.useRef(!1),M=s.useRef(0),w=s.useRef(0),k=s.useRef(0),A=s.useRef(null),D=s.useRef(null);s.useEffect(()=>{t.value!==void 0&&L(t.value)},[t.value]);let r={value:Y},z=s.useCallback(()=>{let e=M.current;return M.current+=1,e},[]),d=s.useCallback(()=>Array.isArray(r.value)||M.current>1,[r.value]),C=()=>{var n,a,u,l,c,i,o;let e=(n=f.current)==null?void 0:n.getBoundingClientRect();w.current=((a=e==null?void 0:e.left)!=null?a:0)+le(),k.current=((u=e==null?void 0:e.top)!=null?u:0)+se(),A.current=(c=(l=f.current)==null?void 0:l.offsetWidth)!=null?c:null,D.current=(o=(i=f.current)==null?void 0:i.offsetHeight)!=null?o:null},P=e=>{var o;let n,a=e,u=e,l=a.touches?a.touches[0].pageX:u.pageX,c=a.touches?a.touches[0].pageY:u.pageY;if(h()){if(!f.current)return;ie(f.current)?n=(w.current+A.current-l)*100/A.current:n=(l-w.current)*100/A.current}else n=(k.current+D.current-c)*100/D.current;let i=(t.max-t.min)*(n/100)+t.min;if(t.step){let m=d()?Array.isArray(r.value)&&(o=r.value[g.current])!=null?o:0:typeof r.value=="number"?r.value:0,y=i-m;y<0?i=m+Math.ceil(i/t.step-m/t.step)*t.step:y>0&&(i=m+Math.floor(i/t.step-m/t.step)*t.step)}else i=Math.floor(i);R(e,i)},R=(e,n)=>{var l,c,i,o,m,y;let a=Math.round(n*100)/100,u;d()?(u=Array.isArray(r.value)?[...r.value]:[0,0],g.current==0?(a<((l=t.min)!=null?l:0)?a=t.min:a>=((c=t.max)!=null?c:100)&&(a=t.max),u[0]=a):(a>((i=t.max)!=null?i:100)?a=t.max:a<=((o=t.min)!=null?o:0)&&(a=t.min),u[1]=a)):(a<((m=t.min)!=null?m:0)?a=t.min:a>((y=t.max)!=null?y:100)&&(a=t.max),u=a),L(u),t.onValueChange&&t.onValueChange({originalEvent:e,value:u})},H=(e,n=0)=>{var a;t.disabled||((a=f.current)==null||a.setAttribute("data-p-sliding","true"),E.current=!0,C(),d()&&Array.isArray(r.value)&&r.value[0]===t.max?g.current=0:g.current=n,ue(e.currentTarget))},x=e=>{E.current&&P(e)},V=()=>{var e;E.current&&(E.current=!1,(e=f.current)==null||e.removeAttribute("data-p-sliding"),J(),O(),Z(),$())},B=(e,n)=>{Q(),_(),H(e,n)},j=(e,n)=>{G(),N(),H(e,n)},q=(e,n)=>{var a,u;switch(g.current=n,e.code){case"ArrowDown":case"ArrowLeft":I(e,n),e.preventDefault();break;case"ArrowUp":case"ArrowRight":K(e,n),e.preventDefault();break;case"PageDown":I(e,n,!0),e.preventDefault();break;case"PageUp":K(e,n,!0),e.preventDefault();break;case"Home":R(e,(a=t.min)!=null?a:0),e.preventDefault();break;case"End":R(e,(u=t.max)!=null?u:100),e.preventDefault();break;default:break}},F=e=>{t.disabled||re(e.target,"data-pc-name")!=="sliderthumb"&&(C(),P(e))},[G,J]=S({type:"mousemove",listener:e=>x(e)}),[N,O]=S({type:"mouseup",listener:()=>V()}),[Q,Z]=S({type:"touchmove",listener:e=>x(e)}),[_,$]=S({type:"touchend",listener:()=>V()}),I=(e,n,a=!1)=>{var l,c;let u;d()?Array.isArray(r.value)?t.step?u=((l=r.value[n])!=null?l:0)-t.step:u=((c=r.value[n])!=null?c:0)-1:u=0:typeof r.value=="number"?t.step?u=r.value-t.step:!t.step&&a?u=r.value-10:u=r.value-1:u=0,R(e,u),e.preventDefault()},K=(e,n,a=!1)=>{var l,c;let u;d()?Array.isArray(r.value)?t.step?u=((l=r.value[n])!=null?l:0)+t.step:u=((c=r.value[n])!=null?c:0)+1:u=0:t.step?u=(typeof r.value=="number"?r.value:0)+t.step:!t.step&&a?u=(typeof r.value=="number"?r.value:0)+10:u=(typeof r.value=="number"?r.value:0)+1,R(e,u),e.preventDefault()},T=s.useCallback(()=>{var u,l;let e=r.value,n=(u=t.min)!=null?u:0,a=(l=t.max)!=null?l:100;return e===void 0||Array.isArray(e)||e<n?0:e>a?100:(e-n)*100/(a-n)},[r.value,t.min,t.max]),b=s.useCallback(()=>{var u,l;let e=r.value,n=(u=t.min)!=null?u:0,a=(l=t.max)!=null?l:100;return Array.isArray(e)&&e[0]!==void 0?e[0]<n?0:(e[0]-n)*100/(a-n):0},[r.value,t.min,t.max]),v=s.useCallback(()=>{var u,l;let e=r.value,n=(u=t.min)!=null?u:0,a=(l=t.max)!=null?l:100;return Array.isArray(e)&&e.length===2&&e[1]!==void 0?e[1]>a?100:(e[1]-n)*100/(a-n):100},[r.value,t.min,t.max]),p=()=>{if(d()){let e=v()>b()?v()-b():b()-v(),n=v()>b()?b():v();return h()?{insetInlineStart:n+"%",width:e+"%"}:{bottom:n+"%",height:e+"%"}}else return h()?{width:T()+"%"}:{height:T()+"%"}},ee=()=>h()?{insetInlineStart:T()+"%"}:{bottom:T()+"%"},te=()=>h()?{insetInlineStart:b()+"%"}:{bottom:b()+"%"},ne=()=>h()?{insetInlineStart:v()+"%"}:{bottom:v()+"%"},h=s.useCallback(()=>t.orientation==="horizontal",[]);return{state:r,registerThumb:z,thumbCounter:M,range:d,onTouchStart:B,onDrag:x,onDragEnd:V,onMouseDown:j,onKeyDown:q,onBarClick:F,rangeStyle:p,handleThumbStyle:ee,rangeStartHandleStyle:te,rangeEndHandleStyle:ne}}});export{X as defaultProps,be as useSlider};
1
+ import{withHeadless as ae}from"@primereact/core/headless";import{useEventListener as S}from"@primereact/hooks";import{focus as ue,getAttribute as re,getWindowScrollLeft as le,getWindowScrollTop as se,isRTL as ie}from"@primeuix/utils";import*as s from"react";var X={value:void 0,defaultValue:void 0,orientation:"horizontal",min:0,max:100,step:void 0,onValueChange:void 0};var be=ae({name:"useSlider",defaultProps:X,setup({props:t,elementRef:f}){var W,U;let[Y,L]=s.useState((U=(W=t.value)!=null?W:t.defaultValue)!=null?U:void 0),R=s.useRef(0),M=s.useRef(!1),h=s.useRef(0),w=s.useRef(0),k=s.useRef(0),A=s.useRef(null),D=s.useRef(null);s.useEffect(()=>{t.value!==void 0&&L(t.value)},[t.value]);let r={value:Y},z=s.useCallback(()=>{let e=h.current;return h.current+=1,e},[]);s.useEffect(()=>(h.current=0,()=>{h.current=0}),[]);let d=s.useCallback(()=>Array.isArray(r.value)||h.current>1,[r.value]),C=()=>{var n,a,u,l,c,i,o;let e=(n=f.current)==null?void 0:n.getBoundingClientRect();w.current=((a=e==null?void 0:e.left)!=null?a:0)+le(),k.current=((u=e==null?void 0:e.top)!=null?u:0)+se(),A.current=(c=(l=f.current)==null?void 0:l.offsetWidth)!=null?c:null,D.current=(o=(i=f.current)==null?void 0:i.offsetHeight)!=null?o:null},P=e=>{var o;let n,a=e,u=e,l=a.touches?a.touches[0].pageX:u.pageX,c=a.touches?a.touches[0].pageY:u.pageY;if(g()){if(!f.current)return;ie(f.current)?n=(w.current+A.current-l)*100/A.current:n=(l-w.current)*100/A.current}else n=(k.current+D.current-c)*100/D.current;let i=(t.max-t.min)*(n/100)+t.min;if(t.step){let m=d()?Array.isArray(r.value)&&(o=r.value[R.current])!=null?o:0:typeof r.value=="number"?r.value:0,y=i-m;y<0?i=m+Math.ceil(i/t.step-m/t.step)*t.step:y>0&&(i=m+Math.floor(i/t.step-m/t.step)*t.step)}else i=Math.floor(i);E(e,i)},E=(e,n)=>{var l,c,i,o,m,y;let a=Math.round(n*100)/100,u;d()?(u=Array.isArray(r.value)?[...r.value]:[0,0],R.current==0?(a<((l=t.min)!=null?l:0)?a=t.min:a>=((c=t.max)!=null?c:100)&&(a=t.max),u[0]=a):(a>((i=t.max)!=null?i:100)?a=t.max:a<=((o=t.min)!=null?o:0)&&(a=t.min),u[1]=a)):(a<((m=t.min)!=null?m:0)?a=t.min:a>((y=t.max)!=null?y:100)&&(a=t.max),u=a),L(u),t.onValueChange&&t.onValueChange({originalEvent:e,value:u})},H=(e,n=0)=>{var a;t.disabled||((a=f.current)==null||a.setAttribute("data-p-sliding","true"),M.current=!0,C(),d()&&Array.isArray(r.value)&&r.value[0]===t.max?R.current=0:R.current=n,ue(e.currentTarget))},x=e=>{M.current&&P(e)},V=()=>{var e;M.current&&(M.current=!1,(e=f.current)==null||e.removeAttribute("data-p-sliding"),J(),O(),Z(),$())},B=(e,n)=>{Q(),_(),H(e,n)},j=(e,n)=>{G(),N(),H(e,n)},q=(e,n)=>{var a,u;switch(R.current=n,e.code){case"ArrowDown":case"ArrowLeft":I(e,n),e.preventDefault();break;case"ArrowUp":case"ArrowRight":K(e,n),e.preventDefault();break;case"PageDown":I(e,n,!0),e.preventDefault();break;case"PageUp":K(e,n,!0),e.preventDefault();break;case"Home":E(e,(a=t.min)!=null?a:0),e.preventDefault();break;case"End":E(e,(u=t.max)!=null?u:100),e.preventDefault();break;default:break}},F=e=>{t.disabled||re(e.target,"data-pc-name")!=="sliderthumb"&&(C(),P(e))},[G,J]=S({type:"mousemove",listener:e=>x(e)}),[N,O]=S({type:"mouseup",listener:()=>V()}),[Q,Z]=S({type:"touchmove",listener:e=>x(e)}),[_,$]=S({type:"touchend",listener:()=>V()}),I=(e,n,a=!1)=>{var l,c;let u;d()?Array.isArray(r.value)?t.step?u=((l=r.value[n])!=null?l:0)-t.step:u=((c=r.value[n])!=null?c:0)-1:u=0:typeof r.value=="number"?t.step?u=r.value-t.step:!t.step&&a?u=r.value-10:u=r.value-1:u=0,E(e,u),e.preventDefault()},K=(e,n,a=!1)=>{var l,c;let u;d()?Array.isArray(r.value)?t.step?u=((l=r.value[n])!=null?l:0)+t.step:u=((c=r.value[n])!=null?c:0)+1:u=0:t.step?u=(typeof r.value=="number"?r.value:0)+t.step:!t.step&&a?u=(typeof r.value=="number"?r.value:0)+10:u=(typeof r.value=="number"?r.value:0)+1,E(e,u),e.preventDefault()},T=s.useCallback(()=>{var u,l;let e=r.value,n=(u=t.min)!=null?u:0,a=(l=t.max)!=null?l:100;return e===void 0||Array.isArray(e)||e<n?0:e>a?100:(e-n)*100/(a-n)},[r.value,t.min,t.max]),b=s.useCallback(()=>{var u,l;let e=r.value,n=(u=t.min)!=null?u:0,a=(l=t.max)!=null?l:100;return Array.isArray(e)&&e[0]!==void 0?e[0]<n?0:(e[0]-n)*100/(a-n):0},[r.value,t.min,t.max]),v=s.useCallback(()=>{var u,l;let e=r.value,n=(u=t.min)!=null?u:0,a=(l=t.max)!=null?l:100;return Array.isArray(e)&&e.length===2&&e[1]!==void 0?e[1]>a?100:(e[1]-n)*100/(a-n):100},[r.value,t.min,t.max]),p=()=>{if(d()){let e=v()>b()?v()-b():b()-v(),n=v()>b()?b():v();return g()?{insetInlineStart:n+"%",width:e+"%"}:{bottom:n+"%",height:e+"%"}}else return g()?{width:T()+"%"}:{height:T()+"%"}},ee=()=>g()?{insetInlineStart:T()+"%"}:{bottom:T()+"%"},te=()=>g()?{insetInlineStart:b()+"%"}:{bottom:b()+"%"},ne=()=>g()?{insetInlineStart:v()+"%"}:{bottom:v()+"%"},g=s.useCallback(()=>t.orientation==="horizontal",[]);return{state:r,registerThumb:z,thumbCounter:h,range:d,onTouchStart:B,onDrag:x,onDragEnd:V,onMouseDown:j,onKeyDown:q,onBarClick:F,rangeStyle:p,handleThumbStyle:ee,rangeStartHandleStyle:te,rangeEndHandleStyle:ne}}});export{X as defaultProps,be as useSlider};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/slider/useSlider.ts","../../src/slider/useSlider.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener } from '@primereact/hooks';\nimport { useSliderProps } from '@primereact/types/shared/slider';\nimport { focus, getAttribute, getWindowScrollLeft, getWindowScrollTop, 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, elementRef }) {\n const [activeValue, setActiveValue] = React.useState<useSliderProps['value']>(props.value ?? props.defaultValue ?? undefined);\n const handleIndex = React.useRef(0);\n const dragging = React.useRef(false);\n const thumbCounter = React.useRef(0);\n const initX = React.useRef(0);\n const initY = React.useRef(0);\n const barWidth = React.useRef<number | null>(null);\n const barHeight = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n if (props.value !== undefined) {\n setActiveValue(props.value);\n }\n }, [props.value]);\n\n const state = {\n value: activeValue\n };\n\n const registerThumb = React.useCallback(() => {\n const index = thumbCounter.current;\n\n thumbCounter.current += 1;\n\n return index;\n }, []);\n\n const range = React.useCallback(() => {\n return Array.isArray(state.value) || thumbCounter.current > 1;\n }, [state.value]);\n\n const updateDomData = () => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n initX.current = (rect?.left ?? 0) + getWindowScrollLeft();\n initY.current = (rect?.top ?? 0) + getWindowScrollTop();\n barWidth.current = elementRef.current?.offsetWidth ?? null;\n barHeight.current = elementRef.current?.offsetHeight ?? null;\n };\n\n const handleValue = (event: React.MouseEvent | React.TouchEvent) => {\n let rawValue;\n const touchEvent = event as React.TouchEvent;\n const mouseEvent = event as React.MouseEvent;\n const pageX = touchEvent.touches ? touchEvent.touches[0].pageX : mouseEvent.pageX;\n const pageY = touchEvent.touches ? touchEvent.touches[0].pageY : mouseEvent.pageY;\n\n if (horizontal()) {\n if (!elementRef.current) return;\n\n if (isRTL(elementRef.current)) {\n rawValue = ((initX.current + (barWidth.current as number) - pageX) * 100) / (barWidth.current as number);\n } else {\n rawValue = ((pageX - initX.current) * 100) / (barWidth.current as number);\n }\n } else {\n rawValue = ((initY.current + (barHeight.current as number) - pageY) * 100) / (barHeight.current as number);\n }\n\n let newValue = ((props.max as number) - (props.min as number)) * (rawValue / 100) + (props.min as number);\n\n if (props.step) {\n const oldValue: number = range() ? (Array.isArray(state.value) ? (state.value[handleIndex.current] ?? 0) : 0) : typeof state.value === 'number' ? state.value : 0;\n const diff = newValue - oldValue;\n\n if (diff < 0) newValue = oldValue + Math.ceil(newValue / props.step - oldValue / props.step) * props.step;\n else if (diff > 0) newValue = oldValue + Math.floor(newValue / props.step - oldValue / props.step) * props.step;\n } else {\n newValue = Math.floor(newValue);\n }\n\n updateValue(event, newValue);\n };\n\n const updateValue = (event: React.MouseEvent | React.TouchEvent | React.KeyboardEvent, value: number) => {\n let newValue = Math.round(value * 100) / 100;\n let updatedValue;\n\n if (range()) {\n updatedValue = Array.isArray(state.value) ? [...state.value] : [0, 0];\n\n if (handleIndex.current == 0) {\n if (newValue < (props.min ?? 0)) {\n newValue = props.min as number;\n } else if (newValue >= (props.max ?? 100)) {\n newValue = props.max as number;\n }\n\n updatedValue[0] = newValue;\n } else {\n if (newValue > (props.max ?? 100)) {\n newValue = props.max as number;\n } else if (newValue <= (props.min ?? 0)) {\n newValue = props.min as number;\n }\n\n updatedValue[1] = newValue;\n }\n } else {\n if (newValue < (props.min ?? 0)) {\n newValue = props.min as number;\n } else if (newValue > (props.max ?? 100)) {\n newValue = props.max as number;\n }\n\n updatedValue = newValue;\n }\n\n setActiveValue(updatedValue);\n\n if (props.onValueChange) {\n props.onValueChange({\n originalEvent: event,\n value: updatedValue\n });\n }\n };\n\n const onDragStart = (event: React.MouseEvent<HTMLElement> | React.TouchEvent<HTMLElement>, index: number = 0) => {\n if (props.disabled) {\n return;\n }\n\n elementRef.current?.setAttribute('data-p-sliding', 'true');\n dragging.current = true;\n updateDomData();\n\n if (range() && Array.isArray(state.value) && state.value[0] === props.max) {\n handleIndex.current = 0;\n } else {\n handleIndex.current = index;\n }\n\n focus(event.currentTarget as HTMLElement);\n };\n\n const onDrag = (event: React.MouseEvent | React.TouchEvent) => {\n if (dragging.current) {\n handleValue(event);\n }\n };\n\n const onDragEnd = () => {\n if (dragging.current) {\n dragging.current = false;\n elementRef.current?.removeAttribute('data-p-sliding');\n\n unbindThumbMouseMoveListener();\n unbindThumbMouseUpListener();\n unbindDocumentTouchMoveListener();\n unbindDocumentTouchEndListener();\n }\n };\n\n const onTouchStart = (event: React.TouchEvent<HTMLElement>, index: number) => {\n bindDocumentTouchMoveListener();\n bindDocumentTouchEndListener();\n onDragStart(event, index);\n };\n\n const onMouseDown = (event: React.MouseEvent<HTMLElement>, index: number) => {\n bindThumbMouseMoveListener();\n bindThumbMouseUpListener();\n onDragStart(event, index);\n };\n\n const onKeyDown = (event: React.KeyboardEvent, index: number) => {\n handleIndex.current = index;\n\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n decrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n incrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'PageDown':\n decrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'PageUp':\n incrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'Home':\n updateValue(event, props.min ?? 0);\n event.preventDefault();\n break;\n\n case 'End':\n updateValue(event, props.max ?? 100);\n event.preventDefault();\n break;\n\n default:\n break;\n }\n };\n\n const onBarClick = (event: React.MouseEvent) => {\n if (props.disabled) {\n return;\n }\n\n if (getAttribute(event.target as Element, 'data-pc-name') !== 'sliderthumb') {\n updateDomData();\n handleValue(event);\n }\n };\n\n const [bindThumbMouseMoveListener, unbindThumbMouseMoveListener] = useEventListener({\n type: 'mousemove',\n listener: (event: Event) => onDrag(event as unknown as React.MouseEvent)\n });\n\n const [bindThumbMouseUpListener, unbindThumbMouseUpListener] = useEventListener({\n type: 'mouseup',\n listener: () => onDragEnd()\n });\n\n const [bindDocumentTouchMoveListener, unbindDocumentTouchMoveListener] = useEventListener({\n type: 'touchmove',\n listener: (event: Event) => onDrag(event as unknown as React.MouseEvent)\n });\n\n const [bindDocumentTouchEndListener, unbindDocumentTouchEndListener] = useEventListener({\n type: 'touchend',\n listener: () => onDragEnd()\n });\n\n const decrementValue = (event: React.KeyboardEvent, index: number, pageKey = false) => {\n let newValue;\n\n if (range()) {\n if (Array.isArray(state.value)) {\n if (props.step) newValue = (state.value[index] ?? 0) - props.step;\n else newValue = (state.value[index] ?? 0) - 1;\n } else {\n newValue = 0;\n }\n } else {\n if (typeof state.value === 'number') {\n if (props.step) newValue = state.value - props.step;\n else if (!props.step && pageKey) newValue = state.value - 10;\n else newValue = state.value - 1;\n } else {\n newValue = 0;\n }\n }\n\n updateValue(event, newValue);\n event.preventDefault();\n };\n\n const incrementValue = (event: React.KeyboardEvent, index: number, pageKey = false) => {\n let newValue;\n\n if (range()) {\n if (Array.isArray(state.value)) {\n if (props.step) newValue = (state.value[index] ?? 0) + props.step;\n else newValue = (state.value[index] ?? 0) + 1;\n } else {\n newValue = 0;\n }\n } else {\n if (props.step) newValue = (typeof state.value === 'number' ? state.value : 0) + props.step;\n else if (!props.step && pageKey) newValue = (typeof state.value === 'number' ? state.value : 0) + 10;\n else newValue = (typeof state.value === 'number' ? state.value : 0) + 1;\n }\n\n updateValue(event, newValue);\n event.preventDefault();\n };\n\n const handlePosition = React.useCallback(() => {\n const value = state.value;\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n if (value === undefined || Array.isArray(value)) return 0;\n\n if (value < min) return 0;\n else if (value > max) return 100;\n else return ((value - min) * 100) / (max - min);\n }, [state.value, props.min, props.max]);\n\n const rangeStartPosition = React.useCallback(() => {\n const value = state.value;\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n if (Array.isArray(value) && value[0] !== undefined) {\n if (value[0] < min) return 0;\n else return ((value[0] - min) * 100) / (max - min);\n } else return 0;\n }, [state.value, props.min, props.max]);\n\n const rangeEndPosition = React.useCallback(() => {\n const value = state.value;\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n if (Array.isArray(value) && value.length === 2 && value[1] !== undefined) {\n if (value[1] > max) return 100;\n else return ((value[1] - min) * 100) / (max - min);\n } else return 100;\n }, [state.value, props.min, props.max]);\n\n const rangeStyle = () => {\n if (range()) {\n const rangeSliderWidth = rangeEndPosition() > rangeStartPosition() ? rangeEndPosition() - rangeStartPosition() : rangeStartPosition() - rangeEndPosition();\n const rangeSliderPosition = rangeEndPosition() > rangeStartPosition() ? rangeStartPosition() : rangeEndPosition();\n\n if (horizontal()) {\n return { insetInlineStart: rangeSliderPosition + '%', width: rangeSliderWidth + '%' };\n } else {\n return { bottom: rangeSliderPosition + '%', height: rangeSliderWidth + '%' };\n }\n } else {\n if (horizontal()) {\n return { width: handlePosition() + '%' };\n } else {\n return { height: handlePosition() + '%' };\n }\n }\n };\n\n const handleThumbStyle = () => {\n if (horizontal()) {\n return { insetInlineStart: handlePosition() + '%' };\n } else {\n return { bottom: handlePosition() + '%' };\n }\n };\n\n const rangeStartHandleStyle = () => {\n if (horizontal()) {\n return { insetInlineStart: rangeStartPosition() + '%' };\n } else {\n return { bottom: rangeStartPosition() + '%' };\n }\n };\n\n const rangeEndHandleStyle = () => {\n if (horizontal()) {\n return { insetInlineStart: rangeEndPosition() + '%' };\n } else {\n return { bottom: rangeEndPosition() + '%' };\n }\n };\n\n const horizontal = React.useCallback(() => {\n return props.orientation === 'horizontal';\n }, []);\n\n return {\n state,\n registerThumb,\n thumbCounter,\n //methods\n range,\n onTouchStart,\n onDrag,\n onDragEnd,\n onMouseDown,\n onKeyDown,\n onBarClick,\n rangeStyle,\n handleThumbStyle,\n rangeStartHandleStyle,\n rangeEndHandleStyle\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: undefined,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","focus","getAttribute","getWindowScrollLeft","getWindowScrollTop","isRTL","React","defaultProps","useSlider","withHeadless","defaultProps","props","elementRef","_a","_b","activeValue","setActiveValue","handleIndex","dragging","thumbCounter","initX","initY","barWidth","barHeight","state","registerThumb","index","range","updateDomData","_c","_d","_e","_f","_g","rect","getWindowScrollLeft","getWindowScrollTop","handleValue","event","rawValue","touchEvent","mouseEvent","pageX","pageY","horizontal","isRTL","newValue","oldValue","diff","updateValue","value","updatedValue","onDragStart","focus","onDrag","onDragEnd","unbindThumbMouseMoveListener","unbindThumbMouseUpListener","unbindDocumentTouchMoveListener","unbindDocumentTouchEndListener","onTouchStart","bindDocumentTouchMoveListener","bindDocumentTouchEndListener","onMouseDown","bindThumbMouseMoveListener","bindThumbMouseUpListener","onKeyDown","decrementValue","incrementValue","onBarClick","getAttribute","useEventListener","pageKey","handlePosition","min","max","rangeStartPosition","rangeEndPosition","rangeStyle","rangeSliderWidth","rangeSliderPosition","handleThumbStyle","rangeStartHandleStyle","rangeEndHandleStyle"]}
1
+ {"version":3,"sources":["../../src/slider/useSlider.ts","../../src/slider/useSlider.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener } from '@primereact/hooks';\nimport { useSliderProps } from '@primereact/types/shared/slider';\nimport { focus, getAttribute, getWindowScrollLeft, getWindowScrollTop, 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, elementRef }) {\n const [activeValue, setActiveValue] = React.useState<useSliderProps['value']>(props.value ?? props.defaultValue ?? undefined);\n const handleIndex = React.useRef(0);\n const dragging = React.useRef(false);\n const thumbCounter = React.useRef(0);\n const initX = React.useRef(0);\n const initY = React.useRef(0);\n const barWidth = React.useRef<number | null>(null);\n const barHeight = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n if (props.value !== undefined) {\n setActiveValue(props.value);\n }\n }, [props.value]);\n\n const state = {\n value: activeValue\n };\n\n const registerThumb = React.useCallback(() => {\n const index = thumbCounter.current;\n\n thumbCounter.current += 1;\n\n return index;\n }, []);\n\n React.useEffect(() => {\n thumbCounter.current = 0;\n\n return () => {\n thumbCounter.current = 0;\n };\n }, []);\n\n const range = React.useCallback(() => {\n return Array.isArray(state.value) || thumbCounter.current > 1;\n }, [state.value]);\n\n const updateDomData = () => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n initX.current = (rect?.left ?? 0) + getWindowScrollLeft();\n initY.current = (rect?.top ?? 0) + getWindowScrollTop();\n barWidth.current = elementRef.current?.offsetWidth ?? null;\n barHeight.current = elementRef.current?.offsetHeight ?? null;\n };\n\n const handleValue = (event: React.MouseEvent | React.TouchEvent) => {\n let rawValue;\n const touchEvent = event as React.TouchEvent;\n const mouseEvent = event as React.MouseEvent;\n const pageX = touchEvent.touches ? touchEvent.touches[0].pageX : mouseEvent.pageX;\n const pageY = touchEvent.touches ? touchEvent.touches[0].pageY : mouseEvent.pageY;\n\n if (horizontal()) {\n if (!elementRef.current) return;\n\n if (isRTL(elementRef.current)) {\n rawValue = ((initX.current + (barWidth.current as number) - pageX) * 100) / (barWidth.current as number);\n } else {\n rawValue = ((pageX - initX.current) * 100) / (barWidth.current as number);\n }\n } else {\n rawValue = ((initY.current + (barHeight.current as number) - pageY) * 100) / (barHeight.current as number);\n }\n\n let newValue = ((props.max as number) - (props.min as number)) * (rawValue / 100) + (props.min as number);\n\n if (props.step) {\n const oldValue: number = range() ? (Array.isArray(state.value) ? (state.value[handleIndex.current] ?? 0) : 0) : typeof state.value === 'number' ? state.value : 0;\n const diff = newValue - oldValue;\n\n if (diff < 0) newValue = oldValue + Math.ceil(newValue / props.step - oldValue / props.step) * props.step;\n else if (diff > 0) newValue = oldValue + Math.floor(newValue / props.step - oldValue / props.step) * props.step;\n } else {\n newValue = Math.floor(newValue);\n }\n\n updateValue(event, newValue);\n };\n\n const updateValue = (event: React.MouseEvent | React.TouchEvent | React.KeyboardEvent, value: number) => {\n let newValue = Math.round(value * 100) / 100;\n let updatedValue;\n\n if (range()) {\n updatedValue = Array.isArray(state.value) ? [...state.value] : [0, 0];\n\n if (handleIndex.current == 0) {\n if (newValue < (props.min ?? 0)) {\n newValue = props.min as number;\n } else if (newValue >= (props.max ?? 100)) {\n newValue = props.max as number;\n }\n\n updatedValue[0] = newValue;\n } else {\n if (newValue > (props.max ?? 100)) {\n newValue = props.max as number;\n } else if (newValue <= (props.min ?? 0)) {\n newValue = props.min as number;\n }\n\n updatedValue[1] = newValue;\n }\n } else {\n if (newValue < (props.min ?? 0)) {\n newValue = props.min as number;\n } else if (newValue > (props.max ?? 100)) {\n newValue = props.max as number;\n }\n\n updatedValue = newValue;\n }\n\n setActiveValue(updatedValue);\n\n if (props.onValueChange) {\n props.onValueChange({\n originalEvent: event,\n value: updatedValue\n });\n }\n };\n\n const onDragStart = (event: React.MouseEvent<HTMLElement> | React.TouchEvent<HTMLElement>, index: number = 0) => {\n if (props.disabled) {\n return;\n }\n\n elementRef.current?.setAttribute('data-p-sliding', 'true');\n dragging.current = true;\n updateDomData();\n\n if (range() && Array.isArray(state.value) && state.value[0] === props.max) {\n handleIndex.current = 0;\n } else {\n handleIndex.current = index;\n }\n\n focus(event.currentTarget as HTMLElement);\n };\n\n const onDrag = (event: React.MouseEvent | React.TouchEvent) => {\n if (dragging.current) {\n handleValue(event);\n }\n };\n\n const onDragEnd = () => {\n if (dragging.current) {\n dragging.current = false;\n elementRef.current?.removeAttribute('data-p-sliding');\n\n unbindThumbMouseMoveListener();\n unbindThumbMouseUpListener();\n unbindDocumentTouchMoveListener();\n unbindDocumentTouchEndListener();\n }\n };\n\n const onTouchStart = (event: React.TouchEvent<HTMLElement>, index: number) => {\n bindDocumentTouchMoveListener();\n bindDocumentTouchEndListener();\n onDragStart(event, index);\n };\n\n const onMouseDown = (event: React.MouseEvent<HTMLElement>, index: number) => {\n bindThumbMouseMoveListener();\n bindThumbMouseUpListener();\n onDragStart(event, index);\n };\n\n const onKeyDown = (event: React.KeyboardEvent, index: number) => {\n handleIndex.current = index;\n\n switch (event.code) {\n case 'ArrowDown':\n case 'ArrowLeft':\n decrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'ArrowUp':\n case 'ArrowRight':\n incrementValue(event, index);\n event.preventDefault();\n break;\n\n case 'PageDown':\n decrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'PageUp':\n incrementValue(event, index, true);\n event.preventDefault();\n break;\n\n case 'Home':\n updateValue(event, props.min ?? 0);\n event.preventDefault();\n break;\n\n case 'End':\n updateValue(event, props.max ?? 100);\n event.preventDefault();\n break;\n\n default:\n break;\n }\n };\n\n const onBarClick = (event: React.MouseEvent) => {\n if (props.disabled) {\n return;\n }\n\n if (getAttribute(event.target as Element, 'data-pc-name') !== 'sliderthumb') {\n updateDomData();\n handleValue(event);\n }\n };\n\n const [bindThumbMouseMoveListener, unbindThumbMouseMoveListener] = useEventListener({\n type: 'mousemove',\n listener: (event: Event) => onDrag(event as unknown as React.MouseEvent)\n });\n\n const [bindThumbMouseUpListener, unbindThumbMouseUpListener] = useEventListener({\n type: 'mouseup',\n listener: () => onDragEnd()\n });\n\n const [bindDocumentTouchMoveListener, unbindDocumentTouchMoveListener] = useEventListener({\n type: 'touchmove',\n listener: (event: Event) => onDrag(event as unknown as React.MouseEvent)\n });\n\n const [bindDocumentTouchEndListener, unbindDocumentTouchEndListener] = useEventListener({\n type: 'touchend',\n listener: () => onDragEnd()\n });\n\n const decrementValue = (event: React.KeyboardEvent, index: number, pageKey = false) => {\n let newValue;\n\n if (range()) {\n if (Array.isArray(state.value)) {\n if (props.step) newValue = (state.value[index] ?? 0) - props.step;\n else newValue = (state.value[index] ?? 0) - 1;\n } else {\n newValue = 0;\n }\n } else {\n if (typeof state.value === 'number') {\n if (props.step) newValue = state.value - props.step;\n else if (!props.step && pageKey) newValue = state.value - 10;\n else newValue = state.value - 1;\n } else {\n newValue = 0;\n }\n }\n\n updateValue(event, newValue);\n event.preventDefault();\n };\n\n const incrementValue = (event: React.KeyboardEvent, index: number, pageKey = false) => {\n let newValue;\n\n if (range()) {\n if (Array.isArray(state.value)) {\n if (props.step) newValue = (state.value[index] ?? 0) + props.step;\n else newValue = (state.value[index] ?? 0) + 1;\n } else {\n newValue = 0;\n }\n } else {\n if (props.step) newValue = (typeof state.value === 'number' ? state.value : 0) + props.step;\n else if (!props.step && pageKey) newValue = (typeof state.value === 'number' ? state.value : 0) + 10;\n else newValue = (typeof state.value === 'number' ? state.value : 0) + 1;\n }\n\n updateValue(event, newValue);\n event.preventDefault();\n };\n\n const handlePosition = React.useCallback(() => {\n const value = state.value;\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n if (value === undefined || Array.isArray(value)) return 0;\n\n if (value < min) return 0;\n else if (value > max) return 100;\n else return ((value - min) * 100) / (max - min);\n }, [state.value, props.min, props.max]);\n\n const rangeStartPosition = React.useCallback(() => {\n const value = state.value;\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n if (Array.isArray(value) && value[0] !== undefined) {\n if (value[0] < min) return 0;\n else return ((value[0] - min) * 100) / (max - min);\n } else return 0;\n }, [state.value, props.min, props.max]);\n\n const rangeEndPosition = React.useCallback(() => {\n const value = state.value;\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n if (Array.isArray(value) && value.length === 2 && value[1] !== undefined) {\n if (value[1] > max) return 100;\n else return ((value[1] - min) * 100) / (max - min);\n } else return 100;\n }, [state.value, props.min, props.max]);\n\n const rangeStyle = () => {\n if (range()) {\n const rangeSliderWidth = rangeEndPosition() > rangeStartPosition() ? rangeEndPosition() - rangeStartPosition() : rangeStartPosition() - rangeEndPosition();\n const rangeSliderPosition = rangeEndPosition() > rangeStartPosition() ? rangeStartPosition() : rangeEndPosition();\n\n if (horizontal()) {\n return { insetInlineStart: rangeSliderPosition + '%', width: rangeSliderWidth + '%' };\n } else {\n return { bottom: rangeSliderPosition + '%', height: rangeSliderWidth + '%' };\n }\n } else {\n if (horizontal()) {\n return { width: handlePosition() + '%' };\n } else {\n return { height: handlePosition() + '%' };\n }\n }\n };\n\n const handleThumbStyle = () => {\n if (horizontal()) {\n return { insetInlineStart: handlePosition() + '%' };\n } else {\n return { bottom: handlePosition() + '%' };\n }\n };\n\n const rangeStartHandleStyle = () => {\n if (horizontal()) {\n return { insetInlineStart: rangeStartPosition() + '%' };\n } else {\n return { bottom: rangeStartPosition() + '%' };\n }\n };\n\n const rangeEndHandleStyle = () => {\n if (horizontal()) {\n return { insetInlineStart: rangeEndPosition() + '%' };\n } else {\n return { bottom: rangeEndPosition() + '%' };\n }\n };\n\n const horizontal = React.useCallback(() => {\n return props.orientation === 'horizontal';\n }, []);\n\n return {\n state,\n registerThumb,\n thumbCounter,\n //methods\n range,\n onTouchStart,\n onDrag,\n onDragEnd,\n onMouseDown,\n onKeyDown,\n onBarClick,\n rangeStyle,\n handleThumbStyle,\n rangeStartHandleStyle,\n rangeEndHandleStyle\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: undefined,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","focus","getAttribute","getWindowScrollLeft","getWindowScrollTop","isRTL","React","defaultProps","useSlider","withHeadless","defaultProps","props","elementRef","_a","_b","activeValue","setActiveValue","handleIndex","dragging","thumbCounter","initX","initY","barWidth","barHeight","state","registerThumb","index","range","updateDomData","_c","_d","_e","_f","_g","rect","getWindowScrollLeft","getWindowScrollTop","handleValue","event","rawValue","touchEvent","mouseEvent","pageX","pageY","horizontal","isRTL","newValue","oldValue","diff","updateValue","value","updatedValue","onDragStart","focus","onDrag","onDragEnd","unbindThumbMouseMoveListener","unbindThumbMouseUpListener","unbindDocumentTouchMoveListener","unbindDocumentTouchEndListener","onTouchStart","bindDocumentTouchMoveListener","bindDocumentTouchEndListener","onMouseDown","bindThumbMouseMoveListener","bindThumbMouseUpListener","onKeyDown","decrementValue","incrementValue","onBarClick","getAttribute","useEventListener","pageKey","handlePosition","min","max","rangeStartPosition","rangeEndPosition","rangeStyle","rangeSliderWidth","rangeSliderPosition","handleThumbStyle","rangeStartHandleStyle","rangeEndHandleStyle"]}
@@ -0,0 +1,2 @@
1
+ export * from './useTerminal';
2
+ export * from './useTerminal.props';
@@ -0,0 +1,2 @@
1
+ import{withHeadless as E}from"@primereact/core/headless";import{focus as R}from"@primeuix/utils";import{EventBus as h}from"@primeuix/utils/eventbus";var r=h();import*as e from"react";var T={prompt:void 0};var D=E({name:"useTerminal",defaultProps:T,setup({elementRef:m}){let[s,c]=e.useState(""),[t,u]=e.useState([]),[d,i]=e.useState(0),[x,S]=e.useState(""),p=e.useRef(null),l=e.useRef(!1),g={commandText:s,commands:t};return e.useEffect(()=>{let o=a=>{if(t&&t.length>0){let f=[...t];f[f.length-1].response=String(a),u(f)}},n=()=>{u([]),i(0)};return r.on("response",o),r.on("clear",n),()=>{r.off("response",o),r.off("clear",n)}},[t]),e.useEffect(()=>{l.current&&(r.emit("command",x),l.current=!1),m.current&&(m.current.scrollTop=m.current.scrollHeight)}),{state:g,inputRef:p,onClick:()=>{p.current&&R(p.current)},onKeyDown:o=>{switch(o.code){case"ArrowUp":if(t&&t.length){let n=d-1<0?t.length-1:d-1,a=t[n];i(n),c(a.text)}break;case"Enter":case"NumpadEnter":if(s){let n=[...t];n.push({text:s}),i(a=>a+1),c(""),u(n),S(s),l.current=!0}break;default:break}},onInputChange:o=>{c(o.target.value)}}}});export{T as defaultProps,D as useTerminal};
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/terminal/useTerminal.ts","../../../primereact/src/terminalservice/TerminalService.ts","../../src/terminal/useTerminal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { TerminalCommandItem } from '@primereact/types/shared/terminal';\nimport { focus } from '@primeuix/utils';\nimport { TerminalService } from 'primereact/terminalservice';\nimport * as React from 'react';\nimport { defaultProps } from './useTerminal.props';\n\nexport const useTerminal = withHeadless({\n name: 'useTerminal',\n defaultProps,\n setup({ 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 [emittedTextState, setEmittedTextState] = React.useState<string>('');\n const inputRef = React.useRef<HTMLInputElement>(null);\n const isEmitted = React.useRef<boolean>(false);\n\n const state = {\n commandText: commandTextState,\n commands: commandsState\n };\n\n React.useEffect(() => {\n const response = (res: unknown) => {\n if (commandsState && commandsState.length > 0) {\n const commands = [...commandsState];\n\n commands[commands.length - 1].response = String(res);\n\n setCommandsState(commands);\n }\n };\n\n const clear = () => {\n setCommandsState([]);\n setIndexState(0);\n };\n\n TerminalService.on('response', response);\n TerminalService.on('clear', clear);\n\n return () => {\n TerminalService.off('response', response);\n TerminalService.off('clear', clear);\n };\n }, [commandsState]);\n\n React.useEffect(() => {\n if (isEmitted.current) {\n TerminalService.emit('command', emittedTextState);\n isEmitted.current = false;\n }\n\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 setEmittedTextState(commandTextState);\n isEmitted.current = true;\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 };\n }\n});\n","import { EventBus } from '@primeuix/utils/eventbus';\n\nexport default EventBus();\n","import type { useTerminalProps } from '@primereact/types/shared/terminal';\n\nexport const defaultProps: useTerminalProps = {\n prompt: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAE7B,OAAS,SAAAC,MAAa,kBCFtB,OAAS,YAAAC,MAAgB,2BAEzB,IAAOC,EAAQD,EAAS,EDExB,UAAYE,MAAW,QEFhB,IAAMC,EAAiC,CAC1C,OAAQ,MACZ,EFGO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,WAAAC,CAAW,EAAG,CAClB,GAAM,CAACC,EAAkBC,CAAmB,EAAU,WAAiB,EAAE,EACnE,CAACC,EAAeC,CAAgB,EAAU,WAAgC,CAAC,CAAC,EAC5E,CAACC,EAAYC,CAAa,EAAU,WAAiB,CAAC,EACtD,CAACC,EAAkBC,CAAmB,EAAU,WAAiB,EAAE,EACnEC,EAAiB,SAAyB,IAAI,EAC9CC,EAAkB,SAAgB,EAAK,EAEvCC,EAAQ,CACV,YAAaV,EACb,SAAUE,CACd,EAEA,OAAM,YAAU,IAAM,CAClB,IAAMS,EAAYC,GAAiB,CAC/B,GAAIV,GAAiBA,EAAc,OAAS,EAAG,CAC3C,IAAMW,EAAW,CAAC,GAAGX,CAAa,EAElCW,EAASA,EAAS,OAAS,CAAC,EAAE,SAAW,OAAOD,CAAG,EAEnDT,EAAiBU,CAAQ,CAC7B,CACJ,EAEMC,EAAQ,IAAM,CAChBX,EAAiB,CAAC,CAAC,EACnBE,EAAc,CAAC,CACnB,EAEA,OAAAU,EAAgB,GAAG,WAAYJ,CAAQ,EACvCI,EAAgB,GAAG,QAASD,CAAK,EAE1B,IAAM,CACTC,EAAgB,IAAI,WAAYJ,CAAQ,EACxCI,EAAgB,IAAI,QAASD,CAAK,CACtC,CACJ,EAAG,CAACZ,CAAa,CAAC,EAEZ,YAAU,IAAM,CACdO,EAAU,UACVM,EAAgB,KAAK,UAAWT,CAAgB,EAChDG,EAAU,QAAU,IAGpBV,EAAW,UACXA,EAAW,QAAQ,UAAYA,EAAW,QAAQ,aAE1D,CAAC,EA8CM,CACH,MAAAW,EACA,SAAAF,EACA,QA/CY,IAAM,CACdA,EAAS,SACTQ,EAAMR,EAAS,OAAO,CAE9B,EA4CI,UA1CeS,GAAiD,CAChE,OAAQA,EAAM,KAAM,CAChB,IAAK,UACD,GAAIf,GAAiBA,EAAc,OAAQ,CACvC,IAAMgB,EAAYd,EAAa,EAAI,EAAIF,EAAc,OAAS,EAAIE,EAAa,EACzEe,EAAUjB,EAAcgB,CAAS,EAEvCb,EAAca,CAAS,EACvBjB,EAAoBkB,EAAQ,IAAI,CACpC,CAEA,MAEJ,IAAK,QACL,IAAK,cACD,GAAInB,EAAkB,CAClB,IAAMoB,EAAc,CAAC,GAAGlB,CAAa,EAErCkB,EAAY,KAAK,CAAE,KAAMpB,CAAiB,CAAC,EAE3CK,EAAea,GAAcA,EAAY,CAAC,EAC1CjB,EAAoB,EAAE,EACtBE,EAAiBiB,CAAW,EAC5Bb,EAAoBP,CAAgB,EACpCS,EAAU,QAAU,EACxB,CAEA,MAEJ,QACI,KACR,CACJ,EAWI,cATmBY,GAA2C,CAC9DpB,EAAoBoB,EAAE,OAAO,KAAK,CACtC,CAQA,CACJ,CACJ,CAAC","names":["withHeadless","focus","EventBus","TerminalService_default","React","defaultProps","useTerminal","withHeadless","defaultProps","elementRef","commandTextState","setCommandTextState","commandsState","setCommandsState","indexState","setIndexState","emittedTextState","setEmittedTextState","inputRef","isEmitted","state","response","res","commands","clear","TerminalService_default","focus","event","prevIndex","command","newCommands","e"]}
@@ -0,0 +1,12 @@
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
+ }>;
@@ -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 s}from"@primereact/core/headless";var t={autoResize:void 0};var c=s({name:"useTextarea",defaultProps:t,setup({props:e,elementRef:r}){let o=()=>{!r.current||!r.current.offsetParent||(r.current.style.height="auto",r.current.style.height=r.current.scrollHeight+"px",parseFloat(r.current.style.height)>=parseFloat(r.current.style.maxHeight)?(r.current.style.overflowY="scroll",r.current.style.height=r.current.style.maxHeight):r.current.style.overflow="hidden")};return{onInput:()=>{e.autoResize&&o()}}}});export{t as defaultProps,c 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 { defaultProps } from './useTextarea.props';\n\nexport const useTextarea = withHeadless({\n name: 'useTextarea',\n defaultProps,\n setup({ props, elementRef }) {\n const resize = () => {\n if (!elementRef.current || !elementRef.current.offsetParent) return;\n\n elementRef.current.style.height = 'auto';\n elementRef.current.style.height = elementRef.current.scrollHeight + 'px';\n\n if (parseFloat(elementRef.current.style.height) >= parseFloat(elementRef.current.style.maxHeight)) {\n elementRef.current.style.overflowY = 'scroll';\n elementRef.current.style.height = elementRef.current.style.maxHeight;\n } else {\n elementRef.current.style.overflow = 'hidden';\n }\n };\n\n const onInput = () => {\n if (props.autoResize) {\n resize();\n }\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,4BCEtB,IAAMC,EAAiC,CAC1C,WAAY,MAChB,EDDO,IAAMC,EAAcC,EAAa,CACpC,KAAM,cACN,aAAAC,EACA,MAAM,CAAE,MAAAC,EAAO,WAAAC,CAAW,EAAG,CACzB,IAAMC,EAAS,IAAM,CACb,CAACD,EAAW,SAAW,CAACA,EAAW,QAAQ,eAE/CA,EAAW,QAAQ,MAAM,OAAS,OAClCA,EAAW,QAAQ,MAAM,OAASA,EAAW,QAAQ,aAAe,KAEhE,WAAWA,EAAW,QAAQ,MAAM,MAAM,GAAK,WAAWA,EAAW,QAAQ,MAAM,SAAS,GAC5FA,EAAW,QAAQ,MAAM,UAAY,SACrCA,EAAW,QAAQ,MAAM,OAASA,EAAW,QAAQ,MAAM,WAE3DA,EAAW,QAAQ,MAAM,SAAW,SAE5C,EAQA,MAAO,CACH,QAPY,IAAM,CACdD,EAAM,YACNE,EAAO,CAEf,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useTextarea","withHeadless","defaultProps","props","elementRef","resize"]}
@@ -0,0 +1,3 @@
1
+ export declare const useTextarea: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/textarea").useTextareaProps, unknown, {
2
+ onInput: () => void;
3
+ }>;
@@ -0,0 +1,2 @@
1
+ import type { useTextareaProps } from '@primereact/types/shared/textarea';
2
+ export declare const defaultProps: useTextareaProps;
File without changes