"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[559],{1746:(e,n,t)=>{t.d(n,{O:()=>i,Q:()=>r});var o=t(37876),a=t(14232);let l=(0,a.createContext)({isPinned:()=>!1,pinCell:()=>{},pinned:[],unpinCell:()=>{}}),r=e=>{let{pinned:n,children:t}=e,[r,i]=(0,a.useState)(n||[]);return(0,a.useEffect)(()=>{n&&i(n)},[n]),(0,o.jsx)(l.Provider,{value:{isPinned:e=>r.some(n=>"Add"!==n.type&&n.id===e.id&&n.type===e.type),pinCell:e=>{i(n=>[...n,e])},pinned:r,unpinCell:e=>{i(n=>n.filter(n=>"Add"!==n.type&&(n.id.toString()!==e.id.toString()||n.type!==e.type)))}},children:t})},i=()=>(0,a.useContext)(l)},14728:(e,n,t)=>{t.d(n,{E1:()=>g,G6:()=>d,MK:()=>y,kv:()=>b,zd:()=>p});var o=t(37876),a=t(1746),l=t(29334),r=t(14232);let i=["Channel","Attachment","Embed","Image","Link","PendingBlock","Text"],c={Attachment:"Block",Embed:"Block",Image:"Block",Link:"Block",PendingBlock:"Block",Text:"Block",Channel:"Channel"},s=e=>"Block"===e.type||"Channel"===e.type,d=e=>{if(!s(e))throw Error("Cell is not connectable");return e},p={type:"Add"},u=e=>(0,l.o)(e.map(e=>{let{id:n,__typename:t}=e;if(i.includes(t))return{id:n,type:c[t]}})),y=e=>(0,r.useMemo)(()=>u(e),[e]),h=(0,r.createContext)({addCell:()=>{},cells:[],findCell:()=>void 0,indexOf:()=>-1,indexToPosition:()=>-1,length:0,moveCell:()=>{},removeCell:()=>{}}),b=e=>{let{cells:n,children:t}=e,[l,i]=(0,r.useState)(n);(0,r.useEffect)(()=>{i(n)},[n]);let{pinCell:c,isPinned:s,unpinCell:d}=(0,a.O)(),p=(0,r.useMemo)(()=>l.filter(e=>"Add"!==e.type&&"User"!==e.type&&"Group"!==e.type),[l]),u=(0,r.useMemo)(()=>l.filter(e=>{let{type:n}=e;return"Add"!==n}).length,[l]);return(0,o.jsx)(h.Provider,{value:{addCell:function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;i(t=>f({cells:t,cell:e,at:n}))},cells:l,findCell:e=>l.find(n=>"Add"!==n.type&&n.id===e.id&&n.type===e.type),indexOf:e=>{let n=l.findIndex(n=>"Add"!==n.type&&n.id.toString()===e.id.toString()&&n.type===e.type);return"Add"===l[0].type?n-1:n},indexToPosition:e=>u-e,length:u,moveCell:(e,n,t)=>{let o=p[n];i(t=>f({cells:C({cells:t,cell:e}),cell:e,at:n})),t||s(o)?c(e):d(e)},removeCell:e=>{i(n=>C({cells:n,cell:e})),d(e)}},children:t})},g=()=>(0,r.useContext)(h),m=(e,n,t)=>[...e.slice(0,t),n,...e.slice(t)],f=e=>{let{cells:n,cell:t,at:o=0}=e;if(o<0)throw Error("`at` must be non-negative");if(o>n.filter(e=>{let{type:n}=e;return"Add"!==n}).length)throw Error("`at` is out of bounds");return n.length>0&&"Add"===n[0].type?m(n,t,o+1):m(n,t,o)},C=e=>{let{cells:n,cell:t}=e;return n.filter(e=>"Add"===e.type||e.id.toString()!==t.id.toString()||e.type!==t.type)}},16607:(e,n,t)=>{t.d(n,{T:()=>d,p:()=>p});var o=t(28888),a=t(37876),l=t(14905),r=t(14232),i=t(86355);function c(){let e=(0,o._)(["\n fragment ChannelOperationsChannelFragment on Channel {\n id\n can {\n add_to\n update\n pin\n potentially_pin\n unpin\n }\n }\n\n mutation ChannelOperationsCreateBlockMutation(\n $input: CreateBlockMutationInput!\n ) {\n create_block(input: $input) {\n block: blokk {\n ... on Model {\n id\n }\n }\n channels {\n id\n compressed_skeleton\n }\n }\n }\n\n mutation ChannelOperationsRemoveConnectionMutation(\n $channelId: ID!\n $connectableId: ID!\n $connectableType: BaseConnectableTypeEnum!\n ) {\n remove_connection(\n input: {\n channel_id: $channelId\n connectable_id: $connectableId\n connectable_type: $connectableType\n }\n ) {\n channel {\n id\n compressed_skeleton\n }\n }\n }\n\n mutation ChannelOperationsCreateConnectionMutation(\n $channelId: ID!\n $connectableId: ID!\n $connectableType: BaseConnectableTypeEnum!\n $insertAt: Int\n ) {\n create_connection(\n input: {\n channel_ids: [$channelId]\n connectable_id: $connectableId\n connectable_type: $connectableType\n insert_at: $insertAt\n }\n ) {\n connectable: konnectable {\n ... on Model {\n id\n }\n }\n channels {\n id\n compressed_skeleton\n }\n }\n }\n\n mutation ChannelOperationsMoveConnectionMutation(\n $action: Movements\n $connectableId: ID!\n $connectableType: BaseConnectableTypeEnum!\n $channelId: ID!\n $insertAt: Int\n ) {\n move_connectable_mutation(\n input: {\n action: $action\n connectable: { id: $connectableId, type: $connectableType }\n channel_id: $channelId\n insert_at: $insertAt\n }\n ) {\n channel {\n id\n compressed_skeleton\n }\n }\n }\n\n mutation ChannelOperationsPinConnectionMutation(\n $channelId: ID!\n $connectableId: ID!\n $connectableType: BaseConnectableTypeEnum!\n $pin: Boolean!\n $insertAt: Int\n ) {\n pin_connectable_mutation(\n input: {\n connectable: { id: $connectableId, type: $connectableType }\n channel_id: $channelId\n insert_at: $insertAt\n pin: $pin\n }\n ) {\n channel {\n id\n compressed_skeleton\n }\n }\n }\n"]);return c=function(){return e},e}let s=(0,r.createContext)({channel:null,channelId:0,createBlock:()=>Promise.resolve(0),createConnection:()=>Promise.resolve(),moveConnection:()=>Promise.resolve(),pinConnection:()=>Promise.resolve(),removeConnection:()=>Promise.resolve(),unpinConnection:()=>Promise.resolve()}),d=e=>{let{children:n,channel:t}=e,o=t.id,i=(0,l.Ryp)()[1],c=(0,r.useCallback)(async e=>{let{value:n,insertAt:t,title:a,description:l}=e;try{var r,c,s;let e=await i({input:{channel_ids:[o.toString()],description:l,insert_at:t,title:a,value:n}});if(e.error)throw e.error;if(!(null==(s=e.data)||null==(c=s.create_block)||null==(r=c.block)?void 0:r.id))throw Error("Unknown error.");return e.data.create_block.block.id}catch(e){throw e}},[o,i]),d=(0,l.cu8)()[1],p=(0,r.useCallback)(async e=>{let{id:n,type:t}=e;try{let e=await d({channelId:o.toString(),connectableId:n.toString(),connectableType:l.HCV[t]});if(e.error)throw e.error}catch(e){throw e}},[o,d]),u=(0,l.pd9)()[1],y=(0,r.useCallback)(async e=>{let{id:n,type:t,action:a,...r}=e;try{let e=await u({action:a,channelId:o.toString(),connectableId:n.toString(),connectableType:l.HCV[t],...r});if(e.error)throw e.error}catch(e){throw e}},[o,u]),h=(0,l.EAk)()[1],b=(0,r.useCallback)(async e=>{let{id:n,type:t,position:a}=e;try{let e=await h({channelId:o.toString(),connectableId:n.toString(),connectableType:l.HCV[t],insertAt:a});if(e.error)throw e.error}catch(e){throw e}},[o,h]),g=(0,l.NFm)()[1],m=(0,r.useCallback)(async e=>{let{id:n,type:t,insertAt:a,pin:r}=e;try{let e=await g({channelId:o.toString(),connectableId:n.toString(),connectableType:l.HCV[t],insertAt:a,pin:r});if(e.error)throw e.error}catch(e){throw e}},[o,g]),f=(0,r.useCallback)(async e=>{await m({...e,pin:!0})},[m]),C=(0,r.useCallback)(async e=>{await m({...e,pin:!1})},[m]);return(0,a.jsx)(s.Provider,{value:{channel:t,channelId:o,createBlock:c,createConnection:b,moveConnection:y,pinConnection:f,removeConnection:p,unpinConnection:C},children:n})},p=()=>(0,r.useContext)(s);(0,i.J1)(c())},20559:(e,n,t)=>{t.d(n,{O:()=>A,u:()=>D});var o=t(37876),a=t(89572),l=t(76841),r=t(5336),i=t(84147),c=t(77680),s=t(14232),d=t(93026),p=t(52001),u=t(16607),y=t(29979),h=t(70842),b=t(74716),g=t(11891),m=t(95822),f=t(89099);let C=(e,n)=>{let{defaultValue:t,serializer:o}=n,[a,l]=(0,s.useState)(()=>{try{let n=window.sessionStorage.getItem(e);return n?o.parse(n):t}catch(e){return console.warn(e),t}});return[a,n=>{try{window.sessionStorage.setItem(e,o.stringify(n)),l(n)}catch(e){console.warn(e)}},()=>{try{window.sessionStorage.removeItem(e),l(t)}catch(e){console.warn(e)}}]};var v=t(52447),k=t(14728),$=t(10394),I=t(10963);let x=()=>{let{sendToast:e,sendGenericError:n,retractToast:t}=(0,p.Yf)(),{createBlock:a}=(0,u.p)(),{addCell:l}=(0,k.E1)(),{triggerUpload:r}=(0,I.Su)();return{handleUpload:i=>{i.preventDefault(),i.stopPropagation(),r({maxFileSizeMb:$.J.file,onBatch:async a=>{let l=null;try{let n=a.uploads.length;l=e({title:"Adding ".concat(n," file").concat(1===n?"":"s"),content:(0,o.jsx)(I.Hs,{id:a.id}),duration:1/0}),await a.promise}catch(e){n(e)}finally{if(!l)return void console.error("Unable to notify for batch upload");t(l.id,1e3)}},onSuccess:async e=>{let{location:t}=e;try{let e=await a({value:t});l({type:"Block",id:e})}catch(e){n(e)}}})}}},w={mode:"Pending",input:""},E=(e,n)=>{switch(n.type){case"PREFILL":return{...e,input:n.payload,mode:"Focused"};case"MODE":return{...e,mode:n.payload};case"INPUT":return{...e,input:n.payload};case"CLEAR":return{...e,input:""};case"RESET":return w;default:return e}},A=()=>{let e=(0,s.useRef)(null),[{mode:n,input:t},d]=(0,s.useReducer)(E,w),{sendToast:b,updateToast:g,retractToast:k}=(0,p.Yf)(),{createBlock:$}=(0,u.p)(),I=(0,f.useRouter)(),[A,M,S]=C("components.Grid.GridCellAdd.".concat(encodeURIComponent(I.asPath)),{defaultValue:null,serializer:{parse:e=>e,stringify:e=>"".concat(e)}});(0,m.H)(()=>{A&&d({type:"PREFILL",payload:A})}),(0,y.vC)("meta+enter",()=>{e.current&&e.current.focus()},[e]),(0,y.vC)("esc",()=>{var n;null==(n=e.current)||n.blur()},{enableOnFormTags:!0});let{handleUpload:T}=x(),O=async()=>{if(!e.current||""===t.trim()||"Adding"===n)return;d({type:"MODE",payload:"Adding"});let o=b({title:"Adding…",duration:1/0});try{await $({value:t}),g({...o,title:"Block added successfully"}),d({type:"CLEAR"}),S(),k(o.id,2500)}catch(n){console.error(n);let e=(0,v.PE)(n);g({...o,variant:"error",title:e}),k(o.id,1e4)}d({type:"MODE",payload:"Focused"}),e.current.focus()};return(0,o.jsx)(a.a,{children:(0,o.jsxs)(a.a,{css:{width:"100%",height:"100%",display:"flex",flexDirection:"column",gap:"$2",userSelect:"none",position:"relative"},children:[(0,o.jsxs)(a.a,{onMouseEnter:()=>{"Pending"===n&&d({type:"MODE",payload:"Hover"})},onMouseLeave:()=>{""===t&&"Hover"===n&&d({type:"MODE",payload:"Pending"})},onClick:()=>{e.current&&(e.current.focus(),d({type:"MODE",payload:"Focused"}))},css:{aspectRatio:"1 / 1",bg:"$gray1",position:"relative",overflow:"hidden",cursor:"text"},children:[(0,o.jsx)(_,{mode:n,children:(0,o.jsx)(c.c11,{width:"100%",height:"100%"})}),(0,o.jsx)(P,{mode:n,children:(0,o.jsxs)(r.E,{size:"lg",css:{color:"$link",px:"$4","@bp1":{px:"$2"}},children:["Drop or"," ",(0,o.jsx)(i.D,{onFocus:()=>{d({type:"MODE",payload:"Hover"})},onClick:T,css:{textDecoration:"underline",textDecorationThickness:"from-font",textDecorationColor:"$gray8","&:focus":{outline:"none",color:"$gray6"}},children:"choose"})," ","files, paste a URL (image, video, or link) or type text here"]})}),(0,o.jsx)(D,{"aria-label":"Add block",ref:e,mode:n,value:t,onChange:e=>{d({type:"INPUT",payload:e.target.value}),M(e.target.value)},onKeyDown:e=>{"Enter"!==e.key||e.shiftKey||(e.preventDefault(),e.stopPropagation(),O())},onBlur:()=>{""===t&&"Focused"===n&&d({type:"MODE",payload:"Pending"})},onFocus:()=>{d({type:"MODE",payload:"Focused"})},readOnly:"Adding"===n}),(0,o.jsxs)(r.E,{size:"xs",css:{position:"absolute",left:"$2",bottom:"$2",pointerEvents:"none"},children:[(0,o.jsx)(h.E,{variant:"keyboard",css:{opacity:0}}),(0,o.jsx)(h.E,{variant:"keyboard",css:{position:"absolute",top:0,left:0},style:{opacity:+("Focused"===n&&""===t)},children:"shift + enter for line break"}),(0,o.jsx)(h.E,{variant:"keyboard",css:{position:"absolute",top:0,left:0},style:{opacity:+("Pending"===n)},children:"⌘ + enter"})]})]}),(0,o.jsx)(a.a,{css:{height:"$8"},children:t&&(0,o.jsx)(l.$,{size:"fill",disabled:!t||"Adding"===n,onClick:O,children:"Adding"===n?"Adding…":"Add block"})})]})})},_=(0,d.pH)("div",{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:"$5",height:"$5",color:"$link",pointerEvents:"none",variants:{mode:{Pending:{opacity:1},Hover:{opacity:0},Focused:{opacity:0,pointerEvents:"none"},Adding:{opacity:0}}}}),P=(0,d.pH)("div",{position:"absolute",top:0,left:0,width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",textAlign:"center",p:"$2",variants:{mode:{Pending:{opacity:0},Hover:{opacity:1,zIndex:1},Focused:{opacity:0,pointerEvents:"none"},Adding:{opacity:0}}}}),D=(0,d.pH)("textarea",(0,b.h)({},g.gc,{width:"100%",height:"100% !important",variants:{mode:{Pending:{bg:"transparent"},Hover:{bg:"transparent"},Focused:{bg:"$gray1"},Adding:{bg:"$gray1"}}}}))}}]);