evals-lab 0.1.4 → 0.3.0
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 +66 -0
- package/README.md +43 -0
- package/lab/VERSION +1 -1
- package/lab/demo/datasets/demo-1.json +2187 -1644
- package/lab/demo/datasets/demo-2.json +1870 -1485
- package/lab/demo/manifest.json +2 -2
- package/lab/demo/pipelines/demo-1.json +36 -30
- package/lab/demo/pipelines/demo-2.json +36 -30
- package/lab/evals-core.mjs +1122 -710
- package/lab/kinds/list.mjs +1 -1
- package/lab/metrics/builtin.mjs +96 -18
- package/lab/run-evals.js +77 -49
- package/lab/server.py +544 -154
- package/lab/web/dist/assets/{gallery-o7c4lfpn.css → gallery-DFeJkfUw.css} +1 -1
- package/lab/web/dist/assets/gallery-DRBlZ8mP.js +3 -0
- package/lab/web/dist/assets/main-DMpQmW8l.js +21 -0
- package/lab/web/dist/assets/main-wfqC6HcM.css +1 -0
- package/lab/web/dist/assets/tokens-BEn6_hVz.css +1 -0
- package/lab/web/dist/assets/tokens-iGpvbD5R.js +55 -0
- package/lab/web/dist/gallery.html +4 -4
- package/lab/web/dist/index.html +4 -4
- package/package.json +3 -2
- package/lab/web/dist/assets/gallery-DipkRvqJ.js +0 -3
- package/lab/web/dist/assets/main-61NS6C4m.js +0 -18
- package/lab/web/dist/assets/main-DjQQums6.css +0 -1
- package/lab/web/dist/assets/tokens-B9intIuT.js +0 -51
- package/lab/web/dist/assets/tokens-s6I-RMVq.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
.gallery-index,.gallery-one{max-width:720px;padding:var(--s4);min-width:0;margin:0 auto}.gallery-index h1{font-size:var(--t-title);font-weight:600}.gallery-index ul{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.gallery-index li{gap:var(--s2);flex-wrap:wrap;align-items:baseline;min-height:44px;display:flex}.gallery-index a{color:var(--amber)}.gallery-index code{font:var(--t-note) var(--mono);color:var(--faint)}.gallery-nav{gap:var(--s2);margin-bottom:var(--s3);font-size:var(--t-note);color:var(--dim);align-items:center;min-height:44px;display:flex}.gallery-nav a{color:var(--amber)}.note{color:var(--dim);font-size:var(--t-label);margin:0}
|
|
1
|
+
.gallery-index,.gallery-one{max-width:720px;padding:var(--s4);min-width:0;margin:0 auto}.gallery-index h1{font-size:var(--t-title);font-weight:600}.gallery-index ul{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.gallery-index li{gap:var(--s2);flex-wrap:wrap;align-items:baseline;min-height:44px;display:flex}.gallery-index a{color:var(--amber)}.gallery-index code{font:var(--t-note) var(--mono);color:var(--faint)}.gallery-nav{gap:var(--s2);margin-bottom:var(--s3);font-size:var(--t-note);color:var(--dim);align-items:center;min-height:44px;display:flex}.gallery-nav a{color:var(--amber)}.note{color:var(--dim);font-size:var(--t-label);margin:0}.gallery-row{gap:var(--s2);flex-wrap:wrap;display:flex}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import{$ as e,C as t,H as n,O as r,S as i,b as a,c as o,d as s,et as c,f as l,h as u,k as d,m as f,n as p,p as m,r as h,v as g,x as _,y as v}from"./tokens-iGpvbD5R.js";var y=c(),b=e(),x=[{id:`text`,label:`Plain text`,settings:[]},{id:`list`,label:`List`,settings:[{key:`parse`,label:`Parse as`,type:`select`,choices:[{value:`csv`,label:`CSV`},{value:`lines`,label:`One a line`},{value:`json`,label:`JSON array`}]},{key:`preamble`,label:`Ignore preamble`,type:`checkbox`}]}],S=[{id:`case`,label:`Case`,accepts:[`list`],options:[{key:`mode`,label:`Mode`,type:`select`,choices:[{value:`LOWER`,label:`lower`},{value:`SENTENCE`,label:`Sentence`},{value:`TITLE`,label:`Title`},{value:`UPPER`,label:`UPPER`},{value:`NONE`,label:`As replied`}]}],defaults:()=>({type:`case`,mode:`LOWER`})},{id:`join`,label:`Join`,accepts:[`list`],options:[{key:`with`,label:`Separator`,type:`text`}],defaults:()=>({type:`join`,with:`, `})}],C=[{name:`language`,type:`value`,value:`English UK`},{name:`geo-location`,type:`value`,value:`Hamilton, Waikato, New Zealand`},{name:`geo`,type:`block`,enabled:!1}],w=[{path:`group/open`,title:`Group, open`},{path:`group/closed`,title:`Group, closed with a note`},{path:`group/no-menu`,title:`Group without actions`},{path:`group/sub`,title:`Sub-group, level 3`},{path:`group/depth`,title:`Group, three levels deep`},{path:`group/renaming`,title:`Group, renaming`},{path:`menu/disabled`,title:`Menu with a disabled item`},{path:`header/pipeline`,title:`Context header, a Pipeline`},{path:`header/dataset`,title:`Context header, a Dataset`},{path:`header/source`,title:`Context header, a Source with its crumb`},{path:`header/long`,title:`Context header, a long name`},{path:`menu/busy`,title:`Menu with a busy item`},{path:`loading/group`,title:`Loading, inside a group`},{path:`loading/error`,title:`Loading failed, with Retry`},{path:`loading/busy-button`,title:`Busy buttons`},{path:`repeater/empty`,title:`Repeater, empty`},{path:`repeater/min`,title:`Repeater at min 1`},{path:`repeater/between`,title:`Repeater, two of four`},{path:`repeater/max`,title:`Repeater at max`},{path:`repeater/locked`,title:`Repeater, a locked row`},{path:`props/controls`,title:`Property table, every control`},{path:`props/required`,title:`Property table, required only`},{path:`props/long`,title:`Property table, long values`},{path:`props/widths`,title:`Property table, a width per value`},{path:`props/secret`,title:`Property table, a key held and not held`},{path:`props/code`,title:`Property table, an endpoint and a payload`},{path:`table/sortable`,title:`Table, sortable headers and a row menu`},{path:`table/paged`,title:`Table, paged ten at a time`},{path:`table/filter`,title:`Table with a filter bar`},{path:`table/filter-on`,title:`Table, filtered, with a scope`},{path:`edit/form`,title:`Edit modal, a profile`},{path:`edit/plain`,title:`Edit modal, one section and no menu`},{path:`edit/long`,title:`Edit modal, a form that scrolls`},{path:`edit/status`,title:`Edit modal, a status that is a refusal`},{path:`view/tokens`,title:`Token mappings`},{path:`view/output`,title:`Output with Case`},{path:`view/output-text`,title:`Output, plain text`},{path:`view/output-two`,title:`Output with two modifiers`},{path:`view/output-twice`,title:`Output with the same modifier twice`},{path:`view/output-none`,title:`Responses, read as text`},{path:`view/output-flow`,title:`Responses with Read as`}],T=n(),E=()=>{},D=(...e)=>e.map(e=>({label:e,icon:e===`Remove`?i.remove:e===`Clone`?i.clone:i.rename,onSelect:E,destructive:e===`Remove`}));function O({start:e,min:t,max:n,locked:r}){let[i,a]=(0,y.useState)(e);return(0,T.jsx)(f,{noun:`scenario`,items:i,...t===void 0?{}:{min:t},...n===void 0?{}:{max:n},...r?{locked:r}:{},onAdd:()=>a([...i,`Target ${i.length+1}`]),onRemove:e=>a(i.filter((t,n)=>n!==e)),onClone:e=>a([...i.slice(0,e+1),`${i[e]} copy`,...i.slice(e+1)]),onRename:E,empty:`No targets yet.`,renderItem:(e,t,n)=>(0,T.jsx)(g,{id:`scenario-${t}`,title:e,level:3,actions:n,children:(0,T.jsx)(`p`,{className:`note`,children:`A Target profile and a prompt for each job.`})},`${e}-${t}`)})}function k(){let[e,t]=(0,y.useState)(C),n=(n,r)=>t(e.map(e=>e.name===n?{...e,...r}:e));return(0,T.jsx)(p,{mappings:e,onValue:(e,t)=>n(e,{value:t}),onEnabled:(e,t)=>n(e,{enabled:t}),onEdit:E,onRemove:n=>t(e.filter(e=>e.name!==n)),onAdd:()=>t([...e,{name:`token${e.length+1}`,type:`value`,value:``}])})}function A({start:e,format:t=!0,readAs:n}){let[r,i]=(0,y.useState)(e),[a,o]=(0,y.useState)(t),[s,c]=(0,y.useState)(n);return(0,T.jsx)(h,{id:`output`,out:r,format:a,readAs:s,outputKinds:x,modifiers:S,onAddFormat:()=>o(!0),onRemoveFormat:()=>{o(!1),i({kind:`text`,modifiers:[]})},onReadAs:c,onKind:e=>i({kind:e,modifiers:r.modifiers.filter(t=>S.find(e=>e.id===t.type)?.accepts.includes(e))}),onModifier:(e,t)=>i({...r,modifiers:r.modifiers.map((n,r)=>r===e?t:n)}),onAddModifier:e=>i({...r,modifiers:[...r.modifiers,e]}),onRemoveModifier:e=>i({...r,modifiers:r.modifiers.filter((t,n)=>n!==e)})})}function j(){let[e,t]=(0,y.useState)(`Job 1`),[n,r]=(0,y.useState)(!0);return(0,T.jsx)(g,{id:`renaming`,title:e,actions:[{label:`Rename`,icon:i.rename,onSelect:()=>r(!0)}],...n?{rename:{value:e,onCommit:n=>{t(n||e),r(!1)},onCancel:()=>r(!1)}}:{},children:(0,T.jsx)(`p`,{className:`note`,children:`Enter or leaving keeps the name; Escape cancels.`})})}function M({sections:e,menu:t,status:n,statusBad:r,outcome:i}){return(0,T.jsx)(s,{title:`Lab Ollama`,...n?{status:n}:{},...r?{statusBad:!0}:{},...t?{menu:t}:{},sections:e,actions:[{label:`Test connection`,icon:d,onSelect:E,outcome:i?{label:i,onOpen:E}:void 0}],onClose:E})}var N=()=>[{key:`name`,label:`Name`,required:!0,control:{type:`text`,value:`Lab Ollama`,onChange:E}},{key:`type`,label:`Type`,required:!0,control:{type:`select`,value:`ollama`,onChange:E,options:[{value:`ollama`,label:`Ollama (Local)`},{value:`anthropic`,label:`Anthropic`}]}},{key:`url`,label:`Address`,control:{type:`text`,value:``,placeholder:`the lab's Ollama`,onChange:E}},{key:`key`,label:`Key`,control:{type:`secret`,value:``,onChange:E}},{key:`model`,label:`Model`,control:{type:`text`,value:`minicpm-v4.6:latest`,onChange:E}}],P=()=>[{key:`seed`,label:`Seed`,control:{type:`text`,value:``,placeholder:`1234`,marker:`default`,onChange:E}},{key:`nPredict`,label:`Reply tokens`,control:{type:`text`,value:``,size:`num`,marker:`server`,onChange:E}},{key:`temperature`,label:`Temperature`,control:{type:`text`,value:`0.3`,onChange:E}},{key:`repeatPenalty`,label:`Repeat penalty`,control:{type:`text`,value:``,size:`num`,marker:`server`,onChange:E}}],F=()=>[{key:`endpoint`,label:`Endpoint`,required:!0,control:{type:`code`,text:`http://127.0.0.1:11434/api/chat`}},{key:`prompt`,label:`Prompt`,required:!0,control:{type:`static`,text:`(prompt)`}},{key:`model`,label:`model`,control:{type:`code`,text:`minicpm-v4.6:latest`}},{key:`options`,label:`options`,control:{type:`code`,text:`{"seed":1234,"temperature":0.3}`}}],I={key:`kind`,label:`Response Format`,required:!0,control:{type:`select`,value:`list`,onChange:E,options:x.map(e=>({value:e.id,label:e.label}))}},L=({children:e})=>(0,T.jsx)(`div`,{style:{borderTop:`1px solid var(--line)`,paddingTop:`var(--s4)`},children:e}),R=(...e)=>e.map(e=>({label:e,icon:e===`Delete`?i.remove:e===`Clone`?i.clone:i.rename,onSelect:E,destructive:e===`Delete`})),z={"header/pipeline":()=>(0,T.jsx)(L,{children:(0,T.jsx)(u,{kind:`Pipeline`,name:`Pipeline 1`,onPick:E,meta:`2 jobs · 3 Targets`,primary:{label:`New pipeline`,icon:r,onSelect:E},actions:R(`Rename`,`Clone`,`Export YAML`,`Import YAML…`,`Restore…`,`Delete`)})}),"header/dataset":()=>(0,T.jsx)(L,{children:(0,T.jsx)(u,{kind:`Dataset`,name:`Demo 1`,onPick:E,meta:`62 cases · 19 graded · Source: Demo 1 images`,primary:{label:`New dataset`,icon:r,onSelect:E},actions:R(`Rename`,`Clone`,`Import JSON…`,`Export JSON`,`Restore…`,`Delete`)})}),"header/source":()=>(0,T.jsx)(L,{children:(0,T.jsx)(u,{kind:`Source`,name:`Demo 1 images`,crumb:{label:`Sources`,onClick:E},onPick:E,meta:`File Library · 63 files · 48 MB`,primary:{label:`Upload`,icon:t,onSelect:E},actions:R(`Rename`,`Delete`)})}),"header/long":()=>(0,T.jsx)(L,{children:(0,T.jsx)(u,{kind:`Pipeline`,name:`Receipts and handwritten menus, second pass with the tighter prompt and a Contains metric`,onPick:E,meta:`12 jobs · 8 Targets`,primary:{label:`New pipeline`,icon:r,onSelect:E},actions:R(`Rename`,`Clone`,`Delete`)})}),"group/open":()=>(0,T.jsx)(g,{id:`g`,title:`Evals`,actions:D(`Change`,`Remove`),children:(0,T.jsx)(`p`,{className:`note`,children:`The graded set.`})}),"group/closed":()=>(0,T.jsx)(g,{id:`g`,title:`Content`,open:!1,note:`Sample library, 63 files`,actions:D(`Change`,`Remove`)}),"group/no-menu":()=>(0,T.jsx)(g,{id:`g`,title:`Mapping`,children:(0,T.jsx)(`p`,{className:`note`,children:`Nothing to do to it.`})}),"group/sub":()=>(0,T.jsx)(g,{id:`g`,title:`Job 1`,actions:D(`Rename`,`Remove`),children:(0,T.jsx)(g,{id:`g-sub`,title:`Scenarios`,level:3,actions:D(`Clear`),children:(0,T.jsx)(`p`,{className:`note`,children:`Inside a pane.`})})}),"group/depth":()=>(0,T.jsxs)(g,{id:`g`,title:`Job 1`,actions:D(`Rename`,`Remove`),children:[(0,T.jsxs)(g,{id:`g-scenarios`,title:`Scenarios`,level:3,children:[(0,T.jsx)(g,{id:`g-plain`,title:`Plain`,level:3,actions:D(`Rename`,`Remove`),children:(0,T.jsx)(`p`,{className:`note`,children:`A pane, a section of it, and a thing with a name inside that section.`})}),(0,T.jsx)(g,{id:`g-strict`,title:`Strict`,level:3,actions:D(`Rename`,`Remove`)})]}),(0,T.jsx)(g,{id:`g-output`,title:`Output`,level:3,children:(0,T.jsx)(`p`,{className:`note`,children:`The next section of the same pane.`})})]}),"group/renaming":()=>(0,T.jsx)(j,{}),"menu/disabled":()=>(0,T.jsx)(g,{id:`g`,title:`Target 4`,actions:[{label:`Rename`,icon:i.rename,onSelect:E},{label:`Clone`,icon:i.clone,onSelect:E,disabled:!0},{label:`Remove`,icon:i.remove,onSelect:E,destructive:!0}]}),"menu/busy":()=>(0,T.jsx)(g,{id:`g`,title:`History`,actions:[{label:`Export JSON`,icon:i.export,onSelect:E,busy:!0},{label:`Clear`,icon:i.clear,onSelect:E,destructive:!0}]}),"loading/group":()=>(0,T.jsx)(g,{id:`g`,title:`History`,actions:D(`Rename`),children:(0,T.jsx)(a,{label:`Runs`,delay:0})}),"loading/error":()=>(0,T.jsx)(g,{id:`g`,title:`History`,children:(0,T.jsx)(a,{label:`Runs`,error:`Runs not loaded: server unreachable.`,onRetry:E})}),"loading/busy-button":()=>(0,T.jsx)(g,{id:`g`,title:`Run`,children:(0,T.jsxs)(`div`,{className:`gallery-row`,children:[(0,T.jsxs)(`button`,{type:`button`,className:`run`,disabled:!0,"aria-busy":!0,children:[(0,T.jsx)(_,{size:16}),`Run`]}),(0,T.jsxs)(`button`,{type:`button`,className:`ghost`,disabled:!0,"aria-busy":!0,children:[(0,T.jsx)(_,{}),`Older`]})]})}),"repeater/empty":()=>(0,T.jsx)(O,{start:[]}),"repeater/min":()=>(0,T.jsx)(O,{start:[`Target 1`],min:1}),"repeater/between":()=>(0,T.jsx)(O,{start:[`Target 1`,`Target 2`],min:1,max:4}),"repeater/max":()=>(0,T.jsx)(O,{start:[`Target 1`,`Target 2`,`Target 3`,`Target 4`],min:1,max:4}),"repeater/locked":()=>(0,T.jsx)(O,{start:[`Reply`,`Target 1`],locked:(e,t)=>t===0}),"props/controls":()=>(0,T.jsx)(l,{label:`Controls`,onRename:E,onRemove:E,onAdd:E,addLabel:`Add row`,rows:[I,{key:`language`,label:`{language}`,code:!0,control:{type:`text`,value:`English UK`,onChange:E}},{key:`geo`,label:`{geo}…{/geo}`,code:!0,control:{type:`static`,text:`Block`},enabled:{checked:!0,onChange:E}},{key:`image`,label:`Image`,control:{type:`checkbox`,checked:!0,label:`Send`,onChange:E}}]}),"props/required":()=>(0,T.jsx)(l,{label:`Output`,onRemove:E,rows:[I]}),"props/long":()=>(0,T.jsx)(l,{label:`Long`,onRemove:E,rows:[{key:`geo-location`,label:`{geo-location}`,code:!0,control:{type:`text`,value:`Hamilton, Waikato, New Zealand, Southern Hemisphere, Earth`,onChange:E}},{key:`averylongtokennamethatdoesnotbreak`,label:`{averylongtokennamethatdoesnotbreak}`,code:!0,control:{type:`text`,value:``,onChange:E}}]}),"props/widths":()=>(0,T.jsx)(l,{label:`Widths`,rows:[{key:`type`,label:`Type`,required:!0,control:{type:`select`,value:`ollama`,onChange:E,options:[{value:`ollama`,label:`Ollama (Local)`},{value:`anthropic`,label:`Anthropic`}]}},{key:`url`,label:`Address`,control:{type:`text`,value:``,placeholder:`the lab's Ollama`,onChange:E}},{key:`model`,label:`Model`,control:{type:`text`,value:`minicpm-v4.6:latest`,onChange:E}},{key:`seed`,label:`Seed`,control:{type:`text`,value:``,placeholder:`1234`,marker:`default`,onChange:E}},{key:`nPredict`,label:`Reply tokens`,control:{type:`text`,value:``,size:`num`,marker:`server`,onChange:E}},{key:`temperature`,label:`Temperature`,control:{type:`text`,value:`0.2`,onChange:E}},{key:`grammar`,label:`Grammar`,control:{type:`textarea`,value:`root ::= item (", " item)*
|
|
2
|
+
item ::= [a-z ]+`,onChange:E}}]}),"props/secret":()=>(0,T.jsx)(l,{label:`Keys`,rows:[{key:`held`,label:`Key`,control:{type:`secret`,value:`sk-not-a-real-key-0000`,onChange:E}},{key:`empty`,label:`Key`,control:{type:`secret`,value:``,onChange:E}}]}),"props/code":()=>(0,T.jsx)(l,{label:`Debug`,rows:[{key:`endpoint`,label:`Endpoint`,required:!0,control:{type:`code`,text:`https://api.anthropic.com/v1/messages`}},{key:`prompt`,label:`Prompt`,required:!0,control:{type:`static`,text:`(prompt)`}},{key:`model`,label:`model`,control:{type:`code`,text:`claude-sonnet-4-5-20250929`}},{key:`options`,label:`options`,control:{type:`code`,text:`{"seed":1234,"temperature":0}`}},{key:`stream`,label:`stream`,control:{type:`code`,text:`false`}}]}),"table/sortable":()=>(0,T.jsx)(U,{count:4}),"table/paged":()=>(0,T.jsx)(U,{count:35,pageSize:10}),"table/filter":()=>(0,T.jsx)(H,{}),"table/filter-on":()=>(0,T.jsx)(H,{search:`IMG_40`,size:`large`}),"edit/form":()=>(0,T.jsx)(M,{outcome:`Connected`,menu:[{label:`Restore…`,icon:i.restore,onSelect:E},{label:`Apply preset: repeat 1.3`,icon:i.preset,onSelect:E}],sections:[{key:`identity`,rows:N()},{key:`settings`,title:`Settings`,rows:P()},{key:`debug`,title:`Debug`,rows:F(),folded:!0}]}),"edit/plain":()=>(0,T.jsx)(s,{title:`A mapping`,sections:[{key:`one`,rows:[I,{key:`with`,label:`Separator`,control:{type:`text`,value:`, `,onChange:E}}]}],onClose:E}),"edit/long":()=>(0,T.jsx)(M,{menu:[{label:`Restore…`,icon:i.restore,onSelect:E,disabled:!0}],sections:[{key:`identity`,rows:N()},{key:`settings`,title:`Settings`,rows:[...P(),{key:`grammar`,label:`Grammar`,control:{type:`textarea`,value:`root ::= item (", " item)*
|
|
3
|
+
item ::= [a-z ]+`,onChange:E}},{key:`imagePosition`,label:`Image position`,control:{type:`select`,value:`after`,onChange:E,options:[{value:`before`,label:`before the prompt`},{value:`after`,label:`after the prompt`}]}},{key:`cachePrompt`,label:`Cache prompt`,control:{type:`select`,value:`off`,onChange:E,options:[{value:`on`,label:`on`},{value:`off`,label:`off`}]}}]},{key:`debug`,title:`Debug`,rows:F(),folded:!0}]}),"edit/status":()=>(0,T.jsx)(M,{status:`the relay could not reach http://127.0.0.1:11434`,statusBad:!0,sections:[{key:`identity`,rows:N()}]}),"view/tokens":()=>(0,T.jsx)(g,{id:`g`,title:`Token mappings`,level:3,children:(0,T.jsx)(k,{})}),"view/output":()=>(0,T.jsx)(A,{start:{kind:`list`,parse:`csv`,modifiers:[{type:`case`,mode:`LOWER`}]}}),"view/output-text":()=>(0,T.jsx)(A,{start:{kind:`text`,modifiers:[]}}),"view/output-two":()=>(0,T.jsx)(A,{start:{kind:`list`,parse:`csv`,modifiers:[{type:`case`,mode:`TITLE`},{type:`join`,with:` | `}]}}),"view/output-twice":()=>(0,T.jsx)(A,{start:{kind:`list`,parse:`csv`,modifiers:[{type:`case`,mode:`TITLE`},{type:`case`,mode:`LOWER`}]}}),"view/output-none":()=>(0,T.jsx)(A,{start:{kind:`text`,modifiers:[]},format:!1}),"view/output-flow":()=>(0,T.jsx)(A,{start:{kind:`text`,modifiers:[]},readAs:`@body('Ask')?['content']?[0]?['text']`})},B=w.map(e=>({...e,render:z[e.path]})),V=e=>Array.from({length:e},(e,t)=>({name:`IMG_${String(4e3+t*7919%97).padStart(4,`0`)}.jpg`,kb:t*37%900+40}));function H({search:e=``,size:t=`all`}){let[n,r]=(0,y.useState)(e),[i,a]=(0,y.useState)(t),[s,c]=(0,y.useState)(`shoot`),l=V(12),u=l.filter(e=>e.name.toLowerCase().includes(n.trim().toLowerCase())&&(i===`all`||i===`large`==e.kb>=400));return(0,T.jsxs)(g,{id:`files`,title:`Files`,children:[(0,T.jsx)(m,{noun:`files`,search:{label:`Name`,placeholder:`Search names`,value:n,onChange:r},count:{shown:u.length,total:l.length},filters:[{key:`source`,label:`Source`,value:s,neutral:null,onChange:c,options:[{value:`shoot`,label:`Tuesday shoot`},{value:`samples`,label:`Sample library`}]},{key:`size`,label:`Size`,value:i,onChange:a,options:[{value:`all`,label:`All`},{value:`small`,label:`Small`},{value:`large`,label:`Large`}]}]}),u.length?(0,T.jsx)(o,{label:`Files`,rows:u,rowKey:e=>e.name,columns:[{key:`name`,header:`Name`,cell:e=>e.name},{key:`size`,header:`Size`,sort:e=>e.kb,cell:e=>`${e.kb} KB`}]}):(0,T.jsx)(`p`,{className:`note`,children:`No files match these filters.`})]})}function U({count:e,pageSize:t}){let n=V(e);return(0,T.jsx)(g,{id:`files`,title:`Files`,children:(0,T.jsx)(o,{label:`Files`,rows:n,rowKey:e=>e.name,pageSize:t??null,columns:[{key:`name`,header:`Name`,cell:e=>e.name},{key:`size`,header:`Size`,sort:e=>e.kb,cell:e=>`${e.kb} KB`},{key:`menu`,header:``,sort:null,cell:e=>(0,T.jsx)(v,{label:`${e.name} actions`,actions:[{label:`Rename`,icon:i.rename,onSelect:E},{label:`Remove`,icon:i.remove,destructive:!0,onSelect:E}]})}]})})}var W=()=>decodeURIComponent(location.hash.replace(/^#\/?/,``));function G(){let[e,t]=(0,y.useState)(W);(0,y.useEffect)(()=>{let e=()=>t(W());return window.addEventListener(`hashchange`,e),()=>window.removeEventListener(`hashchange`,e)},[]);let n=B.find(t=>t.path===e);return n?(0,T.jsxs)(`main`,{className:`gallery-one`,"data-route":n.path,children:[(0,T.jsxs)(`nav`,{className:`gallery-nav`,children:[(0,T.jsx)(`a`,{href:`#/`,children:`All`}),(0,T.jsx)(`span`,{children:n.title})]}),n.render()]}):(0,T.jsxs)(`main`,{className:`gallery-index`,"data-route":``,children:[(0,T.jsx)(`h1`,{children:`Components`}),(0,T.jsx)(`ul`,{children:B.map(e=>(0,T.jsxs)(`li`,{children:[(0,T.jsx)(`a`,{href:`#/${e.path}`,children:e.title}),` `,(0,T.jsx)(`code`,{children:e.path})]},e.path))})]})}(0,b.createRoot)(document.getElementById(`root`)).render((0,T.jsx)(y.StrictMode,{children:(0,T.jsx)(G,{})}));
|