@yongdall/theme 0.3.1 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/hooks.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import{ArrayStore as e,ObjectStore as t,Pagination as n,Search as r,createComputed as i,createQuickFilters as a,createShowField as o,createState as s,effect as c,findConfigurator as l,getPatternFields as u,getPermissionFields as d,getPrimaryFields as f,importStyle as p,importWidget as m,loadOptions as h,modelService as g,permissionsService as _,runPattern as v,showFilterDialog as y,toId as ee,waitAbortSignal as te,watch as ne}from"@yongdall/web";import{Check as re,Source as ie}from"@neeloong/table";function b(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 x(e,t,n,r,i){let a=e.editable,o=e.field?.nullable?null:i,[s,l]=(a?t:n)(e,t=>{o=r(t,e.field?.nullable),e.value=o});function u(e,t){!t&&e===o||(o=e,l(e))}return u(e.value,!0),c(()=>u(e.value),e.signal),s}function ae(e){let t=document.createElement(`div`),n=t;return e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.innerText=e??``}]}function oe(e,t){return e||!t?e:null}function se(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ce=e=>x(e,se,ae,oe,``);function le(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?null:0}function S(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var C=e=>x(e,S,b,le,0);function w(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?null:0}function T(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var E=e=>x(e,T,b,w,0);function D(e,t){if(!e)return t?null:0n;try{return BigInt(e)}catch{}return t?null:0n}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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ue=e=>x(e,O,b,D,0n);function de(e,t){return e||!t?e:null}function k(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var A=e=>x(e,k,b,de,``),fe=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,c(()=>t.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>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 c(()=>i(e.value),e.signal),t};function pe(e,t){return Number.isFinite(new Date(e).valueOf())?e:t?null:``}function j(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var M=e=>x(e,j,b,pe,``);function N(e,t){let n=new Date(e);return Number.isFinite(n)?e:t?null:``}function me(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var P=e=>x(e,me,b,N,``);function he(e,t){let n=new Date(e);return Number.isFinite(n.valueOf())?n:null}function F(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 I(e,t=`T`){return e instanceof Date?F(e,t):F(new Date(e),t)??``}function L(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=I(e,` `)}]}function R(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=I(e)}]}var z=e=>x(e,R,L,he,null);function ge(e,t){return e||!t?e:null}function B(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var _e=e=>x(e,B,b,ge,``);function ve(e,t){return e||!t?e:null}function V(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ye=e=>x(e,V,b,ve,``);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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var Se=e=>x(e,xe,b,be,``);p(`@neeloong/table/style.css`);async function Ce(t,l,p,m,h,g){let _=te(m,!0),b=await Promise.race([p.loadScript(),_]);if(!b)return Promise.reject();let x=g?.fields,ae=g?.queryFilters||[];function oe(n){let r=t?.parent;if(!r||(r instanceof e&&(r=r.parent),!r))return null;let i=r,a=0;for(;n[a]===`?`;){a++;let t=i.parent;if(!t||(t instanceof e&&(t=t.parent),!t))break;i=t}for(;n[a]===`?`;)a++;let o=n.slice(a),s=i.child(o);return s?s.value:null}let se=r.parse(g?.filter),ce=i(()=>r.fill(se.where,oe)),le=i(()=>r.fill(se.orWhere,oe)),S=s([]),C=s(100),w=s(1),T=s([]),E=l.appendChild(document.createElement(`div`)),D=E.appendChild(document.createElement(`div`)),O=E.appendChild(document.createElement(`div`)),ue=l.appendChild(document.createElement(`div`)),de=l.appendChild(document.createElement(`div`)),k=new ie({idKey:`_`,parentKey:`parent`});k.selectable=!0;let A=b.fields,fe=d(`options`,b.permissions||[],b),pe=Object.entries(A).filter(([,{type:e}])=>e&&typeof e!=`object`).filter(([e])=>fe.has(e)),j=f(b),M=b.labelPattern||``,N=[];for(let{field:e,width:t,label:n}of x||[]){if(!e||!Object.hasOwn(A,e))continue;let r=A[e];if(!r)continue;let i=r.type;!i||typeof i!=`string`||N.push({name:e,width:t||void 0,title:n||r.label||``,field:r})}if(!N.length){for(let[e,t]of pe)if(N.push({name:e,title:t.label||``,field:t}),N.length>=4)break}let me=[...new Set([...N.map(e=>e.name),...j,...u(M)])];c(()=>k.setValue(T.get()),m);let P=N.map(({name:e,field:t,title:n,width:r})=>({field:e,title:n,width:r,resizable:!0,render(n){let r=document.createElement(`div`),i=o(e,t,{},n.data);return r.appendChild(i.root),{root:r,destroy(){i.destroy()},setHidden(){},update(n){i.destroy(),r.innerHTML=``,i=o(e,t,{},n.data),r.appendChild(i.root)}}}}));P.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`div`),r=v(M,t)||j.map(e=>t[e]).join(`$`);return n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(e){let t=e.data,r=v(M,t)||j.map(e=>t[e]).join(`$`);n.innerHTML=``,n.appendChild(document.createTextNode(r))}}}}),h&&P.unshift({field:`_`,extensions:[re],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let he=k.createGroup(P,2),F=document.createElement(`table`);he.createHeader(F.appendChild(document.createElement(`div`))),he.createBody(F.appendChild(document.createElement(`div`)));let I=new n;ne(()=>C.get(),e=>I.size=e||100,{immediate:!0,signal:m}),ne(()=>w.get(),e=>I.page=e||1,{immediate:!0,signal:m}),I.listen(()=>{w.set(I.page),C.set(I.size)});let L=0,R=s(!1);async function z(){if(!m.aborted&&!R.get())try{R.set(!0),L++;let e=L,{options:t,total:n}=await p.options({limit:C.get(),page:w.get(),where:[...S.get()||[],...ce.get()||[]],or:le.get(),select:me,total:!0});if(m.aborted||e!==L)return;T.set(t.map(e=>({...e,_:ee(e,j)}))),I.total=n}finally{R.set(!1)}}function ge(){b&&y(b,S.get(),l).then(e=>{S.set(e)}).catch(()=>{})}function B(e,t,n){let r=document.createElement(`button`);r.appendChild(document.createTextNode(e));let a=i(()=>!!n?.get());return c(()=>{r.disabled=a.get()},m),r.addEventListener(`click`,e=>{a.get()||e.defaultPrevented||t()}),r}let{promise:_e,reject:ve,resolve:V}=Promise.withResolvers();return O.appendChild(B(`刷新`,z,R)),O.appendChild(B(`过滤`,ge)),O.appendChild(B(`确定`,()=>{let e=[];if(h){if(e=k.checked,!e.length)return V([])}else{let t=k.selectedId;if(!t)return V(null);e=[t]}if(!e.length){V(h?[]:null);return}let t=T.get(),n=Object.fromEntries(t.map(e=>[e._,e])),r=[...new Set(e.map(e=>n[e]).filter(Boolean))].map(e=>({value:e._,label:v(M,e)||e._}));V(h?r:r[0])})),O.appendChild(B(`取消`,()=>{ve()})),D.classList.add(`QueryFilters`),a({get(){return S.get()||[]},set(e){S.set(e),z()}},D,ae||[],{fields:b.fields,signal:m,inline:!0}),ue.appendChild(F),de.appendChild(I.root),ne([()=>S.get(),()=>C.get(),()=>w.get()],z,{signal:m,immediate:!0}),Promise.race([_e,_]).finally(()=>{E.remove(),ue.remove(),de.remove()})}var we=(e,t)=>{let n=e.editable,r=e.store||null,i=g(e.field?.model||``),a=document.createElement(`div`);a.classList=`InputDocument`;let o=a.appendChild(document.createElement(`div`)),l=o.appendChild(document.createElement(`div`)),d=o.appendChild(document.createElement(`div`));l.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>o.scrollIntoView()),e.listen(`focus`,()=>o.focus());let f=null,p=null,m=s(),h=null;return c(()=>l.innerText=e.placeholder,e.signal),c(()=>{let e=m.get()||``;d.innerText=e,l.hidden=!!e},e.signal),c(async()=>{let t=e.value,n=t==``||t==null?null:t;if(f===n)return;f=n;let r=e.current[`${e.name}~label`];if(r){p=null,f=null,m.set(r);return}if(p=f,m.set(f||``),!f)return;let a=await i;if(!a)return;let o=a.labelPattern||``;if(!u(o).length)return;let{option:s}=await i.option(f);!s||f!==p||m.set(v(o,s)||f)},e.signal),n?(o.classList=`InputDocument-text`,c(()=>{e.readonly||e.disabled?(o.removeAttribute(`tabIndex`),h?.abort(),h=null,o.setAttribute(`disabled`,``)):(o.tabIndex=0,o.removeAttribute(`disabled`))},e.signal),o.addEventListener(`click`,async()=>{if(e.readonly||e.disabled)return;h?.abort(),h=new AbortController,e.emit(`focus`,null);let n=a.appendChild(document.createElement(`dialog`));n.showModal();try{let a=await Ce(r,n,i,AbortSignal.any([h.signal,e.signal]),!1,t),o=Array.isArray(a)?a[0]:a;if(!o){if(!e.value)return;(e.clearable||e.nullable)&&(f=``,p=null,e.value=e.nullable?null:``,m.set(``),e.emit(`change`,null));return}let s=o.value;if(s===e.value)return;f=s,e.value=s,p=null,m.set(o.label||s),e.emit(`change`,null)}finally{n.remove(),e.emit(`blur`,null)}}),a):a};function Te(e){return i(()=>{let t=[...e.get()],n=Object.create(null);for(let e;e=t.shift();){let r=e.children;n[e.value]=e.label;for(let e of r)t.push(e)}return n})}function Ee(e){return i(()=>{let t=e.get().map(e=>[0,e]),n=[];for(let e;e=t.shift();){let[r,i]=e;n.push({...i,level:r});for(let e of i.children)t.push([r+1,e])}return n})}function De(e){return i(()=>{let t=[...e.get()],n=Object.create(null);for(let e;e=t.shift();){let r=e.children;n[e.value]=e.data;for(let e of r)t.push(e)}return n})}function*Oe(e,n){if(!e||!n||typeof n==`object`)return;let r=e.parent;if(r instanceof t)for(let[e,t]of Object.entries(n)){let n=r.child(e);n&&typeof t==`string`&&(yield e=>n.value=e[t])}}var ke=(t,n={})=>{let r=t.editable,a=t.store;if(!r){let e=document.createElement(`span`),r=s(``);t.listen(`focus`,()=>e.focus()),t.listen(`scrollIntoView`,()=>e.scrollIntoView());let i=Te(h(n,!1));function a(){let t=r.get();t===``?e.innerText=``:e.innerText=i.get()[t]??``}function o(e){let t=e??``;t!==r&&r.set(t)}return c(()=>o(t.value),t.signal),c(a,t.signal),e}function o(n){let r=t.store?.parent;if(!r||(r instanceof e&&(r=r.parent),!r))return null;let i=r,a=0;for(;n[a]===`?`;){a++;let t=i.parent;if(!t||(t instanceof e&&(t=t.parent),!t))break;i=t}for(;n[a]===`?`;)a++;let o=n.slice(a),s=i.child(o);return s?s.value:null}let l=h(n,o),u=De(l),d=document.createElement(`select`),f=[...Oe(a,n.bind)];d.addEventListener(`change`,()=>{let e=d.value||null;if(t.value=e,!e||!f.length)return;let n=u.get(),r=Object.hasOwn(n,e)&&n[e];if(!(!r||typeof r!=`object`))for(let e of f)e(r)}),d.addEventListener(`change`,e=>t.emit(`change`,e)),d.addEventListener(`focus`,e=>t.emit(`focus`,e)),d.addEventListener(`blur`,e=>t.emit(`blur`,e)),t.listen(`focus`,()=>d.focus()),t.listen(`scrollIntoView`,()=>d.scrollIntoView()),c(()=>d.disabled=!!(t.readonly||t.disabled),t.signal);let p=Ee(l),m=i(()=>{let e=p.get();return t.clearable?[{value:``,label:t.field?.label??``,disabled:!1,level:0},...e]:e});c(()=>{d.innerHTML=``;for(let{value:e,label:t,disabled:n,level:r}of m.get()){let i=document.createElement(`option`);i.value=`${e}`,i.label=`${Array(r).fill(` `).join(``)}${t}`,n&&(i.disabled=n),d.appendChild(i)}d.value=t.value||``},t.signal);function g(e){d.value=(e==``||e==null?null:e)||``}return c(()=>g(t.value),t.signal),d};const Ae=HTMLElement.prototype.hasOwnProperty(`popover`);function je(e){let t=e;for(;t;){let e=t.getRootNode();if(!e)return!1;if(e===document)return document.activeElement===t;if(!(e instanceof ShadowRoot)||e.activeElement!==t)return!1;let n=e.host;if(!n)return!1;t=n}}var Me=class extends HTMLElement{#e=null;#t=null;#n=null;#r=this.attachShadow({mode:`closed`});#i=this.#r.appendChild(document.createElement(`style`));#a=this.#r.appendChild(document.createElement(`input`));#o=this.#r.appendChild(document.createElement(`div`));#s=this.#o.appendChild(document.createElement(`div`));constructor(){super(),this.#i.textContent=`:host {
1
+ import{ArrayStore as e,ObjectStore as t,Pagination as n,Search as r,createComputed as i,createQuickFilters as a,createShowField as o,createState as s,effect as c,findConfigurator as l,getPatternFields as u,getPermissionFields as d,getPrimaryFields as f,importStyle as p,importWidget as m,loadOptions as h,modelService as g,permissionsService as _,runPattern as v,showFilterDialog as y,toId as ee,waitAbortSignal as te,watch as ne}from"@yongdall/web";import{Check as re,Source as ie}from"@neeloong/table";function b(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 x(e,t,n,r,i){let a=e.editable,o=e.field?.nullable?null:i,[s,l]=(a?t:n)(e,t=>{o=r(t,e.field?.nullable),e.value=o});function u(e,t){!t&&e===o||(o=e,l(e))}return u(e.value,!0),c(()=>u(e.value),e.signal),s}function ae(e){let t=document.createElement(`div`),n=t;return e.listen(`scrollIntoView`,()=>t.scrollIntoView()),[t,e=>{n.innerText=e??``}]}function oe(e,t){return e||!t?e:null}function se(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ce=e=>x(e,se,ae,oe,``);function le(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?null:0}function S(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var C=e=>x(e,S,b,le,0);function w(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?null:0}function T(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var E=e=>x(e,T,b,w,0);function ue(e,t){if(!e)return t?null:0n;try{return BigInt(e)}catch{}return t?null:0n}function D(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var de=e=>x(e,D,b,ue,0n);function fe(e,t){return e||!t?e:null}function O(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var k=e=>x(e,O,b,fe,``),pe=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,c(()=>t.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>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 c(()=>i(e.value),e.signal),t};function me(e,t){return Number.isFinite(new Date(e).valueOf())?e:t?null:``}function A(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var j=e=>x(e,A,b,me,``);function M(e,t){let n=new Date(e);return Number.isFinite(n)?e:t?null:``}function he(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var N=e=>x(e,he,b,M,``);function ge(e,t){let n=new Date(e);return Number.isFinite(n.valueOf())?n:null}function P(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 F(e,t=`T`){return e instanceof Date?P(e,t):P(new Date(e),t)??``}function I(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=F(e,` `)}]}function L(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=F(e)}]}var R=e=>x(e,L,I,ge,null);function _e(e,t){return e||!t?e:null}function z(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var ve=e=>x(e,z,b,_e,``);function ye(e,t){return e||!t?e:null}function B(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var be=e=>x(e,B,b,ye,``);function xe(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)),c(()=>n.disabled=!!(e.readonly||e.disabled),e.signal),c(()=>n.placeholder=e.placeholder,e.signal),e.listen(`focus`,()=>n.focus()),e.listen(`scrollIntoView`,()=>n.scrollIntoView()),[n,e=>{n.value=e??``}]}var Ce=e=>x(e,Se,b,xe,``);p(`@neeloong/table/style.css`);async function we(t,l,p,m,h,g){let _=te(m,!0),b=await Promise.race([p.loadScript(),_]);if(!b)return Promise.reject();let x=g?.fields,ae=g?.queryFilters||[];function oe(n){let r=t?.parent;if(!r||(r instanceof e&&(r=r.parent),!r))return null;let i=r,a=0;for(;n[a]===`?`;){a++;let t=i.parent;if(!t||(t instanceof e&&(t=t.parent),!t))break;i=t}for(;n[a]===`?`;)a++;let o=n.slice(a),s=i.child(o);return s?s.value:null}let se=r.parse(g?.filter),ce=i(()=>r.fill(se.where,oe)),le=i(()=>r.fill(se.orWhere,oe)),S=s([]),C=s(100),w=s(1),T=s([]),E=l.appendChild(document.createElement(`div`)),ue=E.appendChild(document.createElement(`div`)),D=E.appendChild(document.createElement(`div`)),de=l.appendChild(document.createElement(`div`)),fe=l.appendChild(document.createElement(`div`)),O=new ie({idKey:`_`,parentKey:`parent`});O.selectable=!0;let k=b.fields,pe=d(`options`,b.permissions||[],b),me=Object.entries(k).filter(([,{type:e}])=>e&&typeof e!=`object`).filter(([e])=>pe.has(e)),A=f(b),j=b.labelPattern||``,M=[];for(let{field:e,width:t,label:n}of x||[]){if(!e||!Object.hasOwn(k,e))continue;let r=k[e];if(!r)continue;let i=r.type;!i||typeof i!=`string`||M.push({name:e,width:t||void 0,title:n||r.label||``,field:r})}if(!M.length){for(let[e,t]of me)if(M.push({name:e,title:t.label||``,field:t}),M.length>=4)break}let he=[...new Set([...M.map(e=>e.name),...A,...u(j)])];c(()=>O.setValue(T.get()),m);let N=M.map(({name:e,field:t,title:n,width:r})=>({field:e,title:n,width:r,resizable:!0,render(n){let r=document.createElement(`div`),i=o(e,t,{},n.data);return r.appendChild(i.root),{root:r,destroy(){i.destroy()},setHidden(){},update(n){i.destroy(),r.innerHTML=``,i=o(e,t,{},n.data),r.appendChild(i.root)}}}}));N.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`div`),r=v(j,t)||A.map(e=>t[e]).join(`$`);return n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(e){let t=e.data,r=v(j,t)||A.map(e=>t[e]).join(`$`);n.innerHTML=``,n.appendChild(document.createTextNode(r))}}}}),h&&N.unshift({field:`_`,extensions:[re],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let ge=O.createGroup(N,2),P=document.createElement(`table`);ge.createHeader(P.appendChild(document.createElement(`div`))),ge.createBody(P.appendChild(document.createElement(`div`)));let F=new n;ne(()=>C.get(),e=>F.size=e||100,{immediate:!0,signal:m}),ne(()=>w.get(),e=>F.page=e||1,{immediate:!0,signal:m}),F.listen(()=>{w.set(F.page),C.set(F.size)});let I=0,L=s(!1);async function R(){if(!m.aborted&&!L.get())try{L.set(!0),I++;let e=I,{options:t,total:n}=await p.options({limit:C.get(),page:w.get(),where:[...S.get()||[],...ce.get()||[]],or:le.get(),select:he,total:!0});if(m.aborted||e!==I)return;T.set(t.map(e=>({...e,_:ee(e,A)}))),F.total=n}finally{L.set(!1)}}function _e(){b&&y(b,S.get(),l).then(e=>{S.set(e)}).catch(()=>{})}function z(e,t,n){let r=document.createElement(`button`);r.appendChild(document.createTextNode(e));let a=i(()=>!!n?.get());return c(()=>{r.disabled=a.get()},m),r.addEventListener(`click`,e=>{a.get()||e.defaultPrevented||t()}),r}let{promise:ve,reject:ye,resolve:B}=Promise.withResolvers();return D.appendChild(z(`刷新`,R,L)),D.appendChild(z(`过滤`,_e)),D.appendChild(z(`确定`,()=>{let e=[];if(h){if(e=O.checked,!e.length)return B([])}else{let t=O.selectedId;if(!t)return B(null);e=[t]}if(!e.length){B(h?[]:null);return}let t=T.get(),n=Object.fromEntries(t.map(e=>[e._,e])),r=[...new Set(e.map(e=>n[e]).filter(Boolean))].map(e=>({value:e._,label:v(j,e)||e._}));B(h?r:r[0])})),D.appendChild(z(`取消`,()=>{ye()})),ue.classList.add(`QueryFilters`),a({get(){return S.get()||[]},set(e){S.set(e),R()}},ue,ae||[],{fields:b.fields,signal:m,inline:!0}),de.appendChild(P),fe.appendChild(F.root),ne([()=>S.get(),()=>C.get(),()=>w.get()],R,{signal:m,immediate:!0}),Promise.race([ve,_]).finally(()=>{E.remove(),de.remove(),fe.remove()})}var Te=(e,t)=>{let n=e.editable,r=e.store||null,i=g(e.field?.model||``),a=document.createElement(`div`);a.classList=`InputDocument`;let o=a.appendChild(document.createElement(`div`)),l=o.appendChild(document.createElement(`div`)),d=o.appendChild(document.createElement(`div`));l.classList=`InputDocument-placeholder`,e.listen(`scrollIntoView`,()=>o.scrollIntoView()),e.listen(`focus`,()=>o.focus());let f=null,p=null,m=s(),h=null;return c(()=>l.innerText=e.placeholder,e.signal),c(()=>{let e=m.get()||``;d.innerText=e,l.hidden=!!e},e.signal),c(async()=>{let t=e.value,n=t==``||t==null?null:t;if(f===n)return;f=n;let r=e.current[`${e.name}~label`];if(r){p=null,f=null,m.set(r);return}if(p=f,m.set(f||``),!f)return;let a=await i;if(!a)return;let o=a.labelPattern||``;if(!u(o).length)return;let{option:s}=await i.option(f);!s||f!==p||m.set(v(o,s)||f)},e.signal),n?(o.classList=`InputDocument-text`,c(()=>{e.readonly||e.disabled?(o.removeAttribute(`tabIndex`),h?.abort(),h=null,o.setAttribute(`disabled`,``)):(o.tabIndex=0,o.removeAttribute(`disabled`))},e.signal),o.addEventListener(`click`,async()=>{if(e.readonly||e.disabled)return;h?.abort(),h=new AbortController,e.emit(`focus`,null);let n=a.appendChild(document.createElement(`dialog`));n.showModal();try{let a=await we(r,n,i,AbortSignal.any([h.signal,e.signal]),!1,t),o=Array.isArray(a)?a[0]:a;if(!o){if(!e.value)return;(e.clearable||e.nullable)&&(f=``,p=null,e.value=e.nullable?null:``,m.set(``),e.emit(`change`,null));return}let s=o.value;if(s===e.value)return;f=s,e.value=s,p=null,m.set(o.label||s),e.emit(`change`,null)}finally{n.remove(),e.emit(`blur`,null)}}),a):a};function Ee(e){return i(()=>{let t=[...e.get()],n=Object.create(null);for(let e;e=t.shift();){let r=e.children;n[e.value]=e.label;for(let e of r)t.push(e)}return n})}function De(e){return i(()=>{let t=e.get().map(e=>[0,e]),n=[];for(let e;e=t.shift();){let[r,i]=e;n.push({...i,level:r});for(let e of i.children)t.push([r+1,e])}return n})}function Oe(e){return i(()=>{let t=[...e.get()],n=Object.create(null);for(let e;e=t.shift();){let r=e.children;n[e.value]=e.data;for(let e of r)t.push(e)}return n})}function*ke(e,n){if(!e||!n||typeof n==`object`)return;let r=e.parent;if(r instanceof t)for(let[e,t]of Object.entries(n)){let n=r.child(e);n&&typeof t==`string`&&(yield e=>n.value=e[t])}}var Ae=(t,n={})=>{let r=t.editable,a=t.store;if(!r){let e=document.createElement(`span`),r=s(``);t.listen(`focus`,()=>e.focus()),t.listen(`scrollIntoView`,()=>e.scrollIntoView());let i=Ee(h(n,!1));function a(){let t=r.get();t===``?e.innerText=``:e.innerText=i.get()[t]??``}function o(e){let t=e??``;t!==r&&r.set(t)}return c(()=>o(t.value),t.signal),c(a,t.signal),e}function o(n){let r=t.store?.parent;if(!r||(r instanceof e&&(r=r.parent),!r))return null;let i=r,a=0;for(;n[a]===`?`;){a++;let t=i.parent;if(!t||(t instanceof e&&(t=t.parent),!t))break;i=t}for(;n[a]===`?`;)a++;let o=n.slice(a),s=i.child(o);return s?s.value:null}let l=h(n,o),u=Oe(l),d=document.createElement(`select`),f=[...ke(a,n.bind)];d.addEventListener(`change`,()=>{let e=d.value||null;if(t.value=e,!e||!f.length)return;let n=u.get(),r=Object.hasOwn(n,e)&&n[e];if(!(!r||typeof r!=`object`))for(let e of f)e(r)}),d.addEventListener(`change`,e=>t.emit(`change`,e)),d.addEventListener(`focus`,e=>t.emit(`focus`,e)),d.addEventListener(`blur`,e=>t.emit(`blur`,e)),t.listen(`focus`,()=>d.focus()),t.listen(`scrollIntoView`,()=>d.scrollIntoView()),c(()=>d.disabled=!!(t.readonly||t.disabled),t.signal);let p=De(l),m=i(()=>{let e=p.get();return t.clearable?[{value:``,label:t.field?.label??``,disabled:!1,level:0},...e]:e});c(()=>{d.innerHTML=``;for(let{value:e,label:t,disabled:n,level:r}of m.get()){let i=document.createElement(`option`);i.value=`${e}`,i.label=`${Array(r).fill(` `).join(``)}${t}`,n&&(i.disabled=n),d.appendChild(i)}d.value=t.value||``},t.signal);function g(e){d.value=(e==``||e==null?null:e)||``}return c(()=>g(t.value),t.signal),d};const je=HTMLElement.prototype.hasOwnProperty(`popover`);function Me(e){let t=e;for(;t;){let e=t.getRootNode();if(!e)return!1;if(e===document)return document.activeElement===t;if(!(e instanceof ShadowRoot)||e.activeElement!==t)return!1;let n=e.host;if(!n)return!1;t=n}}var Ne=class extends HTMLElement{#e=null;#t=null;#n=null;#r=this.attachShadow({mode:`closed`});#i=this.#r.appendChild(document.createElement(`style`));#a=this.#r.appendChild(document.createElement(`input`));#o=this.#r.appendChild(document.createElement(`div`));#s=this.#o.appendChild(document.createElement(`div`));constructor(){super(),this.#i.textContent=`:host {
2
2
  display: contents;
3
3
  }
4
4
 
@@ -65,5 +65,5 @@ input {
65
65
 
66
66
  }
67
67
 
68
- `;let e=this.#a;e.type=`text`;let t=this.#o,n=this.#s;t.className=`dropdown`,n.className=`dropdown-list`,Ae&&t.setAttribute(`popover`,`manual`),e.addEventListener(`input`,()=>{this.#u()}),e.addEventListener(`focus`,()=>{this.#d()}),e.addEventListener(`blur`,()=>{let t=this.#e,n=e.value,r=this.required;if(!n){if(!t)return;if(r){e.value=t.label;return}this.#e=null,this.#t=null,this.#l();return}if(t?.label===n)return;let i=this.#c.find(e=>e.label===n);if(i){this.#e=i,this.#t=i.value,e.value=i.label,this.#l();return}if(!t){e.value=``;return}r?e.value=t.label:(e.value=``,this.#e=null,this.#t=null,this.#l())}),this.addEventListener(`keydown`,e=>{if(!this.#b)return;let t=this.#n;if(e.key===`ArrowDown`){if(e.preventDefault(),t?.parentNode!==n){let e=n.firstElementChild;if(!e){this.#n=null;return}this.#n=e,e.classList.add(`current`),e.scrollIntoView();return}let r=t.nextElementSibling;if(!r)return;t.classList.remove(`current`),this.#n=r,r.classList.add(`current`),r.scrollIntoView()}if(e.key===`ArrowUp`){if(e.preventDefault(),t?.parentNode!==n){let e=n.lastElementChild;if(!e){this.#n=null;return}this.#n=e,e.classList.add(`current`),e.scrollIntoView();return}let r=t.previousElementSibling;if(!r)return;t.classList.remove(`current`),this.#n=r,r.classList.add(`current`),r.scrollIntoView()}e.key===`Enter`&&(e.preventDefault(),t?.parentNode===n&&t.click())})}get options(){return this.#c}focus(){this.#a.focus()}set options(e){this.#c=e;let t=this.#o,n=this.#s;n.innerHTML=``;for(let t of e){let e=document.createElement(`div`);e.className=`option`,e.appendChild(document.createTextNode(`${Array(t.level||0).fill(` `).join(``)}${t.label}`||` `)),n.appendChild(e),e.addEventListener(`pointerdown`,e=>{e.preventDefault(),this.#f(t)}),e.addEventListener(`click`,e=>{e.preventDefault(),this.#f(t)}),e.addEventListener(`pointermove`,()=>{this.#n?.classList.remove(`current`),this.#n=e,e.classList.add(`current`)})}if(this.#n=n.firstElementChild,this.#n?.classList.add(`current`),t.scrollTop=0,t.scrollLeft=0,je(this.#a)){if(this.#a.value===this.current?.label)return;this.open=!0;return}let r=this.#t,i=this.#c.find(e=>e.value===r);if(i){if(i===this.#e)return;this.#e=i,this.#t=i.value,this.#a.value=i.label||``}}get active(){return je(this.#a)}#c=[];get current(){return this.#e}get value(){return this.#t}set value(e){if(e===this.#t)return;let t=this.#c.find(t=>t.value===e);if(!t){this.#e=null,this.#t=e,this.#a.value=e;return}t!==this.#e&&(this.#e=t,this.#t=t.value,this.#a.value=t.label||``)}#l(){this.dispatchEvent(new Event(`change`))}#u(){this.dispatchEvent(new Event(`input`))}#d(){this.open=!0,this.dispatchEvent(new Event(`focus`))}get text(){return this.#a.value}#f(e){this.#e=e,this.#t=e?.value,this.#a.value=e?.label||``,this.#l(),this.open=!1,this.#a.focus()}get open(){return this.getAttribute(`open`)!==null}set open(e){e?this.setAttribute(`open`,``):this.removeAttribute(`open`)}get disabled(){return this.getAttribute(`disabled`)!==null}set disabled(e){e?this.setAttribute(`disabled`,``):this.removeAttribute(`disabled`)}get readOnly(){return this.getAttribute(`readonly`)!==null}set readOnly(e){e?this.setAttribute(`readonly`,``):this.removeAttribute(`readonly`)}get required(){return this.getAttribute(`required`)!==null}set required(e){e?this.setAttribute(`required`,``):this.removeAttribute(`required`)}get placeholder(){return this.getAttribute(`placeholder`)||``}set placeholder(e){e?this.setAttribute(`placeholder`,e):this.removeAttribute(`placeholder`)}#p(){let e=this.#a.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight,r=t-e.right,i=n-e.bottom,{top:a,left:o,width:s,height:c}=e,l=this.#s.getBoundingClientRect(),u=l.width-2,d=l.height-2,f=this.#o;f.style.maxWidth=``,f.style.minWidth=``,f.style.top=`${a+c}px`,f.style.minWidth=`${s}px`,f.style.maxHeight=`${n-a-c-4}px`,u<=t-o?(f.style.left=`${o}px`,f.style.right=``):u<=t-o?(f.style.left=`${o}px`,f.style.right=`${t-o}px`):(f.style.left=`${Math.max(0,Math.min((u-s)/2,o))}px`,f.style.right=``);let p=0;d<=i-20?(p=1,f.style.top=`${a+c}px`,f.style.minWidth=`${s}px`,f.style.bottom=``):d<=a?(p=1,f.style.top=``,f.style.bottom=`${i+c}px`):Math.max(o,r-20)<Math.min(u,e.right-o)?i-20>=a?(p=1,f.style.top=`${a+c}px`,f.style.minWidth=`${s}px`,f.style.bottom=``):d<=a&&(p=1,f.style.top=``,f.style.bottom=`${i+c}px`):u<=r-20||o<=r-20?(f.style.left=`${o+s}px`,f.style.maxWidth=`${r}px`,f.style.right=``):(f.style.left=``,f.style.right=`${r+s}px`,f.style.maxWidth=`${o}px`),p?u<=t-o?(f.style.left=`${o}px`,f.style.right=``):u<=t-o?(f.style.left=`${o}px`,f.style.right=`${t-o}px`):(f.style.left=`${Math.max(0,Math.min((u-s)/2,o))}px`,f.style.right=``):d<=n-a?(f.style.top=`${a}px`,f.style.bottom=``):d<a+c?(f.style.top=``,f.style.bottom=`${n-a}px`):(f.style.top=`${Math.max(0,Math.min(n-d,a))}px`,f.style.bottom=`0`)}#m=!1;#h=null;#g(){if(Ae&&this.#o.showPopover(),this.#m)return;this.#m=!0;let e=this;this.#h=requestAnimationFrame(function t(){e.#p(),e.#m&&(e.#h=requestAnimationFrame(t))})}#_(){Ae&&this.#o.hidePopover(),this.#m&&(this.#m=!1,cancelAnimationFrame(this.#h))}#v=e=>{this.contains(e.target)||(this.open=!1)};#y=!1;connectedCallback(){document.addEventListener(`click`,this.#v),this.#y=!0,this.#x()}disconnectedCallback(){document.removeEventListener(`click`,this.#v),this.#y=!1,this.#x()}#b=!1;#x(){let e=!this.readOnly&&!this.disabled&&this.open&&this.#y;this.#b!==e&&(this.#b=e,e?this.#g():this.#_())}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case`open`:if(!this.#y)return;this.#x();return;case`placeholder`:this.#a.placeholder=n||``;return;case`readonly`:this.#a.readOnly=n!==null,this.#x();return;case`disabled`:this.#a.disabled=n!==null,this.#x();return}}static observedAttributes=[`open`,`placeholder`,`readonly`,`disabled`]};try{customElements.define(`yongdall-select`,Me)}catch{}var H=(e,t={})=>{let{inline:n,showLabel:r,quick:a}=e.style,o=document.createElement(n?`span`:`div`).appendChild(document.createElement(`label`)),s=o.appendChild(document.createElement(`yongdall-select`)),l=h(t),u=null;s.addEventListener(`change`,()=>{u=s.value||null,e.value=u});let d=null;function f(){d&&clearTimeout(d),d=setTimeout(()=>{},300)}s.addEventListener(`input`,f);let p=i(()=>{let e=[{value:``,label:``},...l.get()];return e.unshift({value:``,label:``}),e});return c(()=>{s.options=p.get()},e.signal),c(()=>{let t=e.value,n=t==``||t==null?null:t;n!==u&&(u=n,s.value=u||``)},e.signal),r?o.insertBefore(document.createTextNode(e.field?.label??``),o.firstChild):a&&(s.placeholder=e.field?.label??``),s},Ne=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,l=i(()=>new Set(_.get().flatMap(e=>e.children?.map(e=>e.value)||[])));function u(){l.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=s([]);function h(){a.innerHTML=``;let e=[];for(let{label:t,children:n}of _.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()}c(()=>h(),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 g=i(()=>!!(!e.editable||e.disabled));e.listen(`focus`,()=>r.focus()),e.listen(`scrollIntoView`,()=>r.scrollIntoView()),c(()=>r.hidden=!!e.hidden,e.signal),c(()=>{let e=g.get();n.hidden=e;for(let t of m.get())t.disabled=e},e.signal),c(()=>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 c(()=>v(e.value),e.signal),t},Pe=(t,n={})=>{function r(n){let r=t.store?.parent;if(!r||(r instanceof e&&(r=r.parent),!r))return null;let i=r,a=0;for(;n[a]===`?`;){a++;let t=i.parent;if(!t||(t instanceof e&&(t=t.parent),!t))break;i=t}for(;n[a]===`?`;)a++;let o=n.slice(a),s=i.child(o);return s?s.value:null}let i=l(n,r),a=null,o=null;async function s(e){if(typeof e==`string`)return m(e);if(!e||typeof e!=`object`)return null;let{component:t,widget:n}=e;return typeof t==`string`&&t||typeof n==`string`&&n?m(e):null}let u=document.createElement(`div`);async function d(e){if(t.signal.aborted||e===a)return;a=e,o?.abort(),o=new AbortController;let n=AbortSignal.any([o.signal,t.signal]),r=await s(e);typeof r==`function`&&(n.aborted||r({root:u,get store(){return t.store},get style(){return t.style},get field(){return t.field},get name(){return t.name},get value(){return t.value},set value(e){t.value=e},get current(){return t.current},get destroyed(){return t.destroyed},get readonly(){return t.readonly},get editable(){return t.editable},get required(){return t.required},get nullable(){return t.nullable},get disabled(){return t.disabled},get clearable(){return t.clearable},get hidden(){return t.hidden},get label(){return t.label},get placeholder(){return t.placeholder},get description(){return t.description},get signal(){return n},listen(e,n){return t.listen(e,n)},emit(e,n){return t.emit(e,n)}},typeof e==`object`&&e||{}))}let f=null;return c(()=>{let e=i.get()||null;f!==null&&cancelIdleCallback(f),f=requestIdleCallback(()=>{f=null,d(e)})},t.signal),u};function U(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 c(()=>s(t.value),t.signal),a}function Fe(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 Ie=U.bind(null,Fe);function Le(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?0:null}function Re(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(Le(r.value))),e=>{r.value=e??``}}var W=U.bind(null,Re);function ze(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?0:null}function Be(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(ze(r.value))),e=>{r.value=e??``}}var G=U.bind(null,Be);function Ve(e,t){if(!e)return t?0n:null;try{return BigInt(e)}catch{}return t?0n:null}function He(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(Ve(r.value))),e=>{r.value=e??``}}var K=U.bind(null,He);function Ue(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=U.bind(null,Ue),We=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}),c(()=>{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 Ge(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=U.bind(null,Ge);function Ke(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=U.bind(null,Ke);function qe(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=U.bind(null,qe);function Je(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 Ye=U.bind(null,Je);function Xe(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 Ze=U.bind(null,Xe),Qe=(e,t)=>{let{inline:n,showLabel:r,quick:i}=e.style,a=e.field?.model||``,o=document.createElement(n?`span`:`div`),l=o.appendChild(document.createElement(`label`));o.classList=`InputDocument`;let d=l.appendChild(document.createElement(`div`)),f=d.appendChild(document.createElement(`div`)),p=d.appendChild(document.createElement(`div`));f.classList=`InputDocument-placeholder`;let m=null,h=null,_=s(),y=null,ee=e.field?.label??``;if(f.innerText=i?ee:``,c(()=>{let e=_.get()||``;p.innerText=e,f.hidden=!!e},e.signal),c(async()=>{let t=e.value,n=t==``||t==null?null:t;if(m===n||(m=n,h=m,_.set(m||``),!m)||!a)return;let r=g(a),i=await r;if(!i)return;let o=i.labelPattern||``;if(!u(o).length)return;let{option:s}=await r.option(m);!s||m!==h||_.set(v(o,s)||m)},e.signal),r&&l.insertBefore(document.createTextNode(ee),l.firstChild),!a)return o;let te=g(a);return d.classList=`InputDocument-text`,d.tabIndex=0,d.addEventListener(`click`,async()=>{y?.abort(),y=new AbortController;let n=o.appendChild(document.createElement(`dialog`));n.showModal();try{let r=await Ce(null,n,te,AbortSignal.any([y.signal,e.signal]),!1,t),i=Array.isArray(r)?r[0]:r;if(!i){if(!e.value)return;m=``,h=null,e.value=null,_.set(``);return}let a=i.value;if(a===e.value)return;m=a,e.value=a,h=null,_.set(i.label||a)}finally{n.remove()}}),o};function $e(e){return i(()=>{let t=e.get().map(e=>[0,e]),n=[];for(let e;e=t.shift();){let[r,i]=e;n.push({...i,level:r});for(let e of i.children)t.push([r+1,e])}return n})}var Z=(e,t={})=>{let{inline:n,showLabel:r,quick:a}=e.style,o=document.createElement(n?`span`:`div`).appendChild(document.createElement(`label`)),s=o.appendChild(document.createElement(`select`)),l=h(t);s.addEventListener(`change`,()=>{e.value=s.value||null});let u=$e(l),d=i(()=>{let t=u.get();return[{value:``,label:a&&e.field?.label||``,disabled:!1,level:0},...t]});return c(()=>{s.innerHTML=``;for(let{value:e,label:t,disabled:n,level:r}of d.get()){let i=document.createElement(`option`);i.value=`${e}`,i.label=`${Array(r).fill(` `).join(``)}${t}`,n&&(i.disabled=n),s.appendChild(i)}s.value=e.value||``},e.signal),c(()=>{let t=e.value;s.value=(t==``||t==null?null:t)||``},e.signal),r&&o.insertBefore(document.createTextNode(e.field?.label??``),o.firstChild),s};function et(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 Q(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`?et(e)===et(t):e==t}function tt(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)=>!Q(n[t],e))<0)return!0}else for(let e of t)if(Q(n,e))return!0}else for(let n of e)if(Q(n,t))return!0;return!1}function nt(e,t){if(Array.isArray(t)){for(let n of e)if(Array.isArray(n)&&n.length===t.length&&t.findIndex((e,t)=>!Q(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(Q(e,t))return!0}return!1}function $(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 rt(e,t){return $((e,t)=>e>t,e,t)}function it(e,t){return $((e,t)=>e>=t,e,t)}function at(e,t){return $((e,t)=>e<t,e,t)}function ot(e,t){return $((e,t)=>e<=t,e,t)}const st=[{not:`!=`,notLabel:`≠`,value:tt,filters:{gt:{value:rt},ge:{value:it},lt:{value:at},le:{value:ot},in:{value:tt,not:`nin`}}},{array:!0,not:`!=`,notLabel:`≠`,value:nt,filters:{in:{value:nt,not:`nin`}}},{type:`text`,input:ce,filter:Ie,notFilter:Ie,filters:{ne:{filter:Ie,label:`≠`}}},{type:`string`,input:A,filter:q,notFilter:q,filters:{ne:{filter:q,label:`≠`}}},{type:`bool`,input:fe,filter:We,notFilter:We,filters:{ne:{filter:We,label:`≠`}}},{type:`f32`,input:C,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:C,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:C,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:C,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:C,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:E,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:E,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:ue,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:M,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:P,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:Ze,notFilter:Ze,filters:{ne:{filter:Ze,label:`≠`}}},{type:`datetime`,input:z,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:P,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:z,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:_e,filter:q,notFilter:q,filters:{ne:{filter:q,label:`≠`}}},{renderer:`uri`,input:ye,filter:Ye,notFilter:Ye,filters:{ne:{filter:Ye,label:`≠`}}},{renderer:`document`,input:we,filter:Qe,notFilter:Qe,filters:{ne:{filter:Qe,label:`≠`}}},{renderer:`select`,input:ke,filter:Z,notFilter:Z,filters:{ne:{filter:Z,label:`≠`}}},{renderer:`search`,input:H,filter:H,notFilter:H,filters:{ne:{filter:H,label:`≠`}}},{renderer:`configuration`,input:Pe},{type:`submodel`,array:!0,renderer:`permission`,input:Ne}],ct=[`style.css`];export{st as formFields,ct as styles};
68
+ `;let e=this.#a;e.type=`text`;let t=this.#o,n=this.#s;t.className=`dropdown`,n.className=`dropdown-list`,je&&t.setAttribute(`popover`,`manual`),e.addEventListener(`input`,()=>{this.#u()}),e.addEventListener(`focus`,()=>{this.#d()}),e.addEventListener(`blur`,()=>{let t=this.#e,n=e.value,r=this.required;if(!n){if(!t)return;if(r){e.value=t.label;return}this.#e=null,this.#t=null,this.#l();return}if(t?.label===n)return;let i=this.#c.find(e=>e.label===n);if(i){this.#e=i,this.#t=i.value,e.value=i.label,this.#l();return}if(!t){e.value=``;return}r?e.value=t.label:(e.value=``,this.#e=null,this.#t=null,this.#l())}),this.addEventListener(`keydown`,e=>{if(!this.#b)return;let t=this.#n;if(e.key===`ArrowDown`){if(e.preventDefault(),t?.parentNode!==n){let e=n.firstElementChild;if(!e){this.#n=null;return}this.#n=e,e.classList.add(`current`),e.scrollIntoView();return}let r=t.nextElementSibling;if(!r)return;t.classList.remove(`current`),this.#n=r,r.classList.add(`current`),r.scrollIntoView()}if(e.key===`ArrowUp`){if(e.preventDefault(),t?.parentNode!==n){let e=n.lastElementChild;if(!e){this.#n=null;return}this.#n=e,e.classList.add(`current`),e.scrollIntoView();return}let r=t.previousElementSibling;if(!r)return;t.classList.remove(`current`),this.#n=r,r.classList.add(`current`),r.scrollIntoView()}e.key===`Enter`&&(e.preventDefault(),t?.parentNode===n&&t.click())})}get options(){return this.#c}focus(){this.#a.focus()}set options(e){this.#c=e;let t=this.#o,n=this.#s;n.innerHTML=``;for(let t of e){let e=document.createElement(`div`);e.className=`option`,e.appendChild(document.createTextNode(`${Array(t.level||0).fill(` `).join(``)}${t.label}`||` `)),n.appendChild(e),e.addEventListener(`pointerdown`,e=>{e.preventDefault(),this.#f(t)}),e.addEventListener(`click`,e=>{e.preventDefault(),this.#f(t)}),e.addEventListener(`pointermove`,()=>{this.#n?.classList.remove(`current`),this.#n=e,e.classList.add(`current`)})}if(this.#n=n.firstElementChild,this.#n?.classList.add(`current`),t.scrollTop=0,t.scrollLeft=0,Me(this.#a)){if(this.#a.value===this.current?.label)return;this.open=!0;return}let r=this.#t,i=this.#c.find(e=>e.value===r);if(i){if(i===this.#e)return;this.#e=i,this.#t=i.value,this.#a.value=i.label||``}}get active(){return Me(this.#a)}#c=[];get current(){return this.#e}get value(){return this.#t}set value(e){if(e===this.#t)return;let t=this.#c.find(t=>t.value===e);if(!t){this.#e=null,this.#t=e,this.#a.value=e;return}t!==this.#e&&(this.#e=t,this.#t=t.value,this.#a.value=t.label||``)}#l(){this.dispatchEvent(new Event(`change`))}#u(){this.dispatchEvent(new Event(`input`))}#d(){this.open=!0,this.dispatchEvent(new Event(`focus`))}get text(){return this.#a.value}#f(e){this.#e=e,this.#t=e?.value,this.#a.value=e?.label||``,this.#l(),this.open=!1,this.#a.focus()}get open(){return this.getAttribute(`open`)!==null}set open(e){e?this.setAttribute(`open`,``):this.removeAttribute(`open`)}get disabled(){return this.getAttribute(`disabled`)!==null}set disabled(e){e?this.setAttribute(`disabled`,``):this.removeAttribute(`disabled`)}get readOnly(){return this.getAttribute(`readonly`)!==null}set readOnly(e){e?this.setAttribute(`readonly`,``):this.removeAttribute(`readonly`)}get required(){return this.getAttribute(`required`)!==null}set required(e){e?this.setAttribute(`required`,``):this.removeAttribute(`required`)}get placeholder(){return this.getAttribute(`placeholder`)||``}set placeholder(e){e?this.setAttribute(`placeholder`,e):this.removeAttribute(`placeholder`)}#p(){let e=this.#a.getBoundingClientRect(),t=window.innerWidth,n=window.innerHeight,r=t-e.right,i=n-e.bottom,{top:a,left:o,width:s,height:c}=e,l=this.#s.getBoundingClientRect(),u=l.width-2,d=l.height-2,f=this.#o;f.style.maxWidth=``,f.style.minWidth=``,f.style.top=`${a+c}px`,f.style.minWidth=`${s}px`,f.style.maxHeight=`${n-a-c-4}px`,u<=t-o?(f.style.left=`${o}px`,f.style.right=``):u<=t-o?(f.style.left=`${o}px`,f.style.right=`${t-o}px`):(f.style.left=`${Math.max(0,Math.min((u-s)/2,o))}px`,f.style.right=``);let p=0;d<=i-20?(p=1,f.style.top=`${a+c}px`,f.style.minWidth=`${s}px`,f.style.bottom=``):d<=a?(p=1,f.style.top=``,f.style.bottom=`${i+c}px`):Math.max(o,r-20)<Math.min(u,e.right-o)?i-20>=a?(p=1,f.style.top=`${a+c}px`,f.style.minWidth=`${s}px`,f.style.bottom=``):d<=a&&(p=1,f.style.top=``,f.style.bottom=`${i+c}px`):u<=r-20||o<=r-20?(f.style.left=`${o+s}px`,f.style.maxWidth=`${r}px`,f.style.right=``):(f.style.left=``,f.style.right=`${r+s}px`,f.style.maxWidth=`${o}px`),p?u<=t-o?(f.style.left=`${o}px`,f.style.right=``):u<=t-o?(f.style.left=`${o}px`,f.style.right=`${t-o}px`):(f.style.left=`${Math.max(0,Math.min((u-s)/2,o))}px`,f.style.right=``):d<=n-a?(f.style.top=`${a}px`,f.style.bottom=``):d<a+c?(f.style.top=``,f.style.bottom=`${n-a}px`):(f.style.top=`${Math.max(0,Math.min(n-d,a))}px`,f.style.bottom=`0`)}#m=!1;#h=null;#g(){if(je&&this.#o.showPopover(),this.#m)return;this.#m=!0;let e=this;this.#h=requestAnimationFrame(function t(){e.#p(),e.#m&&(e.#h=requestAnimationFrame(t))})}#_(){je&&this.#o.hidePopover(),this.#m&&(this.#m=!1,cancelAnimationFrame(this.#h))}#v=e=>{this.contains(e.target)||(this.open=!1)};#y=!1;connectedCallback(){document.addEventListener(`click`,this.#v),this.#y=!0,this.#x()}disconnectedCallback(){document.removeEventListener(`click`,this.#v),this.#y=!1,this.#x()}#b=!1;#x(){let e=!this.readOnly&&!this.disabled&&this.open&&this.#y;this.#b!==e&&(this.#b=e,e?this.#g():this.#_())}attributeChangedCallback(e,t,n){if(t!==n)switch(e){case`open`:if(!this.#y)return;this.#x();return;case`placeholder`:this.#a.placeholder=n||``;return;case`readonly`:this.#a.readOnly=n!==null,this.#x();return;case`disabled`:this.#a.disabled=n!==null,this.#x();return}}static observedAttributes=[`open`,`placeholder`,`readonly`,`disabled`]};try{customElements.define(`yongdall-select`,Ne)}catch{}var V=(e,t={})=>{let{inline:n,showLabel:r,quick:a}=e.style,o=document.createElement(n?`span`:`div`).appendChild(document.createElement(`label`)),s=o.appendChild(document.createElement(`yongdall-select`)),l=h(t),u=null;s.addEventListener(`change`,()=>{u=s.value||null,e.value=u});let d=null;function f(){d&&clearTimeout(d),d=setTimeout(()=>{},300)}s.addEventListener(`input`,f);let p=i(()=>{let e=[{value:``,label:``},...l.get()];return e.unshift({value:``,label:``}),e});return c(()=>{s.options=p.get()},e.signal),c(()=>{let t=e.value,n=t==``||t==null?null:t;n!==u&&(u=n,s.value=u||``)},e.signal),r?o.insertBefore(document.createTextNode(e.field?.label??``),o.firstChild):a&&(s.placeholder=e.field?.label??``),s},Pe=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,l=i(()=>new Set(_.get().flatMap(e=>e.children?.map(e=>e.value)||[])));function u(){l.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=s([]);function h(){a.innerHTML=``;let e=[];for(let{label:t,children:n}of _.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()}c(()=>h(),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 g=i(()=>!!(!e.editable||e.disabled));e.listen(`focus`,()=>r.focus()),e.listen(`scrollIntoView`,()=>r.scrollIntoView()),c(()=>r.hidden=!!e.hidden,e.signal),c(()=>{let e=g.get();n.hidden=e;for(let t of m.get())t.disabled=e},e.signal),c(()=>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 c(()=>v(e.value),e.signal),t},Fe=(t,n={})=>{function r(n){let r=t.store?.parent;if(!r||(r instanceof e&&(r=r.parent),!r))return null;let i=r,a=0;for(;n[a]===`?`;){a++;let t=i.parent;if(!t||(t instanceof e&&(t=t.parent),!t))break;i=t}for(;n[a]===`?`;)a++;let o=n.slice(a),s=i.child(o);return s?s.value:null}let i=l(n,r),a=null,o=null;async function s(e){if(typeof e==`string`)return m(e);if(!e||typeof e!=`object`)return null;let{component:t,widget:n}=e;return typeof t==`string`&&t||typeof n==`string`&&n?m(e):null}let u=document.createElement(`div`);async function d(e){if(t.signal.aborted||e===a)return;a=e,o?.abort(),o=new AbortController;let n=AbortSignal.any([o.signal,t.signal]),r=await s(e);typeof r==`function`&&(n.aborted||r({root:u,get store(){return t.store},get style(){return t.style},get field(){return t.field},get name(){return t.name},get value(){return t.value},set value(e){t.value=e},get current(){return t.current},get destroyed(){return t.destroyed},get readonly(){return t.readonly},get editable(){return t.editable},get required(){return t.required},get nullable(){return t.nullable},get disabled(){return t.disabled},get clearable(){return t.clearable},get hidden(){return t.hidden},get label(){return t.label},get placeholder(){return t.placeholder},get description(){return t.description},get signal(){return n},listen(e,n){return t.listen(e,n)},emit(e,n){return t.emit(e,n)}},typeof e==`object`&&e||{}))}let f=null;return c(()=>{let e=i.get()||null;f!==null&&cancelIdleCallback(f),f=requestIdleCallback(()=>{f=null,d(e)})},t.signal),u};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 c(()=>s(t.value),t.signal),a}function Ie(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,Ie);function Le(e,t){let n=parseFloat(e);return Number.isFinite(n)?n:t?0:null}function Re(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(Le(r.value))),e=>{r.value=e??``}}var W=H.bind(null,Re);function ze(e,t){let n=parseInt(e);return Number.isFinite(n)?n:t?0:null}function Be(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(ze(r.value))),e=>{r.value=e??``}}var G=H.bind(null,Be);function Ve(e,t){if(!e)return t?0n:null;try{return BigInt(e)}catch{}return t?0n:null}function He(e,t,n){let r=e.appendChild(document.createElement(`input`));return r.type=`number`,t&&(r.placeholder=t),r.addEventListener(`input`,()=>n(Ve(r.value))),e=>{r.value=e??``}}var K=H.bind(null,He);function Ue(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,Ue),We=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}),c(()=>{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 Ge(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,Ge);function Ke(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,Ke);function qe(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,qe);function Je(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 Ye=H.bind(null,Je);function Xe(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 Ze=H.bind(null,Xe),Qe=(e,t)=>{let{inline:n,showLabel:r,quick:i}=e.style,a=e.field?.model||``,o=document.createElement(n?`span`:`div`),l=o.appendChild(document.createElement(`label`));o.classList=`InputDocument`;let d=l.appendChild(document.createElement(`div`)),f=d.appendChild(document.createElement(`div`)),p=d.appendChild(document.createElement(`div`));f.classList=`InputDocument-placeholder`;let m=null,h=null,_=s(),y=null,ee=e.field?.label??``;if(f.innerText=i?ee:``,c(()=>{let e=_.get()||``;p.innerText=e,f.hidden=!!e},e.signal),c(async()=>{let t=e.value,n=t==``||t==null?null:t;if(m===n||(m=n,h=m,_.set(m||``),!m)||!a)return;let r=g(a),i=await r;if(!i)return;let o=i.labelPattern||``;if(!u(o).length)return;let{option:s}=await r.option(m);!s||m!==h||_.set(v(o,s)||m)},e.signal),r&&l.insertBefore(document.createTextNode(ee),l.firstChild),!a)return o;let te=g(a);return d.classList=`InputDocument-text`,d.tabIndex=0,d.addEventListener(`click`,async()=>{y?.abort(),y=new AbortController;let n=o.appendChild(document.createElement(`dialog`));n.showModal();try{let r=await we(null,n,te,AbortSignal.any([y.signal,e.signal]),!1,t),i=Array.isArray(r)?r[0]:r;if(!i){if(!e.value)return;m=``,h=null,e.value=null,_.set(``);return}let a=i.value;if(a===e.value)return;m=a,e.value=a,h=null,_.set(i.label||a)}finally{n.remove()}}),o};function $e(e){return i(()=>{let t=e.get().map(e=>[0,e]),n=[];for(let e;e=t.shift();){let[r,i]=e;n.push({...i,level:r});for(let e of i.children)t.push([r+1,e])}return n})}var Z=(e,t={})=>{let{inline:n,showLabel:r,quick:a}=e.style,o=document.createElement(n?`span`:`div`).appendChild(document.createElement(`label`)),s=o.appendChild(document.createElement(`select`)),l=h(t);s.addEventListener(`change`,()=>{e.value=s.value||null});let u=$e(l),d=i(()=>{let t=u.get();return[{value:``,label:a&&e.field?.label||``,disabled:!1,level:0},...t]});return c(()=>{s.innerHTML=``;for(let{value:e,label:t,disabled:n,level:r}of d.get()){let i=document.createElement(`option`);i.value=`${e}`,i.label=`${Array(r).fill(` `).join(``)}${t}`,n&&(i.disabled=n),s.appendChild(i)}s.value=e.value||``},e.signal),c(()=>{let t=e.value;s.value=(t==``||t==null?null:t)||``},e.signal),r&&o.insertBefore(document.createTextNode(e.field?.label??``),o.firstChild),s};function et(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 Q(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`?et(e)===et(t):e==t}function tt(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)=>!Q(n[t],e))<0)return!0}else for(let e of t)if(Q(n,e))return!0}else for(let n of e)if(Q(n,t))return!0;return!1}function nt(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 rt(e,t){if(Array.isArray(t)){for(let n of e)if(Array.isArray(n)&&n.length===t.length&&t.findIndex((e,t)=>!Q(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(Q(e,t))return!0}return!1}function $(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 it(e,t){return $((e,t)=>e>t,e,t)}function at(e,t){return $((e,t)=>e>=t,e,t)}function ot(e,t){return $((e,t)=>e<t,e,t)}function st(e,t){return $((e,t)=>e<=t,e,t)}const ct=[{not:`!=`,notLabel:`≠`,value:tt,filters:{gt:{value:it},ge:{value:at},lt:{value:ot},le:{value:st},in:{value:tt,not:`nin`},contains:{value:nt}}},{array:!0,not:`!=`,notLabel:`≠`,value:rt,filters:{in:{value:rt,not:`nin`}}},{type:`text`,input:ce,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:k,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:pe,filter:We,notFilter:We,filters:{ne:{filter:We,label:`≠`}}},{type:`f32`,input:C,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:C,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:C,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:C,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:C,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:E,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:E,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:de,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:j,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:N,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:Ce,filter:Ze,notFilter:Ze,filters:{ne:{filter:Ze,label:`≠`}}},{type:`datetime`,input:R,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:N,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:R,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:ve,filter:q,notFilter:q,filters:{ne:{filter:q,label:`≠`}}},{renderer:`uri`,input:be,filter:Ye,notFilter:Ye,filters:{ne:{filter:Ye,label:`≠`}}},{renderer:`document`,input:Te,filter:Qe,notFilter:Qe,filters:{ne:{filter:Qe,label:`≠`}}},{renderer:`select`,input:Ae,filter:Z,notFilter:Z,filters:{ne:{filter:Z,label:`≠`}}},{renderer:`search`,input:V,filter:V,notFilter:V,filters:{ne:{filter:V,label:`≠`}}},{renderer:`configuration`,input:Fe},{type:`submodel`,array:!0,renderer:`permission`,input:Pe}],lt=[`style.css`];export{ct as formFields,lt as styles};
69
69
  //# 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","toTree","Component","#shadowRoot","#dropdown","#style","#input","#dropdownList","#onInput","#onFocus","#current","#currentValue","#onSelect","#list","#open","#currentNode","#selectItem","#running","#r","#move","#clickOther","#mounted","#updateOpen","#openDropdown","#closeDropdown","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","selectInput","selectFilter","searchInput","searchFilter","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/select.mjs","../../packages/theme/inputs/YongdallSelect.mjs","../../packages/theme/filters/search.mjs","../../packages/theme/inputs/permissions.mjs","../../packages/theme/inputs/configuration.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 { Store } from '@yongdall/web' */\nimport { 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';\n/** @import { FieldScriptConfiguration } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nimportStyle('@neeloong/table/style.css');\n\n\n\n/**\n * \n * @param {Store?} store \n * @param {HTMLElement} root \n * @param {ReturnType<typeof modelService>} service \n * @param {AbortSignal} signal \n * @param {boolean} multiple \n * @param {Record<string, any>} [componentOptions] \n */\nexport default async function selectDocument(store, root, service, signal, multiple, componentOptions) {\n\tconst signalPromise = waitAbortSignal(signal, true);\n\tconst modelDefine = await Promise.race([service.loadScript(), signalPromise]);\n\tif (!modelDefine) { return Promise.reject(); }\n\n\t/** @type {{field?: string; label?: string; width?: number; pattern?: string}[]?} */\n\tconst showFields = componentOptions?.fields;\n\t/** @type {{ field: string; label?: string; operator: string; }[]} */\n\tconst queryFilterFields = componentOptions?.queryFilters || [];\n\n\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst search = Search.parse(componentOptions?.filter);\n\n\tconst searchState1 = createComputed(() => Search.fill(search.where, getPlaceholder));\n\tconst searchState2 = createComputed(() => Search.fill(search.orWhere, getPlaceholder));\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 = 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\tconst footer = root.appendChild(document.createElement('div'));\n\n\n\n\n\tconst idKey = '_';\n\tconst source = new Source({ idKey, parentKey: 'parent' });\n\tsource.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\tconst labelPattern = modelDefine.labelPattern || '';\n\n\t/** @type {{name: string; width?: number; title: string; field: FieldScriptConfiguration}[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label } 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({ name: field, width: width || undefined, title: label || f.label || '', field: f });\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(() => source.setValue(documents.get()), signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tlet f = createShowField(name, field, {}, 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, {}, c.data);\n\t\t\t\t\troot.appendChild(f.root);\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 = source.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) { 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() || [], ...searchState1.get() || []],\n\t\t\t\tor: searchState2.get(),\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(), root).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\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 = source.checked;\n\t\t\tif (!checked.length) { return resolve([]); }\n\t\t} else {\n\t\t\tconst selected = source.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}));\n\t\tresolve(multiple ? options : options[0]);\n\t}));\n\tmenus.appendChild(createButton('取消', () => {\n\t\treject();\n\t}));\n\n\tqueryFilters.classList.add('QueryFilters');\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\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.race([promise, signalPromise]).finally(() => {\n\t\theader.remove();\n\t\tbody.remove();\n\t\tfooter.remove();\n\n\t});\n}\n","/** @import { FieldComponent } 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 {FieldComponent} */\nconst Component = (ctx, componentOptions) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store || null;\n\tconst modelName = ctx.field?.model || '';\n\tconst model = modelService(modelName);\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 = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = 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\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\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\tconst modelConfiguration = await model;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await model.option(value);\n\t\tif (!option || value !== currentValue) { return; }\n\t\tvalueState.set(runPattern(labelPattern, option) || 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\tconst dialog = root.appendChild(document.createElement('dialog'));\n\t\tdialog.showModal();\n\t\ttry {\n\t\t\tconst val = await selectDocument(store, dialog, model, AbortSignal.any([ac.signal, ctx.signal]), false, componentOptions);\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\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\tvalueState.set(result.label || newValue);\n\t\t\tctx.emit('change', null);\n\t\t} finally {\n\t\t\tdialog.remove();\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\n\t// input.addEventListener('change', (e) => ctx.emit('change', e));\n\t// input.addEventListener('focus', (e) => ctx.emit('focus', e));\n\t// input.addEventListener('blur', (e) => ctx.emit('blur', e));\n\t// ctx.listen('focus', () => input.focus());\n\t// effect(() => input.hidden = Boolean(ctx.hidden), ctx.signal);\n\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent, Option, State, Store } from '@yongdall/web' */\nimport { ArrayStore, createComputed, createState, effect, loadOptions, ObjectStore } from '@yongdall/web';\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toLabels(options) {\n\treturn createComputed(() => {\n\t\tconst queue = [...options.get()];\n\t\t/** @type {Record<string, string>} */\n\t\tconst labels = Object.create(null);\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst children = item.children;\n\t\t\tlabels[item.value] = item.label;\n\t\t\tfor (const c of children) {\n\t\t\t\tqueue.push(c);\n\t\t\t}\n\t\t}\n\t\treturn labels;\n\t});\n}\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toTree(options) {\n\treturn createComputed(() => {\n\t\t/** @type {[level: number, option: Option][]} */\n\t\tconst queue = options.get().map(v => [0, v]);\n\t\t/** @type {(Option & {level: number})[]} */\n\t\tconst list = [];\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst [level, option] = item;\n\t\t\tlist.push({ ...option, level });\n\t\t\tfor (const c of option.children) {\n\t\t\t\tqueue.push([level + 1, c]);\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t});\n}\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toValueMap(options) {\n\treturn createComputed(() => {\n\t\tconst queue = [...options.get()];\n\t\t/** @type {Record<string, any>} */\n\t\tconst values = Object.create(null);\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst children = item.children;\n\t\t\tvalues[item.value] = item.data;\n\t\t\tfor (const c of children) {\n\t\t\t\tqueue.push(c);\n\t\t\t}\n\t\t}\n\t\treturn values;\n\t});\n}\n\n/**\n * \n * @param {Store?} [store] \n * @param {Record<string, string>?} [bind] \n * @returns {Iterable<(data: Record<string, any>) => void>}\n */\nfunction* getBindFns(store, bind) {\n\tif (!store) { return; }\n\tif (!bind || typeof bind === 'object') { return; }\n\tlet parent = store.parent;\n\tif (!(parent instanceof ObjectStore)) { return; }\n\tfor (const [k, v] of Object.entries(bind)) {\n\t\tconst current = parent.child(k);\n\t\tif (!current) { continue; }\n\t\tif (typeof v === 'string') {\n\t\t\tyield d => current.value = d[v];\n\t\t}\n\t}\n}\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store;\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\tconst labels = toLabels(loadOptions(componentOptions, false));\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 = labels.get()[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 ? '' : v;\n\t\t\tif (vv === value) { 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\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst options = loadOptions(componentOptions, getPlaceholder);\n\n\t// TODO: 过滤\n\tconst values = toValueMap(options);\n\tconst input = document.createElement('select');\n\t/** @type {((data: Record<string, any>) => void)[]} */\n\tlet bindFns = [...getBindFns(store, componentOptions.bind)];\n\n\tinput.addEventListener('change', () => {\n\t\tconst val = input.value || null;\n\t\tctx.value = val;\n\t\tif (!val) { return; }\n\t\tif (!bindFns.length) { return; }\n\t\tconst allData = values.get();\n\t\tconst data = Object.hasOwn(allData, val) && allData[val];\n\t\tif (!data || typeof data !== 'object') { return; }\n\t\tfor (const fn of bindFns) {\n\t\t\tfn(data);\n\t\t}\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 tree = toTree(options);\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = tree.get();\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\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tinput.value = vv || '';\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\n\treturn input;\n};\n\nexport default Component;\n","\nconst supportsPopover = HTMLElement.prototype.hasOwnProperty(\"popover\");\nconst style =`\\\n:host {\n\tdisplay: contents;\n}\n\ninput {\n\tblock-size: inherit;\n\tinline-size: inherit;\n\tmax-block-size: inherit;\n\tmin-block-size: inherit;\n\tmax-inline-size: inherit;\n\tmin-inline-size: inherit;\n\tfont-size: inherit;\n\tbackground-color: inherit;\n\tborder-radius: inherit;\n\tcursor: text;\n\tpadding: inherit;\n\tborder: inherit;\n\tmargin: inherit;\n\toutline: inherit;\n\tbox-sizing: border-box;\n\n\tline-height: inherit;\n}\n\n.dropdown {\n\tposition: fixed;\n\tbackground: white;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tmargin: 0;\n\tinset: unset;\n\theight: auto;\n\twidth: auto;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tz-index: 999;\n\tdisplay: none;\n\tbox-sizing: border-box;\n\tborder: 1px solid #ddd;\n}\n.dropdown-list {\n\toverflow-y: visible;\n\toverflow-x: visible;\n}\n\n:host([open]) .dropdown {\n\tdisplay: block;\n}\n\n\n.option {\n\tcursor: pointer;\n\tbackground: Canvas;\n\tcolor: CanvasText;\n\toverflow-x: hidden;\n}\n\n.option:hover {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n}\n.current {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n\n}\n\n`\n/**\n * \n * @param {Node} el \n */\nfunction isActive(el) {\n\tlet e = el\n\twhile(e) {\n\t\tlet root = e.getRootNode();\n\t\tif (!root) { return false; }\n\t\tif (root === document) {\n\t\t\treturn document.activeElement === e;\n\t\t}\n\t\tif (!(root instanceof ShadowRoot)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (root.activeElement !== e) {\n\t\t\treturn false;\n\t\t}\n\t\tconst host = root.host;\n\t\tif (!host) { return false; }\n\t\te = host;\n\t}\n}\nexport default class Select extends HTMLElement {\n\t/** @type {{label: string; value: any; level?: any; data?: any}?} */\n\t#current = null;\n\t/** @type {any} */\n\t#currentValue = null;\n\t/** @type {Element?} */\n\t#currentNode = null;\n\t#shadowRoot = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadowRoot.appendChild(document.createElement('style'));\n\t#input = this.#shadowRoot.appendChild(document.createElement('input'));\n\t#dropdown = this.#shadowRoot.appendChild(document.createElement('div'));\n\t#dropdownList = this.#dropdown.appendChild(document.createElement('div'));\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#style.textContent = style;\n\t\tconst input = this.#input;\n\t\tinput.type = 'text'\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdown.className = 'dropdown'\n\t\tdropdownList.className = 'dropdown-list'\n\t\tif (supportsPopover) {\n\t\t\tdropdown.setAttribute('popover', \"manual\");\n\t\t}\n\n\n\t\t// 输入事件处理 \n\t\tinput.addEventListener('input', () => { this.#onInput(); });\n\t\tinput.addEventListener('focus', () => { this.#onFocus(); });\n\t\tinput.addEventListener('blur', () => {\n\t\t\tconst current = this.#current;\n\t\t\tconst value = input.value;\n\t\t\tconst required = this.required;\n\t\t\tif (!value) {\n\t\t\t\tif (!current) { return; }\n\t\t\t\tif (required) {\n\t\t\t\t\tinput.value = current.label;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (current?.label === value) { return; }\n\t\t\tconst item = this.#list.find(v => v.label === value);\n\t\t\tif (item) {\n\t\t\t\tthis.#current = item;\n\t\t\t\tthis.#currentValue = item.value;\n\t\t\t\tinput.value = item.label;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!current) {\n\t\t\t\tinput.value = '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (required) {\n\t\t\t\tinput.value = current.label;\n\t\t\t} else {\n\t\t\t\tinput.value = '';\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t}\n\t\t})\n\n\n\t\t// 键盘导航 \n\t\tthis.addEventListener('keydown', (e) => {\n\t\t\tif (!this.#open) { return; }\n\t\t\t\n\t\t\tconst currentNode = this.#currentNode;\n\n\t\t\tif (e.key === 'ArrowDown') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.firstElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.nextElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\n\t\t\tif (e.key === 'ArrowUp') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.lastElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.previousElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode === dropdownList) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tcurrentNode.click();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tget options() {\n\t\treturn this.#list;\n\t}\n\tfocus() {\n\t\tthis.#input.focus();\n\t}\n\tset options(items) {\n\t\tthis.#list = items;\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdownList.innerHTML = '';\n\t\tfor (const item of items) {\n\t\t\tconst option = document.createElement('div');\n\t\t\toption.className = 'option';\n\t\t\toption.appendChild(document.createTextNode(`${Array(item.level || 0).fill(' ').join('')}${item.label}` || ' '));\n\t\t\tdropdownList.appendChild(option);\n\t\t\toption.addEventListener('pointerdown', (e) => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.#selectItem(item)\n\t\t\t});\n\t\t\toption.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.#selectItem(item);\n\t\t\t});\n\t\t\toption.addEventListener('pointermove', () => {\n\t\t\t\tthis.#currentNode?.classList.remove('current');\n\t\t\t\tthis.#currentNode = option;\n\t\t\t\toption.classList.add('current');\n\t\t\t});\n\t\t}\n\t\tthis.#currentNode = dropdownList.firstElementChild;\n\t\tthis.#currentNode?.classList.add('current');\n\t\tdropdown.scrollTop = 0;\n\t\tdropdown.scrollLeft = 0;\n\t\tif (isActive(this.#input)) {\n\t\t\tif (this.#input.value === this.current?.label) { return }\n\t\t\tthis.open = true;\n\t\t\treturn;\n\t\t}\n\t\tconst currentValue = this.#currentValue;\n\t\tconst item = this.#list.find(it => it.value === currentValue);\n\t\tif (item) {\n\t\t\tif (item === this.#current) { return; }\n\t\t\tthis.#current = item;\n\t\t\tthis.#currentValue = item.value;\n\t\t\tthis.#input.value = item.label || '';\n\t\t}\n\t}\n\tget active() { return isActive(this.#input); }\n\t/** @type {{label: string; value: any; level?: any; data?: any}[]} */\n\t#list = [];\n\tget current() { return this.#current; }\n\tget value() { return this.#currentValue; }\n\tset value(v) {\n\t\tif (v === this.#currentValue) { return; }\n\t\tconst item = this.#list.find(it => it.value === v);\n\t\tif (!item) {\n\t\t\tthis.#current = null;\n\t\t\tthis.#currentValue = v;\n\t\t\tthis.#input.value = v;\n\t\t\treturn;\n\t\t}\n\t\tif (item === this.#current) { return; }\n\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item.value;\n\t\tthis.#input.value = item.label || '';\n\t}\n\t#onSelect() {\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t#onInput() {\n\t\tthis.dispatchEvent(new Event('input'));\n\t}\n\t#onFocus() {\n\t\tthis.open = true;\n\t\tthis.dispatchEvent(new Event('focus'));\n\t}\n\tget text() {\n\t\treturn this.#input.value;\n\t}\n\n\n\t/**\n\t * \n\t * @param {{label: string; value: any; level?: any; data?: any}} item \n\t */\n\t#selectItem(item) {\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item?.value;\n\t\tthis.#input.value = item?.label || '';\n\t\tthis.#onSelect();\n\t\tthis.open = false;\n\t\tthis.#input.focus();\n\t}\n\n\tget open() { return this.getAttribute('open') !== null; }\n\tset open(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('open', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('open');\n\t\t}\n\t}\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\tget readOnly() { return this.getAttribute('readonly') !== null; }\n\tset readOnly(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('readonly', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('readonly');\n\t\t}\n\t}\n\tget required() { return this.getAttribute('required') !== null; }\n\tset required(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('required', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('required');\n\t\t}\n\t}\n\tget placeholder() { return this.getAttribute('placeholder') || ''; }\n\tset placeholder(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('placeholder', v);\n\t\t} else {\n\t\t\tthis.removeAttribute('placeholder');\n\t\t}\n\t}\n\t#move() {\n\t\tconst inputRect = this.#input.getBoundingClientRect();\n\n\t\tconst innerWidth = window.innerWidth;\n\t\tconst innerHeight = window.innerHeight;\n\n\t\tconst right = innerWidth - inputRect.right;\n\t\tconst bottom = innerHeight - inputRect.bottom;\n\t\tconst {top, left, width: aWidth, height: aHeight} = inputRect;\n\t\tconst dropdownRect = this.#dropdownList.getBoundingClientRect();\n\t\tconst width = dropdownRect.width - 2;\n\t\tconst height = dropdownRect.height - 2;\n\t\tconst dropdown = this.#dropdown;\n\t\tdropdown.style.maxWidth = ``;\n\t\tdropdown.style.minWidth = ``;\n\n\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\tdropdown.style.maxHeight = `${innerHeight - top - aHeight - 4}px`;\n\t\tif (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else if (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t} else {\n\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t}\n\n\n\t\tlet p = 0;\n\t\tif (height <= bottom - 20) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t} else if (Math.max(left, (right - 20)) < Math.min(width, inputRect.right - left)) {\n\t\t\tif (bottom - 20 >= top) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t}\n\t\t} else if (width <= (right - 20) || left <= (right - 20)) {\n\t\t\t// 右侧\n\t\t\tdropdown.style.left = `${left + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${right}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else {\n\t\t\t// 左侧\n\t\t\tdropdown.style.left = ``;\n\t\t\tdropdown.style.right = `${right + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${left}px`;\n\t\t}\n\t\tif (p) {\n\t\t\t\n\t\t\tif (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t} else if (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t}\n\t\t} else {\n\t\t\tif (height <= innerHeight - top) {\n\t\t\t\tdropdown.style.top = `${top}px`;\n\t\t\t\tdropdown.style.bottom = ``;\n\t\t\t} else if (height < top + aHeight) {\n\t\t\t\tdropdown.style.top = ``;\n\t\t\t\tdropdown.style.bottom = `${innerHeight - top}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.top = `${Math.max(0, Math.min(innerHeight - height, top))}px`;\n\t\t\t\tdropdown.style.bottom = `0`;\n\t\t\t}\n\t\t}\n\t}\n\n\t\n\t#running = false;\n\t/** @type {any} */\n\t#r = null;\n\t#openDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.showPopover();\n\t\t}\n\t\tif (this.#running) { return }\n\t\tthis.#running = true;\n\t\tconst that = this;\n\t\tthis.#r = requestAnimationFrame(function raf() {\n\t\t\tthat.#move();\n\t\t\tif (!that.#running) { return }\n\t\t\tthat.#r = requestAnimationFrame(raf);\n\t\t})\n\t}\n\n\t#closeDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.hidePopover();\n\t\t}\n\t\tif (!this.#running) { return }\n\t\tthis.#running = false;\n\t\tcancelAnimationFrame(this.#r);\n\t}\n\n\t/**\n\t * \n\t * @param {Event} e \n\t */\n\t#clickOther = (e) => {\n\t\t// @ts-ignore\n\t\tif (this.contains(e.target)) { return; }\n\t\tthis.open = false;\n\t}\n\t#mounted = false;\n\tconnectedCallback() {\n\t\tdocument.addEventListener('click', this.#clickOther);\n\t\tthis.#mounted = true;\n\t\tthis.#updateOpen();\n\t}\n\tdisconnectedCallback() {\n\t\tdocument.removeEventListener('click', this.#clickOther);\n\t\tthis.#mounted = false;\n\t\tthis.#updateOpen();\n\t}\n\t#open = false;\n\t#updateOpen() {\n\t\tconst status = !this.readOnly && !this.disabled && this.open && this.#mounted;\n\t\tif (this.#open === status) { return; }\n\t\tthis.#open = status\n\t\tif (status) {\n\t\t\tthis.#openDropdown();\n\t\t} else {\n\t\t\tthis.#closeDropdown();\n\t\t}\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.#mounted) { return; }\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'placeholder': {\n\t\t\t\tthis.#input.placeholder = newVal || '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'readonly': {\n\t\t\t\tthis.#input.readOnly = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tthis.#input.disabled = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\tstatic observedAttributes = ['open', 'placeholder', 'readonly', 'disabled'];\n}\n\ntry {\n\tcustomElements.define('yongdall-select', Select);\n} catch {\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { createComputed, effect, loadOptions } from '@yongdall/web';\nimport '../inputs/YongdallSelect.mjs';\n/** @import Select from '../inputs/YongdallSelect.mjs' */\n\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions = {}) => {\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 = /** @type {Select} */(label.appendChild(document.createElement('yongdall-select')));\n\tconst options = loadOptions(componentOptions);\n\n\n\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\n\t/** @type {NodeJS.Timeout?} */\n\tlet timeout = null;\n\n\tlet loaded = false;\n\tfunction toQuery() {\n\t\tloaded = true;\n\t\tif (timeout) { clearTimeout(timeout); }\n\t\ttimeout = setTimeout(() => {\n\t\t\t// TODO: 基于搜索项目过滤\n\t\t}, 300);\n\n\t}\n\tinput.addEventListener('input', toQuery);\n\n\n\t// TODO: 过滤\n\tconst currentOptions = createComputed(() => {\n\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\tconst list = [{ value: '', label: '' }, ...options.get()];\n\t\tlist.unshift({ value: '', label: '' });\n\t\t\treturn list;\n\t});\n\n\n\n\t\n\teffect(() => { input.options = currentOptions.get() }, ctx.signal);\n\teffect(() => {\n\t\tconst v = ctx.value;\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.value = value || '';\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\tinput.placeholder = ctx.field?.label ?? '';\n\t}\n\n\treturn input;\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 { FieldComponent, ConfiguratorComponent } from '@yongdall/web' */\nimport { ArrayStore, effect, findConfigurator, importWidget } from '@yongdall/web';\n\n\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst configurator = findConfigurator(componentOptions, getPlaceholder);\n\t/** @type {any} */\n\tlet currentConfigurator = null;\n\n\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\t/**\n\t * \n\t * @param {any} configurator \n\t * @returns {Promise<ConfiguratorComponent | null | undefined>}\n\t */\n\tasync function getWidget(configurator) {\n\t\tif (typeof configurator === 'string') {\n\t\t\treturn importWidget(configurator);\n\t\t}\n\t\tif (!configurator || typeof configurator !== 'object') { return null; }\n\t\tconst { component, widget } = configurator\n\t\tconst id = typeof component === 'string' && component\n\t\t|| typeof widget === 'string' && widget;\n\t\tif (!id) { return null; }\n\t\treturn importWidget(configurator);\n\t}\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 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}, typeof configurator === 'object' && configurator || {});\n\n\t}\n\n\n\t/** @type {number?} */\n\tlet idleId = null;\n\teffect(() => {\n\t\tconst cfg = configurator.get() || 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 { 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, componentOptions) => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst modelName = ctx.field?.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\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 (!modelName) { return; }\n\t\tconst model = modelService(modelName);\n\t\tconst modelConfiguration = await model;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await model.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 (!modelName) { return root; }\n\tconst model = modelService(modelName);\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 dialog = root.appendChild(document.createElement('dialog'));\n\t\tdialog.showModal();\n\t\ttry {\n\t\t\tconst val = await selectDocument(null, dialog, model, AbortSignal.any([ac.signal, ctx.signal]), false, componentOptions);\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\tvalue = '';\n\t\t\t\tcurrentValue = null;\n\t\t\t\tctx.value = null;\n\t\t\t\tvalueState.set('');\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\tvalueState.set(result.label || newValue);\n\t\t} finally {\n\t\t\tdialog.remove();\n\n\t\t}\n\n\t});\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent, Option, State } from '@yongdall/web' */\nimport { createComputed, effect, loadOptions } from '@yongdall/web';\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toTree(options) {\n\treturn createComputed(() => {\n\t\t/** @type {[level: number, option: Option][]} */\n\t\tconst queue = options.get().map(v => [0, v]);\n\t\t/** @type {(Option & {level: number})[]} */\n\t\tconst list = [];\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst [level, option] = item;\n\t\t\tlist.push({ ...option, level });\n\t\t\tfor (const c of option.children) {\n\t\t\t\tqueue.push([level + 1, c]);\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t});\n}\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions = {}) => {\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\tconst options = loadOptions(componentOptions);\n\n\n\tinput.addEventListener('change', () => {\n\t\tctx.value = input.value || null;\n\t});\n\n\n\tconst tree = toTree(options);\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = tree.get();\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 selectInput from './inputs/select.mjs';\nimport searchInput from './filters/search.mjs';\nimport permissionsInput from './inputs/permissions.mjs';\nimport configurationInput from './inputs/configuration.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 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{ not: '!=', notLabel: '≠', value: eq, filters: {\n\t\tgt: {value: gt},\n\t\tge: {value: ge},\n\t\tlt: {value: lt},\n\t\tle: {value: le},\n\t\tin: {value: eq, not: 'nin'},\n\t}},\n\t{ array: true, not: '!=', notLabel: '≠', value: eqArray, filters: {\n\t\tin: {value: eqArray, not: 'nin'},\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}\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}\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{\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: 'search', input: searchInput, filter: searchFilter, notFilter: searchFilter, filters: {\n\t\t\tne: { filter: searchFilter, label: '≠' },\n\t\t}\n\t},\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","toTree","Component","#shadowRoot","#dropdown","#style","#input","#dropdownList","#onInput","#onFocus","#current","#currentValue","#onSelect","#list","#open","#currentNode","#selectItem","#running","#r","#move","#clickOther","#mounted","#updateOpen","#openDropdown","#closeDropdown","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","selectInput","selectFilter","searchInput","searchFilter","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/select.mjs","../../packages/theme/inputs/YongdallSelect.mjs","../../packages/theme/filters/search.mjs","../../packages/theme/inputs/permissions.mjs","../../packages/theme/inputs/configuration.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 { Store } from '@yongdall/web' */\nimport { 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';\n/** @import { FieldScriptConfiguration } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nimportStyle('@neeloong/table/style.css');\n\n\n\n/**\n * \n * @param {Store?} store \n * @param {HTMLElement} root \n * @param {ReturnType<typeof modelService>} service \n * @param {AbortSignal} signal \n * @param {boolean} multiple \n * @param {Record<string, any>} [componentOptions] \n */\nexport default async function selectDocument(store, root, service, signal, multiple, componentOptions) {\n\tconst signalPromise = waitAbortSignal(signal, true);\n\tconst modelDefine = await Promise.race([service.loadScript(), signalPromise]);\n\tif (!modelDefine) { return Promise.reject(); }\n\n\t/** @type {{field?: string; label?: string; width?: number; pattern?: string}[]?} */\n\tconst showFields = componentOptions?.fields;\n\t/** @type {{ field: string; label?: string; operator: string; }[]} */\n\tconst queryFilterFields = componentOptions?.queryFilters || [];\n\n\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst search = Search.parse(componentOptions?.filter);\n\n\tconst searchState1 = createComputed(() => Search.fill(search.where, getPlaceholder));\n\tconst searchState2 = createComputed(() => Search.fill(search.orWhere, getPlaceholder));\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 = 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\tconst footer = root.appendChild(document.createElement('div'));\n\n\n\n\n\tconst idKey = '_';\n\tconst source = new Source({ idKey, parentKey: 'parent' });\n\tsource.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\tconst labelPattern = modelDefine.labelPattern || '';\n\n\t/** @type {{name: string; width?: number; title: string; field: FieldScriptConfiguration}[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label } 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({ name: field, width: width || undefined, title: label || f.label || '', field: f });\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(() => source.setValue(documents.get()), signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tlet f = createShowField(name, field, {}, 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, {}, c.data);\n\t\t\t\t\troot.appendChild(f.root);\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 = source.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) { 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() || [], ...searchState1.get() || []],\n\t\t\t\tor: searchState2.get(),\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(), root).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\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 = source.checked;\n\t\t\tif (!checked.length) { return resolve([]); }\n\t\t} else {\n\t\t\tconst selected = source.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}));\n\t\tresolve(multiple ? options : options[0]);\n\t}));\n\tmenus.appendChild(createButton('取消', () => {\n\t\treject();\n\t}));\n\n\tqueryFilters.classList.add('QueryFilters');\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\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.race([promise, signalPromise]).finally(() => {\n\t\theader.remove();\n\t\tbody.remove();\n\t\tfooter.remove();\n\n\t});\n}\n","/** @import { FieldComponent } 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 {FieldComponent} */\nconst Component = (ctx, componentOptions) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store || null;\n\tconst modelName = ctx.field?.model || '';\n\tconst model = modelService(modelName);\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 = null;\n\t/** @type {string?} */\n\tlet currentValue = null;\n\tconst valueState = 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\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\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\tconst modelConfiguration = await model;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await model.option(value);\n\t\tif (!option || value !== currentValue) { return; }\n\t\tvalueState.set(runPattern(labelPattern, option) || 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\tconst dialog = root.appendChild(document.createElement('dialog'));\n\t\tdialog.showModal();\n\t\ttry {\n\t\t\tconst val = await selectDocument(store, dialog, model, AbortSignal.any([ac.signal, ctx.signal]), false, componentOptions);\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\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\tvalueState.set(result.label || newValue);\n\t\t\tctx.emit('change', null);\n\t\t} finally {\n\t\t\tdialog.remove();\n\t\t\tctx.emit('blur', null);\n\n\t\t}\n\n\t});\n\n\t// input.addEventListener('change', (e) => ctx.emit('change', e));\n\t// input.addEventListener('focus', (e) => ctx.emit('focus', e));\n\t// input.addEventListener('blur', (e) => ctx.emit('blur', e));\n\t// ctx.listen('focus', () => input.focus());\n\t// effect(() => input.hidden = Boolean(ctx.hidden), ctx.signal);\n\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldComponent, Option, State, Store } from '@yongdall/web' */\nimport { ArrayStore, createComputed, createState, effect, loadOptions, ObjectStore } from '@yongdall/web';\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toLabels(options) {\n\treturn createComputed(() => {\n\t\tconst queue = [...options.get()];\n\t\t/** @type {Record<string, string>} */\n\t\tconst labels = Object.create(null);\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst children = item.children;\n\t\t\tlabels[item.value] = item.label;\n\t\t\tfor (const c of children) {\n\t\t\t\tqueue.push(c);\n\t\t\t}\n\t\t}\n\t\treturn labels;\n\t});\n}\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toTree(options) {\n\treturn createComputed(() => {\n\t\t/** @type {[level: number, option: Option][]} */\n\t\tconst queue = options.get().map(v => [0, v]);\n\t\t/** @type {(Option & {level: number})[]} */\n\t\tconst list = [];\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst [level, option] = item;\n\t\t\tlist.push({ ...option, level });\n\t\t\tfor (const c of option.children) {\n\t\t\t\tqueue.push([level + 1, c]);\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t});\n}\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toValueMap(options) {\n\treturn createComputed(() => {\n\t\tconst queue = [...options.get()];\n\t\t/** @type {Record<string, any>} */\n\t\tconst values = Object.create(null);\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst children = item.children;\n\t\t\tvalues[item.value] = item.data;\n\t\t\tfor (const c of children) {\n\t\t\t\tqueue.push(c);\n\t\t\t}\n\t\t}\n\t\treturn values;\n\t});\n}\n\n/**\n * \n * @param {Store?} [store] \n * @param {Record<string, string>?} [bind] \n * @returns {Iterable<(data: Record<string, any>) => void>}\n */\nfunction* getBindFns(store, bind) {\n\tif (!store) { return; }\n\tif (!bind || typeof bind === 'object') { return; }\n\tlet parent = store.parent;\n\tif (!(parent instanceof ObjectStore)) { return; }\n\tfor (const [k, v] of Object.entries(bind)) {\n\t\tconst current = parent.child(k);\n\t\tif (!current) { continue; }\n\t\tif (typeof v === 'string') {\n\t\t\tyield d => current.value = d[v];\n\t\t}\n\t}\n}\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\tconst editable = ctx.editable;\n\tconst store = ctx.store;\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\tconst labels = toLabels(loadOptions(componentOptions, false));\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 = labels.get()[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 ? '' : v;\n\t\t\tif (vv === value) { 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\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst options = loadOptions(componentOptions, getPlaceholder);\n\n\t// TODO: 过滤\n\tconst values = toValueMap(options);\n\tconst input = document.createElement('select');\n\t/** @type {((data: Record<string, any>) => void)[]} */\n\tlet bindFns = [...getBindFns(store, componentOptions.bind)];\n\n\tinput.addEventListener('change', () => {\n\t\tconst val = input.value || null;\n\t\tctx.value = val;\n\t\tif (!val) { return; }\n\t\tif (!bindFns.length) { return; }\n\t\tconst allData = values.get();\n\t\tconst data = Object.hasOwn(allData, val) && allData[val];\n\t\tif (!data || typeof data !== 'object') { return; }\n\t\tfor (const fn of bindFns) {\n\t\t\tfn(data);\n\t\t}\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 tree = toTree(options);\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = tree.get();\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\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tinput.value = vv || '';\n\t}\n\teffect(() => update(ctx.value), ctx.signal);\n\n\treturn input;\n};\n\nexport default Component;\n","\nconst supportsPopover = HTMLElement.prototype.hasOwnProperty(\"popover\");\nconst style =`\\\n:host {\n\tdisplay: contents;\n}\n\ninput {\n\tblock-size: inherit;\n\tinline-size: inherit;\n\tmax-block-size: inherit;\n\tmin-block-size: inherit;\n\tmax-inline-size: inherit;\n\tmin-inline-size: inherit;\n\tfont-size: inherit;\n\tbackground-color: inherit;\n\tborder-radius: inherit;\n\tcursor: text;\n\tpadding: inherit;\n\tborder: inherit;\n\tmargin: inherit;\n\toutline: inherit;\n\tbox-sizing: border-box;\n\n\tline-height: inherit;\n}\n\n.dropdown {\n\tposition: fixed;\n\tbackground: white;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tmargin: 0;\n\tinset: unset;\n\theight: auto;\n\twidth: auto;\n\toverflow-y: auto;\n\toverflow-x: hidden;\n\tz-index: 999;\n\tdisplay: none;\n\tbox-sizing: border-box;\n\tborder: 1px solid #ddd;\n}\n.dropdown-list {\n\toverflow-y: visible;\n\toverflow-x: visible;\n}\n\n:host([open]) .dropdown {\n\tdisplay: block;\n}\n\n\n.option {\n\tcursor: pointer;\n\tbackground: Canvas;\n\tcolor: CanvasText;\n\toverflow-x: hidden;\n}\n\n.option:hover {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n}\n.current {\n\tbackground: Highlight;\n\tcolor: HighlightText;\n\n}\n\n`\n/**\n * \n * @param {Node} el \n */\nfunction isActive(el) {\n\tlet e = el\n\twhile(e) {\n\t\tlet root = e.getRootNode();\n\t\tif (!root) { return false; }\n\t\tif (root === document) {\n\t\t\treturn document.activeElement === e;\n\t\t}\n\t\tif (!(root instanceof ShadowRoot)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (root.activeElement !== e) {\n\t\t\treturn false;\n\t\t}\n\t\tconst host = root.host;\n\t\tif (!host) { return false; }\n\t\te = host;\n\t}\n}\nexport default class Select extends HTMLElement {\n\t/** @type {{label: string; value: any; level?: any; data?: any}?} */\n\t#current = null;\n\t/** @type {any} */\n\t#currentValue = null;\n\t/** @type {Element?} */\n\t#currentNode = null;\n\t#shadowRoot = this.attachShadow({ mode: 'closed' });\n\t#style = this.#shadowRoot.appendChild(document.createElement('style'));\n\t#input = this.#shadowRoot.appendChild(document.createElement('input'));\n\t#dropdown = this.#shadowRoot.appendChild(document.createElement('div'));\n\t#dropdownList = this.#dropdown.appendChild(document.createElement('div'));\n\tconstructor() {\n\t\tsuper();\n\t\tthis.#style.textContent = style;\n\t\tconst input = this.#input;\n\t\tinput.type = 'text'\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdown.className = 'dropdown'\n\t\tdropdownList.className = 'dropdown-list'\n\t\tif (supportsPopover) {\n\t\t\tdropdown.setAttribute('popover', \"manual\");\n\t\t}\n\n\n\t\t// 输入事件处理 \n\t\tinput.addEventListener('input', () => { this.#onInput(); });\n\t\tinput.addEventListener('focus', () => { this.#onFocus(); });\n\t\tinput.addEventListener('blur', () => {\n\t\t\tconst current = this.#current;\n\t\t\tconst value = input.value;\n\t\t\tconst required = this.required;\n\t\t\tif (!value) {\n\t\t\t\tif (!current) { return; }\n\t\t\t\tif (required) {\n\t\t\t\t\tinput.value = current.label;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (current?.label === value) { return; }\n\t\t\tconst item = this.#list.find(v => v.label === value);\n\t\t\tif (item) {\n\t\t\t\tthis.#current = item;\n\t\t\t\tthis.#currentValue = item.value;\n\t\t\t\tinput.value = item.label;\n\t\t\t\tthis.#onSelect();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (!current) {\n\t\t\t\tinput.value = '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (required) {\n\t\t\t\tinput.value = current.label;\n\t\t\t} else {\n\t\t\t\tinput.value = '';\n\t\t\t\tthis.#current = null;\n\t\t\t\tthis.#currentValue = null;\n\t\t\t\tthis.#onSelect();\n\t\t\t}\n\t\t})\n\n\n\t\t// 键盘导航 \n\t\tthis.addEventListener('keydown', (e) => {\n\t\t\tif (!this.#open) { return; }\n\t\t\t\n\t\t\tconst currentNode = this.#currentNode;\n\n\t\t\tif (e.key === 'ArrowDown') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.firstElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.nextElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\n\t\t\tif (e.key === 'ArrowUp') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode !== dropdownList) {\n\t\t\t\t\tconst node = dropdownList.lastElementChild;\n\t\t\t\t\tif (!node) {\n\t\t\t\t\t\tthis.#currentNode = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.#currentNode = node;\n\t\t\t\t\tnode.classList.add('current');\n\t\t\t\t\tnode.scrollIntoView();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = currentNode.previousElementSibling;\n\t\t\t\tif (!node) { return; }\n\t\t\t\tcurrentNode.classList.remove('current');\n\t\t\t\tthis.#currentNode = node;\n\t\t\t\tnode.classList.add('current');\n\t\t\t\tnode.scrollIntoView();\n\n\t\t\t}\n\n\t\t\tif (e.key === 'Enter') {\n\t\t\t\te.preventDefault();\n\t\t\t\tif (currentNode?.parentNode === dropdownList) {\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tcurrentNode.click();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tget options() {\n\t\treturn this.#list;\n\t}\n\tfocus() {\n\t\tthis.#input.focus();\n\t}\n\tset options(items) {\n\t\tthis.#list = items;\n\t\tconst dropdown = this.#dropdown;\n\t\tconst dropdownList = this.#dropdownList;\n\t\tdropdownList.innerHTML = '';\n\t\tfor (const item of items) {\n\t\t\tconst option = document.createElement('div');\n\t\t\toption.className = 'option';\n\t\t\toption.appendChild(document.createTextNode(`${Array(item.level || 0).fill(' ').join('')}${item.label}` || ' '));\n\t\t\tdropdownList.appendChild(option);\n\t\t\toption.addEventListener('pointerdown', (e) => {\n\t\t\t\te.preventDefault()\n\t\t\t\tthis.#selectItem(item)\n\t\t\t});\n\t\t\toption.addEventListener('click', (e) => {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.#selectItem(item);\n\t\t\t});\n\t\t\toption.addEventListener('pointermove', () => {\n\t\t\t\tthis.#currentNode?.classList.remove('current');\n\t\t\t\tthis.#currentNode = option;\n\t\t\t\toption.classList.add('current');\n\t\t\t});\n\t\t}\n\t\tthis.#currentNode = dropdownList.firstElementChild;\n\t\tthis.#currentNode?.classList.add('current');\n\t\tdropdown.scrollTop = 0;\n\t\tdropdown.scrollLeft = 0;\n\t\tif (isActive(this.#input)) {\n\t\t\tif (this.#input.value === this.current?.label) { return }\n\t\t\tthis.open = true;\n\t\t\treturn;\n\t\t}\n\t\tconst currentValue = this.#currentValue;\n\t\tconst item = this.#list.find(it => it.value === currentValue);\n\t\tif (item) {\n\t\t\tif (item === this.#current) { return; }\n\t\t\tthis.#current = item;\n\t\t\tthis.#currentValue = item.value;\n\t\t\tthis.#input.value = item.label || '';\n\t\t}\n\t}\n\tget active() { return isActive(this.#input); }\n\t/** @type {{label: string; value: any; level?: any; data?: any}[]} */\n\t#list = [];\n\tget current() { return this.#current; }\n\tget value() { return this.#currentValue; }\n\tset value(v) {\n\t\tif (v === this.#currentValue) { return; }\n\t\tconst item = this.#list.find(it => it.value === v);\n\t\tif (!item) {\n\t\t\tthis.#current = null;\n\t\t\tthis.#currentValue = v;\n\t\t\tthis.#input.value = v;\n\t\t\treturn;\n\t\t}\n\t\tif (item === this.#current) { return; }\n\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item.value;\n\t\tthis.#input.value = item.label || '';\n\t}\n\t#onSelect() {\n\t\tthis.dispatchEvent(new Event('change'));\n\t}\n\t#onInput() {\n\t\tthis.dispatchEvent(new Event('input'));\n\t}\n\t#onFocus() {\n\t\tthis.open = true;\n\t\tthis.dispatchEvent(new Event('focus'));\n\t}\n\tget text() {\n\t\treturn this.#input.value;\n\t}\n\n\n\t/**\n\t * \n\t * @param {{label: string; value: any; level?: any; data?: any}} item \n\t */\n\t#selectItem(item) {\n\t\tthis.#current = item;\n\t\tthis.#currentValue = item?.value;\n\t\tthis.#input.value = item?.label || '';\n\t\tthis.#onSelect();\n\t\tthis.open = false;\n\t\tthis.#input.focus();\n\t}\n\n\tget open() { return this.getAttribute('open') !== null; }\n\tset open(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('open', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('open');\n\t\t}\n\t}\n\tget disabled() { return this.getAttribute('disabled') !== null; }\n\tset disabled(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('disabled', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('disabled');\n\t\t}\n\t}\n\tget readOnly() { return this.getAttribute('readonly') !== null; }\n\tset readOnly(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('readonly', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('readonly');\n\t\t}\n\t}\n\tget required() { return this.getAttribute('required') !== null; }\n\tset required(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('required', '');\n\t\t} else {\n\t\t\tthis.removeAttribute('required');\n\t\t}\n\t}\n\tget placeholder() { return this.getAttribute('placeholder') || ''; }\n\tset placeholder(v) {\n\t\tif (v) {\n\t\t\tthis.setAttribute('placeholder', v);\n\t\t} else {\n\t\t\tthis.removeAttribute('placeholder');\n\t\t}\n\t}\n\t#move() {\n\t\tconst inputRect = this.#input.getBoundingClientRect();\n\n\t\tconst innerWidth = window.innerWidth;\n\t\tconst innerHeight = window.innerHeight;\n\n\t\tconst right = innerWidth - inputRect.right;\n\t\tconst bottom = innerHeight - inputRect.bottom;\n\t\tconst {top, left, width: aWidth, height: aHeight} = inputRect;\n\t\tconst dropdownRect = this.#dropdownList.getBoundingClientRect();\n\t\tconst width = dropdownRect.width - 2;\n\t\tconst height = dropdownRect.height - 2;\n\t\tconst dropdown = this.#dropdown;\n\t\tdropdown.style.maxWidth = ``;\n\t\tdropdown.style.minWidth = ``;\n\n\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\tdropdown.style.maxHeight = `${innerHeight - top - aHeight - 4}px`;\n\t\tif (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else if (width <= innerWidth - left) {\n\t\t\tdropdown.style.left = `${left}px`;\n\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t} else {\n\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t}\n\n\n\t\tlet p = 0;\n\t\tif (height <= bottom - 20) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t} else if (Math.max(left, (right - 20)) < Math.min(width, inputRect.right - left)) {\n\t\t\tif (bottom - 20 >= top) {\n\t\t\t// 下方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = `${top + aHeight}px`;\n\t\t\tdropdown.style.minWidth = `${aWidth}px`;\n\t\t\tdropdown.style.bottom = ``;\n\t\t} else if (height <= top) {\n\t\t\t// 上方\n\t\t\tp = 1;\n\t\t\tdropdown.style.top = ``;\n\t\t\tdropdown.style.bottom = `${bottom + aHeight}px`;\n\t\t}\n\t\t} else if (width <= (right - 20) || left <= (right - 20)) {\n\t\t\t// 右侧\n\t\t\tdropdown.style.left = `${left + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${right}px`;\n\t\t\tdropdown.style.right = ``;\n\t\t} else {\n\t\t\t// 左侧\n\t\t\tdropdown.style.left = ``;\n\t\t\tdropdown.style.right = `${right + aWidth}px`;\n\t\t\tdropdown.style.maxWidth = `${left}px`;\n\t\t}\n\t\tif (p) {\n\t\t\t\n\t\t\tif (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t} else if (width <= innerWidth - left) {\n\t\t\t\tdropdown.style.left = `${left}px`;\n\t\t\t\tdropdown.style.right = `${innerWidth - left}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.left = `${Math.max(0, Math.min((width - aWidth) / 2, left))}px`;\n\t\t\t\tdropdown.style.right = ``;\n\t\t\t}\n\t\t} else {\n\t\t\tif (height <= innerHeight - top) {\n\t\t\t\tdropdown.style.top = `${top}px`;\n\t\t\t\tdropdown.style.bottom = ``;\n\t\t\t} else if (height < top + aHeight) {\n\t\t\t\tdropdown.style.top = ``;\n\t\t\t\tdropdown.style.bottom = `${innerHeight - top}px`;\n\t\t\t} else {\n\t\t\t\tdropdown.style.top = `${Math.max(0, Math.min(innerHeight - height, top))}px`;\n\t\t\t\tdropdown.style.bottom = `0`;\n\t\t\t}\n\t\t}\n\t}\n\n\t\n\t#running = false;\n\t/** @type {any} */\n\t#r = null;\n\t#openDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.showPopover();\n\t\t}\n\t\tif (this.#running) { return }\n\t\tthis.#running = true;\n\t\tconst that = this;\n\t\tthis.#r = requestAnimationFrame(function raf() {\n\t\t\tthat.#move();\n\t\t\tif (!that.#running) { return }\n\t\t\tthat.#r = requestAnimationFrame(raf);\n\t\t})\n\t}\n\n\t#closeDropdown() {\n\t\tif (supportsPopover) {\n\t\t\tthis.#dropdown.hidePopover();\n\t\t}\n\t\tif (!this.#running) { return }\n\t\tthis.#running = false;\n\t\tcancelAnimationFrame(this.#r);\n\t}\n\n\t/**\n\t * \n\t * @param {Event} e \n\t */\n\t#clickOther = (e) => {\n\t\t// @ts-ignore\n\t\tif (this.contains(e.target)) { return; }\n\t\tthis.open = false;\n\t}\n\t#mounted = false;\n\tconnectedCallback() {\n\t\tdocument.addEventListener('click', this.#clickOther);\n\t\tthis.#mounted = true;\n\t\tthis.#updateOpen();\n\t}\n\tdisconnectedCallback() {\n\t\tdocument.removeEventListener('click', this.#clickOther);\n\t\tthis.#mounted = false;\n\t\tthis.#updateOpen();\n\t}\n\t#open = false;\n\t#updateOpen() {\n\t\tconst status = !this.readOnly && !this.disabled && this.open && this.#mounted;\n\t\tif (this.#open === status) { return; }\n\t\tthis.#open = status\n\t\tif (status) {\n\t\t\tthis.#openDropdown();\n\t\t} else {\n\t\t\tthis.#closeDropdown();\n\t\t}\n\t}\n\t/**\n\t * @param {string} attrName\n\t * @param {string | null} oldVal\n\t * @param {string | null} newVal\n\t * @returns {void}\n\t */\n\tattributeChangedCallback(attrName, oldVal, newVal) {\n\t\tif (oldVal === newVal) { return; }\n\t\tswitch (attrName) {\n\t\t\tcase 'open': {\n\t\t\t\tif (!this.#mounted) { return; }\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'placeholder': {\n\t\t\t\tthis.#input.placeholder = newVal || '';\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'readonly': {\n\t\t\t\tthis.#input.readOnly = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase 'disabled': {\n\t\t\t\tthis.#input.disabled = newVal !== null;\n\t\t\t\tthis.#updateOpen();\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n\tstatic observedAttributes = ['open', 'placeholder', 'readonly', 'disabled'];\n}\n\ntry {\n\tcustomElements.define('yongdall-select', Select);\n} catch {\n}\n","/** @import { FieldFilterComponent } from '@yongdall/web' */\nimport { createComputed, effect, loadOptions } from '@yongdall/web';\nimport '../inputs/YongdallSelect.mjs';\n/** @import Select from '../inputs/YongdallSelect.mjs' */\n\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions = {}) => {\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 = /** @type {Select} */(label.appendChild(document.createElement('yongdall-select')));\n\tconst options = loadOptions(componentOptions);\n\n\n\n\t/** @type {string?} */\n\tlet value = null;\n\tinput.addEventListener('change', () => {\n\t\tvalue = input.value || null;\n\t\tctx.value = value;\n\t});\n\n\t/** @type {NodeJS.Timeout?} */\n\tlet timeout = null;\n\n\tlet loaded = false;\n\tfunction toQuery() {\n\t\tloaded = true;\n\t\tif (timeout) { clearTimeout(timeout); }\n\t\ttimeout = setTimeout(() => {\n\t\t\t// TODO: 基于搜索项目过滤\n\t\t}, 300);\n\n\t}\n\tinput.addEventListener('input', toQuery);\n\n\n\t// TODO: 过滤\n\tconst currentOptions = createComputed(() => {\n\t\t/** @type {{ value: any; label: any; data?: { [k: string]: string | number; };}[]} */\n\t\tconst list = [{ value: '', label: '' }, ...options.get()];\n\t\tlist.unshift({ value: '', label: '' });\n\t\t\treturn list;\n\t});\n\n\n\n\t\n\teffect(() => { input.options = currentOptions.get() }, ctx.signal);\n\teffect(() => {\n\t\tconst v = ctx.value;\n\t\t// TODO:\n\t\tconst vv = v == '' || v == null ? null : v;\n\t\tif (vv === value) { return; }\n\t\tvalue = vv;\n\t\tinput.value = value || '';\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\tinput.placeholder = ctx.field?.label ?? '';\n\t}\n\n\treturn input;\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 { FieldComponent, ConfiguratorComponent } from '@yongdall/web' */\nimport { ArrayStore, effect, findConfigurator, importWidget } from '@yongdall/web';\n\n\n/** @type {FieldComponent} */\nconst Component = (ctx, componentOptions = {}) => {\n\t/**\n\t * \n\t * @param {string} placeholder \n\t */\n\tfunction getPlaceholder(placeholder) {\n\t\tlet state = ctx.store?.parent;\n\t\tif (!state) { return null; }\n\t\tif (state instanceof ArrayStore) { state = state.parent; }\n\t\tif (!state) { return null; }\n\t\tlet currentState = state;\n\t\tlet k = 0;\n\t\twhile (placeholder[k] === '?') {\n\t\t\tk++;\n\t\t\tlet parent = currentState.parent;\n\t\t\tif (!parent) { break; }\n\t\t\tif (parent instanceof ArrayStore) {\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\t\t\tif (!parent) { break; }\n\t\t\tcurrentState = parent;\n\t\t}\n\t\twhile (placeholder[k] === '?') { k++; }\n\t\tconst name = placeholder.slice(k);\n\t\tconst field = currentState.child(name);\n\t\tif (!field) { return null; }\n\t\treturn field.value;\n\t}\n\tconst configurator = findConfigurator(componentOptions, getPlaceholder);\n\t/** @type {any} */\n\tlet currentConfigurator = null;\n\n\n\t/** @type {AbortController?} */\n\tlet ac = null;\n\t/**\n\t * \n\t * @param {any} configurator \n\t * @returns {Promise<ConfiguratorComponent | null | undefined>}\n\t */\n\tasync function getWidget(configurator) {\n\t\tif (typeof configurator === 'string') {\n\t\t\treturn importWidget(configurator);\n\t\t}\n\t\tif (!configurator || typeof configurator !== 'object') { return null; }\n\t\tconst { component, widget } = configurator\n\t\tconst id = typeof component === 'string' && component\n\t\t|| typeof widget === 'string' && widget;\n\t\tif (!id) { return null; }\n\t\treturn importWidget(configurator);\n\t}\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 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}, typeof configurator === 'object' && configurator || {});\n\n\t}\n\n\n\t/** @type {number?} */\n\tlet idleId = null;\n\teffect(() => {\n\t\tconst cfg = configurator.get() || 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 { 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, componentOptions) => {\n\tconst { inline, showLabel, quick } = ctx.style;\n\tconst modelName = ctx.field?.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\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 (!modelName) { return; }\n\t\tconst model = modelService(modelName);\n\t\tconst modelConfiguration = await model;\n\t\tif (!modelConfiguration) { return; }\n\t\tconst labelPattern = modelConfiguration.labelPattern || '';\n\t\tif (!getPatternFields(labelPattern).length) { return; }\n\t\tconst { option } = await model.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 (!modelName) { return root; }\n\tconst model = modelService(modelName);\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 dialog = root.appendChild(document.createElement('dialog'));\n\t\tdialog.showModal();\n\t\ttry {\n\t\t\tconst val = await selectDocument(null, dialog, model, AbortSignal.any([ac.signal, ctx.signal]), false, componentOptions);\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\tvalue = '';\n\t\t\t\tcurrentValue = null;\n\t\t\t\tctx.value = null;\n\t\t\t\tvalueState.set('');\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\tvalueState.set(result.label || newValue);\n\t\t} finally {\n\t\t\tdialog.remove();\n\n\t\t}\n\n\t});\n\n\n\n\treturn root;\n};\n\nexport default Component;\n","/** @import { FieldFilterComponent, Option, State } from '@yongdall/web' */\nimport { createComputed, effect, loadOptions } from '@yongdall/web';\n\n\n/**\n * \n * @param {State<Option[]>} options \n */\nfunction toTree(options) {\n\treturn createComputed(() => {\n\t\t/** @type {[level: number, option: Option][]} */\n\t\tconst queue = options.get().map(v => [0, v]);\n\t\t/** @type {(Option & {level: number})[]} */\n\t\tconst list = [];\n\t\tfor (let item; item = queue.shift();) {\n\t\t\tconst [level, option] = item;\n\t\t\tlist.push({ ...option, level });\n\t\t\tfor (const c of option.children) {\n\t\t\t\tqueue.push([level + 1, c]);\n\t\t\t}\n\t\t}\n\t\treturn list;\n\t});\n}\n\n\n\n/** @type {FieldFilterComponent} */\nconst Component = (ctx, componentOptions = {}) => {\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\tconst options = loadOptions(componentOptions);\n\n\n\tinput.addEventListener('change', () => {\n\t\tctx.value = input.value || null;\n\t});\n\n\n\tconst tree = toTree(options);\n\tconst currentOptions = createComputed(() => {\n\t\tconst list = tree.get();\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 selectInput from './inputs/select.mjs';\nimport searchInput from './filters/search.mjs';\nimport permissionsInput from './inputs/permissions.mjs';\nimport configurationInput from './inputs/configuration.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\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{\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: 'search', input: searchInput, filter: searchFilter, notFilter: searchFilter, filters: {\n\t\t\tne: { filter: searchFilter, label: '≠' },\n\t\t}\n\t},\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.3.1",
3
+ "version": "0.3.2",
4
4
  "exports": {
5
5
  ".": "./index.mjs"
6
6
  },