@yongdall/theme 0.4.6 → 0.5.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/hooks.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{BindObjectStore as e,Code128 as t,PageIdent as n,Pagination as r,createComputed as i,createDialog as a,createQuickFilters as o,createShowField as s,createState as c,effect as l,getPatternFields as u,getPermissionFields as d,getPrimaryFields as f,importStyle as p,importWidget as m,permissionsService as h,renderForm as g,runPattern as _,showFilterDialog as v,toId as y,waitAbortSignal as ee,watch as b}from"@yongdall/web";import{Check as te,Source as ne}from"@neeloong/table";function x(e){let t=document.createElement(`div`),n=t;return n.style.overflow=`hidden`,n.style.whiteSpace=`nowrap`,n.style.textOverflow=`ellipsis`,e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.title=n.innerText=e??``}]}function S(e,t,n,r,i){let a=e.editable,o=e.field?.nullable?null:i,[s,c]=(a?t:n)(e,t=>{o=r(t,e.field?.nullable),e.value=o});function u(e,t){!t&&e===o||(o=e,c(e))}return u(e.value,!0),l(()=>u(e.value),e.signal),s}function C(e){let t=document.createElement(`div`),n=t;return e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.innerText=e??``}]}function w(e,t){return e||!t?e:null}function T(e,t){let n=document.createElement(`textarea`);return n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var E=e=>S(e,T,C,w,``);function D(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?null:0}function O(e,t){let n=document.createElement(`input`);return n.type=`number`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var k=e=>S(e,O,x,D,0);function A(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?null:0}function j(e,t){let n=document.createElement(`input`);return n.type=`number`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var re=e=>S(e,j,x,A,0);function ie(e,t){if(!e)return t?null:0n;try{return BigInt(e)}catch{}return t?null:0n}function M(e,t){let n=document.createElement(`input`);return n.type=`number`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ae=e=>S(e,M,x,ie,0n);function oe(e,t){return e||!t?e:null}function se(e,t){let n=document.createElement(`input`);return n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var N=e=>S(e,se,x,oe,``),P=e=>{let t=document.createElement(`input`);t.type=`checkbox`;let n=e.editable,r=e.field?.nullable?null:!1;n?(t.addEventListener(`input`,()=>{r=!!t.checked,e.value=r}),t.addEventListener(`change`,t=>e.emit(`change`,t)),t.addEventListener(`focus`,t=>e.emit(`focus`,t)),t.addEventListener(`blur`,t=>e.emit(`blur`,t))):t.disabled=!0,l(()=>t.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>t.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function i(n){let i=!e.field?.nullable||typeof n==`boolean`?!!n:null;i!==r&&(r=i,t.checked=!!i)}return l(()=>i(e.value),e.signal),t};function ce(e,t){return Number.isFinite(new Date(e).valueOf())?e:t?null:``}function le(e,t){let n=document.createElement(`input`);return n.type=`date`,n.step=`1`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ue=e=>S(e,le,x,ce,``);function de(e,t){let n=new Date(e);return Number.isFinite(n)?e:t?null:``}function F(e,t){let n=document.createElement(`input`);return n.type=`time`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var I=e=>S(e,F,x,de,``);function L(e,t){let n=new Date(e);return Number.isFinite(n.valueOf())?n:null}function R(e,t){return e.valueOf()?`${[`${e.getFullYear()}`.padStart(4,`0`),`${e.getMonth()+1}`.padStart(2,`0`),`${e.getDate()}`.padStart(2,`0`)].join(`-`)}${t}${[`${e.getHours()}`.padStart(2,`0`),`${e.getMinutes()}`.padStart(2,`0`),`${e.getSeconds()}`.padStart(2,`0`)].join(`:`)}`:``}function fe(e,t=`T`){return e instanceof Date?R(e,t):R(new Date(e),t)??``}function z(e){let t=document.createElement(`div`),n=t;return n.style.overflow=`hidden`,n.style.whiteSpace=`nowrap`,n.style.textOverflow=`ellipsis`,e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.title=n.innerText=fe(e,` `)}]}function pe(e,t){let n=document.createElement(`input`);return n.type=`datetime-local`,n.step=`1`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=fe(e)}]}var me=e=>S(e,pe,z,L,null);function B(e,t){return e||!t?e:null}function he(e,t){let n=document.createElement(`input`);return n.type=`password`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ge=e=>S(e,he,x,B,``);function _e(e,t){return e||!t?e:null}function ve(e,t){let n=document.createElement(`input`);return n.type=`url`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ye=e=>S(e,ve,x,_e,``);function be(e,t){return e||!t?e:null}function xe(e,t){let n=document.createElement(`input`);return n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var Se=e=>S(e,xe,x,be,``);p(`@neeloong/table/style.css`);async function Ce(e,t){let{signal:n,multiple:p}=t||{},m=e.service,h=ee(n,!0),g=await Promise.race([m?.loadScript(),h]);if(!g)return Promise.reject();let x=a(t),S=e.label||g.labelPattern||``,C=e.fields,w=e.queryFilters||[],T=c([]),E=c(100),D=c(1),O=c([]),k=x.appendChild(document.createElement(`div`)),A=k.appendChild(document.createElement(`div`)),j=k.appendChild(document.createElement(`div`)),re=x.appendChild(document.createElement(`div`)),ie=x.appendChild(document.createElement(`div`));x.classList.add(`Modal`),k.classList.add(`Modal-header`),re.classList.add(`Modal-body`),ie.classList.add(`Modal-footer`),A.classList.add(`Modal-title`),A.classList.add(`QueryFilters`),j.classList.add(`MenuButtons`);let M=new ne({idKey:`_`,parentKey:`parent`});M.selectable=!0;let ae=g.fields,oe=d(`options`,g.permissions||[],g),se=Object.entries(ae).filter(([,{type:e}])=>e&&typeof e!=`object`).filter(([e])=>oe.has(e)),N=f(g),P=[];for(let{field:e,width:t,label:n,align:r,enableLink:i}of C||[]){if(!e||!Object.hasOwn(ae,e))continue;let a=ae[e];if(!a)continue;let o=a.type;!o||typeof o!=`string`||P.push({name:e,width:t||void 0,title:n||a.label||``,field:a,align:r,enableLink:i})}if(!P.length){for(let[e,t]of se)if(P.push({name:e,title:t.label||``,field:t}),P.length>=4)break}let ce=[...new Set([...P.map(e=>e.name),...N,...u(S)])];l(()=>M.setValue(O.get()),n);let le=P.map(({name:e,field:t,title:n,width:r,align:i,enableLink:a})=>({field:e,title:n,width:r,resizable:!0,render(r){let o=document.createElement(`div`);i&&(o.style.textAlign=i);let c=s(e,t,{enableLink:a},r.data);return o.appendChild(c.root),{root:o,destroy(){c.destroy()},setHidden(){},update(n){c.destroy(),o.innerHTML=``,c=s(e,t,{enableLink:a},n.data),o.appendChild(c.root)},header(){let e=document.createElement(`span`);return e.innerText=n,i&&(e.style.textAlign=i),{root:e,update(){},destroy(){}}}}}}));le.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`div`),r=_(S,t)||N.map(e=>t[e]).join(`$`);return n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(e){let t=e.data,r=_(S,t)||N.map(e=>t[e]).join(`$`);n.innerHTML=``,n.appendChild(document.createTextNode(r))}}}}),p&&le.unshift({field:`_`,extensions:[te],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let ue=M.createGroup(le,2),de=document.createElement(`table`);ue.createHeader(de.appendChild(document.createElement(`div`))),ue.createBody(de.appendChild(document.createElement(`div`)));let F=new r;b(()=>E.get(),e=>F.size=e||100,{immediate:!0,signal:n}),b(()=>D.get(),e=>F.page=e||1,{immediate:!0,signal:n}),F.listen(()=>{D.set(F.page),E.set(F.size)});let I=0,L=c(!1);async function R(){if(!(n?.aborted||!m)&&!L.get())try{L.set(!0),I++;let t=I,{options:r,total:i}=await m.options({limit:E.get(),page:D.get(),where:[...T.get()||[],...e.where||[]],or:e.orWhere||[],select:ce,total:!0});if(n?.aborted||t!==I)return;O.set(r.map(e=>({...e,_:y(e,N)}))),F.total=i}finally{L.set(!1)}}function fe(){g&&v(g,T.get(),x).then(e=>{T.set(e)}).catch(()=>{})}function z(e,t,r){let a=document.createElement(`button`);a.appendChild(document.createTextNode(e));let o=i(()=>!!r?.get());return l(()=>{a.disabled=o.get()},n),a.addEventListener(`click`,e=>{o.get()||e.defaultPrevented||t()}),a}let{promise:pe,reject:me,resolve:B}=Promise.withResolvers();return j.appendChild(z(`刷新`,R,L)),j.appendChild(z(`过滤`,fe)),j.appendChild(z(`确定`,()=>{let e=[];if(p){if(e=M.checked,!e.length)return B([])}else{let t=M.selectedId;if(!t)return B(null);e=[t]}if(!e.length){B(p?[]:null);return}let t=O.get(),n=Object.fromEntries(t.map(e=>[e._,e])),r=[...new Set(e.map(e=>n[e]).filter(Boolean))].map(e=>({value:e._,label:_(S,e)||e._,data:e}));B(p?r:r[0])})),j.appendChild(z(`取消`,()=>{me()})),n?.addEventListener(`abort`,()=>me(n.reason)),o({get(){return T.get()||[]},set(e){T.set(e),R()}},A,w||[],{fields:g.fields,signal:n,inline:!0}),re.appendChild(de),ie.appendChild(F.root),b([()=>T.get(),()=>E.get(),()=>D.get()],R,{signal:n,immediate:!0}),pe.finally(()=>{x.close()})}var we=e=>{let t=e.source.service,r=document.createElement(`div`);r.classList=`InputDocument`;let i=r.appendChild(document.createElement(`div`)),a=i.appendChild(document.createElement(`div`)),o=e.style.enableLink&&e.source.model,s=i.appendChild(document.createElement(o?`a`:`div`));a.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>i.scrollIntoView()),e.listen(`focus`,()=>i.focus());let d=null,f=null,p=c(),m=c(),h=null;return l(()=>a.innerText=e.placeholder,e.signal),l(()=>{let e=p.get()||``;s.innerText=e,a.hidden=!!e},e.signal),o&&l(()=>{let e=m.get()||``;if(!e)s.removeAttribute(`href`),s.tabIndex=-1;else{s.removeAttribute(`tabIndex`);let t=n.toHref({type:`model`,model:o,id:e});s.setAttribute(`href`,t)}},e.signal),l(async()=>{let n=e.value,r=n==``||n==null?null:n;if(d===r)return;d=r;let i=e.current[`${e.name}~label`];if(m.set(d),i){f=null,d=null,p.set(i);return}if(f=d,p.set(d||``),!d||!t)return;let a=await t;if(!a)return;let o=a.labelPattern||``;if(!u(o).length)return;let{option:s}=await t.option(d);!s||d!==f||p.set(_(o,s)||d)},e.signal),e.editable?(i.classList=`InputDocument-text`,l(()=>{e.readonly||e.disabled?(i.removeAttribute(`tabIndex`),h?.abort(),h=null,i.setAttribute(`disabled`,``)):(i.tabIndex=0,i.removeAttribute(`disabled`))},e.signal),i.addEventListener(`click`,async()=>{if(!(e.readonly||e.disabled)){h?.abort(),h=new AbortController,e.emit(`focus`,null);try{let t=await Ce(e.source,{parent:r,signal:AbortSignal.any([h.signal,e.signal])}),n=Array.isArray(t)?t[0]:t;if(!n){if(!e.value)return;(e.clearable||e.nullable)&&(d=``,f=null,e.value=e.nullable?null:``,p.set(``),m.set(``),e.emit(`change`,null));return}let i=n.value;if(i===e.value)return;d=i,e.value=i,f=null,m.set(i),p.set(n.label||i),e.emit(`change`,i),e.bind?.(n.data)}finally{e.emit(`blur`,null)}}}),r):r};function Te(e,t){return e.length===t.length?e.findIndex((e,n)=>e!=t[n])===-1:!1}var Ee=e=>{let t=e.source.service,r=document.createElement(`div`);r.classList=`InputDocument`;let i=r.appendChild(document.createElement(`div`)),a=i.appendChild(document.createElement(`div`)),o=i.appendChild(document.createElement(`div`));a.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>i.scrollIntoView()),e.listen(`focus`,()=>i.focus());let s=[],d=[],p=c([]),m=null;l(()=>a.innerText=e.placeholder,e.signal);let h=e.style.enableLink&&e.source.model;return l(()=>{let e=p.get();if(o.innerHTML=``,h)for(let t of e){let e=o.appendChild(document.createElement(`a`));e.innerText=t;let r=n.toHref({type:`model`,model:h,id:t});o.setAttribute(`href`,r),e.classList=`InputDocument-Item`}else for(let t of e){let e=o.appendChild(document.createElement(`span`));e.innerText=t,e.classList=`InputDocument-Item`}a.hidden=!!e.length},e.signal),l(async()=>{let n=e.value,r=(Array.isArray(n)?n:[n]).map(e=>typeof e==`string`||typeof e==`number`?String(e):``).filter(Boolean);if(Te(s,r))return;s=r;let i=e.current[`${e.name}~label`];if(i){d=[],s=[],p.set(i);return}if(d=s,p.set(s),!s.length||!t)return;let a=await t;if(!a)return;let o=a.labelPattern||``;if(!u(o).length)return;let{options:c}=await t.options({primary:s,limit:s.length*10});if(!c.length||s!==d)return;let l=f(a),m=Object.fromEntries(c.map(e=>[y(e,l),e]));s.map(e=>{let t=Object.hasOwn(m,e)&&m[e];return t&&_(o,t)||e}),p.set(s.map(e=>{let t=Object.hasOwn(m,e)&&m[e];return t&&_(o,t)||e}))},e.signal),e.editable?(i.classList=`InputDocument-text`,l(()=>{e.readonly||e.disabled?(i.removeAttribute(`tabIndex`),m?.abort(),m=null,i.setAttribute(`disabled`,``)):(i.tabIndex=0,i.removeAttribute(`disabled`))},e.signal),i.addEventListener(`click`,async()=>{if(!(e.readonly||e.disabled)){m?.abort(),m=new AbortController,e.emit(`focus`,null);try{let t=await Ce(e.source,{parent:r,signal:AbortSignal.any([m.signal,e.signal]),multiple:!0}),n=Array.isArray(t)?t:t?[t]:[];if(!n.length){if(!e.value?.length)return;e.clearable||e.nullable?(s=[],d=[],e.value=e.nullable?null:[],p.set([]),e.emit(`change`,null)):e.value=[];return}let i=n.map(e=>e.value);if(Te(i,e.value))return;s=i,e.value=i,d=[],p.set(n.map(e=>e.label||e.value)),e.emit(`change`,null)}finally{e.emit(`blur`,null)}}}),r):r},De=e=>{if(!e.editable){let t=document.createElement(`span`),n=c(``);e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function r(){let r=n.get();r===``?t.innerText=``:t.innerText=e.source.labels[r]??r}function i(e){let t=e==null?``:String(e);t!==n.get()&&n.set(t)}return l(()=>i(e.value),e.signal),l(r,e.signal),t}let t=i(()=>``in e.source.labels),n=document.createElement(`select`);n.addEventListener(`change`,()=>{let r=n.value||(e.nullable&&!t.get()?null:``);if(e.value=r,!r)return;let i=e.source.map;e.bind?.(Object.hasOwn(i,r)&&i[r])}),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal);let r=i(()=>{let t=e.source.levelTree;return e.clearable?[{value:``,label:e.field?.label??``,disabled:!1,level:0},...t]:t});l(()=>{n.innerHTML=``;for(let{value:e,label:t,disabled:i,level:a}of r.get()){let r=document.createElement(`option`);r.value=`${e}`,r.label=`${Array(a).fill(` `).join(``)}${t}`,i&&(r.disabled=i),n.appendChild(r)}n.value=e.value||``},e.signal);function a(e){n.value=e??``}return l(()=>a(e.value),e.signal),n};p(`@neeloong/table/style.css`);async function Oe(e,t){let{signal:n,multiple:r}=t||{},o=ee(n,!0),c=await Promise.race([e.service?.loadScript(),o]),u=a(t),f=u,p=e.fields,m=i(()=>e.options),h=f.appendChild(document.createElement(`div`)),g=h.appendChild(document.createElement(`div`)),_=h.appendChild(document.createElement(`div`)),v=f.appendChild(document.createElement(`div`));u.classList.add(`Modal`),h.classList.add(`Modal-header`),v.classList.add(`Modal-body`),g.classList.add(`Modal-title`),g.classList.add(`QueryFilters`),_.classList.add(`MenuButtons`);let y=`value`,b=new ne({idKey:y,parentKey:`parent`});b.selectable=!0;let x=c?.fields,S=c?d(`options`,c.permissions||[],c):new Set,C=[];for(let{field:e,width:t,label:n,align:r}of p||[])if(e)if(x){if(!Object.hasOwn(x,e))continue;let i=x[e];if(!i)continue;let a=i.type;if(!a||typeof a!=`string`)continue;C.push({name:e,width:t||void 0,title:n||i.label||``,field:i,align:r})}else C.push({name:e,width:t||void 0,title:n||e||``,align:r});if(!C.length&&x){let e=Object.entries(x).filter(([,{type:e}])=>e&&typeof e!=`object`).filter(([e])=>S.has(e));for(let[t,n]of e)if(C.push({name:t,title:n.label||``,field:n}),C.length>=4)break}l(()=>b.setValue(m.get()),n);let w=C.map(({name:e,title:t,width:n,align:r,field:i})=>({field:e,title:t,width:n,resizable:!0,render(t){let n=document.createElement(`div`);r&&(n.style.textAlign=r);let a=i&&s(e,i,{},t.data.data);return a?n.appendChild(a.root):n.innerText=t.data.data?.[e],{root:n,destroy(){a&&a.destroy()},setHidden(){},update(t){a&&a.destroy(),n.innerHTML=``,a=i&&s(e,i,{},t.data),a?n.appendChild(a.root):n.innerText=t.data.data?.[e]}}},header(){let e=document.createElement(`span`);return e.innerText=t,r&&(e.style.textAlign=r),{root:e,update(){},destroy(){}}}}));w.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`div`),r=t.label||t.value;return n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(e){let t=e.data,r=t.label||t.value;n.innerHTML=``,n.appendChild(document.createTextNode(r))}}}}),r&&w.unshift({field:`_`,extensions:[te],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let T=b.createGroup(w,2),E=document.createElement(`table`);T.createHeader(E.appendChild(document.createElement(`div`))),T.createBody(E.appendChild(document.createElement(`div`)));function D(e,t,r){let a=document.createElement(`button`);a.appendChild(document.createTextNode(e));let o=i(()=>!!r?.get());return l(()=>{a.disabled=o.get()},n),a.addEventListener(`click`,e=>{o.get()||e.defaultPrevented||t()}),a}let{promise:O,reject:k,resolve:A}=Promise.withResolvers();return _.appendChild(D(`确定`,()=>{let e=[];if(r){if(e=b.checked,!e.length)return A([])}else{let t=b.selectedId;if(!t)return A(null);e=[t]}if(!e.length){A(r?[]:null);return}let t=m.get(),n=Object.fromEntries(t.map(e=>[e[y],e])),i=[...new Set(e.map(e=>n[e]).filter(Boolean))].map(e=>({value:e[y],label:e.label||e[y],data:e.data}));A(r?i:i[0])})),_.appendChild(D(`取消`,()=>{k()})),v.appendChild(E),n?.addEventListener(`abort`,()=>k(n.reason)),O.finally(()=>{u.close()})}var V=e=>{let{inline:t,showLabel:n,quick:r}=e.style,i=e.source.model||``,a=document.createElement(t?`span`:`div`),o=a.appendChild(document.createElement(`label`));a.classList=`InputDocument`;let s=o.appendChild(document.createElement(`div`)),u=s.appendChild(document.createElement(`div`)),d=s.appendChild(document.createElement(`div`));u.classList=`InputDocument-placeholder`;let f=null,p=c(),m=null,h=e.field?.label??``;return u.innerText=r?h:``,l(()=>{let t=p.get()||``;if(u.hidden=!!t,t){let n=e.source.labels;d.innerText=Object.hasOwn(n,t)&&n[t]||t}else d.innerText=``},e.signal),l(async()=>{let t=e.value,n=t==``||t==null?null:t;f!==n&&(f=n,p.set(f||``))},e.signal),n&&o.insertBefore(document.createTextNode(h),o.firstChild),i?(s.classList=`InputDocument-text`,s.tabIndex=0,s.addEventListener(`click`,async()=>{m?.abort(),m=new AbortController;let t=await Oe(e.source,{parent:a,signal:AbortSignal.any([m.signal,e.signal])}),n=Array.isArray(t)?t[0]:t;if(!n){if(!e.value)return;f=``,e.value=null,p.set(``);return}let r=n.value;r!==e.value&&(f=r,e.value=r,p.set(n.label||r))}),a):a};function ke(e,t){return e.length===t.length?e.findIndex((e,n)=>e!=t[n])===-1:!1}var Ae=e=>{let t=e.editable,n=document.createElement(`div`);n.classList=`InputDocument`;let r=n.appendChild(document.createElement(`div`)),i=r.appendChild(document.createElement(`div`)),a=r.appendChild(document.createElement(`div`));i.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>r.scrollIntoView()),e.listen(`focus`,()=>r.focus());let o=[],s=c([]),u=null;return l(()=>i.innerText=e.placeholder,e.signal),l(()=>{let t=s.get(),n=e.source.labels;a.innerHTML=``;for(let e of t){let t=a.appendChild(document.createElement(`span`));t.innerText=Object.hasOwn(n,e)&&n[e]||e,t.classList=`InputDocument-Item`}i.hidden=!!t.length},e.signal),l(async()=>{let t=e.value,n=(Array.isArray(t)?t:[t]).map(e=>typeof e==`string`||typeof e==`number`?String(e):``).filter(Boolean);ke(o,n)||(o=n,s.set(o))},e.signal),t?(r.classList=`InputDocument-text`,l(()=>{e.readonly||e.disabled?(r.removeAttribute(`tabIndex`),u?.abort(),u=null,r.setAttribute(`disabled`,``)):(r.tabIndex=0,r.removeAttribute(`disabled`))},e.signal),r.addEventListener(`click`,async()=>{if(!(e.readonly||e.disabled)){u?.abort(),u=new AbortController,e.emit(`focus`,null);try{let t=await Oe(e.source,{parent:n,signal:AbortSignal.any([u.signal,e.signal]),multiple:!0}),r=Array.isArray(t)?t:t?[t]:[];if(!r.length){if(!e.value?.length)return;e.clearable||e.nullable?(o=[],e.value=e.nullable?null:[],s.set([]),e.emit(`change`,null)):e.value=[];return}let i=r.map(e=>e.value);if(ke(i,e.value))return;o=i,e.value=i,s.set(i),e.emit(`change`,null)}finally{e.emit(`blur`,null)}}}),n):n},je=e=>{let t=document.createElement(`div`),n=t.appendChild(document.createElement(`div`)).appendChild(document.createElement(`label`)),r=n.appendChild(document.createElement(`input`));n.appendChild(document.createTextNode(`全选`)),n.classList.add(`align-center`),r.type=`checkbox`;let a=t.appendChild(document.createElement(`div`)),o=new Set,s=i(()=>new Set(h.get().flatMap(e=>e.children?.map(e=>e.value)||[])));function u(){s.get().size===o.size?(r.indeterminate=!1,r.checked=!0):o.size?r.indeterminate=!0:(r.indeterminate=!1,r.checked=!1)}function d(){o=new Set;for(let{checked:e,value:t}of a.querySelectorAll(`input`))!e||!t||o.add(t);e.value=[...o].map(e=>({permission:e})),u()}function f(){for(let e of a.querySelectorAll(`input`))e.checked=o.has(e.value)}function p(){f(),u()}let m=c([]);function g(){a.innerHTML=``;let e=[];for(let{label:t,children:n}of h.get()){if(!n?.length)continue;let r=a.appendChild(document.createElement(`details`));r.open=!0,r.appendChild(document.createElement(`summary`)).appendChild(document.createTextNode(t));for(let{value:t,label:i}of n){let n=r.appendChild(document.createElement(`label`)),a=n.appendChild(document.createElement(`input`));a.type=`checkbox`,n.appendChild(document.createTextNode(i)),n.classList.add(`align-center`),n.classList.add(`inline`),a.value=String(t||``),a.addEventListener(`input`,d),e.push(a)}}m.set(e),p()}l(()=>g(),e.signal),r.addEventListener(`input`,()=>{if(!r.checked){for(let e of a.querySelectorAll(`input`))e.checked=!1;e.value=[];return}let t=new Set;for(let e of a.querySelectorAll(`input`))e.checked=!0,t.add(e.value);e.value=[...t].map(e=>({permission:e})),f()}),r.addEventListener(`change`,t=>e.emit(`change`,t)),r.addEventListener(`focus`,t=>e.emit(`focus`,t)),r.addEventListener(`blur`,t=>e.emit(`blur`,t));let _=i(()=>!!(!e.editable||e.disabled));e.listen(`focus`,()=>r.focus()),e.listen(`scrollIntoView`,()=>r.scrollIntoView()),l(()=>r.hidden=!!e.hidden,e.signal),l(()=>{let e=_.get();n.hidden=e;for(let t of m.get())t.disabled=e},e.signal),l(()=>r.readOnly=!!e.readonly,e.signal);function v(e){let t=new Set(Array.isArray(e)&&e.map(e=>e.permission)||[]);if(t.size===o.size){for(let e of o)if(!t.has(e))break;return}o=t,p()}return l(()=>v(e.value),e.signal),t};function Me(t,n){return(r,i)=>{let{signal:a,editable:o,store:s}=r;if(!s||a.aborted)return;let c=new e(t,s,a),{enableLink:l,design:u}=r.style;r.root.style.inlineSize=`100%`,g(c,r.root,{enableLink:l,design:u,layout:n,editable:o,signal:a})}}async function Ne(e){if(typeof e==`string`)return m(e);if(!e||typeof e!=`object`)return null;let{widget:t,schema:n,layout:r}=e;return typeof t==`string`&&t?m(t):n&&typeof n==`object`?Me(n,r):null}var Pe=e=>{let t=null,n=null,r=document.createElement(`div`);async function i(i){if(e.signal.aborted||i===t)return;t=i,n?.abort(),n=new AbortController;let a=AbortSignal.any([n.signal,e.signal]),o=await Ne(i);typeof o==`function`&&(a.aborted||o({root:r,get store(){return e.store},get style(){return e.style},get field(){return e.field},get name(){return e.name},get value(){return e.value},set value(t){e.value=t},get current(){return e.current},get destroyed(){return e.destroyed},get readonly(){return e.readonly},get editable(){return e.editable},get required(){return e.required},get nullable(){return e.nullable},get disabled(){return e.disabled},get clearable(){return e.clearable},get hidden(){return e.hidden},get label(){return e.label},get placeholder(){return e.placeholder},get description(){return e.description},get source(){return e.source},get signal(){return a},listen(t,n){return e.listen(t,n)},emit(t,n){return e.emit(t,n)},get bind(){return e.bind}},typeof i==`object`&&i||{}))}let a=null;return l(()=>{let t=e.source.configurator||null;a!==null&&cancelIdleCallback(a),a=requestIdleCallback(()=>{a=null,i(t)})},e.signal),r};function Fe(e,n,r){let i=t.encode(r);if(!i?.length){n.setAttribute(`d`,``);return}let a=[];for(let e=0;e<i.length;e++){if(!i[e])continue;let t=e-i.length/2,n=1;for(;i[e+1];)n++,e++;a.push(`M${t} -0.5h${n}v1h-${n}Z`)}if(!a.length){n.setAttribute(`d`,``);return}let o=i.length;e.setAttribute(`viewBox`,`${-o/2-10} -0.5 ${o+20} 1`),n.setAttribute(`d`,a.join(` `))}var Ie=e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);t.setAttribute(`preserveAspectRatio`,`none`);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.appendChild(n),t.style.blockSize=`var(--input-height)`,t.style.inlineSize=`100%`,n.setAttribute(`fill`,`black`),e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());let r=``;return l(()=>{let i=String(e.value??``).replace(/[^\0-\x7f]+/g,``);i!==r&&(r=i,Fe(t,n,i))},e.signal),t},Le=e=>{if(!e.editable){let t=document.createElement(`span`),n=c([]);e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function r(){t.innerText=n.get().map(t=>e.source.labels[t]??t).join(`, `)}function i(e){let t=[e].flat().map(e=>String(e??``)).filter(Boolean);n.set(t)}return l(()=>i(e.value),e.signal),l(r,e.signal),t}let t=document.createElement(`div`);t.classList.add(`InputCheckbox-group`);let n=Object.create(null);function r(t){let r=[];for(let[e,t]of Object.entries(n))t.checked&&r.push(e);e.value=r.length===0&&e.nullable?null:r,e.emit(`change`,t)}t.addEventListener(`focus`,t=>e.emit(`focus`,t),!0),t.addEventListener(`blur`,t=>e.emit(`blur`,t),!0),e.listen(`focus`,()=>{for(let e of Object.values(n))if(!e.disabled){e.focus();break}}),e.listen(`scrollIntoView`,()=>t.scrollIntoView()),l(()=>{let t=!!(e.readonly||e.disabled);for(let e of Object.values(n))e.disabled=t},e.signal);let a=i(()=>e.source.levelTree);return l(()=>{t.innerHTML=``,n=Object.create(null);let i=a.get(),o=new Set(Array.isArray(e.value)?e.value:e.value==null?[]:[e.value]);for(let{value:e,label:a,disabled:s,level:c}of i){let i=document.createElement(`input`);i.type=`checkbox`,i.value=`${e}`,i.checked=o.has(e),s&&(i.disabled=!0),i.addEventListener(`change`,r),n[e]=i;let c=document.createTextNode(a),l=document.createElement(`span`),u=document.createElement(`label`);u.classList.add(`InputCheckbox-label`),u.appendChild(i),u.appendChild(l),l.appendChild(c),t.appendChild(u)}},e.signal),l(()=>{let t=[e.value].flat().map(e=>String(e??``)).filter(Boolean),r=new Set(t);for(let[e,t]of Object.entries(n))t.checked=r.has(e)},e.signal),t},Re=e=>{if(!e.editable){let t=document.createElement(`span`),n=c(``);e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function r(){let r=n.get();r===``?t.innerText=``:t.innerText=e.source.labels[r]??r}function i(e){let t=e==null?``:String(e);t!==n.get()&&n.set(t)}return l(()=>i(e.value),e.signal),l(r,e.signal),t}let t=document.createElement(`div`);t.classList.add(`InputRadio-group`);let n=Object.create(null);function r(t){let n=t.target;n&&n.checked&&(e.value=n.value,e.emit(`change`,t))}t.addEventListener(`focus`,t=>e.emit(`focus`,t),!0),t.addEventListener(`blur`,t=>e.emit(`blur`,t),!0),e.listen(`focus`,()=>{for(let e of Object.values(n))if(!e.disabled){e.focus();break}}),e.listen(`scrollIntoView`,()=>t.scrollIntoView()),l(()=>{let t=!!(e.readonly||e.disabled);for(let e of Object.values(n))e.disabled=t},e.signal);let a=i(()=>e.source.levelTree);return l(()=>{t.innerHTML=``,n=Object.create(null);let i=a.get(),o=e.value==null?``:String(e.value);for(let{value:e,label:a,disabled:s,level:c}of i){let i=document.createElement(`input`);i.type=`radio`,i.value=`${e}`,i.checked=o===String(e),s&&(i.disabled=!0),i.addEventListener(`change`,r),n[e]=i;let c=document.createTextNode(a),l=document.createElement(`span`),u=document.createElement(`label`);u.classList.add(`InputCheckbox-label`),u.appendChild(i),u.appendChild(l),l.appendChild(c),t.appendChild(u)}},e.signal),l(()=>{let t=String(e.value??``);for(let[e,r]of Object.entries(n))r.checked=t===e},e.signal),t};function H(e,t){let{inline:n,showLabel:r,quick:i}=t.style,a=document.createElement(n?`span`:`div`),o=t.field?.label??``;if(r){let e=a.appendChild(document.createElement(n?`span`:`div`));e.innerText=o}let s=e(n?a:a.appendChild(document.createElement(`div`)),i?o:``,e=>{t.value=e});return l(()=>s(t.value),t.signal),a}function ze(e,t,n){let r=e.appendChild(document.createElement(`textarea`));return t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var U=H.bind(null,ze);function Be(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?0:null}function Ve(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(Be(r.value))),e=>{r.value=e??``}}var W=H.bind(null,Ve);function He(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?0:null}function Ue(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(He(r.value))),e=>{r.value=e??``}}var G=H.bind(null,Ue);function We(e,t){if(!e)return t?0n:null;try{return BigInt(e)}catch{}return t?0n:null}function Ge(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(We(r.value))),e=>{r.value=e??``}}var K=H.bind(null,Ge);function Ke(e,t,n){let r=e.appendChild(document.createElement(`input`));return t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var q=H.bind(null,Ke),qe=e=>{let{inline:t,showLabel:n,quick:r}=e.style,i=document.createElement(t?`span`:`div`),a=i.appendChild(document.createElement(`label`)),o=a.appendChild(document.createElement(`input`));return o.type=`checkbox`,o.addEventListener(`input`,()=>{e.value=o.indeterminate?null:!!o.checked}),l(()=>{let t=e.value;if(typeof t==`boolean`){o.checked=t;return}if(t===`false`||t===`0`||t===0){o.checked=!1;return}if(t===`true`||t===`1`||t===1){o.checked=!0;return}o.indeterminate=!0,t!==null&&(e.value=null)},e.signal),n?a.insertBefore(document.createTextNode(e.field?.label??``),a.firstChild):r&&a.appendChild(document.createTextNode(e.field?.label??``)),i};function Je(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`date`,r.step=`1`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var J=H.bind(null,Je);function Ye(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`time`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var Y=H.bind(null,Ye);function Xe(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`datetime-local`,r.step=`1`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var X=H.bind(null,Xe);function Ze(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`url`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var Qe=H.bind(null,Ze);function $e(e,t,n){let r=e.appendChild(document.createElement(`input`));return t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var et=H.bind(null,$e),Z=e=>{let{inline:t,showLabel:n,quick:r}=e.style,i=e.source.service,a=document.createElement(t?`span`:`div`),o=a.appendChild(document.createElement(`label`));a.classList=`InputDocument`;let s=o.appendChild(document.createElement(`div`)),d=s.appendChild(document.createElement(`div`)),f=s.appendChild(document.createElement(`div`));d.classList=`InputDocument-placeholder`;let p=null,m=null,h=c(),g=null,v=e.field?.label??``;return d.innerText=r?v:``,l(()=>{let e=h.get()||``;f.innerText=e,d.hidden=!!e},e.signal),l(async()=>{let t=e.value,n=t==``||t==null?null:t;if(p===n||(p=n,m=p,h.set(p||``),!p)||!i)return;let r=await i;if(!r)return;let a=r.labelPattern||``;if(!u(a).length)return;let{option:o}=await i.option(p);!o||p!==m||h.set(_(a,o)||p)},e.signal),n&&o.insertBefore(document.createTextNode(v),o.firstChild),i?(s.classList=`InputDocument-text`,s.tabIndex=0,s.addEventListener(`click`,async()=>{g?.abort(),g=new AbortController;let t=await Ce(e.source,{parent:a,signal:AbortSignal.any([g.signal,e.signal])}),n=Array.isArray(t)?t[0]:t;if(!n){if(!e.value)return;p=``,m=null,e.value=null,h.set(``);return}let r=n.value;r!==e.value&&(p=r,e.value=r,m=null,h.set(n.label||r))}),a):a},Q=e=>{let{inline:t,showLabel:n,quick:r}=e.style,a=document.createElement(t?`span`:`div`).appendChild(document.createElement(`label`)),o=a.appendChild(document.createElement(`select`));o.addEventListener(`change`,()=>{e.value=o.value||null});let s=i(()=>{let t=e.source.levelTree;return[{value:``,label:r&&e.field?.label||``,disabled:!1,level:0},...t]});return l(()=>{o.innerHTML=``;for(let{value:e,label:t,disabled:n,level:r}of s.get()){let i=document.createElement(`option`);i.value=`${e}`,i.label=`${Array(r).fill(` `).join(``)}${t}`,n&&(i.disabled=n),o.appendChild(i)}o.value=e.value||``},e.signal),l(()=>{let t=e.value;o.value=(t==``||t==null?null:t)||``},e.signal),n&&a.insertBefore(document.createTextNode(e.field?.label??``),a.firstChild),o};function tt(e){if(typeof e!=`string`)return!!e;switch(e.toLowerCase()){case``:case`0`:case`n`:case`f`:case`no`:case`off`:case`false`:return!1}return!0}function $(e,t){if([e,t].filter(e=>(e??null)===null).length===1)return!1;let n=e??null,r=t??null;return Object.is(n,r)?!0:n===null||r===null?!1:typeof e==`boolean`||typeof t==`boolean`?tt(e)===tt(t):e==t}function nt(e,t){if(Array.isArray(t)){for(let n of e)if(Array.isArray(n)){if(n.length!==t.length)continue;if(t.findIndex((e,t)=>!$(n[t],e))<0)return!0}else for(let e of t)if($(n,e))return!0}else for(let n of e)if($(n,t))return!0;return!1}function rt(e,t){if(Array.isArray(t))return null;let n=t??null,r=n===null?``:String(n);for(let t of e){let e=(Array.isArray(t)?t[0]:t)??null;if(!(e===null||e===``)&&r.includes(String(e)))return}return!1}function it(e,t){if(Array.isArray(t)){for(let n of e)if(Array.isArray(n)&&n.length===t.length&&t.findIndex((e,t)=>!$(n[t],e))<0)return!0}else for(let n of e)if(Array.isArray(n)&&n.length===t.length){for(let e of n)if($(e,t))return!0}return!1}function at(e,t,n){if(((Array.isArray(n)?n[0]:n)??null)===null)return null;for(let r of t){if(Array.isArray(r)||(r??null)===null)continue;let t=e(r,n);if(typeof t==`boolean`)return t}return!1}function ot(e,t){return at((e,t)=>e>t,e,t)}function st(e,t){return at((e,t)=>e>=t,e,t)}function ct(e,t){return at((e,t)=>e<t,e,t)}function lt(e,t){return at((e,t)=>e<=t,e,t)}const ut=[{not:`!=`,notLabel:`≠`,value:nt,filters:{gt:{value:ot},ge:{value:st},lt:{value:ct},le:{value:lt},in:{value:nt,not:`nin`},contains:{value:rt}}},{array:!0,not:`!=`,notLabel:`≠`,value:it,filters:{in:{value:it,not:`nin`}}},{type:`text`,input:E,filter:U,notFilter:U,filters:{ne:{filter:U,label:`≠`},gt:{filter:U,label:`>`},ge:{filter:U,label:`≥`},lt:{filter:U,label:`<`},le:{filter:U,label:`≤`},contains:{filter:U,label:`包含`}}},{type:`string`,input:N,filter:q,notFilter:q,filters:{ne:{filter:q,label:`≠`},gt:{filter:q,label:`>`},ge:{filter:q,label:`≥`},lt:{filter:q,label:`<`},le:{filter:q,label:`≤`},contains:{filter:q,label:`包含`}}},{type:`bool`,input:P,filter:qe,notFilter:qe,filters:{ne:{filter:qe,label:`≠`}}},{type:`f32`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`f64`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`decimal`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`numeric`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`money`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`i16`,input:re,filter:G,notFilter:G,filters:{ne:{filter:G,label:`≠`},gt:{filter:G,label:`>`},ge:{filter:G,label:`≥`},lt:{filter:G,label:`<`},le:{filter:G,label:`≤`}}},{type:`i32`,input:re,filter:G,notFilter:G,filters:{ne:{filter:G,label:`≠`},gt:{filter:G,label:`>`},ge:{filter:G,label:`≥`},lt:{filter:G,label:`<`},le:{filter:G,label:`≤`}}},{type:`i64`,input:ae,filter:K,notFilter:K,filters:{ne:{filter:K,label:`≠`},gt:{filter:K,label:`>`},ge:{filter:K,label:`≥`},lt:{filter:K,label:`<`},le:{filter:K,label:`≤`}}},{type:`date`,input:ue,filter:J,notFilter:J,filters:{ne:{filter:J,label:`≠`},gt:{filter:J,label:`>`},ge:{filter:J,label:`≥`},lt:{filter:J,label:`<`},le:{filter:J,label:`≤`}}},{type:`time`,input:I,filter:Y,notFilter:Y,filters:{ne:{filter:Y,label:`≠`},gt:{filter:Y,label:`>`},ge:{filter:Y,label:`≥`},lt:{filter:Y,label:`<`},le:{filter:Y,label:`≤`}}},{type:`uuid`,input:Se,filter:et,notFilter:et,filters:{ne:{filter:et,label:`≠`}}},{type:`datetime`,input:me,filter:X,notFilter:X,filters:{ne:{filter:X,label:`≠`},gt:{filter:X,label:`>`},ge:{filter:X,label:`≥`},lt:{filter:X,label:`<`},le:{filter:X,label:`≤`}}},{type:`timetz`,input:I,filter:Y,notFilter:Y,filters:{ne:{filter:Y,label:`≠`},gt:{filter:Y,label:`>`},ge:{filter:Y,label:`≥`},lt:{filter:Y,label:`<`},le:{filter:Y,label:`≤`}}},{type:`timestamp`,input:me,filter:X,notFilter:X,filters:{ne:{filter:X,label:`≠`},gt:{filter:X,label:`>`},ge:{filter:X,label:`≥`},lt:{filter:X,label:`<`},le:{filter:X,label:`≤`}}},{renderer:`password`,input:ge,filter:q,notFilter:q,filters:{ne:{filter:q,label:`≠`}}},{renderer:`uri`,input:ye,filter:Qe,notFilter:Qe,filters:{ne:{filter:Qe,label:`≠`}}},{renderer:`document`,input:we,filter:Z,notFilter:Z,filters:{ne:{filter:Z,label:`≠`}}},{array:!0,renderer:`document`,input:Ee,filter:Z,notFilter:Z,filters:{ne:{filter:Z,label:`≠`}}},{renderer:`select`,input:De,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`select`,array:!0,input:Ae,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`choice`,input:Re,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`choice`,array:!0,input:Le,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`search`,input:V,filter:V,notFilter:V,filters:{ne:{filter:V,label:`≠`}}},{renderer:`search`,array:!0,input:Ae,filter:V,notFilter:V,filters:{ne:{filter:V,label:`≠`}}},{renderer:`code128`,input:Ie},{renderer:`barcode`,input:Ie},{renderer:`configuration`,input:Pe},{type:`submodel`,array:!0,renderer:`permission`,input:je}],dt=[`style.css`];export{ut as formFields,dt as styles};
1
+ import{BindObjectStore as e,Code128 as t,PageIdent as n,Pagination as r,createComputed as i,createDialog as a,createQuickFilters as o,createShowField as s,createState as c,effect as l,getPatternFields as u,getPermissionFields as d,getPrimaryFields as f,importStyle as p,importWidget as m,permissionsService as h,renderForm as g,runPattern as _,showFilterDialog as v,toId as y,waitAbortSignal as ee,watch as b}from"@yongdall/web";import{Check as te,Source as ne}from"@neeloong/table";function x(e){let t=document.createElement(`div`),n=t;return n.style.overflow=`hidden`,n.style.whiteSpace=`nowrap`,n.style.textOverflow=`ellipsis`,e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.title=n.innerText=e??``}]}function S(e,t,n,r,i){let a=e.editable,o=e.field?.nullable?null:i,[s,c]=(a?t:n)(e,t=>{o=r(t,e.field?.nullable),e.value=o});function u(e,t){!t&&e===o||(o=e,c(e))}return u(e.value,!0),l(()=>u(e.value),e.signal),s}function C(e){let t=document.createElement(`div`),n=t;return e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.innerText=e??``}]}function w(e,t){return e||!t?e:null}function T(e,t){let n=document.createElement(`textarea`);return n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var E=e=>S(e,T,C,w,``);function D(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?null:0}function O(e,t){let n=document.createElement(`input`);return n.type=`number`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var k=e=>S(e,O,x,D,0);function A(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?null:0}function j(e,t){let n=document.createElement(`input`);return n.type=`number`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var re=e=>S(e,j,x,A,0);function ie(e,t){if(!e)return t?null:0n;try{return BigInt(e)}catch{}return t?null:0n}function M(e,t){let n=document.createElement(`input`);return n.type=`number`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ae=e=>S(e,M,x,ie,0n);function oe(e,t){return e||!t?e:null}function se(e,t){let n=document.createElement(`input`);return n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var N=e=>S(e,se,x,oe,``),P=e=>{if(!e.editable){let t=document.createElement(`span`);return e.listen(`scrollIntoView`,()=>t.scrollIntoView()),l(()=>{let n=e.value;t.innerText=(!e.field?.nullable||typeof n==`boolean`)&&n?`✔`:`☐`},e.signal),t}let t=document.createElement(`input`);t.type=`checkbox`;let n=e.field?.nullable?null:!1;t.addEventListener(`input`,()=>{n=!!t.checked,e.value=n}),t.addEventListener(`change`,t=>e.emit(`change`,t)),t.addEventListener(`focus`,t=>e.emit(`focus`,t)),t.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>t.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>t.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function r(r){let i=!e.field?.nullable||typeof r==`boolean`?!!r:null;i!==n&&(n=i,t.checked=!!i)}return l(()=>r(e.value),e.signal),t};function ce(e,t){return Number.isFinite(new Date(e).valueOf())?e:t?null:``}function le(e,t){let n=document.createElement(`input`);return n.type=`date`,n.step=`1`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ue=e=>S(e,le,x,ce,``);function de(e,t){let n=new Date(e);return Number.isFinite(n)?e:t?null:``}function F(e,t){let n=document.createElement(`input`);return n.type=`time`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var I=e=>S(e,F,x,de,``);function L(e,t){let n=new Date(e);return Number.isFinite(n.valueOf())?n:null}function R(e,t){return e.valueOf()?`${[`${e.getFullYear()}`.padStart(4,`0`),`${e.getMonth()+1}`.padStart(2,`0`),`${e.getDate()}`.padStart(2,`0`)].join(`-`)}${t}${[`${e.getHours()}`.padStart(2,`0`),`${e.getMinutes()}`.padStart(2,`0`),`${e.getSeconds()}`.padStart(2,`0`)].join(`:`)}`:``}function fe(e,t=`T`){return e instanceof Date?R(e,t):R(new Date(e),t)??``}function z(e){let t=document.createElement(`div`),n=t;return n.style.overflow=`hidden`,n.style.whiteSpace=`nowrap`,n.style.textOverflow=`ellipsis`,e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.title=n.innerText=fe(e,` `)}]}function pe(e,t){let n=document.createElement(`input`);return n.type=`datetime-local`,n.step=`1`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=fe(e)}]}var me=e=>S(e,pe,z,L,null);function B(e,t){return e||!t?e:null}function he(e,t){let n=document.createElement(`input`);return n.type=`password`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ge=e=>S(e,he,x,B,``);function _e(e,t){return e||!t?e:null}function ve(e,t){let n=document.createElement(`input`);return n.type=`url`,n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ye=e=>S(e,ve,x,_e,``);function be(e,t){return e||!t?e:null}function xe(e,t){let n=document.createElement(`input`);return n.addEventListener(`input`,()=>t(n.value)),n.addEventListener(`input`,t=>e.emit(`input`,t)),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),l(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var Se=e=>S(e,xe,x,be,``);p(`@neeloong/table/style.css`);async function Ce(e,t){let{signal:n,multiple:p}=t||{},m=e.service,h=ee(n,!0),g=await Promise.race([m?.loadScript(),h]);if(!g)return Promise.reject();let x=a(t),S=e.label||g.labelPattern||``,C=e.fields,w=e.queryFilters||[],T=c([]),E=c(100),D=c(1),O=c([]),k=x.appendChild(document.createElement(`div`)),A=k.appendChild(document.createElement(`div`)),j=k.appendChild(document.createElement(`div`)),re=x.appendChild(document.createElement(`div`)),ie=x.appendChild(document.createElement(`div`));x.classList.add(`Modal`),k.classList.add(`Modal-header`),re.classList.add(`Modal-body`),ie.classList.add(`Modal-footer`),A.classList.add(`Modal-title`),A.classList.add(`QueryFilters`),j.classList.add(`MenuButtons`);let M=new ne({idKey:`_`,parentKey:`parent`});M.selectable=!0;let ae=g.fields,oe=d(`options`,g.permissions||[],g),se=Object.entries(ae).filter(([,{type:e}])=>e&&typeof e!=`object`).filter(([e])=>oe.has(e)),N=f(g),P=[];for(let{field:e,width:t,label:n,align:r,enableLink:i}of C||[]){if(!e||!Object.hasOwn(ae,e))continue;let a=ae[e];if(!a)continue;let o=a.type;!o||typeof o!=`string`||P.push({name:e,width:t||void 0,title:n||a.label||``,field:a,align:r,enableLink:i})}if(!P.length){for(let[e,t]of se)if(P.push({name:e,title:t.label||``,field:t}),P.length>=4)break}let ce=[...new Set([...P.map(e=>e.name),...N,...u(S)])];l(()=>M.setValue(O.get()),n);let le=P.map(({name:e,field:t,title:n,width:r,align:i,enableLink:a})=>({field:e,title:n,width:r,resizable:!0,render(r){let o=document.createElement(`div`);i&&(o.style.textAlign=i);let c=s(e,t,{enableLink:a},r.data);return o.appendChild(c.root),{root:o,destroy(){c.destroy()},setHidden(){},update(n){c.destroy(),o.innerHTML=``,c=s(e,t,{enableLink:a},n.data),o.appendChild(c.root)},header(){let e=document.createElement(`span`);return e.innerText=n,i&&(e.style.textAlign=i),{root:e,update(){},destroy(){}}}}}}));le.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`div`),r=_(S,t)||N.map(e=>t[e]).join(`$`);return n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(e){let t=e.data,r=_(S,t)||N.map(e=>t[e]).join(`$`);n.innerHTML=``,n.appendChild(document.createTextNode(r))}}}}),p&&le.unshift({field:`_`,extensions:[te],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let ue=M.createGroup(le,2),de=document.createElement(`table`);ue.createHeader(de.appendChild(document.createElement(`div`))),ue.createBody(de.appendChild(document.createElement(`div`)));let F=new r;b(()=>E.get(),e=>F.size=e||100,{immediate:!0,signal:n}),b(()=>D.get(),e=>F.page=e||1,{immediate:!0,signal:n}),F.listen(()=>{D.set(F.page),E.set(F.size)});let I=0,L=c(!1);async function R(){if(!(n?.aborted||!m)&&!L.get())try{L.set(!0),I++;let t=I,{options:r,total:i}=await m.options({limit:E.get(),page:D.get(),where:[...T.get()||[],...e.where||[]],or:e.orWhere||[],select:ce,total:!0});if(n?.aborted||t!==I)return;O.set(r.map(e=>({...e,_:y(e,N)}))),F.total=i}finally{L.set(!1)}}function fe(){g&&v(g,T.get(),x).then(e=>{T.set(e)}).catch(()=>{})}function z(e,t,r){let a=document.createElement(`button`);a.appendChild(document.createTextNode(e));let o=i(()=>!!r?.get());return l(()=>{a.disabled=o.get()},n),a.addEventListener(`click`,e=>{o.get()||e.defaultPrevented||t()}),a}let{promise:pe,reject:me,resolve:B}=Promise.withResolvers();return j.appendChild(z(`刷新`,R,L)),j.appendChild(z(`过滤`,fe)),j.appendChild(z(`确定`,()=>{let e=[];if(p){if(e=M.checked,!e.length)return B([])}else{let t=M.selectedId;if(!t)return B(null);e=[t]}if(!e.length){B(p?[]:null);return}let t=O.get(),n=Object.fromEntries(t.map(e=>[e._,e])),r=[...new Set(e.map(e=>n[e]).filter(Boolean))].map(e=>({value:e._,label:_(S,e)||e._,data:e}));B(p?r:r[0])})),j.appendChild(z(`取消`,()=>{me()})),n?.addEventListener(`abort`,()=>me(n.reason)),o({get(){return T.get()||[]},set(e){T.set(e),R()}},A,w||[],{fields:g.fields,signal:n,inline:!0}),re.appendChild(de),ie.appendChild(F.root),b([()=>T.get(),()=>E.get(),()=>D.get()],R,{signal:n,immediate:!0}),pe.finally(()=>{x.close()})}var we=e=>{let t=e.source.service,r=document.createElement(`div`);r.classList=`InputDocument`;let i=r.appendChild(document.createElement(`div`)),a=i.appendChild(document.createElement(`div`)),o=e.style.enableLink&&e.source.model,s=i.appendChild(document.createElement(o?`a`:`div`));a.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>i.scrollIntoView()),e.listen(`focus`,()=>i.focus());let d=null,f=null,p=c(),m=c(),h=null;return l(()=>a.innerText=e.placeholder,e.signal),l(()=>{let e=p.get()||``;s.innerText=e,a.hidden=!!e},e.signal),o&&l(()=>{let e=m.get()||``;if(!e)s.removeAttribute(`href`),s.tabIndex=-1;else{s.removeAttribute(`tabIndex`);let t=n.toHref({type:`model`,model:o,id:e});s.setAttribute(`href`,t)}},e.signal),l(async()=>{let n=e.value,r=n==``||n==null?null:n;if(d===r)return;d=r;let i=e.current[`${e.name}~label`];if(m.set(d),i){f=null,d=null,p.set(i);return}if(f=d,p.set(d||``),!d||!t)return;let a=await t;if(!a)return;let o=a.labelPattern||``;if(!u(o).length)return;let{option:s}=await t.option(d);!s||d!==f||p.set(_(o,s)||d)},e.signal),e.editable?(i.classList=`InputDocument-text`,l(()=>{e.readonly||e.disabled?(i.removeAttribute(`tabIndex`),h?.abort(),h=null,i.setAttribute(`disabled`,``)):(i.tabIndex=0,i.removeAttribute(`disabled`))},e.signal),i.addEventListener(`click`,async()=>{if(!(e.readonly||e.disabled)){h?.abort(),h=new AbortController,e.emit(`focus`,null);try{let t=await Ce(e.source,{parent:r,signal:AbortSignal.any([h.signal,e.signal])}),n=Array.isArray(t)?t[0]:t;if(!n){if(!e.value)return;(e.clearable||e.nullable)&&(d=``,f=null,e.value=e.nullable?null:``,p.set(``),m.set(``),e.emit(`change`,null));return}let i=n.value;if(i===e.value)return;d=i,e.value=i,f=null,m.set(i),p.set(n.label||i),e.emit(`change`,i),e.bind?.(n.data)}finally{e.emit(`blur`,null)}}}),r):r};function Te(e,t){return e.length===t.length?e.findIndex((e,n)=>e!=t[n])===-1:!1}var Ee=e=>{let t=e.source.service,r=document.createElement(`div`);r.classList=`InputDocument`;let i=r.appendChild(document.createElement(`div`)),a=i.appendChild(document.createElement(`div`)),o=i.appendChild(document.createElement(`div`));a.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>i.scrollIntoView()),e.listen(`focus`,()=>i.focus());let s=[],d=[],p=c([]),m=null;l(()=>a.innerText=e.placeholder,e.signal);let h=e.style.enableLink&&e.source.model;return l(()=>{let e=p.get();if(o.innerHTML=``,h)for(let t of e){let e=o.appendChild(document.createElement(`a`));e.innerText=t;let r=n.toHref({type:`model`,model:h,id:t});o.setAttribute(`href`,r),e.classList=`InputDocument-Item`}else for(let t of e){let e=o.appendChild(document.createElement(`span`));e.innerText=t,e.classList=`InputDocument-Item`}a.hidden=!!e.length},e.signal),l(async()=>{let n=e.value,r=(Array.isArray(n)?n:[n]).map(e=>typeof e==`string`||typeof e==`number`?String(e):``).filter(Boolean);if(Te(s,r))return;s=r;let i=e.current[`${e.name}~label`];if(i){d=[],s=[],p.set(i);return}if(d=s,p.set(s),!s.length||!t)return;let a=await t;if(!a)return;let o=a.labelPattern||``;if(!u(o).length)return;let{options:c}=await t.options({primary:s,limit:s.length*10});if(!c.length||s!==d)return;let l=f(a),m=Object.fromEntries(c.map(e=>[y(e,l),e]));s.map(e=>{let t=Object.hasOwn(m,e)&&m[e];return t&&_(o,t)||e}),p.set(s.map(e=>{let t=Object.hasOwn(m,e)&&m[e];return t&&_(o,t)||e}))},e.signal),e.editable?(i.classList=`InputDocument-text`,l(()=>{e.readonly||e.disabled?(i.removeAttribute(`tabIndex`),m?.abort(),m=null,i.setAttribute(`disabled`,``)):(i.tabIndex=0,i.removeAttribute(`disabled`))},e.signal),i.addEventListener(`click`,async()=>{if(!(e.readonly||e.disabled)){m?.abort(),m=new AbortController,e.emit(`focus`,null);try{let t=await Ce(e.source,{parent:r,signal:AbortSignal.any([m.signal,e.signal]),multiple:!0}),n=Array.isArray(t)?t:t?[t]:[];if(!n.length){if(!e.value?.length)return;e.clearable||e.nullable?(s=[],d=[],e.value=e.nullable?null:[],p.set([]),e.emit(`change`,null)):e.value=[];return}let i=n.map(e=>e.value);if(Te(i,e.value))return;s=i,e.value=i,d=[],p.set(n.map(e=>e.label||e.value)),e.emit(`change`,null)}finally{e.emit(`blur`,null)}}}),r):r},De=e=>{if(!e.editable){let t=document.createElement(`span`),n=c(``);e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function r(){let r=n.get();r===``?t.innerText=``:t.innerText=e.source.labels[r]??r}function i(e){let t=e==null?``:String(e);t!==n.get()&&n.set(t)}return l(()=>i(e.value),e.signal),l(r,e.signal),t}let t=i(()=>``in e.source.labels),n=document.createElement(`select`);n.addEventListener(`change`,()=>{let r=n.value||(e.nullable&&!t.get()?null:``);if(e.value=r,!r)return;let i=e.source.map;e.bind?.(Object.hasOwn(i,r)&&i[r])}),n.addEventListener(`change`,t=>e.emit(`change`,t)),n.addEventListener(`focus`,t=>e.emit(`focus`,t)),n.addEventListener(`blur`,t=>e.emit(`blur`,t)),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),l(()=>n.disabled=!!(e.readonly||e.disabled),e.signal);let r=i(()=>{let t=e.source.levelTree;return e.clearable?[{value:``,label:e.field?.label??``,disabled:!1,level:0},...t]:t});l(()=>{n.innerHTML=``;for(let{value:e,label:t,disabled:i,level:a}of r.get()){let r=document.createElement(`option`);r.value=`${e}`,r.label=`${Array(a).fill(` `).join(``)}${t}`,i&&(r.disabled=i),n.appendChild(r)}n.value=e.value||``},e.signal);function a(e){n.value=e??``}return l(()=>a(e.value),e.signal),n};p(`@neeloong/table/style.css`);async function Oe(e,t){let{signal:n,multiple:r}=t||{},o=ee(n,!0),c=await Promise.race([e.service?.loadScript(),o]),u=a(t),f=u,p=e.fields,m=i(()=>e.options),h=f.appendChild(document.createElement(`div`)),g=h.appendChild(document.createElement(`div`)),_=h.appendChild(document.createElement(`div`)),v=f.appendChild(document.createElement(`div`));u.classList.add(`Modal`),h.classList.add(`Modal-header`),v.classList.add(`Modal-body`),g.classList.add(`Modal-title`),g.classList.add(`QueryFilters`),_.classList.add(`MenuButtons`);let y=`value`,b=new ne({idKey:y,parentKey:`parent`});b.selectable=!0;let x=c?.fields,S=c?d(`options`,c.permissions||[],c):new Set,C=[];for(let{field:e,width:t,label:n,align:r}of p||[])if(e)if(x){if(!Object.hasOwn(x,e))continue;let i=x[e];if(!i)continue;let a=i.type;if(!a||typeof a!=`string`)continue;C.push({name:e,width:t||void 0,title:n||i.label||``,field:i,align:r})}else C.push({name:e,width:t||void 0,title:n||e||``,align:r});if(!C.length&&x){let e=Object.entries(x).filter(([,{type:e}])=>e&&typeof e!=`object`).filter(([e])=>S.has(e));for(let[t,n]of e)if(C.push({name:t,title:n.label||``,field:n}),C.length>=4)break}l(()=>b.setValue(m.get()),n);let w=C.map(({name:e,title:t,width:n,align:r,field:i})=>({field:e,title:t,width:n,resizable:!0,render(t){let n=document.createElement(`div`);r&&(n.style.textAlign=r);let a=i&&s(e,i,{},t.data.data);return a?n.appendChild(a.root):n.innerText=t.data.data?.[e],{root:n,destroy(){a&&a.destroy()},setHidden(){},update(t){a&&a.destroy(),n.innerHTML=``,a=i&&s(e,i,{},t.data),a?n.appendChild(a.root):n.innerText=t.data.data?.[e]}}},header(){let e=document.createElement(`span`);return e.innerText=t,r&&(e.style.textAlign=r),{root:e,update(){},destroy(){}}}}));w.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`div`),r=t.label||t.value;return n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(e){let t=e.data,r=t.label||t.value;n.innerHTML=``,n.appendChild(document.createTextNode(r))}}}}),r&&w.unshift({field:`_`,extensions:[te],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let T=b.createGroup(w,2),E=document.createElement(`table`);T.createHeader(E.appendChild(document.createElement(`div`))),T.createBody(E.appendChild(document.createElement(`div`)));function D(e,t,r){let a=document.createElement(`button`);a.appendChild(document.createTextNode(e));let o=i(()=>!!r?.get());return l(()=>{a.disabled=o.get()},n),a.addEventListener(`click`,e=>{o.get()||e.defaultPrevented||t()}),a}let{promise:O,reject:k,resolve:A}=Promise.withResolvers();return _.appendChild(D(`确定`,()=>{let e=[];if(r){if(e=b.checked,!e.length)return A([])}else{let t=b.selectedId;if(!t)return A(null);e=[t]}if(!e.length){A(r?[]:null);return}let t=m.get(),n=Object.fromEntries(t.map(e=>[e[y],e])),i=[...new Set(e.map(e=>n[e]).filter(Boolean))].map(e=>({value:e[y],label:e.label||e[y],data:e.data}));A(r?i:i[0])})),_.appendChild(D(`取消`,()=>{k()})),v.appendChild(E),n?.addEventListener(`abort`,()=>k(n.reason)),O.finally(()=>{u.close()})}var V=e=>{let{inline:t,showLabel:n,quick:r}=e.style,i=e.source.model||``,a=document.createElement(t?`span`:`div`),o=a.appendChild(document.createElement(`label`));a.classList=`InputDocument`;let s=o.appendChild(document.createElement(`div`)),u=s.appendChild(document.createElement(`div`)),d=s.appendChild(document.createElement(`div`));u.classList=`InputDocument-placeholder`;let f=null,p=c(),m=null,h=e.field?.label??``;return u.innerText=r?h:``,l(()=>{let t=p.get()||``;if(u.hidden=!!t,t){let n=e.source.labels;d.innerText=Object.hasOwn(n,t)&&n[t]||t}else d.innerText=``},e.signal),l(async()=>{let t=e.value,n=t==``||t==null?null:t;f!==n&&(f=n,p.set(f||``))},e.signal),n&&o.insertBefore(document.createTextNode(h),o.firstChild),i?(s.classList=`InputDocument-text`,s.tabIndex=0,s.addEventListener(`click`,async()=>{m?.abort(),m=new AbortController;let t=await Oe(e.source,{parent:a,signal:AbortSignal.any([m.signal,e.signal])}),n=Array.isArray(t)?t[0]:t;if(!n){if(!e.value)return;f=``,e.value=null,p.set(``);return}let r=n.value;r!==e.value&&(f=r,e.value=r,p.set(n.label||r))}),a):a};function ke(e,t){return e.length===t.length?e.findIndex((e,n)=>e!=t[n])===-1:!1}var Ae=e=>{let t=e.editable,n=document.createElement(`div`);n.classList=`InputDocument`;let r=n.appendChild(document.createElement(`div`)),i=r.appendChild(document.createElement(`div`)),a=r.appendChild(document.createElement(`div`));i.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>r.scrollIntoView()),e.listen(`focus`,()=>r.focus());let o=[],s=c([]),u=null;return l(()=>i.innerText=e.placeholder,e.signal),l(()=>{let t=s.get(),n=e.source.labels;a.innerHTML=``;for(let e of t){let t=a.appendChild(document.createElement(`span`));t.innerText=Object.hasOwn(n,e)&&n[e]||e,t.classList=`InputDocument-Item`}i.hidden=!!t.length},e.signal),l(async()=>{let t=e.value,n=(Array.isArray(t)?t:[t]).map(e=>typeof e==`string`||typeof e==`number`?String(e):``).filter(Boolean);ke(o,n)||(o=n,s.set(o))},e.signal),t?(r.classList=`InputDocument-text`,l(()=>{e.readonly||e.disabled?(r.removeAttribute(`tabIndex`),u?.abort(),u=null,r.setAttribute(`disabled`,``)):(r.tabIndex=0,r.removeAttribute(`disabled`))},e.signal),r.addEventListener(`click`,async()=>{if(!(e.readonly||e.disabled)){u?.abort(),u=new AbortController,e.emit(`focus`,null);try{let t=await Oe(e.source,{parent:n,signal:AbortSignal.any([u.signal,e.signal]),multiple:!0}),r=Array.isArray(t)?t:t?[t]:[];if(!r.length){if(!e.value?.length)return;e.clearable||e.nullable?(o=[],e.value=e.nullable?null:[],s.set([]),e.emit(`change`,null)):e.value=[];return}let i=r.map(e=>e.value);if(ke(i,e.value))return;o=i,e.value=i,s.set(i),e.emit(`change`,null)}finally{e.emit(`blur`,null)}}}),n):n},je=e=>{let t=document.createElement(`div`),n=t.appendChild(document.createElement(`div`)).appendChild(document.createElement(`label`)),r=n.appendChild(document.createElement(`input`));n.appendChild(document.createTextNode(`全选`)),n.classList.add(`align-center`),r.type=`checkbox`;let a=t.appendChild(document.createElement(`div`)),o=new Set,s=i(()=>new Set(h.get().flatMap(e=>e.children?.map(e=>e.value)||[])));function u(){s.get().size===o.size?(r.indeterminate=!1,r.checked=!0):o.size?r.indeterminate=!0:(r.indeterminate=!1,r.checked=!1)}function d(){o=new Set;for(let{checked:e,value:t}of a.querySelectorAll(`input`))!e||!t||o.add(t);e.value=[...o].map(e=>({permission:e})),u()}function f(){for(let e of a.querySelectorAll(`input`))e.checked=o.has(e.value)}function p(){f(),u()}let m=c([]);function g(){a.innerHTML=``;let e=[];for(let{label:t,children:n}of h.get()){if(!n?.length)continue;let r=a.appendChild(document.createElement(`details`));r.open=!0,r.appendChild(document.createElement(`summary`)).appendChild(document.createTextNode(t));for(let{value:t,label:i}of n){let n=r.appendChild(document.createElement(`label`)),a=n.appendChild(document.createElement(`input`));a.type=`checkbox`,n.appendChild(document.createTextNode(i)),n.classList.add(`align-center`),n.classList.add(`inline`),a.value=String(t||``),a.addEventListener(`input`,d),e.push(a)}}m.set(e),p()}l(()=>g(),e.signal),r.addEventListener(`input`,()=>{if(!r.checked){for(let e of a.querySelectorAll(`input`))e.checked=!1;e.value=[];return}let t=new Set;for(let e of a.querySelectorAll(`input`))e.checked=!0,t.add(e.value);e.value=[...t].map(e=>({permission:e})),f()}),r.addEventListener(`change`,t=>e.emit(`change`,t)),r.addEventListener(`focus`,t=>e.emit(`focus`,t)),r.addEventListener(`blur`,t=>e.emit(`blur`,t));let _=i(()=>!!(!e.editable||e.disabled));e.listen(`focus`,()=>r.focus()),e.listen(`scrollIntoView`,()=>r.scrollIntoView()),l(()=>r.hidden=!!e.hidden,e.signal),l(()=>{let e=_.get();n.hidden=e;for(let t of m.get())t.disabled=e},e.signal),l(()=>r.readOnly=!!e.readonly,e.signal);function v(e){let t=new Set(Array.isArray(e)&&e.map(e=>e.permission)||[]);if(t.size===o.size){for(let e of o)if(!t.has(e))break;return}o=t,p()}return l(()=>v(e.value),e.signal),t};function Me(t,n){return(r,i)=>{let{signal:a,editable:o,store:s}=r;if(!s||a.aborted)return;let c=new e(t,s,a),{enableLink:l,design:u}=r.style;r.root.style.inlineSize=`100%`,g(c,r.root,{enableLink:l,design:u,layout:n,editable:o,signal:a})}}async function Ne(e){if(typeof e==`string`)return m(e);if(!e||typeof e!=`object`)return null;let{widget:t,schema:n,layout:r}=e;return typeof t==`string`&&t?m(t):n&&typeof n==`object`?Me(n,r):null}var Pe=e=>{let t=null,n=null,r=document.createElement(`div`);async function i(i){if(e.signal.aborted||i===t)return;t=i,n?.abort(),n=new AbortController;let a=AbortSignal.any([n.signal,e.signal]),o=await Ne(i);typeof o==`function`&&(a.aborted||o({root:r,get store(){return e.store},get style(){return e.style},get field(){return e.field},get name(){return e.name},get value(){return e.value},set value(t){e.value=t},get current(){return e.current},get destroyed(){return e.destroyed},get readonly(){return e.readonly},get editable(){return e.editable},get required(){return e.required},get nullable(){return e.nullable},get disabled(){return e.disabled},get clearable(){return e.clearable},get hidden(){return e.hidden},get label(){return e.label},get placeholder(){return e.placeholder},get description(){return e.description},get source(){return e.source},get signal(){return a},listen(t,n){return e.listen(t,n)},emit(t,n){return e.emit(t,n)},get bind(){return e.bind}},typeof i==`object`&&i||{}))}let a=null;return l(()=>{let t=e.source.configurator||null;a!==null&&cancelIdleCallback(a),a=requestIdleCallback(()=>{a=null,i(t)})},e.signal),r};function Fe(e,n,r){let i=t.encode(r);if(!i?.length){n.setAttribute(`d`,``);return}let a=[];for(let e=0;e<i.length;e++){if(!i[e])continue;let t=e-i.length/2,n=1;for(;i[e+1];)n++,e++;a.push(`M${t} -0.5h${n}v1h-${n}Z`)}if(!a.length){n.setAttribute(`d`,``);return}let o=i.length;e.setAttribute(`viewBox`,`${-o/2-10} -0.5 ${o+20} 1`),n.setAttribute(`d`,a.join(` `))}var Ie=e=>{let t=document.createElementNS(`http://www.w3.org/2000/svg`,`svg`);t.setAttribute(`preserveAspectRatio`,`none`);let n=document.createElementNS(`http://www.w3.org/2000/svg`,`path`);t.appendChild(n),t.style.blockSize=`var(--input-height)`,t.style.inlineSize=`100%`,n.setAttribute(`fill`,`black`),e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());let r=``;return l(()=>{let i=String(e.value??``).replace(/[^\0-\x7f]+/g,``);i!==r&&(r=i,Fe(t,n,i))},e.signal),t},Le=e=>{if(!e.editable){let t=document.createElement(`span`),n=c([]);e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function r(){t.innerText=n.get().map(t=>e.source.labels[t]??t).join(`, `)}function i(e){let t=[e].flat().map(e=>String(e??``)).filter(Boolean);n.set(t)}return l(()=>i(e.value),e.signal),l(r,e.signal),t}let t=document.createElement(`div`);t.classList.add(`InputCheckbox-group`);let n=Object.create(null);function r(t){let r=[];for(let[e,t]of Object.entries(n))t.checked&&r.push(e);e.value=r.length===0&&e.nullable?null:r,e.emit(`change`,t)}t.addEventListener(`focus`,t=>e.emit(`focus`,t),!0),t.addEventListener(`blur`,t=>e.emit(`blur`,t),!0),e.listen(`focus`,()=>{for(let e of Object.values(n))if(!e.disabled){e.focus();break}}),e.listen(`scrollIntoView`,()=>t.scrollIntoView()),l(()=>{let t=!!(e.readonly||e.disabled);for(let e of Object.values(n))e.disabled=t},e.signal);let a=i(()=>e.source.levelTree);return l(()=>{t.innerHTML=``,n=Object.create(null);let i=a.get(),o=new Set(Array.isArray(e.value)?e.value:e.value==null?[]:[e.value]);for(let{value:e,label:a,disabled:s,level:c}of i){let i=document.createElement(`input`);i.type=`checkbox`,i.value=`${e}`,i.checked=o.has(e),s&&(i.disabled=!0),i.addEventListener(`change`,r),n[e]=i;let c=document.createTextNode(a),l=document.createElement(`span`),u=document.createElement(`label`);u.classList.add(`InputCheckbox-label`),u.appendChild(i),u.appendChild(l),l.appendChild(c),t.appendChild(u)}},e.signal),l(()=>{let t=[e.value].flat().map(e=>String(e??``)).filter(Boolean),r=new Set(t);for(let[e,t]of Object.entries(n))t.checked=r.has(e)},e.signal),t},Re=e=>{if(!e.editable){let t=document.createElement(`span`),n=c(``);e.listen(`focus`,()=>t.focus()),e.listen(`scrollIntoView`,()=>t.scrollIntoView());function r(){let r=n.get();r===``?t.innerText=``:t.innerText=e.source.labels[r]??r}function i(e){let t=e==null?``:String(e);t!==n.get()&&n.set(t)}return l(()=>i(e.value),e.signal),l(r,e.signal),t}let t=document.createElement(`div`);t.classList.add(`InputRadio-group`);let n=Object.create(null);function r(t){let n=t.target;n&&n.checked&&(e.value=n.value,e.emit(`change`,t))}t.addEventListener(`focus`,t=>e.emit(`focus`,t),!0),t.addEventListener(`blur`,t=>e.emit(`blur`,t),!0),e.listen(`focus`,()=>{for(let e of Object.values(n))if(!e.disabled){e.focus();break}}),e.listen(`scrollIntoView`,()=>t.scrollIntoView()),l(()=>{let t=!!(e.readonly||e.disabled);for(let e of Object.values(n))e.disabled=t},e.signal);let a=i(()=>e.source.levelTree);return l(()=>{t.innerHTML=``,n=Object.create(null);let i=a.get(),o=e.value==null?``:String(e.value);for(let{value:e,label:a,disabled:s,level:c}of i){let i=document.createElement(`input`);i.type=`radio`,i.value=`${e}`,i.checked=o===String(e),s&&(i.disabled=!0),i.addEventListener(`change`,r),n[e]=i;let c=document.createTextNode(a),l=document.createElement(`span`),u=document.createElement(`label`);u.classList.add(`InputCheckbox-label`),u.appendChild(i),u.appendChild(l),l.appendChild(c),t.appendChild(u)}},e.signal),l(()=>{let t=String(e.value??``);for(let[e,r]of Object.entries(n))r.checked=t===e},e.signal),t};function H(e,t){let{inline:n,showLabel:r,quick:i}=t.style,a=document.createElement(n?`span`:`div`),o=t.field?.label??``;if(r){let e=a.appendChild(document.createElement(n?`span`:`div`));e.innerText=o}let s=e(n?a:a.appendChild(document.createElement(`div`)),i?o:``,e=>{t.value=e});return l(()=>s(t.value),t.signal),a}function ze(e,t,n){let r=e.appendChild(document.createElement(`textarea`));return t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var U=H.bind(null,ze);function Be(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?0:null}function Ve(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(Be(r.value))),e=>{r.value=e??``}}var W=H.bind(null,Ve);function He(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?0:null}function Ue(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(He(r.value))),e=>{r.value=e??``}}var G=H.bind(null,Ue);function We(e,t){if(!e)return t?0n:null;try{return BigInt(e)}catch{}return t?0n:null}function Ge(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(We(r.value))),e=>{r.value=e??``}}var K=H.bind(null,Ge);function Ke(e,t,n){let r=e.appendChild(document.createElement(`input`));return t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var q=H.bind(null,Ke),qe=e=>{let{inline:t,showLabel:n,quick:r}=e.style,i=document.createElement(t?`span`:`div`),a=i.appendChild(document.createElement(`label`)),o=a.appendChild(document.createElement(`input`));return o.type=`checkbox`,o.addEventListener(`input`,()=>{e.value=o.indeterminate?null:!!o.checked}),l(()=>{let t=e.value;if(typeof t==`boolean`){o.checked=t;return}if(t===`false`||t===`0`||t===0){o.checked=!1;return}if(t===`true`||t===`1`||t===1){o.checked=!0;return}o.indeterminate=!0,t!==null&&(e.value=null)},e.signal),n?a.insertBefore(document.createTextNode(e.field?.label??``),a.firstChild):r&&a.appendChild(document.createTextNode(e.field?.label??``)),i};function Je(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`date`,r.step=`1`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var J=H.bind(null,Je);function Ye(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`time`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var Y=H.bind(null,Ye);function Xe(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`datetime-local`,r.step=`1`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var X=H.bind(null,Xe);function Ze(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`url`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var Qe=H.bind(null,Ze);function $e(e,t,n){let r=e.appendChild(document.createElement(`input`));return t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(r.value||null)),e=>{r.value=e??``}}var et=H.bind(null,$e),Z=e=>{let{inline:t,showLabel:n,quick:r}=e.style,i=e.source.service,a=document.createElement(t?`span`:`div`),o=a.appendChild(document.createElement(`label`));a.classList=`InputDocument`;let s=o.appendChild(document.createElement(`div`)),d=s.appendChild(document.createElement(`div`)),f=s.appendChild(document.createElement(`div`));d.classList=`InputDocument-placeholder`;let p=null,m=null,h=c(),g=null,v=e.field?.label??``;return d.innerText=r?v:``,l(()=>{let e=h.get()||``;f.innerText=e,d.hidden=!!e},e.signal),l(async()=>{let t=e.value,n=t==``||t==null?null:t;if(p===n||(p=n,m=p,h.set(p||``),!p)||!i)return;let r=await i;if(!r)return;let a=r.labelPattern||``;if(!u(a).length)return;let{option:o}=await i.option(p);!o||p!==m||h.set(_(a,o)||p)},e.signal),n&&o.insertBefore(document.createTextNode(v),o.firstChild),i?(s.classList=`InputDocument-text`,s.tabIndex=0,s.addEventListener(`click`,async()=>{g?.abort(),g=new AbortController;let t=await Ce(e.source,{parent:a,signal:AbortSignal.any([g.signal,e.signal])}),n=Array.isArray(t)?t[0]:t;if(!n){if(!e.value)return;p=``,m=null,e.value=null,h.set(``);return}let r=n.value;r!==e.value&&(p=r,e.value=r,m=null,h.set(n.label||r))}),a):a},Q=e=>{let{inline:t,showLabel:n,quick:r}=e.style,a=document.createElement(t?`span`:`div`).appendChild(document.createElement(`label`)),o=a.appendChild(document.createElement(`select`));o.addEventListener(`change`,()=>{e.value=o.value||null});let s=i(()=>{let t=e.source.levelTree;return[{value:``,label:r&&e.field?.label||``,disabled:!1,level:0},...t]});return l(()=>{o.innerHTML=``;for(let{value:e,label:t,disabled:n,level:r}of s.get()){let i=document.createElement(`option`);i.value=`${e}`,i.label=`${Array(r).fill(` `).join(``)}${t}`,n&&(i.disabled=n),o.appendChild(i)}o.value=e.value||``},e.signal),l(()=>{let t=e.value;o.value=(t==``||t==null?null:t)||``},e.signal),n&&a.insertBefore(document.createTextNode(e.field?.label??``),a.firstChild),o};function tt(e){if(typeof e!=`string`)return!!e;switch(e.toLowerCase()){case``:case`0`:case`n`:case`f`:case`no`:case`off`:case`false`:return!1}return!0}function $(e,t){if([e,t].filter(e=>(e??null)===null).length===1)return!1;let n=e??null,r=t??null;return Object.is(n,r)?!0:n===null||r===null?!1:typeof e==`boolean`||typeof t==`boolean`?tt(e)===tt(t):e==t}function nt(e,t){if(Array.isArray(t)){for(let n of e)if(Array.isArray(n)){if(n.length!==t.length)continue;if(t.findIndex((e,t)=>!$(n[t],e))<0)return!0}else for(let e of t)if($(n,e))return!0}else for(let n of e)if($(n,t))return!0;return!1}function rt(e,t){if(Array.isArray(t))return null;let n=t??null,r=n===null?``:String(n);for(let t of e){let e=(Array.isArray(t)?t[0]:t)??null;if(!(e===null||e===``)&&r.includes(String(e)))return}return!1}function it(e,t){if(Array.isArray(t)){for(let n of e)if(Array.isArray(n)&&n.length===t.length&&t.findIndex((e,t)=>!$(n[t],e))<0)return!0}else for(let n of e)if(Array.isArray(n)&&n.length===t.length){for(let e of n)if($(e,t))return!0}return!1}function at(e,t,n){if(((Array.isArray(n)?n[0]:n)??null)===null)return null;for(let r of t){if(Array.isArray(r)||(r??null)===null)continue;let t=e(r,n);if(typeof t==`boolean`)return t}return!1}function ot(e,t){return at((e,t)=>e>t,e,t)}function st(e,t){return at((e,t)=>e>=t,e,t)}function ct(e,t){return at((e,t)=>e<t,e,t)}function lt(e,t){return at((e,t)=>e<=t,e,t)}const ut=[{not:`!=`,notLabel:`≠`,value:nt,filters:{gt:{value:ot},ge:{value:st},lt:{value:ct},le:{value:lt},in:{value:nt,not:`nin`},contains:{value:rt}}},{array:!0,not:`!=`,notLabel:`≠`,value:it,filters:{in:{value:it,not:`nin`}}},{type:`text`,input:E,filter:U,notFilter:U,filters:{ne:{filter:U,label:`≠`},gt:{filter:U,label:`>`},ge:{filter:U,label:`≥`},lt:{filter:U,label:`<`},le:{filter:U,label:`≤`},contains:{filter:U,label:`包含`}}},{type:`string`,input:N,filter:q,notFilter:q,filters:{ne:{filter:q,label:`≠`},gt:{filter:q,label:`>`},ge:{filter:q,label:`≥`},lt:{filter:q,label:`<`},le:{filter:q,label:`≤`},contains:{filter:q,label:`包含`}}},{type:`bool`,input:P,filter:qe,notFilter:qe,filters:{ne:{filter:qe,label:`≠`}}},{type:`f32`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`f64`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`decimal`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`numeric`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`money`,input:k,filter:W,notFilter:W,filters:{ne:{filter:W,label:`≠`},gt:{filter:W,label:`>`},ge:{filter:W,label:`≥`},lt:{filter:W,label:`<`},le:{filter:W,label:`≤`}}},{type:`i16`,input:re,filter:G,notFilter:G,filters:{ne:{filter:G,label:`≠`},gt:{filter:G,label:`>`},ge:{filter:G,label:`≥`},lt:{filter:G,label:`<`},le:{filter:G,label:`≤`}}},{type:`i32`,input:re,filter:G,notFilter:G,filters:{ne:{filter:G,label:`≠`},gt:{filter:G,label:`>`},ge:{filter:G,label:`≥`},lt:{filter:G,label:`<`},le:{filter:G,label:`≤`}}},{type:`i64`,input:ae,filter:K,notFilter:K,filters:{ne:{filter:K,label:`≠`},gt:{filter:K,label:`>`},ge:{filter:K,label:`≥`},lt:{filter:K,label:`<`},le:{filter:K,label:`≤`}}},{type:`date`,input:ue,filter:J,notFilter:J,filters:{ne:{filter:J,label:`≠`},gt:{filter:J,label:`>`},ge:{filter:J,label:`≥`},lt:{filter:J,label:`<`},le:{filter:J,label:`≤`}}},{type:`time`,input:I,filter:Y,notFilter:Y,filters:{ne:{filter:Y,label:`≠`},gt:{filter:Y,label:`>`},ge:{filter:Y,label:`≥`},lt:{filter:Y,label:`<`},le:{filter:Y,label:`≤`}}},{type:`uuid`,input:Se,filter:et,notFilter:et,filters:{ne:{filter:et,label:`≠`}}},{type:`datetime`,input:me,filter:X,notFilter:X,filters:{ne:{filter:X,label:`≠`},gt:{filter:X,label:`>`},ge:{filter:X,label:`≥`},lt:{filter:X,label:`<`},le:{filter:X,label:`≤`}}},{type:`timetz`,input:I,filter:Y,notFilter:Y,filters:{ne:{filter:Y,label:`≠`},gt:{filter:Y,label:`>`},ge:{filter:Y,label:`≥`},lt:{filter:Y,label:`<`},le:{filter:Y,label:`≤`}}},{type:`timestamp`,input:me,filter:X,notFilter:X,filters:{ne:{filter:X,label:`≠`},gt:{filter:X,label:`>`},ge:{filter:X,label:`≥`},lt:{filter:X,label:`<`},le:{filter:X,label:`≤`}}},{renderer:`password`,input:ge,filter:q,notFilter:q,filters:{ne:{filter:q,label:`≠`}}},{renderer:`uri`,input:ye,filter:Qe,notFilter:Qe,filters:{ne:{filter:Qe,label:`≠`}}},{renderer:`document`,input:we,filter:Z,notFilter:Z,filters:{ne:{filter:Z,label:`≠`}}},{array:!0,renderer:`document`,input:Ee,filter:Z,notFilter:Z,filters:{ne:{filter:Z,label:`≠`}}},{renderer:`select`,input:De,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`select`,array:!0,input:Ae,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`choice`,input:Re,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`choice`,array:!0,input:Le,filter:Q,notFilter:Q,filters:{ne:{filter:Q,label:`≠`}}},{renderer:`search`,input:V,filter:V,notFilter:V,filters:{ne:{filter:V,label:`≠`}}},{renderer:`search`,array:!0,input:Ae,filter:V,notFilter:V,filters:{ne:{filter:V,label:`≠`}}},{renderer:`code128`,input:Ie},{renderer:`barcode`,input:Ie},{renderer:`configuration`,input:Pe},{type:`submodel`,array:!0,renderer:`permission`,input:je}],dt=[`style.css`];export{ut as formFields,dt as styles};
2
2
  //# sourceMappingURL=hooks.mjs.map
package/hooks.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.mjs","names":["createShow","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","Component","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","Component","isEq","Component","Component","Component","isEq","Component","Component","Component","Component","Component","createInput","Component","getValue","createInput","Component","getValue","createInput","Component","createInput","Component","createInput","Component","Component","createInput","Component","createInput","Component","createInput","Component","createInput","Component","Component","Component","textInput","textFilter","stringInput","stringFilter","boolInput","boolFilter","floatInput","floatFilter","i32Input","i32Filter","i64Input","i64Filter","dateInput","dateFilter","timeInput","timeFilter","uuidInput","uuidFilter","datetimeInput","datetimeFilter","passwordInput","uriInput","uriFilter","documentInput","documentFilter","documentsInput","selectInput","selectFilter","searchMultipleInput","radio","checkbox","searchInput","searchFilter","code128","configurationInput","permissionsInput"],"sources":["../../packages/theme/inputs/createInputCell.mjs","../../packages/theme/inputs/text.mjs","../../packages/theme/inputs/float.mjs","../../packages/theme/inputs/i32.mjs","../../packages/theme/inputs/i64.mjs","../../packages/theme/inputs/string.mjs","../../packages/theme/inputs/bool.mjs","../../packages/theme/inputs/date.mjs","../../packages/theme/inputs/time.mjs","../../packages/theme/inputs/datetime.mjs","../../packages/theme/inputs/password.mjs","../../packages/theme/inputs/uri.mjs","../../packages/theme/inputs/uuid.mjs","../../packages/theme/components/selectDocument.mjs","../../packages/theme/inputs/document.mjs","../../packages/theme/inputs/documents.mjs","../../packages/theme/inputs/select.mjs","../../packages/theme/components/selectSource.mjs","../../packages/theme/filters/search.mjs","../../packages/theme/inputs/searchMultiple.mjs","../../packages/theme/inputs/permissions.mjs","../../packages/theme/inputs/configuration.mjs","../../packages/theme/inputs/code128.mjs","../../packages/theme/inputs/checkbox.mjs","../../packages/theme/inputs/radio.mjs","../../packages/theme/filters/createInputCell.mjs","../../packages/theme/filters/text.mjs","../../packages/theme/filters/float.mjs","../../packages/theme/filters/i32.mjs","../../packages/theme/filters/i64.mjs","../../packages/theme/filters/string.mjs","../../packages/theme/filters/bool.mjs","../../packages/theme/filters/date.mjs","../../packages/theme/filters/time.mjs","../../packages/theme/filters/datetime.mjs","../../packages/theme/filters/uri.mjs","../../packages/theme/filters/uuid.mjs","../../packages/theme/filters/document.mjs","../../packages/theme/filters/select.mjs","../../packages/theme/hooks.mjs"],"sourcesContent":["/** @import { FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nexport function createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = v ?? ''; }];\n\n}\n\n/**\n * @template T\n * @param {FieldContext} ctx\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} create\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} createShow\n * @param {(v: string, nullable?: boolean | undefined)=> T | null} getValue\n * @param {T} initValue\n * @returns {HTMLElement}\n */\nexport default function createInputCell(ctx,\n\tcreate,\n\tcreateShow,\n\tgetValue,\n\tinitValue,\n\t) {\n\n\tconst editable = ctx.editable;\n\n\t/** @type {T?} */\n\tlet value = ctx.field?.nullable ? null : initValue;\n\tconst [input, set] = (editable ? create : createShow)(ctx, v => {\n\t\tvalue = getValue(v, ctx.field?.nullable);\n\t\tctx.value = value;\n\t});\n\t/**\n\t * \n\t * @param {*} v \n\t * @param {boolean} [force] \n\t * @returns \n\t */\n\tfunction update(v, force) {\n\t\tif (!force && v === value) { return }\n\t\tvalue = v;\n\t\tset(v);\n\t}\n\tupdate(ctx.value, true);\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n}\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.innerText = v ?? ''; }];\n\n}\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\n\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null;\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('textarea');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\n\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {bigint?}\n*/\nfunction getValue(v, nullable) {\n\tif (!v) {\n\t\treturn !nullable ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn !nullable ? 0n : null\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0n);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst input = document.createElement('input');\n\tinput.type = 'checkbox';\n\tconst editable = ctx.editable;\n\t/** @type {boolean?} */\n\tlet value = ctx.field?.nullable ? null : false;\n\tif (editable) {\n\t\tinput.addEventListener('input', () => {\n\t\t\tvalue = Boolean(input.checked);\n\t\t\tctx.value = value;\n\t\t});\n\t\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\t\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\t\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\t} else {\n\t\tinput.disabled = true;\n\t}\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\t// TODO:\n\t\tconst vv = !ctx.field?.nullable || typeof v === 'boolean' ? Boolean(v) : null;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.checked = Boolean(vv);\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tif (Number.isFinite(new Date(v).valueOf())) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'date';\n\tinput.step = '1'\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value)) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'time';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {Date?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value.valueOf())) {\n\t\treturn value;\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {Date} date \n * @param {string} show\n */\nfunction toDateStr(date, show) {\n\tconst vv = date.valueOf();\n\tif (!vv) { return '' }\n\treturn `${[\n\t\t`${date.getFullYear()}`.padStart(4, '0'),\n\t\t`${date.getMonth() + 1}`.padStart(2, '0'),\n\t\t`${date.getDate()}`.padStart(2, '0'),\n\t\t].join('-')}${show}${[\n\t\t\t`${date.getHours()}`.padStart(2, '0'),\n\t\t\t`${date.getMinutes()}`.padStart(2, '0'),\n\t\t\t`${date.getSeconds()}`.padStart(2, '0'),\n\t\t\t].join(':')}`\n}\n\n/**\n * \n * @param {*} v \n * @param {string} [show] \n */\nfunction toDateValue(v,show = 'T') {\n\treturn v instanceof Date ? toDateStr(v,show) : toDateStr(new Date(v),show) ?? '';\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = toDateValue(v, ' '); }];\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\t// TODO: 追加时区\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = toDateValue(v); }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, null);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'password';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'url';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { Field, FieldScriptConfiguration, Store } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nimport { createDialog, getPrimaryFields, importStyle, toId, watch } from '@yongdall/web';\n\n\nimport { ArrayStore, createComputed, createQuickFilters, createState, effect, getPermissionFields, waitAbortSignal } from '@yongdall/web';\nimport { Pagination, modelService, createShowField, runPattern, getPatternFields, showFilterDialog, Search } from '@yongdall/web';\nimport { Check, Source } from '@neeloong/table';\nimportStyle('@neeloong/table/style.css');\n\n\n/**\n * @typedef {object} Selected\n * @property {any} value\n * @property {any} label\n * @property {any} data\n */\n\n/**\n * \n * @param {object} source\n * @param {ReturnType<typeof modelService>?} [source.service] \n * @param {string?} [source.label] 标签模式\n * @param {Field.Show[]?} [source.fields] 显示字段\n * @param {{ field: string; label?: string; operator: string; }[]?} [source.queryFilters] 快速过滤字段\n * @param {(Search.Match | Search.Children)[]?} [source.where]\n * @param {(Search.Match | Search.Children | Search.Or)[]?} [source.orWhere]\n * @param {object} [options]\n * @param {HTMLElement} [options.parent] \n * @param {AbortSignal} [options.signal] \n * @param {boolean} [options.multiple] \n */\nexport default async function selectDocument(source, options) {\n\tconst { signal, multiple} = options || {};\n\tconst service = source.service\n\tconst signalPromise = waitAbortSignal(signal, true);\n\tconst modelDefine = await Promise.race([service?.loadScript(), signalPromise]);\n\tif (!modelDefine) { return Promise.reject(); }\n\tconst dialog = createDialog(options);\n\tconst labelPattern = source.label || modelDefine.labelPattern || '';\n\tconst showFields = source.fields;\n\tconst queryFilterFields = source.queryFilters || [];\n\n\tconst where = createState(/** @type {Search.AndList} */([]));\n\tconst limit = createState(100);\n\tconst page = createState(1);\n\tconst documents = createState(/** @type {any[]} */([]));\n\n\n\tconst header = dialog.appendChild(document.createElement('div'));\n\tconst queryFilters = header.appendChild(document.createElement('div'));\n\tconst menus = header.appendChild(document.createElement('div'));\n\tconst body = dialog.appendChild(document.createElement('div'));\n\tconst footer = dialog.appendChild(document.createElement('div'));\n\tdialog.classList.add('Modal');\n\theader.classList.add('Modal-header');\n\tbody.classList.add('Modal-body');\n\tfooter.classList.add('Modal-footer');\n\tqueryFilters.classList.add('Modal-title');\n\tqueryFilters.classList.add('QueryFilters');\n\tmenus.classList.add('MenuButtons');\n\n\n\n\n\tconst idKey = '_';\n\tconst tableSource = new Source({ idKey, parentKey: 'parent' });\n\ttableSource.selectable = true;\n\n\n\n\n\tconst fields = modelDefine.fields;\n\tconst permissionFields = getPermissionFields('options', modelDefine.permissions || [], modelDefine);\n\n\tconst allFields = Object.entries(fields)\n\t\t.filter(([, { type }]) => type && typeof type !== 'object')\n\t\t.filter(([k]) => permissionFields.has(k));\n\tconst idFields = getPrimaryFields(modelDefine);\n\n\t/** @type {(Omit<Field.Show, 'field'> & {name: string; title: string; field: FieldScriptConfiguration})[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label, align, enableLink } of showFields || []) {\n\t\tif (!field) { continue; }\n\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\tconst f = fields[field];\n\t\tif (!f) { continue; }\n\t\tconst type = f.type;\n\t\tif (!type || typeof type !== 'string') { continue; }\n\t\tallFieldsShow.push({\n\t\t\tname: field,\n\t\t\twidth: width || undefined,\n\t\t\ttitle: label || f.label || '',\n\t\t\tfield: f,\n\t\t\talign,\n\t\t\tenableLink\n\t\t});\n\t}\n\tif (!allFieldsShow.length) {\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\tconst queryFields = [...new Set([\n\t\t...allFieldsShow.map(v => v.name),\n\t\t...idFields,\n\t\t...getPatternFields(labelPattern),\n\t])];\n\n\n\teffect(() => tableSource.setValue(documents.get()), signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width, align, enableLink }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\tlet f = createShowField(name, field, { enableLink }, c.data);\n\t\t\troot.appendChild(f.root);\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tf.destroy();\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = createShowField(name, field, { enableLink }, c.data);\n\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t}, header() {\n\t\t\t\t\tconst root = document.createElement('span');\n\t\t\t\t\troot.innerText = title;\n\t\t\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\t\t\treturn {\n\t\t\t\t\t\troot: root,\n\t\t\t\t\t\tupdate() {\n\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdestroy() {\n\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tlet r = c.data;\n\t\t\tconst root = document.createElement('div');\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tlet r = c.data;\n\t\t\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tif (multiple) {\n\t\tcolumns.unshift({\n\t\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\t\treturn {\n\t\t\t\t\troot: document.createElement('div'),\n\t\t\t\t\tdestroy() { },\n\t\t\t\t\tsetHidden() { },\n\t\t\t\t\tupdate() {\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\n\tconst group = tableSource.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tgroup.createHeader(listTable.appendChild(document.createElement('div')));\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\tconst pagination = new Pagination();\n\twatch(() => limit.get(), limit => pagination.size = limit || 100, { immediate: true, signal });\n\twatch(() => page.get(), page => pagination.page = page || 1, { immediate: true, signal });\n\n\tpagination.listen(() => {\n\t\tpage.set(pagination.page);\n\t\tlimit.set(pagination.size);\n\t});\n\tlet k = 0;\n\tlet disabled = createState(false);\n\tasync function request() {\n\t\tif (signal?.aborted || !service) { return; }\n\t\tif (disabled.get()) { return; }\n\t\ttry {\n\t\t\tdisabled.set(true);\n\t\t\tk++;\n\t\t\tconst v = k;\n\t\t\tconst { options, total } = await service.options({\n\t\t\t\tlimit: limit.get(),\n\t\t\t\tpage: page.get(),\n\t\t\t\t// sort: sort.get(),\n\t\t\t\t// orWhere: orWhere.get(),\n\t\t\t\twhere: [...where.get() || [], ...source.where || []],\n\t\t\t\tor: source.orWhere || [],\n\t\t\t\tselect: queryFields,\n\t\t\t\ttotal: true,\n\t\t\t});\n\t\t\tif (signal?.aborted) { return; }\n\t\t\tif (v !== k) { return; }\n\t\t\tdocuments.set(\n\t\t\t\toptions.map(v => ({ ...v, [idKey]: toId(v, idFields) }))\n\t\t\t);\n\t\t\tpagination.total = total;\n\t\t} finally {\n\t\t\tdisabled.set(false);\n\n\t\t}\n\t}\n\tfunction updateFilters() {\n\t\tif (!modelDefine) { return; }\n\t\tshowFilterDialog(modelDefine, where.get(), dialog).then(values => {\n\t\t\twhere.set(values);\n\t\t}).catch(() => { });\n\t}\n\n\t/**\n\t * \n\t * @param {string} label \n\t * @param {() => void} exec \n\t * @param {import('@yongdall/web').State<boolean>?} [disabled] \n\t * @returns {HTMLElement}\n\t */\n\tfunction createButton(label, exec, disabled) {\n\t\tconst button = document.createElement('button');\n\t\tbutton.appendChild(document.createTextNode(label));\n\n\t\tconst isDisabled = createComputed(() => Boolean(disabled?.get()));\n\n\n\t\teffect(() => { button.disabled = isDisabled.get(); }, signal);\n\n\t\tbutton.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\texec();\n\t\t});\n\t\treturn button;\n\t}\n\n\t/** @type {PromiseWithResolvers<Selected | Selected[] | null>} */\n\tconst { promise, reject, resolve } = Promise.withResolvers();\n\tmenus.appendChild(createButton('刷新', request, disabled));\n\tmenus.appendChild(createButton('过滤', updateFilters));\n\tmenus.appendChild(createButton('确定', () => {\n\t\t/** @type {(string | number | symbol)[]} */\n\t\tlet checked = [];\n\t\tif (multiple) {\n\t\t\tchecked = tableSource.checked;\n\t\t\tif (!checked.length) { return resolve([]); }\n\t\t} else {\n\t\t\tconst selected = tableSource.selectedId;\n\t\t\tif (!selected) { return resolve(null); }\n\t\t\tchecked = [selected];\n\t\t}\n\t\tif (!checked.length) {\n\t\t\tresolve(multiple ? [] : null);\n\t\t\treturn;\n\t\t}\n\t\tconst list = documents.get();\n\t\tconst map = Object.fromEntries(list.map(v => [v[idKey], v]));\n\t\tconst options = [...new Set(checked.map(v => map[v]).filter(Boolean))].map(v => ({\n\t\t\tvalue: v[idKey],\n\t\t\tlabel: runPattern(labelPattern, v) || v[idKey],\n\t\t\tdata: v,\n\t\t}));\n\t\tresolve(multiple ? options : options[0]);\n\t}));\n\tmenus.appendChild(createButton('取消', () => {\n\t\treject();\n\t}));\n\tsignal?.addEventListener('abort', () => reject(signal.reason));\n\n\tcreateQuickFilters({\n\t\tget() { return where.get() || []; },\n\t\tset(values) {\n\t\t\twhere.set(values);\n\t\t\trequest();\n\t\t},\n\t}, queryFilters, queryFilterFields || [], {\n\t\tfields: modelDefine.fields,\n\t\tsignal: signal,\n\t\tinline: true,\n\t});\n\tbody.appendChild(listTable);\n\tfooter.appendChild(pagination.root);\n\n\twatch([\n\t\t() => where.get(),\n\t\t() => limit.get(),\n\t\t() => page.get(),\n\t], request, { signal, immediate: true });\n\treturn promise.finally(() => { dialog.close(); });\n}\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createState, effect, PageIdent } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectDocument from '../components/selectDocument.mjs';\n\n\n\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst service = ctx.source.service;\n\tconst root = document.createElement('div');\n\troot.classList = 'InputDocument';\n\tconst span = root.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst model = ctx.style.enableLink && ctx.source.model;\n\tconst valueSpan = span.appendChild(document.createElement(model ? 'a' : 'div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\tctx.listen('focus', () => span.focus());\n\t/** @type {string?} */\n\tlet value = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = createState();\n\tconst linkState = createState();\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\teffect(() => placeholder.innerText = ctx.placeholder, ctx.signal);\n\teffect(() => {\n\t\tconst value = valueState.get() || '';\n\t\tvalueSpan.innerText = value;\n\t\tplaceholder.hidden = Boolean(value);\n\t}, ctx.signal);\n\tif (model) {\n\t\teffect(() => {\n\t\t\tconst id = linkState.get() || '';\n\t\t\tif (!id) {\n\t\t\t\tvalueSpan.removeAttribute('href');\n\t\t\t\tvalueSpan.tabIndex = -1;\n\t\t\t} else {\n\t\t\t\tvalueSpan.removeAttribute('tabIndex');\n\t\t\t\tconst link = PageIdent.toHref({type: 'model', model: model, id});\n\t\t\t\tvalueSpan.setAttribute('href', link);\n\t\t\t}\n\t\t}, ctx.signal);\n\t}\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = newVal == '' || newVal == null ? null : newVal;\n\t\tif (value === newValue) { return; }\n\t\tvalue = newValue;\n\t\tconst label = ctx.current[`${ctx.name}~label`];\n\t\tlinkState.set(value);\n\t\tif (label) {\n\t\t\tcurrentValue = null;\n\t\t\tvalue = null;\n\t\t\tvalueState.set(label);\n\t\t\treturn;\n\t\t}\n\t\tcurrentValue = value;\n\t\tvalueState.set(value || '');\n\t\tif (!value) { return; }\n\t\tif (!service) { return; }\n\t\tconst modelConfiguration = await service;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await service.option(value);\n\t\tif (!option || value !== currentValue) { return; }\n\t\tvalueState.set(runPattern(labelPattern, option) || value);\n\t}, ctx.signal);\n\tif (!ctx.editable) { return root; }\n\tspan.classList = 'InputDocument-text';\n\teffect(() => {\n\t\tif (Boolean(ctx.readonly || ctx.disabled)) {\n\t\t\tspan.removeAttribute('tabIndex');\n\t\t\tac?.abort();\n\t\t\tac = null;\n\t\t\tspan.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tspan.tabIndex = 0;\n\t\t\tspan.removeAttribute('disabled');\n\t\t}\n\t}, ctx.signal);\n\n\tspan.addEventListener('click', async () => {\n\t\tif (ctx.readonly || ctx.disabled) { return; }\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tctx.emit('focus', null);\n\t\ttry {\n\t\t\tconst val = await selectDocument(ctx.source, {\n\t\t\t\tparent: root,\n\t\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t\t});\n\t\t\tconst result = Array.isArray(val) ? val[0] : val;\n\t\t\tif (!result) {\n\t\t\t\tif (!ctx.value) { return; }\n\t\t\t\tif (ctx.clearable || ctx.nullable) {\n\t\t\t\t\tvalue = '';\n\t\t\t\t\tcurrentValue = null;\n\t\t\t\t\tctx.value = ctx.nullable ? null : '';\n\t\t\t\t\tvalueState.set('');\n\t\t\t\t\tlinkState.set('');\n\t\t\t\t\tctx.emit('change', null);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newValue = result.value;\n\t\t\tif (newValue === ctx.value) { return; }\n\t\t\tvalue = newValue;\n\t\t\tctx.value = newValue;\n\t\t\tcurrentValue = null;\n\t\t\tlinkState.set(newValue);\n\t\t\tvalueState.set(result.label || newValue);\n\t\t\tctx.emit('change', newValue);\n\t\t\tctx.bind?.(result.data);\n\t\t} finally {\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\n\n\nimport { createState, effect, getPrimaryFields, PageIdent, toId } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectDocument from '../components/selectDocument.mjs';\n\n\n/**\n * \n * @param {string[]} a \n * @param {string[]} b \n * @returns \n */\nfunction isEq(a, b) {\n\tif (a.length !== b.length) { return false; }\n\treturn a.findIndex((v, i) => v != b[i]) === -1;\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst service = ctx.source.service;\n\tconst root = document.createElement('div');\n\troot.classList = 'InputDocument';\n\tconst span = root.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\tctx.listen('focus', () => span.focus());\n\t/** @type {string[]} */\n\tlet value = [];\n\t/** @type {string[]} */\n\tlet currentValue = [];\n\tconst valueState = createState(/** @type {string[]} */([]));\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\teffect(() => placeholder.innerText = ctx.placeholder, ctx.signal);\n\tconst model = ctx.style.enableLink && ctx.source.model;\n\teffect(() => {\n\t\tconst value = valueState.get();\n\t\tvalueSpan.innerHTML = '';\n\t\tif (model) {\n\t\t\tfor (const id of value) {\n\t\t\t\tconst span = valueSpan.appendChild(document.createElement('a'));\n\t\t\t\tspan.innerText = id;\n\t\t\t\tconst link = PageIdent.toHref({ type: 'model', model: model, id });\n\t\t\t\tvalueSpan.setAttribute('href', link);\n\t\t\t\tspan.classList = 'InputDocument-Item';\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const v of value) {\n\t\t\t\tconst span = valueSpan.appendChild(document.createElement('span'));\n\t\t\t\tspan.innerText = v;\n\t\t\t\tspan.classList = 'InputDocument-Item';\n\t\t\t}\n\n\t\t}\n\t\tplaceholder.hidden = Boolean(value.length);\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = (Array.isArray(newVal) ? newVal : [newVal]).map(v => typeof v === 'string' || typeof v === 'number' ? String(v) : '').filter(Boolean);\n\t\tif (isEq(value, newValue)) { return; }\n\t\tvalue = newValue;\n\t\tconst label = ctx.current[`${ctx.name}~label`];\n\t\tif (label) {\n\t\t\tcurrentValue = [];\n\t\t\tvalue = [];\n\t\t\tvalueState.set(label);\n\t\t\treturn;\n\t\t}\n\t\tcurrentValue = value;\n\t\tvalueState.set(value);\n\t\tif (!value.length) { return; }\n\t\tif (!service) { return; }\n\t\tconst modelConfiguration = await service;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { options } = await service.options({ primary: value, limit: value.length * 10 });\n\t\tif (!options.length || value !== currentValue) { return; }\n\n\t\tconst idFields = getPrimaryFields(modelConfiguration);\n\t\tconst map = Object.fromEntries(options.map(v => [toId(v, idFields), v]));\n\t\tvalue.map(value => {\n\t\t\tconst option = Object.hasOwn(map, value) && map[value];\n\t\t\treturn option && runPattern(labelPattern, option) || value;\n\t\t});\n\t\tvalueState.set(value.map(value => {\n\t\t\tconst option = Object.hasOwn(map, value) && map[value];\n\t\t\treturn option && runPattern(labelPattern, option) || value;\n\t\t}));\n\t}, ctx.signal);\n\tif (!ctx.editable) { return root; }\n\tspan.classList = 'InputDocument-text';\n\teffect(() => {\n\t\tif (Boolean(ctx.readonly || ctx.disabled)) {\n\t\t\tspan.removeAttribute('tabIndex');\n\t\t\tac?.abort();\n\t\t\tac = null;\n\t\t\tspan.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tspan.tabIndex = 0;\n\t\t\tspan.removeAttribute('disabled');\n\t\t}\n\t}, ctx.signal);\n\tspan.addEventListener('click', async () => {\n\t\tif (ctx.readonly || ctx.disabled) { return; }\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tctx.emit('focus', null);\n\t\ttry {\n\t\t\tconst val = await selectDocument(ctx.source, {\n\t\t\t\tparent: root,\n\t\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t\t\tmultiple: true,\n\t\t\t});\n\t\t\tconst result = Array.isArray(val) ? val : val ? [val] : [];\n\t\t\tif (!result.length) {\n\t\t\t\tif (!ctx.value?.length) { return; }\n\t\t\t\tif (ctx.clearable || ctx.nullable) {\n\t\t\t\t\tvalue = [];\n\t\t\t\t\tcurrentValue = [];\n\t\t\t\t\tctx.value = ctx.nullable ? null : [];\n\t\t\t\t\tvalueState.set([]);\n\t\t\t\t\tctx.emit('change', null);\n\t\t\t\t} else {\n\t\t\t\t\tctx.value = [];\n\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newValue = result.map(v => v.value);\n\t\t\tif (isEq(newValue, ctx.value)) { return; }\n\t\t\tvalue = newValue;\n\t\t\tctx.value = newValue;\n\t\t\tcurrentValue = [];\n\t\t\tvalueState.set(result.map(v => v.label || v.value));\n\t\t\tctx.emit('change', null);\n\t\t} finally {\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect } from '@yongdall/web';\n\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState('');\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tif (val === '') {\n\t\t\t\tspan.innerText = '';\n\t\t\t} else {\n\t\t\t\tspan.innerText = ctx.source.labels[val] ?? val;\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\tconst vv = v == null ? '' : String(v);\n\t\t\tif (vv === value.get()) { return; }\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\n\tconst hasNull = createComputed(() => '' in ctx.source.labels);\n\n\t// TODO: 过滤\n\tconst input = document.createElement('select');\n\n\tinput.addEventListener('change', () => {\n\t\tconst val = input.value || (ctx.nullable && !hasNull.get() ? null : '');\n\t\tctx.value = val;\n\t\tif (!val) { return; }\n\t\tconst allData = ctx.source.map;\n\t\tctx.bind?.(Object.hasOwn(allData, val) && allData[val]);\n\t});\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\n\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn ctx.clearable ? [{ value: '', label: ctx.field?.label ?? '', disabled: false, level: 0 }, ...list] : list;\n\t});\n\n\n\teffect(() => {\n\t\tinput.innerHTML = '';\n\t\tfor (const { value, label, disabled, level } of currentOptions.get()) {\n\t\t\tconst option = document.createElement('option');\n\t\t\toption.value = `${value}`;\n\t\t\toption.label = `${Array(level).fill(' ').join('')}${label}`;\n\t\t\tif (disabled) {\n\t\t\t\toption.disabled = disabled;\n\t\t\t}\n\t\t\tinput.appendChild(option);\n\t\t}\n\t\tinput.value = ctx.value || '';\n\t}, ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\tinput.value = v ?? '';\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { DataSource, Field, FieldScriptConfiguration, Store } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nimport { createDialog, createShowField, importStyle } from '@yongdall/web';\n\n\nimport { createComputed, effect, getPermissionFields, waitAbortSignal } from '@yongdall/web';\nimport { Check, Source } from '@neeloong/table';\nimportStyle('@neeloong/table/style.css');\n\n\n/**\n * @typedef {object} Selected\n * @property {any} value\n * @property {any} label\n * @property {any} data\n */\n\n/**\n * \n * @param {DataSource} sourceOptions \n * @param {object} [options] \n * @param {AbortSignal} [options.signal] \n * @param {boolean} [options.multiple] \n * @param {HTMLElement} [options.parent] \n */\nexport default async function selectSource(sourceOptions, options) {\n\tconst {signal, multiple} = options || {}\n\tconst signalPromise = waitAbortSignal(signal, true);\n\tconst modelDefine = await Promise.race([sourceOptions.service?.loadScript(), signalPromise]);\n\n\t\tconst dialog = createDialog(options);\n\tconst root = dialog;\n\tconst showFields = sourceOptions.fields;\n\n\tconst documents = createComputed(() => sourceOptions.options);\n\n\tconst header = root.appendChild(document.createElement('div'));\n\tconst queryFilters = header.appendChild(document.createElement('div'));\n\tconst menus = header.appendChild(document.createElement('div'));\n\tconst body = root.appendChild(document.createElement('div'));\n\tdialog.classList.add('Modal');\n\theader.classList.add('Modal-header');\n\tbody.classList.add('Modal-body');\n\tqueryFilters.classList.add('Modal-title');\n\tqueryFilters.classList.add('QueryFilters');\n\tmenus.classList.add('MenuButtons');\n\n\n\n\n\n\tconst idKey = 'value';\n\tconst tableSource = new Source({ idKey, parentKey: 'parent' });\n\ttableSource.selectable = true;\n\n\n\n\n\tconst fields = modelDefine?.fields;\n\tconst permissionFields = modelDefine ? getPermissionFields('options', modelDefine.permissions || [], modelDefine) : new Set();\n\n\n\t/** @type {(Omit<Field.Show, 'field'> & {name: string; title: string; field?: FieldScriptConfiguration})[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label, align } of showFields || []) {\n\t\tif (!field) { continue; }\n\t\tif (fields) {\n\t\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\t\tconst f = fields[field];\n\t\t\tif (!f) { continue; }\n\t\t\tconst type = f.type;\n\t\t\tif (!type || typeof type !== 'string') { continue; }\n\t\t\tallFieldsShow.push({\n\t\t\t\tname: field,\n\t\t\t\twidth: width || undefined,\n\t\t\t\ttitle: label || f.label || '',\n\t\t\t\tfield: f,\n\t\t\t\talign,\n\t\t\t});\n\t\t} else {\n\t\t\tallFieldsShow.push({\n\t\t\t\tname: field,\n\t\t\t\twidth: width || undefined,\n\t\t\t\ttitle: label || field || '',\n\t\t\t\talign,\n\t\t\t});\n\n\t\t}\n\t}\n\tif (!allFieldsShow.length && fields) {\n\t\tconst allFields = Object.entries(fields)\n\t\t\t.filter(([, { type }]) => type && typeof type !== 'object')\n\t\t\t.filter(([k]) => permissionFields.has(k));\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\n\teffect(() => tableSource.setValue(documents.get()), signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, title, width, align, field }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\tlet f = field && createShowField(name, field, {}, c.data.data);\n\t\t\tif (f) {\n\t\t\t\troot.appendChild(f.root);\n\t\t\t} else {\n\t\t\t\troot.innerText = c.data.data?.[name];\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tif (f) { f.destroy(); }\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tif (f) { f.destroy(); }\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = field && createShowField(name, field, {}, c.data);\n\t\t\t\t\tif (f) {\n\t\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t\t} else {\n\t\t\t\t\t\troot.innerText = c.data.data?.[name];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\theader() {\n\t\t\tconst root = document.createElement('span');\n\t\t\troot.innerText = title;\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\treturn {\n\t\t\t\troot: root,\n\t\t\t\tupdate() {\n\n\t\t\t\t},\n\t\t\t\tdestroy() {\n\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tconst r = c.data;\n\t\t\tconst root = document.createElement('div');\n\t\t\tconst label = r.label || r.value;\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tconst r = c.data;\n\t\t\t\t\tconst label = r.label || r.value;\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tif (multiple) {\n\t\tcolumns.unshift({\n\t\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\t\treturn {\n\t\t\t\t\troot: document.createElement('div'),\n\t\t\t\t\tdestroy() { },\n\t\t\t\t\tsetHidden() { },\n\t\t\t\t\tupdate() {\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\n\tconst group = tableSource.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tgroup.createHeader(listTable.appendChild(document.createElement('div')));\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\n\t/**\n\t * \n\t * @param {string} label \n\t * @param {() => void} exec \n\t * @param {import('@yongdall/web').State<boolean>?} [disabled] \n\t * @returns {HTMLElement}\n\t */\n\tfunction createButton(label, exec, disabled) {\n\t\tconst button = document.createElement('button');\n\t\tbutton.appendChild(document.createTextNode(label));\n\n\t\tconst isDisabled = createComputed(() => Boolean(disabled?.get()));\n\n\n\t\teffect(() => { button.disabled = isDisabled.get(); }, signal);\n\n\t\tbutton.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\texec();\n\t\t});\n\t\treturn button;\n\t}\n\n\t/** @type {PromiseWithResolvers<Selected | Selected[] | null>} */\n\tconst { promise, reject, resolve } = Promise.withResolvers();\n\t// menus.appendChild(createButton('刷新', request, disabled));\n\tmenus.appendChild(createButton('确定', () => {\n\t\t/** @type {(string | number | symbol)[]} */\n\t\tlet checked = [];\n\t\tif (multiple) {\n\t\t\tchecked = tableSource.checked;\n\t\t\tif (!checked.length) { return resolve([]); }\n\t\t} else {\n\t\t\tconst selected = tableSource.selectedId;\n\t\t\tif (!selected) { return resolve(null); }\n\t\t\tchecked = [selected];\n\t\t}\n\t\tif (!checked.length) {\n\t\t\tresolve(multiple ? [] : null);\n\t\t\treturn;\n\t\t}\n\t\tconst list = documents.get();\n\t\tconst map = Object.fromEntries(list.map(v => [v[idKey], v]));\n\t\t// @ts-ignore\n\t\tconst options = [...new Set(checked.map(v => map[v]).filter(Boolean))].map(v => ({\n\t\t\tvalue: v[idKey],\n\t\t\tlabel: v.label || v[idKey],\n\t\t\tdata: v.data,\n\t\t}));\n\t\tresolve(multiple ? options : options[0]);\n\t}));\n\tmenus.appendChild(createButton('取消', () => {\n\t\treject();\n\t}));\n\n\tbody.appendChild(listTable);\n\n\n\tsignal?.addEventListener('abort', () => reject(signal.reason));\n\treturn promise.finally(() => { dialog.close(); });\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\n\nimport { createState, effect } from '@yongdall/web';\nimport selectSource from '../components/selectSource.mjs';\n\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst modelName = ctx.source.model || '';\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\troot.classList = 'InputDocument';\n\tconst span = label.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\t/** @type {string?} */\n\tlet value = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = createState();\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\tconst labelText = ctx.field?.label ?? '';\n\tplaceholder.innerText = (quick ? labelText : '');\n\teffect(() => {\n\t\tconst value = valueState.get() || '';\n\t\tplaceholder.hidden = Boolean(value);\n\t\tif (value) {\n\t\t\tconst labels = ctx.source.labels;\n\t\t\tvalueSpan.innerText = Object.hasOwn(labels, value) && labels[value] || value;\n\t\t} else {\n\t\t\tvalueSpan.innerText = '';\n\t\t}\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = newVal == '' || newVal == null ? null : newVal;\n\t\tif (value === newValue) { return; }\n\t\tvalue = newValue;\n\t\tcurrentValue = value;\n\t\tvalueState.set(value || '');\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(labelText), label.firstChild);\n\t}\n\tif (!modelName) { return root; }\n\tspan.classList = 'InputDocument-text';\n\tspan.tabIndex = 0;\n\tspan.addEventListener('click', async () => {\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tconst val = await selectSource(ctx.source, {\n\t\t\tparent: root,\n\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t});\n\t\tconst result = Array.isArray(val) ? val[0] : val;\n\t\tif (!result) {\n\t\t\tif (!ctx.value) { return; }\n\t\t\tvalue = '';\n\t\t\tcurrentValue = null;\n\t\t\tctx.value = null;\n\t\t\tvalueState.set('');\n\t\t\treturn;\n\t\t}\n\t\tconst newValue = result.value;\n\t\tif (newValue === ctx.value) { return; }\n\t\tvalue = newValue;\n\t\tctx.value = newValue;\n\t\tcurrentValue = null;\n\t\tvalueState.set(result.label || newValue);\n\n\t});\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\n\n\nimport { createState, effect, getPrimaryFields, toId } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectSource from '../components/selectSource.mjs';\n\n\n/**\n * \n * @param {string[]} a \n * @param {string[]} b \n * @returns \n */\nfunction isEq(a, b) {\n\tif (a.length !== b.length) { return false; }\n\treturn a.findIndex((v, i) => v != b[i]) === -1;\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\tconst root = document.createElement('div');\n\troot.classList = 'InputDocument';\n\tconst span = root.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\tctx.listen('focus', () => span.focus());\n\t/** @type {string[]} */\n\tlet value = [];\n\t/** @type {string[]} */\n\tlet currentValue = [];\n\tconst valueState = createState(/** @type {string[]} */([]));\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\teffect(() => placeholder.innerText = ctx.placeholder, ctx.signal);\n\teffect(() => {\n\t\tconst value = valueState.get();\n\t\tconst labels = ctx.source.labels\n\t\tvalueSpan.innerHTML = '';\n\t\tfor (const v of value) {\n\t\t\tconst span = valueSpan.appendChild(document.createElement('span'));\n\t\t\tspan.innerText = Object.hasOwn(labels, v) && labels[v] || v;\n\t\t\tspan.classList = 'InputDocument-Item';\n\t\t}\n\t\tplaceholder.hidden = Boolean(value.length);\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = (Array.isArray(newVal) ? newVal : [newVal]).map(v => typeof v === 'string' || typeof v === 'number' ? String(v) : '').filter(Boolean);\n\t\tif (isEq(value, newValue)) { return; }\n\t\tvalue = newValue;\n\t\tcurrentValue = value;\n\t\tvalueState.set(value);\n\t}, ctx.signal);\n\tif (!editable) { return root; }\n\tspan.classList = 'InputDocument-text';\n\teffect(() => {\n\t\tif (Boolean(ctx.readonly || ctx.disabled)) {\n\t\t\tspan.removeAttribute('tabIndex');\n\t\t\tac?.abort();\n\t\t\tac = null;\n\t\t\tspan.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tspan.tabIndex = 0;\n\t\t\tspan.removeAttribute('disabled');\n\t\t}\n\t}, ctx.signal);\n\tspan.addEventListener('click', async () => {\n\t\tif (ctx.readonly || ctx.disabled) { return; }\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tctx.emit('focus', null);\n\t\ttry {\n\t\t\tconst val = await selectSource(ctx.source, {\n\t\t\t\tparent: root,\n\t\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t\t\tmultiple: true,\n\t\t\t});\n\t\t\tconst result = Array.isArray(val) ? val : val ? [val] : [];\n\t\t\tif (!result.length) {\n\t\t\t\tif (!ctx.value?.length) { return; }\n\t\t\t\tif (ctx.clearable || ctx.nullable) {\n\t\t\t\t\tvalue = [];\n\t\t\t\t\tcurrentValue = [];\n\t\t\t\t\tctx.value = ctx.nullable ? null : [];\n\t\t\t\t\tvalueState.set([]);\n\t\t\t\t\tctx.emit('change', null);\n\t\t\t\t} else {\n\t\t\t\t\tctx.value = [];\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newValue = result.map(v => v.value);\n\t\t\tif (isEq(newValue, ctx.value)) { return; }\n\t\t\tvalue = newValue;\n\t\t\tctx.value = newValue;\n\t\t\tcurrentValue = [];\n\t\t\tvalueState.set(newValue);\n\t\t\tctx.emit('change', null);\n\t\t} finally {\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect, permissionsService } from '@yongdall/web';\n\n\n\n/** @type {FieldComponent} */\nconst permissionsComponent = ctx => {\n\tconst root = document.createElement('div');\n\tconst checkAllDiv = root.appendChild(document.createElement('div'));\n\tconst checkAllLabel = checkAllDiv.appendChild(document.createElement('label'));\n\tconst checkAll = checkAllLabel.appendChild(document.createElement('input'));\n\tcheckAllLabel.appendChild(document.createTextNode('全选'));\n\tcheckAllLabel.classList.add('align-center');\n\tcheckAll.type = 'checkbox';\n\tconst optionDiv = root.appendChild(document.createElement('div'));\n\tlet value = new Set();\n\tlet allValuesState = createComputed(() =>\n\t\tnew Set(permissionsService.get().flatMap(v => v.children?.map(v => v.value) || []))\n\t);\n\tfunction updateAll() {\n\t\tif (allValuesState.get().size === value.size) {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = true;\n\t\t} else if (value.size) {\n\t\t\tcheckAll.indeterminate = true;\n\t\t} else {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = false;\n\t\t}\n\n\t}\n\tfunction updateSelect() {\n\t\tvalue = new Set();\n\t\tfor (const { checked, value: val } of optionDiv.querySelectorAll('input')) {\n\t\t\tif (!checked || !val) { continue; }\n\t\t\tvalue.add(val);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateAll();\n\t}\n\n\tfunction updateValue() {\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = value.has(input.value);\n\t\t}\n\t}\n\tfunction updateAllValue() {\n\t\tupdateValue();\n\t\tupdateAll();\n\t}\n\n\tconst inputs = createState(/** @type {HTMLInputElement[]} */([]));\n\n\tfunction updateOptions() {\n\t\toptionDiv.innerHTML = '';\n\t\tconst list = [];\n\t\tfor (const { label, children } of permissionsService.get()) {\n\t\t\tif (!children?.length) { continue; }\n\t\t\tconst groups = optionDiv.appendChild(document.createElement('details'));\n\t\t\tgroups.open = true;\n\t\t\tgroups.appendChild(document.createElement('summary')).appendChild(document.createTextNode(label));\n\t\t\tfor (const { value, label } of children) {\n\t\t\t\tconst checkLabel = groups.appendChild(document.createElement('label'));\n\t\t\t\tconst input = checkLabel.appendChild(document.createElement('input'));\n\t\t\t\tinput.type = 'checkbox';\n\t\t\t\tcheckLabel.appendChild(document.createTextNode(label));\n\t\t\t\tcheckLabel.classList.add('align-center');\n\t\t\t\tcheckLabel.classList.add('inline');\n\t\t\t\tinput.value = String(value || '');\n\t\t\t\tinput.addEventListener('input', updateSelect);\n\t\t\t\tlist.push(input);\n\t\t\t}\n\t\t}\n\t\tinputs.set(list);\n\t\tupdateAllValue();\n\t}\n\teffect(() => updateOptions(), ctx.signal);\n\n\n\n\tcheckAll.addEventListener('input', () => {\n\t\tif (!checkAll.checked) {\n\t\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\t\tinput.checked = false;\n\t\t\t}\n\t\t\tctx.value = [];\n\t\t\treturn;\n\t\t}\n\t\tconst value = new Set();\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = true;\n\t\t\tvalue.add(input.value);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateValue();\n\t});\n\tcheckAll.addEventListener('change', (e) => ctx.emit('change', e));\n\tcheckAll.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tcheckAll.addEventListener('blur', (e) => ctx.emit('blur', e));\n\n\n\n\n\tconst editable = createComputed(() => Boolean(!ctx.editable || ctx.disabled));\n\tctx.listen('focus', () => checkAll.focus());\n\tctx.listen('scrollIntoView', () => checkAll.scrollIntoView());\n\teffect(() => checkAll.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => {\n\t\tconst disabled = editable.get();\n\t\tcheckAllLabel.hidden = disabled;\n\t\tfor (const input of inputs.get()) {\n\t\t\tinput.disabled = disabled;\n\n\t\t}\n\t}, ctx.signal);\n\teffect(() => checkAll.readOnly = Boolean(ctx.readonly), ctx.signal);\n\n\n\n\n\n\n\n\t/**\n\t * \n\t * @param {any[]} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\tconst list = new Set(Array.isArray(v) && v.map(v => v.permission) || []);\n\t\tif (list.size === value.size) {\n\t\t\tlet updated = false;\n\t\t\tfor (const v of value) {\n\t\t\t\tif (!list.has(v)) {\n\t\t\t\t\tupdated = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!updated) { return; }\n\t\t\treturn;\n\t\t}\n\t\tvalue = list;\n\t\tupdateAllValue();\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn root;\n};\n\nexport default permissionsComponent;\n","/** @import { Schema, FieldComponent, ConfiguratorComponent } from '@yongdall/web' */\nimport { effect, importWidget, renderForm, BindObjectStore } from '@yongdall/web';\n\n/**\n * \n * @param {Schema} schema \n * @param {*} layout \n * @returns {ConfiguratorComponent}\n */\nfunction schema2ConfiguratorComponent(schema, layout) {\n\treturn (ctx, options) => {\n\t\tconst { signal, editable, store } = ctx;\n\t\tif (!store) { return; }\n\t\tif (signal.aborted) { return; }\n\t\tconst stop = new BindObjectStore(schema, store, signal);\n\t\tconst { enableLink, design } = ctx.style;\n\t\tctx.root.style.inlineSize = '100%';\n\t\trenderForm(stop, ctx.root, { enableLink, design, layout, editable, signal });\n\t};\n}\n/**\n * \n * @param {any} configurator \n * @returns {Promise<ConfiguratorComponent | null | undefined>}\n */\nasync function getWidget(configurator) {\n\tif (typeof configurator === 'string') {\n\t\treturn importWidget(configurator);\n\t}\n\tif (!configurator || typeof configurator !== 'object') { return null; }\n\tconst { widget, schema, layout } = configurator;\n\tif (typeof widget === 'string' && widget) { return importWidget(widget); }\n\tif (schema && typeof schema === 'object') {\n\t\treturn schema2ConfiguratorComponent(schema, layout);\n\t}\n\treturn null;\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\t/** @type {any} */\n\tlet currentConfigurator = null;\n\n\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\tconst root = document.createElement('div');\n\t/**\n\t * \n\t * @param {any} configurator \n\t * @returns \n\t */\n\tasync function run(configurator) {\n\t\tif (ctx.signal.aborted) { return; }\n\t\tif (configurator === currentConfigurator) { return; }\n\t\tcurrentConfigurator = configurator;\n\t\tac?.abort();\n\t\tac = new AbortController();\n\t\tconst signal = AbortSignal.any([ac.signal, ctx.signal]);\n\t\t// TODO: 加载组件\n\t\tconst widget = await getWidget(configurator);\n\t\tif (typeof widget !== 'function') { return; }\n\t\tif (signal.aborted) { return; }\n\n\t\twidget({\n\t\t\troot,\n\t\t\tget store() { return ctx.store; },\n\t\t\tget style() { return ctx.style; },\n\t\t\tget field() { return ctx.field; },\n\t\t\tget name() { return ctx.name; },\n\n\t\t\tget value() { return ctx.value; },\n\t\t\tset value(value) { ctx.value = value; },\n\t\t\tget current() { return ctx.current; },\n\n\t\t\tget destroyed() { return ctx.destroyed; },\n\n\t\t\tget readonly() { return ctx.readonly; },\n\t\t\tget editable() { return ctx.editable; },\n\t\t\tget required() { return ctx.required; },\n\t\t\tget nullable() { return ctx.nullable; },\n\t\t\tget disabled() { return ctx.disabled; },\n\t\t\tget clearable() { return ctx.clearable; },\n\t\t\tget hidden() { return ctx.hidden; },\n\n\t\t\tget label() { return ctx.label; },\n\t\t\tget placeholder() { return ctx.placeholder; },\n\t\t\tget description() { return ctx.description; },\n\t\t\tget source() { return ctx.source; },\n\t\t\tget signal() { return signal; },\n\t\t\tlisten(event, listen) { return ctx.listen(event, listen); },\n\t\t\temit(event, e) { return ctx.emit(event, e); },\n\t\t\tget bind() { return ctx.bind; },\n\t\t}, typeof configurator === 'object' && configurator || {});\n\n\t}\n\n\n\t/** @type {number?} */\n\tlet idleId = null;\n\teffect(() => {\n\t\tconst cfg = ctx.source.configurator || null;\n\t\tif (idleId !== null) {\n\t\t\tcancelIdleCallback(idleId);\n\t\t}\n\t\tidleId = requestIdleCallback(() => {\n\t\t\tidleId = null;\n\t\t\trun(cfg);\n\t\t});\n\t}, ctx.signal);\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { Code128, effect } from '@yongdall/web';\n\n/**\n * 生成条码的 SVG Data URL\n * @param {SVGSVGElement} svg \n * @param {SVGPathElement} path \n * @param {string} text \n */\nfunction updatePath(svg, path, text) {\n\tconst bits = Code128.encode(text);\n\tif (!bits?.length) { path.setAttribute('d', ''); return; }\n\n\n\tconst paths = [];\n\tfor (let i = 0; i < bits.length; i++) {\n\t\tif (!bits[i]) { continue; }\n\t\tconst start = i - bits.length / 2;\n\t\tlet len = 1;\n\n\t\twhile (bits[i + 1]) {\n\t\t\tlen++;\n\t\t\ti++;\n\t\t}\n\n\t\tpaths.push(`M${start} -0.5h${len}v1h-${len}Z`);\n\t}\n\tif (!paths.length) { path.setAttribute('d', ''); return; }\n\n\n\tconst width = bits.length;\n\tconst height = 1;\n\n\tsvg.setAttribute('viewBox', `${-width / 2 - 10} -0.5 ${width + 20} 1`);\n\tpath.setAttribute('d', paths.join(\" \"));\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\tsvg.setAttribute('preserveAspectRatio', 'none');\n\tconst path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\tsvg.appendChild(path);\n\tsvg.style.blockSize = 'var(--input-height)';\n\tsvg.style.inlineSize = '100%';\n\tpath.setAttribute('fill', 'black');\n\tctx.listen('focus', () => svg.focus());\n\tctx.listen('scrollIntoView', () => svg.scrollIntoView());\n\t/** @type {string} */\n\tlet value = '';\n\n\teffect(() => {\n\t\tconst text = String(ctx.value ?? '').replace(/[^\\0-\\x7f]+/g, '');\n\t\tif (text === value) { return; }\n\t\tvalue = text;\n\t\tupdatePath(svg, path, text);\n\t}, ctx.signal);\n\treturn svg;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState(/** @type {string[]} */([]));\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tspan.innerText = val.map(v => ctx.source.labels[v] ?? v).join(', ');\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\t// 确保值是数组\n\t\t\tconst vv = [v].flat().map(v => String(v ?? '')).filter(Boolean);\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('InputCheckbox-group');\n\n\t/** @type {Record<string, HTMLInputElement>} */\n\tlet checkboxMap = Object.create(null);\n\n\t/**\n\t * \n\t * @param {*} event \n\t */\n\tfunction change(event) {\n\t\tconst selectedValues = [];\n\t\tfor (const [val, inputElement] of Object.entries(checkboxMap)) {\n\t\t\tif (inputElement.checked) {\n\t\t\t\tselectedValues.push(val);\n\t\t\t}\n\t\t}\n\t\tconst newValue = selectedValues.length === 0 && ctx.nullable ? null : selectedValues;\n\t\tctx.value = newValue;\n\n\t\tctx.emit('change', event);\n\t}\n\tcontainer.addEventListener('focus', (e) => ctx.emit('focus', e), true);\n\tcontainer.addEventListener('blur', (e) => ctx.emit('blur', e), true);\n\n\tctx.listen('focus', () => {\n\t\tfor (const inputElement of Object.values(checkboxMap)) {\n\t\t\tif (!inputElement.disabled) {\n\t\t\t\tinputElement.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\tctx.listen('scrollIntoView', () => container.scrollIntoView());\n\n\teffect(() => {\n\t\tconst disabled = Boolean(ctx.readonly || ctx.disabled);\n\t\tfor (const inputElement of Object.values(checkboxMap)) {\n\t\t\tinputElement.disabled = disabled;\n\t\t}\n\t}, ctx.signal);\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn list;\n\t});\n\n\teffect(() => {\n\t\tcontainer.innerHTML = '';\n\t\tcheckboxMap = Object.create(null);\n\n\t\tconst options = currentOptions.get();\n\t\tconst selectedValues = new Set(Array.isArray(ctx.value) ? ctx.value : (ctx.value == null ? [] : [ctx.value]));\n\n\t\tfor (const { value, label, disabled, level } of options) {\n\n\t\t\tconst checkbox = document.createElement('input');\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tcheckbox.value = `${value}`;\n\t\t\tcheckbox.checked = selectedValues.has(value);\n\t\t\tif (disabled) {\n\t\t\t\tcheckbox.disabled = true;\n\t\t\t}\n\n\t\t\tcheckbox.addEventListener('change', change);\n\n\t\t\tcheckboxMap[value] = checkbox;\n\n\t\t\tconst text = document.createTextNode(label);\n\t\t\tconst span = document.createElement('span');\n\n\t\t\tconst wrapper = document.createElement('label');\n\t\t\twrapper.classList.add('InputCheckbox-label');\n\n\t\t\twrapper.appendChild(checkbox);\n\t\t\twrapper.appendChild(span);\n\t\t\tspan.appendChild(text);\n\t\t\tcontainer.appendChild(wrapper);\n\t\t}\n\t}, ctx.signal);\n\n\n\teffect(() => {\n\t\tconst vv = [ctx.value].flat().map(v => String(v ?? '')).filter(Boolean);\n\t\tconst newSelectedValues = new Set(vv);\n\t\tfor (const [value, inputElement] of Object.entries(checkboxMap)) {\n\t\t\tinputElement.checked = newSelectedValues.has(value);\n\t\t}\n\t}, ctx.signal);\n\n\treturn container;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState('');\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tif (val === '') {\n\t\t\t\tspan.innerText = '';\n\t\t\t} else {\n\t\t\t\tspan.innerText = ctx.source.labels[val] ?? val;\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\tconst vv = v == null ? '' : String(v);\n\t\t\tif (vv === value.get()) { return; }\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('InputRadio-group');\n\n\t/** @type {Record<string, HTMLInputElement>} */\n\tlet radioMap = Object.create(null);\n\n\t/**\n\t * @param {*} event \n\t */\n\tfunction change(event) {\n\t\tconst target = event.target;\n\t\tif (target && target.checked) {\n\t\t\tctx.value = target.value;\n\t\t\tctx.emit('change', event);\n\t\t}\n\t}\n\tcontainer.addEventListener('focus', (e) => ctx.emit('focus', e), true);\n\tcontainer.addEventListener('blur', (e) => ctx.emit('blur', e), true);\n\n\tctx.listen('focus', () => {\n\t\tfor (const inputElement of Object.values(radioMap)) {\n\t\t\tif (!inputElement.disabled) {\n\t\t\t\tinputElement.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\tctx.listen('scrollIntoView', () => container.scrollIntoView());\n\n\teffect(() => {\n\t\tconst disabled = Boolean(ctx.readonly || ctx.disabled);\n\t\tfor (const inputElement of Object.values(radioMap)) {\n\t\t\tinputElement.disabled = disabled;\n\t\t}\n\t}, ctx.signal);\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn list;\n\t});\n\n\teffect(() => {\n\t\tcontainer.innerHTML = '';\n\t\tradioMap = Object.create(null);\n\n\t\tconst options = currentOptions.get();\n\t\tconst currentValue = ctx.value == null ? '' : String(ctx.value);\n\n\t\tfor (const { value, label, disabled, level } of options) {\n\t\t\tconst radio = document.createElement('input');\n\t\t\tradio.type = 'radio';\n\t\t\tradio.value = `${value}`;\n\t\t\tradio.checked = currentValue === String(value);\n\n\t\t\tif (disabled) {\n\t\t\t\tradio.disabled = true;\n\t\t\t}\n\n\t\t\tradio.addEventListener('change', change);\n\n\t\t\tradioMap[value] = radio;\n\n\t\t\tconst text = document.createTextNode(label);\n\t\t\tconst span = document.createElement('span');\n\n\t\t\tconst wrapper = document.createElement('label');\n\t\t\twrapper.classList.add('InputCheckbox-label');\n\n\t\t\twrapper.appendChild(radio);\n\t\t\twrapper.appendChild(span);\n\t\t\tspan.appendChild(text);\n\t\t\tcontainer.appendChild(wrapper);\n\t\t}\n\t}, ctx.signal);\n\teffect(() => {\n\t\tconst currentVal = String(ctx.value ?? '');\n\t\tfor (const [value, inputElement] of Object.entries(radioMap)) {\n\t\t\tinputElement.checked = currentVal === value;\n\t\t}\n\t}, ctx.signal);\n\n\treturn container;\n};\n\nexport default Component;\n","/** @import { FieldFilterContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web'\n\n/**\n * @template T\n * @param {(root: Element, placeholder: string, cb: (v: T?) => void) => (v: string) => void} create\n * @param {FieldFilterContext} ctx\n * @returns {HTMLElement}\n */\nexport default function createInputCell(create, ctx) {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst labelText = ctx.field?.label ?? '';\n\tif (showLabel) {\n\t\tconst label = root.appendChild(document.createElement(inline ? 'span' : 'div'));\n\t\tlabel.innerText = labelText;\n\t}\n\tconst inputRoot = inline ? root : root.appendChild(document.createElement('div'))\n\n\tconst set = create(inputRoot, quick ? labelText : '', value => { ctx.value = value; });\n\teffect(() => set(ctx.value), ctx.signal);\n\treturn root;\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('textarea'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);;\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [required] \n* @returns {bigint?}\n*/\nfunction getValue(v, required) {\n\tif (!v) {\n\t\treturn required ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn required ? 0n : null\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: bigint?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = label.appendChild(document.createElement('input'));\n\tinput.type = 'checkbox';\n\tinput.addEventListener('input', () => {\n\t\tconst value = input.indeterminate ? null : Boolean(input.checked);\n\t\tctx.value = value;\n\t});\n\teffect(() => {\n\t\tconst value = ctx.value;\n\t\tif (typeof value === 'boolean') {\n\t\t\tinput.checked = value;\n\t\t\treturn;\n\t\t}\n\t\tif (value === 'false' || value === '0' || value === 0) {\n\t\t\tinput.checked = false;\n\t\t\treturn;\n\t\t}\n\t\tif (value === 'true' || value === '1' || value === 1) {\n\t\t\tinput.checked = true;\n\t\t\treturn;\n\t\t}\n\t\tinput.indeterminate = true;\n\t\tif (value !== null) {\n\t\t\tctx.value = null;\n\t\t}\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tlabel.appendChild(document.createTextNode(ctx.field?.label ?? ''));\n\t}\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'date';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'time';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'url';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\n\nimport { createState, effect } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectDocument from '../components/selectDocument.mjs';\n\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst service = ctx.source.service\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\troot.classList = 'InputDocument';\n\tconst span = label.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\t/** @type {string?} */\n\tlet value = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = createState();\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\tconst labelText = ctx.field?.label ?? '';\n\tplaceholder.innerText = (quick ? labelText : '');\n\teffect(() => {\n\t\tconst value = valueState.get() || '';\n\t\tvalueSpan.innerText = value;\n\t\tplaceholder.hidden = Boolean(value);\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = newVal == '' || newVal == null ? null : newVal;\n\t\tif (value === newValue) { return; }\n\t\tvalue = newValue;\n\t\tcurrentValue = value;\n\t\tvalueState.set(value || '');\n\t\tif (!value) { return; }\n\t\tif (!service) { return; }\n\t\tconst modelConfiguration = await service;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await service.option(value);\n\t\tif (!option || value !== currentValue) { return; }\n\t\tvalueState.set(runPattern(labelPattern, option) || value);\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(labelText), label.firstChild);\n\t}\n\tif (!service) { return root; }\n\tspan.classList = 'InputDocument-text';\n\tspan.tabIndex = 0;\n\tspan.addEventListener('click', async () => {\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tconst val = await selectDocument(ctx.source, {\n\t\t\tparent: root,\n\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t});\n\t\tconst result = Array.isArray(val) ? val[0] : val;\n\t\tif (!result) {\n\t\t\tif (!ctx.value) { return; }\n\t\t\tvalue = '';\n\t\t\tcurrentValue = null;\n\t\t\tctx.value = null;\n\t\t\tvalueState.set('');\n\t\t\treturn;\n\t\t}\n\t\tconst newValue = result.value;\n\t\tif (newValue === ctx.value) { return; }\n\t\tvalue = newValue;\n\t\tctx.value = newValue;\n\t\tcurrentValue = null;\n\t\tvalueState.set(result.label || newValue);\n\n\t});\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { createComputed, effect } from '@yongdall/web';\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = label.appendChild(document.createElement('select'));\n\n\n\tinput.addEventListener('change', () => {\n\t\tctx.value = input.value || null;\n\t});\n\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn [{ value: '', label: quick && ctx.field?.label || '', disabled: false, level: 0 }, ...list];\n\t});\n\n\n\n\n\n\teffect(() => {\n\t\tinput.innerHTML = '';\n\t\tfor (const { value, label, disabled, level } of currentOptions.get()) {\n\t\t\tconst option = document.createElement('option');\n\t\t\toption.value = `${value}`;\n\t\t\toption.label = `${Array(level).fill(' ').join('')}${label}`;\n\t\t\tif (disabled) {\n\t\t\t\toption.disabled = disabled;\n\t\t\t}\n\t\t\tinput.appendChild(option);\n\t\t}\n\t\tinput.value = ctx.value || '';\n\t}, ctx.signal);\n\n\n\teffect(() => {\n\t\tconst v = ctx.value;\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tinput.value = vv || '';\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t}\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { Hooks } from '@yongdall/web' */\n\nimport textInput from './inputs/text.mjs';\nimport floatInput from './inputs/float.mjs';\nimport i32Input from './inputs/i32.mjs';\nimport i64Input from './inputs/i64.mjs';\nimport stringInput from './inputs/string.mjs';\nimport boolInput from './inputs/bool.mjs';\nimport dateInput from './inputs/date.mjs';\nimport timeInput from './inputs/time.mjs';\nimport datetimeInput from './inputs/datetime.mjs';\nimport passwordInput from './inputs/password.mjs';\nimport uriInput from './inputs/uri.mjs';\nimport uuidInput from './inputs/uuid.mjs';\nimport documentInput from './inputs/document.mjs';\nimport documentsInput from './inputs/documents.mjs';\nimport selectInput from './inputs/select.mjs';\nimport searchInput from './filters/search.mjs';\nimport searchMultipleInput from './inputs/searchMultiple.mjs';\nimport permissionsInput from './inputs/permissions.mjs';\nimport configurationInput from './inputs/configuration.mjs';\nimport code128 from './inputs/code128.mjs';\nimport checkbox from './inputs/checkbox.mjs';\nimport radio from './inputs/radio.mjs';\n\n\nimport textFilter from './filters/text.mjs';\nimport floatFilter from './filters/float.mjs';\nimport i32Filter from './filters/i32.mjs';\nimport i64Filter from './filters/i64.mjs';\nimport stringFilter from './filters/string.mjs';\nimport boolFilter from './filters/bool.mjs';\nimport dateFilter from './filters/date.mjs';\nimport timeFilter from './filters/time.mjs';\nimport datetimeFilter from './filters/datetime.mjs';\nimport uriFilter from './filters/uri.mjs';\nimport uuidFilter from './filters/uuid.mjs';\nimport documentFilter from './filters/document.mjs';\nimport selectFilter from './filters/select.mjs';\nimport searchFilter from './filters/search.mjs';\n\n/**\n * \n * @param {any} v \n * @returns \n */\nfunction toBool(v) {\n\tif (typeof v !== 'string') { return Boolean(v); }\n\tswitch (v.toLowerCase()) {\n\t\tcase '':\n\t\tcase '0':\n\t\tcase 'n':\n\t\tcase 'f':\n\t\tcase 'no':\n\t\tcase 'off':\n\t\tcase 'false':\n\t\t\treturn false;\n\t}\n\treturn true;\n\n}\n/**\n * \n * @param {any} a \n * @param {any} b \n * @returns \n */\nfunction isEq(a, b) {\n\tif ([a, b].filter(v => (v ?? null) === null).length === 1) { return false; }\n\tconst aNull = a ?? null;\n\tconst bNull = b ?? null;\n\tif (Object.is(aNull, bNull)) { return true; }\n\tif (aNull === null || bNull === null) { return false; }\n\tif (typeof a === 'boolean' || typeof b === 'boolean') { return toBool(a) === toBool(b); }\n\tif (a == b) { return true; }\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction eq(values, value) {\n\tif (Array.isArray(value)) {\n\t\tfor (const item of values) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tif (item.length !== value.length) { continue; }\n\t\t\t\tif (value.findIndex((val, index) => !isEq(item[index], val)) < 0) { return true; }\n\t\t\t} else for (const val of value) {\n\t\t\t\tif (isEq(item, val)) { return true; }\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const item of values) {\n\t\t\tif (isEq(item, value)) { return true; }\n\t\t}\n\n\t}\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction contains(values, value) {\n\tif (Array.isArray(value)) {\n\t\treturn null;\n\t}\n\tconst val = value ?? null;\n\tconst text = val === null ? '' : String(val);\n\tfor (const item of values) {\n\t\tconst value = (Array.isArray(item) ? item[0] : item) ?? null;\n\t\tif (value === null || value === '') { continue; }\n\t\tif (text.includes(String(value))) { return; }\n\t}\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction eqArray(values, value) {\n\tif (Array.isArray(value)) {\n\t\tfor (const item of values) {\n\t\t\tif (!Array.isArray(item)) { continue; }\n\t\t\tif (item.length !== value.length) { continue; }\n\t\t\tif (value.findIndex((val, index) => !isEq(item[index], val)) < 0) { return true; }\n\t\t}\n\t} else {\n\t\tfor (const item of values) {\n\t\t\tif (!Array.isArray(item)) { continue; }\n\t\t\tif (item.length !== value.length) { continue; }\n\t\t\tfor (const it of item) {\n\t\t\t\tif (isEq(it, value)) { return true; }\n\t\t\t}\n\t\t}\n\n\t}\n\treturn false;\n}\n/**\n * \n * @param {(a: any, b: any) => boolean?} compare \n * @param {any[]} values \n * @param {any} value \n */\nfunction compare(compare, values, value) {\n\tconst val = Array.isArray(value) ? value[0] : value;\n\tif ((val ?? null) === null) { return null; }\n\tfor (const item of values) {\n\t\tif (Array.isArray(item) || (item ?? null) === null) { continue; }\n\t\tconst v = compare(item, value);\n\t\tif (typeof v === 'boolean') { return v; }\n\t}\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction gt(values, value) {\n\treturn compare((a, b) => a > b, values, value);\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction ge(values, value) {\n\treturn compare((a, b) => a >= b, values, value);\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction lt(values, value) {\n\treturn compare((a, b) => a < b, values, value);\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction le(values, value) {\n\treturn compare((a, b) => a <= b, values, value);\n}\n\n/** @type {Hooks.Define['formFields']} */\nexport const formFields = [\n\t{\n\t\tnot: '!=', notLabel: '≠', value: eq, filters: {\n\t\t\tgt: { value: gt },\n\t\t\tge: { value: ge },\n\t\t\tlt: { value: lt },\n\t\t\tle: { value: le },\n\t\t\tin: { value: eq, not: 'nin' },\n\t\t\tcontains: { value: contains },\n\t\t}\n\t},\n\t{\n\t\tarray: true, not: '!=', notLabel: '≠', value: eqArray, filters: {\n\t\t\tin: { value: eqArray, not: 'nin' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'text', input: textInput, filter: textFilter, notFilter: textFilter, filters: {\n\t\t\tne: { filter: textFilter, label: '≠' },\n\t\t\tgt: { filter: textFilter, label: '>' },\n\t\t\tge: { filter: textFilter, label: '≥' },\n\t\t\tlt: { filter: textFilter, label: '<' },\n\t\t\tle: { filter: textFilter, label: '≤' },\n\t\t\tcontains: { filter: textFilter, label: '包含' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'string', input: stringInput, filter: stringFilter, notFilter: stringFilter, filters: {\n\t\t\tne: { filter: stringFilter, label: '≠' },\n\t\t\tgt: { filter: stringFilter, label: '>' },\n\t\t\tge: { filter: stringFilter, label: '≥' },\n\t\t\tlt: { filter: stringFilter, label: '<' },\n\t\t\tle: { filter: stringFilter, label: '≤' },\n\t\t\tcontains: { filter: stringFilter, label: '包含' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'bool', input: boolInput, filter: boolFilter, notFilter: boolFilter, filters: {\n\t\t\tne: { filter: boolFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'f32', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'f64', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'decimal', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'numeric', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'money', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'i16', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {\n\t\t\tne: { filter: i32Filter, label: '≠' },\n\t\t\tgt: { filter: i32Filter, label: '>' },\n\t\t\tge: { filter: i32Filter, label: '≥' },\n\t\t\tlt: { filter: i32Filter, label: '<' },\n\t\t\tle: { filter: i32Filter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'i32', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {\n\t\t\tne: { filter: i32Filter, label: '≠' },\n\t\t\tgt: { filter: i32Filter, label: '>' },\n\t\t\tge: { filter: i32Filter, label: '≥' },\n\t\t\tlt: { filter: i32Filter, label: '<' },\n\t\t\tle: { filter: i32Filter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'i64', input: i64Input, filter: i64Filter, notFilter: i64Filter, filters: {\n\t\t\tne: { filter: i64Filter, label: '≠' },\n\t\t\tgt: { filter: i64Filter, label: '>' },\n\t\t\tge: { filter: i64Filter, label: '≥' },\n\t\t\tlt: { filter: i64Filter, label: '<' },\n\t\t\tle: { filter: i64Filter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'date', input: dateInput, filter: dateFilter, notFilter: dateFilter, filters: {\n\t\t\tne: { filter: dateFilter, label: '≠' },\n\t\t\tgt: { filter: dateFilter, label: '>' },\n\t\t\tge: { filter: dateFilter, label: '≥' },\n\t\t\tlt: { filter: dateFilter, label: '<' },\n\t\t\tle: { filter: dateFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'time', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {\n\t\t\tne: { filter: timeFilter, label: '≠' },\n\t\t\tgt: { filter: timeFilter, label: '>' },\n\t\t\tge: { filter: timeFilter, label: '≥' },\n\t\t\tlt: { filter: timeFilter, label: '<' },\n\t\t\tle: { filter: timeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'uuid', input: uuidInput, filter: uuidFilter, notFilter: uuidFilter, filters: {\n\t\t\tne: { filter: uuidFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'datetime', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {\n\t\t\tne: { filter: datetimeFilter, label: '≠' },\n\t\t\tgt: { filter: datetimeFilter, label: '>' },\n\t\t\tge: { filter: datetimeFilter, label: '≥' },\n\t\t\tlt: { filter: datetimeFilter, label: '<' },\n\t\t\tle: { filter: datetimeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'timetz', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {\n\t\t\tne: { filter: timeFilter, label: '≠' },\n\t\t\tgt: { filter: timeFilter, label: '>' },\n\t\t\tge: { filter: timeFilter, label: '≥' },\n\t\t\tlt: { filter: timeFilter, label: '<' },\n\t\t\tle: { filter: timeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'timestamp', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {\n\t\t\tne: { filter: datetimeFilter, label: '≠' },\n\t\t\tgt: { filter: datetimeFilter, label: '>' },\n\t\t\tge: { filter: datetimeFilter, label: '≥' },\n\t\t\tlt: { filter: datetimeFilter, label: '<' },\n\t\t\tle: { filter: datetimeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'password', input: passwordInput, filter: stringFilter, notFilter: stringFilter, filters: {\n\t\t\tne: { filter: stringFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'uri', input: uriInput, filter: uriFilter, notFilter: uriFilter, filters: {\n\t\t\tne: { filter: uriFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'document', input: documentInput, filter: documentFilter, notFilter: documentFilter, filters: {\n\t\t\tne: { filter: documentFilter, label: '≠' },\n\t\t}\n\t},\n\t{ array: true, renderer: 'document', input: documentsInput, filter: documentFilter, notFilter: documentFilter, filters: {\n\t\t\tne: { filter: documentFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'select', input: selectInput, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'select', array: true, input: searchMultipleInput, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'choice', input: radio, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'choice', array: true, input: checkbox, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'search', input: searchInput, filter: searchFilter, notFilter: searchFilter, filters: {\n\t\t\tne: { filter: searchFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'search', array: true, input: searchMultipleInput, filter: searchFilter, notFilter: searchFilter, filters: {\n\t\t\tne: { filter: searchFilter, label: '≠' },\n\t\t}\n\t},\n\t{ renderer: 'code128', input: code128 },\n\t{ renderer: 'barcode', input: code128 },\n\t{ renderer: 'configuration', input: configurationInput },\n\t{ type: 'submodel', array: true, renderer: 'permission', input: permissionsInput },\n];\nexport const styles = ['style.css'];\n"],"mappings":"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"}
1
+ {"version":3,"file":"hooks.mjs","names":["createShow","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","Component","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","getValue","createInput","Component","createInputCell","createShow","Component","isEq","Component","Component","Component","isEq","Component","Component","Component","Component","Component","createInput","Component","getValue","createInput","Component","getValue","createInput","Component","createInput","Component","createInput","Component","Component","createInput","Component","createInput","Component","createInput","Component","createInput","Component","Component","Component","textInput","textFilter","stringInput","stringFilter","boolInput","boolFilter","floatInput","floatFilter","i32Input","i32Filter","i64Input","i64Filter","dateInput","dateFilter","timeInput","timeFilter","uuidInput","uuidFilter","datetimeInput","datetimeFilter","passwordInput","uriInput","uriFilter","documentInput","documentFilter","documentsInput","selectInput","selectFilter","searchMultipleInput","radio","checkbox","searchInput","searchFilter","code128","configurationInput","permissionsInput"],"sources":["../../packages/theme/inputs/createInputCell.mjs","../../packages/theme/inputs/text.mjs","../../packages/theme/inputs/float.mjs","../../packages/theme/inputs/i32.mjs","../../packages/theme/inputs/i64.mjs","../../packages/theme/inputs/string.mjs","../../packages/theme/inputs/bool.mjs","../../packages/theme/inputs/date.mjs","../../packages/theme/inputs/time.mjs","../../packages/theme/inputs/datetime.mjs","../../packages/theme/inputs/password.mjs","../../packages/theme/inputs/uri.mjs","../../packages/theme/inputs/uuid.mjs","../../packages/theme/components/selectDocument.mjs","../../packages/theme/inputs/document.mjs","../../packages/theme/inputs/documents.mjs","../../packages/theme/inputs/select.mjs","../../packages/theme/components/selectSource.mjs","../../packages/theme/filters/search.mjs","../../packages/theme/inputs/searchMultiple.mjs","../../packages/theme/inputs/permissions.mjs","../../packages/theme/inputs/configuration.mjs","../../packages/theme/inputs/code128.mjs","../../packages/theme/inputs/checkbox.mjs","../../packages/theme/inputs/radio.mjs","../../packages/theme/filters/createInputCell.mjs","../../packages/theme/filters/text.mjs","../../packages/theme/filters/float.mjs","../../packages/theme/filters/i32.mjs","../../packages/theme/filters/i64.mjs","../../packages/theme/filters/string.mjs","../../packages/theme/filters/bool.mjs","../../packages/theme/filters/date.mjs","../../packages/theme/filters/time.mjs","../../packages/theme/filters/datetime.mjs","../../packages/theme/filters/uri.mjs","../../packages/theme/filters/uuid.mjs","../../packages/theme/filters/document.mjs","../../packages/theme/filters/select.mjs","../../packages/theme/hooks.mjs"],"sourcesContent":["/** @import { FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nexport function createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = v ?? ''; }];\n\n}\n\n/**\n * @template T\n * @param {FieldContext} ctx\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} create\n * @param {(ctx: FieldContext, cb: (v: string) => void) => [HTMLElement, (v?: string) => void]} createShow\n * @param {(v: string, nullable?: boolean | undefined)=> T | null} getValue\n * @param {T} initValue\n * @returns {HTMLElement}\n */\nexport default function createInputCell(ctx,\n\tcreate,\n\tcreateShow,\n\tgetValue,\n\tinitValue,\n\t) {\n\n\tconst editable = ctx.editable;\n\n\t/** @type {T?} */\n\tlet value = ctx.field?.nullable ? null : initValue;\n\tconst [input, set] = (editable ? create : createShow)(ctx, v => {\n\t\tvalue = getValue(v, ctx.field?.nullable);\n\t\tctx.value = value;\n\t});\n\t/**\n\t * \n\t * @param {*} v \n\t * @param {boolean} [force] \n\t * @returns \n\t */\n\tfunction update(v, force) {\n\t\tif (!force && v === value) { return }\n\t\tvalue = v;\n\t\tset(v);\n\t}\n\tupdate(ctx.value, true);\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n}\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.innerText = v ?? ''; }];\n\n}\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\n\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null;\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('textarea');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\n\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [nullable] \n* @returns {number?}\n */\nfunction getValue(v, nullable) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn !nullable ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {bigint?}\n*/\nfunction getValue(v, nullable) {\n\tif (!v) {\n\t\treturn !nullable ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn !nullable ? 0n : null\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'number';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, 0n);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tif (!ctx.editable) {\n\t\tconst span = document.createElement('span');\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\teffect(() => {\n\t\t\tconst v = ctx.value;\n\t\t\tconst vv = !ctx.field?.nullable || typeof v === 'boolean' ? v : null;\n\t\t\tspan.innerText = vv ? '✔' : '☐';\n\t\t}, ctx.signal);\n\t\treturn span;\n\t}\n\tconst input = document.createElement('input');\n\tinput.type = 'checkbox';\n\t/** @type {boolean?} */\n\tlet value = ctx.field?.nullable ? null : false;\n\tinput.addEventListener('input', () => {\n\t\tvalue = Boolean(input.checked);\n\t\tctx.value = value;\n\t});\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\t// TODO:\n\t\tconst vv = !ctx.field?.nullable || typeof v === 'boolean' ? Boolean(v) : null;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.checked = Boolean(vv);\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn input;\n};\n\nexport default Component;\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tif (Number.isFinite(new Date(v).valueOf())) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'date';\n\tinput.step = '1'\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value)) {\n\t\treturn v;\n\t} else if (!nullable) {\n\t\treturn '';\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'time';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {Date?}\n*/\nfunction getValue(v, nullable) {\n\tconst value = new Date(v);\n\tif (Number.isFinite(value.valueOf())) {\n\t\treturn value;\n\t} else {\n\t\treturn null;\n\t}\n}\n/**\n * \n * @param {Date} date \n * @param {string} show\n */\nfunction toDateStr(date, show) {\n\tconst vv = date.valueOf();\n\tif (!vv) { return '' }\n\treturn `${[\n\t\t`${date.getFullYear()}`.padStart(4, '0'),\n\t\t`${date.getMonth() + 1}`.padStart(2, '0'),\n\t\t`${date.getDate()}`.padStart(2, '0'),\n\t\t].join('-')}${show}${[\n\t\t\t`${date.getHours()}`.padStart(2, '0'),\n\t\t\t`${date.getMinutes()}`.padStart(2, '0'),\n\t\t\t`${date.getSeconds()}`.padStart(2, '0'),\n\t\t\t].join(':')}`\n}\n\n/**\n * \n * @param {*} v \n * @param {string} [show] \n */\nfunction toDateValue(v,show = 'T') {\n\treturn v instanceof Date ? toDateStr(v,show) : toDateStr(new Date(v),show) ?? '';\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createShow(ctx) {\n\tconst inputRoot = document.createElement('div')\n\tconst input = inputRoot;\n\tinput.style.overflow = 'hidden';\n\tinput.style.whiteSpace = 'nowrap';\n\tinput.style.textOverflow = 'ellipsis';\n\t\n\tctx.listen('scrollIntoView', () => inputRoot.scrollIntoView());\n\treturn [inputRoot, v => { input.title = input.innerText = toDateValue(v, ' '); }];\n\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\t// TODO: 追加时区\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = toDateValue(v); }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, null);\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'password';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.type = 'url';\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { FieldComponent, FieldContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\nimport createInputCell, { createShow } from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [nullable] \n* @returns {string?}\n*/\nfunction getValue(v, nullable) {\n\treturn v || !nullable ? v : null\n}\n/**\n * \n * @param {FieldContext} ctx\n * @param {(v: string) => void} cb \n * @returns {[HTMLElement, (v?: string) => void]}\n */\nfunction createInput(ctx, cb) {\n\tconst input = document.createElement('input');\n\tinput.addEventListener('input', () => cb(input.value));\n\tinput.addEventListener('input', (e) => ctx.emit('input', e));\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\teffect(() => input.placeholder = ctx.placeholder, ctx.signal);\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\treturn [input, v => { input.value = v ?? ''; }];\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\treturn createInputCell(ctx, createInput, createShow, getValue, '');\n}\n\nexport default Component\n","/** @import { Field, FieldScriptConfiguration, Store } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nimport { createDialog, getPrimaryFields, importStyle, toId, watch } from '@yongdall/web';\n\n\nimport { ArrayStore, createComputed, createQuickFilters, createState, effect, getPermissionFields, waitAbortSignal } from '@yongdall/web';\nimport { Pagination, modelService, createShowField, runPattern, getPatternFields, showFilterDialog, Search } from '@yongdall/web';\nimport { Check, Source } from '@neeloong/table';\nimportStyle('@neeloong/table/style.css');\n\n\n/**\n * @typedef {object} Selected\n * @property {any} value\n * @property {any} label\n * @property {any} data\n */\n\n/**\n * \n * @param {object} source\n * @param {ReturnType<typeof modelService>?} [source.service] \n * @param {string?} [source.label] 标签模式\n * @param {Field.Show[]?} [source.fields] 显示字段\n * @param {{ field: string; label?: string; operator: string; }[]?} [source.queryFilters] 快速过滤字段\n * @param {(Search.Match | Search.Children)[]?} [source.where]\n * @param {(Search.Match | Search.Children | Search.Or)[]?} [source.orWhere]\n * @param {object} [options]\n * @param {HTMLElement} [options.parent] \n * @param {AbortSignal} [options.signal] \n * @param {boolean} [options.multiple] \n */\nexport default async function selectDocument(source, options) {\n\tconst { signal, multiple} = options || {};\n\tconst service = source.service\n\tconst signalPromise = waitAbortSignal(signal, true);\n\tconst modelDefine = await Promise.race([service?.loadScript(), signalPromise]);\n\tif (!modelDefine) { return Promise.reject(); }\n\tconst dialog = createDialog(options);\n\tconst labelPattern = source.label || modelDefine.labelPattern || '';\n\tconst showFields = source.fields;\n\tconst queryFilterFields = source.queryFilters || [];\n\n\tconst where = createState(/** @type {Search.AndList} */([]));\n\tconst limit = createState(100);\n\tconst page = createState(1);\n\tconst documents = createState(/** @type {any[]} */([]));\n\n\n\tconst header = dialog.appendChild(document.createElement('div'));\n\tconst queryFilters = header.appendChild(document.createElement('div'));\n\tconst menus = header.appendChild(document.createElement('div'));\n\tconst body = dialog.appendChild(document.createElement('div'));\n\tconst footer = dialog.appendChild(document.createElement('div'));\n\tdialog.classList.add('Modal');\n\theader.classList.add('Modal-header');\n\tbody.classList.add('Modal-body');\n\tfooter.classList.add('Modal-footer');\n\tqueryFilters.classList.add('Modal-title');\n\tqueryFilters.classList.add('QueryFilters');\n\tmenus.classList.add('MenuButtons');\n\n\n\n\n\tconst idKey = '_';\n\tconst tableSource = new Source({ idKey, parentKey: 'parent' });\n\ttableSource.selectable = true;\n\n\n\n\n\tconst fields = modelDefine.fields;\n\tconst permissionFields = getPermissionFields('options', modelDefine.permissions || [], modelDefine);\n\n\tconst allFields = Object.entries(fields)\n\t\t.filter(([, { type }]) => type && typeof type !== 'object')\n\t\t.filter(([k]) => permissionFields.has(k));\n\tconst idFields = getPrimaryFields(modelDefine);\n\n\t/** @type {(Omit<Field.Show, 'field'> & {name: string; title: string; field: FieldScriptConfiguration})[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label, align, enableLink } of showFields || []) {\n\t\tif (!field) { continue; }\n\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\tconst f = fields[field];\n\t\tif (!f) { continue; }\n\t\tconst type = f.type;\n\t\tif (!type || typeof type !== 'string') { continue; }\n\t\tallFieldsShow.push({\n\t\t\tname: field,\n\t\t\twidth: width || undefined,\n\t\t\ttitle: label || f.label || '',\n\t\t\tfield: f,\n\t\t\talign,\n\t\t\tenableLink\n\t\t});\n\t}\n\tif (!allFieldsShow.length) {\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\tconst queryFields = [...new Set([\n\t\t...allFieldsShow.map(v => v.name),\n\t\t...idFields,\n\t\t...getPatternFields(labelPattern),\n\t])];\n\n\n\teffect(() => tableSource.setValue(documents.get()), signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width, align, enableLink }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\tlet f = createShowField(name, field, { enableLink }, c.data);\n\t\t\troot.appendChild(f.root);\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tf.destroy();\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = createShowField(name, field, { enableLink }, c.data);\n\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t}, header() {\n\t\t\t\t\tconst root = document.createElement('span');\n\t\t\t\t\troot.innerText = title;\n\t\t\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\t\t\treturn {\n\t\t\t\t\t\troot: root,\n\t\t\t\t\t\tupdate() {\n\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdestroy() {\n\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tlet r = c.data;\n\t\t\tconst root = document.createElement('div');\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tlet r = c.data;\n\t\t\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tif (multiple) {\n\t\tcolumns.unshift({\n\t\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\t\treturn {\n\t\t\t\t\troot: document.createElement('div'),\n\t\t\t\t\tdestroy() { },\n\t\t\t\t\tsetHidden() { },\n\t\t\t\t\tupdate() {\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\n\tconst group = tableSource.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tgroup.createHeader(listTable.appendChild(document.createElement('div')));\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\tconst pagination = new Pagination();\n\twatch(() => limit.get(), limit => pagination.size = limit || 100, { immediate: true, signal });\n\twatch(() => page.get(), page => pagination.page = page || 1, { immediate: true, signal });\n\n\tpagination.listen(() => {\n\t\tpage.set(pagination.page);\n\t\tlimit.set(pagination.size);\n\t});\n\tlet k = 0;\n\tlet disabled = createState(false);\n\tasync function request() {\n\t\tif (signal?.aborted || !service) { return; }\n\t\tif (disabled.get()) { return; }\n\t\ttry {\n\t\t\tdisabled.set(true);\n\t\t\tk++;\n\t\t\tconst v = k;\n\t\t\tconst { options, total } = await service.options({\n\t\t\t\tlimit: limit.get(),\n\t\t\t\tpage: page.get(),\n\t\t\t\t// sort: sort.get(),\n\t\t\t\t// orWhere: orWhere.get(),\n\t\t\t\twhere: [...where.get() || [], ...source.where || []],\n\t\t\t\tor: source.orWhere || [],\n\t\t\t\tselect: queryFields,\n\t\t\t\ttotal: true,\n\t\t\t});\n\t\t\tif (signal?.aborted) { return; }\n\t\t\tif (v !== k) { return; }\n\t\t\tdocuments.set(\n\t\t\t\toptions.map(v => ({ ...v, [idKey]: toId(v, idFields) }))\n\t\t\t);\n\t\t\tpagination.total = total;\n\t\t} finally {\n\t\t\tdisabled.set(false);\n\n\t\t}\n\t}\n\tfunction updateFilters() {\n\t\tif (!modelDefine) { return; }\n\t\tshowFilterDialog(modelDefine, where.get(), dialog).then(values => {\n\t\t\twhere.set(values);\n\t\t}).catch(() => { });\n\t}\n\n\t/**\n\t * \n\t * @param {string} label \n\t * @param {() => void} exec \n\t * @param {import('@yongdall/web').State<boolean>?} [disabled] \n\t * @returns {HTMLElement}\n\t */\n\tfunction createButton(label, exec, disabled) {\n\t\tconst button = document.createElement('button');\n\t\tbutton.appendChild(document.createTextNode(label));\n\n\t\tconst isDisabled = createComputed(() => Boolean(disabled?.get()));\n\n\n\t\teffect(() => { button.disabled = isDisabled.get(); }, signal);\n\n\t\tbutton.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\texec();\n\t\t});\n\t\treturn button;\n\t}\n\n\t/** @type {PromiseWithResolvers<Selected | Selected[] | null>} */\n\tconst { promise, reject, resolve } = Promise.withResolvers();\n\tmenus.appendChild(createButton('刷新', request, disabled));\n\tmenus.appendChild(createButton('过滤', updateFilters));\n\tmenus.appendChild(createButton('确定', () => {\n\t\t/** @type {(string | number | symbol)[]} */\n\t\tlet checked = [];\n\t\tif (multiple) {\n\t\t\tchecked = tableSource.checked;\n\t\t\tif (!checked.length) { return resolve([]); }\n\t\t} else {\n\t\t\tconst selected = tableSource.selectedId;\n\t\t\tif (!selected) { return resolve(null); }\n\t\t\tchecked = [selected];\n\t\t}\n\t\tif (!checked.length) {\n\t\t\tresolve(multiple ? [] : null);\n\t\t\treturn;\n\t\t}\n\t\tconst list = documents.get();\n\t\tconst map = Object.fromEntries(list.map(v => [v[idKey], v]));\n\t\tconst options = [...new Set(checked.map(v => map[v]).filter(Boolean))].map(v => ({\n\t\t\tvalue: v[idKey],\n\t\t\tlabel: runPattern(labelPattern, v) || v[idKey],\n\t\t\tdata: v,\n\t\t}));\n\t\tresolve(multiple ? options : options[0]);\n\t}));\n\tmenus.appendChild(createButton('取消', () => {\n\t\treject();\n\t}));\n\tsignal?.addEventListener('abort', () => reject(signal.reason));\n\n\tcreateQuickFilters({\n\t\tget() { return where.get() || []; },\n\t\tset(values) {\n\t\t\twhere.set(values);\n\t\t\trequest();\n\t\t},\n\t}, queryFilters, queryFilterFields || [], {\n\t\tfields: modelDefine.fields,\n\t\tsignal: signal,\n\t\tinline: true,\n\t});\n\tbody.appendChild(listTable);\n\tfooter.appendChild(pagination.root);\n\n\twatch([\n\t\t() => where.get(),\n\t\t() => limit.get(),\n\t\t() => page.get(),\n\t], request, { signal, immediate: true });\n\treturn promise.finally(() => { dialog.close(); });\n}\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createState, effect, PageIdent } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectDocument from '../components/selectDocument.mjs';\n\n\n\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst service = ctx.source.service;\n\tconst root = document.createElement('div');\n\troot.classList = 'InputDocument';\n\tconst span = root.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst model = ctx.style.enableLink && ctx.source.model;\n\tconst valueSpan = span.appendChild(document.createElement(model ? 'a' : 'div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\tctx.listen('focus', () => span.focus());\n\t/** @type {string?} */\n\tlet value = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = createState();\n\tconst linkState = createState();\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\teffect(() => placeholder.innerText = ctx.placeholder, ctx.signal);\n\teffect(() => {\n\t\tconst value = valueState.get() || '';\n\t\tvalueSpan.innerText = value;\n\t\tplaceholder.hidden = Boolean(value);\n\t}, ctx.signal);\n\tif (model) {\n\t\teffect(() => {\n\t\t\tconst id = linkState.get() || '';\n\t\t\tif (!id) {\n\t\t\t\tvalueSpan.removeAttribute('href');\n\t\t\t\tvalueSpan.tabIndex = -1;\n\t\t\t} else {\n\t\t\t\tvalueSpan.removeAttribute('tabIndex');\n\t\t\t\tconst link = PageIdent.toHref({type: 'model', model: model, id});\n\t\t\t\tvalueSpan.setAttribute('href', link);\n\t\t\t}\n\t\t}, ctx.signal);\n\t}\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = newVal == '' || newVal == null ? null : newVal;\n\t\tif (value === newValue) { return; }\n\t\tvalue = newValue;\n\t\tconst label = ctx.current[`${ctx.name}~label`];\n\t\tlinkState.set(value);\n\t\tif (label) {\n\t\t\tcurrentValue = null;\n\t\t\tvalue = null;\n\t\t\tvalueState.set(label);\n\t\t\treturn;\n\t\t}\n\t\tcurrentValue = value;\n\t\tvalueState.set(value || '');\n\t\tif (!value) { return; }\n\t\tif (!service) { return; }\n\t\tconst modelConfiguration = await service;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await service.option(value);\n\t\tif (!option || value !== currentValue) { return; }\n\t\tvalueState.set(runPattern(labelPattern, option) || value);\n\t}, ctx.signal);\n\tif (!ctx.editable) { return root; }\n\tspan.classList = 'InputDocument-text';\n\teffect(() => {\n\t\tif (Boolean(ctx.readonly || ctx.disabled)) {\n\t\t\tspan.removeAttribute('tabIndex');\n\t\t\tac?.abort();\n\t\t\tac = null;\n\t\t\tspan.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tspan.tabIndex = 0;\n\t\t\tspan.removeAttribute('disabled');\n\t\t}\n\t}, ctx.signal);\n\n\tspan.addEventListener('click', async () => {\n\t\tif (ctx.readonly || ctx.disabled) { return; }\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tctx.emit('focus', null);\n\t\ttry {\n\t\t\tconst val = await selectDocument(ctx.source, {\n\t\t\t\tparent: root,\n\t\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t\t});\n\t\t\tconst result = Array.isArray(val) ? val[0] : val;\n\t\t\tif (!result) {\n\t\t\t\tif (!ctx.value) { return; }\n\t\t\t\tif (ctx.clearable || ctx.nullable) {\n\t\t\t\t\tvalue = '';\n\t\t\t\t\tcurrentValue = null;\n\t\t\t\t\tctx.value = ctx.nullable ? null : '';\n\t\t\t\t\tvalueState.set('');\n\t\t\t\t\tlinkState.set('');\n\t\t\t\t\tctx.emit('change', null);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newValue = result.value;\n\t\t\tif (newValue === ctx.value) { return; }\n\t\t\tvalue = newValue;\n\t\t\tctx.value = newValue;\n\t\t\tcurrentValue = null;\n\t\t\tlinkState.set(newValue);\n\t\t\tvalueState.set(result.label || newValue);\n\t\t\tctx.emit('change', newValue);\n\t\t\tctx.bind?.(result.data);\n\t\t} finally {\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\n\n\nimport { createState, effect, getPrimaryFields, PageIdent, toId } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectDocument from '../components/selectDocument.mjs';\n\n\n/**\n * \n * @param {string[]} a \n * @param {string[]} b \n * @returns \n */\nfunction isEq(a, b) {\n\tif (a.length !== b.length) { return false; }\n\treturn a.findIndex((v, i) => v != b[i]) === -1;\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst service = ctx.source.service;\n\tconst root = document.createElement('div');\n\troot.classList = 'InputDocument';\n\tconst span = root.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\tctx.listen('focus', () => span.focus());\n\t/** @type {string[]} */\n\tlet value = [];\n\t/** @type {string[]} */\n\tlet currentValue = [];\n\tconst valueState = createState(/** @type {string[]} */([]));\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\teffect(() => placeholder.innerText = ctx.placeholder, ctx.signal);\n\tconst model = ctx.style.enableLink && ctx.source.model;\n\teffect(() => {\n\t\tconst value = valueState.get();\n\t\tvalueSpan.innerHTML = '';\n\t\tif (model) {\n\t\t\tfor (const id of value) {\n\t\t\t\tconst span = valueSpan.appendChild(document.createElement('a'));\n\t\t\t\tspan.innerText = id;\n\t\t\t\tconst link = PageIdent.toHref({ type: 'model', model: model, id });\n\t\t\t\tvalueSpan.setAttribute('href', link);\n\t\t\t\tspan.classList = 'InputDocument-Item';\n\t\t\t}\n\t\t} else {\n\t\t\tfor (const v of value) {\n\t\t\t\tconst span = valueSpan.appendChild(document.createElement('span'));\n\t\t\t\tspan.innerText = v;\n\t\t\t\tspan.classList = 'InputDocument-Item';\n\t\t\t}\n\n\t\t}\n\t\tplaceholder.hidden = Boolean(value.length);\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = (Array.isArray(newVal) ? newVal : [newVal]).map(v => typeof v === 'string' || typeof v === 'number' ? String(v) : '').filter(Boolean);\n\t\tif (isEq(value, newValue)) { return; }\n\t\tvalue = newValue;\n\t\tconst label = ctx.current[`${ctx.name}~label`];\n\t\tif (label) {\n\t\t\tcurrentValue = [];\n\t\t\tvalue = [];\n\t\t\tvalueState.set(label);\n\t\t\treturn;\n\t\t}\n\t\tcurrentValue = value;\n\t\tvalueState.set(value);\n\t\tif (!value.length) { return; }\n\t\tif (!service) { return; }\n\t\tconst modelConfiguration = await service;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { options } = await service.options({ primary: value, limit: value.length * 10 });\n\t\tif (!options.length || value !== currentValue) { return; }\n\n\t\tconst idFields = getPrimaryFields(modelConfiguration);\n\t\tconst map = Object.fromEntries(options.map(v => [toId(v, idFields), v]));\n\t\tvalue.map(value => {\n\t\t\tconst option = Object.hasOwn(map, value) && map[value];\n\t\t\treturn option && runPattern(labelPattern, option) || value;\n\t\t});\n\t\tvalueState.set(value.map(value => {\n\t\t\tconst option = Object.hasOwn(map, value) && map[value];\n\t\t\treturn option && runPattern(labelPattern, option) || value;\n\t\t}));\n\t}, ctx.signal);\n\tif (!ctx.editable) { return root; }\n\tspan.classList = 'InputDocument-text';\n\teffect(() => {\n\t\tif (Boolean(ctx.readonly || ctx.disabled)) {\n\t\t\tspan.removeAttribute('tabIndex');\n\t\t\tac?.abort();\n\t\t\tac = null;\n\t\t\tspan.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tspan.tabIndex = 0;\n\t\t\tspan.removeAttribute('disabled');\n\t\t}\n\t}, ctx.signal);\n\tspan.addEventListener('click', async () => {\n\t\tif (ctx.readonly || ctx.disabled) { return; }\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tctx.emit('focus', null);\n\t\ttry {\n\t\t\tconst val = await selectDocument(ctx.source, {\n\t\t\t\tparent: root,\n\t\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t\t\tmultiple: true,\n\t\t\t});\n\t\t\tconst result = Array.isArray(val) ? val : val ? [val] : [];\n\t\t\tif (!result.length) {\n\t\t\t\tif (!ctx.value?.length) { return; }\n\t\t\t\tif (ctx.clearable || ctx.nullable) {\n\t\t\t\t\tvalue = [];\n\t\t\t\t\tcurrentValue = [];\n\t\t\t\t\tctx.value = ctx.nullable ? null : [];\n\t\t\t\t\tvalueState.set([]);\n\t\t\t\t\tctx.emit('change', null);\n\t\t\t\t} else {\n\t\t\t\t\tctx.value = [];\n\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newValue = result.map(v => v.value);\n\t\t\tif (isEq(newValue, ctx.value)) { return; }\n\t\t\tvalue = newValue;\n\t\t\tctx.value = newValue;\n\t\t\tcurrentValue = [];\n\t\t\tvalueState.set(result.map(v => v.label || v.value));\n\t\t\tctx.emit('change', null);\n\t\t} finally {\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect } from '@yongdall/web';\n\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState('');\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tif (val === '') {\n\t\t\t\tspan.innerText = '';\n\t\t\t} else {\n\t\t\t\tspan.innerText = ctx.source.labels[val] ?? val;\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\tconst vv = v == null ? '' : String(v);\n\t\t\tif (vv === value.get()) { return; }\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\n\tconst hasNull = createComputed(() => '' in ctx.source.labels);\n\n\t// TODO: 过滤\n\tconst input = document.createElement('select');\n\n\tinput.addEventListener('change', () => {\n\t\tconst val = input.value || (ctx.nullable && !hasNull.get() ? null : '');\n\t\tctx.value = val;\n\t\tif (!val) { return; }\n\t\tconst allData = ctx.source.map;\n\t\tctx.bind?.(Object.hasOwn(allData, val) && allData[val]);\n\t});\n\tinput.addEventListener('change', (e) => ctx.emit('change', e));\n\tinput.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tinput.addEventListener('blur', (e) => ctx.emit('blur', e));\n\tctx.listen('focus', () => input.focus());\n\tctx.listen('scrollIntoView', () => input.scrollIntoView());\n\teffect(() => input.disabled = Boolean(ctx.readonly || ctx.disabled), ctx.signal);\n\n\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn ctx.clearable ? [{ value: '', label: ctx.field?.label ?? '', disabled: false, level: 0 }, ...list] : list;\n\t});\n\n\n\teffect(() => {\n\t\tinput.innerHTML = '';\n\t\tfor (const { value, label, disabled, level } of currentOptions.get()) {\n\t\t\tconst option = document.createElement('option');\n\t\t\toption.value = `${value}`;\n\t\t\toption.label = `${Array(level).fill(' ').join('')}${label}`;\n\t\t\tif (disabled) {\n\t\t\t\toption.disabled = disabled;\n\t\t\t}\n\t\t\tinput.appendChild(option);\n\t\t}\n\t\tinput.value = ctx.value || '';\n\t}, ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {*} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\tinput.value = v ?? '';\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { DataSource, Field, FieldScriptConfiguration, Store } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nimport { createDialog, createShowField, importStyle } from '@yongdall/web';\n\n\nimport { createComputed, effect, getPermissionFields, waitAbortSignal } from '@yongdall/web';\nimport { Check, Source } from '@neeloong/table';\nimportStyle('@neeloong/table/style.css');\n\n\n/**\n * @typedef {object} Selected\n * @property {any} value\n * @property {any} label\n * @property {any} data\n */\n\n/**\n * \n * @param {DataSource} sourceOptions \n * @param {object} [options] \n * @param {AbortSignal} [options.signal] \n * @param {boolean} [options.multiple] \n * @param {HTMLElement} [options.parent] \n */\nexport default async function selectSource(sourceOptions, options) {\n\tconst {signal, multiple} = options || {}\n\tconst signalPromise = waitAbortSignal(signal, true);\n\tconst modelDefine = await Promise.race([sourceOptions.service?.loadScript(), signalPromise]);\n\n\t\tconst dialog = createDialog(options);\n\tconst root = dialog;\n\tconst showFields = sourceOptions.fields;\n\n\tconst documents = createComputed(() => sourceOptions.options);\n\n\tconst header = root.appendChild(document.createElement('div'));\n\tconst queryFilters = header.appendChild(document.createElement('div'));\n\tconst menus = header.appendChild(document.createElement('div'));\n\tconst body = root.appendChild(document.createElement('div'));\n\tdialog.classList.add('Modal');\n\theader.classList.add('Modal-header');\n\tbody.classList.add('Modal-body');\n\tqueryFilters.classList.add('Modal-title');\n\tqueryFilters.classList.add('QueryFilters');\n\tmenus.classList.add('MenuButtons');\n\n\n\n\n\n\tconst idKey = 'value';\n\tconst tableSource = new Source({ idKey, parentKey: 'parent' });\n\ttableSource.selectable = true;\n\n\n\n\n\tconst fields = modelDefine?.fields;\n\tconst permissionFields = modelDefine ? getPermissionFields('options', modelDefine.permissions || [], modelDefine) : new Set();\n\n\n\t/** @type {(Omit<Field.Show, 'field'> & {name: string; title: string; field?: FieldScriptConfiguration})[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label, align } of showFields || []) {\n\t\tif (!field) { continue; }\n\t\tif (fields) {\n\t\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\t\tconst f = fields[field];\n\t\t\tif (!f) { continue; }\n\t\t\tconst type = f.type;\n\t\t\tif (!type || typeof type !== 'string') { continue; }\n\t\t\tallFieldsShow.push({\n\t\t\t\tname: field,\n\t\t\t\twidth: width || undefined,\n\t\t\t\ttitle: label || f.label || '',\n\t\t\t\tfield: f,\n\t\t\t\talign,\n\t\t\t});\n\t\t} else {\n\t\t\tallFieldsShow.push({\n\t\t\t\tname: field,\n\t\t\t\twidth: width || undefined,\n\t\t\t\ttitle: label || field || '',\n\t\t\t\talign,\n\t\t\t});\n\n\t\t}\n\t}\n\tif (!allFieldsShow.length && fields) {\n\t\tconst allFields = Object.entries(fields)\n\t\t\t.filter(([, { type }]) => type && typeof type !== 'object')\n\t\t\t.filter(([k]) => permissionFields.has(k));\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\n\teffect(() => tableSource.setValue(documents.get()), signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, title, width, align, field }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\tlet f = field && createShowField(name, field, {}, c.data.data);\n\t\t\tif (f) {\n\t\t\t\troot.appendChild(f.root);\n\t\t\t} else {\n\t\t\t\troot.innerText = c.data.data?.[name];\n\t\t\t}\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tif (f) { f.destroy(); }\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tif (f) { f.destroy(); }\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = field && createShowField(name, field, {}, c.data);\n\t\t\t\t\tif (f) {\n\t\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t\t} else {\n\t\t\t\t\t\troot.innerText = c.data.data?.[name];\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\theader() {\n\t\t\tconst root = document.createElement('span');\n\t\t\troot.innerText = title;\n\t\t\tif (align) { root.style.textAlign = align; }\n\t\t\treturn {\n\t\t\t\troot: root,\n\t\t\t\tupdate() {\n\n\t\t\t\t},\n\t\t\t\tdestroy() {\n\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tconst r = c.data;\n\t\t\tconst root = document.createElement('div');\n\t\t\tconst label = r.label || r.value;\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate(c) {\n\t\t\t\t\tconst r = c.data;\n\t\t\t\t\tconst label = r.label || r.value;\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tif (multiple) {\n\t\tcolumns.unshift({\n\t\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\t\treturn {\n\t\t\t\t\troot: document.createElement('div'),\n\t\t\t\t\tdestroy() { },\n\t\t\t\t\tsetHidden() { },\n\t\t\t\t\tupdate() {\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t});\n\t}\n\n\n\tconst group = tableSource.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tgroup.createHeader(listTable.appendChild(document.createElement('div')));\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\n\t/**\n\t * \n\t * @param {string} label \n\t * @param {() => void} exec \n\t * @param {import('@yongdall/web').State<boolean>?} [disabled] \n\t * @returns {HTMLElement}\n\t */\n\tfunction createButton(label, exec, disabled) {\n\t\tconst button = document.createElement('button');\n\t\tbutton.appendChild(document.createTextNode(label));\n\n\t\tconst isDisabled = createComputed(() => Boolean(disabled?.get()));\n\n\n\t\teffect(() => { button.disabled = isDisabled.get(); }, signal);\n\n\t\tbutton.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\texec();\n\t\t});\n\t\treturn button;\n\t}\n\n\t/** @type {PromiseWithResolvers<Selected | Selected[] | null>} */\n\tconst { promise, reject, resolve } = Promise.withResolvers();\n\t// menus.appendChild(createButton('刷新', request, disabled));\n\tmenus.appendChild(createButton('确定', () => {\n\t\t/** @type {(string | number | symbol)[]} */\n\t\tlet checked = [];\n\t\tif (multiple) {\n\t\t\tchecked = tableSource.checked;\n\t\t\tif (!checked.length) { return resolve([]); }\n\t\t} else {\n\t\t\tconst selected = tableSource.selectedId;\n\t\t\tif (!selected) { return resolve(null); }\n\t\t\tchecked = [selected];\n\t\t}\n\t\tif (!checked.length) {\n\t\t\tresolve(multiple ? [] : null);\n\t\t\treturn;\n\t\t}\n\t\tconst list = documents.get();\n\t\tconst map = Object.fromEntries(list.map(v => [v[idKey], v]));\n\t\t// @ts-ignore\n\t\tconst options = [...new Set(checked.map(v => map[v]).filter(Boolean))].map(v => ({\n\t\t\tvalue: v[idKey],\n\t\t\tlabel: v.label || v[idKey],\n\t\t\tdata: v.data,\n\t\t}));\n\t\tresolve(multiple ? options : options[0]);\n\t}));\n\tmenus.appendChild(createButton('取消', () => {\n\t\treject();\n\t}));\n\n\tbody.appendChild(listTable);\n\n\n\tsignal?.addEventListener('abort', () => reject(signal.reason));\n\treturn promise.finally(() => { dialog.close(); });\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\n\nimport { createState, effect } from '@yongdall/web';\nimport selectSource from '../components/selectSource.mjs';\n\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst modelName = ctx.source.model || '';\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\troot.classList = 'InputDocument';\n\tconst span = label.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\t/** @type {string?} */\n\tlet value = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = createState();\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\tconst labelText = ctx.field?.label ?? '';\n\tplaceholder.innerText = (quick ? labelText : '');\n\teffect(() => {\n\t\tconst value = valueState.get() || '';\n\t\tplaceholder.hidden = Boolean(value);\n\t\tif (value) {\n\t\t\tconst labels = ctx.source.labels;\n\t\t\tvalueSpan.innerText = Object.hasOwn(labels, value) && labels[value] || value;\n\t\t} else {\n\t\t\tvalueSpan.innerText = '';\n\t\t}\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = newVal == '' || newVal == null ? null : newVal;\n\t\tif (value === newValue) { return; }\n\t\tvalue = newValue;\n\t\tcurrentValue = value;\n\t\tvalueState.set(value || '');\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(labelText), label.firstChild);\n\t}\n\tif (!modelName) { return root; }\n\tspan.classList = 'InputDocument-text';\n\tspan.tabIndex = 0;\n\tspan.addEventListener('click', async () => {\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tconst val = await selectSource(ctx.source, {\n\t\t\tparent: root,\n\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t});\n\t\tconst result = Array.isArray(val) ? val[0] : val;\n\t\tif (!result) {\n\t\t\tif (!ctx.value) { return; }\n\t\t\tvalue = '';\n\t\t\tcurrentValue = null;\n\t\t\tctx.value = null;\n\t\t\tvalueState.set('');\n\t\t\treturn;\n\t\t}\n\t\tconst newValue = result.value;\n\t\tif (newValue === ctx.value) { return; }\n\t\tvalue = newValue;\n\t\tctx.value = newValue;\n\t\tcurrentValue = null;\n\t\tvalueState.set(result.label || newValue);\n\n\t});\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\n\n\nimport { createState, effect, getPrimaryFields, toId } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectSource from '../components/selectSource.mjs';\n\n\n/**\n * \n * @param {string[]} a \n * @param {string[]} b \n * @returns \n */\nfunction isEq(a, b) {\n\tif (a.length !== b.length) { return false; }\n\treturn a.findIndex((v, i) => v != b[i]) === -1;\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\tconst root = document.createElement('div');\n\troot.classList = 'InputDocument';\n\tconst span = root.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\tctx.listen('focus', () => span.focus());\n\t/** @type {string[]} */\n\tlet value = [];\n\t/** @type {string[]} */\n\tlet currentValue = [];\n\tconst valueState = createState(/** @type {string[]} */([]));\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\teffect(() => placeholder.innerText = ctx.placeholder, ctx.signal);\n\teffect(() => {\n\t\tconst value = valueState.get();\n\t\tconst labels = ctx.source.labels\n\t\tvalueSpan.innerHTML = '';\n\t\tfor (const v of value) {\n\t\t\tconst span = valueSpan.appendChild(document.createElement('span'));\n\t\t\tspan.innerText = Object.hasOwn(labels, v) && labels[v] || v;\n\t\t\tspan.classList = 'InputDocument-Item';\n\t\t}\n\t\tplaceholder.hidden = Boolean(value.length);\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = (Array.isArray(newVal) ? newVal : [newVal]).map(v => typeof v === 'string' || typeof v === 'number' ? String(v) : '').filter(Boolean);\n\t\tif (isEq(value, newValue)) { return; }\n\t\tvalue = newValue;\n\t\tcurrentValue = value;\n\t\tvalueState.set(value);\n\t}, ctx.signal);\n\tif (!editable) { return root; }\n\tspan.classList = 'InputDocument-text';\n\teffect(() => {\n\t\tif (Boolean(ctx.readonly || ctx.disabled)) {\n\t\t\tspan.removeAttribute('tabIndex');\n\t\t\tac?.abort();\n\t\t\tac = null;\n\t\t\tspan.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tspan.tabIndex = 0;\n\t\t\tspan.removeAttribute('disabled');\n\t\t}\n\t}, ctx.signal);\n\tspan.addEventListener('click', async () => {\n\t\tif (ctx.readonly || ctx.disabled) { return; }\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tctx.emit('focus', null);\n\t\ttry {\n\t\t\tconst val = await selectSource(ctx.source, {\n\t\t\t\tparent: root,\n\t\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t\t\tmultiple: true,\n\t\t\t});\n\t\t\tconst result = Array.isArray(val) ? val : val ? [val] : [];\n\t\t\tif (!result.length) {\n\t\t\t\tif (!ctx.value?.length) { return; }\n\t\t\t\tif (ctx.clearable || ctx.nullable) {\n\t\t\t\t\tvalue = [];\n\t\t\t\t\tcurrentValue = [];\n\t\t\t\t\tctx.value = ctx.nullable ? null : [];\n\t\t\t\t\tvalueState.set([]);\n\t\t\t\t\tctx.emit('change', null);\n\t\t\t\t} else {\n\t\t\t\t\tctx.value = [];\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst newValue = result.map(v => v.value);\n\t\t\tif (isEq(newValue, ctx.value)) { return; }\n\t\t\tvalue = newValue;\n\t\t\tctx.value = newValue;\n\t\t\tcurrentValue = [];\n\t\t\tvalueState.set(newValue);\n\t\t\tctx.emit('change', null);\n\t\t} finally {\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect, permissionsService } from '@yongdall/web';\n\n\n\n/** @type {FieldComponent} */\nconst permissionsComponent = ctx => {\n\tconst root = document.createElement('div');\n\tconst checkAllDiv = root.appendChild(document.createElement('div'));\n\tconst checkAllLabel = checkAllDiv.appendChild(document.createElement('label'));\n\tconst checkAll = checkAllLabel.appendChild(document.createElement('input'));\n\tcheckAllLabel.appendChild(document.createTextNode('全选'));\n\tcheckAllLabel.classList.add('align-center');\n\tcheckAll.type = 'checkbox';\n\tconst optionDiv = root.appendChild(document.createElement('div'));\n\tlet value = new Set();\n\tlet allValuesState = createComputed(() =>\n\t\tnew Set(permissionsService.get().flatMap(v => v.children?.map(v => v.value) || []))\n\t);\n\tfunction updateAll() {\n\t\tif (allValuesState.get().size === value.size) {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = true;\n\t\t} else if (value.size) {\n\t\t\tcheckAll.indeterminate = true;\n\t\t} else {\n\t\t\tcheckAll.indeterminate = false;\n\t\t\tcheckAll.checked = false;\n\t\t}\n\n\t}\n\tfunction updateSelect() {\n\t\tvalue = new Set();\n\t\tfor (const { checked, value: val } of optionDiv.querySelectorAll('input')) {\n\t\t\tif (!checked || !val) { continue; }\n\t\t\tvalue.add(val);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateAll();\n\t}\n\n\tfunction updateValue() {\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = value.has(input.value);\n\t\t}\n\t}\n\tfunction updateAllValue() {\n\t\tupdateValue();\n\t\tupdateAll();\n\t}\n\n\tconst inputs = createState(/** @type {HTMLInputElement[]} */([]));\n\n\tfunction updateOptions() {\n\t\toptionDiv.innerHTML = '';\n\t\tconst list = [];\n\t\tfor (const { label, children } of permissionsService.get()) {\n\t\t\tif (!children?.length) { continue; }\n\t\t\tconst groups = optionDiv.appendChild(document.createElement('details'));\n\t\t\tgroups.open = true;\n\t\t\tgroups.appendChild(document.createElement('summary')).appendChild(document.createTextNode(label));\n\t\t\tfor (const { value, label } of children) {\n\t\t\t\tconst checkLabel = groups.appendChild(document.createElement('label'));\n\t\t\t\tconst input = checkLabel.appendChild(document.createElement('input'));\n\t\t\t\tinput.type = 'checkbox';\n\t\t\t\tcheckLabel.appendChild(document.createTextNode(label));\n\t\t\t\tcheckLabel.classList.add('align-center');\n\t\t\t\tcheckLabel.classList.add('inline');\n\t\t\t\tinput.value = String(value || '');\n\t\t\t\tinput.addEventListener('input', updateSelect);\n\t\t\t\tlist.push(input);\n\t\t\t}\n\t\t}\n\t\tinputs.set(list);\n\t\tupdateAllValue();\n\t}\n\teffect(() => updateOptions(), ctx.signal);\n\n\n\n\tcheckAll.addEventListener('input', () => {\n\t\tif (!checkAll.checked) {\n\t\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\t\tinput.checked = false;\n\t\t\t}\n\t\t\tctx.value = [];\n\t\t\treturn;\n\t\t}\n\t\tconst value = new Set();\n\t\tfor (const input of optionDiv.querySelectorAll('input')) {\n\t\t\tinput.checked = true;\n\t\t\tvalue.add(input.value);\n\t\t}\n\t\tctx.value = [...value].map(v => ({ permission: v }));\n\t\tupdateValue();\n\t});\n\tcheckAll.addEventListener('change', (e) => ctx.emit('change', e));\n\tcheckAll.addEventListener('focus', (e) => ctx.emit('focus', e));\n\tcheckAll.addEventListener('blur', (e) => ctx.emit('blur', e));\n\n\n\n\n\tconst editable = createComputed(() => Boolean(!ctx.editable || ctx.disabled));\n\tctx.listen('focus', () => checkAll.focus());\n\tctx.listen('scrollIntoView', () => checkAll.scrollIntoView());\n\teffect(() => checkAll.hidden = Boolean(ctx.hidden), ctx.signal);\n\teffect(() => {\n\t\tconst disabled = editable.get();\n\t\tcheckAllLabel.hidden = disabled;\n\t\tfor (const input of inputs.get()) {\n\t\t\tinput.disabled = disabled;\n\n\t\t}\n\t}, ctx.signal);\n\teffect(() => checkAll.readOnly = Boolean(ctx.readonly), ctx.signal);\n\n\n\n\n\n\n\n\t/**\n\t * \n\t * @param {any[]} v \n\t * @returns \n\t */\n\tfunction update(v) {\n\t\tconst list = new Set(Array.isArray(v) && v.map(v => v.permission) || []);\n\t\tif (list.size === value.size) {\n\t\t\tlet updated = false;\n\t\t\tfor (const v of value) {\n\t\t\t\tif (!list.has(v)) {\n\t\t\t\t\tupdated = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!updated) { return; }\n\t\t\treturn;\n\t\t}\n\t\tvalue = list;\n\t\tupdateAllValue();\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\treturn root;\n};\n\nexport default permissionsComponent;\n","/** @import { Schema, FieldComponent, ConfiguratorComponent } from '@yongdall/web' */\nimport { effect, importWidget, renderForm, BindObjectStore } from '@yongdall/web';\n\n/**\n * \n * @param {Schema} schema \n * @param {*} layout \n * @returns {ConfiguratorComponent}\n */\nfunction schema2ConfiguratorComponent(schema, layout) {\n\treturn (ctx, options) => {\n\t\tconst { signal, editable, store } = ctx;\n\t\tif (!store) { return; }\n\t\tif (signal.aborted) { return; }\n\t\tconst stop = new BindObjectStore(schema, store, signal);\n\t\tconst { enableLink, design } = ctx.style;\n\t\tctx.root.style.inlineSize = '100%';\n\t\trenderForm(stop, ctx.root, { enableLink, design, layout, editable, signal });\n\t};\n}\n/**\n * \n * @param {any} configurator \n * @returns {Promise<ConfiguratorComponent | null | undefined>}\n */\nasync function getWidget(configurator) {\n\tif (typeof configurator === 'string') {\n\t\treturn importWidget(configurator);\n\t}\n\tif (!configurator || typeof configurator !== 'object') { return null; }\n\tconst { widget, schema, layout } = configurator;\n\tif (typeof widget === 'string' && widget) { return importWidget(widget); }\n\tif (schema && typeof schema === 'object') {\n\t\treturn schema2ConfiguratorComponent(schema, layout);\n\t}\n\treturn null;\n}\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\t/** @type {any} */\n\tlet currentConfigurator = null;\n\n\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\tconst root = document.createElement('div');\n\t/**\n\t * \n\t * @param {any} configurator \n\t * @returns \n\t */\n\tasync function run(configurator) {\n\t\tif (ctx.signal.aborted) { return; }\n\t\tif (configurator === currentConfigurator) { return; }\n\t\tcurrentConfigurator = configurator;\n\t\tac?.abort();\n\t\tac = new AbortController();\n\t\tconst signal = AbortSignal.any([ac.signal, ctx.signal]);\n\t\t// TODO: 加载组件\n\t\tconst widget = await getWidget(configurator);\n\t\tif (typeof widget !== 'function') { return; }\n\t\tif (signal.aborted) { return; }\n\n\t\twidget({\n\t\t\troot,\n\t\t\tget store() { return ctx.store; },\n\t\t\tget style() { return ctx.style; },\n\t\t\tget field() { return ctx.field; },\n\t\t\tget name() { return ctx.name; },\n\n\t\t\tget value() { return ctx.value; },\n\t\t\tset value(value) { ctx.value = value; },\n\t\t\tget current() { return ctx.current; },\n\n\t\t\tget destroyed() { return ctx.destroyed; },\n\n\t\t\tget readonly() { return ctx.readonly; },\n\t\t\tget editable() { return ctx.editable; },\n\t\t\tget required() { return ctx.required; },\n\t\t\tget nullable() { return ctx.nullable; },\n\t\t\tget disabled() { return ctx.disabled; },\n\t\t\tget clearable() { return ctx.clearable; },\n\t\t\tget hidden() { return ctx.hidden; },\n\n\t\t\tget label() { return ctx.label; },\n\t\t\tget placeholder() { return ctx.placeholder; },\n\t\t\tget description() { return ctx.description; },\n\t\t\tget source() { return ctx.source; },\n\t\t\tget signal() { return signal; },\n\t\t\tlisten(event, listen) { return ctx.listen(event, listen); },\n\t\t\temit(event, e) { return ctx.emit(event, e); },\n\t\t\tget bind() { return ctx.bind; },\n\t\t}, typeof configurator === 'object' && configurator || {});\n\n\t}\n\n\n\t/** @type {number?} */\n\tlet idleId = null;\n\teffect(() => {\n\t\tconst cfg = ctx.source.configurator || null;\n\t\tif (idleId !== null) {\n\t\t\tcancelIdleCallback(idleId);\n\t\t}\n\t\tidleId = requestIdleCallback(() => {\n\t\t\tidleId = null;\n\t\t\trun(cfg);\n\t\t});\n\t}, ctx.signal);\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { Code128, effect } from '@yongdall/web';\n\n/**\n * 生成条码的 SVG Data URL\n * @param {SVGSVGElement} svg \n * @param {SVGPathElement} path \n * @param {string} text \n */\nfunction updatePath(svg, path, text) {\n\tconst bits = Code128.encode(text);\n\tif (!bits?.length) { path.setAttribute('d', ''); return; }\n\n\n\tconst paths = [];\n\tfor (let i = 0; i < bits.length; i++) {\n\t\tif (!bits[i]) { continue; }\n\t\tconst start = i - bits.length / 2;\n\t\tlet len = 1;\n\n\t\twhile (bits[i + 1]) {\n\t\t\tlen++;\n\t\t\ti++;\n\t\t}\n\n\t\tpaths.push(`M${start} -0.5h${len}v1h-${len}Z`);\n\t}\n\tif (!paths.length) { path.setAttribute('d', ''); return; }\n\n\n\tconst width = bits.length;\n\tconst height = 1;\n\n\tsvg.setAttribute('viewBox', `${-width / 2 - 10} -0.5 ${width + 20} 1`);\n\tpath.setAttribute('d', paths.join(\" \"));\n\n}\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\tsvg.setAttribute('preserveAspectRatio', 'none');\n\tconst path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n\tsvg.appendChild(path);\n\tsvg.style.blockSize = 'var(--input-height)';\n\tsvg.style.inlineSize = '100%';\n\tpath.setAttribute('fill', 'black');\n\tctx.listen('focus', () => svg.focus());\n\tctx.listen('scrollIntoView', () => svg.scrollIntoView());\n\t/** @type {string} */\n\tlet value = '';\n\n\teffect(() => {\n\t\tconst text = String(ctx.value ?? '').replace(/[^\\0-\\x7f]+/g, '');\n\t\tif (text === value) { return; }\n\t\tvalue = text;\n\t\tupdatePath(svg, path, text);\n\t}, ctx.signal);\n\treturn svg;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState(/** @type {string[]} */([]));\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tspan.innerText = val.map(v => ctx.source.labels[v] ?? v).join(', ');\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\t// 确保值是数组\n\t\t\tconst vv = [v].flat().map(v => String(v ?? '')).filter(Boolean);\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('InputCheckbox-group');\n\n\t/** @type {Record<string, HTMLInputElement>} */\n\tlet checkboxMap = Object.create(null);\n\n\t/**\n\t * \n\t * @param {*} event \n\t */\n\tfunction change(event) {\n\t\tconst selectedValues = [];\n\t\tfor (const [val, inputElement] of Object.entries(checkboxMap)) {\n\t\t\tif (inputElement.checked) {\n\t\t\t\tselectedValues.push(val);\n\t\t\t}\n\t\t}\n\t\tconst newValue = selectedValues.length === 0 && ctx.nullable ? null : selectedValues;\n\t\tctx.value = newValue;\n\n\t\tctx.emit('change', event);\n\t}\n\tcontainer.addEventListener('focus', (e) => ctx.emit('focus', e), true);\n\tcontainer.addEventListener('blur', (e) => ctx.emit('blur', e), true);\n\n\tctx.listen('focus', () => {\n\t\tfor (const inputElement of Object.values(checkboxMap)) {\n\t\t\tif (!inputElement.disabled) {\n\t\t\t\tinputElement.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\tctx.listen('scrollIntoView', () => container.scrollIntoView());\n\n\teffect(() => {\n\t\tconst disabled = Boolean(ctx.readonly || ctx.disabled);\n\t\tfor (const inputElement of Object.values(checkboxMap)) {\n\t\t\tinputElement.disabled = disabled;\n\t\t}\n\t}, ctx.signal);\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn list;\n\t});\n\n\teffect(() => {\n\t\tcontainer.innerHTML = '';\n\t\tcheckboxMap = Object.create(null);\n\n\t\tconst options = currentOptions.get();\n\t\tconst selectedValues = new Set(Array.isArray(ctx.value) ? ctx.value : (ctx.value == null ? [] : [ctx.value]));\n\n\t\tfor (const { value, label, disabled, level } of options) {\n\n\t\t\tconst checkbox = document.createElement('input');\n\t\t\tcheckbox.type = 'checkbox';\n\t\t\tcheckbox.value = `${value}`;\n\t\t\tcheckbox.checked = selectedValues.has(value);\n\t\t\tif (disabled) {\n\t\t\t\tcheckbox.disabled = true;\n\t\t\t}\n\n\t\t\tcheckbox.addEventListener('change', change);\n\n\t\t\tcheckboxMap[value] = checkbox;\n\n\t\t\tconst text = document.createTextNode(label);\n\t\t\tconst span = document.createElement('span');\n\n\t\t\tconst wrapper = document.createElement('label');\n\t\t\twrapper.classList.add('InputCheckbox-label');\n\n\t\t\twrapper.appendChild(checkbox);\n\t\t\twrapper.appendChild(span);\n\t\t\tspan.appendChild(text);\n\t\t\tcontainer.appendChild(wrapper);\n\t\t}\n\t}, ctx.signal);\n\n\n\teffect(() => {\n\t\tconst vv = [ctx.value].flat().map(v => String(v ?? '')).filter(Boolean);\n\t\tconst newSelectedValues = new Set(vv);\n\t\tfor (const [value, inputElement] of Object.entries(checkboxMap)) {\n\t\t\tinputElement.checked = newSelectedValues.has(value);\n\t\t}\n\t}, ctx.signal);\n\n\treturn container;\n};\n\nexport default Component;\n","/** @import { FieldComponent } from '@yongdall/web' */\nimport { createComputed, createState, effect } from '@yongdall/web';\n\n/** @type {FieldComponent} */\nconst Component = ctx => {\n\tconst editable = ctx.editable;\n\n\tif (!editable) {\n\t\tconst span = document.createElement('span');\n\t\tconst value = createState('');\n\t\tctx.listen('focus', () => span.focus());\n\t\tctx.listen('scrollIntoView', () => span.scrollIntoView());\n\t\tfunction set() {\n\t\t\tconst val = value.get();\n\t\t\tif (val === '') {\n\t\t\t\tspan.innerText = '';\n\t\t\t} else {\n\t\t\t\tspan.innerText = ctx.source.labels[val] ?? val;\n\t\t\t}\n\t\t}\n\t\t/**\n\t\t * \n\t\t * @param {*} v \n\t\t * @returns \n\t\t */\n\t\tfunction update(v) {\n\t\t\tconst vv = v == null ? '' : String(v);\n\t\t\tif (vv === value.get()) { return; }\n\t\t\tvalue.set(vv);\n\t\t}\n\t\teffect(() => update(ctx.value), ctx.signal);\n\t\teffect(set, ctx.signal);\n\t\treturn span;\n\t}\n\n\tconst container = document.createElement('div');\n\tcontainer.classList.add('InputRadio-group');\n\n\t/** @type {Record<string, HTMLInputElement>} */\n\tlet radioMap = Object.create(null);\n\n\t/**\n\t * @param {*} event \n\t */\n\tfunction change(event) {\n\t\tconst target = event.target;\n\t\tif (target && target.checked) {\n\t\t\tctx.value = target.value;\n\t\t\tctx.emit('change', event);\n\t\t}\n\t}\n\tcontainer.addEventListener('focus', (e) => ctx.emit('focus', e), true);\n\tcontainer.addEventListener('blur', (e) => ctx.emit('blur', e), true);\n\n\tctx.listen('focus', () => {\n\t\tfor (const inputElement of Object.values(radioMap)) {\n\t\t\tif (!inputElement.disabled) {\n\t\t\t\tinputElement.focus();\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n\tctx.listen('scrollIntoView', () => container.scrollIntoView());\n\n\teffect(() => {\n\t\tconst disabled = Boolean(ctx.readonly || ctx.disabled);\n\t\tfor (const inputElement of Object.values(radioMap)) {\n\t\t\tinputElement.disabled = disabled;\n\t\t}\n\t}, ctx.signal);\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn list;\n\t});\n\n\teffect(() => {\n\t\tcontainer.innerHTML = '';\n\t\tradioMap = Object.create(null);\n\n\t\tconst options = currentOptions.get();\n\t\tconst currentValue = ctx.value == null ? '' : String(ctx.value);\n\n\t\tfor (const { value, label, disabled, level } of options) {\n\t\t\tconst radio = document.createElement('input');\n\t\t\tradio.type = 'radio';\n\t\t\tradio.value = `${value}`;\n\t\t\tradio.checked = currentValue === String(value);\n\n\t\t\tif (disabled) {\n\t\t\t\tradio.disabled = true;\n\t\t\t}\n\n\t\t\tradio.addEventListener('change', change);\n\n\t\t\tradioMap[value] = radio;\n\n\t\t\tconst text = document.createTextNode(label);\n\t\t\tconst span = document.createElement('span');\n\n\t\t\tconst wrapper = document.createElement('label');\n\t\t\twrapper.classList.add('InputCheckbox-label');\n\n\t\t\twrapper.appendChild(radio);\n\t\t\twrapper.appendChild(span);\n\t\t\tspan.appendChild(text);\n\t\t\tcontainer.appendChild(wrapper);\n\t\t}\n\t}, ctx.signal);\n\teffect(() => {\n\t\tconst currentVal = String(ctx.value ?? '');\n\t\tfor (const [value, inputElement] of Object.entries(radioMap)) {\n\t\t\tinputElement.checked = currentVal === value;\n\t\t}\n\t}, ctx.signal);\n\n\treturn container;\n};\n\nexport default Component;\n","/** @import { FieldFilterContext } from '@yongdall/web' */\nimport { effect } from '@yongdall/web'\n\n/**\n * @template T\n * @param {(root: Element, placeholder: string, cb: (v: T?) => void) => (v: string) => void} create\n * @param {FieldFilterContext} ctx\n * @returns {HTMLElement}\n */\nexport default function createInputCell(create, ctx) {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst labelText = ctx.field?.label ?? '';\n\tif (showLabel) {\n\t\tconst label = root.appendChild(document.createElement(inline ? 'span' : 'div'));\n\t\tlabel.innerText = labelText;\n\t}\n\tconst inputRoot = inline ? root : root.appendChild(document.createElement('div'))\n\n\tconst set = create(inputRoot, quick ? labelText : '', value => { ctx.value = value; });\n\teffect(() => set(ctx.value), ctx.signal);\n\treturn root;\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('textarea'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);;\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseFloat(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value;\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {string} v \n * @param {boolean} [required] \n* @returns {number?}\n */\nfunction getValue(v, required) {\n\tconst value = parseInt(v);\n\tif (Number.isFinite(value)) {\n\t\treturn value\n\t} else {\n\t\treturn required ? 0 : null;\n\t}\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: number?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n* \n* @param {string} v \n* @param {boolean} [required] \n* @returns {bigint?}\n*/\nfunction getValue(v, required) {\n\tif (!v) {\n\t\treturn required ? 0n : null\n\t}\n\ttry {\n\t\treturn BigInt(v);\n\t} catch {\n\t}\n\treturn required ? 0n : null\n\n}\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: bigint?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'number';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(getValue(input.value)));\n\treturn v => { input.value = v ?? ''; };\n\n}\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { effect } from '@yongdall/web';\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = label.appendChild(document.createElement('input'));\n\tinput.type = 'checkbox';\n\tinput.addEventListener('input', () => {\n\t\tconst value = input.indeterminate ? null : Boolean(input.checked);\n\t\tctx.value = value;\n\t});\n\teffect(() => {\n\t\tconst value = ctx.value;\n\t\tif (typeof value === 'boolean') {\n\t\t\tinput.checked = value;\n\t\t\treturn;\n\t\t}\n\t\tif (value === 'false' || value === '0' || value === 0) {\n\t\t\tinput.checked = false;\n\t\t\treturn;\n\t\t}\n\t\tif (value === 'true' || value === '1' || value === 1) {\n\t\t\tinput.checked = true;\n\t\t\treturn;\n\t\t}\n\t\tinput.indeterminate = true;\n\t\tif (value !== null) {\n\t\t\tctx.value = null;\n\t\t}\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t} else if (quick) {\n\t\tlabel.appendChild(document.createTextNode(ctx.field?.label ?? ''));\n\t}\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'date';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'time';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'datetime-local';\n\tinput.step = '1'\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tinput.type = 'url';\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\nimport createInputCell from './createInputCell.mjs';\n\n/**\n * \n * @param {Element} root \n * @param {string} placeholder \n * @param {(v: string?) => void} cb \n * @returns {(v: string) => void}\n */\nfunction createInput(root, placeholder, cb) {\n\tconst input = root.appendChild(document.createElement('input'));\n\tif (placeholder) { input.placeholder = placeholder; }\n\tinput.addEventListener('input', () => cb(input.value || null));\n\treturn v => { input.value = v ?? ''; };\n\n}\n\n/** @type {FieldFilterComponent} */\nconst Component = createInputCell.bind(null, createInput);\n\nexport default Component\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\n\n\nimport { createState, effect } from '@yongdall/web';\nimport { modelService, runPattern, getPatternFields } from '@yongdall/web';\nimport selectDocument from '../components/selectDocument.mjs';\n\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst service = ctx.source.service\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\troot.classList = 'InputDocument';\n\tconst span = label.appendChild(document.createElement('div'));\n\tconst placeholder = span.appendChild(document.createElement('div'));\n\tconst valueSpan = span.appendChild(document.createElement('div'));\n\tplaceholder.classList = 'InputDocument-placeholder';\n\t/** @type {string?} */\n\tlet value = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = createState();\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\tconst labelText = ctx.field?.label ?? '';\n\tplaceholder.innerText = (quick ? labelText : '');\n\teffect(() => {\n\t\tconst value = valueState.get() || '';\n\t\tvalueSpan.innerText = value;\n\t\tplaceholder.hidden = Boolean(value);\n\t}, ctx.signal);\n\n\teffect(async () => {\n\t\tconst newVal = ctx.value;\n\t\tconst newValue = newVal == '' || newVal == null ? null : newVal;\n\t\tif (value === newValue) { return; }\n\t\tvalue = newValue;\n\t\tcurrentValue = value;\n\t\tvalueState.set(value || '');\n\t\tif (!value) { return; }\n\t\tif (!service) { return; }\n\t\tconst modelConfiguration = await service;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await service.option(value);\n\t\tif (!option || value !== currentValue) { return; }\n\t\tvalueState.set(runPattern(labelPattern, option) || value);\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(labelText), label.firstChild);\n\t}\n\tif (!service) { return root; }\n\tspan.classList = 'InputDocument-text';\n\tspan.tabIndex = 0;\n\tspan.addEventListener('click', async () => {\n\t\tac?.abort();\n\t\tac = new AbortController();\n\n\t\tconst val = await selectDocument(ctx.source, {\n\t\t\tparent: root,\n\t\t\tsignal: AbortSignal.any([ac.signal, ctx.signal]),\n\t\t});\n\t\tconst result = Array.isArray(val) ? val[0] : val;\n\t\tif (!result) {\n\t\t\tif (!ctx.value) { return; }\n\t\t\tvalue = '';\n\t\t\tcurrentValue = null;\n\t\t\tctx.value = null;\n\t\t\tvalueState.set('');\n\t\t\treturn;\n\t\t}\n\t\tconst newValue = result.value;\n\t\tif (newValue === ctx.value) { return; }\n\t\tvalue = newValue;\n\t\tctx.value = newValue;\n\t\tcurrentValue = null;\n\t\tvalueState.set(result.label || newValue);\n\n\t});\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { createComputed, effect } from '@yongdall/web';\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = ctx => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst root = document.createElement(inline ? 'span' : 'div');\n\tconst label = root.appendChild(document.createElement('label'));\n\tconst input = label.appendChild(document.createElement('select'));\n\n\n\tinput.addEventListener('change', () => {\n\t\tctx.value = input.value || null;\n\t});\n\n\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = ctx.source.levelTree;\n\t\treturn [{ value: '', label: quick && ctx.field?.label || '', disabled: false, level: 0 }, ...list];\n\t});\n\n\n\n\n\n\teffect(() => {\n\t\tinput.innerHTML = '';\n\t\tfor (const { value, label, disabled, level } of currentOptions.get()) {\n\t\t\tconst option = document.createElement('option');\n\t\t\toption.value = `${value}`;\n\t\t\toption.label = `${Array(level).fill(' ').join('')}${label}`;\n\t\t\tif (disabled) {\n\t\t\t\toption.disabled = disabled;\n\t\t\t}\n\t\t\tinput.appendChild(option);\n\t\t}\n\t\tinput.value = ctx.value || '';\n\t}, ctx.signal);\n\n\n\teffect(() => {\n\t\tconst v = ctx.value;\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tinput.value = vv || '';\n\t}, ctx.signal);\n\tif (showLabel) {\n\t\tlabel.insertBefore(document.createTextNode(ctx.field?.label ?? ''), label.firstChild);\n\t}\n\n\treturn input;\n};\n\nexport default Component;\n","/** @import { Hooks } from '@yongdall/web' */\n\nimport textInput from './inputs/text.mjs';\nimport floatInput from './inputs/float.mjs';\nimport i32Input from './inputs/i32.mjs';\nimport i64Input from './inputs/i64.mjs';\nimport stringInput from './inputs/string.mjs';\nimport boolInput from './inputs/bool.mjs';\nimport dateInput from './inputs/date.mjs';\nimport timeInput from './inputs/time.mjs';\nimport datetimeInput from './inputs/datetime.mjs';\nimport passwordInput from './inputs/password.mjs';\nimport uriInput from './inputs/uri.mjs';\nimport uuidInput from './inputs/uuid.mjs';\nimport documentInput from './inputs/document.mjs';\nimport documentsInput from './inputs/documents.mjs';\nimport selectInput from './inputs/select.mjs';\nimport searchInput from './filters/search.mjs';\nimport searchMultipleInput from './inputs/searchMultiple.mjs';\nimport permissionsInput from './inputs/permissions.mjs';\nimport configurationInput from './inputs/configuration.mjs';\nimport code128 from './inputs/code128.mjs';\nimport checkbox from './inputs/checkbox.mjs';\nimport radio from './inputs/radio.mjs';\n\n\nimport textFilter from './filters/text.mjs';\nimport floatFilter from './filters/float.mjs';\nimport i32Filter from './filters/i32.mjs';\nimport i64Filter from './filters/i64.mjs';\nimport stringFilter from './filters/string.mjs';\nimport boolFilter from './filters/bool.mjs';\nimport dateFilter from './filters/date.mjs';\nimport timeFilter from './filters/time.mjs';\nimport datetimeFilter from './filters/datetime.mjs';\nimport uriFilter from './filters/uri.mjs';\nimport uuidFilter from './filters/uuid.mjs';\nimport documentFilter from './filters/document.mjs';\nimport selectFilter from './filters/select.mjs';\nimport searchFilter from './filters/search.mjs';\n\n/**\n * \n * @param {any} v \n * @returns \n */\nfunction toBool(v) {\n\tif (typeof v !== 'string') { return Boolean(v); }\n\tswitch (v.toLowerCase()) {\n\t\tcase '':\n\t\tcase '0':\n\t\tcase 'n':\n\t\tcase 'f':\n\t\tcase 'no':\n\t\tcase 'off':\n\t\tcase 'false':\n\t\t\treturn false;\n\t}\n\treturn true;\n\n}\n/**\n * \n * @param {any} a \n * @param {any} b \n * @returns \n */\nfunction isEq(a, b) {\n\tif ([a, b].filter(v => (v ?? null) === null).length === 1) { return false; }\n\tconst aNull = a ?? null;\n\tconst bNull = b ?? null;\n\tif (Object.is(aNull, bNull)) { return true; }\n\tif (aNull === null || bNull === null) { return false; }\n\tif (typeof a === 'boolean' || typeof b === 'boolean') { return toBool(a) === toBool(b); }\n\tif (a == b) { return true; }\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction eq(values, value) {\n\tif (Array.isArray(value)) {\n\t\tfor (const item of values) {\n\t\t\tif (Array.isArray(item)) {\n\t\t\t\tif (item.length !== value.length) { continue; }\n\t\t\t\tif (value.findIndex((val, index) => !isEq(item[index], val)) < 0) { return true; }\n\t\t\t} else for (const val of value) {\n\t\t\t\tif (isEq(item, val)) { return true; }\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor (const item of values) {\n\t\t\tif (isEq(item, value)) { return true; }\n\t\t}\n\n\t}\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction contains(values, value) {\n\tif (Array.isArray(value)) {\n\t\treturn null;\n\t}\n\tconst val = value ?? null;\n\tconst text = val === null ? '' : String(val);\n\tfor (const item of values) {\n\t\tconst value = (Array.isArray(item) ? item[0] : item) ?? null;\n\t\tif (value === null || value === '') { continue; }\n\t\tif (text.includes(String(value))) { return; }\n\t}\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction eqArray(values, value) {\n\tif (Array.isArray(value)) {\n\t\tfor (const item of values) {\n\t\t\tif (!Array.isArray(item)) { continue; }\n\t\t\tif (item.length !== value.length) { continue; }\n\t\t\tif (value.findIndex((val, index) => !isEq(item[index], val)) < 0) { return true; }\n\t\t}\n\t} else {\n\t\tfor (const item of values) {\n\t\t\tif (!Array.isArray(item)) { continue; }\n\t\t\tif (item.length !== value.length) { continue; }\n\t\t\tfor (const it of item) {\n\t\t\t\tif (isEq(it, value)) { return true; }\n\t\t\t}\n\t\t}\n\n\t}\n\treturn false;\n}\n/**\n * \n * @param {(a: any, b: any) => boolean?} compare \n * @param {any[]} values \n * @param {any} value \n */\nfunction compare(compare, values, value) {\n\tconst val = Array.isArray(value) ? value[0] : value;\n\tif ((val ?? null) === null) { return null; }\n\tfor (const item of values) {\n\t\tif (Array.isArray(item) || (item ?? null) === null) { continue; }\n\t\tconst v = compare(item, value);\n\t\tif (typeof v === 'boolean') { return v; }\n\t}\n\treturn false;\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction gt(values, value) {\n\treturn compare((a, b) => a > b, values, value);\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction ge(values, value) {\n\treturn compare((a, b) => a >= b, values, value);\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction lt(values, value) {\n\treturn compare((a, b) => a < b, values, value);\n}\n/**\n * \n * @param {any[]} values \n * @param {any} value \n */\nfunction le(values, value) {\n\treturn compare((a, b) => a <= b, values, value);\n}\n\n/** @type {Hooks.Define['formFields']} */\nexport const formFields = [\n\t{\n\t\tnot: '!=', notLabel: '≠', value: eq, filters: {\n\t\t\tgt: { value: gt },\n\t\t\tge: { value: ge },\n\t\t\tlt: { value: lt },\n\t\t\tle: { value: le },\n\t\t\tin: { value: eq, not: 'nin' },\n\t\t\tcontains: { value: contains },\n\t\t}\n\t},\n\t{\n\t\tarray: true, not: '!=', notLabel: '≠', value: eqArray, filters: {\n\t\t\tin: { value: eqArray, not: 'nin' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'text', input: textInput, filter: textFilter, notFilter: textFilter, filters: {\n\t\t\tne: { filter: textFilter, label: '≠' },\n\t\t\tgt: { filter: textFilter, label: '>' },\n\t\t\tge: { filter: textFilter, label: '≥' },\n\t\t\tlt: { filter: textFilter, label: '<' },\n\t\t\tle: { filter: textFilter, label: '≤' },\n\t\t\tcontains: { filter: textFilter, label: '包含' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'string', input: stringInput, filter: stringFilter, notFilter: stringFilter, filters: {\n\t\t\tne: { filter: stringFilter, label: '≠' },\n\t\t\tgt: { filter: stringFilter, label: '>' },\n\t\t\tge: { filter: stringFilter, label: '≥' },\n\t\t\tlt: { filter: stringFilter, label: '<' },\n\t\t\tle: { filter: stringFilter, label: '≤' },\n\t\t\tcontains: { filter: stringFilter, label: '包含' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'bool', input: boolInput, filter: boolFilter, notFilter: boolFilter, filters: {\n\t\t\tne: { filter: boolFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'f32', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'f64', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'decimal', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'numeric', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'money', input: floatInput, filter: floatFilter, notFilter: floatFilter, filters: {\n\t\t\tne: { filter: floatFilter, label: '≠' },\n\t\t\tgt: { filter: floatFilter, label: '>' },\n\t\t\tge: { filter: floatFilter, label: '≥' },\n\t\t\tlt: { filter: floatFilter, label: '<' },\n\t\t\tle: { filter: floatFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'i16', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {\n\t\t\tne: { filter: i32Filter, label: '≠' },\n\t\t\tgt: { filter: i32Filter, label: '>' },\n\t\t\tge: { filter: i32Filter, label: '≥' },\n\t\t\tlt: { filter: i32Filter, label: '<' },\n\t\t\tle: { filter: i32Filter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'i32', input: i32Input, filter: i32Filter, notFilter: i32Filter, filters: {\n\t\t\tne: { filter: i32Filter, label: '≠' },\n\t\t\tgt: { filter: i32Filter, label: '>' },\n\t\t\tge: { filter: i32Filter, label: '≥' },\n\t\t\tlt: { filter: i32Filter, label: '<' },\n\t\t\tle: { filter: i32Filter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'i64', input: i64Input, filter: i64Filter, notFilter: i64Filter, filters: {\n\t\t\tne: { filter: i64Filter, label: '≠' },\n\t\t\tgt: { filter: i64Filter, label: '>' },\n\t\t\tge: { filter: i64Filter, label: '≥' },\n\t\t\tlt: { filter: i64Filter, label: '<' },\n\t\t\tle: { filter: i64Filter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'date', input: dateInput, filter: dateFilter, notFilter: dateFilter, filters: {\n\t\t\tne: { filter: dateFilter, label: '≠' },\n\t\t\tgt: { filter: dateFilter, label: '>' },\n\t\t\tge: { filter: dateFilter, label: '≥' },\n\t\t\tlt: { filter: dateFilter, label: '<' },\n\t\t\tle: { filter: dateFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'time', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {\n\t\t\tne: { filter: timeFilter, label: '≠' },\n\t\t\tgt: { filter: timeFilter, label: '>' },\n\t\t\tge: { filter: timeFilter, label: '≥' },\n\t\t\tlt: { filter: timeFilter, label: '<' },\n\t\t\tle: { filter: timeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'uuid', input: uuidInput, filter: uuidFilter, notFilter: uuidFilter, filters: {\n\t\t\tne: { filter: uuidFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'datetime', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {\n\t\t\tne: { filter: datetimeFilter, label: '≠' },\n\t\t\tgt: { filter: datetimeFilter, label: '>' },\n\t\t\tge: { filter: datetimeFilter, label: '≥' },\n\t\t\tlt: { filter: datetimeFilter, label: '<' },\n\t\t\tle: { filter: datetimeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'timetz', input: timeInput, filter: timeFilter, notFilter: timeFilter, filters: {\n\t\t\tne: { filter: timeFilter, label: '≠' },\n\t\t\tgt: { filter: timeFilter, label: '>' },\n\t\t\tge: { filter: timeFilter, label: '≥' },\n\t\t\tlt: { filter: timeFilter, label: '<' },\n\t\t\tle: { filter: timeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\ttype: 'timestamp', input: datetimeInput, filter: datetimeFilter, notFilter: datetimeFilter, filters: {\n\t\t\tne: { filter: datetimeFilter, label: '≠' },\n\t\t\tgt: { filter: datetimeFilter, label: '>' },\n\t\t\tge: { filter: datetimeFilter, label: '≥' },\n\t\t\tlt: { filter: datetimeFilter, label: '<' },\n\t\t\tle: { filter: datetimeFilter, label: '≤' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'password', input: passwordInput, filter: stringFilter, notFilter: stringFilter, filters: {\n\t\t\tne: { filter: stringFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'uri', input: uriInput, filter: uriFilter, notFilter: uriFilter, filters: {\n\t\t\tne: { filter: uriFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'document', input: documentInput, filter: documentFilter, notFilter: documentFilter, filters: {\n\t\t\tne: { filter: documentFilter, label: '≠' },\n\t\t}\n\t},\n\t{ array: true, renderer: 'document', input: documentsInput, filter: documentFilter, notFilter: documentFilter, filters: {\n\t\t\tne: { filter: documentFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'select', input: selectInput, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'select', array: true, input: searchMultipleInput, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'choice', input: radio, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'choice', array: true, input: checkbox, filter: selectFilter, notFilter: selectFilter, filters: {\n\t\t\tne: { filter: selectFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'search', input: searchInput, filter: searchFilter, notFilter: searchFilter, filters: {\n\t\t\tne: { filter: searchFilter, label: '≠' },\n\t\t}\n\t},\n\t{\n\t\trenderer: 'search', array: true, input: searchMultipleInput, filter: searchFilter, notFilter: searchFilter, filters: {\n\t\t\tne: { filter: searchFilter, label: '≠' },\n\t\t}\n\t},\n\t{ renderer: 'code128', input: code128 },\n\t{ renderer: 'barcode', input: code128 },\n\t{ renderer: 'configuration', input: configurationInput },\n\t{ type: 'submodel', array: true, renderer: 'permission', input: permissionsInput },\n];\nexport const styles = ['style.css'];\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yongdall/theme",
3
- "version": "0.4.6",
3
+ "version": "0.5.0",
4
4
  "exports": {
5
5
  ".": "./index.mjs"
6
6
  },
@@ -9,11 +9,11 @@
9
9
  },
10
10
  "devDependencies": {
11
11
  "@neeloong/table": "^0.0.2",
12
- "@yongdall/web": "^0.4.6"
12
+ "@yongdall/web": "^0.5.0"
13
13
  },
14
14
  "peerDependencies": {
15
15
  "@neeloong/table": "^0.0.2",
16
- "@yongdall/web": "^0.4.6"
16
+ "@yongdall/web": "^0.5.0"
17
17
  },
18
18
  "main": "./index.mjs",
19
19
  "type": "module"
@@ -1,5 +1,5 @@
1
- //#region packages/theme/hooks.yongdall.mjs
2
- const enumerations = { theme: [
1
+ //#region packages/theme/yongdall/enumeration.mjs
2
+ const theme = [
3
3
  {
4
4
  theme: "@yongdall/theme#allSider",
5
5
  label: "全侧主题"
@@ -12,8 +12,8 @@ const enumerations = { theme: [
12
12
  theme: "@yongdall/theme#tabs",
13
13
  label: "多页主题"
14
14
  }
15
- ] };
15
+ ];
16
16
 
17
17
  //#endregion
18
- export { enumerations };
19
- //# sourceMappingURL=hooks.yongdall.mjs.map
18
+ export { theme };
19
+ //# sourceMappingURL=enumeration.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enumeration.mjs","names":[],"sources":["../../../packages/theme/yongdall/enumeration.mjs"],"sourcesContent":["export const theme = [\n\t{ theme: '@yongdall/theme#allSider', label: '全侧主题' },\n\t{ theme: '@yongdall/theme#base', label: '基础主题' },\n\t{ theme: '@yongdall/theme#tabs', label: '多页主题' },\n];\n"],"mappings":";AAAA,MAAa,QAAQ;CACpB;EAAE,OAAO;EAA4B,OAAO;EAAQ;CACpD;EAAE,OAAO;EAAwB,OAAO;EAAQ;CAChD;EAAE,OAAO;EAAwB,OAAO;EAAQ;CAChD"}
@@ -0,0 +1 @@
1
+ label: 基础皮肤
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.yongdall.mjs","names":[],"sources":["../../packages/theme/hooks.yongdall.mjs"],"sourcesContent":["export const enumerations = {\n\ttheme: [\n\t\t{ theme: '@yongdall/theme#allSider', label: '全侧主题' },\n\t\t{ theme: '@yongdall/theme#base', label: '基础主题' },\n\t\t{ theme: '@yongdall/theme#tabs', label: '多页主题' },\n\t]\n};\n"],"mappings":";AAAA,MAAa,eAAe,EAC3B,OAAO;CACN;EAAE,OAAO;EAA4B,OAAO;EAAQ;CACpD;EAAE,OAAO;EAAwB,OAAO;EAAQ;CAChD;EAAE,OAAO;EAAwB,OAAO;EAAQ;CAChD,EACD"}