UNPKG

@bothub-chat/ui

Version:

Bothub UI Components

2 lines (1 loc) 2.16 kB
import{__rest as t}from"tslib";import{jsx as r,jsxs as e}from"react/jsx-runtime";import{useRef as o,useState as n,useCallback as i,useEffect as s}from"react";import{useTransition as c}from"@react-spring/web";import{HeaderLangDropdownStyled as l,HeaderLangDropdownToggler as m,HeaderLangDropdownTogglerIcon as a,HeaderLangDropdownTogglerText as d,HeaderLangDropdownTogglerArrow as p,HeaderLangDropdownContent as f}from"./styled.js";export{HeaderLangDropdownList}from"./styled.js";import{HeaderLangDropdownProvider as j}from"./context.js";import{IconProvider as u}from"../../icon/context.js";import"../../icon/styled.js";import"react-dom";import"../../portal/styled.js";import"../../tooltip/styled.js";import"../../tooltip/arrow/styled.js";import"../../../theme/index.js";import"../../tooltip/context.js";import"./item/styled.js";import{useTheme as h}from"../../../theme/hook.js";const w=w=>{var{lang:y,children:v}=w,g=t(w,["lang","children"]);const L=h(),x=o(null),[b,E]=n(!1),k=i((()=>{E(!b)}),[b]),$=i((()=>{E(!1)}),[]);s((()=>{if(!b)return;const t=t=>{const r=x.current,e=t.target;r&&r.contains(e)||$()};return window.addEventListener("scroll",t,!0),()=>{window.removeEventListener("scroll",t,!0)}}),[b]),s((()=>{const t=x.current;if(null!==t){const r=r=>{t.contains(r.target)||E(!1)},e=()=>E(!1);return document.addEventListener("click",r),window.addEventListener("blur",e),()=>{document.removeEventListener("click",r),window.removeEventListener("blur",e)}}}),[]);const O=c(b,{from:{opacity:0,transform:"scale(0)"},enter:{opacity:b?1:.5,transform:`scale(${b?1:.999})`},leave:{opacity:0,transform:"scale(0.999)"},config:{duration:150}});return r(j,{setIsOpen:E,children:e(l,Object.assign({},g,{ref:x,children:[r(u,{fill:L.colors.base.white,children:e(m,{$open:b,onClick:k,children:[r(a,{}),r(d,{children:y}),r(p,{style:{transform:b?"rotateZ(-180deg)":"rotateZ(0)"}})]})}),O(((t,e)=>r(f,{$open:b&&!!e,style:t,children:v})))]}))})};export{w as HeaderLangDropdown,f as HeaderLangDropdownContent,l as HeaderLangDropdownStyled,m as HeaderLangDropdownToggler,p as HeaderLangDropdownTogglerArrow,a as HeaderLangDropdownTogglerIcon,d as HeaderLangDropdownTogglerText};