1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[6301],{36301:(e,t,s)=>{s.d(t,{K:()=>f});var a=s(71864),n=s(62036),i=s(2100),r=s(6106),l=s(86154),o=s(50192),d=s(49209),c=s(37001),m=s(39436),p=s(40514),u=s(27977),g=s(49016);function x({node:e,updateAttributes:t,deleteNode:s,editor:a}){let{images:x,columns:h}=e.attrs,[f,v]=(0,g.useState)(null),[j,b]=(0,g.useState)(null),[k,N]=(0,g.useState)(""),[y,w]=(0,g.useState)(""),C=a.isEditable,$=()=>{if(null!==j){let e=[...x];e[j]={...e[j],caption:k,link:y},t({images:e}),b(null),N(""),w("")}},L=()=>{b(null),N(""),w("")};return(0,i.jsxs)(n.VR,{className:"image-grid-wrapper my-6",children:[C&&(0,i.jsxs)("div",{className:"flex items-center justify-between p-2 bg-muted/50 rounded-t-lg border border-b-0",children:[(0,i.jsxs)("div",{className:"flex items-center gap-2",children:[(0,i.jsxs)("span",{className:"text-sm text-foreground",children:["Image Grid (",x.length," images)"]}),(0,i.jsx)("div",{className:"flex gap-1",children:[2,3,4].map(e=>(0,i.jsxs)(r.$,{type:"button",size:"sm",variant:h===e?"secondary":"ghost",onClick:()=>{t({columns:e})},className:"h-7 px-2 text-xs",children:[e," cols"]},e))})]}),(0,i.jsx)(r.$,{type:"button",size:"sm",variant:"ghost",onClick:s,className:"h-7 w-7 p-0 text-destructive hover:text-destructive",children:(0,i.jsx)(m.A,{className:"h-4 w-4"})})]}),(0,i.jsx)("div",{className:(0,c.cn)("grid gap-3",2===h?"grid-cols-2":3===h?"grid-cols-3":4===h?"grid-cols-4":"grid-cols-2",C&&"rounded-b-lg border border-t-0 p-3"),children:x.map((e,a)=>(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsxs)("div",{className:"relative aspect-square group flex items-center justify-center overflow-hidden rounded-lg border bg-background",onMouseEnter:()=>v(a),onMouseLeave:()=>v(null),children:[(0,i.jsx)("img",{src:e.src,alt:e.alt||`Image ${a+1}`,className:"w-full h-full object-contain"}),C&&f===a&&(0,i.jsxs)("div",{className:"absolute inset-0 bg-background/50 flex items-center justify-center gap-2",children:[(0,i.jsxs)(d.AM,{open:j===a,onOpenChange:e=>{if(e){let e;e=x[a],b(a),N(e.caption||""),w(e.link||"")}else L()},children:[(0,i.jsx)(d.Wv,{asChild:!0,children:(0,i.jsx)(r.$,{type:"button",size:"sm",variant:"secondary",className:"h-8 w-8 p-0",onClick:e=>{e.stopPropagation()},children:(0,i.jsx)(p.A,{className:"h-4 w-4"})})}),(0,i.jsx)(d.hl,{className:"w-80",onClick:e=>{e.stopPropagation()},onMouseDown:e=>{e.stopPropagation()},children:(0,i.jsxs)("div",{className:"space-y-3",children:[(0,i.jsx)("h4",{className:"font-medium text-sm",children:"Edit Image"}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(o.J,{htmlFor:`caption-${a}`,children:"Caption"}),(0,i.jsx)(l.p,{id:`caption-${a}`,placeholder:"Enter caption",value:k,onChange:e=>N(e.target.value)})]}),(0,i.jsxs)("div",{className:"space-y-2",children:[(0,i.jsx)(o.J,{htmlFor:`link-${a}`,children:"Link (URL)"}),(0,i.jsx)(l.p,{id:`link-${a}`,placeholder:"https://example.com",value:y,onChange:e=>w(e.target.value)})]}),(0,i.jsxs)("div",{className:"flex gap-2",children:[(0,i.jsx)(r.$,{type:"button",size:"sm",onClick:$,className:"flex-1",children:"Save"}),(0,i.jsx)(r.$,{type:"button",size:"sm",variant:"outline",onClick:L,className:"flex-1",children:"Cancel"})]})]})})]}),(0,i.jsx)(r.$,{type:"button",size:"sm",variant:"destructive",onClick:e=>{let n;e.stopPropagation(),0===(n=x.filter((e,t)=>t!==a)).length?s():t({images:n})},className:"h-8 w-8 p-0",children:(0,i.jsx)(u.A,{className:"h-4 w-4"})})]})]}),e.caption&&(0,i.jsx)("span",{className:"text-sm text-muted-foreground text-center px-1 leading-tight",children:e.caption})]},e.src))})]})}function h({node:e}){let{images:t,columns:s}=e.attrs,a=e=>{e&&window.open(e,"_blank","noopener,noreferrer")};return(0,i.jsx)(n.VR,{className:"image-grid-wrapper my-6",children:(0,i.jsx)("div",{className:`grid gap-3 ${2===s?"grid-cols-2":3===s?"grid-cols-3":4===s?"grid-cols-4":"grid-cols-2"}`,children:t.map((e,t)=>(0,i.jsxs)("div",{className:"flex flex-col gap-1",children:[(0,i.jsx)("div",{className:`relative aspect-square overflow-hidden rounded-xl bg-background flex items-center justify-center ${e.link?"cursor-pointer transition-opacity hover:opacity-90":""}`,onClick:()=>a(e.link),role:e.link?"button":void 0,tabIndex:e.link?0:void 0,onKeyDown:t=>{e.link&&("Enter"===t.key||" "===t.key)&&(t.preventDefault(),a(e.link))},children:(0,i.jsx)("img",{src:e.src,alt:e.alt||`Image ${t+1}`,className:"w-full h-full object-contain"})}),e.caption&&(0,i.jsx)("span",{className:`text-sm text-muted-foreground text-center px-1 leading-tight ${e.link?"cursor-pointer hover:text-foreground transition-colors":""}`,onClick:()=>a(e.link),role:e.link?"button":void 0,tabIndex:e.link?0:void 0,onKeyDown:t=>{e.link&&("Enter"===t.key||" "===t.key)&&(t.preventDefault(),a(e.link))},children:e.caption})]},e.src))})})}
1let f=a.bP.create({name:"imageGrid",group:"block",atom:!0,addOptions:()=>({HTMLAttributes:{},readOnly:!1}),addAttributes:()=>({images:{default:[],parseHTML:e=>{let t=e.getAttribute("data-images");try{return t?JSON.parse(t):[]}catch{return[]}},renderHTML:e=>e.images&&0!==e.images.length?{"data-images":JSON.stringify(e.images)}:{}},columns:{default:2,parseHTML:e=>{let t=e.getAttribute("data-columns");return t?parseInt(t,10):2},renderHTML:e=>({"data-columns":e.columns})}}),parseHTML:()=>[{tag:"div[data-type='image-grid']"}],renderHTML({HTMLAttributes:e}){return["div",(0,a.KV)(this.options.HTMLAttributes,e,{"data-type":"image-grid"})]},addNodeView(){return this.options.readOnly?(0,n.gu)(h):(0,n.gu)(x)},addCommands(){return{setImageGrid:e=>({commands:t})=>t.insertContent({type:this.name,attrs:{images:e.images,columns:e.columns||2}})}}})},49209:(e,t,s)=>{s.d(t,{AM:()=>r,Wv:()=>l,hl:()=>o});var a=s(2100);s(49016);var n=s(80428),i=s(37001);function r({...e}){return(0,a.jsx)(n.bL,{"data-slot":"popover",...e})}function l({...e}){return(0,a.jsx)(n.l9,{"data-slot":"popover-trigger",...e})}function o({className:e,align:t="center",sideOffset:s=4,...r}){return(0,a.jsx)(n.ZL,{children:(0,a.jsx)(n.UC,{"data-slot":"popover-content",align:t,sideOffset:s,className:(0,i.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden [will-change:transform,opacity] [contain:layout_style]",e),...r})})}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.