@progress/kendo-react-conversational-ui
Version:
React Chat component allows the user to participate in chat sessions with users or chat bots. KendoReact Conversational UI components
9 lines (8 loc) • 1.59 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react");function p(e){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const r=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(o,t,r.get?r:{enumerable:!0,get:()=>e[t]})}}return o.default=e,Object.freeze(o)}const c=p(m),y=100,a=1,E=(e,o)=>{const{enabled:t,dir:r,itemsDependency:f=[],scrollSpeed:s=y}=o,[S,b]=c.useState(!1),[d,L]=c.useState(!1),n=c.useCallback(()=>{if(e.current&&t){const{scrollLeft:l,scrollWidth:u,clientWidth:i}=e.current,O=l===0,g=r!=="rtl"?l+i>=u-a:i-l>=u-a;b(!O),L(!g)}},[t,r]),h=c.useCallback(()=>{e.current&&t&&e.current.scrollBy({left:r!=="rtl"?-s:s,behavior:"smooth"})},[t,r,s]),v=c.useCallback(()=>{e.current&&t&&e.current.scrollBy({left:r!=="rtl"?s:-s,behavior:"smooth"})},[t,r,s]);return c.useEffect(()=>{const l=e.current;if(l&&t){n(),l.addEventListener("scroll",n);const u=new ResizeObserver(n);return u.observe(l),()=>{l.removeEventListener("scroll",n),u.disconnect()}}},[t,r]),c.useLayoutEffect(()=>{t&&n()},[t,r,f]),{canScrollLeft:S,canScrollRight:d,scrollLeft:h,scrollRight:v}};exports.useScrollWithButtons=E;