@erickxavier/no-js 1.8.0 → 1.8.1
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/README.md +15 -8
- package/dist/cjs/no.js +2 -2
- package/dist/cjs/no.js.map +1 -1
- package/dist/esm/no.js +2 -2
- package/dist/esm/no.js.map +1 -1
- package/dist/iife/no.js +2 -2
- package/dist/iife/no.js.map +1 -1
- package/package.json +1 -1
- package/src/index.js +1 -1
package/README.md
CHANGED
|
@@ -23,12 +23,13 @@ No build step. No virtual DOM. No transpiler. No JSX. Just HTML.
|
|
|
23
23
|
- **Declarative HTTP** — `get`, `post`, `put`, `patch`, `delete` as HTML attributes
|
|
24
24
|
- **Reactive Binding** — `bind`, `bind-*`, `model` for one/two-way data binding
|
|
25
25
|
- **Conditionals & Loops** — `if`, `else-if`, `show`, `hide`, `each`, `foreach`, `switch`
|
|
26
|
-
- **State Management** — `state` (local), `store` (global), `computed`, `watch`
|
|
27
|
-
- **SPA Routing** — `route`, `route-view`, guards, params, nested routes
|
|
26
|
+
- **State Management** — `state` (local), `store` (global), `computed`, `watch`, `notify()`
|
|
27
|
+
- **SPA Routing** — `route`, `route-view`, guards, params, nested routes, wildcard catch-all
|
|
28
28
|
- **Forms & Validation** — Built-in validators + `$form` context
|
|
29
29
|
- **Animations** — `animate`, `transition` with stagger support
|
|
30
30
|
- **i18n** — `t` directive with pluralization
|
|
31
|
-
- **Filters** — `uppercase`, `currency`, `date`, `truncate`,
|
|
31
|
+
- **Filters** — `uppercase`, `currency`, `date`, `truncate`, 32 built-in pipes
|
|
32
|
+
- **Drag & Drop** — `drag`, `drop`, `drag-image`, `drag-data`, `drop-zone`
|
|
32
33
|
- **Custom Directives** — Extend with `NoJS.directive()`
|
|
33
34
|
- **~20 KB gzipped** — Zero dependencies
|
|
34
35
|
|
|
@@ -44,19 +45,25 @@ No build step. No virtual DOM. No transpiler. No JSX. Just HTML.
|
|
|
44
45
|
|
|
45
46
|
### NPM
|
|
46
47
|
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
```bash
|
|
49
|
+
npm install @erickxavier/no-js
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
import NoJS from "@erickxavier/no-js";
|
|
54
|
+
NoJS.init();
|
|
55
|
+
```
|
|
49
56
|
|
|
50
|
-
|
|
57
|
+
With the CDN, No.JS auto-starts on `DOMContentLoaded`. You can configure it before it loads:
|
|
51
58
|
|
|
52
59
|
```html
|
|
53
60
|
<script>
|
|
54
|
-
NoJS.config
|
|
61
|
+
NoJS.config({
|
|
55
62
|
debug: true,
|
|
56
63
|
router: {
|
|
57
64
|
useHash: true
|
|
58
65
|
},
|
|
59
|
-
};
|
|
66
|
+
});
|
|
60
67
|
</script>
|
|
61
68
|
```
|
|
62
69
|
|
package/dist/cjs/no.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* No.JS v1.8.
|
|
2
|
+
* No.JS v1.8.1 — The HTML-First Reactive Framework
|
|
3
3
|
* No more JavaScript. Just HTML attributes with superpowers.
|
|
4
4
|
* @license MIT
|
|
5
5
|
* @see https://github.com/ErickXavier/no-js
|
|
@@ -60,5 +60,5 @@ ${f}`)(r,d,...a),typeof t=="string"&&t.includes("$store")&&bt()}catch(n){nt("Exp
|
|
|
60
60
|
.nojs-drag-list-empty {
|
|
61
61
|
min-height: 3rem;
|
|
62
62
|
}
|
|
63
|
-
`.trim(),r=document.createElement("style");r.setAttribute("data-nojs-dnd",""),r.textContent=t,document.head.appendChild(r)}function Rt(t,r,e,n){let o=[...t.children].filter(s=>!s.classList.contains("nojs-drop-placeholder"));if(o.length===0)return 0;for(let s=0;s<o.length;s++){let a=(o[s].style&&o[s].style.display==="contents"&&o[s].firstElementChild||o[s]).getBoundingClientRect();if(n==="horizontal"){let c=a.left+a.width/2;if(r<c)return s}else if(n==="grid"){let c=a.left+a.width/2,l=a.top+a.height/2;if(e<l&&r<c||e<a.top+a.height&&r<c)return s}else{let c=a.top+a.height/2;if(e<c)return s}}return o.length}function De(t,r,e,n){dt();let o;if(e==="auto"){if(o=document.createElement("div"),o.className=n||"nojs-drop-placeholder",E.dragging&&E.dragging.sourceEl){let a=(E.dragging.sourceEl.firstElementChild||E.dragging.sourceEl).getBoundingClientRect();a.height>0&&(o.style.height=a.height+"px"),a.width>0&&(o.style.width=a.width+"px")}}else{let i=document.getElementById(e.startsWith("#")?e.slice(1):e);i&&i.content?(o=document.createElement("div"),o.style.display="contents",o.className=n||"nojs-drop-placeholder",o.appendChild(i.content.cloneNode(!0))):(o=document.createElement("div"),o.className=n||"nojs-drop-placeholder")}o.classList.add("nojs-drop-placeholder");let s=[...t.children].filter(i=>!i.classList.contains("nojs-drop-placeholder"));r>=s.length?t.appendChild(o):t.insertBefore(o,s[r]),E.placeholder=o}function dt(){E.placeholder&&(E.placeholder.remove(),E.placeholder=null)}function Ct(t,r){return!r||r==="*"?!0:r.split(",").map(n=>n.trim()).includes(t)}function or(t,r){let e=document.createElement("div");e.style.cssText="position:fixed;top:-9999px;left:-9999px;pointer-events:none;z-index:99999;";let n=t.style&&t.style.display==="contents"&&t.firstElementChild||t,o=n.getBoundingClientRect(),s=o.width,i=o.height,a=getComputedStyle(n),c=Math.min(r,3);for(let d=c-1;d>=0;d--){let f=document.createElement("div"),y=d*4;f.style.cssText="position:absolute;top:"+y+"px;left:"+y+"px;width:"+s+"px;height:"+i+"px;border-radius:"+a.borderRadius+";box-shadow:0 1px 4px rgba(0,0,0,0.12);overflow:hidden;box-sizing:border-box;",d===0?(f.innerHTML=n.innerHTML,f.style.background=a.backgroundColor||"#fff",f.style.border=a.border,f.style.padding=a.padding,f.style.fontSize=a.fontSize,f.style.color=a.color,f.style.fontFamily=a.fontFamily):(f.style.background=a.backgroundColor||"#fff",f.style.border=a.border||"1px solid #ddd"),e.appendChild(f)}let l=document.createElement("div");return l.textContent=r,l.style.cssText="position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;padding:0 5px;background:#3b82f6;color:#fff;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,0.2);",e.appendChild(l),e.style.width=s+(c-1)*4+"px",e.style.height=i+(c-1)*4+"px",e}D("drag",{priority:15,init(t,r,e){re();let n=j(t),o=t.getAttribute("drag-type")||"default",s=t.getAttribute("drag-effect")||"move",i=t.getAttribute("drag-handle"),a=t.getAttribute("drag-image"),c=t.getAttribute("drag-image-offset")||"0,0",l=t.getAttribute("drag-disabled"),d=t.getAttribute("drag-class")||"nojs-dragging",f=t.getAttribute("drag-ghost-class");t.draggable=!0,t.setAttribute("aria-grabbed","false"),t.getAttribute("tabindex")||t.setAttribute("tabindex","0");let y=!0;if(i){let p=x=>{y=!!x.target.closest(i)};t.addEventListener("mousedown",p),Z(()=>t.removeEventListener("mousedown",p))}let u=p=>{if(i&&!y){p.preventDefault();return}if(l&&C(l,n)){p.preventDefault();return}let x=C(e,n),v=t.getAttribute("drag-group"),m=x;if(v&&E.selected.has(v)){let L=E.selected.get(v);L.size>0&&[...L].some(g=>g.el===t)&&(m=[...L].map(g=>g.item))}if(E.dragging={item:m,type:o,effect:s,sourceEl:t,sourceCtx:n,sourceList:null,sourceIndex:null,listDirective:null},p.dataTransfer){if(p.dataTransfer.effectAllowed=s,p.dataTransfer.setData("text/plain",""),Array.isArray(m)&&m.length>1&&p.dataTransfer.setDragImage){let L=or(t,m.length);document.body.appendChild(L);let A=t.getBoundingClientRect();p.dataTransfer.setDragImage(L,A.width/2,A.height/2),requestAnimationFrame(()=>L.remove())}else if(a&&p.dataTransfer.setDragImage)if(a==="none"){let L=document.createElement("div");L.style.cssText="width:1px;height:1px;opacity:0;position:fixed;top:-999px",document.body.appendChild(L);let[A,g]=c.split(",").map(Number);p.dataTransfer.setDragImage(L,A||0,g||0),requestAnimationFrame(()=>L.remove())}else{let L=t.querySelector(a);if(L){let[A,g]=c.split(",").map(Number);f&&L.classList.add(f),p.dataTransfer.setDragImage(L,A||0,g||0)}}}if(d.split(/\s+/).filter(Boolean).forEach(L=>t.classList.add(L)),Array.isArray(m)&&v&&E.selected.has(v))for(let L of E.selected.get(v))L.el!==t&&d.split(/\s+/).filter(Boolean).forEach(A=>L.el.classList.add(A));t.setAttribute("aria-grabbed","true"),t.dispatchEvent(new CustomEvent("drag-start",{bubbles:!0,detail:{item:m,index:E.dragging.sourceIndex,el:t}}))},h=()=>{d.split(/\s+/).filter(Boolean).forEach(x=>t.classList.remove(x));let p=t.getAttribute("drag-group");if(p&&E.selected.has(p))for(let x of E.selected.get(p))d.split(/\s+/).filter(Boolean).forEach(v=>x.el.classList.remove(v));if(t.setAttribute("aria-grabbed","false"),f&&a&&a!=="none"){let x=t.querySelector(a);x&&x.classList.remove(f)}t.dispatchEvent(new CustomEvent("drag-end",{bubbles:!0,detail:{item:E.dragging?.item,index:E.dragging?.sourceIndex,dropped:E.dragging===null}})),E.dragging=null,dt()};if(t.addEventListener("dragstart",u),t.addEventListener("dragend",h),Z(()=>{t.removeEventListener("dragstart",u),t.removeEventListener("dragend",h)}),l){let p=function(){let x=!!C(l,n);t.draggable=!x,x?t.removeAttribute("aria-grabbed"):t.setAttribute("aria-grabbed","false")};n.$watch(p)}let b=p=>{if(E.dragging&&!E.dragging.sourceEl.isConnected&&(E.dragging=null),p.key===" "&&!E.dragging){p.preventDefault();let x=C(e,n);E.dragging={item:x,type:o,effect:s,sourceEl:t,sourceCtx:n,sourceList:null,sourceIndex:null,listDirective:null},d.split(/\s+/).filter(Boolean).forEach(v=>t.classList.add(v)),t.setAttribute("aria-grabbed","true"),t.dispatchEvent(new CustomEvent("drag-start",{bubbles:!0,detail:{item:x,index:null,el:t}}))}else p.key==="Escape"&&E.dragging&&E.dragging.sourceEl===t&&(p.preventDefault(),d.split(/\s+/).filter(Boolean).forEach(x=>t.classList.remove(x)),t.setAttribute("aria-grabbed","false"),E.dragging=null,dt())};t.addEventListener("keydown",b),Z(()=>t.removeEventListener("keydown",b))}});D("drop",{priority:15,init(t,r,e){re();let n=j(t),o=t.getAttribute("drop-accept")||"default",s=t.getAttribute("drop-effect")||"move",i=t.getAttribute("drop-class")||"nojs-drag-over",a=t.getAttribute("drop-reject-class")||"nojs-drop-reject",c=t.getAttribute("drop-disabled"),l=t.getAttribute("drop-max"),d=t.getAttribute("drop-sort"),f=t.getAttribute("drop-placeholder"),y=t.getAttribute("drop-placeholder-class");t.setAttribute("aria-dropeffect",s);let u=0,h=m=>{if(!E.dragging||c&&C(c,n))return;let L=Ct(E.dragging.type,o),A=!0;if(l){let g=C(l,n),w=Ot(t);typeof g=="number"&&w>=g&&(A=!1)}if(!L||!A){a.split(/\s+/).filter(Boolean).forEach(g=>t.classList.add(g)),i.split(/\s+/).filter(Boolean).forEach(g=>t.classList.remove(g)),dt();return}if(a.split(/\s+/).filter(Boolean).forEach(g=>t.classList.remove(g)),m.preventDefault(),m.dataTransfer&&(m.dataTransfer.dropEffect=s),d){let g=Rt(t,m.clientX,m.clientY,d);f&&De(t,g,f,y),t.dispatchEvent(new CustomEvent("drag-over",{bubbles:!1,detail:{item:E.dragging.item,index:g}}))}},b=m=>{if(E.dragging&&!(c&&C(c,n))&&(u++,u===1)){let L=Ct(E.dragging.type,o),A=!0;if(l){let g=C(l,n),w=Ot(t);typeof g=="number"&&w>=g&&(A=!1)}L&&A?(i.split(/\s+/).filter(Boolean).forEach(g=>t.classList.add(g)),t.dispatchEvent(new CustomEvent("drag-enter",{bubbles:!1,detail:{item:E.dragging.item,type:E.dragging.type}}))):a.split(/\s+/).filter(Boolean).forEach(g=>t.classList.add(g))}},p=m=>{E.dragging&&(u--,u<=0&&(u=0,i.split(/\s+/).filter(Boolean).forEach(L=>t.classList.remove(L)),a.split(/\s+/).filter(Boolean).forEach(L=>t.classList.remove(L)),dt(),t.dispatchEvent(new CustomEvent("drag-leave",{bubbles:!1,detail:{item:E.dragging.item}}))))},x=m=>{if(m.preventDefault(),m.stopPropagation(),u=0,!E.dragging||c&&C(c,n)||!Ct(E.dragging.type,o))return;if(l){let S=C(l,n),$=Ot(t);if(typeof S=="number"&&$>=S)return}let L=E.dragging.item,A=E.dragging.type,g=E.dragging.effect,w=0;d&&(w=Rt(t,m.clientX,m.clientY,d)),i.split(/\s+/).filter(Boolean).forEach(S=>t.classList.remove(S)),a.split(/\s+/).filter(Boolean).forEach(S=>t.classList.remove(S)),dt();let T={$drag:L,$dragType:A,$dragEffect:g,$dropIndex:w,$source:{list:E.dragging.sourceList,index:E.dragging.sourceIndex,el:E.dragging.sourceEl},$target:{list:null,index:w,el:t},$el:t};et(e,n,T),E.dragging=null,t.dispatchEvent(new CustomEvent("drop",{bubbles:!1,detail:{item:L,index:w,source:T.$source,target:T.$target,effect:g}}))},v=m=>{E.dragging&&(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),x(m))};t.addEventListener("dragover",h),t.addEventListener("dragenter",b),t.addEventListener("dragleave",p),t.addEventListener("drop",x),t.addEventListener("keydown",v),Z(()=>{t.removeEventListener("dragover",h),t.removeEventListener("dragenter",b),t.removeEventListener("dragleave",p),t.removeEventListener("drop",x),t.removeEventListener("keydown",v)})}});var ke=new Map;D("drag-list",{priority:10,init(t,r,e){re();let n=j(t),o=t.getAttribute("template"),s=t.getAttribute("drag-list-key"),i=t.getAttribute("drag-list-item")||"item",a=t.getAttribute("drop-sort")||"vertical",c=t.getAttribute("drag-type")||"__draglist_"+e,l=t.getAttribute("drop-accept")||c,d=t.hasAttribute("drag-list-copy"),f=t.hasAttribute("drag-list-remove"),y=t.getAttribute("drag-disabled"),u=t.getAttribute("drop-disabled"),h=t.getAttribute("drop-max"),b=t.getAttribute("drop-placeholder"),p=t.getAttribute("drop-placeholder-class"),x=t.getAttribute("drag-class")||"nojs-dragging",v=t.getAttribute("drop-class")||"nojs-drag-over",m=t.getAttribute("drop-reject-class")||"nojs-drop-reject",L=t.getAttribute("drop-settle-class")||"nojs-drop-settle",A=t.getAttribute("drop-empty-class")||"nojs-drag-list-empty";t.setAttribute("role","listbox"),t.setAttribute("aria-dropeffect",d?"copy":"move");let g={listPath:e,ctx:n,el:t};ke.set(t,g),Z(()=>ke.delete(t));let w=0,T=null;function S(){let k=st(e,n);if(!Array.isArray(k))return;if(k===T&&k.length>0&&t.children.length>0){for(let I of t.children)I.__ctx&&I.__ctx.$notify&&I.__ctx.$notify();return}T=k;let O=o?document.getElementById(o):null;if(!O)return;t.innerHTML="";let q=k.length;k.forEach((I,ot)=>{let ht={[i]:I,$index:ot,$count:q,$first:ot===0,$last:ot===q-1,$even:ot%2===0,$odd:ot%2!==0},it=P(ht,n),Q=O.content.cloneNode(!0),U=document.createElement("div");U.style.display="contents",U.__ctx=it,U.setAttribute("role","option"),U.appendChild(Q),t.appendChild(U);let G=U.firstElementChild||U;G.draggable=!0,G.setAttribute("aria-grabbed","false"),G.getAttribute("tabindex")||G.setAttribute("tabindex","0");let Tt=rt=>{if(y&&C(y,n)){rt.preventDefault();return}E.dragging={item:I,type:c,effect:d?"copy":"move",sourceEl:U,sourceCtx:it,sourceList:k,sourceIndex:ot,listDirective:{el:t,listPath:e,ctx:n,keyProp:s,copyMode:d,removeMode:f}},rt.dataTransfer&&(rt.dataTransfer.effectAllowed=d?"copy":"move",rt.dataTransfer.setData("text/plain","")),x.split(/\s+/).filter(Boolean).forEach(at=>G.classList.add(at)),G.setAttribute("aria-grabbed","true"),t.dispatchEvent(new CustomEvent("drag-start",{bubbles:!0,detail:{item:I,index:ot,el:G}}))},Ft=()=>{x.split(/\s+/).filter(Boolean).forEach(rt=>G.classList.remove(rt)),G.setAttribute("aria-grabbed","false"),E.dragging&&E.dragging.sourceEl===U&&(E.dragging=null),dt()};U.addEventListener("dragstart",Tt),U.addEventListener("dragend",Ft),U.addEventListener("keydown",rt=>{if(rt.key===" "&&!E.dragging)rt.preventDefault(),E.dragging={item:I,type:c,effect:d?"copy":"move",sourceEl:U,sourceCtx:it,sourceList:k,sourceIndex:ot,listDirective:{el:t,listPath:e,ctx:n,keyProp:s,copyMode:d,removeMode:f}},x.split(/\s+/).filter(Boolean).forEach(at=>G.classList.add(at)),G.setAttribute("aria-grabbed","true");else if(rt.key==="Escape"&&E.dragging&&E.dragging.sourceEl===U)rt.preventDefault(),x.split(/\s+/).filter(Boolean).forEach(at=>G.classList.remove(at)),G.setAttribute("aria-grabbed","false"),E.dragging=null,dt();else if((rt.key==="ArrowDown"||rt.key==="ArrowRight")&&E.dragging&&E.dragging.sourceEl===U){rt.preventDefault();let at=U.nextElementSibling;at&&(at.firstElementChild||at).focus()}else if((rt.key==="ArrowUp"||rt.key==="ArrowLeft")&&E.dragging&&E.dragging.sourceEl===U){rt.preventDefault();let at=U.previousElementSibling;at&&(at.firstElementChild||at).focus()}}),R(U)});let M=k.length===0;A.split(/\s+/).filter(Boolean).forEach(I=>t.classList.toggle(I,M))}let $=k=>{if(!E.dragging||u&&C(u,n))return;let O=Ct(E.dragging.type,l),q=!0;if(h){let I=C(h,n),ot=st(e,n);typeof I=="number"&&Array.isArray(ot)&&ot.length>=I&&(q=!1)}if(!O||!q){m.split(/\s+/).filter(Boolean).forEach(I=>t.classList.add(I)),v.split(/\s+/).filter(Boolean).forEach(I=>t.classList.remove(I)),dt();return}m.split(/\s+/).filter(Boolean).forEach(I=>t.classList.remove(I)),k.preventDefault(),k.dataTransfer&&(k.dataTransfer.dropEffect=d?"copy":"move");let M=Rt(t,k.clientX,k.clientY,a);b&&De(t,M,b,p)},B=k=>{if(E.dragging&&!(u&&C(u,n))&&(w++,w===1)){let O=Ct(E.dragging.type,l),q=!0;if(h){let M=C(h,n),I=st(e,n);typeof M=="number"&&Array.isArray(I)&&I.length>=M&&(q=!1)}O&&q?(v.split(/\s+/).filter(Boolean).forEach(M=>t.classList.add(M)),t.dispatchEvent(new CustomEvent("drag-enter",{bubbles:!1,detail:{item:E.dragging.item,type:E.dragging.type}}))):m.split(/\s+/).filter(Boolean).forEach(M=>t.classList.add(M))}},N=()=>{E.dragging&&(w--,w<=0&&(w=0,v.split(/\s+/).filter(Boolean).forEach(k=>t.classList.remove(k)),m.split(/\s+/).filter(Boolean).forEach(k=>t.classList.remove(k)),dt(),t.dispatchEvent(new CustomEvent("drag-leave",{bubbles:!1,detail:{item:E.dragging?.item}}))))},ct=k=>{if(k.preventDefault(),k.stopPropagation(),w=0,!E.dragging||u&&C(u,n)||!Ct(E.dragging.type,l))return;if(h){let Q=C(h,n),U=st(e,n);if(typeof Q=="number"&&Array.isArray(U)&&U.length>=Q)return}let O=E.dragging.item,q=E.dragging.listDirective,M=E.dragging.sourceIndex,I=Rt(t,k.clientX,k.clientY,a);v.split(/\s+/).filter(Boolean).forEach(Q=>t.classList.remove(Q)),m.split(/\s+/).filter(Boolean).forEach(Q=>t.classList.remove(Q)),dt();let ot=st(e,n);if(!Array.isArray(ot))return;let ht=q&&q.el===t;if(ht&&M===I){E.dragging=null;return}if(ht&&M+1===I){E.dragging=null;return}let it=[...ot];if(ht){let[Q]=it.splice(M,1),U=M<I?I-1:I;it.splice(U,0,Q),n.$set(e,it),t.dispatchEvent(new CustomEvent("reorder",{bubbles:!0,detail:{list:it,item:O,from:M,to:U}}))}else{let Q=d&&typeof O=="object"?{...O}:O;if(it.splice(I,0,Q),n.$set(e,it),q&&!q.copyMode&&(f||q.removeMode)){let U=st(q.listPath,q.ctx);if(Array.isArray(U)&&M!=null){let G=U.filter((Tt,Ft)=>Ft!==M);q.ctx.$set(q.listPath,G),q.el.dispatchEvent(new CustomEvent("remove",{bubbles:!0,detail:{list:G,item:O,index:M}}))}}t.dispatchEvent(new CustomEvent("receive",{bubbles:!0,detail:{list:it,item:O,from:M,fromList:q?st(q.listPath,q.ctx):null}}))}requestAnimationFrame(()=>{let U=[...t.children][ht&&M<I?I-1:I];if(U){let G=U.firstElementChild||U;L.split(/\s+/).filter(Boolean).forEach(Tt=>G.classList.add(Tt)),G.addEventListener("animationend",()=>{L.split(/\s+/).filter(Boolean).forEach(Tt=>G.classList.remove(Tt))},{once:!0})}}),E.dragging=null},F=k=>{if(E.dragging&&Ct(E.dragging.type,l)&&(k.key==="Enter"||k.key===" ")){k.preventDefault();let O=t.querySelector(":focus");if(O){let M=(O.style?.display==="contents"&&O.firstElementChild||O).getBoundingClientRect(),I={preventDefault(){},stopPropagation(){},clientX:M.left+M.width/2,clientY:M.top+M.height+1,dataTransfer:null};ct(I)}}};t.addEventListener("dragover",$),t.addEventListener("dragenter",B),t.addEventListener("dragleave",N),t.addEventListener("drop",ct),t.addEventListener("keydown",F),Z(()=>{t.removeEventListener("dragover",$),t.removeEventListener("dragenter",B),t.removeEventListener("dragleave",N),t.removeEventListener("drop",ct),t.removeEventListener("keydown",F)}),n.$watch(S),S()}});D("drag-multiple",{priority:16,init(t,r){let e=j(t),n=t.getAttribute("drag-group"),o=t.getAttribute("drag-multiple-class")||"nojs-selected";if(!n){nt("drag-multiple requires drag-group attribute");return}E.selected.has(n)||E.selected.set(n,new Set);let s=E.selected.get(n),i=c=>{let l=t.getAttribute("drag"),f={item:l?C(l,e):null,el:t,ctx:e};if(c.ctrlKey||c.metaKey){let y=[...s].find(u=>u.el===t);y?(s.delete(y),o.split(/\s+/).filter(Boolean).forEach(u=>t.classList.remove(u))):(s.add(f),o.split(/\s+/).filter(Boolean).forEach(u=>t.classList.add(u)))}else{for(let y of s)o.split(/\s+/).filter(Boolean).forEach(u=>y.el.classList.remove(u));s.clear(),s.add(f),o.split(/\s+/).filter(Boolean).forEach(y=>t.classList.add(y))}};t.addEventListener("click",i),Z(()=>{t.removeEventListener("click",i);let c=[...s].find(l=>l.el===t);c&&s.delete(c)});let a=c=>{if(c.key==="Escape"){for(let l of s)o.split(/\s+/).filter(Boolean).forEach(d=>l.el.classList.remove(d));s.clear()}};window.addEventListener("keydown",a),Z(()=>window.removeEventListener("keydown",a))}});function sr(t){let r=(_.router.base||"/").replace(/\/$/,"");if(!r)return t||"/";let e=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp("^"+e),"")||"/"}function ir(){return typeof window>"u"?null:(_.router||{}).useHash?window.location.hash.slice(1)||"/":sr(window.location.pathname)}var Pt={get baseApiUrl(){return _.baseApiUrl},set baseApiUrl(t){_.baseApiUrl=t},get locale(){return W.locale},set locale(t){W.locale=t},config(t={}){let r={..._.headers},e={..._.cache},n={..._.templates},o={..._.router},s={..._.i18n};if(Object.assign(_,t),t.headers&&(_.headers={...r,...t.headers}),t.csrf&&(_.csrf=t.csrf),t.cache&&(_.cache={...e,...t.cache}),t.templates&&(_.templates={...n,...t.templates}),t.router&&("mode"in t.router&&!("useHash"in t.router)&&(X('router.mode is deprecated. Use router.useHash instead: mode: "hash" \u2192 useHash: true, mode: "history" \u2192 useHash: false',"warn"),t.router.useHash=t.router.mode==="hash",delete t.router.mode),_.router={...o,...t.router}),t.i18n&&(_.i18n={...s,...t.i18n},W.locale=t.i18n.defaultLocale||W.locale),t.stores){for(let[i,a]of Object.entries(t.stores))z[i]||(z[i]=P(a||{}),tt("store:created",{name:i,keys:Object.keys(a||{})}));delete _.stores}},async init(t){if(typeof document>"u"||Pt._initialized)return;if(Pt._initialized=!0,t=t||document.body,X("Initializing..."),_.i18n.loadPath){let e=new Set([W.locale,_.i18n.fallbackLocale]);await Promise.all([...e].map(n=>Vt(n)))}Mt(t);let r=ir();await Ee(r),document.querySelector("[route-view]")&&se(Ie()),R(t),J&&await J.init(),X("Initialized."),xe(),ge(Pt)},directive(t,r){D(t,r)},filter(t,r){H[t]=r},validator(t,r){ut[t]=r},i18n(t){if(t.loadPath!=null&&(_.i18n.loadPath=t.loadPath),t.ns&&(_.i18n.ns=t.ns),t.cache!=null&&(_.i18n.cache=t.cache),t.persist!=null&&(_.i18n.persist=t.persist),t.locales&&(W.locales=t.locales),t.fallbackLocale&&(_.i18n.fallbackLocale=t.fallbackLocale),t.defaultLocale&&(W._locale=t.defaultLocale),_.i18n.persist&&typeof localStorage<"u")try{let r=localStorage.getItem("nojs-locale");if(r){W._locale=r;return}}catch{}if(t.detectBrowser){let r=typeof navigator<"u"?navigator.language:"en",e=r.split("-")[0];W.locales[r]?W._locale=r:W.locales[e]&&(W._locale=e)}},on(t,r){return xt[t]||(xt[t]=[]),xt[t].push(r),()=>{xt[t]=xt[t].filter(e=>e!==r)}},interceptor(t,r){St[t]&&St[t].push(r)},get store(){return z},notify(){bt()},get router(){return J},createContext:P,evaluate:C,findContext:j,processTree:R,resolve:st,version:"1.8.0"},ar=Pt;
|
|
63
|
+
`.trim(),r=document.createElement("style");r.setAttribute("data-nojs-dnd",""),r.textContent=t,document.head.appendChild(r)}function Rt(t,r,e,n){let o=[...t.children].filter(s=>!s.classList.contains("nojs-drop-placeholder"));if(o.length===0)return 0;for(let s=0;s<o.length;s++){let a=(o[s].style&&o[s].style.display==="contents"&&o[s].firstElementChild||o[s]).getBoundingClientRect();if(n==="horizontal"){let c=a.left+a.width/2;if(r<c)return s}else if(n==="grid"){let c=a.left+a.width/2,l=a.top+a.height/2;if(e<l&&r<c||e<a.top+a.height&&r<c)return s}else{let c=a.top+a.height/2;if(e<c)return s}}return o.length}function De(t,r,e,n){dt();let o;if(e==="auto"){if(o=document.createElement("div"),o.className=n||"nojs-drop-placeholder",E.dragging&&E.dragging.sourceEl){let a=(E.dragging.sourceEl.firstElementChild||E.dragging.sourceEl).getBoundingClientRect();a.height>0&&(o.style.height=a.height+"px"),a.width>0&&(o.style.width=a.width+"px")}}else{let i=document.getElementById(e.startsWith("#")?e.slice(1):e);i&&i.content?(o=document.createElement("div"),o.style.display="contents",o.className=n||"nojs-drop-placeholder",o.appendChild(i.content.cloneNode(!0))):(o=document.createElement("div"),o.className=n||"nojs-drop-placeholder")}o.classList.add("nojs-drop-placeholder");let s=[...t.children].filter(i=>!i.classList.contains("nojs-drop-placeholder"));r>=s.length?t.appendChild(o):t.insertBefore(o,s[r]),E.placeholder=o}function dt(){E.placeholder&&(E.placeholder.remove(),E.placeholder=null)}function Ct(t,r){return!r||r==="*"?!0:r.split(",").map(n=>n.trim()).includes(t)}function or(t,r){let e=document.createElement("div");e.style.cssText="position:fixed;top:-9999px;left:-9999px;pointer-events:none;z-index:99999;";let n=t.style&&t.style.display==="contents"&&t.firstElementChild||t,o=n.getBoundingClientRect(),s=o.width,i=o.height,a=getComputedStyle(n),c=Math.min(r,3);for(let d=c-1;d>=0;d--){let f=document.createElement("div"),y=d*4;f.style.cssText="position:absolute;top:"+y+"px;left:"+y+"px;width:"+s+"px;height:"+i+"px;border-radius:"+a.borderRadius+";box-shadow:0 1px 4px rgba(0,0,0,0.12);overflow:hidden;box-sizing:border-box;",d===0?(f.innerHTML=n.innerHTML,f.style.background=a.backgroundColor||"#fff",f.style.border=a.border,f.style.padding=a.padding,f.style.fontSize=a.fontSize,f.style.color=a.color,f.style.fontFamily=a.fontFamily):(f.style.background=a.backgroundColor||"#fff",f.style.border=a.border||"1px solid #ddd"),e.appendChild(f)}let l=document.createElement("div");return l.textContent=r,l.style.cssText="position:absolute;top:-6px;right:-6px;min-width:22px;height:22px;padding:0 5px;background:#3b82f6;color:#fff;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,0.2);",e.appendChild(l),e.style.width=s+(c-1)*4+"px",e.style.height=i+(c-1)*4+"px",e}D("drag",{priority:15,init(t,r,e){re();let n=j(t),o=t.getAttribute("drag-type")||"default",s=t.getAttribute("drag-effect")||"move",i=t.getAttribute("drag-handle"),a=t.getAttribute("drag-image"),c=t.getAttribute("drag-image-offset")||"0,0",l=t.getAttribute("drag-disabled"),d=t.getAttribute("drag-class")||"nojs-dragging",f=t.getAttribute("drag-ghost-class");t.draggable=!0,t.setAttribute("aria-grabbed","false"),t.getAttribute("tabindex")||t.setAttribute("tabindex","0");let y=!0;if(i){let p=x=>{y=!!x.target.closest(i)};t.addEventListener("mousedown",p),Z(()=>t.removeEventListener("mousedown",p))}let u=p=>{if(i&&!y){p.preventDefault();return}if(l&&C(l,n)){p.preventDefault();return}let x=C(e,n),v=t.getAttribute("drag-group"),m=x;if(v&&E.selected.has(v)){let L=E.selected.get(v);L.size>0&&[...L].some(g=>g.el===t)&&(m=[...L].map(g=>g.item))}if(E.dragging={item:m,type:o,effect:s,sourceEl:t,sourceCtx:n,sourceList:null,sourceIndex:null,listDirective:null},p.dataTransfer){if(p.dataTransfer.effectAllowed=s,p.dataTransfer.setData("text/plain",""),Array.isArray(m)&&m.length>1&&p.dataTransfer.setDragImage){let L=or(t,m.length);document.body.appendChild(L);let A=t.getBoundingClientRect();p.dataTransfer.setDragImage(L,A.width/2,A.height/2),requestAnimationFrame(()=>L.remove())}else if(a&&p.dataTransfer.setDragImage)if(a==="none"){let L=document.createElement("div");L.style.cssText="width:1px;height:1px;opacity:0;position:fixed;top:-999px",document.body.appendChild(L);let[A,g]=c.split(",").map(Number);p.dataTransfer.setDragImage(L,A||0,g||0),requestAnimationFrame(()=>L.remove())}else{let L=t.querySelector(a);if(L){let[A,g]=c.split(",").map(Number);f&&L.classList.add(f),p.dataTransfer.setDragImage(L,A||0,g||0)}}}if(d.split(/\s+/).filter(Boolean).forEach(L=>t.classList.add(L)),Array.isArray(m)&&v&&E.selected.has(v))for(let L of E.selected.get(v))L.el!==t&&d.split(/\s+/).filter(Boolean).forEach(A=>L.el.classList.add(A));t.setAttribute("aria-grabbed","true"),t.dispatchEvent(new CustomEvent("drag-start",{bubbles:!0,detail:{item:m,index:E.dragging.sourceIndex,el:t}}))},h=()=>{d.split(/\s+/).filter(Boolean).forEach(x=>t.classList.remove(x));let p=t.getAttribute("drag-group");if(p&&E.selected.has(p))for(let x of E.selected.get(p))d.split(/\s+/).filter(Boolean).forEach(v=>x.el.classList.remove(v));if(t.setAttribute("aria-grabbed","false"),f&&a&&a!=="none"){let x=t.querySelector(a);x&&x.classList.remove(f)}t.dispatchEvent(new CustomEvent("drag-end",{bubbles:!0,detail:{item:E.dragging?.item,index:E.dragging?.sourceIndex,dropped:E.dragging===null}})),E.dragging=null,dt()};if(t.addEventListener("dragstart",u),t.addEventListener("dragend",h),Z(()=>{t.removeEventListener("dragstart",u),t.removeEventListener("dragend",h)}),l){let p=function(){let x=!!C(l,n);t.draggable=!x,x?t.removeAttribute("aria-grabbed"):t.setAttribute("aria-grabbed","false")};n.$watch(p)}let b=p=>{if(E.dragging&&!E.dragging.sourceEl.isConnected&&(E.dragging=null),p.key===" "&&!E.dragging){p.preventDefault();let x=C(e,n);E.dragging={item:x,type:o,effect:s,sourceEl:t,sourceCtx:n,sourceList:null,sourceIndex:null,listDirective:null},d.split(/\s+/).filter(Boolean).forEach(v=>t.classList.add(v)),t.setAttribute("aria-grabbed","true"),t.dispatchEvent(new CustomEvent("drag-start",{bubbles:!0,detail:{item:x,index:null,el:t}}))}else p.key==="Escape"&&E.dragging&&E.dragging.sourceEl===t&&(p.preventDefault(),d.split(/\s+/).filter(Boolean).forEach(x=>t.classList.remove(x)),t.setAttribute("aria-grabbed","false"),E.dragging=null,dt())};t.addEventListener("keydown",b),Z(()=>t.removeEventListener("keydown",b))}});D("drop",{priority:15,init(t,r,e){re();let n=j(t),o=t.getAttribute("drop-accept")||"default",s=t.getAttribute("drop-effect")||"move",i=t.getAttribute("drop-class")||"nojs-drag-over",a=t.getAttribute("drop-reject-class")||"nojs-drop-reject",c=t.getAttribute("drop-disabled"),l=t.getAttribute("drop-max"),d=t.getAttribute("drop-sort"),f=t.getAttribute("drop-placeholder"),y=t.getAttribute("drop-placeholder-class");t.setAttribute("aria-dropeffect",s);let u=0,h=m=>{if(!E.dragging||c&&C(c,n))return;let L=Ct(E.dragging.type,o),A=!0;if(l){let g=C(l,n),w=Ot(t);typeof g=="number"&&w>=g&&(A=!1)}if(!L||!A){a.split(/\s+/).filter(Boolean).forEach(g=>t.classList.add(g)),i.split(/\s+/).filter(Boolean).forEach(g=>t.classList.remove(g)),dt();return}if(a.split(/\s+/).filter(Boolean).forEach(g=>t.classList.remove(g)),m.preventDefault(),m.dataTransfer&&(m.dataTransfer.dropEffect=s),d){let g=Rt(t,m.clientX,m.clientY,d);f&&De(t,g,f,y),t.dispatchEvent(new CustomEvent("drag-over",{bubbles:!1,detail:{item:E.dragging.item,index:g}}))}},b=m=>{if(E.dragging&&!(c&&C(c,n))&&(u++,u===1)){let L=Ct(E.dragging.type,o),A=!0;if(l){let g=C(l,n),w=Ot(t);typeof g=="number"&&w>=g&&(A=!1)}L&&A?(i.split(/\s+/).filter(Boolean).forEach(g=>t.classList.add(g)),t.dispatchEvent(new CustomEvent("drag-enter",{bubbles:!1,detail:{item:E.dragging.item,type:E.dragging.type}}))):a.split(/\s+/).filter(Boolean).forEach(g=>t.classList.add(g))}},p=m=>{E.dragging&&(u--,u<=0&&(u=0,i.split(/\s+/).filter(Boolean).forEach(L=>t.classList.remove(L)),a.split(/\s+/).filter(Boolean).forEach(L=>t.classList.remove(L)),dt(),t.dispatchEvent(new CustomEvent("drag-leave",{bubbles:!1,detail:{item:E.dragging.item}}))))},x=m=>{if(m.preventDefault(),m.stopPropagation(),u=0,!E.dragging||c&&C(c,n)||!Ct(E.dragging.type,o))return;if(l){let S=C(l,n),$=Ot(t);if(typeof S=="number"&&$>=S)return}let L=E.dragging.item,A=E.dragging.type,g=E.dragging.effect,w=0;d&&(w=Rt(t,m.clientX,m.clientY,d)),i.split(/\s+/).filter(Boolean).forEach(S=>t.classList.remove(S)),a.split(/\s+/).filter(Boolean).forEach(S=>t.classList.remove(S)),dt();let T={$drag:L,$dragType:A,$dragEffect:g,$dropIndex:w,$source:{list:E.dragging.sourceList,index:E.dragging.sourceIndex,el:E.dragging.sourceEl},$target:{list:null,index:w,el:t},$el:t};et(e,n,T),E.dragging=null,t.dispatchEvent(new CustomEvent("drop",{bubbles:!1,detail:{item:L,index:w,source:T.$source,target:T.$target,effect:g}}))},v=m=>{E.dragging&&(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),x(m))};t.addEventListener("dragover",h),t.addEventListener("dragenter",b),t.addEventListener("dragleave",p),t.addEventListener("drop",x),t.addEventListener("keydown",v),Z(()=>{t.removeEventListener("dragover",h),t.removeEventListener("dragenter",b),t.removeEventListener("dragleave",p),t.removeEventListener("drop",x),t.removeEventListener("keydown",v)})}});var ke=new Map;D("drag-list",{priority:10,init(t,r,e){re();let n=j(t),o=t.getAttribute("template"),s=t.getAttribute("drag-list-key"),i=t.getAttribute("drag-list-item")||"item",a=t.getAttribute("drop-sort")||"vertical",c=t.getAttribute("drag-type")||"__draglist_"+e,l=t.getAttribute("drop-accept")||c,d=t.hasAttribute("drag-list-copy"),f=t.hasAttribute("drag-list-remove"),y=t.getAttribute("drag-disabled"),u=t.getAttribute("drop-disabled"),h=t.getAttribute("drop-max"),b=t.getAttribute("drop-placeholder"),p=t.getAttribute("drop-placeholder-class"),x=t.getAttribute("drag-class")||"nojs-dragging",v=t.getAttribute("drop-class")||"nojs-drag-over",m=t.getAttribute("drop-reject-class")||"nojs-drop-reject",L=t.getAttribute("drop-settle-class")||"nojs-drop-settle",A=t.getAttribute("drop-empty-class")||"nojs-drag-list-empty";t.setAttribute("role","listbox"),t.setAttribute("aria-dropeffect",d?"copy":"move");let g={listPath:e,ctx:n,el:t};ke.set(t,g),Z(()=>ke.delete(t));let w=0,T=null;function S(){let k=st(e,n);if(!Array.isArray(k))return;if(k===T&&k.length>0&&t.children.length>0){for(let I of t.children)I.__ctx&&I.__ctx.$notify&&I.__ctx.$notify();return}T=k;let O=o?document.getElementById(o):null;if(!O)return;t.innerHTML="";let q=k.length;k.forEach((I,ot)=>{let ht={[i]:I,$index:ot,$count:q,$first:ot===0,$last:ot===q-1,$even:ot%2===0,$odd:ot%2!==0},it=P(ht,n),Q=O.content.cloneNode(!0),U=document.createElement("div");U.style.display="contents",U.__ctx=it,U.setAttribute("role","option"),U.appendChild(Q),t.appendChild(U);let G=U.firstElementChild||U;G.draggable=!0,G.setAttribute("aria-grabbed","false"),G.getAttribute("tabindex")||G.setAttribute("tabindex","0");let Tt=rt=>{if(y&&C(y,n)){rt.preventDefault();return}E.dragging={item:I,type:c,effect:d?"copy":"move",sourceEl:U,sourceCtx:it,sourceList:k,sourceIndex:ot,listDirective:{el:t,listPath:e,ctx:n,keyProp:s,copyMode:d,removeMode:f}},rt.dataTransfer&&(rt.dataTransfer.effectAllowed=d?"copy":"move",rt.dataTransfer.setData("text/plain","")),x.split(/\s+/).filter(Boolean).forEach(at=>G.classList.add(at)),G.setAttribute("aria-grabbed","true"),t.dispatchEvent(new CustomEvent("drag-start",{bubbles:!0,detail:{item:I,index:ot,el:G}}))},Ft=()=>{x.split(/\s+/).filter(Boolean).forEach(rt=>G.classList.remove(rt)),G.setAttribute("aria-grabbed","false"),E.dragging&&E.dragging.sourceEl===U&&(E.dragging=null),dt()};U.addEventListener("dragstart",Tt),U.addEventListener("dragend",Ft),U.addEventListener("keydown",rt=>{if(rt.key===" "&&!E.dragging)rt.preventDefault(),E.dragging={item:I,type:c,effect:d?"copy":"move",sourceEl:U,sourceCtx:it,sourceList:k,sourceIndex:ot,listDirective:{el:t,listPath:e,ctx:n,keyProp:s,copyMode:d,removeMode:f}},x.split(/\s+/).filter(Boolean).forEach(at=>G.classList.add(at)),G.setAttribute("aria-grabbed","true");else if(rt.key==="Escape"&&E.dragging&&E.dragging.sourceEl===U)rt.preventDefault(),x.split(/\s+/).filter(Boolean).forEach(at=>G.classList.remove(at)),G.setAttribute("aria-grabbed","false"),E.dragging=null,dt();else if((rt.key==="ArrowDown"||rt.key==="ArrowRight")&&E.dragging&&E.dragging.sourceEl===U){rt.preventDefault();let at=U.nextElementSibling;at&&(at.firstElementChild||at).focus()}else if((rt.key==="ArrowUp"||rt.key==="ArrowLeft")&&E.dragging&&E.dragging.sourceEl===U){rt.preventDefault();let at=U.previousElementSibling;at&&(at.firstElementChild||at).focus()}}),R(U)});let M=k.length===0;A.split(/\s+/).filter(Boolean).forEach(I=>t.classList.toggle(I,M))}let $=k=>{if(!E.dragging||u&&C(u,n))return;let O=Ct(E.dragging.type,l),q=!0;if(h){let I=C(h,n),ot=st(e,n);typeof I=="number"&&Array.isArray(ot)&&ot.length>=I&&(q=!1)}if(!O||!q){m.split(/\s+/).filter(Boolean).forEach(I=>t.classList.add(I)),v.split(/\s+/).filter(Boolean).forEach(I=>t.classList.remove(I)),dt();return}m.split(/\s+/).filter(Boolean).forEach(I=>t.classList.remove(I)),k.preventDefault(),k.dataTransfer&&(k.dataTransfer.dropEffect=d?"copy":"move");let M=Rt(t,k.clientX,k.clientY,a);b&&De(t,M,b,p)},B=k=>{if(E.dragging&&!(u&&C(u,n))&&(w++,w===1)){let O=Ct(E.dragging.type,l),q=!0;if(h){let M=C(h,n),I=st(e,n);typeof M=="number"&&Array.isArray(I)&&I.length>=M&&(q=!1)}O&&q?(v.split(/\s+/).filter(Boolean).forEach(M=>t.classList.add(M)),t.dispatchEvent(new CustomEvent("drag-enter",{bubbles:!1,detail:{item:E.dragging.item,type:E.dragging.type}}))):m.split(/\s+/).filter(Boolean).forEach(M=>t.classList.add(M))}},N=()=>{E.dragging&&(w--,w<=0&&(w=0,v.split(/\s+/).filter(Boolean).forEach(k=>t.classList.remove(k)),m.split(/\s+/).filter(Boolean).forEach(k=>t.classList.remove(k)),dt(),t.dispatchEvent(new CustomEvent("drag-leave",{bubbles:!1,detail:{item:E.dragging?.item}}))))},ct=k=>{if(k.preventDefault(),k.stopPropagation(),w=0,!E.dragging||u&&C(u,n)||!Ct(E.dragging.type,l))return;if(h){let Q=C(h,n),U=st(e,n);if(typeof Q=="number"&&Array.isArray(U)&&U.length>=Q)return}let O=E.dragging.item,q=E.dragging.listDirective,M=E.dragging.sourceIndex,I=Rt(t,k.clientX,k.clientY,a);v.split(/\s+/).filter(Boolean).forEach(Q=>t.classList.remove(Q)),m.split(/\s+/).filter(Boolean).forEach(Q=>t.classList.remove(Q)),dt();let ot=st(e,n);if(!Array.isArray(ot))return;let ht=q&&q.el===t;if(ht&&M===I){E.dragging=null;return}if(ht&&M+1===I){E.dragging=null;return}let it=[...ot];if(ht){let[Q]=it.splice(M,1),U=M<I?I-1:I;it.splice(U,0,Q),n.$set(e,it),t.dispatchEvent(new CustomEvent("reorder",{bubbles:!0,detail:{list:it,item:O,from:M,to:U}}))}else{let Q=d&&typeof O=="object"?{...O}:O;if(it.splice(I,0,Q),n.$set(e,it),q&&!q.copyMode&&(f||q.removeMode)){let U=st(q.listPath,q.ctx);if(Array.isArray(U)&&M!=null){let G=U.filter((Tt,Ft)=>Ft!==M);q.ctx.$set(q.listPath,G),q.el.dispatchEvent(new CustomEvent("remove",{bubbles:!0,detail:{list:G,item:O,index:M}}))}}t.dispatchEvent(new CustomEvent("receive",{bubbles:!0,detail:{list:it,item:O,from:M,fromList:q?st(q.listPath,q.ctx):null}}))}requestAnimationFrame(()=>{let U=[...t.children][ht&&M<I?I-1:I];if(U){let G=U.firstElementChild||U;L.split(/\s+/).filter(Boolean).forEach(Tt=>G.classList.add(Tt)),G.addEventListener("animationend",()=>{L.split(/\s+/).filter(Boolean).forEach(Tt=>G.classList.remove(Tt))},{once:!0})}}),E.dragging=null},F=k=>{if(E.dragging&&Ct(E.dragging.type,l)&&(k.key==="Enter"||k.key===" ")){k.preventDefault();let O=t.querySelector(":focus");if(O){let M=(O.style?.display==="contents"&&O.firstElementChild||O).getBoundingClientRect(),I={preventDefault(){},stopPropagation(){},clientX:M.left+M.width/2,clientY:M.top+M.height+1,dataTransfer:null};ct(I)}}};t.addEventListener("dragover",$),t.addEventListener("dragenter",B),t.addEventListener("dragleave",N),t.addEventListener("drop",ct),t.addEventListener("keydown",F),Z(()=>{t.removeEventListener("dragover",$),t.removeEventListener("dragenter",B),t.removeEventListener("dragleave",N),t.removeEventListener("drop",ct),t.removeEventListener("keydown",F)}),n.$watch(S),S()}});D("drag-multiple",{priority:16,init(t,r){let e=j(t),n=t.getAttribute("drag-group"),o=t.getAttribute("drag-multiple-class")||"nojs-selected";if(!n){nt("drag-multiple requires drag-group attribute");return}E.selected.has(n)||E.selected.set(n,new Set);let s=E.selected.get(n),i=c=>{let l=t.getAttribute("drag"),f={item:l?C(l,e):null,el:t,ctx:e};if(c.ctrlKey||c.metaKey){let y=[...s].find(u=>u.el===t);y?(s.delete(y),o.split(/\s+/).filter(Boolean).forEach(u=>t.classList.remove(u))):(s.add(f),o.split(/\s+/).filter(Boolean).forEach(u=>t.classList.add(u)))}else{for(let y of s)o.split(/\s+/).filter(Boolean).forEach(u=>y.el.classList.remove(u));s.clear(),s.add(f),o.split(/\s+/).filter(Boolean).forEach(y=>t.classList.add(y))}};t.addEventListener("click",i),Z(()=>{t.removeEventListener("click",i);let c=[...s].find(l=>l.el===t);c&&s.delete(c)});let a=c=>{if(c.key==="Escape"){for(let l of s)o.split(/\s+/).filter(Boolean).forEach(d=>l.el.classList.remove(d));s.clear()}};window.addEventListener("keydown",a),Z(()=>window.removeEventListener("keydown",a))}});function sr(t){let r=(_.router.base||"/").replace(/\/$/,"");if(!r)return t||"/";let e=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return t.replace(new RegExp("^"+e),"")||"/"}function ir(){return typeof window>"u"?null:(_.router||{}).useHash?window.location.hash.slice(1)||"/":sr(window.location.pathname)}var Pt={get baseApiUrl(){return _.baseApiUrl},set baseApiUrl(t){_.baseApiUrl=t},get locale(){return W.locale},set locale(t){W.locale=t},config(t={}){let r={..._.headers},e={..._.cache},n={..._.templates},o={..._.router},s={..._.i18n};if(Object.assign(_,t),t.headers&&(_.headers={...r,...t.headers}),t.csrf&&(_.csrf=t.csrf),t.cache&&(_.cache={...e,...t.cache}),t.templates&&(_.templates={...n,...t.templates}),t.router&&("mode"in t.router&&!("useHash"in t.router)&&(X('router.mode is deprecated. Use router.useHash instead: mode: "hash" \u2192 useHash: true, mode: "history" \u2192 useHash: false',"warn"),t.router.useHash=t.router.mode==="hash",delete t.router.mode),_.router={...o,...t.router}),t.i18n&&(_.i18n={...s,...t.i18n},W.locale=t.i18n.defaultLocale||W.locale),t.stores){for(let[i,a]of Object.entries(t.stores))z[i]||(z[i]=P(a||{}),tt("store:created",{name:i,keys:Object.keys(a||{})}));delete _.stores}},async init(t){if(typeof document>"u"||Pt._initialized)return;if(Pt._initialized=!0,t=t||document.body,X("Initializing..."),_.i18n.loadPath){let e=new Set([W.locale,_.i18n.fallbackLocale]);await Promise.all([...e].map(n=>Vt(n)))}Mt(t);let r=ir();await Ee(r),document.querySelector("[route-view]")&&se(Ie()),R(t),J&&await J.init(),X("Initialized."),xe(),ge(Pt)},directive(t,r){D(t,r)},filter(t,r){H[t]=r},validator(t,r){ut[t]=r},i18n(t){if(t.loadPath!=null&&(_.i18n.loadPath=t.loadPath),t.ns&&(_.i18n.ns=t.ns),t.cache!=null&&(_.i18n.cache=t.cache),t.persist!=null&&(_.i18n.persist=t.persist),t.locales&&(W.locales=t.locales),t.fallbackLocale&&(_.i18n.fallbackLocale=t.fallbackLocale),t.defaultLocale&&(W._locale=t.defaultLocale),_.i18n.persist&&typeof localStorage<"u")try{let r=localStorage.getItem("nojs-locale");if(r){W._locale=r;return}}catch{}if(t.detectBrowser){let r=typeof navigator<"u"?navigator.language:"en",e=r.split("-")[0];W.locales[r]?W._locale=r:W.locales[e]&&(W._locale=e)}},on(t,r){return xt[t]||(xt[t]=[]),xt[t].push(r),()=>{xt[t]=xt[t].filter(e=>e!==r)}},interceptor(t,r){St[t]&&St[t].push(r)},get store(){return z},notify(){bt()},get router(){return J},createContext:P,evaluate:C,findContext:j,processTree:R,resolve:st,version:"1.8.1"},ar=Pt;
|
|
64
64
|
//# sourceMappingURL=no.js.map
|