"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[776],{82650:function(e,t,r){r.d(t,{Providers:function(){return d},S:function(){return u}});var n=r(57437),o=r(2265),a=r(40803),s=r(58421),i=r(93191),l=r(9337),c=r(99441);let u=(0,o.createContext)({user:null,userCategories:[]}),d=e=>{let{initialUser:t,initialUserCategories:r,children:d}=e,[p]=(0,o.useState)(new s.S({defaultOptions:{queries:{retry:!1},mutations:{retry:!1}}}));return(0,n.jsx)(i.QueryClientProvider,{client:p,children:(0,n.jsx)(l.V,{children:(0,n.jsxs)(c.Wh,{children:[(0,n.jsx)(a.Ix,{}),(0,n.jsx)(u.Provider,{value:{user:t,userCategories:r},children:d})]})})})}},15745:function(e,t,r){r.d(t,{nz:function(){return a},jL:function(){return i},cN:function(){return c}});var n=r(57437),o=r(92682);let a=e=>{let{options:t,className:r,placeholder:a,field:s,defaultValue:i}=e;return(0,n.jsx)(o.ZP,{instanceId:"react-multi-select",className:"".concat(r),classNamePrefix:"react-multi-select",placeholder:a,options:t,hideSelectedOptions:!1,closeMenuOnSelect:!1,isClearable:!0,isMulti:!0,onChange:e=>{s&&s.onChange(e.map(e=>e.value))},defaultValue:i,styles:{control:(e,t)=>({...e,backgroundColor:"#FFFFFF",borderColor:"transparent",boxShadow:t.menuIsOpen?"0 0 0 1px #F59E0B":"none","&:hover":{borderColor:t.isFocused?"#F59E0B":"transparent"},boxSizing:"border-box",cursor:"pointer"}),option:(e,t)=>({...e,backgroundColor:t.isSelected?"#F59E0B":t.isFocused?"#FCEFDC":"transparent",color:t.isSelected?"#FFFFFF":"#000000","&:hover":{backgroundColor:t.isSelected?"#F59E0B":"#FCEFDC"},cursor:"pointer"}),placeholder:e=>({...e,color:"#9ca3af"})}})};var s=r(2265);let i=e=>{let{options:t,className:r,placeholder:a,onChange:i}=e,[l,c]=(0,s.useState)(null);return(0,n.jsx)(o.ZP,{instanceId:"react-select",className:"".concat(r),classNamePrefix:"react-select",placeholder:a,options:t,hideSelectedOptions:!1,closeMenuOnSelect:!1,isClearable:!0,value:l,onChange:e=>{c(e),i&&e&&i(e.label,e.value)},styles:{control:(e,t)=>({...e,backgroundColor:"#FFFFFF",borderColor:"transparent",boxShadow:t.menuIsOpen?"0 0 0 1px #F59E0B":"none","&:hover":{borderColor:t.isFocused?"#F59E0B":"transparent"},boxSizing:"border-box",cursor:"pointer"}),option:(e,t)=>({...e,backgroundColor:t.isSelected?"#F59E0B":t.isFocused?"#FCEFDC":"transparent",color:t.isSelected?"#FFFFFF":"#000000","&:hover":{backgroundColor:t.isSelected?"#F59E0B":"#FCEFDC"},cursor:"pointer"}),placeholder:e=>({...e,color:"#9ca3af"})}})};var l=r(71682);let c=e=>{let{options:t,className:r,placeholder:o,onChange:a}=e,[i,c]=(0,s.useState)(t),[u,d]=(0,s.useState)(null);return(0,n.jsx)(l.Z,{instanceId:"react-creatable-select",className:"".concat(r," border-0 shadow"),classNamePrefix:"react-creatable-select",placeholder:o,options:i,onCreateOption:e=>{let t={label:e,value:e};c(e=>[...e,t]),d(t),a&&t&&a(t.label,t.value)},hideSelectedOptions:!1,closeMenuOnSelect:!1,isClearable:!0,value:u,onChange:e=>{d(e),a&&e&&a(e.label,e.value)},noOptionsMessage:()=>"カテゴリーがありません。",formatCreateLabel:e=>'"'.concat(e,'"を追加'),styles:{control:(e,t)=>({...e,backgroundColor:"#FFFFFF",borderColor:"transparent",boxShadow:t.menuIsOpen?"0 0 0 1px #F59E0B":"none","&:hover":{borderColor:t.isFocused?"#F59E0B":"transparent"},boxSizing:"border-box",cursor:"pointer"}),option:(e,t)=>({...e,backgroundColor:t.isSelected?"#F59E0B":t.isFocused?"#FCEFDC":"transparent",color:t.isSelected?"#FFFFFF":"#000000","&:hover":{backgroundColor:t.isSelected?"#F59E0B":"#FCEFDC"},cursor:"pointer"}),placeholder:e=>({...e,color:"#9ca3af"})}})}},30328:function(e,t,r){r.d(t,{yq:function(){return l},fh:function(){return u},Ef:function(){return p}});var n=r(93191),o=r(25524),a=r(55395);let s="get-me-categories-key",i=async e=>{await a.ob("/api/v1/me/category/".concat(e.id))},l=()=>{let e=(0,n.useQueryClient)();return(0,o.useMutation)({mutationFn:i,onSuccess:()=>{e.invalidateQueries({queryKey:[s]})}})},c=async e=>{await a.v_("/api/v1/me/categories",e)},u=()=>{let e=(0,n.useQueryClient)();return(0,o.useMutation)({mutationFn:c,onSuccess:()=>{e.invalidateQueries({queryKey:[s]})}})},d=async e=>await a.v_("/api/v1/me/category",e),p=()=>(0,o.useMutation)({mutationFn:d})},64820:function(e,t,r){r.r(t),r.d(t,{CategoryList:function(){return h}});var n=r(57437),o=r(2265),a=r(75149),s=r(85392),i=r(15554),l=r(37939),c=r(48880),u=r(15745),d=r(82650);let p=e=>{let{id:t,userCategoryId:r,name:o,handleDeleteCategory:a}=e,{attributes:l,listeners:u,setNodeRef:d,transform:p,transition:h}=(0,s.nB)({id:t}),g={transform:i.ux.Transform.toString(p),transition:h};return(0,n.jsx)(n.Fragment,{children:(0,n.jsxs)("li",{ref:d,style:g,...l,...u,className:"my-2 flex cursor-pointer items-center justify-between bg-white p-2 shadow",children:[(0,n.jsx)("span",{children:o}),(0,n.jsx)("div",{onClick:async()=>{await a(r)},children:(0,n.jsx)(c.XH,{className:"size-4 cursor-pointer text-gray-400 hover:text-gray-700"})})]})})},h=e=>{let{categories:t}=e,{userCategories:r}=(0,o.useContext)(d.S),i=t.map(e=>({label:e.name,value:e.id})),{userCategories:h,setUserCategories:g,setNewCategoryName:f,setNewCategoryID:m,handleAddCategory:v,handleUpdateCategories:F,handleDeleteCategory:C}=(0,l.u)(),y=(0,a.Dy)((0,a.VT)(a.we,{activationConstraint:{distance:5}}),(0,a.VT)(a.Lg,{coordinateGetter:s.is}));return(0,o.useEffect)(()=>{g(r.map((e,t)=>({id:t+1,userCategoryId:e.id,categoryId:e.categoryId,name:e.name,sort:e.sort})))},[r,g]),(0,n.jsx)(a.LB,{sensors:y,collisionDetection:a.pE,onDragEnd:e=>{let{active:t,over:r}=e;t.id!==(null==r?void 0:r.id)&&g(e=>{let n=e.findIndex(e=>e.id===t.id),o=e.findIndex(e=>e.id===(null==r?void 0:r.id)),a=(0,s.Rp)(e,n,o);return F(a),a})},children:(0,n.jsx)(s.Fo,{items:h.map(e=>({id:e.id})),strategy:s.qw,children:(0,n.jsxs)("div",{className:"mt-8 w-full grow rounded-3xl bg-gray-100 px-4 py-8 shadow-md",children:[(0,n.jsxs)("div",{className:"item-center flex justify-center",children:[(0,n.jsx)("div",{className:"w-full",children:(0,n.jsx)(u.cN,{options:i,placeholder:"カテゴリーを検索または追加してください",onChange:(e,t)=>{f(e),m(t)}})}),(0,n.jsx)("div",{className:"ml-4",children:(0,n.jsx)("button",{className:"flex size-9 items-center justify-center rounded-full bg-gray-300 p-2 text-white shadow-md hover:bg-gray-500",onClick:v,children:(0,n.jsx)(c.pO,{})})})]}),(0,n.jsx)("ul",{className:"mt-8",children:h.map(e=>(0,n.jsx)(p,{id:e.id,userCategoryId:e.userCategoryId,name:e.name,handleDeleteCategory:C},e.sort))})]})})})}},37939:function(e,t,r){r.d(t,{u:function(){return n.useUserCategories}});var n=r(47779)},47779:function(e,t,r){r.r(t),r.d(t,{useUserCategories:function(){return c}});var n=r(2265),o=r(16463),a=r(42135),s=r(16148),i=r(67412),l=r(30328);let c=()=>{let e=(0,o.useRouter)(),[t,r]=(0,n.useState)([]),[c,u]=(0,n.useState)(""),[d,p]=(0,n.useState)(0),{mutateAsync:h}=(0,l.Ef)(),{mutateAsync:g}=(0,l.fh)(),{mutateAsync:f}=(0,l.yq)(),m=async()=>{if(""===c){(0,i.Jc)("カテゴリー名が空です。");return}if(t.some(e=>e.name===c)){(0,i.Jc)("カテゴリーは既に存在します。");return}let n=t.length+1,o=await h({id:(0,a.Z)(Number,d)?d:void 0,name:c,sort:n});o?(r(e=>[...e,{...o,id:n,userCategoryId:o.id}]),(0,i.Qm)("カテゴリーを追加しました。"),e.refresh()):(0,i.Jc)("カテゴリーの追加に失敗しました")},v=async e=>{try{await f({id:e}),r(t=>{let r=t.filter(t=>t.userCategoryId!==e);return(0,s.Z)(r)||g(F(r)),r}),(0,i.e9)("カテゴリーを削除しました。")}catch(e){(0,i.Jc)("カテゴリーの削除に失敗しました")}},F=e=>e.map((e,t)=>({id:e.userCategoryId,categoryId:e.categoryId,sort:t+1}));return{userCategories:t,setUserCategories:r,setNewCategoryName:u,setNewCategoryID:p,handleAddCategory:m,handleUpdateCategories:async e=>{try{await g(F(e))}catch(e){(0,i.Jc)("カテゴリーの並び替えに失敗しました")}},handleDeleteCategory:v}}},35299:function(e,t,r){r.r(t),r.d(t,{userCategoriesSelectOptionsState:function(){return n}});let n=(0,r(99441).cn)({key:"user-categories-select-options-state-key",default:[]})},55395:function(e,t,r){r.d(t,{U2:function(){return m},gz:function(){return F},ob:function(){return C},v_:function(){return v}});var n=r(62902),o=r(73410),a=r(82574),s=r.n(a);class i extends Error{constructor(e,t){super(e),this.name="FetchError",this.status=t}}let l=e=>/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e),c=(e,t)=>(0,o.Z)(t)?e:e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""),u=(e,t)=>(0,o.Z)(e)||l(t)?t:c(e,t),d=e=>(0,o.Z)(e)?{"Content-Type":"application/json"}:e,p=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"include";return e},h=e=>e instanceof FormData?e:(0,o.Z)(e)?null:JSON.stringify(s()(e)),g=(e,t)=>{if((0,o.Z)(t)||0===Object.keys(t).length)return e;let r=new URLSearchParams;for(let e in t)(0,o.Z)(t[e])||r.append(e,String(t[e]));return"".concat(e,"?").concat(r.toString())},f=async(e,t,r)=>{let o=new Request(u("https://api.paput.io",e),t),a=await fetch(o,{next:null==r?void 0:r.next});if(!a.ok){var s,l;let e=await a.json();throw new i(null!==(l=null!==(s=e.message)&&void 0!==s?s:e.error)&&void 0!==l?l:"エラーが発生しました",a.status)}if(204===a.status)return{};let c=await a.json();return(0,n.Z)(c,{deep:!0})},m=async(e,t)=>await f(g(e,(null==t?void 0:t.params)!=null?s()(t.params):void 0),{headers:d(null==t?void 0:t.headers),credentials:p(null==t?void 0:t.credentials)},t),v=async(e,t,r)=>await f(e,{method:"POST",headers:d(null==r?void 0:r.headers),body:h(t),credentials:p(null==r?void 0:r.credentials)},r),F=async(e,t,r)=>await f(e,{method:"PUT",body:h(t),headers:d(null==r?void 0:r.headers),credentials:p(null==r?void 0:r.credentials)},r),C=async(e,t)=>await f(g(e,(null==t?void 0:t.params)!=null?s()(t.params):void 0),{method:"DELETE",headers:d(null==t?void 0:t.headers),credentials:p(null==t?void 0:t.credentials)},t)},67412:function(e,t,r){r.d(t,{e9:function(){return d},Jc:function(){return p},bm:function(){return c},pw:function(){return n},BK:function(){return l},Qm:function(){return h}});let n=e=>e.toLocaleString();var o=r(78603),a=r(10208),s=r(62737),i=r.n(s);let l=e=>{let t=i()(e).toDate();return(0,o.Z)(t,{addSuffix:!0,locale:a.Z})},c=e=>{var t;return null!==(t=i()(e).format("YYYY/MM/DD"))&&void 0!==t?t:""};r(55395);var u=r(40803);let d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"削除しました。";u.Am.error(e,{position:"top-right",autoClose:3e3,hideProgressBar:!0,closeOnClick:!0,pauseOnHover:!0,draggable:!0,progress:void 0,theme:"colored"})},p=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"エラーが発生しました。";u.Am.warning(e,{position:"top-right",autoClose:3e3,hideProgressBar:!0,closeOnClick:!0,pauseOnHover:!0,draggable:!0,progress:void 0,theme:"colored"})},h=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"完了しました。";u.Am.success(e,{position:"top-right",autoClose:3e3,hideProgressBar:!0,closeOnClick:!0,pauseOnHover:!0,draggable:!0,progress:void 0,theme:"colored"})}}}]);