@wpic/ui 0.8.6 → 0.8.7
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/CHANGELOG.md +4 -0
- package/dist/wpic-ui.cjs +1 -1
- package/dist/wpic-ui.js +3 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## 0.8.7
|
|
2
|
+
|
|
3
|
+
- Increase WTable header vertical padding from 8px to 12px per side (4px to 6px in compact mode), including selection and expansion columns.
|
|
4
|
+
|
|
1
5
|
## 0.8.6
|
|
2
6
|
|
|
3
7
|
- Size WInput leading text padding from the rendered prefix, including translated and dynamically changed prefixes.
|
package/dist/wpic-ui.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),g=require("lucide-vue-next"),n1=require("@floating-ui/vue"),s0=require("pinia");var A1=typeof document<"u"?document.currentScript:null;const d0={key:0,class:"absolute inset-0 flex items-center justify-center rounded-[inherit]","aria-hidden":"true"},F1=e.defineComponent({__name:"WButton",props:{variant:{},size:{},loading:{type:Boolean},disabled:{type:Boolean},active:{type:Boolean},icon:{type:[Object,Function]},href:{}},emits:["click"],setup(n,{emit:d}){const t=n,o=d;return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":"button"),{href:n.href,disabled:n.disabled||n.loading,"data-variant":t.variant??"primary","data-size":t.size??"md","data-active":n.active?"true":void 0,onClick:l[0]||(l[0]=a=>o("click",a)),class:e.normalizeClass(["wpic-button","relative inline-flex items-center justify-center font-medium transition-all duration-150 cursor-pointer select-none","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/50 focus-visible:ring-offset-1","active:scale-[0.98]",n.disabled||n.loading?"opacity-40 cursor-not-allowed pointer-events-none":"",n.active?"wpic-button--active":"",(t.size??"md")==="sm"?"h-8 touch-manipulation px-2.5 gap-1.5 rounded-md text-sm":"",(t.size??"md")==="md"?(t.variant==="subtle"?"h-11":"h-9")+" px-3.5 gap-2 rounded-lg":"",(t.size??"md")==="lg"?(t.variant==="subtle"?"h-12":"h-11")+" px-4 gap-2 rounded-lg":"",(t.size??"md")==="xs"?"h-5 w-5 p-0 rounded-full text-xs":"",(t.variant??"primary")==="primary"?"wpic-btn-primary text-white":"",(t.variant??"primary")==="secondary"?"bg-zinc-100 hover:bg-zinc-200 text-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-zinc-200":"",(t.variant??"primary")==="subtle"?"bg-zinc-100 border border-zinc-100 hover:bg-zinc-200/70 text-zinc-700 dark:bg-zinc-800 dark:border-zinc-800 dark:hover:bg-zinc-700 dark:text-zinc-200":"",(t.variant??"primary")==="destructive"?"bg-red-500 hover:bg-red-600 text-white":"",(t.variant??"primary")==="ghost"?"bg-transparent hover:bg-zinc-100 text-zinc-600 hover:text-zinc-900 dark:hover:bg-zinc-800 dark:text-zinc-400 dark:hover:text-zinc-100":"",(t.variant??"primary")==="outline"?"bg-transparent border border-zinc-200 hover:bg-zinc-50 text-zinc-700 dark:border-zinc-800 dark:hover:bg-zinc-800 dark:text-zinc-300":""])},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["inline-flex items-center justify-center gap-[inherit]",n.loading?"invisible":""])},[n.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.icon),{key:0,size:(t.size??"md")==="xs"?10:(t.size??"md")==="sm"?12:((t.size??"md")==="lg",15)},null,8,["size"])):e.createCommentVNode("",!0),e.renderSlot(s.$slots,"default")],2),n.loading?(e.openBlock(),e.createElementBlock("span",d0,[e.createVNode(e.unref(g.Loader2),{size:(t.size??"md")==="xs"?10:(t.size??"md")==="sm"?13:(t.size??"md")==="lg"?17:15,class:"animate-spin"},null,8,["size"])])):e.createCommentVNode("",!0)]),_:3},8,["href","disabled","data-variant","data-size","data-active","class"]))}}),u0={class:"wpic-button-group inline-flex"},x2=e.defineComponent({__name:"WButtonGroup",setup(n){return(d,t)=>(e.openBlock(),e.createElementBlock("div",u0,[e.renderSlot(d.$slots,"default")]))}}),m0={class:"wpic-filter flex items-center gap-1"},h0=["onClick"],p0=e.defineComponent({__name:"WFilter",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(n){return(d,t)=>(e.openBlock(),e.createElementBlock("div",m0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,(o,s)=>(e.openBlock(),e.createElementBlock("button",{key:s,type:"button",onClick:l=>d.$emit("update:modelValue",o.value),class:e.normalizeClass(["px-2.5 py-1 text-base font-medium rounded-full transition-all duration-150 cursor-pointer whitespace-nowrap",n.modelValue===o.value?"bg-zinc-100 dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 border border-zinc-300 dark:border-zinc-600":"text-zinc-400 dark:text-zinc-500 hover:text-zinc-600 dark:hover:text-zinc-300 border border-transparent"])},e.toDisplayString(o.label),11,h0))),128))]))}}),v0={class:"wpic-form-label block mb-1 font-medium text-zinc-600 dark:text-zinc-400"},f0={key:0,class:"ml-0.5",style:{color:"#EF4444"}},a2=e.defineComponent({__name:"WFormLabel",props:{required:{type:Boolean}},setup(n){return(d,t)=>(e.openBlock(),e.createElementBlock("label",v0,[e.renderSlot(d.$slots,"default"),n.required?(e.openBlock(),e.createElementBlock("span",f0,"*")):e.createCommentVNode("",!0)]))}}),g0={class:"relative flex items-center w-full"},C0=["data-size","data-variant","type","placeholder","disabled","required"],k0={key:2,class:"pointer-events-none absolute right-2.5 text-zinc-400 dark:text-zinc-500"},o2=e.defineComponent({inheritAttrs:!1,__name:"WInput",props:e.mergeModels({icon:{type:[Object,Function]},label:{},placeholder:{},required:{type:Boolean},type:{},disabled:{type:Boolean},size:{},clearable:{type:Boolean},loading:{type:Boolean},variant:{},prepend:{},append:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const d=e.useModel(n,"modelValue"),t=n,o=e.useSlots(),s=e.computed(()=>t.prepend!==void 0||!!o.prepend),l=e.computed(()=>t.append!==void 0||!!o.append),a=e.computed(()=>{if(t.icon)return t.icon;if(t.type==="date")return g.Calendar;if(t.type==="money")return g.DollarSign}),m=e.computed(()=>({sm:12,md:13,lg:14,xl:16})[t.size??"md"]),f=e.computed(()=>t.type==="money"?"number":t.type??"text"),v=e.ref(),c=e.ref(),E=e.ref(0);let w;e.watch(c,b=>{w?.disconnect(),E.value=b?.getBoundingClientRect().width??0,b&&(w=new ResizeObserver(()=>{E.value=b.getBoundingClientRect().width}),w.observe(b))},{flush:"post"}),e.onBeforeUnmount(()=>w?.disconnect());function L(){t.type==="date"&&v.value?.showPicker()}if(typeof document<"u"){const b="winput-date-no-picker";if(!document.getElementById(b)){const h=document.createElement("style");h.id=b,h.textContent='input[type="date"]::-webkit-calendar-picker-indicator { display: none; }',document.head.appendChild(h)}const C="winput-number-no-spinner";if(!document.getElementById(C)){const h=document.createElement("style");h.id=C,h.textContent="input.winput-number::-webkit-outer-spin-button, input.winput-number::-webkit-inner-spin-button { display: none; } input.winput-number { -moz-appearance: textfield; }",document.head.appendChild(h)}}return(b,C)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(b.$attrs,{class:"w-full"}),[t.label?(e.openBlock(),e.createBlock(a2,{key:0,required:t.required},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]),_:1},8,["required"])):e.createCommentVNode("",!0),e.createElementVNode("div",g0,[a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:0,size:m.value,class:e.normalizeClass(["absolute shrink-0 text-zinc-400 dark:text-zinc-500",[t.size==="xl"?"left-4":"left-2.5",t.type==="date"?"cursor-pointer":"pointer-events-none"]]),onClick:L},null,8,["size","class"])):s.value?(e.openBlock(),e.createElementBlock("span",{key:1,ref_key:"prependRef",ref:c,class:"pointer-events-none absolute left-2.5 text-zinc-400 dark:text-zinc-500"},[e.renderSlot(b.$slots,"prepend",{},()=>[e.createTextVNode(e.toDisplayString(t.prepend),1)])],512)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:v,class:e.normalizeClass(["wpic-control",["w-full rounded-lg outline-none transition-colors",t.size==="sm"?"text-sm":"text-base",f.value==="number"?"winput-number":"",t.size==="sm"?"h-8":t.size==="lg"?"h-11":t.size==="xl"?"h-14":"h-9",a.value||s.value?t.size==="xl"?"pl-11":"pl-9":t.size==="xl"?"pl-4":"pl-2.5",l.value&&(t.clearable&&d.value||t.loading)?"pr-14":l.value?"pr-9":t.clearable&&d.value||t.loading?t.size==="xl"?"pr-10":"pr-7":t.size==="xl"?"pr-4":"pr-2.5",t.disabled?(t.variant??"default")==="subtle"?"bg-zinc-100 dark:bg-zinc-800 border border-zinc-100 dark:border-zinc-800 text-zinc-400 dark:text-zinc-500 cursor-not-allowed opacity-60":"bg-zinc-50 dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-800 text-zinc-400 dark:text-zinc-500 cursor-not-allowed opacity-60":(t.variant??"default")==="subtle"?"bg-zinc-100 dark:bg-zinc-800 border border-zinc-100 dark:border-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400 dark:placeholder:text-zinc-500 cursor-text hover:bg-zinc-200/70 dark:hover:bg-zinc-700":"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400 dark:placeholder:text-zinc-500 wpic-input-field cursor-text"]]),style:e.normalizeStyle(s.value&&!a.value?{paddingLeft:`calc(${E.value}px + 1.25rem)`}:void 0),"data-size":t.size??"md","data-variant":t.variant??"default","onUpdate:modelValue":C[0]||(C[0]=h=>d.value=h),type:f.value,placeholder:t.placeholder??"",disabled:t.disabled,required:t.required},null,14,C0),[[e.vModelDynamic,d.value]]),l.value?(e.openBlock(),e.createElementBlock("span",k0,[e.renderSlot(b.$slots,"append",{},()=>[e.createTextVNode(e.toDisplayString(t.append),1)])])):e.createCommentVNode("",!0),t.loading?(e.openBlock(),e.createBlock(e.unref(g.Loader2),{key:3,size:t.size==="xl"?14:11,class:e.normalizeClass(["absolute animate-spin text-zinc-400 dark:text-zinc-500",l.value?"right-8":t.size==="xl"?"right-4":"right-2"])},null,8,["size","class"])):t.clearable&&d.value?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button",onClick:C[1]||(C[1]=h=>d.value=""),class:e.normalizeClass(["absolute flex items-center justify-center text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 transition-colors cursor-pointer",l.value?"right-8":t.size==="xl"?"right-4":"right-2"])},[e.createVNode(e.unref(g.X),{size:t.size==="xl"?14:11},null,8,["size"])],2)):e.createCommentVNode("",!0)])],16))}}),z0=["disabled"],l2=e.defineComponent({__name:"WCheckbox",props:e.mergeModels({disabled:{type:Boolean}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const d=e.useModel(n,"modelValue");return(t,o)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["wpic-checkbox relative inline-flex items-center gap-2 select-none",n.disabled?"cursor-not-allowed opacity-50":"cursor-pointer"])},[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":o[0]||(o[0]=s=>d.value=s),disabled:n.disabled,class:"peer sr-only"},null,8,z0),[[e.vModelCheckbox,d.value]]),e.createElementVNode("span",{class:e.normalizeClass(["wpic-checkbox-box",["flex h-4 w-4 shrink-0 items-center justify-center rounded-[4px] border transition-all duration-150","peer-focus-visible:ring-2 peer-focus-visible:ring-zinc-400/40 peer-focus-visible:ring-offset-1 peer-focus-visible:ring-offset-white dark:peer-focus-visible:ring-offset-zinc-950",d.value?"border-zinc-900 bg-zinc-900 text-white dark:border-zinc-100 dark:bg-zinc-100 dark:text-zinc-950":"border-zinc-300 bg-white text-transparent shadow-sm hover:border-zinc-400 dark:border-zinc-700 dark:bg-zinc-900 dark:hover:border-zinc-500"]])},[e.createVNode(e.unref(g.Check),{size:11,"stroke-width":"2.6"})],2),e.renderSlot(t.$slots,"default")],2))}}),O1=e.defineComponent({__name:"WSpinner",props:{size:{default:"md"},tone:{default:"muted"}},setup(n){const d=n,t={sm:"h-4 w-4 border-2",md:"h-5 w-5 border-2",lg:"h-7 w-7 border-[3px]"};return(o,s)=>(e.openBlock(),e.createElementBlock("span",{role:"status","aria-live":"polite","aria-label":"Loading",class:e.normalizeClass(["wpic-spinner","inline-block shrink-0 animate-spin rounded-full border-current border-t-transparent",t[d.size],d.tone==="muted"?"text-zinc-300 dark:text-zinc-700":"text-[var(--wpic-primary,#6366f1)]"])},null,2))}}),b0={key:0,class:"text-zinc-400 dark:text-zinc-500 whitespace-nowrap shrink-0"},y0={key:1,role:"status","aria-live":"polite",class:"flex items-center justify-center py-12 gap-3 text-base text-zinc-400 dark:text-zinc-500"},x0={class:"wpic-table__scroll",style:{"overflow-x":"auto"}},w0={class:"w-full border-collapse"},B0={key:0,style:{width:"36px"}},M0={key:1,style:{width:"32px"}},V0={key:0},E0={class:"wpic-table__header wpic-table__divider border-b border-zinc-100 dark:border-zinc-800"},N0=["onClick"],S0={key:1},L0={key:0,class:"wpic-table__summary wpic-table__divider border-b border-zinc-200 font-medium dark:border-zinc-700"},D0={key:0},F0={key:1},$0=["onClick"],A0=["onClick"],T0={key:0,class:"wpic-table__divider border-b border-zinc-100 dark:border-zinc-800"},H0=["colspan"],P0={key:2},j0=["colspan"],W0={class:"flex flex-col items-center gap-2"},R0={class:"tabular-nums text-zinc-400 dark:text-zinc-500"},I0={key:0,class:"flex items-center gap-0.5"},Z0=["aria-label","disabled"],U0={key:0,class:"w-6 text-center text-base select-none text-zinc-400 dark:text-zinc-500"},K0=["onClick"],O0=["aria-label","disabled"],Y0=e.defineComponent({__name:"WTable",props:{data:{},columns:{},loading:{type:Boolean},loadingSpinner:{type:Boolean,default:!0},labels:{},emptyText:{},pageSize:{},serverTotal:{},serverPage:{},searchPlaceholder:{default:"Search…"},rowClickable:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},expandable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},selectedKeys:{},rowKey:{default:"id"},flushEdges:{type:Boolean,default:!1},rowClass:{},rowStyle:{},summaryRow:{},compact:{type:Boolean},padding:{},showFooter:{type:Boolean,default:!0}},emits:["row-click","update:selectedKeys","row-select","update:serverPage"],setup(n,{expose:d,emit:t}){const o=n,s=t,l=e.ref(new Set);function a(V){l.value.has(V)?l.value.delete(V):l.value.add(V)}const m=e.useSlots(),f=e.computed(()=>o.pageSize??25),v=e.ref(null),c=e.ref("asc");function E(V){v.value===V?c.value=c.value==="asc"?"desc":"asc":(v.value=V,c.value="asc")}const w=e.ref(""),L=e.computed(()=>o.columns.some(V=>V.searchable)),b=e.computed(()=>{let V=o.data??[];const X=w.value.trim().toLowerCase();if(X){const z=o.columns.filter(D=>D.searchable).map(D=>D.field);V=V.filter(D=>z.some(K=>String(D[K]??"").toLowerCase().includes(X)))}if(v.value){const z=v.value;V=[...V].sort((D,K)=>{const e1=D[z]??"",r1=K[z]??"",h1=typeof e1=="number"&&typeof r1=="number"?e1-r1:String(e1).toLowerCase().localeCompare(String(r1).toLowerCase());return c.value==="asc"?h1:-h1})}return V}),C=e.ref(1),h=e.computed(()=>o.serverTotal!==void 0),F=e.computed({get:()=>h.value?o.serverPage??1:C.value,set:V=>{h.value?s("update:serverPage",V):C.value=V}}),q=e.computed(()=>h.value?o.serverTotal??0:b.value.length),t1=e.computed(()=>Math.max(1,Math.ceil(q.value/f.value)));e.watch([w,()=>o.data],()=>{h.value||(F.value=1),l.value.clear()});const P=e.computed(()=>{if(h.value)return b.value;const V=(F.value-1)*f.value;return b.value.slice(V,V+f.value)});function Z(V,X){const z=V[o.rowKey];return typeof z=="string"||typeof z=="number"?z:`${F.value}:${X}`}const M=e.computed(()=>new Set(o.selectedKeys??[])),A=e.computed(()=>P.value.map(Z)),S=e.computed(()=>o.selectable&&A.value.length>0&&A.value.every(V=>M.value.has(V)));function B(V,X,z){const D=Z(V,X),K=new Set(o.selectedKeys??[]),e1=z===!0;e1?K.add(D):K.delete(D),s("update:selectedKeys",[...K]),s("row-select",V,e1)}function U(V){const X=new Set(o.selectedKeys??[]),z=V===!0;for(const D of A.value)z?X.add(D):X.delete(D);s("update:selectedKeys",[...X])}const O=e.computed(()=>q.value===0?0:(F.value-1)*f.value+1),i1=e.computed(()=>Math.min(F.value*f.value,q.value)),j=e.computed(()=>{const V=t1.value;if(V<=7)return Array.from({length:V},(e1,r1)=>r1+1);const X=F.value,z=[],D=new Set([1,V,X-1,X,X+1].filter(e1=>e1>=1&&e1<=V));let K=0;for(const e1 of[...D].sort((r1,h1)=>r1-h1))e1-K>1&&z.push("…"),z.push(e1),K=e1;return z}),J=e.computed(()=>o.padding?`wpic-table--padding-${o.padding}`:o.compact?"wpic-table--padding-sm":"wpic-table--padding-inherit"),W=V=>V==="right"?"text-right":V==="center"?"text-center":"text-left",l1=(V,X)=>[X,o.flushEdges&&V===0&&!o.expandable&&!o.selectable?"pl-0":"wpic-table__pad-l",o.flushEdges&&V===o.columns.length-1?"pr-0":"wpic-table__pad-r"],s1=V=>({...V.width?{width:V.width}:{},...V.minWidth?{minWidth:V.minWidth}:{}});return d({filteredCount:e.computed(()=>b.value.length),searchQuery:w}),(V,X)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["wpic-table",J.value])},[(L.value||e.unref(m).toolbar)&&!n.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center gap-2 wpic-table__divider border-b border-zinc-100 dark:border-zinc-800 wpic-table__pad-x",n.compact?"py-1":"py-2"])},[L.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(o2,{modelValue:w.value,"onUpdate:modelValue":X[0]||(X[0]=z=>w.value=z),placeholder:n.searchPlaceholder,icon:e.unref(g.Search),class:"flex-1"},null,8,["modelValue","placeholder","icon"]),w.value?(e.openBlock(),e.createElementBlock("span",b0,e.toDisplayString(b.value.length)+" "+e.toDisplayString(n.labels?.results??"results"),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.renderSlot(V.$slots,"toolbar")],2)):e.createCommentVNode("",!0),n.loading?(e.openBlock(),e.createElementBlock("div",y0,[n.loadingSpinner?(e.openBlock(),e.createBlock(O1,{key:0,tone:"muted"})):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(n.labels?.loading??"Loading…"),1)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",x0,[e.createElementVNode("table",w0,[e.createElementVNode("colgroup",null,[n.selectable?(e.openBlock(),e.createElementBlock("col",B0)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("col",M0)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,z=>(e.openBlock(),e.createElementBlock("col",{key:z.field,style:e.normalizeStyle(s1(z))},null,4))),128))]),o.showHeader!==!1?(e.openBlock(),e.createElementBlock("thead",V0,[e.createElementVNode("tr",E0,[n.selectable?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(["w-9 pr-2",n.compact?"py-1":"py-2",n.flushEdges?"pl-0":"pl-2"])},[e.createVNode(l2,{"model-value":S.value,onClick:X[1]||(X[1]=e.withModifiers(()=>{},["stop"])),"onUpdate:modelValue":U},null,8,["model-value"])],2)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(["w-8 pr-2",n.compact?"py-1":"py-2",n.flushEdges&&!n.selectable?"pl-0":"pl-2"])},null,2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,(z,D)=>(e.openBlock(),e.createElementBlock("th",{key:z.field,class:e.normalizeClass([l1(D,n.compact?"py-1":"py-2"),"whitespace-nowrap text-zinc-500 dark:text-zinc-300 font-medium",W(z.align),D===0&&!n.expandable&&!n.selectable?"wpic-table__sticky sticky left-0 z-10":""]),style:e.normalizeStyle({...s1(z)})},[e.renderSlot(V.$slots,"th-"+z.field,{col:z,sortField:v.value,sortDir:c.value,toggleSort:E},()=>[z.sortable?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:K=>E(z.field),class:e.normalizeClass(["inline-flex items-center gap-1 cursor-pointer transition-colors whitespace-nowrap",z.align==="right"?"ml-auto":""]),style:{color:"inherit"}},[e.createTextVNode(e.toDisplayString(z.label)+" ",1),v.value===z.field&&c.value==="asc"?(e.openBlock(),e.createBlock(e.unref(g.ChevronUp),{key:0,size:11,style:{color:"#5E6AD2"}})):v.value===z.field&&c.value==="desc"?(e.openBlock(),e.createBlock(e.unref(g.ChevronDown),{key:1,size:11,style:{color:"#5E6AD2"}})):(e.openBlock(),e.createBlock(e.unref(g.ChevronsUpDown),{key:2,size:10,style:{opacity:"0.3"}}))],10,N0)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(z.label),1)],64))])],6))),128))])])):e.createCommentVNode("",!0),n.loading?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("tbody",S0,[n.summaryRow?(e.openBlock(),e.createElementBlock("tr",L0,[n.selectable?(e.openBlock(),e.createElementBlock("td",D0)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("td",F0)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,(z,D)=>(e.openBlock(),e.createElementBlock("td",{key:z.field,class:e.normalizeClass([l1(D,n.compact?"py-1":"py-2.5"),W(z.align),D===0&&!n.expandable&&!n.selectable?"wpic-table__sticky sticky left-0 z-10 text-zinc-900 dark:text-zinc-100":"text-zinc-700 dark:text-zinc-200"])},[e.renderSlot(V.$slots,"summary-"+z.field,{row:n.summaryRow,value:n.summaryRow[z.field]},()=>[e.createTextVNode(e.toDisplayString(n.summaryRow[z.field]??"—"),1)])],2))),128))])):e.createCommentVNode("",!0),P.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(P.value,(z,D)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:D},[e.createElementVNode("tr",{class:e.normalizeClass(["wpic-table__row group wpic-table__divider border-b border-zinc-100 dark:border-zinc-800",[n.expandable&&l.value.has(D)?"border-b-0":"",n.rowClass?.(z)]]),style:e.normalizeStyle({cursor:n.rowClickable||n.expandable?"pointer":"default",...n.rowStyle?.(z)??{}}),onClick:K=>n.expandable?a(D):n.rowClickable&&s("row-click",z)},[n.selectable?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(["w-9 pr-2",n.compact?"py-1":"py-2.5",n.flushEdges?"pl-0":"pl-2"]),onClick:X[2]||(X[2]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(l2,{"model-value":M.value.has(Z(z,D)),"onUpdate:modelValue":K=>B(z,D,K)},null,8,["model-value","onUpdate:modelValue"])],2)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(["w-8 pr-1 text-zinc-400 dark:text-zinc-500",n.compact?"py-1":"py-2.5",n.flushEdges&&!n.selectable?"pl-0":"pl-3"])},[l.value.has(D)?(e.openBlock(),e.createBlock(e.unref(g.ChevronDown),{key:0,size:13,style:{transition:"transform .15s"}})):(e.openBlock(),e.createBlock(e.unref(g.ChevronRight),{key:1,size:13,style:{transition:"transform .15s"}}))],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,(K,e1)=>(e.openBlock(),e.createElementBlock("td",{key:K.field,class:e.normalizeClass([l1(e1,n.compact?"py-1":"py-2.5"),W(K.align),e1===0&&!n.expandable&&!n.selectable?"wpic-table__sticky sticky left-0 z-10 text-zinc-900 dark:text-zinc-100 font-medium":"text-zinc-700 dark:text-zinc-200"]),onClick:r1=>n.expandable?(n.rowClickable&&s("row-click",z),r1.stopPropagation()):void 0},[e.renderSlot(V.$slots,K.field,{row:z,value:z[K.field]},()=>[e.createTextVNode(e.toDisplayString(z[K.field]??"—"),1)])],10,A0))),128))],14,$0),n.expandable&&l.value.has(D)?(e.openBlock(),e.createElementBlock("tr",T0,[e.createElementVNode("td",{colspan:n.columns.length+(n.expandable?1:0)+(n.selectable?1:0),class:"wpic-table__pad-x pb-3 pt-0"},[e.renderSlot(V.$slots,"expand",{row:z})],8,H0)])):e.createCommentVNode("",!0)],64))),128)):(e.openBlock(),e.createElementBlock("tr",P0,[e.createElementVNode("td",{colspan:n.columns.length+(n.expandable?1:0)+(n.selectable?1:0),class:"py-16 text-center text-zinc-400 dark:text-zinc-500"},[e.createElementVNode("div",W0,[e.renderSlot(V.$slots,"empty-icon"),e.createTextVNode(" "+e.toDisplayString(n.emptyText??"No data"),1)])],8,j0)]))]))])]),n.showFooter&&q.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-between wpic-table__divider border-t border-zinc-100 dark:border-zinc-800 wpic-table__pad-x",n.compact?"py-1":"py-2.5"])},[e.createElementVNode("span",R0,[t1.value>1?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(O.value)+"–"+e.toDisplayString(i1.value)+" "+e.toDisplayString(n.labels?.of??"of")+" "+e.toDisplayString(q.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(q.value)+" "+e.toDisplayString(q.value===1?n.labels?.item??"item":n.labels?.items??"items"),1)],64))]),t1.value>1?(e.openBlock(),e.createElementBlock("div",I0,[e.createElementVNode("button",{"aria-label":n.labels?.previous??"Previous page",onClick:X[3]||(X[3]=z=>F.value--),disabled:F.value===1,class:"h-7 w-7 flex items-center justify-center rounded-md transition-colors cursor-pointer disabled:opacity-30 hover:bg-zinc-50 dark:hover:bg-zinc-800/50 text-zinc-400"},[e.createVNode(e.unref(g.ChevronLeft),{size:13})],8,Z0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,z=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:z},[z==="…"?(e.openBlock(),e.createElementBlock("span",U0,"…")):(e.openBlock(),e.createElementBlock("button",{key:1,onClick:D=>F.value=z,class:e.normalizeClass(["h-7 min-w-7 px-2 rounded-md text-sm font-medium transition-colors cursor-pointer",F.value===z?"":"text-zinc-700 dark:text-zinc-200 hover:bg-zinc-100 dark:hover:bg-zinc-700"]),style:e.normalizeStyle(F.value===z?"background:rgba(94,106,210,0.1);color:#5E6AD2":void 0)},e.toDisplayString(z),15,K0))],64))),128)),e.createElementVNode("button",{"aria-label":n.labels?.next??"Next page",onClick:X[4]||(X[4]=z=>F.value++),disabled:F.value===t1.value,class:"h-7 w-7 flex items-center justify-center rounded-md transition-colors cursor-pointer disabled:opacity-30 hover:bg-zinc-50 dark:hover:bg-zinc-800/50 text-zinc-400"},[e.createVNode(e.unref(g.ChevronRight),{size:13})],8,O0)])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],64))],2))}}),q0={class:"w-spreadsheet-frame__surface"},Q0={key:0,class:"w-spreadsheet-frame__heading"},J0={key:1,class:"w-spreadsheet-frame__status"},X0=["title","aria-label"],G0={key:1,class:"flex min-h-64 items-center justify-center gap-3 text-zinc-400 dark:text-zinc-500"},_0={key:0,class:"w-spreadsheet__row-axis-col"},e3={key:0},n3={key:0,class:"w-spreadsheet__corner"},t3={key:0,class:"w-spreadsheet__axis"},l3=["colspan","title","tabindex","onClick","onKeydown","onPointerenter","onPointerdown"],c3={key:0,class:"w-spreadsheet__editor"},a3=["type","value","min","placeholder","onInput"],o3=["onPointerdown"],r3=e.defineComponent({__name:"WSpreadsheet",props:{columns:{},rows:{},showAxes:{type:Boolean,default:!0},showColumnLetters:{type:Boolean,default:!0},showRowNumbers:{type:Boolean,default:!0},minWidth:{default:"960px"},maxHeight:{default:"68vh"},sortable:{type:Boolean},expandable:{type:Boolean},showExpandButton:{type:Boolean},actionsOnHover:{type:Boolean},downloadable:{type:Boolean},showDownloadButton:{type:Boolean},downloadFilename:{},fillHandle:{type:Boolean},expanded:{type:Boolean},downloadRequest:{},loading:{type:Boolean}},emits:["update:expanded","cell-change"],setup(n,{expose:d,emit:t}){const o=n,s=t,l=e.computed(()=>o.showAxes&&o.showColumnLetters),a=e.computed(()=>o.showAxes&&o.showRowNumbers),m=e.computed(()=>o.columns.some(x=>x.sticky)),f=e.ref(null),v=e.ref("asc"),c=e.ref(o.expanded??!1),E=e.ref(null),w=e.ref(null),L=e.ref(null),b=e.ref(null),C=e.ref(null);function h(){if(!o.downloadable)return;const x=N=>`"${String(N??"").replace(/"/g,'""')}"`,T=M.value.map(N=>o.columns.map(H=>x(P(N,H.key))).join(",")).join(`\r
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),g=require("lucide-vue-next"),n1=require("@floating-ui/vue"),s0=require("pinia");var A1=typeof document<"u"?document.currentScript:null;const d0={key:0,class:"absolute inset-0 flex items-center justify-center rounded-[inherit]","aria-hidden":"true"},F1=e.defineComponent({__name:"WButton",props:{variant:{},size:{},loading:{type:Boolean},disabled:{type:Boolean},active:{type:Boolean},icon:{type:[Object,Function]},href:{}},emits:["click"],setup(n,{emit:d}){const t=n,o=d;return(s,l)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.href?"a":"button"),{href:n.href,disabled:n.disabled||n.loading,"data-variant":t.variant??"primary","data-size":t.size??"md","data-active":n.active?"true":void 0,onClick:l[0]||(l[0]=a=>o("click",a)),class:e.normalizeClass(["wpic-button","relative inline-flex items-center justify-center font-medium transition-all duration-150 cursor-pointer select-none","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500/50 focus-visible:ring-offset-1","active:scale-[0.98]",n.disabled||n.loading?"opacity-40 cursor-not-allowed pointer-events-none":"",n.active?"wpic-button--active":"",(t.size??"md")==="sm"?"h-8 touch-manipulation px-2.5 gap-1.5 rounded-md text-sm":"",(t.size??"md")==="md"?(t.variant==="subtle"?"h-11":"h-9")+" px-3.5 gap-2 rounded-lg":"",(t.size??"md")==="lg"?(t.variant==="subtle"?"h-12":"h-11")+" px-4 gap-2 rounded-lg":"",(t.size??"md")==="xs"?"h-5 w-5 p-0 rounded-full text-xs":"",(t.variant??"primary")==="primary"?"wpic-btn-primary text-white":"",(t.variant??"primary")==="secondary"?"bg-zinc-100 hover:bg-zinc-200 text-zinc-700 dark:bg-zinc-800 dark:hover:bg-zinc-700 dark:text-zinc-200":"",(t.variant??"primary")==="subtle"?"bg-zinc-100 border border-zinc-100 hover:bg-zinc-200/70 text-zinc-700 dark:bg-zinc-800 dark:border-zinc-800 dark:hover:bg-zinc-700 dark:text-zinc-200":"",(t.variant??"primary")==="destructive"?"bg-red-500 hover:bg-red-600 text-white":"",(t.variant??"primary")==="ghost"?"bg-transparent hover:bg-zinc-100 text-zinc-600 hover:text-zinc-900 dark:hover:bg-zinc-800 dark:text-zinc-400 dark:hover:text-zinc-100":"",(t.variant??"primary")==="outline"?"bg-transparent border border-zinc-200 hover:bg-zinc-50 text-zinc-700 dark:border-zinc-800 dark:hover:bg-zinc-800 dark:text-zinc-300":""])},{default:e.withCtx(()=>[e.createElementVNode("span",{class:e.normalizeClass(["inline-flex items-center justify-center gap-[inherit]",n.loading?"invisible":""])},[n.icon?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(n.icon),{key:0,size:(t.size??"md")==="xs"?10:(t.size??"md")==="sm"?12:((t.size??"md")==="lg",15)},null,8,["size"])):e.createCommentVNode("",!0),e.renderSlot(s.$slots,"default")],2),n.loading?(e.openBlock(),e.createElementBlock("span",d0,[e.createVNode(e.unref(g.Loader2),{size:(t.size??"md")==="xs"?10:(t.size??"md")==="sm"?13:(t.size??"md")==="lg"?17:15,class:"animate-spin"},null,8,["size"])])):e.createCommentVNode("",!0)]),_:3},8,["href","disabled","data-variant","data-size","data-active","class"]))}}),u0={class:"wpic-button-group inline-flex"},x2=e.defineComponent({__name:"WButtonGroup",setup(n){return(d,t)=>(e.openBlock(),e.createElementBlock("div",u0,[e.renderSlot(d.$slots,"default")]))}}),m0={class:"wpic-filter flex items-center gap-1"},h0=["onClick"],p0=e.defineComponent({__name:"WFilter",props:{options:{},modelValue:{}},emits:["update:modelValue"],setup(n){return(d,t)=>(e.openBlock(),e.createElementBlock("div",m0,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.options,(o,s)=>(e.openBlock(),e.createElementBlock("button",{key:s,type:"button",onClick:l=>d.$emit("update:modelValue",o.value),class:e.normalizeClass(["px-2.5 py-1 text-base font-medium rounded-full transition-all duration-150 cursor-pointer whitespace-nowrap",n.modelValue===o.value?"bg-zinc-100 dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 border border-zinc-300 dark:border-zinc-600":"text-zinc-400 dark:text-zinc-500 hover:text-zinc-600 dark:hover:text-zinc-300 border border-transparent"])},e.toDisplayString(o.label),11,h0))),128))]))}}),v0={class:"wpic-form-label block mb-1 font-medium text-zinc-600 dark:text-zinc-400"},f0={key:0,class:"ml-0.5",style:{color:"#EF4444"}},a2=e.defineComponent({__name:"WFormLabel",props:{required:{type:Boolean}},setup(n){return(d,t)=>(e.openBlock(),e.createElementBlock("label",v0,[e.renderSlot(d.$slots,"default"),n.required?(e.openBlock(),e.createElementBlock("span",f0,"*")):e.createCommentVNode("",!0)]))}}),g0={class:"relative flex items-center w-full"},C0=["data-size","data-variant","type","placeholder","disabled","required"],k0={key:2,class:"pointer-events-none absolute right-2.5 text-zinc-400 dark:text-zinc-500"},o2=e.defineComponent({inheritAttrs:!1,__name:"WInput",props:e.mergeModels({icon:{type:[Object,Function]},label:{},placeholder:{},required:{type:Boolean},type:{},disabled:{type:Boolean},size:{},clearable:{type:Boolean},loading:{type:Boolean},variant:{},prepend:{},append:{}},{modelValue:{},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const d=e.useModel(n,"modelValue"),t=n,o=e.useSlots(),s=e.computed(()=>t.prepend!==void 0||!!o.prepend),l=e.computed(()=>t.append!==void 0||!!o.append),a=e.computed(()=>{if(t.icon)return t.icon;if(t.type==="date")return g.Calendar;if(t.type==="money")return g.DollarSign}),m=e.computed(()=>({sm:12,md:13,lg:14,xl:16})[t.size??"md"]),f=e.computed(()=>t.type==="money"?"number":t.type??"text"),v=e.ref(),c=e.ref(),E=e.ref(0);let w;e.watch(c,b=>{w?.disconnect(),E.value=b?.getBoundingClientRect().width??0,b&&(w=new ResizeObserver(()=>{E.value=b.getBoundingClientRect().width}),w.observe(b))},{flush:"post"}),e.onBeforeUnmount(()=>w?.disconnect());function L(){t.type==="date"&&v.value?.showPicker()}if(typeof document<"u"){const b="winput-date-no-picker";if(!document.getElementById(b)){const h=document.createElement("style");h.id=b,h.textContent='input[type="date"]::-webkit-calendar-picker-indicator { display: none; }',document.head.appendChild(h)}const C="winput-number-no-spinner";if(!document.getElementById(C)){const h=document.createElement("style");h.id=C,h.textContent="input.winput-number::-webkit-outer-spin-button, input.winput-number::-webkit-inner-spin-button { display: none; } input.winput-number { -moz-appearance: textfield; }",document.head.appendChild(h)}}return(b,C)=>(e.openBlock(),e.createElementBlock("div",e.mergeProps(b.$attrs,{class:"w-full"}),[t.label?(e.openBlock(),e.createBlock(a2,{key:0,required:t.required},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.label),1)]),_:1},8,["required"])):e.createCommentVNode("",!0),e.createElementVNode("div",g0,[a.value?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(a.value),{key:0,size:m.value,class:e.normalizeClass(["absolute shrink-0 text-zinc-400 dark:text-zinc-500",[t.size==="xl"?"left-4":"left-2.5",t.type==="date"?"cursor-pointer":"pointer-events-none"]]),onClick:L},null,8,["size","class"])):s.value?(e.openBlock(),e.createElementBlock("span",{key:1,ref_key:"prependRef",ref:c,class:"pointer-events-none absolute left-2.5 text-zinc-400 dark:text-zinc-500"},[e.renderSlot(b.$slots,"prepend",{},()=>[e.createTextVNode(e.toDisplayString(t.prepend),1)])],512)):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("input",{ref_key:"inputRef",ref:v,class:e.normalizeClass(["wpic-control",["w-full rounded-lg outline-none transition-colors",t.size==="sm"?"text-sm":"text-base",f.value==="number"?"winput-number":"",t.size==="sm"?"h-8":t.size==="lg"?"h-11":t.size==="xl"?"h-14":"h-9",a.value||s.value?t.size==="xl"?"pl-11":"pl-9":t.size==="xl"?"pl-4":"pl-2.5",l.value&&(t.clearable&&d.value||t.loading)?"pr-14":l.value?"pr-9":t.clearable&&d.value||t.loading?t.size==="xl"?"pr-10":"pr-7":t.size==="xl"?"pr-4":"pr-2.5",t.disabled?(t.variant??"default")==="subtle"?"bg-zinc-100 dark:bg-zinc-800 border border-zinc-100 dark:border-zinc-800 text-zinc-400 dark:text-zinc-500 cursor-not-allowed opacity-60":"bg-zinc-50 dark:bg-zinc-800 border border-zinc-200 dark:border-zinc-800 text-zinc-400 dark:text-zinc-500 cursor-not-allowed opacity-60":(t.variant??"default")==="subtle"?"bg-zinc-100 dark:bg-zinc-800 border border-zinc-100 dark:border-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400 dark:placeholder:text-zinc-500 cursor-text hover:bg-zinc-200/70 dark:hover:bg-zinc-700":"bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder:text-zinc-400 dark:placeholder:text-zinc-500 wpic-input-field cursor-text"]]),style:e.normalizeStyle(s.value&&!a.value?{paddingLeft:`calc(${E.value}px + 1.25rem)`}:void 0),"data-size":t.size??"md","data-variant":t.variant??"default","onUpdate:modelValue":C[0]||(C[0]=h=>d.value=h),type:f.value,placeholder:t.placeholder??"",disabled:t.disabled,required:t.required},null,14,C0),[[e.vModelDynamic,d.value]]),l.value?(e.openBlock(),e.createElementBlock("span",k0,[e.renderSlot(b.$slots,"append",{},()=>[e.createTextVNode(e.toDisplayString(t.append),1)])])):e.createCommentVNode("",!0),t.loading?(e.openBlock(),e.createBlock(e.unref(g.Loader2),{key:3,size:t.size==="xl"?14:11,class:e.normalizeClass(["absolute animate-spin text-zinc-400 dark:text-zinc-500",l.value?"right-8":t.size==="xl"?"right-4":"right-2"])},null,8,["size","class"])):t.clearable&&d.value?(e.openBlock(),e.createElementBlock("button",{key:4,type:"button",onClick:C[1]||(C[1]=h=>d.value=""),class:e.normalizeClass(["absolute flex items-center justify-center text-zinc-400 hover:text-zinc-600 dark:hover:text-zinc-300 transition-colors cursor-pointer",l.value?"right-8":t.size==="xl"?"right-4":"right-2"])},[e.createVNode(e.unref(g.X),{size:t.size==="xl"?14:11},null,8,["size"])],2)):e.createCommentVNode("",!0)])],16))}}),z0=["disabled"],l2=e.defineComponent({__name:"WCheckbox",props:e.mergeModels({disabled:{type:Boolean}},{modelValue:{type:Boolean},modelModifiers:{}}),emits:["update:modelValue"],setup(n){const d=e.useModel(n,"modelValue");return(t,o)=>(e.openBlock(),e.createElementBlock("label",{class:e.normalizeClass(["wpic-checkbox relative inline-flex items-center gap-2 select-none",n.disabled?"cursor-not-allowed opacity-50":"cursor-pointer"])},[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":o[0]||(o[0]=s=>d.value=s),disabled:n.disabled,class:"peer sr-only"},null,8,z0),[[e.vModelCheckbox,d.value]]),e.createElementVNode("span",{class:e.normalizeClass(["wpic-checkbox-box",["flex h-4 w-4 shrink-0 items-center justify-center rounded-[4px] border transition-all duration-150","peer-focus-visible:ring-2 peer-focus-visible:ring-zinc-400/40 peer-focus-visible:ring-offset-1 peer-focus-visible:ring-offset-white dark:peer-focus-visible:ring-offset-zinc-950",d.value?"border-zinc-900 bg-zinc-900 text-white dark:border-zinc-100 dark:bg-zinc-100 dark:text-zinc-950":"border-zinc-300 bg-white text-transparent shadow-sm hover:border-zinc-400 dark:border-zinc-700 dark:bg-zinc-900 dark:hover:border-zinc-500"]])},[e.createVNode(e.unref(g.Check),{size:11,"stroke-width":"2.6"})],2),e.renderSlot(t.$slots,"default")],2))}}),O1=e.defineComponent({__name:"WSpinner",props:{size:{default:"md"},tone:{default:"muted"}},setup(n){const d=n,t={sm:"h-4 w-4 border-2",md:"h-5 w-5 border-2",lg:"h-7 w-7 border-[3px]"};return(o,s)=>(e.openBlock(),e.createElementBlock("span",{role:"status","aria-live":"polite","aria-label":"Loading",class:e.normalizeClass(["wpic-spinner","inline-block shrink-0 animate-spin rounded-full border-current border-t-transparent",t[d.size],d.tone==="muted"?"text-zinc-300 dark:text-zinc-700":"text-[var(--wpic-primary,#6366f1)]"])},null,2))}}),b0={key:0,class:"text-zinc-400 dark:text-zinc-500 whitespace-nowrap shrink-0"},y0={key:1,role:"status","aria-live":"polite",class:"flex items-center justify-center py-12 gap-3 text-base text-zinc-400 dark:text-zinc-500"},x0={class:"wpic-table__scroll",style:{"overflow-x":"auto"}},w0={class:"w-full border-collapse"},B0={key:0,style:{width:"36px"}},M0={key:1,style:{width:"32px"}},V0={key:0},E0={class:"wpic-table__header wpic-table__divider border-b border-zinc-100 dark:border-zinc-800"},N0=["onClick"],S0={key:1},L0={key:0,class:"wpic-table__summary wpic-table__divider border-b border-zinc-200 font-medium dark:border-zinc-700"},D0={key:0},F0={key:1},$0=["onClick"],A0=["onClick"],T0={key:0,class:"wpic-table__divider border-b border-zinc-100 dark:border-zinc-800"},H0=["colspan"],P0={key:2},j0=["colspan"],W0={class:"flex flex-col items-center gap-2"},R0={class:"tabular-nums text-zinc-400 dark:text-zinc-500"},I0={key:0,class:"flex items-center gap-0.5"},Z0=["aria-label","disabled"],U0={key:0,class:"w-6 text-center text-base select-none text-zinc-400 dark:text-zinc-500"},K0=["onClick"],O0=["aria-label","disabled"],Y0=e.defineComponent({__name:"WTable",props:{data:{},columns:{},loading:{type:Boolean},loadingSpinner:{type:Boolean,default:!0},labels:{},emptyText:{},pageSize:{},serverTotal:{},serverPage:{},searchPlaceholder:{default:"Search…"},rowClickable:{type:Boolean,default:!1},showHeader:{type:Boolean,default:!0},expandable:{type:Boolean,default:!1},selectable:{type:Boolean,default:!1},selectedKeys:{},rowKey:{default:"id"},flushEdges:{type:Boolean,default:!1},rowClass:{},rowStyle:{},summaryRow:{},compact:{type:Boolean},padding:{},showFooter:{type:Boolean,default:!0}},emits:["row-click","update:selectedKeys","row-select","update:serverPage"],setup(n,{expose:d,emit:t}){const o=n,s=t,l=e.ref(new Set);function a(V){l.value.has(V)?l.value.delete(V):l.value.add(V)}const m=e.useSlots(),f=e.computed(()=>o.pageSize??25),v=e.ref(null),c=e.ref("asc");function E(V){v.value===V?c.value=c.value==="asc"?"desc":"asc":(v.value=V,c.value="asc")}const w=e.ref(""),L=e.computed(()=>o.columns.some(V=>V.searchable)),b=e.computed(()=>{let V=o.data??[];const X=w.value.trim().toLowerCase();if(X){const z=o.columns.filter(D=>D.searchable).map(D=>D.field);V=V.filter(D=>z.some(K=>String(D[K]??"").toLowerCase().includes(X)))}if(v.value){const z=v.value;V=[...V].sort((D,K)=>{const e1=D[z]??"",r1=K[z]??"",h1=typeof e1=="number"&&typeof r1=="number"?e1-r1:String(e1).toLowerCase().localeCompare(String(r1).toLowerCase());return c.value==="asc"?h1:-h1})}return V}),C=e.ref(1),h=e.computed(()=>o.serverTotal!==void 0),F=e.computed({get:()=>h.value?o.serverPage??1:C.value,set:V=>{h.value?s("update:serverPage",V):C.value=V}}),q=e.computed(()=>h.value?o.serverTotal??0:b.value.length),t1=e.computed(()=>Math.max(1,Math.ceil(q.value/f.value)));e.watch([w,()=>o.data],()=>{h.value||(F.value=1),l.value.clear()});const P=e.computed(()=>{if(h.value)return b.value;const V=(F.value-1)*f.value;return b.value.slice(V,V+f.value)});function Z(V,X){const z=V[o.rowKey];return typeof z=="string"||typeof z=="number"?z:`${F.value}:${X}`}const M=e.computed(()=>new Set(o.selectedKeys??[])),A=e.computed(()=>P.value.map(Z)),S=e.computed(()=>o.selectable&&A.value.length>0&&A.value.every(V=>M.value.has(V)));function B(V,X,z){const D=Z(V,X),K=new Set(o.selectedKeys??[]),e1=z===!0;e1?K.add(D):K.delete(D),s("update:selectedKeys",[...K]),s("row-select",V,e1)}function U(V){const X=new Set(o.selectedKeys??[]),z=V===!0;for(const D of A.value)z?X.add(D):X.delete(D);s("update:selectedKeys",[...X])}const O=e.computed(()=>q.value===0?0:(F.value-1)*f.value+1),i1=e.computed(()=>Math.min(F.value*f.value,q.value)),j=e.computed(()=>{const V=t1.value;if(V<=7)return Array.from({length:V},(e1,r1)=>r1+1);const X=F.value,z=[],D=new Set([1,V,X-1,X,X+1].filter(e1=>e1>=1&&e1<=V));let K=0;for(const e1 of[...D].sort((r1,h1)=>r1-h1))e1-K>1&&z.push("…"),z.push(e1),K=e1;return z}),J=e.computed(()=>o.padding?`wpic-table--padding-${o.padding}`:o.compact?"wpic-table--padding-sm":"wpic-table--padding-inherit"),W=V=>V==="right"?"text-right":V==="center"?"text-center":"text-left",l1=(V,X)=>[X,o.flushEdges&&V===0&&!o.expandable&&!o.selectable?"pl-0":"wpic-table__pad-l",o.flushEdges&&V===o.columns.length-1?"pr-0":"wpic-table__pad-r"],s1=V=>({...V.width?{width:V.width}:{},...V.minWidth?{minWidth:V.minWidth}:{}});return d({filteredCount:e.computed(()=>b.value.length),searchQuery:w}),(V,X)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["wpic-table",J.value])},[(L.value||e.unref(m).toolbar)&&!n.loading?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center gap-2 wpic-table__divider border-b border-zinc-100 dark:border-zinc-800 wpic-table__pad-x",n.compact?"py-1":"py-2"])},[L.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createVNode(o2,{modelValue:w.value,"onUpdate:modelValue":X[0]||(X[0]=z=>w.value=z),placeholder:n.searchPlaceholder,icon:e.unref(g.Search),class:"flex-1"},null,8,["modelValue","placeholder","icon"]),w.value?(e.openBlock(),e.createElementBlock("span",b0,e.toDisplayString(b.value.length)+" "+e.toDisplayString(n.labels?.results??"results"),1)):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0),e.renderSlot(V.$slots,"toolbar")],2)):e.createCommentVNode("",!0),n.loading?(e.openBlock(),e.createElementBlock("div",y0,[n.loadingSpinner?(e.openBlock(),e.createBlock(O1,{key:0,tone:"muted"})):e.createCommentVNode("",!0),e.createElementVNode("span",null,e.toDisplayString(n.labels?.loading??"Loading…"),1)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[e.createElementVNode("div",x0,[e.createElementVNode("table",w0,[e.createElementVNode("colgroup",null,[n.selectable?(e.openBlock(),e.createElementBlock("col",B0)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("col",M0)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,z=>(e.openBlock(),e.createElementBlock("col",{key:z.field,style:e.normalizeStyle(s1(z))},null,4))),128))]),o.showHeader!==!1?(e.openBlock(),e.createElementBlock("thead",V0,[e.createElementVNode("tr",E0,[n.selectable?(e.openBlock(),e.createElementBlock("th",{key:0,class:e.normalizeClass(["w-9 pr-2",n.compact?"py-1.5":"py-3",n.flushEdges?"pl-0":"pl-2"])},[e.createVNode(l2,{"model-value":S.value,onClick:X[1]||(X[1]=e.withModifiers(()=>{},["stop"])),"onUpdate:modelValue":U},null,8,["model-value"])],2)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("th",{key:1,class:e.normalizeClass(["w-8 pr-2",n.compact?"py-1.5":"py-3",n.flushEdges&&!n.selectable?"pl-0":"pl-2"])},null,2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,(z,D)=>(e.openBlock(),e.createElementBlock("th",{key:z.field,class:e.normalizeClass([l1(D,n.compact?"py-1.5":"py-3"),"whitespace-nowrap text-zinc-500 dark:text-zinc-300 font-medium",W(z.align),D===0&&!n.expandable&&!n.selectable?"wpic-table__sticky sticky left-0 z-10":""]),style:e.normalizeStyle({...s1(z)})},[e.renderSlot(V.$slots,"th-"+z.field,{col:z,sortField:v.value,sortDir:c.value,toggleSort:E},()=>[z.sortable?(e.openBlock(),e.createElementBlock("button",{key:0,onClick:K=>E(z.field),class:e.normalizeClass(["inline-flex items-center gap-1 cursor-pointer transition-colors whitespace-nowrap",z.align==="right"?"ml-auto":""]),style:{color:"inherit"}},[e.createTextVNode(e.toDisplayString(z.label)+" ",1),v.value===z.field&&c.value==="asc"?(e.openBlock(),e.createBlock(e.unref(g.ChevronUp),{key:0,size:11,style:{color:"#5E6AD2"}})):v.value===z.field&&c.value==="desc"?(e.openBlock(),e.createBlock(e.unref(g.ChevronDown),{key:1,size:11,style:{color:"#5E6AD2"}})):(e.openBlock(),e.createBlock(e.unref(g.ChevronsUpDown),{key:2,size:10,style:{opacity:"0.3"}}))],10,N0)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(z.label),1)],64))])],6))),128))])])):e.createCommentVNode("",!0),n.loading?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("tbody",S0,[n.summaryRow?(e.openBlock(),e.createElementBlock("tr",L0,[n.selectable?(e.openBlock(),e.createElementBlock("td",D0)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("td",F0)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,(z,D)=>(e.openBlock(),e.createElementBlock("td",{key:z.field,class:e.normalizeClass([l1(D,n.compact?"py-1":"py-2.5"),W(z.align),D===0&&!n.expandable&&!n.selectable?"wpic-table__sticky sticky left-0 z-10 text-zinc-900 dark:text-zinc-100":"text-zinc-700 dark:text-zinc-200"])},[e.renderSlot(V.$slots,"summary-"+z.field,{row:n.summaryRow,value:n.summaryRow[z.field]},()=>[e.createTextVNode(e.toDisplayString(n.summaryRow[z.field]??"—"),1)])],2))),128))])):e.createCommentVNode("",!0),P.value.length?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(P.value,(z,D)=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:D},[e.createElementVNode("tr",{class:e.normalizeClass(["wpic-table__row group wpic-table__divider border-b border-zinc-100 dark:border-zinc-800",[n.expandable&&l.value.has(D)?"border-b-0":"",n.rowClass?.(z)]]),style:e.normalizeStyle({cursor:n.rowClickable||n.expandable?"pointer":"default",...n.rowStyle?.(z)??{}}),onClick:K=>n.expandable?a(D):n.rowClickable&&s("row-click",z)},[n.selectable?(e.openBlock(),e.createElementBlock("td",{key:0,class:e.normalizeClass(["w-9 pr-2",n.compact?"py-1":"py-2.5",n.flushEdges?"pl-0":"pl-2"]),onClick:X[2]||(X[2]=e.withModifiers(()=>{},["stop"]))},[e.createVNode(l2,{"model-value":M.value.has(Z(z,D)),"onUpdate:modelValue":K=>B(z,D,K)},null,8,["model-value","onUpdate:modelValue"])],2)):e.createCommentVNode("",!0),n.expandable?(e.openBlock(),e.createElementBlock("td",{key:1,class:e.normalizeClass(["w-8 pr-1 text-zinc-400 dark:text-zinc-500",n.compact?"py-1":"py-2.5",n.flushEdges&&!n.selectable?"pl-0":"pl-3"])},[l.value.has(D)?(e.openBlock(),e.createBlock(e.unref(g.ChevronDown),{key:0,size:13,style:{transition:"transform .15s"}})):(e.openBlock(),e.createBlock(e.unref(g.ChevronRight),{key:1,size:13,style:{transition:"transform .15s"}}))],2)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,(K,e1)=>(e.openBlock(),e.createElementBlock("td",{key:K.field,class:e.normalizeClass([l1(e1,n.compact?"py-1":"py-2.5"),W(K.align),e1===0&&!n.expandable&&!n.selectable?"wpic-table__sticky sticky left-0 z-10 text-zinc-900 dark:text-zinc-100 font-medium":"text-zinc-700 dark:text-zinc-200"]),onClick:r1=>n.expandable?(n.rowClickable&&s("row-click",z),r1.stopPropagation()):void 0},[e.renderSlot(V.$slots,K.field,{row:z,value:z[K.field]},()=>[e.createTextVNode(e.toDisplayString(z[K.field]??"—"),1)])],10,A0))),128))],14,$0),n.expandable&&l.value.has(D)?(e.openBlock(),e.createElementBlock("tr",T0,[e.createElementVNode("td",{colspan:n.columns.length+(n.expandable?1:0)+(n.selectable?1:0),class:"wpic-table__pad-x pb-3 pt-0"},[e.renderSlot(V.$slots,"expand",{row:z})],8,H0)])):e.createCommentVNode("",!0)],64))),128)):(e.openBlock(),e.createElementBlock("tr",P0,[e.createElementVNode("td",{colspan:n.columns.length+(n.expandable?1:0)+(n.selectable?1:0),class:"py-16 text-center text-zinc-400 dark:text-zinc-500"},[e.createElementVNode("div",W0,[e.renderSlot(V.$slots,"empty-icon"),e.createTextVNode(" "+e.toDisplayString(n.emptyText??"No data"),1)])],8,j0)]))]))])]),n.showFooter&&q.value>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["flex items-center justify-between wpic-table__divider border-t border-zinc-100 dark:border-zinc-800 wpic-table__pad-x",n.compact?"py-1":"py-2.5"])},[e.createElementVNode("span",R0,[t1.value>1?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(e.toDisplayString(O.value)+"–"+e.toDisplayString(i1.value)+" "+e.toDisplayString(n.labels?.of??"of")+" "+e.toDisplayString(q.value),1)],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(q.value)+" "+e.toDisplayString(q.value===1?n.labels?.item??"item":n.labels?.items??"items"),1)],64))]),t1.value>1?(e.openBlock(),e.createElementBlock("div",I0,[e.createElementVNode("button",{"aria-label":n.labels?.previous??"Previous page",onClick:X[3]||(X[3]=z=>F.value--),disabled:F.value===1,class:"h-7 w-7 flex items-center justify-center rounded-md transition-colors cursor-pointer disabled:opacity-30 hover:bg-zinc-50 dark:hover:bg-zinc-800/50 text-zinc-400"},[e.createVNode(e.unref(g.ChevronLeft),{size:13})],8,Z0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,z=>(e.openBlock(),e.createElementBlock(e.Fragment,{key:z},[z==="…"?(e.openBlock(),e.createElementBlock("span",U0,"…")):(e.openBlock(),e.createElementBlock("button",{key:1,onClick:D=>F.value=z,class:e.normalizeClass(["h-7 min-w-7 px-2 rounded-md text-sm font-medium transition-colors cursor-pointer",F.value===z?"":"text-zinc-700 dark:text-zinc-200 hover:bg-zinc-100 dark:hover:bg-zinc-700"]),style:e.normalizeStyle(F.value===z?"background:rgba(94,106,210,0.1);color:#5E6AD2":void 0)},e.toDisplayString(z),15,K0))],64))),128)),e.createElementVNode("button",{"aria-label":n.labels?.next??"Next page",onClick:X[4]||(X[4]=z=>F.value++),disabled:F.value===t1.value,class:"h-7 w-7 flex items-center justify-center rounded-md transition-colors cursor-pointer disabled:opacity-30 hover:bg-zinc-50 dark:hover:bg-zinc-800/50 text-zinc-400"},[e.createVNode(e.unref(g.ChevronRight),{size:13})],8,O0)])):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],64))],2))}}),q0={class:"w-spreadsheet-frame__surface"},Q0={key:0,class:"w-spreadsheet-frame__heading"},J0={key:1,class:"w-spreadsheet-frame__status"},X0=["title","aria-label"],G0={key:1,class:"flex min-h-64 items-center justify-center gap-3 text-zinc-400 dark:text-zinc-500"},_0={key:0,class:"w-spreadsheet__row-axis-col"},e3={key:0},n3={key:0,class:"w-spreadsheet__corner"},t3={key:0,class:"w-spreadsheet__axis"},l3=["colspan","title","tabindex","onClick","onKeydown","onPointerenter","onPointerdown"],c3={key:0,class:"w-spreadsheet__editor"},a3=["type","value","min","placeholder","onInput"],o3=["onPointerdown"],r3=e.defineComponent({__name:"WSpreadsheet",props:{columns:{},rows:{},showAxes:{type:Boolean,default:!0},showColumnLetters:{type:Boolean,default:!0},showRowNumbers:{type:Boolean,default:!0},minWidth:{default:"960px"},maxHeight:{default:"68vh"},sortable:{type:Boolean},expandable:{type:Boolean},showExpandButton:{type:Boolean},actionsOnHover:{type:Boolean},downloadable:{type:Boolean},showDownloadButton:{type:Boolean},downloadFilename:{},fillHandle:{type:Boolean},expanded:{type:Boolean},downloadRequest:{},loading:{type:Boolean}},emits:["update:expanded","cell-change"],setup(n,{expose:d,emit:t}){const o=n,s=t,l=e.computed(()=>o.showAxes&&o.showColumnLetters),a=e.computed(()=>o.showAxes&&o.showRowNumbers),m=e.computed(()=>o.columns.some(x=>x.sticky)),f=e.ref(null),v=e.ref("asc"),c=e.ref(o.expanded??!1),E=e.ref(null),w=e.ref(null),L=e.ref(null),b=e.ref(null),C=e.ref(null);function h(){if(!o.downloadable)return;const x=N=>`"${String(N??"").replace(/"/g,'""')}"`,T=M.value.map(N=>o.columns.map(H=>x(P(N,H.key))).join(",")).join(`\r
|
|
2
2
|
`),$=new Blob([`\uFEFF${T}`],{type:"text/csv;charset=utf-8"}),G=URL.createObjectURL($),Q=document.createElement("a");Q.href=G,Q.download=o.downloadFilename||"spreadsheet.csv",Q.click(),URL.revokeObjectURL(G)}function F(x,T=!0){if(c.value===x)return;const $=performance.now();console.debug(`[WSpreadsheet] ${x?"expand":"minimize"} requested`),c.value=x,T&&s("update:expanded",x),requestAnimationFrame(()=>requestAnimationFrame(()=>{console.debug(`[WSpreadsheet] ${x?"expand":"minimize"} painted in ${(performance.now()-$).toFixed(1)}ms`)}))}e.watch(()=>o.expanded,x=>{x!=null&&F(x,!1)}),e.watch(()=>o.downloadRequest,(x,T)=>{x!=null&&x!==T&&h()}),d({expand:()=>{o.expandable&&F(!0)},collapse:()=>{F(!1)},toggleExpanded:()=>{o.expandable&&F(!c.value)},download:h});function q(x){x.key==="Escape"&&c.value&&F(!1)}function t1(x){if(x.target?.closest(".w-spreadsheet__cell")?.querySelector(".w-spreadsheet__input"))return;b.value=null,C.value=null;const G=document.activeElement;G&&E.value?.contains(G)&&G.blur()}e.onMounted(()=>{document.addEventListener("keydown",q),document.addEventListener("pointerdown",t1)}),e.onBeforeUnmount(()=>{document.removeEventListener("keydown",q),document.removeEventListener("pointerdown",t1),window.removeEventListener("pointerup",D)});function P(x,T){return x.cells.find($=>$.key===T)?.value??""}function Z(x){if(typeof x=="number")return x;const T=String(x).trim().replace(/[\s,]/g,"");return T!==""&&/^-?\d+(\.\d+)?$/.test(T)?Number(T):String(x).toLocaleLowerCase()}const M=e.computed(()=>{if(!f.value)return o.rows;const x=o.rows.filter(G=>G.sortable!==!1),T=v.value==="asc"?1:-1;x.sort((G,Q)=>{const N=Z(P(G,f.value)),H=Z(P(Q,f.value));return typeof N=="number"&&typeof H=="number"?(N-H)*T:String(N).localeCompare(String(H),void 0,{numeric:!0})*T});let $=0;return o.rows.map(G=>G.sortable===!1?G:x[$++])});function A(x){const T=o.columns.find($=>$.key===x.key);return!!(o.sortable&&x.variant==="header"&&T?.sortable!==!1)}function S(x){A(x)&&(f.value===x.key?v.value=v.value==="asc"?"desc":"asc":(f.value=x.key,v.value="asc"))}function B(x,T){return x.cells.slice(0,T).reduce(($,G)=>$+(G.colspan||1),0)}function U(x,T){return!!o.columns[B(x,T)]?.sticky}function O(x,T){const $=B(x,T);return!!(o.columns[$]?.sticky&&!o.columns.slice(0,$).some(G=>G.sticky))}function i1(x,T){const $=B(x,T);if(!o.columns[$]?.sticky)return;const G=o.columns.slice(0,$).map(Q=>Q.width||"0px");return{left:G.length?`calc(${G.join(" + ")})`:"0px"}}function j(x,T){return`${x.key}\0${T.key}`}function J(x,T){!T.editable||w.value||(b.value={rowKey:x.key,cellKey:T.key},C.value=null)}function W(x,T){return b.value?.rowKey===x.key&&b.value?.cellKey===T.key}function l1(x,T,$){const G=M.value[x];!o.fillHandle||!$.editable||!G||!W(G,$)||(C.value=null,w.value={row:x,cell:T,value:String($.value??"")},L.value={row:x,cell:T},window.addEventListener("pointerup",D,{once:!0}))}function s1(x,T){w.value&&(L.value={row:x,cell:T})}function V(x,T){if(!w.value||!L.value)return!1;const $=Math.min(w.value.row,L.value.row),G=Math.max(w.value.row,L.value.row),Q=Math.min(w.value.cell,L.value.cell),N=Math.max(w.value.cell,L.value.cell);return x>=$&&x<=G&&T>=Q&&T<=N}function X(x,T){if(!V(x,T)||!w.value||!L.value)return{};const $=Math.min(w.value.row,L.value.row),G=Math.max(w.value.row,L.value.row),Q=Math.min(w.value.cell,L.value.cell),N=Math.max(w.value.cell,L.value.cell);return{"w-spreadsheet__cell--fill-range":!0,"w-spreadsheet__cell--fill-top":x===$,"w-spreadsheet__cell--fill-bottom":x===G,"w-spreadsheet__cell--fill-left":T===Q,"w-spreadsheet__cell--fill-right":T===N}}function z(x,T){const $=j(x,T);return{"w-spreadsheet__cell--fill-completed":!!C.value?.cells.has($),"w-spreadsheet__cell--fill-source":C.value?.source===$}}function D(){if(!w.value||!L.value)return;const x=w.value,T=L.value,$=Math.min(x.row,T.row),G=Math.max(x.row,T.row),Q=Math.min(x.cell,T.cell),N=Math.max(x.cell,T.cell),H=new Set,R=M.value[x.row],c1=R?.cells[x.cell];for(let p1=$;p1<=G;p1++){const x1=M.value[p1];if(x1)for(let M1=Q;M1<=N;M1++){const w1=x1.cells[M1];w1?.editable&&(H.add(j(x1,w1)),s("cell-change",{rowKey:x1.key,cellKey:w1.key,value:x.value,row:x1,cell:w1}))}}w.value=null,L.value=null,C.value=R&&c1?{cells:H,source:j(R,c1)}:null}function K(x){let T=x+1,$="";for(;T>0;)T-=1,$=String.fromCharCode(65+T%26)+$,T=Math.floor(T/26);return $}function e1(x){return[`w-spreadsheet__cell--${x.variant||"default"}`,`w-spreadsheet__cell--${x.align||"left"}`,`w-spreadsheet__cell--tone-${x.tone||"default"}`,{"w-spreadsheet__cell--wrap":!!x.wrap},x.class||""]}function r1(x,T,$){const G=$.target.value;s("cell-change",{rowKey:x.key,cellKey:T.key,value:G,row:x,cell:T})}function h1(x){const $=x.currentTarget.previousElementSibling;$?.focus(),$?.showPicker?.()}return(x,T)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"frameRef",ref:E,class:e.normalizeClass(["w-spreadsheet-frame",{"w-spreadsheet-frame--expanded":c.value}])},[c.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"w-spreadsheet-frame__backdrop","aria-label":"Restore spreadsheet",onClick:T[0]||(T[0]=$=>F(!1))})):e.createCommentVNode("",!0),e.createElementVNode("div",q0,[n.expandable&&(n.showExpandButton!==!1||c.value)||n.downloadable&&(n.showDownloadButton!==!1||c.value)?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["w-spreadsheet-frame__toolbar",{"w-spreadsheet-frame__toolbar--hover":n.actionsOnHover&&!c.value}])},[c.value&&x.$slots["expanded-header"]?(e.openBlock(),e.createElementBlock("div",Q0,[e.renderSlot(x.$slots,"expanded-header")])):e.createCommentVNode("",!0),x.$slots["toolbar-status"]?(e.openBlock(),e.createElementBlock("div",J0,[e.renderSlot(x.$slots,"toolbar-status")])):e.createCommentVNode("",!0),e.renderSlot(x.$slots,"toolbar"),n.downloadable&&(n.showDownloadButton!==!1||c.value)?(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"w-spreadsheet-frame__expand",title:"Download spreadsheet","aria-label":"Download spreadsheet",onClick:h},[e.createVNode(e.unref(g.Download),{size:16})])):e.createCommentVNode("",!0),n.expandable&&(n.showExpandButton!==!1||c.value)?(e.openBlock(),e.createElementBlock("button",{key:3,type:"button",class:"w-spreadsheet-frame__expand",title:c.value?"Restore spreadsheet":"Expand spreadsheet","aria-label":c.value?"Restore spreadsheet":"Expand spreadsheet",onClick:T[1]||(T[1]=$=>F(!c.value))},[c.value?(e.openBlock(),e.createBlock(e.unref(g.Minimize),{key:0,size:16})):(e.openBlock(),e.createBlock(e.unref(g.Expand),{key:1,size:16}))],8,X0)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),n.loading?(e.openBlock(),e.createElementBlock("div",G0,[e.createVNode(O1),T[2]||(T[2]=e.createElementVNode("span",null,"Preparing sales estimate…",-1))])):(e.openBlock(),e.createElementBlock("div",{key:2,class:e.normalizeClass(["w-spreadsheet",{"w-spreadsheet--with-column-axis":l.value}]),style:e.normalizeStyle({maxHeight:c.value?"calc(100vh - 96px)":n.maxHeight})},[e.createElementVNode("table",{class:e.normalizeClass(["w-spreadsheet__table",{"w-spreadsheet__table--sticky-columns":m.value}]),style:e.normalizeStyle({minWidth:n.minWidth})},[e.createElementVNode("colgroup",null,[a.value?(e.openBlock(),e.createElementBlock("col",_0)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,$=>(e.openBlock(),e.createElementBlock("col",{key:$.key,style:e.normalizeStyle({width:$.width})},null,4))),128))]),l.value?(e.openBlock(),e.createElementBlock("thead",e3,[e.createElementVNode("tr",null,[a.value?(e.openBlock(),e.createElementBlock("th",n3)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.columns,($,G)=>(e.openBlock(),e.createElementBlock("th",{key:$.key,class:"w-spreadsheet__axis"},e.toDisplayString($.label||K(G)),1))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,($,G)=>(e.openBlock(),e.createElementBlock("tr",{key:$.key,class:e.normalizeClass({"w-spreadsheet__row--sticky":$.sticky})},[a.value?(e.openBlock(),e.createElementBlock("th",t3,e.toDisplayString(G+1),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList($.cells,(Q,N)=>(e.openBlock(),e.createElementBlock("td",{key:Q.key,class:e.normalizeClass(["w-spreadsheet__cell",[e1(Q),{"w-spreadsheet__cell--sortable":A(Q),"w-spreadsheet__cell--sticky":U($,N),"w-spreadsheet__cell--sticky-first":O($,N),"w-spreadsheet__cell--active":W($,Q)},X(G,N),z($,Q)]]),colspan:Q.colspan||1,title:Q.title,style:e.normalizeStyle(i1($,N)),tabindex:A(Q)?0:void 0,onClick:H=>S(Q),onKeydown:[e.withKeys(e.withModifiers(H=>S(Q),["prevent"]),["enter"]),e.withKeys(e.withModifiers(H=>S(Q),["prevent"]),["space"])],onPointerenter:H=>s1(G,N),onPointerdown:H=>J($,Q)},[e.renderSlot(x.$slots,`cell-${Q.key}`,{row:$,cell:Q,rowIndex:G},()=>[Q.editable?(e.openBlock(),e.createElementBlock("div",c3,[e.createElementVNode("input",{class:e.normalizeClass(["w-spreadsheet__input",{"w-spreadsheet__input--date":Q.inputType==="date"}]),type:Q.inputType||"text",value:Q.value??"",min:Q.min,placeholder:Q.placeholder,onInput:H=>r1($,Q,H)},null,42,a3),Q.inputType==="date"?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"w-spreadsheet__calendar","aria-label":"Choose date",title:"Choose date",onClick:h1},[e.createVNode(e.unref(g.CalendarDays),{size:16})])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(Q.value??""),1)],64))]),A(Q)?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(f.value===Q.key?v.value==="asc"?e.unref(g.ChevronUp):e.unref(g.ChevronDown):e.unref(g.ChevronsUpDown)),{key:0,class:"w-spreadsheet__sort-icon",size:14})):e.createCommentVNode("",!0),n.fillHandle&&Q.editable&&W($,Q)?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",class:"w-spreadsheet__fill-handle","aria-label":"Fill adjacent cells",title:"Drag to fill adjacent cells",onPointerdown:e.withModifiers(H=>l1(G,N,Q),["stop","prevent"])},null,40,o3)):e.createCommentVNode("",!0)],46,l3))),128))],2))),128))])],6)],6))])],2))}}),b1=(n,d)=>{const t=n.__vccOpts||n;for(const[o,s]of d)t[o]=s;return t},i3={},s3={class:"min-w-40 rounded-lg bg-white p-1.5 shadow-md shadow-zinc-900/5 dark:bg-zinc-700 dark:shadow-black/20"};function d3(n,d){return e.openBlock(),e.createElementBlock("div",s3,[e.renderSlot(n.$slots,"default")])}const c2=b1(i3,[["render",d3]]),u3=["disabled"],L1=e.defineComponent({__name:"WActionMenuItem",props:{danger:{type:Boolean},disabled:{type:Boolean}},emits:["click"],setup(n,{emit:d}){const t=d;return(o,s)=>(e.openBlock(),e.createElementBlock("button",{type:"button",disabled:n.disabled,onClick:s[0]||(s[0]=l=>t("click",l)),class:e.normalizeClass(["flex h-8 w-full items-center gap-2 rounded-md px-2 text-left font-medium transition disabled:cursor-not-allowed disabled:opacity-40",n.danger?"text-red-500 hover:bg-red-50 dark:hover:bg-red-950/30":"text-zinc-600 hover:bg-zinc-100 hover:text-zinc-900 dark:text-zinc-100 dark:hover:bg-zinc-600 dark:hover:text-white"])},[e.renderSlot(o.$slots,"default")],10,u3))}}),w2={light:{trendPositive:"#15803D",trendNegative:"#DB2777",canvas:"#F8F8F8",surface:"#FFFFFF",input:"#FFFFFF",raised:"#F2F3EF",popover:"#FFFFFF",border:"rgb(32 33 29 / 0.07)",borderHover:"rgb(32 33 29 / 0.16)",text:"#20211D",muted:"#64675C",dim:"#707467",accent:"#85C531",onAccent:"#17210B",primary:"#171717",primaryHover:"#303030",onPrimary:"#FFFFFF",secondary:"#EFEFEF",secondaryHover:"#E3E3E3",onSecondary:"#20211D",secondaryShadow:"none",switchOn:"linear-gradient(35deg, #32dc08 0%, #9de400 48%, #e9e600 100%)",switchOff:"#D4D4D8",switchDisabled:"#E4E4E7",switchThumb:"#FFFFFF",focusRing:"color-mix(in srgb, var(--wpic-accent) 18%, transparent)",positive:"#85C531",negative:"#B94238"},dark:{trendPositive:"#86EFAC",trendNegative:"#FDA4AF",canvas:"#090A05",surface:"#151515",input:"#151515",raised:"#2A2A28",popover:"#1F201D",border:"rgb(255 255 255 / 0.06)",borderHover:"rgb(255 255 255 / 0.14)",text:"#F5F5F5",muted:"#B4B4B4",dim:"#969696",accent:"#85C531",onAccent:"#17210B",primary:"#FFFFFF",primaryHover:"#E8E8E8",onPrimary:"#171717",secondary:"linear-gradient(180deg, #3A3B36, #30312D)",secondaryHover:"linear-gradient(180deg, #40413B, #353630)",onSecondary:"#F5F5F5",secondaryShadow:"inset 0 1px 0 rgb(255 255 255 / 0.15), 0 1px 2px rgb(0 0 0 / 0.12)",switchOn:"linear-gradient(35deg, #32dc08 0%, #9de400 48%, #e9e600 100%)",switchOff:"#343530",switchDisabled:"#252525",switchThumb:"#FFFFFF",focusRing:"color-mix(in srgb, var(--wpic-accent) 18%, transparent)",positive:"#85C531",negative:"#F0A09A"}},m3={light:["#3B73E1","#0891A6","#8B5CD6","#C58A16","#D64D79","#527FA8"],dark:["#7C9FE0","#5FB8C4","#AF94D5","#D8B26A","#D88FA5","#94A8BD"]};function B2(n,d={}){const t={...w2[n],...d},o={};for(const[s,l]of Object.entries(t))o[`--wpic-${s.replace(/[A-Z]/g,a=>`-${a.toLowerCase()}`)}`]=l;return Object.assign(o,{"--bg-main":t.canvas,"--bg-card":t.surface,"--bg-input":t.input,"--border-subtle":t.border,"--border-strong":t.border,"--border-hover":t.borderHover,"--text-main":t.text,"--text-muted":t.muted,"--text-dim":t.dim,"--wpic-primary":t.accent,"--wpic-primary-hover":t.accent,"--wpic-control-height":"36px","--wpic-table-border":n==="light"?`color-mix(in srgb, ${t.text} 11.5%, ${t.surface})`:t.border,"--wpic-segment-active":n==="dark"?t.secondaryHover:t.surface,"--wpic-segment-shadow":n==="dark"?t.secondaryShadow:`inset 0 0 0 1px ${t.border}, 0 1px 2px rgb(0 0 0 / 0.08)`,"--wpic-button-primary":t.primary,"--wpic-button-primary-hover":t.primaryHover}),o}const M2=Symbol("wpic-theme");function T1(){return e.inject(M2,e.computed(()=>null))}const h3=["data-wpic-theme"],y1=e.defineComponent({__name:"WPopover",props:{open:{type:Boolean},anchor:{},placement:{},width:{},minWidth:{},height:{},minHeight:{},maxHeight:{},panelScroll:{type:Boolean,default:!0},offset:{},matchAnchorWidth:{type:Boolean},freezePositionOnOpen:{type:Boolean,default:!0},flip:{type:Boolean,default:!0},zIndex:{default:9999},extraPanels:{}},emits:["close"],setup(n,{emit:d}){const t=n,o=T1(),s=d,l=Symbol.for("wpic-ui-popover-descendants"),a=e.inject(l,null),m=new Set;e.provide(l,{add(B){m.add(B),a?.add(B)},remove(B){m.delete(B),a?.remove(B)}});const f=e.computed(()=>{const B=t.anchor;return B?e.isRef(B)?B.value:B:null}),v=e.ref(null),c=e.ref(null),E=e.computed(()=>c.value??t.placement??"bottom-start"),w=e.computed(()=>{const B=[n1.offset(t.offset??6)];return t.flip&&!c.value&&B.push(n1.flip()),B.push(n1.shift({padding:4})),B.push(n1.size({padding:8,apply({availableHeight:U,rects:O,elements:i1}){const j=Math.max(U-8,50),W={maxHeight:t.maxHeight?`min(${t.maxHeight}, ${j}px)`:`${j}px`,overflowY:t.panelScroll?"auto":"hidden"};if(t.height&&(W.height=`min(${t.height}, ${j}px)`),t.minHeight&&(W.minHeight=`min(${t.minHeight}, ${j}px)`),t.matchAnchorWidth){const l1=`${O.reference.width}px`;W.width=l1,W.minWidth=l1}Object.assign(i1.floating.style,W)}})),B}),{floatingStyles:L,placement:b,update:C,isPositioned:h}=n1.useFloating(f,v,{placement:E,strategy:"fixed",open:e.computed(()=>t.open),whileElementsMounted:n1.autoUpdate,middleware:w}),F=e.computed(()=>{const B=b.value;return B.startsWith("top")?"bottom":B.startsWith("bottom")?"top":B.startsWith("left")?"right":B.startsWith("right")?"left":"top"}),q=B=>{const U=B.target,O=f.value,i1=v.value;i1&&i1.contains(U)||[...m].some(j=>j.contains(U))||O&&O.contains(U)||t.extraPanels?.some(j=>j?.contains(U))||s("close")},t1=B=>{if(B.key!=="Escape"||!t.open||[...m].some(O=>O.isConnected&&O.style.display!=="none"))return;B.preventDefault(),B.stopImmediatePropagation(),s("close");const U=f.value;U?.matches("button, input, [tabindex]")?U.focus():U?.querySelector("button, input, [tabindex]")?.focus()};let P=!1,Z=!1;function M(){Z||(document.addEventListener("pointerdown",q,!0),document.addEventListener("keydown",t1,!0),Z=!0)}function A(){Z&&(document.removeEventListener("pointerdown",q,!0),document.removeEventListener("keydown",t1,!0),Z=!1)}e.watch(()=>t.open,B=>{B?e.nextTick(()=>{P||!t.open||(C(),M())}):(c.value=null,A())},{immediate:!0}),e.watch(v,(B,U)=>{U&&a?.remove(U),B&&a?.add(B)}),e.watch(h,B=>{B&&t.open&&t.freezePositionOnOpen&&!c.value&&(c.value=b.value)}),e.onBeforeUnmount(()=>{P=!0,A(),v.value&&a?.remove(v.value)});const S=e.computed(()=>({...t.matchAnchorWidth?{}:{width:t.width??"auto"},...t.minWidth?{minWidth:t.minWidth}:{},transformOrigin:F.value,zIndex:t.zIndex}));return(B,U)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body",class:"wpic-popover"},[e.withDirectives(e.createElementVNode("div",{ref_key:"floatingEl",ref:v,"data-wpic-theme":e.unref(o)?.mode,class:e.normalizeClass([{"wpic-theme":e.unref(o),dark:e.unref(o)?.mode==="dark"},"wpic-popover-panel flex flex-col bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-800 rounded-xl shadow-xl dark:shadow-black/40 overflow-hidden"]),style:e.normalizeStyle([e.unref(o)?.variables,e.unref(L),S.value])},[e.renderSlot(B.$slots,"default")],14,h3),[[e.vShow,n.open]])]))}}),p3={key:0,class:"fixed right-0 top-0 z-[9997] flex h-full w-20 items-center justify-center border-l-2 border-[var(--wpic-primary)] bg-[var(--wpic-primary)]/10 text-[var(--wpic-primary)] pointer-events-none"},v3=["data-variant","data-maximized"],f3=["title"],g3={class:"min-w-0 flex-1 px-2 text-center"},C3={class:"truncate font-medium text-zinc-700 dark:text-zinc-200"},k3={key:0,class:"truncate text-zinc-500 dark:text-zinc-400"},z3={class:"flex shrink-0 items-center gap-1"},b3=["title"],y3=["title"],x3=["title"],w3=["title"],B3={class:"flex h-11 shrink-0 items-center justify-between px-3"},M3={class:"font-medium text-zinc-700 dark:text-zinc-200"},V3=["title"],E3={class:"space-y-2 px-3 pb-3"},N3={class:"truncate"},S3={class:"flex-1 overflow-y-auto overflow-x-visible px-2 pb-3"},L3={class:"mb-2 flex h-7 items-center justify-between px-2 font-medium text-zinc-500 dark:text-zinc-400"},D3={class:"truncate"},F3=["title"],$3={class:"space-y-0.5"},A3={key:0,class:"rounded-lg border border-dashed border-zinc-200 px-2 py-2 text-zinc-500 dark:border-zinc-700 dark:text-zinc-400"},T3=["onMouseenter"],H3=["onClick"],P3={class:"min-w-0 flex-1 truncate"},j3={key:0,class:"shrink-0 text-zinc-400"},W3={key:0,class:"px-3 py-2 text-zinc-400 dark:text-zinc-500"},R3=["onPointerdown","onClick"],I3={class:"min-w-0 flex-1 truncate"},Z3={class:"shrink-0 text-zinc-400"},U3={class:"mt-4"},K3={class:"flex h-7 items-center px-2 font-medium text-zinc-500 dark:text-zinc-400"},O3={class:"truncate"},Y3={class:"space-y-0.5"},q3={key:0,class:"rounded-lg border border-dashed border-zinc-200 px-2 py-2 text-zinc-500 dark:border-zinc-700 dark:text-zinc-400"},Q3=["onPointerdown","onClick"],J3={class:"block truncate"},X3={class:"shrink-0 text-zinc-400"},G3=["onClick"],_3=["onPointerenter","onMouseenter"],e4={class:"truncate"},n4={class:"flex min-h-0 flex-1"},t4={class:"flex min-w-0 flex-1 flex-col"},l4={key:0,class:"flex h-full flex-col items-center justify-center px-5 text-center text-zinc-500 dark:text-zinc-400"},c4={class:"font-medium"},a4={key:1,class:"flex h-full flex-col items-center justify-center px-5 text-center"},o4={class:"mb-3 flex h-11 w-11 items-center justify-center rounded-xl bg-zinc-100 text-zinc-500 dark:bg-zinc-700 dark:text-zinc-300"},r4={class:"font-semibold text-zinc-800 dark:text-zinc-100"},i4={key:0,class:"mt-1 max-w-xs text-zinc-500 dark:text-zinc-400"},s4={key:2,class:"space-y-4"},d4={class:"max-w-[82%]"},u4=["src","alt"],m4={class:"max-w-40 truncate"},h4={key:0,class:"shrink-0 text-zinc-400"},p4={key:0,class:"flex items-center gap-2 text-zinc-500 dark:text-zinc-400"},v4={key:1,class:"wpic-chat-loading-card",role:"status","aria-label":"Generating image"},f4=["innerHTML","onClick"],g4=["href","onClick"],C4=["src"],k4=["title","aria-label","onClick"],z4=["title","aria-label","onClick"],b4=["title","onClick"],y4=["onClick"],x4=["title","onClick"],w4={key:0,class:"mb-2 flex flex-wrap justify-end gap-1.5"},B4=["src","alt"],M4={class:"max-w-40 truncate"},V4={key:0,class:"shrink-0 text-zinc-400"},E4={key:1,class:"shrink-0 text-zinc-400"},N4=["title","onClick"],S4={class:"wpic-chat-panel__composer rounded-xl border border-zinc-200 bg-zinc-50 transition-colors focus-within:border-[var(--wpic-primary)]/50 dark:border-zinc-700 dark:bg-zinc-700"},L4={key:0,class:"mx-2 mt-2 overflow-hidden rounded-lg bg-white shadow-sm ring-1 ring-zinc-200 dark:bg-zinc-800 dark:ring-zinc-600"},D4=["onMousedown"],F4={class:"min-w-0 truncate font-medium text-zinc-900 dark:text-zinc-100"},$4={key:0,class:"max-w-32 shrink-0 truncate text-xs text-zinc-500 dark:text-zinc-400"},A4=["accept"],T4=["value","placeholder","disabled"],H4={class:"flex items-center justify-between px-2 pb-2"},P4=["disabled","title"],j4=["title"],W4=["disabled","title"],z2=80,R4=e.defineComponent({__name:"WChatPanel",props:{open:{type:Boolean},messages:{},mentionItems:{default:()=>[]},projects:{default:()=>[]},sessions:{default:()=>[]},modelValue:{default:""},title:{default:"Chat"},subtitle:{default:""},selectedProjectId:{default:null},selectedSessionId:{default:null},placeholder:{default:"Ask anything..."},emptyTitle:{default:"How can I help?"},emptyDescription:{default:""},noProjectsLabel:{default:"No projects yet"},noConversationsLabel:{default:"No conversations yet"},allLabel:{default:"All"},recentLabel:{default:"Recent"},projectsLabel:{default:"Projects"},conversationsLabel:{default:"Conversations"},sendLabel:{default:"Send"},newLabel:{default:"New chat"},newProjectLabel:{default:"New project"},newConversationLabel:{default:"New conversation"},renameProjectLabel:{default:"Rename project"},renameConversationLabel:{default:"Rename conversation"},deleteProjectLabel:{default:"Delete project"},deleteConversationLabel:{default:"Delete conversation"},clearLabel:{default:"Clear"},copyLabel:{default:"Copy"},copiedLabel:{default:"Copied"},newChatFromMessageLabel:{default:"Start new chat from this message"},attachFilesLabel:{default:"Attach files"},removeAttachmentLabel:{default:"Remove attachment"},stopLabel:{default:"Stop"},applyPromptLabel:{default:"Apply prompt"},applyAllLabel:{default:"Apply all"},applySettingLabel:{default:"Apply setting"},thinkingLabel:{default:"Thinking..."},dockLabel:{default:"Dock"},undockLabel:{default:"Undock"},closeLabel:{default:"Close"},helpfulLabel:{default:"Helpful"},notHelpfulLabel:{default:"Not helpful"},attachments:{default:()=>[]},accept:{default:""},customAttachmentPicker:{type:Boolean,default:!1},showNavigator:{type:Boolean,default:!0},hideNewConversation:{type:Boolean,default:!1},hideClear:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},cancellable:{type:Boolean,default:!1},docked:{type:Boolean,default:!1},maximized:{type:Boolean,default:!1},maximizedMargin:{default:20},width:{default:420},height:{default:560},x:{default:-1},y:{default:-1},topOffset:{default:0},minWidth:{default:340},minHeight:{default:400},zIndex:{default:80},variant:{default:"default"}},emits:["close","send","clear","new","new-project","new-conversation","select-project","select-session","rename-project","rename-session","delete-project","delete-session","move-session","edit-message","new-chat-from-message","message-feedback","apply-message-proposal","navigate","cancel","attach","files-selected","remove-attachment","update:modelValue","update:docked","update:maximized","update:width","update:height","update:x","update:y"],setup(n,{emit:d}){const t=n,o=d,s=e.useSlots(),l=e.ref(null),a=e.ref(null),m=e.ref(null),f=e.ref(null),v=e.ref(null),c=e.ref(null),E=e.ref(0),w=e.ref(0),L=e.ref(!1),b=e.ref(null),C=e.ref(null);let h=null;const F=e.ref(!1),q=e.ref(!1),t1=e.ref(!1);e.ref(new Set);const P=e.ref(null),Z=e.ref(null),M=e.ref({}),A=e.ref(null);let S=null,B=null;function U(){B?.disconnect(),B=null;const r=a.value,i=v.value;if(!r||!i||typeof ResizeObserver>"u")return;const u=()=>i.style.setProperty("--wpic-chat-footer-height",`${r.getBoundingClientRect().height}px`);u(),B=new ResizeObserver(u),B.observe(r)}const O=e.computed(()=>A.value?[]:t.messages.filter(r=>r.role!=="system")),i1=e.computed(()=>t.loading||A.value!==null),j=e.computed(()=>t.modelValue.trim().length>0&&!t.loading),J=e.computed(()=>t.attachments.length>0),W=e.computed(()=>{const r=t.modelValue.slice(0,w.value),i=r.match(/(?:^|\s)@([^\s@]*)$/);return i?{start:r.length-i[0].length+(i[0].startsWith(" ")?1:0),query:i[1].toLowerCase()}:null}),l1=e.computed(()=>{const r=W.value;if(!r)return[];const i=r.query;return t.mentionItems.filter(u=>u.label.toLowerCase().includes(i)).slice(0,6)}),s1=e.computed(()=>t.showNavigator&&L.value),V=e.computed(()=>t.selectedProjectId??null),X=e.computed(()=>t.sessions.filter(r=>!r.projectId)),z=e.computed(()=>{const r=new Map;for(const i of t.projects)r.set(i.id,[]);for(const i of t.sessions){if(!i.projectId)continue;const u=r.get(i.projectId);u&&u.push(i)}return r});function D(r){const i=r.toLowerCase();if(i.includes("doubao-seedance-1-5-pro-251215")||i.includes("doubao seedance 1.5")||i.includes("seedance 1.5")||i.includes("seedance video"))return"jimeng:doubao-seedance-1-5-pro-251215";if(i.includes("imagen 4")||i.includes("imagen-4"))return"google:imagen-4.0-generate-001";if(i.includes("gpt-image-1")||i.includes("gpt image 1"))return"openai:gpt-image-1";if(i.includes("gpt-image-2")||i.includes("gpt image 2"))return"openai:gpt-image-2";if(i.includes("doubao-seedream-4-5-251128"))return"jimeng:doubao-seedream-4-5-251128";if(i.includes("doubao-seedream-4-0-250828"))return"jimeng:doubao-seedream-4-0-250828";if(i.includes("doubao seedream 5")||i.includes("seedream 5")||i.includes("doubao seedream 4.5")||i.includes("seedream 4.5"))return"jimeng:doubao-seedream-4-5-251128";if(i.includes("doubao seedream 4")||i.includes("seedream 4"))return"jimeng:doubao-seedream-4-0-250828";if(i.includes("auto"))return"auto";const u=r.match(/\b([a-z][a-z0-9_-]+):([a-z0-9._-]+)\b/i);if(u)return`${u[1].toLowerCase()}:${u[2]}`}function K(r){if(r!=="auto"){if(r.includes("seedance"))return"video";if(r.includes("gpt-image")||r.includes("imagen")||r.includes("seedream")||r.includes("jimeng:"))return"image"}}function e1(r){const i=[],u=new Set,k=/\b(gpt[-\s]?image[-\s]?[12]|imagen\s*4|doubao\s+seedance\s+1\.5(?:\s+pro)?|seedance\s+1\.5(?:\s+pro)?|doubao\s+seedream\s+(?:5(?:\.0)?|4\.5|4)|seedream\s+(?:5(?:\.0)?|4\.5|4)|[a-z][a-z0-9_-]+:[a-z0-9._-]+|auto)\b/gi;for(const p of r.matchAll(k)){const y=p[1],I=D(y);!I||u.has(I)||(u.add(I),i.push({label:y,value:I}))}return i}function r1(r,i){return r.match(new RegExp(`${i}=["']([^"']+)["']`,"i"))?.[1]}function h1(r){const i={};for(const k of r.matchAll(/\[SETTING\s+([^\]]+)\]([\s\S]*?)\[\/SETTING\]/gi)){const p=k[1]??"",y=r1(p,"key"),I=r1(p,"value")??k[2]?.trim();if(!(!y||!I))if(y==="duration"||y==="fps"||y==="count"){const Y=Number(I);Number.isFinite(Y)&&(i[y]=Y)}else if(y==="model"){const Y=D(I)??D(k[2]?.trim()??"");Y&&(i.model=Y)}else(y==="aspect"||y==="resolution"||y==="format")&&(i[y]=I)}const u=r.split(/\r?\n/).map(k=>k.replace(/^[\s>*-]+/,"").trim()).filter(Boolean);for(const k of u){const p=k.toLowerCase();if(/(supporte|supports?|disponible|available|dur[eé]es?\s*:|ratios?\s*:|jusqu['’]?à|up to)/i.test(p))continue;const y=k.split(":").slice(1).join(":").trim()||k,I=y.match(/\b(\d{1,2}:\d{1,2})\b/);(p.includes("format")||p.includes("aspect")||p.includes("ratio"))&&I&&(i.aspect=I[1]);const Y=y.match(/\b([1248]K)\b/i);(p.includes("résolution")||p.includes("resolution"))&&Y&&(i.resolution=Y[1].toUpperCase());const _=y.match(/\b(\d{1,3})\s*(?:s|sec|secondes?|seconds?)\b/i);(p.includes("durée")||p.includes("duration"))&&_&&(i.duration=Number(_[1]));const a1=y.match(/\b(\d{1,3})\s*fps\b/i);p.includes("fps")&&a1&&(i.fps=Number(a1[1]));const o1=y.match(/\b(\d{1,2})\b/);if((p.includes("count")||p.includes("nombre")||p.includes("variantes"))&&o1&&(i.count=Number(o1[1])),p.includes("modèle")||p.includes("modele")||p.includes("model")){const v1=D(y);v1&&(i.model=v1)}p.includes("jpg")||p.includes("jpeg")?i.format="jpg":p.includes("png")?i.format="png":p.includes("webp")&&(i.format="webp")}return Object.keys(i).length?i:void 0}function x(r){const i=r.match(/\[TASK(?:\s+([^\]]+))?\](?:([\s\S]*?)\[\/TASK\])?/i);if(i){const k=(r1(i[1]??"","value")??i[2]?.trim())?.toLowerCase();if(["image","video","audio","text"].includes(String(k)))return k}const u=r.split(/\r?\n/).map(k=>k.replace(/^[\s>*-]+/,"").trim()).filter(Boolean);for(const k of u){const p=k.toLowerCase(),y=k.split(":").slice(1).join(":").trim().toLowerCase()||p;if(/(task|type|mode|surface|format|réglage|reglage|setting)/i.test(p)){if(/\baudio\b|subtitles?|sous-titres?|transcri|tts|voice|voix/.test(y))return"audio";if(/\bvid[eé]o\b|\bvideo\b|\bfps\b|duration|dur[eé]e/.test(y))return"video";if(/\bimage\b|photo|visuel|illustration|aspect|ratio|resolution|résolution/.test(y))return"image";if(/\btext\b|texte|copy|caption|script/.test(y))return"text"}}}function T(r){const i=r.match(/\[PROMPT\]([\s\S]*?)\[\/PROMPT\]/i)?.[1];if(i){const _=M1(i).trim().replace(/^["“]|["”]$/g,"");if(_)return _}const u=r.replace(/\r\n/g,`
|
|
3
3
|
`).split(`
|
|
4
4
|
`),k=[];let p=!1,y=!1,I=!1;for(const _ of u){const a1=_.trim().replace(/^[\s>*-]+/,"").replace(/^#{1,6}\s+/,"").replace(/^\*\*|\*\*$/g,"").trim();if(y){if(/^```/.test(a1))break;k.push(_);continue}if(!p){const o1=a1.match(/^(?:(?:voici|essayez|utilisez|use|try)\s+(?:ce\s+)?(?:prompt)|prompt\s+(?:modifi[eé]|am[eé]lior[eé]|propos[eé]|recommand[eé])|prompt)\s*:\s*(.*)$/i);if(!o1){I||=/\bprompt\b/i.test(a1),I&&/^```/.test(a1)&&(p=!0,y=!0);continue}p=!0,o1[1]?.trim()&&k.push(o1[1].trim());continue}if(/^(?:r[eé]glages?(?:\s+recommand[eé]s?)?|settings?|mod[eè]le|model)\s*:/i.test(a1))break;k.push(_)}return M1(k.join(`
|
package/dist/wpic-ui.js
CHANGED
|
@@ -461,7 +461,7 @@ const S3 = {
|
|
|
461
461
|
a("tr", Q3, [
|
|
462
462
|
n.selectable ? (e(), l("th", {
|
|
463
463
|
key: 0,
|
|
464
|
-
class: g(["w-9 pr-2", n.compact ? "py-1" : "py-
|
|
464
|
+
class: g(["w-9 pr-2", n.compact ? "py-1.5" : "py-3", n.flushEdges ? "pl-0" : "pl-2"])
|
|
465
465
|
}, [
|
|
466
466
|
V(v0, {
|
|
467
467
|
"model-value": D.value,
|
|
@@ -472,11 +472,11 @@ const S3 = {
|
|
|
472
472
|
], 2)) : m("", !0),
|
|
473
473
|
n.expandable ? (e(), l("th", {
|
|
474
474
|
key: 1,
|
|
475
|
-
class: g(["w-8 pr-2", n.compact ? "py-1" : "py-
|
|
475
|
+
class: g(["w-8 pr-2", n.compact ? "py-1.5" : "py-3", n.flushEdges && !n.selectable ? "pl-0" : "pl-2"])
|
|
476
476
|
}, null, 2)) : m("", !0),
|
|
477
477
|
(e(!0), l(E, null, a1(n.columns, (L, R) => (e(), l("th", {
|
|
478
478
|
key: L.field,
|
|
479
|
-
class: g([p1(R, n.compact ? "py-1" : "py-
|
|
479
|
+
class: g([p1(R, n.compact ? "py-1.5" : "py-3"), "whitespace-nowrap text-zinc-500 dark:text-zinc-300 font-medium", G(L.align), R === 0 && !n.expandable && !n.selectable ? "wpic-table__sticky sticky left-0 z-10" : ""]),
|
|
480
480
|
style: m1({ ...V1(L) })
|
|
481
481
|
}, [
|
|
482
482
|
Q(T.$slots, "th-" + L.field, {
|