@inkeep/agents-ui 0.16.0 → 0.16.2
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.
- package/dist/color-mode/index.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.js +167 -161
- package/dist/node_modules/.pnpm/use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +9 -0
- package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -2
- package/dist/primitives/atoms/cmdk/index.cjs +1 -1
- package/dist/primitives/atoms/cmdk/index.js +14 -2
- package/dist/primitives/atoms/combobox.d.ts +104 -0
- package/dist/primitives/atoms/icons/built-in-icons.cjs +1 -1
- package/dist/primitives/atoms/icons/built-in-icons.d.ts +4 -1
- package/dist/primitives/atoms/icons/built-in-icons.js +94 -91
- package/dist/primitives/atoms/icons/collections/pi.cjs +1 -1
- package/dist/primitives/atoms/icons/collections/pi.d.ts +3 -0
- package/dist/primitives/atoms/icons/collections/pi.js +82 -37
- package/dist/primitives/atoms/icons/inkeep-default-icons.cjs +1 -1
- package/dist/primitives/atoms/icons/inkeep-default-icons.js +4 -1
- package/dist/primitives/atoms/portal.js +3 -3
- package/dist/primitives/atoms/select.cjs +1 -1
- package/dist/primitives/atoms/select.js +2 -2
- package/dist/primitives/atoms/shadow/context.js +4 -4
- package/dist/primitives/components/embedded-chat/chat-error-helpers.cjs +3 -0
- package/dist/primitives/components/embedded-chat/chat-error-helpers.d.ts +26 -0
- package/dist/primitives/components/embedded-chat/chat-error-helpers.js +32 -0
- package/dist/primitives/components/embedded-chat/file-upload-input.cjs +1 -1
- package/dist/primitives/components/embedded-chat/file-upload-input.d.ts +1 -2
- package/dist/primitives/components/embedded-chat/file-upload-input.js +359 -217
- package/dist/primitives/components/embedded-chat/image-preview-modal.js +3 -3
- package/dist/primitives/components/embedded-chat/use-chat-action.cjs +1 -1
- package/dist/primitives/components/embedded-chat/use-chat-action.js +16 -14
- package/dist/primitives/components/embedded-chat/use-inkeep-chat.cjs +2 -4
- package/dist/primitives/components/embedded-chat/use-inkeep-chat.d.ts +1 -2
- package/dist/primitives/components/embedded-chat/use-inkeep-chat.js +312 -284
- package/dist/primitives/components/embedded-chat/use-stream-processor.cjs +1 -1
- package/dist/primitives/components/embedded-chat/use-stream-processor.js +1 -1
- package/dist/primitives/components/embedded-chat.cjs +3 -3
- package/dist/primitives/components/embedded-chat.d.ts +2 -3
- package/dist/primitives/components/embedded-chat.js +122 -114
- package/dist/primitives/components/embedded-search/search-provider.js +3 -3
- package/dist/primitives/components/embedded-search.cjs +1 -1
- package/dist/primitives/components/embedded-search.d.ts +1 -1
- package/dist/primitives/components/embedded-search.js +3 -3
- package/dist/primitives/components/modal/modal-provider.js +2 -2
- package/dist/primitives/components/modal.js +3 -3
- package/dist/primitives/components/sidebar-chat/index.js +1 -1
- package/dist/primitives/components/tagline-logo-icon.js +50 -9
- package/dist/primitives/hooks/use-events-api.cjs +1 -0
- package/dist/primitives/hooks/use-events-api.d.ts +29 -0
- package/dist/primitives/hooks/use-events-api.js +43 -0
- package/dist/primitives/hooks/use-initial-conversation.js +4 -1
- package/dist/primitives/hooks/use-input-notification.js +9 -9
- package/dist/primitives/index.cjs +1 -1
- package/dist/primitives/index.js +150 -144
- package/dist/primitives/providers/base-events-provider.cjs +1 -1
- package/dist/primitives/providers/base-events-provider.d.ts +2 -0
- package/dist/primitives/providers/base-events-provider.js +23 -22
- package/dist/primitives/providers/chat-auth-provider.cjs +1 -0
- package/dist/primitives/providers/chat-auth-provider.d.ts +27 -0
- package/dist/primitives/providers/chat-auth-provider.js +46 -0
- package/dist/primitives/providers/chat-base-events-provider.cjs +1 -0
- package/dist/primitives/providers/chat-base-events-provider.d.ts +12 -0
- package/dist/primitives/providers/chat-base-events-provider.js +73 -0
- package/dist/primitives/providers/chat-bubble-provider.js +1 -1
- package/dist/primitives/providers/chat-form-provider.d.ts +1 -1
- package/dist/primitives/providers/chat-form-provider.js +4 -4
- package/dist/primitives/providers/chat-history-provider.js +3 -3
- package/dist/primitives/providers/config-provider.js +3 -3
- package/dist/primitives/providers/feedback-provider.cjs +1 -1
- package/dist/primitives/providers/feedback-provider.js +37 -31
- package/dist/primitives/providers/form-field-provider.js +3 -3
- package/dist/primitives/providers/help-menu-provider.js +4 -4
- package/dist/primitives/providers/hover-popover-provider.js +3 -3
- package/dist/primitives/providers/image-preview-provider.js +5 -5
- package/dist/primitives/providers/index.cjs +1 -1
- package/dist/primitives/providers/index.d.ts +2 -0
- package/dist/primitives/providers/index.js +57 -51
- package/dist/primitives/providers/markdown-provider.js +2 -2
- package/dist/primitives/providers/message-provider.js +1 -1
- package/dist/primitives/providers/sidebar-chat-provider.js +3 -3
- package/dist/primitives/providers/source-item-provider.js +3 -3
- package/dist/primitives/providers/widget-provider.js +2 -2
- package/dist/primitives/utils/misc.cjs +1 -1
- package/dist/primitives/utils/misc.js +2 -2
- package/dist/react/chat-button.js +1 -1
- package/dist/react/embedded-chat.cjs +1 -1
- package/dist/react/embedded-chat.js +104 -102
- package/dist/react/embedded-search.cjs +1 -1
- package/dist/react/embedded-search.js +18 -18
- package/dist/react/index.cjs +1 -1
- package/dist/react/index.js +167 -161
- package/dist/styled/components/chat-bubble.js +4 -4
- package/dist/styled/components/chat-button.cjs +1 -1
- package/dist/styled/components/chat-button.js +9 -9
- package/dist/styled/components/chat-history.cjs +1 -1
- package/dist/styled/components/chat-history.js +22 -22
- package/dist/styled/components/embedded-chat/file-upload-input.cjs +1 -1
- package/dist/styled/components/embedded-chat/file-upload-input.js +71 -72
- package/dist/styled/components/embedded-chat/image-preview-modal.js +14 -7
- package/dist/styled/components/embedded-chat.cjs +1 -1
- package/dist/styled/components/embedded-chat.js +211 -199
- package/dist/styled/components/embedded-search.cjs +1 -1
- package/dist/styled/components/embedded-search.js +72 -66
- package/dist/styled/components/loading-indicator.cjs +1 -1
- package/dist/styled/components/loading-indicator.js +1 -1
- package/dist/styled/components/message.cjs +1 -1
- package/dist/styled/components/message.js +142 -139
- package/dist/styled/components/modal.js +3 -3
- package/dist/styled/components/searchbar.js +8 -8
- package/dist/styled/components/sidebar-chat.cjs +1 -1
- package/dist/styled/components/sidebar-chat.js +5 -5
- package/dist/styled/index.cjs +1 -1
- package/dist/styled/index.js +155 -149
- package/dist/styled/inkeep.css.cjs +13 -3
- package/dist/styled/inkeep.css.js +13 -3
- package/dist/theme/utils/generate-theme-variables.js +6 -6
- package/dist/types/config/ai.d.ts +5 -0
- package/dist/types/events.d.ts +11 -0
- package/dist/types/icons/built-in.d.ts +1 -1
- package/dist/types/icons/custom.d.ts +3 -0
- package/package.json +2 -2
- package/dist/node_modules/.pnpm/use-sync-external-store@1.5.0_react@19.0.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +0 -9
- /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.cjs +0 -0
- /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js +0 -0
- /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/shim/index.cjs +0 -0
- /package/dist/node_modules/.pnpm/{use-sync-external-store@1.5.0_react@19.0.0 → use-sync-external-store@1.6.0_react@19.3.0-canary-87ae75b3-20260128}/node_modules/use-sync-external-store/shim/index.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),rt=require("react"),st=require("react-dom"),He=require("@radix-ui/number"),E=require("@radix-ui/primitive"),ct=require("@radix-ui/react-collection"),H=require("@radix-ui/react-compose-refs"),lt=require("@radix-ui/react-context"),it=require("@radix-ui/react-direction"),at=require("@radix-ui/react-dismissable-layer"),dt=require("@radix-ui/react-focus-guards"),ut=require("@radix-ui/react-focus-scope"),Ie=require("@radix-ui/react-id"),Te=require("@radix-ui/react-popper");require("@radix-ui/react-portal");const _=require("@radix-ui/react-primitive"),pt=require("@radix-ui/react-slot"),ft=require("@radix-ui/react-use-callback-ref"),je=require("@radix-ui/react-use-controllable-state"),B=require("@radix-ui/react-use-layout-effect"),mt=require("aria-hidden"),ht=require("react-remove-scroll");function Pe(o){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(l,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return l.default=o,Object.freeze(l)}const t=Pe(rt),ke=Pe(st),ie=Pe(Te),St=[" ","Enter","ArrowUp","ArrowDown"],gt=[" ","Enter"],z="Select",[ae,de,vt]=ct.createCollection(z),[ee,xt]=lt.createContextScope(z,[vt,Te.createPopperScope]),ue=Te.createPopperScope(),[wt,q]=ee(z),[Ct,yt]=ee(z),Ee=o=>{const{__scopeSelect:l,children:e,open:i,defaultOpen:r,onOpenChange:u,value:n,defaultValue:s,onValueChange:c,dir:m,disabled:g,required:C}=o,R=ue(l),[P,y]=t.useState(null),[a,h]=t.useState(null),[v,f]=t.useState(!1),S=it.useDirection(m),[j,M]=je.useControllableState({prop:i,defaultProp:r??!1,onChange:u,caller:z}),[te,b]=je.useControllableState({prop:n,defaultProp:s,onChange:c,caller:z}),L=t.useRef(null),[oe,U]=t.useState(new Set);return d.jsx(ie.Root,{...R,children:d.jsx(wt,{required:C,scope:l,trigger:P,onTriggerChange:y,valueNode:a,onValueNodeChange:h,valueNodeHasChildren:v,onValueNodeHasChildrenChange:f,contentId:Ie.useId(),value:te,onValueChange:b,open:!!j,onOpenChange:M,dir:S,triggerPointerDownPosRef:L,disabled:g,children:d.jsx(ae.Provider,{scope:l,children:d.jsx(Ct,{scope:o.__scopeSelect,onNativeOptionAdd:t.useCallback(O=>{U(A=>new Set(A).add(O))},[]),onNativeOptionRemove:t.useCallback(O=>{U(A=>{const k=new Set(A);return k.delete(O),k})},[]),children:e})})})})};Ee.displayName=z;const Ve="SelectTrigger",Re=t.forwardRef((o,l)=>{const{__scopeSelect:e,disabled:i=!1,...r}=o,u=ue(e),n=q(Ve,e),s=n.disabled||i,c=H.useComposedRefs(l,n.onTriggerChange),m=de(e),g=t.useRef("touch"),[C,R,P]=ot(a=>{const h=m().filter(S=>!S.disabled),v=h.find(S=>S.value===n.value),f=nt(h,a,v);f!==void 0&&n.onValueChange(f.value)}),y=a=>{s||(n.onOpenChange(!0),P()),a&&(n.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return d.jsx(ie.Anchor,{asChild:!0,...u,children:d.jsx(_.Primitive.button,{type:"button",role:"combobox","aria-controls":n.contentId,"aria-expanded":n.open,"aria-required":n.required,"aria-autocomplete":"none",dir:n.dir,"data-state":n.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":tt(n.value)?"":void 0,...r,ref:c,onClick:E.composeEventHandlers(r.onClick,a=>{a.currentTarget.focus(),g.current!=="mouse"&&y(a)}),onPointerDown:E.composeEventHandlers(r.onPointerDown,a=>{g.current=a.pointerType;const h=a.target;h.hasPointerCapture(a.pointerId)&&h.releasePointerCapture(a.pointerId),a.button===0&&a.ctrlKey===!1&&a.pointerType==="mouse"&&(y(a),a.preventDefault())}),onKeyDown:E.composeEventHandlers(r.onKeyDown,a=>{const h=C.current!=="";!(a.ctrlKey||a.altKey||a.metaKey)&&a.key.length===1&&R(a.key),!(h&&a.key===" ")&&St.includes(a.key)&&(y(),a.preventDefault())})})})});Re.displayName=Ve;const Be="SelectValue",be=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,children:u,placeholder:n="",...s}=o,c=q(Be,e),{onValueNodeHasChildrenChange:m}=c,g=u!==void 0,C=H.useComposedRefs(l,c.onValueNodeChange);return B.useLayoutEffect(()=>{m(g)},[m,g]),d.jsx(_.Primitive.span,{...s,ref:C,style:{pointerEvents:"none"},children:tt(c.value)?d.jsx(d.Fragment,{children:n}):u})});be.displayName=Be;const It="SelectIcon",Ne=t.forwardRef((o,l)=>{const{__scopeSelect:e,children:i,...r}=o;return d.jsx(_.Primitive.span,{"aria-hidden":!0,...r,ref:l,children:i||"▼"})});Ne.displayName=It;const Y="SelectContent",_e=t.forwardRef((o,l)=>{const e=q(Y,o.__scopeSelect),[i,r]=t.useState();if(B.useLayoutEffect(()=>{r(new DocumentFragment)},[]),!e.open){const u=i;return u?ke.createPortal(d.jsx(qe,{scope:o.__scopeSelect,children:d.jsx(ae.Slot,{scope:o.__scopeSelect,children:d.jsx("div",{children:o.children})})}),u):null}return d.jsx(Fe,{...o,ref:l})});_e.displayName=Y;const D=10,[qe,F]=ee(Y),Tt="SelectContentImpl",Pt=pt.createSlot("SelectContent.RemoveScroll"),Fe=t.forwardRef((o,l)=>{const{__scopeSelect:e,position:i="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:u,onPointerDownOutside:n,side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h,...v}=o,f=q(Y,e),[S,j]=t.useState(null),[M,te]=t.useState(null),b=H.useComposedRefs(l,p=>j(p)),[L,oe]=t.useState(null),[U,O]=t.useState(null),A=de(e),[k,X]=t.useState(!1),W=t.useRef(!1);t.useEffect(()=>{if(S)return mt.hideOthers(S)},[S]),dt.useFocusGuards();const Z=t.useCallback(p=>{const[I,...N]=A().map(T=>T.ref.current),[x]=N.slice(-1),w=document.activeElement;for(const T of p)if(T===w||(T?.scrollIntoView({block:"nearest"}),T===I&&M&&(M.scrollTop=0),T===x&&M&&(M.scrollTop=M.scrollHeight),T?.focus(),document.activeElement!==w))return},[A,M]),$=t.useCallback(()=>Z([L,S]),[Z,L,S]);t.useEffect(()=>{k&&$()},[k,$]);const{onOpenChange:J,triggerPointerDownPosRef:V}=f;t.useEffect(()=>{if(S){let p={x:0,y:0};const I=x=>{p={x:Math.abs(Math.round(x.pageX)-(V.current?.x??0)),y:Math.abs(Math.round(x.pageY)-(V.current?.y??0))}},N=x=>{p.x<=10&&p.y<=10?x.preventDefault():S.contains(x.target)||J(!1),document.removeEventListener("pointermove",I),V.current=null};return V.current!==null&&(document.addEventListener("pointermove",I),document.addEventListener("pointerup",N,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",N,{capture:!0})}}},[S,J,V]),t.useEffect(()=>{const p=()=>J(!1);return window.addEventListener("blur",p),window.addEventListener("resize",p),()=>{window.removeEventListener("blur",p),window.removeEventListener("resize",p)}},[J]);const[pe,se]=ot(p=>{const I=A().filter(w=>!w.disabled),N=I.find(w=>w.ref.current===document.activeElement),x=nt(I,p,N);x&&setTimeout(()=>x.ref.current.focus())}),fe=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&(oe(p),x&&(W.current=!0))},[f.value]),me=t.useCallback(()=>S?.focus(),[S]),Q=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&O(p)},[f.value]),ce=i==="popper"?ve:Ue,ne=ce===ve?{side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h}:{};return d.jsx(qe,{scope:e,content:S,viewport:M,onViewportChange:te,itemRefCallback:fe,selectedItem:L,onItemLeave:me,itemTextRefCallback:Q,focusSelectedItem:$,selectedItemText:U,position:i,isPositioned:k,searchRef:pe,children:d.jsx(ht.RemoveScroll,{as:Pt,allowPinchZoom:!0,removeScrollBar:!1,children:d.jsx(ut.FocusScope,{asChild:!0,trapped:f.open,onMountAutoFocus:p=>{p.preventDefault()},onUnmountAutoFocus:E.composeEventHandlers(r,p=>{f.trigger?.focus({preventScroll:!0}),p.preventDefault()}),children:d.jsx(at.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:n,onFocusOutside:p=>p.preventDefault(),onDismiss:()=>f.onOpenChange(!1),children:d.jsx(ce,{role:"listbox",id:f.contentId,"data-state":f.open?"open":"closed",dir:f.dir,onContextMenu:p=>p.preventDefault(),...v,...ne,onPlaced:()=>X(!0),ref:b,style:{display:"flex",flexDirection:"column",outline:"none",...v.style},onKeyDown:E.composeEventHandlers(v.onKeyDown,p=>{const I=p.ctrlKey||p.altKey||p.metaKey;if(p.key==="Tab"&&p.preventDefault(),!I&&p.key.length===1&&se(p.key),["ArrowUp","ArrowDown","Home","End"].includes(p.key)){let x=A().filter(w=>!w.disabled).map(w=>w.ref.current);if(["ArrowUp","End"].includes(p.key)&&(x=x.slice().reverse()),["ArrowUp","ArrowDown"].includes(p.key)){const w=p.target,T=x.indexOf(w);x=x.slice(T+1)}setTimeout(()=>Z(x)),p.preventDefault()}})})})})})})});Fe.displayName=Tt;const Et="SelectItemAlignedPosition",Ue=t.forwardRef((o,l)=>{const{__scopeSelect:e,onPlaced:i,...r}=o,u=q(Y,e),n=F(Y,e),[s,c]=t.useState(null),[m,g]=t.useState(null),C=H.useComposedRefs(l,b=>g(b)),R=de(e),P=t.useRef(!1),y=t.useRef(!0),{viewport:a,selectedItem:h,selectedItemText:v,focusSelectedItem:f}=n,S=t.useCallback(()=>{if(u.trigger&&u.valueNode&&s&&m&&a&&h&&v){const b=u.trigger.getBoundingClientRect(),L=m.getBoundingClientRect(),oe=u.valueNode.getBoundingClientRect(),U=v.getBoundingClientRect();if(u.dir!=="rtl"){const w=U.left-L.left,T=oe.left-w,K=b.left-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.left=ge+"px"}else{const w=L.right-U.right,T=window.innerWidth-oe.right-w,K=window.innerWidth-b.right-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.right=ge+"px"}const O=R(),A=window.innerHeight-D*2,k=a.scrollHeight,X=window.getComputedStyle(m),W=Number.parseInt(X.borderTopWidth,10),Z=Number.parseInt(X.paddingTop,10),$=Number.parseInt(X.borderBottomWidth,10),J=Number.parseInt(X.paddingBottom,10),V=W+Z+k+J+$,pe=Math.min(h.offsetHeight*5,V),se=window.getComputedStyle(a),fe=Number.parseInt(se.paddingTop,10),me=Number.parseInt(se.paddingBottom,10),Q=b.top+b.height/2-D,ce=A-Q,ne=h.offsetHeight/2,p=h.offsetTop+ne,I=W+Z+p,N=V-I;if(I<=Q){const w=O.length>0&&h===O[O.length-1].ref.current;s.style.bottom="0px";const T=m.clientHeight-a.offsetTop-a.offsetHeight,K=Math.max(ce,ne+(w?me:0)+T+$),G=I+K;s.style.height=G+"px"}else{const w=O.length>0&&h===O[0].ref.current;s.style.top="0px";const K=Math.max(Q,W+a.offsetTop+(w?fe:0)+ne)+N;s.style.height=K+"px",a.scrollTop=I-Q+a.offsetTop}s.style.margin=`${D}px 0`,s.style.minHeight=pe+"px",s.style.maxHeight=A+"px",i?.(),requestAnimationFrame(()=>P.current=!0)}},[R,u.trigger,u.valueNode,s,m,a,h,v,u.dir,i]);B.useLayoutEffect(()=>S(),[S]);const[j,M]=t.useState();B.useLayoutEffect(()=>{m&&M(window.getComputedStyle(m).zIndex)},[m]);const te=t.useCallback(b=>{b&&y.current===!0&&(S(),f?.(),y.current=!1)},[S,f]);return d.jsx(bt,{scope:e,contentWrapper:s,shouldExpandOnScrollRef:P,onScrollButtonChange:te,children:d.jsx("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:j},children:d.jsx(_.Primitive.div,{...r,ref:C,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});Ue.displayName=Et;const Rt="SelectPopperPosition",ve=t.forwardRef((o,l)=>{const{__scopeSelect:e,align:i="start",collisionPadding:r=D,...u}=o,n=ue(e);return d.jsx(ie.Content,{...n,...u,ref:l,align:i,collisionPadding:r,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ve.displayName=Rt;const[bt,Me]=ee(Y,{}),xe="SelectViewport",Oe=t.forwardRef((o,l)=>{const{__scopeSelect:e,nonce:i,...r}=o,u=F(xe,e),n=Me(xe,e),s=H.useComposedRefs(l,u.onViewportChange),c=t.useRef(0);return d.jsxs(d.Fragment,{children:[d.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),d.jsx(ae.Slot,{scope:e,children:d.jsx(_.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:E.composeEventHandlers(r.onScroll,m=>{const g=m.currentTarget,{contentWrapper:C,shouldExpandOnScrollRef:R}=n;if(R?.current&&C){const P=Math.abs(c.current-g.scrollTop);if(P>0){const y=window.innerHeight-D*2,a=Number.parseFloat(C.style.minHeight),h=Number.parseFloat(C.style.height),v=Math.max(a,h);if(v<y){const f=v+P,S=Math.min(y,f),j=f-S;C.style.height=S+"px",C.style.bottom==="0px"&&(g.scrollTop=j>0?j:0,C.style.justifyContent="flex-end")}}}c.current=g.scrollTop})})})]})});Oe.displayName=xe;const We="SelectGroup",[Nt,_t]=ee(We),Ke=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=Ie.useId();return d.jsx(Nt,{scope:e,id:r,children:d.jsx(_.Primitive.div,{role:"group","aria-labelledby":r,...i,ref:l})})});Ke.displayName=We;const Ge="SelectLabel",ze=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=_t(Ge,e);return d.jsx(_.Primitive.div,{id:r.id,...i,ref:l})});ze.displayName=Ge;const le="SelectItem",[Mt,Ye]=ee(le),Ae=t.forwardRef((o,l)=>{const{__scopeSelect:e,value:i,disabled:r=!1,textValue:u,...n}=o,s=q(le,e),c=F(le,e),m=s.value===i,[g,C]=t.useState(u??""),[R,P]=t.useState(!1),y=H.useComposedRefs(l,f=>c.itemRefCallback?.(f,i,r)),a=Ie.useId(),h=t.useRef("touch"),v=()=>{r||(s.onValueChange(i),s.onOpenChange(!1))};if(i==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return d.jsx(Mt,{scope:e,value:i,disabled:r,textId:a,isSelected:m,onItemTextChange:t.useCallback(f=>{C(S=>S||(f?.textContent??"").trim())},[]),children:d.jsx(ae.ItemSlot,{scope:e,value:i,disabled:r,textValue:g,children:d.jsx(_.Primitive.div,{role:"option","aria-labelledby":a,"data-highlighted":R?"":void 0,"aria-selected":m&&R,"data-state":m?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...n,ref:y,onFocus:E.composeEventHandlers(n.onFocus,()=>P(!0)),onBlur:E.composeEventHandlers(n.onBlur,()=>P(!1)),onClick:E.composeEventHandlers(n.onClick,()=>{h.current!=="mouse"&&v()}),onPointerUp:E.composeEventHandlers(n.onPointerUp,()=>{h.current==="mouse"&&v()}),onPointerDown:E.composeEventHandlers(n.onPointerDown,f=>{h.current=f.pointerType}),onPointerMove:E.composeEventHandlers(n.onPointerMove,f=>{h.current=f.pointerType,r?c.onItemLeave?.():h.current==="mouse"&&f.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E.composeEventHandlers(n.onPointerLeave,f=>{f.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:E.composeEventHandlers(n.onKeyDown,f=>{c.searchRef?.current!==""&&f.key===" "||(gt.includes(f.key)&&v(),f.key===" "&&f.preventDefault())})})})})});Ae.displayName=le;const re="SelectItemText",De=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,...u}=o,n=q(re,e),s=F(re,e),c=Ye(re,e),m=yt(re,e),[g,C]=t.useState(null),R=H.useComposedRefs(l,v=>C(v),c.onItemTextChange,v=>s.itemTextRefCallback?.(v,c.value,c.disabled)),P=g?.textContent,y=t.useMemo(()=>d.jsx("option",{value:c.value,disabled:c.disabled,children:P},c.value),[c.disabled,c.value,P]),{onNativeOptionAdd:a,onNativeOptionRemove:h}=m;return B.useLayoutEffect(()=>(a(y),()=>h(y)),[a,h,y]),d.jsxs(d.Fragment,{children:[d.jsx(_.Primitive.span,{id:c.textId,...u,ref:R}),c.isSelected&&n.valueNode&&!n.valueNodeHasChildren?ke.createPortal(u.children,n.valueNode):null]})});De.displayName=re;const Xe="SelectItemIndicator",Le=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return Ye(Xe,e).isSelected?d.jsx(_.Primitive.span,{"aria-hidden":!0,...i,ref:l}):null});Le.displayName=Xe;const we="SelectScrollUpButton",Ze=t.forwardRef((o,l)=>{const e=F(we,o.__scopeSelect),i=Me(we,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollTop>0;u(m)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop-c.offsetHeight)}}):null});Ze.displayName=we;const Ce="SelectScrollDownButton",$e=t.forwardRef((o,l)=>{const e=F(Ce,o.__scopeSelect),i=Me(Ce,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollHeight-c.clientHeight,g=Math.ceil(c.scrollTop)<m;u(g)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop+c.offsetHeight)}}):null});$e.displayName=Ce;const Je=t.forwardRef((o,l)=>{const{__scopeSelect:e,onAutoScroll:i,...r}=o,u=F("SelectScrollButton",e),n=t.useRef(null),s=de(e),c=t.useCallback(()=>{n.current!==null&&(window.clearInterval(n.current),n.current=null)},[]);return t.useEffect(()=>()=>c(),[c]),B.useLayoutEffect(()=>{s().find(g=>g.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[s]),d.jsx(_.Primitive.div,{"aria-hidden":!0,...r,ref:l,style:{flexShrink:0,...r.style},onPointerDown:E.composeEventHandlers(r.onPointerDown,()=>{n.current===null&&(n.current=window.setInterval(i,50))}),onPointerMove:E.composeEventHandlers(r.onPointerMove,()=>{u.onItemLeave?.(),n.current===null&&(n.current=window.setInterval(i,50))}),onPointerLeave:E.composeEventHandlers(r.onPointerLeave,()=>{c()})})}),Ot="SelectSeparator",Qe=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return d.jsx(_.Primitive.div,{"aria-hidden":!0,...i,ref:l})});Qe.displayName=Ot;const ye="SelectArrow",et=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=ue(e),u=q(ye,e),n=F(ye,e);return u.open&&n.position==="popper"?d.jsx(ie.Arrow,{...r,...i,ref:l}):null});et.displayName=ye;function tt(o){return o===""||o===void 0}function ot(o){const l=ft.useCallbackRef(o),e=t.useRef(""),i=t.useRef(0),r=t.useCallback(n=>{const s=e.current+n;l(s),function c(m){e.current=m,window.clearTimeout(i.current),m!==""&&(i.current=window.setTimeout(()=>c(""),1e3))}(s)},[l]),u=t.useCallback(()=>{e.current="",window.clearTimeout(i.current)},[]);return t.useEffect(()=>()=>window.clearTimeout(i.current),[]),[e,r,u]}function nt(o,l,e){const r=l.length>1&&Array.from(l).every(m=>m===l[0])?l[0]:l,u=e?o.indexOf(e):-1;let n=At(o,Math.max(u,0));r.length===1&&(n=n.filter(m=>m!==e));const c=n.find(m=>m.textValue.toLowerCase().startsWith(r.toLowerCase()));return c!==e?c:void 0}function At(o,l){return o.map((e,i)=>o[(l+i)%o.length])}const Dt=Ee,Lt=Re,Ht=be,jt=Ne,kt=_e,Vt=Oe,Bt=Ae,qt=De,Ft=Le;exports.Content=kt;exports.Icon=jt;exports.Item=Bt;exports.ItemIndicator=Ft;exports.ItemText=qt;exports.Root=Dt;exports.Select=Ee;exports.SelectArrow=et;exports.SelectContent=_e;exports.SelectGroup=Ke;exports.SelectIcon=Ne;exports.SelectItem=Ae;exports.SelectItemIndicator=Le;exports.SelectItemText=De;exports.SelectLabel=ze;exports.SelectScrollDownButton=$e;exports.SelectScrollUpButton=Ze;exports.SelectSeparator=Qe;exports.SelectTrigger=Re;exports.SelectValue=be;exports.SelectViewport=Oe;exports.Trigger=Lt;exports.Value=Ht;exports.Viewport=Vt;exports.createSelectScope=xt;
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),rt=require("react"),st=require("react-dom"),He=require("@radix-ui/number"),E=require("@radix-ui/primitive"),ct=require("@radix-ui/react-collection"),H=require("@radix-ui/react-compose-refs"),lt=require("@radix-ui/react-context"),it=require("@radix-ui/react-direction"),at=require("@radix-ui/react-dismissable-layer"),dt=require("@radix-ui/react-focus-guards"),ut=require("@radix-ui/react-focus-scope"),Ie=require("@radix-ui/react-id"),Te=require("@radix-ui/react-popper");require("@radix-ui/react-portal");const _=require("@radix-ui/react-primitive"),pt=require("@radix-ui/react-slot"),ft=require("@radix-ui/react-use-callback-ref"),je=require("@radix-ui/react-use-controllable-state"),B=require("@radix-ui/react-use-layout-effect"),mt=require("aria-hidden"),ht=require("react-remove-scroll");function Pe(o){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(o){for(const e in o)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(o,e);Object.defineProperty(l,e,i.get?i:{enumerable:!0,get:()=>o[e]})}}return l.default=o,Object.freeze(l)}const t=Pe(rt),ke=Pe(st),ie=Pe(Te),St=[" ","Enter","ArrowUp","ArrowDown"],gt=[" ","Enter"],z="Select",[ae,de,vt]=ct.createCollection(z),[ee,xt]=lt.createContextScope(z,[vt,Te.createPopperScope]),ue=Te.createPopperScope(),[wt,q]=ee(z),[Ct,yt]=ee(z),Ee=o=>{const{__scopeSelect:l,children:e,open:i,defaultOpen:r,onOpenChange:u,value:n,defaultValue:s,onValueChange:c,dir:m,disabled:g,required:C}=o,R=ue(l),[P,y]=t.useState(null),[a,h]=t.useState(null),[v,f]=t.useState(!1),S=it.useDirection(m),[j,M]=je.useControllableState({prop:i,defaultProp:r??!1,onChange:u,caller:z}),[te,b]=je.useControllableState({prop:n,defaultProp:s,onChange:c,caller:z}),L=t.useRef(null),[oe,U]=t.useState(new Set);return d.jsx(ie.Root,{...R,children:d.jsx(wt,{required:C,scope:l,trigger:P,onTriggerChange:y,valueNode:a,onValueNodeChange:h,valueNodeHasChildren:v,onValueNodeHasChildrenChange:f,contentId:Ie.useId(),value:te,onValueChange:b,open:!!j,onOpenChange:M,dir:S,triggerPointerDownPosRef:L,disabled:g,children:d.jsx(ae.Provider,{scope:l,children:d.jsx(Ct,{scope:o.__scopeSelect,onNativeOptionAdd:t.useCallback(O=>{U(A=>new Set(A).add(O))},[]),onNativeOptionRemove:t.useCallback(O=>{U(A=>{const k=new Set(A);return k.delete(O),k})},[]),children:e})})})})};Ee.displayName=z;const Ve="SelectTrigger",Re=t.forwardRef((o,l)=>{const{__scopeSelect:e,disabled:i=!1,...r}=o,u=ue(e),n=q(Ve,e),s=n.disabled||i,c=H.useComposedRefs(l,n.onTriggerChange),m=de(e),g=t.useRef("touch"),[C,R,P]=ot(a=>{const h=m().filter(S=>!S.disabled),v=h.find(S=>S.value===n.value),f=nt(h,a,v);f!==void 0&&n.onValueChange(f.value)}),y=a=>{s||(n.onOpenChange(!0),P()),a&&(n.triggerPointerDownPosRef.current={x:Math.round(a.pageX),y:Math.round(a.pageY)})};return d.jsx(ie.Anchor,{asChild:!0,...u,children:d.jsx(_.Primitive.button,{type:"button",role:"combobox","aria-controls":n.contentId,"aria-expanded":n.open,"aria-required":n.required,"aria-autocomplete":"none",dir:n.dir,"data-state":n.open?"open":"closed",disabled:s,"data-disabled":s?"":void 0,"data-placeholder":tt(n.value)?"":void 0,...r,ref:c,onClick:E.composeEventHandlers(r.onClick,a=>{a.currentTarget.focus(),g.current!=="mouse"&&y(a)}),onPointerDown:E.composeEventHandlers(r.onPointerDown,a=>{g.current=a.pointerType;const h=a.target;h.hasPointerCapture(a.pointerId)&&h.releasePointerCapture(a.pointerId),a.button===0&&a.ctrlKey===!1&&a.pointerType==="mouse"&&(y(a),a.preventDefault())}),onKeyDown:E.composeEventHandlers(r.onKeyDown,a=>{const h=C.current!=="";!(a.ctrlKey||a.altKey||a.metaKey)&&a.key.length===1&&R(a.key),!(h&&a.key===" ")&&St.includes(a.key)&&(y(),a.preventDefault())})})})});Re.displayName=Ve;const Be="SelectValue",be=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,children:u,placeholder:n="",...s}=o,c=q(Be,e),{onValueNodeHasChildrenChange:m}=c,g=u!==void 0,C=H.useComposedRefs(l,c.onValueNodeChange);return B.useLayoutEffect(()=>{m(g)},[m,g]),d.jsx(_.Primitive.span,{...s,ref:C,style:{pointerEvents:"none"},children:tt(c.value)?d.jsx(d.Fragment,{children:n}):u})});be.displayName=Be;const It="SelectIcon",Ne=t.forwardRef((o,l)=>{const{__scopeSelect:e,children:i,...r}=o;return d.jsx(_.Primitive.span,{"aria-hidden":!0,...r,ref:l,children:i||"▼"})});Ne.displayName=It;const Y="SelectContent",_e=t.forwardRef((o,l)=>{const e=q(Y,o.__scopeSelect),[i,r]=t.useState();if(B.useLayoutEffect(()=>{r(new DocumentFragment)},[]),!e.open){const u=i;return u?ke.createPortal(d.jsx(qe,{scope:o.__scopeSelect,children:d.jsx(ae.Slot,{scope:o.__scopeSelect,children:d.jsx("div",{children:o.children})})}),u):null}return d.jsx(Fe,{...o,ref:l})});_e.displayName=Y;const D=10,[qe,F]=ee(Y),Tt="SelectContentImpl",Pt=pt.createSlot("SelectContent.RemoveScroll"),Fe=t.forwardRef((o,l)=>{const{__scopeSelect:e,position:i="item-aligned",onCloseAutoFocus:r,onEscapeKeyDown:u,onPointerDownOutside:n,side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h,...v}=o,f=q(Y,e),[S,j]=t.useState(null),[M,te]=t.useState(null),b=H.useComposedRefs(l,p=>j(p)),[L,oe]=t.useState(null),[U,O]=t.useState(null),A=de(e),[k,X]=t.useState(!1),W=t.useRef(!1);t.useEffect(()=>{if(S)return mt.hideOthers(S)},[S]),dt.useFocusGuards();const Z=t.useCallback(p=>{const[I,...N]=A().map(T=>T.ref.current),[x]=N.slice(-1),w=document.activeElement;for(const T of p)if(T===w||(T?.scrollIntoView({block:"nearest"}),T===I&&M&&(M.scrollTop=0),T===x&&M&&(M.scrollTop=M.scrollHeight),T?.focus(),document.activeElement!==w))return},[A,M]),$=t.useCallback(()=>Z([L,S]),[Z,L,S]);t.useEffect(()=>{k&&$()},[k,$]);const{onOpenChange:J,triggerPointerDownPosRef:V}=f;t.useEffect(()=>{if(S){let p={x:0,y:0};const I=x=>{p={x:Math.abs(Math.round(x.pageX)-(V.current?.x??0)),y:Math.abs(Math.round(x.pageY)-(V.current?.y??0))}},N=x=>{p.x<=10&&p.y<=10?x.preventDefault():S.contains(x.target)||J(!1),document.removeEventListener("pointermove",I),V.current=null};return V.current!==null&&(document.addEventListener("pointermove",I),document.addEventListener("pointerup",N,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",I),document.removeEventListener("pointerup",N,{capture:!0})}}},[S,J,V]),t.useEffect(()=>{const p=()=>J(!1);return window.addEventListener("blur",p),window.addEventListener("resize",p),()=>{window.removeEventListener("blur",p),window.removeEventListener("resize",p)}},[J]);const[pe,se]=ot(p=>{const I=A().filter(w=>!w.disabled),N=I.find(w=>w.ref.current===document.activeElement),x=nt(I,p,N);x&&setTimeout(()=>x.ref.current.focus())}),fe=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&(oe(p),x&&(W.current=!0))},[f.value]),me=t.useCallback(()=>S?.focus(),[S]),Q=t.useCallback((p,I,N)=>{const x=!W.current&&!N;(f.value!==void 0&&f.value===I||x)&&O(p)},[f.value]),ce=i==="popper"?ve:Ue,ne=ce===ve?{side:s,sideOffset:c,align:m,alignOffset:g,arrowPadding:C,collisionBoundary:R,collisionPadding:P,sticky:y,hideWhenDetached:a,avoidCollisions:h}:{};return d.jsx(qe,{scope:e,content:S,viewport:M,onViewportChange:te,itemRefCallback:fe,selectedItem:L,onItemLeave:me,itemTextRefCallback:Q,focusSelectedItem:$,selectedItemText:U,position:i,isPositioned:k,searchRef:pe,children:d.jsx(ht.RemoveScroll,{as:Pt,allowPinchZoom:!0,removeScrollBar:!1,children:d.jsx(ut.FocusScope,{asChild:!0,trapped:f.open,onMountAutoFocus:p=>{p.preventDefault()},onUnmountAutoFocus:E.composeEventHandlers(r,p=>{f.trigger?.focus({preventScroll:!0}),p.preventDefault()}),children:d.jsx(at.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:u,onPointerDownOutside:n,onFocusOutside:p=>p.preventDefault(),onDismiss:()=>f.onOpenChange(!1),children:d.jsx(ce,{role:"listbox",id:f.contentId,"data-state":f.open?"open":"closed",dir:f.dir,onContextMenu:p=>p.preventDefault(),...v,...ne,onPlaced:()=>X(!0),ref:b,style:{display:"flex",flexDirection:"column",outline:"none",...v.style},onKeyDown:E.composeEventHandlers(v.onKeyDown,p=>{const I=p.ctrlKey||p.altKey||p.metaKey;if(p.key==="Tab"&&p.preventDefault(),!I&&p.key.length===1&&se(p.key),["ArrowUp","ArrowDown","Home","End"].includes(p.key)){let x=A().filter(w=>!w.disabled).map(w=>w.ref.current);if(["ArrowUp","End"].includes(p.key)&&(x=x.slice().reverse()),["ArrowUp","ArrowDown"].includes(p.key)){const w=p.target,T=x.indexOf(w);x=x.slice(T+1)}setTimeout(()=>Z(x)),p.preventDefault()}})})})})})})});Fe.displayName=Tt;const Et="SelectItemAlignedPosition",Ue=t.forwardRef((o,l)=>{const{__scopeSelect:e,onPlaced:i,...r}=o,u=q(Y,e),n=F(Y,e),[s,c]=t.useState(null),[m,g]=t.useState(null),C=H.useComposedRefs(l,b=>g(b)),R=de(e),P=t.useRef(!1),y=t.useRef(!0),{viewport:a,selectedItem:h,selectedItemText:v,focusSelectedItem:f}=n,S=t.useCallback(()=>{if(u.trigger&&u.valueNode&&s&&m&&a&&h&&v){const b=u.trigger.getBoundingClientRect(),L=m.getBoundingClientRect(),oe=u.valueNode.getBoundingClientRect(),U=v.getBoundingClientRect();if(u.dir!=="rtl"){const w=U.left-L.left,T=oe.left-w,K=b.left-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.left=ge+"px"}else{const w=L.right-U.right,T=window.innerWidth-oe.right-w,K=window.innerWidth-b.right-T,G=b.width+K,he=Math.max(G,L.width),Se=window.innerWidth-D,ge=He.clamp(T,[D,Math.max(D,Se-he)]);s.style.minWidth=G+"px",s.style.right=ge+"px"}const O=R(),A=window.innerHeight-D*2,k=a.scrollHeight,X=window.getComputedStyle(m),W=Number.parseInt(X.borderTopWidth,10),Z=Number.parseInt(X.paddingTop,10),$=Number.parseInt(X.borderBottomWidth,10),J=Number.parseInt(X.paddingBottom,10),V=W+Z+k+J+$,pe=Math.min(h.offsetHeight*5,V),se=window.getComputedStyle(a),fe=Number.parseInt(se.paddingTop,10),me=Number.parseInt(se.paddingBottom,10),Q=b.top+b.height/2-D,ce=A-Q,ne=h.offsetHeight/2,p=h.offsetTop+ne,I=W+Z+p,N=V-I;if(I<=Q){const w=O.length>0&&h===O[O.length-1].ref.current;s.style.bottom="0px";const T=m.clientHeight-a.offsetTop-a.offsetHeight,K=Math.max(ce,ne+(w?me:0)+T+$),G=I+K;s.style.height=G+"px"}else{const w=O.length>0&&h===O[0].ref.current;s.style.top="0px";const K=Math.max(Q,W+a.offsetTop+(w?fe:0)+ne)+N;s.style.height=K+"px",a.scrollTop=I-Q+a.offsetTop}s.style.margin=`${D}px 0`,s.style.minHeight=pe+"px",s.style.maxHeight=A+"px",i?.(),requestAnimationFrame(()=>P.current=!0)}},[R,u.trigger,u.valueNode,s,m,a,h,v,u.dir,i]);B.useLayoutEffect(()=>S(),[S]);const[j,M]=t.useState();B.useLayoutEffect(()=>{m&&M(window.getComputedStyle(m).zIndex)},[m]);const te=t.useCallback(b=>{b&&y.current===!0&&(S(),f?.(),y.current=!1)},[S,f]);return d.jsx(bt,{scope:e,contentWrapper:s,shouldExpandOnScrollRef:P,onScrollButtonChange:te,children:d.jsx("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:j},children:d.jsx(_.Primitive.div,{...r,ref:C,style:{boxSizing:"border-box",maxHeight:"100%",...r.style}})})})});Ue.displayName=Et;const Rt="SelectPopperPosition",ve=t.forwardRef((o,l)=>{const{__scopeSelect:e,align:i="start",collisionPadding:r=D,...u}=o,n=ue(e);return d.jsx(ie.Content,{...n,...u,ref:l,align:i,collisionPadding:r,style:{boxSizing:"border-box",...u.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ve.displayName=Rt;const[bt,Me]=ee(Y,{}),xe="SelectViewport",Oe=t.forwardRef((o,l)=>{const{__scopeSelect:e,nonce:i,...r}=o,u=F(xe,e),n=Me(xe,e),s=H.useComposedRefs(l,u.onViewportChange),c=t.useRef(0);return d.jsxs(d.Fragment,{children:[d.jsx("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),d.jsx(ae.Slot,{scope:e,children:d.jsx(_.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...r,ref:s,style:{position:"relative",flex:1,overflow:"hidden auto",...r.style},onScroll:E.composeEventHandlers(r.onScroll,m=>{const g=m.currentTarget,{contentWrapper:C,shouldExpandOnScrollRef:R}=n;if(R?.current&&C){const P=Math.abs(c.current-g.scrollTop);if(P>0){const y=window.innerHeight-D*2,a=Number.parseFloat(C.style.minHeight),h=Number.parseFloat(C.style.height),v=Math.max(a,h);if(v<y){const f=v+P,S=Math.min(y,f),j=f-S;C.style.height=S+"px",C.style.bottom==="0px"&&(g.scrollTop=j>0?j:0,C.style.justifyContent="flex-end")}}}c.current=g.scrollTop})})})]})});Oe.displayName=xe;const We="SelectGroup",[Nt,_t]=ee(We),Ke=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=Ie.useId();return d.jsx(Nt,{scope:e,id:r,children:d.jsx(_.Primitive.div,{role:"group","aria-labelledby":r,...i,ref:l})})});Ke.displayName=We;const Ge="SelectLabel",ze=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=_t(Ge,e);return d.jsx(_.Primitive.div,{id:r.id,...i,ref:l})});ze.displayName=Ge;const le="SelectItem",[Mt,Ye]=ee(le),Ae=t.forwardRef((o,l)=>{const{__scopeSelect:e,value:i,disabled:r=!1,textValue:u,...n}=o,s=q(le,e),c=F(le,e),m=s.value===i,[g,C]=t.useState(u??""),[R,P]=t.useState(!1),y=H.useComposedRefs(l,f=>c.itemRefCallback?.(f,i,r)),a=Ie.useId(),h=t.useRef("touch"),v=()=>{r||(s.onValueChange(i),s.onOpenChange(!1))};if(i==="")throw new Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return d.jsx(Mt,{scope:e,value:i,disabled:r,textId:a,isSelected:m,onItemTextChange:t.useCallback(f=>{C(S=>S||(f?.textContent??"").trim())},[]),children:d.jsx(ae.ItemSlot,{scope:e,value:i,disabled:r,textValue:g,children:d.jsx(_.Primitive.div,{role:"option","aria-labelledby":a,"data-highlighted":R?"":void 0,"aria-selected":m&&R,"data-state":m?"checked":"unchecked","aria-disabled":r||void 0,"data-disabled":r?"":void 0,tabIndex:r?void 0:-1,...n,ref:y,onFocus:E.composeEventHandlers(n.onFocus,()=>P(!0)),onBlur:E.composeEventHandlers(n.onBlur,()=>P(!1)),onClick:E.composeEventHandlers(n.onClick,()=>{h.current!=="mouse"&&v()}),onPointerUp:E.composeEventHandlers(n.onPointerUp,()=>{h.current==="mouse"&&v()}),onPointerDown:E.composeEventHandlers(n.onPointerDown,f=>{h.current=f.pointerType}),onPointerMove:E.composeEventHandlers(n.onPointerMove,f=>{h.current=f.pointerType,r?c.onItemLeave?.():h.current==="mouse"&&f.currentTarget.focus({preventScroll:!0})}),onPointerLeave:E.composeEventHandlers(n.onPointerLeave,f=>{f.currentTarget===document.activeElement&&c.onItemLeave?.()}),onKeyDown:E.composeEventHandlers(n.onKeyDown,f=>{c.searchRef?.current!==""&&f.key===" "||(gt.includes(f.key)&&v(),f.key===" "&&f.preventDefault())})})})})});Ae.displayName=le;const re="SelectItemText",De=t.forwardRef((o,l)=>{const{__scopeSelect:e,className:i,style:r,...u}=o,n=q(re,e),s=F(re,e),c=Ye(re,e),m=yt(re,e),[g,C]=t.useState(null),R=H.useComposedRefs(l,v=>C(v),c.onItemTextChange,v=>s.itemTextRefCallback?.(v,c.value,c.disabled)),P=g?.textContent,y=t.useMemo(()=>d.jsx("option",{value:c.value,disabled:c.disabled,children:P},c.value),[c.disabled,c.value,P]),{onNativeOptionAdd:a,onNativeOptionRemove:h}=m;return B.useLayoutEffect(()=>(a(y),()=>h(y)),[a,h,y]),d.jsxs(d.Fragment,{children:[d.jsx(_.Primitive.span,{id:c.textId,...u,ref:R}),c.isSelected&&n.valueNode&&!n.valueNodeHasChildren?ke.createPortal(u.children,n.valueNode):null]})});De.displayName=re;const Xe="SelectItemIndicator",Le=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return Ye(Xe,e).isSelected?d.jsx(_.Primitive.span,{"aria-hidden":!0,...i,ref:l}):null});Le.displayName=Xe;const we="SelectScrollUpButton",Ze=t.forwardRef((o,l)=>{const e=F(we,o.__scopeSelect),i=Me(we,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollTop>0;u(m)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop-c.offsetHeight)}}):null});Ze.displayName=we;const Ce="SelectScrollDownButton",$e=t.forwardRef((o,l)=>{const e=F(Ce,o.__scopeSelect),i=Me(Ce,o.__scopeSelect),[r,u]=t.useState(!1),n=H.useComposedRefs(l,i.onScrollButtonChange);return B.useLayoutEffect(()=>{if(e.viewport&&e.isPositioned){let s=function(){const m=c.scrollHeight-c.clientHeight,g=Math.ceil(c.scrollTop)<m;u(g)};const c=e.viewport;return s(),c.addEventListener("scroll",s),()=>c.removeEventListener("scroll",s)}},[e.viewport,e.isPositioned]),r?d.jsx(Je,{...o,ref:n,onAutoScroll:()=>{const{viewport:s,selectedItem:c}=e;s&&c&&(s.scrollTop=s.scrollTop+c.offsetHeight)}}):null});$e.displayName=Ce;const Je=t.forwardRef((o,l)=>{const{__scopeSelect:e,onAutoScroll:i,...r}=o,u=F("SelectScrollButton",e),n=t.useRef(null),s=de(e),c=t.useCallback(()=>{n.current!==null&&(window.clearInterval(n.current),n.current=null)},[]);return t.useEffect(()=>()=>c(),[c]),B.useLayoutEffect(()=>{s().find(g=>g.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:"nearest"})},[s]),d.jsx(_.Primitive.div,{"aria-hidden":!0,...r,ref:l,style:{flexShrink:0,...r.style},onPointerDown:E.composeEventHandlers(r.onPointerDown,()=>{n.current===null&&(n.current=window.setInterval(i,50))}),onPointerMove:E.composeEventHandlers(r.onPointerMove,()=>{u.onItemLeave?.(),n.current===null&&(n.current=window.setInterval(i,50))}),onPointerLeave:E.composeEventHandlers(r.onPointerLeave,()=>{c()})})}),Ot="SelectSeparator",Qe=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o;return d.jsx(_.Primitive.div,{"aria-hidden":!0,...i,ref:l})});Qe.displayName=Ot;const ye="SelectArrow",et=t.forwardRef((o,l)=>{const{__scopeSelect:e,...i}=o,r=ue(e),u=q(ye,e),n=F(ye,e);return u.open&&n.position==="popper"?d.jsx(ie.Arrow,{...r,...i,ref:l}):null});et.displayName=ye;function tt(o){return o===""||o===void 0}function ot(o){const l=ft.useCallbackRef(o),e=t.useRef(""),i=t.useRef(0),r=t.useCallback(n=>{const s=e.current+n;l(s),(function c(m){e.current=m,window.clearTimeout(i.current),m!==""&&(i.current=window.setTimeout(()=>c(""),1e3))})(s)},[l]),u=t.useCallback(()=>{e.current="",window.clearTimeout(i.current)},[]);return t.useEffect(()=>()=>window.clearTimeout(i.current),[]),[e,r,u]}function nt(o,l,e){const r=l.length>1&&Array.from(l).every(m=>m===l[0])?l[0]:l,u=e?o.indexOf(e):-1;let n=At(o,Math.max(u,0));r.length===1&&(n=n.filter(m=>m!==e));const c=n.find(m=>m.textValue.toLowerCase().startsWith(r.toLowerCase()));return c!==e?c:void 0}function At(o,l){return o.map((e,i)=>o[(l+i)%o.length])}const Dt=Ee,Lt=Re,Ht=be,jt=Ne,kt=_e,Vt=Oe,Bt=Ae,qt=De,Ft=Le;exports.Content=kt;exports.Icon=jt;exports.Item=Bt;exports.ItemIndicator=Ft;exports.ItemText=qt;exports.Root=Dt;exports.Select=Ee;exports.SelectArrow=et;exports.SelectContent=_e;exports.SelectGroup=Ke;exports.SelectIcon=Ne;exports.SelectItem=Ae;exports.SelectItemIndicator=Le;exports.SelectItemText=De;exports.SelectLabel=ze;exports.SelectScrollDownButton=$e;exports.SelectScrollUpButton=Ze;exports.SelectSeparator=Qe;exports.SelectTrigger=Re;exports.SelectValue=be;exports.SelectViewport=Oe;exports.Trigger=Lt;exports.Value=Ht;exports.Viewport=Vt;exports.createSelectScope=xt;
|
|
@@ -733,9 +733,9 @@ function $e(o) {
|
|
|
733
733
|
const i = st(o), e = t.useRef(""), l = t.useRef(0), r = t.useCallback(
|
|
734
734
|
(n) => {
|
|
735
735
|
const c = e.current + n;
|
|
736
|
-
i(c), function s(f) {
|
|
736
|
+
i(c), (function s(f) {
|
|
737
737
|
e.current = f, window.clearTimeout(l.current), f !== "" && (l.current = window.setTimeout(() => s(""), 1e3));
|
|
738
|
-
}(c);
|
|
738
|
+
})(c);
|
|
739
739
|
},
|
|
740
740
|
[i]
|
|
741
741
|
), d = t.useCallback(() => {
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { jsx as o, jsxs as f } from "react/jsx-runtime";
|
|
3
|
+
import { useState as i, useMemo as w, createContext as p, useContext as v } from "react";
|
|
4
4
|
import S from "./root.js";
|
|
5
5
|
import { useId as k } from "@radix-ui/react-id";
|
|
6
|
-
const c =
|
|
6
|
+
const c = p(void 0), y = () => v(c);
|
|
7
7
|
function I({
|
|
8
8
|
wrapperStyles: t = {},
|
|
9
9
|
children: s,
|
|
10
10
|
customStyles: d,
|
|
11
11
|
styles: u
|
|
12
12
|
}) {
|
|
13
|
-
const [n, l] = i(null), [r, h] = i(null), m =
|
|
13
|
+
const [n, l] = i(null), [r, h] = i(null), m = w(() => ({ shadowHost: n, rootElement: r }), [n, r]), x = k(), a = S.div;
|
|
14
14
|
return /* @__PURE__ */ f(
|
|
15
15
|
a,
|
|
16
16
|
{
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("../../hooks/use-inkeep-api-client.cjs");function r(t){const e=Number(t.code)||Number(t.statusCode);if(e&&!Number.isNaN(e))return e;try{const s=Number(JSON.parse(t.message??"").status);return s&&!Number.isNaN(s)?s:null}catch{return null}}function o(t){const e=r(t),s=n.parseAuthError(e??0,{detail:t.message??""});return s!==null?s:e===401?"session":null}function a(t){const e=r(t);return e===400||e===429}const u=`Hmm..
|
|
2
|
+
|
|
3
|
+
It seems I might be having some issues right now. Please clear the chat and try again.`,E="Please try again.",i="You're sending requests too quickly. Please wait a moment and try again.",c=8e3;exports.DEFAULT_ERROR_MESSAGE=u;exports.RATE_LIMIT_MESSAGE=i;exports.RECOVERABLE_FALLBACK_MESSAGE=E;exports.RECOVERABLE_NOTIFICATION_DURATION_MS=c;exports.isRecoverableError=a;exports.resolveHttpStatusCode=r;exports.resolveStreamingAuthError=o;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export interface ErrorWithCode extends Error {
|
|
2
|
+
code?: string | number;
|
|
3
|
+
statusCode?: number;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Extracts the HTTP status code from an AI SDK transport error.
|
|
7
|
+
*
|
|
8
|
+
* The status may live in error.code, error.statusCode, or inside a JSON-stringified
|
|
9
|
+
* error.message body ({ status: 400, ... }). Returns null if unparseable.
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveHttpStatusCode(error: Error): number | null;
|
|
12
|
+
/**
|
|
13
|
+
* Classifies a streaming-transport error as a PoW or session auth failure, or null.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveStreamingAuthError(error: Error): 'pow' | 'session' | null;
|
|
16
|
+
/**
|
|
17
|
+
* Recoverable errors are input-validation failures where the user can fix
|
|
18
|
+
* their input and retry without clearing the conversation.
|
|
19
|
+
*
|
|
20
|
+
* Allowlist approach: unknown/unparseable errors default to non-recoverable (blocking).
|
|
21
|
+
*/
|
|
22
|
+
export declare function isRecoverableError(error: Error): boolean;
|
|
23
|
+
export declare const DEFAULT_ERROR_MESSAGE = "Hmm.. \n\nIt seems I might be having some issues right now. Please clear the chat and try again.";
|
|
24
|
+
export declare const RECOVERABLE_FALLBACK_MESSAGE = "Please try again.";
|
|
25
|
+
export declare const RATE_LIMIT_MESSAGE = "You're sending requests too quickly. Please wait a moment and try again.";
|
|
26
|
+
export declare const RECOVERABLE_NOTIFICATION_DURATION_MS = 8000;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { parseAuthError as r } from "../../hooks/use-inkeep-api-client.js";
|
|
3
|
+
function n(t) {
|
|
4
|
+
const e = Number(t.code) || Number(t.statusCode);
|
|
5
|
+
if (e && !Number.isNaN(e)) return e;
|
|
6
|
+
try {
|
|
7
|
+
const s = Number(JSON.parse(t.message ?? "").status);
|
|
8
|
+
return s && !Number.isNaN(s) ? s : null;
|
|
9
|
+
} catch {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
function a(t) {
|
|
14
|
+
const e = n(t), s = r(e ?? 0, { detail: t.message ?? "" });
|
|
15
|
+
return s !== null ? s : e === 401 ? "session" : null;
|
|
16
|
+
}
|
|
17
|
+
function u(t) {
|
|
18
|
+
const e = n(t);
|
|
19
|
+
return e === 400 || e === 429;
|
|
20
|
+
}
|
|
21
|
+
const i = `Hmm..
|
|
22
|
+
|
|
23
|
+
It seems I might be having some issues right now. Please clear the chat and try again.`, c = "Please try again.", l = "You're sending requests too quickly. Please wait a moment and try again.", m = 8e3;
|
|
24
|
+
export {
|
|
25
|
+
i as DEFAULT_ERROR_MESSAGE,
|
|
26
|
+
l as RATE_LIMIT_MESSAGE,
|
|
27
|
+
c as RECOVERABLE_FALLBACK_MESSAGE,
|
|
28
|
+
m as RECOVERABLE_NOTIFICATION_DURATION_MS,
|
|
29
|
+
u as isRecoverableError,
|
|
30
|
+
n as resolveHttpStatusCode,
|
|
31
|
+
a as resolveStreamingAuthError
|
|
32
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),d=require("react"),E=require("../../atoms/icons/custom-icon.cjs"),g=require("../../providers/image-preview-provider.cjs"),k=require("../../providers/message-provider.cjs"),u=require("./chat-provider.cjs"),l=require("../../atoms/file-upload.cjs"),_=require("../../utils/misc.cjs"),c=require("../../utils/compose-event-handlers.cjs"),a=require("../factory.cjs"),M=require("../../providers/config-provider.cjs"),x={"application/pdf":"filePdf","text/plain":"fileText","text/markdown":"fileMarkdown","text/html":"fileHtml","text/csv":"fileCsv","text/x-log":"fileLog","application/json":"fileJson"};function F(e){return e.startsWith("image/")}const p={"image/png":[".png"],"image/jpeg":[".jpg",".jpeg"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/plain":[".txt"],"text/markdown":[".md"],"text/html":[".html"],"text/csv":[".csv"],"text/x-log":[".log"],"application/json":[".json"]},j=new Set(Object.keys(p)),T=Object.values(p).flat().join(", "),P=10,f=1024*1024*10,L=Object.entries(p).reduce((e,[i,t])=>{for(const n of t)e[n]=i;return e},{});function N(e){if(e.type)return e;const i=`.${e.name.split(".").pop()?.toLowerCase()}`,t=L[i];return t?new File([e],e.name,{type:t}):e}function w(e){if(!e.length)return null;const i=t=>e.some(n=>n.errors.includes(t));return i("TOO_MANY_FILES")?{title:"Attachment limit reached",message:`You can only attach up to ${P} files per message.`}:i("FILE_INVALID_TYPE")?{title:"Unsupported file type",message:`Only ${T} files are supported.`}:i("FILE_TOO_LARGE")?{title:"File too large",message:`Files must be smaller than ${f/1024/1024}MB.`}:i("FILE_EXISTS")?{title:"File already exists",message:`The file "${e.find(n=>n.errors.includes("FILE_EXISTS"))?.file.name??"file"}" is already attached to this message.`}:{title:"File rejected",message:"This file could not be added."}}const y=a.ikp("div",{_id:"aiChatMessage__Files"}),A=({children:e,...i})=>{const{message:t}=k.useMessage();if(t.role!=="user")return null;const n=(t.parts??[]).filter(s=>{if(s.type!=="file")return!1;const r=s.mediaType;return j.has(r??"")});return n.length?o.jsx(y,{...i,children:e(n)}):null},S=a.ikp("button",{_id:"aiChatMessage__File"}),U=({url:e,name:i,mediaType:t,onClick:n,...s})=>{const{openImagePreview:r}=g.useImagePreview(),[m,v]=d.useState(!0),h=d.useMemo(()=>new File([],i??"file",{type:t}),[i,t]);return o.jsx(b.Provider,{value:{file:h,objectUrl:e,isLoading:m,setIsLoading:v,onRemove:()=>{}},children:o.jsx(S,{type:"button","aria-label":F(t??"")?`Preview ${i??"file"}`:`Open ${i??"file"} in new tab`,"data-loading":_.dataAttr(m),onClick:c.composeEventHandlers(n,()=>{if(F(t??""))r({url:e,name:i??"file"});else if(e)if(e.startsWith("data:")){const I=document.createElement("a");I.href=e,I.download=i??"file",I.click()}else window.open(e,"_blank","noopener,noreferrer")}),...s})})},R=a.ikp("div",{_id:"aiChatInput__Fieldset"}),O=e=>{const i=l.useFileUploadApi();return o.jsx(R,{...i.getDropzoneProps({disableClick:!0}),"data-drag-over":_.dataAttr(i.dragging),...e})},D=({...e})=>{const{files:i,setFiles:t,showInputNotification:n}=u.useChat();return o.jsx(l.FileUploadRoot,{accept:p,maxFiles:P,maxFileSize:f,preventDocumentDrop:!0,acceptedFiles:i,onFileAccept:s=>t(s.files),onFileReject:s=>{const r=w(s.files);r&&n(r)},children:o.jsx(O,{...e})})},H=a.ikp("div",{_id:"aiChatInput__DropZone"}),q=a.ikp("div",{_id:"aiChatInput__Notification"}),X=e=>{const{inputNotification:i}=u.useChat();return i?o.jsx(q,{role:"alert",...e}):null},B=a.ikp("p",{_id:"aiChatInput__NotificationTitle"}),$=e=>{const{inputNotification:i}=u.useChat();return i?.title?o.jsx(B,{...e,children:i.title}):null},Y=a.ikp("p",{_id:"aiChatInput__NotificationMessage"}),Z=e=>{const{inputNotification:i}=u.useChat();return o.jsx(Y,{...e,children:i?.message})},z=a.ikp("button",{_id:"aiChatInput__NotificationClose"}),K=({onClick:e,...i})=>{const{clearInputNotification:t}=u.useChat();return o.jsx(z,{type:"button","aria-label":"Dismiss",onClick:c.composeEventHandlers(e,t),...i})},V=a.ikp("div",{_id:"aiChatInput__NotificationContent"}),W=a.ikp("div",{_id:"aiChatInput__NotificationHeader"}),G=a.ikp(E.CustomIcon,{_id:"aiChatInput__FileUploadButtonIcon",iconKey:"fileUpload"}),J=a.ikp("button",{_id:"aiChatInput__FileUploadButton"}),Q=e=>{const{aiChatSettings:i}=M.useInkeepConfig(),t=l.useFileUploadApi(),{onClick:n,...s}=e;return o.jsx(J,{type:"button","aria-label":"Upload file",disabled:i.isViewOnly,onClick:c.composeEventHandlers(n,()=>t.openFilePicker()),...s})},ee=a.ikp("input",{_id:"aiChatInput__FileInput"}),ie=e=>{const i=l.useFileUploadApi();return o.jsx(ee,{...e,...i.getHiddenInputProps()})},te=a.ikp("div",{_id:"aiChatInput__FileList"}),ne=({children:e,...i})=>{const n=l.useFileUploadApi().acceptedFiles;return n.length?o.jsx(te,{...i,children:e(n)}):null},b=d.createContext(null);function C(){const e=d.useContext(b);if(!e)throw new Error("useFileContext must be used within EmbeddedChatPrimitiveFileItem");return e}const oe=a.ikp("div",{_id:"aiChatInput__FileItem"}),ae=({file:e,...i})=>{const t=l.useFileUploadApi(),[n,s]=d.useState(void 0),[r,m]=d.useState(!0);d.useEffect(()=>t.createFileUrl(e,h=>{s(h),m(!0)}),[e]);const v=()=>t.deleteFile(e);return o.jsx(b.Provider,{value:{file:e,objectUrl:n,isLoading:r,setIsLoading:m,onRemove:v},children:o.jsx(oe,{"data-loading":_.dataAttr(r),...i})})},se=a.ikp("button",{_id:"aiChatInput__FilePreviewTrigger"}),re=({onClick:e,...i})=>{const{objectUrl:t,file:n}=C(),{openImagePreview:s}=g.useImagePreview();return o.jsx(se,{type:"button","aria-label":`Preview ${n.name}`,disabled:!t,onClick:c.composeEventHandlers(e,()=>{t&&s({url:t,name:n.name})}),...i})},de=a.ikp("span",{_id:"aiChatInput__FileContent"}),le=e=>o.jsx(de,{...e}),ce=a.ikp("img",{_id:"aiChatInput__FileThumbnail"}),me=({onLoad:e,...i})=>{const{objectUrl:t,file:n,setIsLoading:s}=C();return o.jsx(ce,{src:t,alt:n.name,onLoad:c.composeEventHandlers(e,()=>s(!1)),...i})},ue=({className:e})=>{const{file:i}=C(),t=x[N(i).type]??"fileText";return o.jsx(E.CustomIcon,{iconKey:t,className:e})},pe=a.ikp("span",{_id:"aiChatInput__FileName"}),Ce=e=>{const{file:i}=C();return o.jsx(pe,{...e,children:i.name})},ve=a.ikp("button",{_id:"aiChatInput__FileRemove"}),he=a.ikp(E.CustomIcon,{_id:"aiChatInput__FileRemoveIcon",iconKey:"close"}),Ie=({onClick:e,...i})=>{const{onRemove:t}=C();return o.jsx(ve,{type:"button","aria-label":"Remove file",onClick:c.composeEventHandlers(e,t),...i})};exports.ACCEPTED_FILE_EXTENSIONS=T;exports.ACCEPTED_FILE_MIME_TYPES=j;exports.EmbeddedChatPrimitiveDropZone=H;exports.EmbeddedChatPrimitiveFileContent=le;exports.EmbeddedChatPrimitiveFileInput=ie;exports.EmbeddedChatPrimitiveFileItem=ae;exports.EmbeddedChatPrimitiveFileList=ne;exports.EmbeddedChatPrimitiveFileName=Ce;exports.EmbeddedChatPrimitiveFilePreviewTrigger=re;exports.EmbeddedChatPrimitiveFileRemove=Ie;exports.EmbeddedChatPrimitiveFileRemoveIcon=he;exports.EmbeddedChatPrimitiveFileThumbnail=me;exports.EmbeddedChatPrimitiveFileTypeIcon=ue;exports.EmbeddedChatPrimitiveFileUploadButton=Q;exports.EmbeddedChatPrimitiveFileUploadButtonIcon=G;exports.EmbeddedChatPrimitiveInputFieldset=D;exports.EmbeddedChatPrimitiveInputNotification=X;exports.EmbeddedChatPrimitiveInputNotificationClose=K;exports.EmbeddedChatPrimitiveInputNotificationContent=V;exports.EmbeddedChatPrimitiveInputNotificationHeader=W;exports.EmbeddedChatPrimitiveInputNotificationMessage=Z;exports.EmbeddedChatPrimitiveInputNotificationTitle=$;exports.EmbeddedChatPrimitiveMessageFile=U;exports.EmbeddedChatPrimitiveMessageFiles=A;exports.FILE_ACCEPT_MAP=p;exports.FILE_TYPE_ICON_MAP=x;exports.MAX_FILES=P;exports.MAX_FILE_SIZE=f;exports.isImageMimeType=F;exports.normalizeFileType=N;
|
|
1
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),r=require("react"),b=require("../../atoms/icons/custom-icon.cjs"),_=require("../../providers/image-preview-provider.cjs"),y=require("../../providers/message-provider.cjs"),m=require("./chat-provider.cjs"),p=require("../../atoms/file-upload.cjs"),g=require("../../utils/misc.cjs"),c=require("../../utils/compose-event-handlers.cjs"),o=require("../factory.cjs"),w=require("../../providers/config-provider.cjs"),E={"application/pdf":"filePdf","text/plain":"fileText","text/markdown":"fileMarkdown","text/html":"fileHtml","text/csv":"fileCsv","text/x-log":"fileLog","application/json":"fileJson","text/x-sql":"fileSql","application/x-sql":"fileSql","text/x-script.python":"filePy","text/x-python":"filePy","text/x-python-script":"filePy"};function C(t){return t.startsWith("image/")}const u={"image/png":[".png"],"image/jpeg":[".jpg",".jpeg"],"image/webp":[".webp"],"application/pdf":[".pdf"],"text/plain":[".txt",".text",".bat",".cfg",".conf",".def",".dic",".in",".list"],"text/x-log":[".log"],"text/markdown":[".md",".markdown"],"text/html":[".html",".htm"],"text/csv":[".csv"],"text/xml":[".xml"],"text/css":[".css"],"application/json":[".json"],"application/yaml":[".yaml",".yml"],"application/x-yaml":[".yaml",".yml"],"text/x-yaml":[".yaml",".yml"],"application/toml":[".toml"],"application/x-toml":[".toml"],"application/graphql":[".graphql",".gql"],"application/x-graphql":[".graphql",".gql"],"text/x-graphql":[".graphql",".gql"],"application/x-ndjson":[".ndjson"],"application/json5":[".json5"],"application/x-json5":[".json5"],"application/javascript":[".js",".mjs"],"text/javascript":[".js",".mjs"],"application/typescript":[".ts"],"text/x-typescript":[".ts"],"text/jsx":[".jsx"],"text/tsx":[".tsx"],"text/x-sh":[".sh"],"text/x-bash":[".bash"],"application/x-bash":[".bash"],"text/x-zsh":[".zsh"],"text/x-shellscript":[".sh",".ksh"],"application/x-powershell":[".ps1"],"text/vbscript":[".vbs"],"text/x-awk":[".awk"],"application/x-awk":[".awk"],"text/x-c":[".c",".h"],"text/x-c++":[".cpp",".cc",".cxx",".hh"],"text/x-csharp":[".cs"],"text/x-objectivec":[".m"],"text/x-objectivec++":[".mm"],"text/x-java":[".java"],"text/x-scala":[".scala"],"application/x-scala":[".scala"],"text/x-kotlin":[".kt"],"text/x-groovy":[".groovy"],"text/x-clojure":[".clj"],"text/x-go":[".go"],"text/x-golang":[".go"],"text/x-rust":[".rs"],"application/x-rust":[".rs"],"text/x-swift":[".swift"],"text/x-dart":[".dart"],"text/x-python":[".py"],"text/x-script.python":[".py"],"text/x-python-script":[".py"],"text/x-ruby":[".rb"],"text/x-perl":[".pl"],"text/x-lua":[".lua"],"text/x-r":[".r"],"text/x-R":[".r"],"text/x-julia":[".jl"],"text/x-elixir":[".ex"],"text/x-erlang":[".erl"],"text/x-haskell":[".hs"],"text/x-lisp":[".lisp"],"text/x-php":[".php"],"application/x-php":[".php"],"application/x-httpd-php":[".php"],"application/x-httpd-php-source":[".php"],"text/x-tex":[".tex"],"text/x-rst":[".rst"],"text/x-handlebars":[".hbs"],"text/x-mustache":[".mustache"],"text/x-ejs":[".ejs"],"text/x-jinja2":[".jinja",".jinja2"],"text/x-liquid":[".liquid"],"text/x-erb":[".erb"],"text/x-twig":[".twig"],"text/x-pug":[".pug"],"text/x-jade":[".jade"],"text/x-tmpl":[".tmpl"],"text/x-astro":[".astro"],"text/x-sass":[".sass"],"text/x-scss":[".scss"],"text/x-less":[".less"],"text/x-sql":[".sql"],"application/x-sql":[".sql"],"text/x-makefile":[".makefile",".mk"],"text/x-cmake":[".cmake"],"text/x-dockerfile":[".dockerfile"],"text/x-gradle":[".gradle"],"text/x-ini":[".ini"],"text/x-properties":[".properties"],"text/x-protobuf":[".proto"],"application/x-protobuf":[".proto"],"text/x-hcl":[".hcl"],"text/x-terraform":[".tf"],"application/x-terraform":[".tf"],"text/x-diff":[".diff"],"text/x-patch":[".patch"],"application/x-patch":[".patch"],"text/x-asm":[".asm",".s"],"message/rfc822":[".eml",".mht",".mhtml",".mime",".nws"],"text/srt":[".srt"],"application/x-subrip":[".srt"],"text/x-subrip":[".srt"],"text/vtt":[".vtt"],"text/x-vcard":[".vcf"],"text/calendar":[".ics",".ifb"],"application/vnd.openxmlformats-officedocument.wordprocessingml.document":[".docx"],"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":[".xlsx"],"application/vnd.openxmlformats-officedocument.presentationml.presentation":[".pptx"],"application/vnd.oasis.opendocument.text":[".odt"],"application/vnd.oasis.opendocument.spreadsheet":[".ods"],"application/vnd.oasis.opendocument.presentation":[".odp"],"application/vnd.apple.pages":[".pages"],"application/vnd.apple.numbers":[".numbers"],"application/vnd.apple.keynote":[".key"],"application/x-iwork-pages-sffpages":[".pages"],"application/x-iwork-numbers-sffnumbers":[".numbers"],"application/x-iwork-keynote-sffkey":[".key"]},j=new Set(Object.keys(u)),F=10,I=1024*1024*10,N=Object.entries(u).reduce((t,[e,i])=>{for(const n of i)t[n]=e;return t},{});function k(t){if(t.type)return t;const e=`.${t.name.split(".").pop()?.toLowerCase()}`,i=N[e];return i?new File([t],t.name,{type:i}):t}function T(t){if(!t.length)return null;const e=i=>t.some(n=>n.errors.includes(i));return e("TOO_MANY_FILES")?{title:"Attachment limit reached",message:`You can only attach up to ${F} files per message.`}:e("FILE_INVALID_TYPE")?{title:"Unsupported file type",message:"Supported formats include images, PDFs, text, code, and document files."}:e("FILE_TOO_LARGE")?{title:"File too large",message:`Files must be smaller than ${I/1024/1024}MB.`}:e("FILE_EXISTS")?{title:"File already exists",message:`The file "${t.find(n=>n.errors.includes("FILE_EXISTS"))?.file.name??"file"}" is already attached to this message.`}:{title:"File rejected",message:"This file could not be added."}}const M=o.ikp("div",{_id:"aiChatMessage__Files"}),q=({children:t,...e})=>{const{message:i}=y.useMessage();if(i.role!=="user")return null;const n=(i.parts??[]).filter(s=>{if(s.type!=="file")return!1;const l=s.mediaType;return j.has(l??"")});return n.length?a.jsx(M,{...e,children:t(n)}):null},L=o.ikp("button",{_id:"aiChatMessage__File"}),A=({url:t,name:e,mediaType:i,onClick:n,...s})=>{const{openImagePreview:l}=_.useImagePreview(),[d,h]=r.useState(!0),f=r.useMemo(()=>new File([],e??"file",{type:i}),[e,i]);return a.jsx(P.Provider,{value:{file:f,objectUrl:t,isLoading:d,setIsLoading:h,onRemove:()=>{}},children:a.jsx(L,{type:"button","aria-label":C(i??"")?`Preview ${e??"file"}`:`Open ${e??"file"} in new tab`,"data-loading":g.dataAttr(d),onClick:c.composeEventHandlers(n,()=>{if(C(i??""))l({url:t,name:e??"file"});else if(t)if(t.startsWith("data:")){const v=document.createElement("a");v.href=t,v.download=e??"file",v.click()}else window.open(t,"_blank","noopener,noreferrer")}),...s})})},U=o.ikp("div",{_id:"aiChatInput__Fieldset"}),S=t=>{const e=p.useFileUploadApi();return a.jsx(U,{...e.getDropzoneProps({disableClick:!0}),"data-drag-over":g.dataAttr(e.dragging),...t})},R=({...t})=>{const{files:e,setFiles:i,showInputNotification:n}=m.useChat();return a.jsx(p.FileUploadRoot,{accept:u,maxFiles:F,maxFileSize:I,preventDocumentDrop:!0,acceptedFiles:e,onFileAccept:s=>i(s.files),onFileReject:s=>{const l=T(s.files);l&&n(l)},children:a.jsx(S,{...t})})},O=o.ikp("div",{_id:"aiChatInput__DropZone"}),H=o.ikp("div",{_id:"aiChatInput__Notification"}),D=t=>{const{inputNotification:e}=m.useChat();return e?a.jsx(H,{role:"alert",...t}):null},B=o.ikp("p",{_id:"aiChatInput__NotificationTitle"}),X=({children:t,...e})=>{const{inputNotification:i}=m.useChat();return i?.title?a.jsxs(B,{...e,children:[t,i.title]}):null},Y=o.ikp("p",{_id:"aiChatInput__NotificationMessage"}),$=t=>{const{inputNotification:e}=m.useChat();return a.jsx(Y,{...t,children:e?.message})},z=o.ikp("button",{_id:"aiChatInput__NotificationClose"}),Z=({onClick:t,...e})=>{const{clearInputNotification:i}=m.useChat();return a.jsx(z,{type:"button","aria-label":"Dismiss",onClick:c.composeEventHandlers(t,i),...e})},K=o.ikp("div",{_id:"aiChatInput__NotificationContent"}),V=o.ikp("div",{_id:"aiChatInput__NotificationHeader"}),W=o.ikp(b.CustomIcon,{_id:"aiChatInput__FileUploadButtonIcon",iconKey:"fileUpload"}),G=o.ikp("button",{_id:"aiChatInput__FileUploadButton"}),J=t=>{const{aiChatSettings:e}=w.useInkeepConfig(),i=p.useFileUploadApi(),{onClick:n,...s}=t;return a.jsx(G,{type:"button","aria-label":"Upload file",disabled:e.isViewOnly,onClick:c.composeEventHandlers(n,()=>i.openFilePicker()),...s})},Q=o.ikp("input",{_id:"aiChatInput__FileInput"}),tt=t=>{const e=p.useFileUploadApi();return a.jsx(Q,{...t,...e.getHiddenInputProps()})},et=o.ikp("div",{_id:"aiChatInput__FileList"}),it=({children:t,...e})=>{const n=p.useFileUploadApi().acceptedFiles;return n.length?a.jsx(et,{...e,children:t(n)}):null},P=r.createContext(null);function x(){const t=r.useContext(P);if(!t)throw new Error("useFileContext must be used within EmbeddedChatPrimitiveFileItem");return t}const nt=o.ikp("div",{_id:"aiChatInput__FileItem"}),at=({file:t,...e})=>{const i=p.useFileUploadApi(),[n,s]=r.useState(void 0),[l,d]=r.useState(!0);r.useEffect(()=>i.createFileUrl(t,f=>{s(f),d(!0)}),[t]);const h=()=>i.deleteFile(t);return a.jsx(P.Provider,{value:{file:t,objectUrl:n,isLoading:l,setIsLoading:d,onRemove:h},children:a.jsx(nt,{"data-loading":g.dataAttr(l),...e})})},ot=o.ikp("button",{_id:"aiChatInput__FilePreviewTrigger"}),st=({onClick:t,...e})=>{const{objectUrl:i,file:n}=x(),{openImagePreview:s}=_.useImagePreview();return a.jsx(ot,{type:"button","aria-label":`Preview ${n.name}`,disabled:!i,onClick:c.composeEventHandlers(t,()=>{i&&s({url:i,name:n.name})}),...e})},lt=o.ikp("span",{_id:"aiChatInput__FileContent"}),rt=t=>a.jsx(lt,{...t}),pt=o.ikp("img",{_id:"aiChatInput__FileThumbnail"}),ct=({onLoad:t,...e})=>{const{objectUrl:i,file:n,setIsLoading:s}=x();return a.jsx(pt,{src:i,alt:n.name,onLoad:c.composeEventHandlers(t,()=>s(!1)),...e})},dt=({className:t})=>{const{file:e}=x(),i=E[k(e).type]??"file";return a.jsx(b.CustomIcon,{iconKey:i,className:t})},mt=o.ikp("span",{_id:"aiChatInput__FileName"}),xt=t=>{const{file:e}=x();return a.jsx(mt,{...t,children:e.name})},ut=o.ikp("button",{_id:"aiChatInput__FileRemove"}),ht=o.ikp(b.CustomIcon,{_id:"aiChatInput__FileRemoveIcon",iconKey:"close"}),ft=({onClick:t,...e})=>{const{onRemove:i}=x();return a.jsx(ut,{type:"button","aria-label":"Remove file",onClick:c.composeEventHandlers(t,i),...e})};exports.ACCEPTED_FILE_MIME_TYPES=j;exports.EmbeddedChatPrimitiveDropZone=O;exports.EmbeddedChatPrimitiveFileContent=rt;exports.EmbeddedChatPrimitiveFileInput=tt;exports.EmbeddedChatPrimitiveFileItem=at;exports.EmbeddedChatPrimitiveFileList=it;exports.EmbeddedChatPrimitiveFileName=xt;exports.EmbeddedChatPrimitiveFilePreviewTrigger=st;exports.EmbeddedChatPrimitiveFileRemove=ft;exports.EmbeddedChatPrimitiveFileRemoveIcon=ht;exports.EmbeddedChatPrimitiveFileThumbnail=ct;exports.EmbeddedChatPrimitiveFileTypeIcon=dt;exports.EmbeddedChatPrimitiveFileUploadButton=J;exports.EmbeddedChatPrimitiveFileUploadButtonIcon=W;exports.EmbeddedChatPrimitiveInputFieldset=R;exports.EmbeddedChatPrimitiveInputNotification=D;exports.EmbeddedChatPrimitiveInputNotificationClose=Z;exports.EmbeddedChatPrimitiveInputNotificationContent=K;exports.EmbeddedChatPrimitiveInputNotificationHeader=V;exports.EmbeddedChatPrimitiveInputNotificationMessage=$;exports.EmbeddedChatPrimitiveInputNotificationTitle=X;exports.EmbeddedChatPrimitiveMessageFile=A;exports.EmbeddedChatPrimitiveMessageFiles=q;exports.FILE_ACCEPT_MAP=u;exports.FILE_TYPE_ICON_MAP=E;exports.MAX_FILES=F;exports.MAX_FILE_SIZE=I;exports.isImageMimeType=C;exports.normalizeFileType=k;
|
|
@@ -7,7 +7,6 @@ export declare const FILE_TYPE_ICON_MAP: Partial<Record<keyof typeof FILE_ACCEPT
|
|
|
7
7
|
export declare function isImageMimeType(mimeType: string): boolean;
|
|
8
8
|
export declare const FILE_ACCEPT_MAP: Record<string, string[]>;
|
|
9
9
|
export declare const ACCEPTED_FILE_MIME_TYPES: Set<string>;
|
|
10
|
-
export declare const ACCEPTED_FILE_EXTENSIONS: string;
|
|
11
10
|
export declare const MAX_FILES = 10;
|
|
12
11
|
export declare const MAX_FILE_SIZE: number;
|
|
13
12
|
export declare function normalizeFileType(file: File): File;
|
|
@@ -29,7 +28,7 @@ export declare const EmbeddedChatPrimitiveDropZone: React.ForwardRefExoticCompon
|
|
|
29
28
|
declare const PrimitiveInputNotification: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "_id">>>;
|
|
30
29
|
export declare const EmbeddedChatPrimitiveInputNotification: (props: ComponentPropsWithRef<typeof PrimitiveInputNotification>) => import("react/jsx-runtime").JSX.Element | null;
|
|
31
30
|
declare const PrimitiveInputNotificationTitle: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id">>>;
|
|
32
|
-
export declare const EmbeddedChatPrimitiveInputNotificationTitle: (props: ComponentPropsWithRef<typeof PrimitiveInputNotificationTitle>) => import("react/jsx-runtime").JSX.Element | null;
|
|
31
|
+
export declare const EmbeddedChatPrimitiveInputNotificationTitle: ({ children, ...props }: ComponentPropsWithRef<typeof PrimitiveInputNotificationTitle>) => import("react/jsx-runtime").JSX.Element | null;
|
|
33
32
|
declare const PrimitiveInputNotificationMessage: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLParagraphElement>, HTMLParagraphElement>, "_id">>>;
|
|
34
33
|
export declare const EmbeddedChatPrimitiveInputNotificationMessage: (props: ComponentPropsWithRef<typeof PrimitiveInputNotificationMessage>) => import("react/jsx-runtime").JSX.Element;
|
|
35
34
|
declare const PrimitiveInputNotificationClose: React.ForwardRefExoticComponent< PolymorphicProps & Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "_id"> & Partial<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "_id">>>;
|