@kitn.ai/ui
Version:
Framework-agnostic, Shadow-DOM web components for building AI chat interfaces — works in React, Vue, Angular, Svelte, or plain HTML. Authored in SolidJS.
2 lines (1 loc) • 7.19 kB
JavaScript
import{s as F,c as j,k as E,m as M,i as N,w as te,g as H,a as ne,b as ie,d as re,S as le,t as P,v as ae,e as oe}from"./define-CNSKFZCd.js";import{c as B}from"./cn-CU7UAWzk.js";var T=P("<div>"),se=P('<div><svg viewBox="0 0 4 8"fill=currentColor><circle cx=1 cy=1.5 r=0.6></circle><circle cx=3 cy=1.5 r=0.6></circle><circle cx=1 cy=4 r=0.6></circle><circle cx=3 cy=4 r=0.6></circle><circle cx=1 cy=6.5 r=0.6></circle><circle cx=3 cy=6.5 r=0.6>'),ce=P("<div role=separator aria-valuemin=0 aria-valuemax=100>");const I=ae();function G(a){if(a==null||a==="")return;if(typeof a=="number")return Number.isFinite(a)?`${a}%`:void 0;const t=a.trim();if(t==="")return;if(t.endsWith("%")||t.endsWith("px"))return t;const o=Number(t);return Number.isFinite(o)?`${o}%`:void 0}function A(a){const t=/^\s*(-?\d*\.?\d+)(px|%)\s*$/.exec(a);return t?{n:parseFloat(t[1]),unit:t[2]}:null}function X(a,t,o){if(a===void 0)return;const u=A(a),d=t===void 0?void 0:A(t),x=o===void 0?void 0:A(o);if(u&&(t===void 0||d?.unit===u.unit)&&(o===void 0||x?.unit===u.unit)){let i=u.n;return x&&(i=Math.min(i,x.n)),d&&(i=Math.max(i,d.n)),`${i}${u.unit}`}return t!==void 0&&o!==void 0?`clamp(${t}, ${a}, ${o})`:o!==void 0?`min(${a}, ${o})`:t!==void 0?`max(${t}, ${a})`:a}function ue(a){const[t,o]=F(a,["orientation","children","class"]),u=()=>t.orientation??"horizontal";return j(I.Provider,{get value(){return{orientation:u()}},get children(){var d=T();return E(d,M({get class(){return B("flex h-full w-full",u()==="vertical"?"flex-col":"flex-row",t.class)},get"data-orientation"(){return u()}},o),!1,!0),N(d,()=>t.children),d}})}function de(a){const[t,o]=F(a,["defaultSize","minSize","maxSize","locked","hidden","children","class","style"]),u=(i,m,g)=>{const n=G(i);if(n!==void 0)return n;const l=m==null?"":String(m).trim();if(l!==""){const h=parseFloat(l);if(Number.isFinite(h))return`${h}px`}const f=g==null?"":String(g).trim();if(f!==""){const h=parseFloat(f);if(Number.isFinite(h))return`${h}%`}},d=()=>{const i=o,m=u(t.minSize,i["data-min-size"],i["data-min-size-pct"]),g=u(t.maxSize,i["data-max-size"],i["data-max-size-pct"]),n=X(G(t.defaultSize),m,g);return{...n!==void 0?{"flex-basis":n,"flex-grow":"0","flex-shrink":"0"}:{flex:"1 1 0%"},display:"grid","grid-template-rows":"minmax(0, 1fr)","grid-template-columns":"minmax(0, 1fr)","min-width":"0","min-height":"0"}},x=()=>{const i={},m=(g,n,l)=>{if(g==null||g==="")return;if(typeof g=="number"){i[l]=String(g);return}const f=g.trim();f.endsWith("px")?i[n]=String(parseFloat(f)):f.endsWith("%")?i[l]=String(parseFloat(f)):Number.isFinite(Number(f))&&(i[l]=f)};return m(t.minSize,"data-min-size","data-min-size-pct"),m(t.maxSize,"data-max-size","data-max-size-pct"),m(t.defaultSize,"data-default-size","data-default-size-pct"),i};return(()=>{var i=T();return E(i,M({get class(){return B("overflow-hidden",t.class)},get style(){return{...d(),...typeof t.style=="object"?t.style:{}}},get"data-locked"(){return t.locked?"":void 0},get hidden(){return t.hidden||void 0}},x,o),!1,!0),N(i,()=>t.children),i})()}function k(a,t,o,u){const d=a.dataset[t==="min"?"minSize":"maxSize"];if(d!==void 0&&d!==""){const i=parseFloat(d);if(Number.isFinite(i))return i}const x=a.dataset[t==="min"?"minSizePct":"maxSizePct"];if(x!==void 0&&x!==""){const i=parseFloat(x);if(Number.isFinite(i))return i/100*o}return u}function fe(a){const[t,o]=F(a,["withHandle","onPanelResize","class","keyboardStep","static","orientation"]),u=te(I),d=()=>t.orientation??u?.orientation??"horizontal",[x,i]=H(!1),m=()=>!!t.static;let g=0,n=null,l=null,f=0,h=0;const S=()=>d()==="horizontal",v=()=>S()?"width":"height",Y=e=>{if(m())return;const r=e.currentTarget;n=r.previousElementSibling,l=r.nextElementSibling,!(!n||!l)&&(e.preventDefault(),i(!0),r.setPointerCapture(e.pointerId),g=S()?e.clientX:e.clientY,f=n.getBoundingClientRect()[v()],h=l.getBoundingClientRect()[v()])},L=e=>{if(!x()||!n||!l)return;const r=(S()?e.clientX:e.clientY)-g;R(r)};function R(e){var r;if(!n||!l)return!1;const s=n.parentElement,c=s?s.getBoundingClientRect()[v()]:0,w=k(n,"min",c,0),b=k(n,"max",c,999999),z=k(l,"min",c,0),$=k(l,"max",c,999999);let p=-1/0,y=1/0;if(p=Math.max(p,w-f),y=Math.min(y,b-f),p=Math.max(p,h-$),y=Math.min(y,h-z),p>y)return!1;const C=Math.max(p,Math.min(y,e)),_=f+C,ee=h-C;return n.style.flexBasis=`${_}px`,n.style.flexGrow="0",n.style.flexShrink="0",l.style.flexBasis=`${ee}px`,l.style.flexGrow="0",l.style.flexShrink="0",(r=t.onPanelResize)==null||r.call(t,C),!0}function D(){if(!n||!l)return;const e=n.parentElement;if(!e)return;const r=e.getBoundingClientRect()[v()];if(r<=0)return;const s=n.getBoundingClientRect()[v()]/r*100,c=l.getBoundingClientRect()[v()]/r*100;n.style.flexBasis=`${s}%`,l.style.flexBasis=`${c}%`}const U=()=>{D(),i(!1),n=null,l=null};function W(e){const r=e.dataset.defaultSize,s=e.dataset.defaultSizePct;r!==void 0&&r!==""?(e.style.flexBasis=`${r}px`,e.style.flexGrow="0",e.style.flexShrink="0"):s!==void 0&&s!==""?(e.style.flexBasis=`${s}%`,e.style.flexGrow="0",e.style.flexShrink="0"):(e.style.flexBasis="",e.style.flexGrow="1",e.style.flexShrink="1")}const q=e=>{var r;if(m())return;const s=e.currentTarget,c=s.previousElementSibling,w=s.nextElementSibling;!c||!w||(e.preventDefault(),W(c),W(w),(r=t.onPanelResize)==null||r.call(t,0))},J=H(50),[K,O]=J;function Q(e){return n=e.previousElementSibling,l=e.nextElementSibling,!n||!l?!1:(f=n.getBoundingClientRect()[v()],h=l.getBoundingClientRect()[v()],!0)}function V(){if(!n)return;const e=n.parentElement;if(!e)return;const r=e.getBoundingClientRect()[v()];if(r<=0)return;const s=n.getBoundingClientRect()[v()]/r*100;O(Math.round(s))}const Z=e=>{if(m())return;const r=e.currentTarget,s=t.keyboardStep??16,c=S(),w=c?"ArrowLeft":"ArrowUp",b=c?"ArrowRight":"ArrowDown";let z=null;if(e.key===w)z=-s;else if(e.key===b)z=s;else if(e.key==="Home")z="min";else if(e.key==="End")z="max";else return;if(e.preventDefault(),!!Q(r)){if(z==="min"){const $=n.parentElement,p=$?$.getBoundingClientRect()[v()]:0,y=k(n,"min",p,0);R(y-f)}else if(z==="max"){const $=n.parentElement,p=$?$.getBoundingClientRect()[v()]:0,y=k(n,"max",p,999999);R(y-f)}else R(z);V(),D(),n=null,l=null}};return(()=>{var e=ce();return e.$$keydown=Z,e.$$dblclick=q,e.$$pointerup=U,e.$$pointermove=L,e.$$pointerdown=Y,E(e,M({get class(){return B("relative flex items-center justify-center",t.class)},get style(){return{cursor:m()?"default":S()?"col-resize":"row-resize",[S()?"width":"height"]:"8px",background:x()?"var(--color-muted-foreground, #98989f)":"transparent",opacity:x()?"0.3":"1"}},get tabIndex(){return m()?void 0:0},get"data-orientation"(){return d()},get"data-static"(){return m()?"":void 0},get"aria-orientation"(){return S()?"vertical":"horizontal"},get"aria-valuenow"(){return K()}},o),!1,!0),N(e,j(le,{get when(){return t.withHandle},get children(){var r=se(),s=r.firstChild;return ne(c=>{var w=B("z-10 flex items-center justify-center",S()?"h-6 w-3 flex-col":"h-3 w-6 flex-row"),b=B("text-muted-foreground/40",S()?"h-3 w-2":"h-2 w-3 rotate-90");return w!==c.e&&ie(r,c.e=w),b!==c.t&&re(s,"class",c.t=b),c},{e:void 0,t:void 0}),r}})),e})()}oe(["pointerdown","pointermove","pointerup","dblclick","keydown"]);export{ue as R,de as a,fe as b,X as c,G as n};