UNPKG

@sanity/scheduled-publishing

Version:

> [!IMPORTANT] > As of [v3.39.0](https://www.sanity.io/changelog/e6013ee5-8214-4e03-9593-f7b19124b8a3) of Sanity Studio, this plugin has been deprecated and the Scheduled Publishing functionality has been moved into the core studio package. > Read more an

1 lines 70.6 kB
const e=["onChange","onBlur","onKeyPress","value"],t=["onChange"],n=["selectTime","onFocusedDateChange","selectedDate","focusedDate","timeStep","onSelect","customValidation"],i=["value","onChange","customValidation"],l=["value","inputValue","customValidation","onInputChange","onChange","selectTime","timeStep"],o=["value","markers","title","description","placeholder","parseInputValue","formatInputValue","deserialize","serialize","selectTime","timeStep","readOnly","level","onChange","customValidation"],d=["type","onChange"],r=["focusedDate","onFocusedDateChange","onSelect","selectedDate"];var a,c,s,u,h,p;function m(e,t){if(null==e)return{};var n,i,l=function(e,t){if(null==e)return{};var n,i,l={},o=Object.keys(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function f(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function g(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?f(Object(n),!0).forEach((function(t){v(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):f(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function v(e,t,n){return(t=function(e){var t=function(e,t){if("object"!=typeof e||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==typeof t?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function y(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}import{CalendarIcon as b,SearchIcon as C,EarthAmericasIcon as w,ChevronLeftIcon as k,ChevronRightIcon as S,ErrorOutlineIcon as M,WarningOutlineIcon as x,InfoOutlineIcon as L,PublishIcon as D,TrashIcon as T,CheckmarkCircleIcon as z,EllipsisVerticalIcon as A,EditIcon as V,UnknownIcon as I,ClockIcon as E,CloseIcon as O,SelectIcon as B,CheckmarkIcon as P,SortIcon as j}from"@sanity/icons";import{useTools as W,FormField as N,useClient as R,getDraftId as U,getPublishedId as H,useSchema as F,isValidationErrorMarker as Z,isValidationWarningMarker as _,isValidationInfoMarker as X,useValidationStatus as Y,useDocumentPreviewStore as q,InsufficientPermissionsMessage as G,useCurrentUser as J,useDocumentPairPermissions as Q,useTimeAgo as K,TextWithTone as $,UserAvatar as ee,SanityDefaultPreview as te,Preview as ne,definePlugin as ie}from"sanity";import{useRouter as le,IntentLink as oe,useStateLink as de,route as re}from"sanity/router";import{jsxs as ae,jsx as ce,Fragment as se}from"react/jsx-runtime";import{Flex as ue,Card as he,Button as pe,Stack as me,Inline as fe,Text as ge,useToast as ve,Dialog as ye,Box as be,Autocomplete as Ce,Tooltip as we,ElementQuery as ke,Grid as Se,TextInput as Me,useForwardedRef as xe,Select as Le,usePortal as De,useClickOutside as Te,LayerProvider as ze,Popover as Ae,MenuItem as Ve,Container as Ie,MenuButton as Ee,Menu as Oe,Badge as Be,Label as Pe,Heading as je,useTheme as We}from"@sanity/ui";import Ne,{useMemo as Re,useState as Ue,useEffect as He,useCallback as Fe,forwardRef as Ze,useId as _e,createContext as Xe,useContext as Ye,useRef as qe}from"react";import Ge,{css as Je}from"styled-components";import{getTimeZones as Qe}from"@vvo/tzdb";import{formatInTimeZone as Ke,utcToZonedTime as $e,zonedTimeToUtc as et}from"date-fns-tz";import tt from"debug";import{endOfDay as nt,getWeek as it,startOfMonth as lt,eachWeekOfInterval as ot,lastDayOfMonth as dt,addDays as rt,isSameDay as at,isSameMonth as ct,setDate as st,setMonth as ut,addMonths as ht,setYear as pt,setMinutes as mt,setHours as ft,parse as gt,isValid as vt,parseISO as yt,getMinutes as bt,formatDistance as Ct,format as wt,isWeekend as kt}from"date-fns";import St from"react-focus-lock";import Mt from"lodash/range";import{range as xt}from"lodash";import Lt from"swr";import Dt from"pluralize";import{of as Tt,combineLatest as zt}from"rxjs";import{map as At,startWith as Vt}from"rxjs/operators";import*as It from"@sanity/util/paths";import{red as Et,gray as Ot}from"@sanity/color";import{useVirtualizer as Bt}from"@tanstack/react-virtual";const Pt=e=>{const{buttonText:t="Action",disabled:n,icon:i,onAction:l,onComplete:o,tone:d="positive"}=e;return ae(ue,{children:[ce(he,{flex:1,children:ce(pe,{mode:"bleed",onClick:o,style:{width:"100%"},text:"Cancel"})}),l&&ce(he,{flex:1,marginLeft:3,children:ce(pe,{disabled:n,icon:i,onClick:l,style:{width:"100%"},text:t,tone:d})})]})},jt=e=>{const{body:t,title:n}=e;return ae(me,{paddingY:1,space:3,children:[ae(fe,{space:2,children:[ce(b,{}),n&&ce(ge,{size:2,weight:"semibold",children:n})]}),t&&ce(ge,{size:1,children:t})]})},Wt={publish:{actionName:"Publishing",badgeColor:"primary",badgeTone:"positive"},unpublish:{actionName:"Unpublishing",badgeColor:"danger",badgeTone:"critical"}},Nt={scheduled:{title:"Upcoming"},succeeded:{title:"Completed"},cancelled:{title:"Failed"}},Rt=Object.keys(Nt).filter((e=>!!e)),Ut="This document has validation errors that should be resolved before its publish date.",Ht=ae(se,{children:["Scheduled Publishing is only available on"," ",ce("a",{href:"https://sanity.io/pricing",children:"Growth or higher plans"}),". Please upgrade to enable access."]}),Ft={SMALL:"d MMM yy',' p",MEDIUM:"d MMMM yyyy',' p",LARGE:"iiii',' d MMMM yyyy',' p"},Zt={inputDateTimeFormat:"dd/MM/yyyy HH:mm"},_t="scheduled-publishing:";function Xt(e){const t="".concat(_t).concat(e);return tt&&tt.enabled(t)?tt(t):tt(_t)}function Yt(e){let t;var n;return"object"==typeof(n=e)&&n&&"statusCode"in n&&"response"in n?t=403===e.response.statusCode?"Forbidden. Please check that your project has access to Scheduled Publishing.":e.message:(e instanceof Error&&(t=e.message),t=String(e)),t}tt(_t);const qt=Xt("useScheduleOperation"),Gt=Qe().map((e=>({abbreviation:e.abbreviation,alternativeName:e.alternativeName,mainCities:e.mainCities.join(", "),name:e.name,namePretty:e.name.replaceAll("_"," "),offset:e.currentTimeFormat.split(" ")[0],value:"".concat(e.currentTimeFormat," ").concat(e.abbreviation," ").concat(e.name)})));function Jt(){return Gt.find((e=>e.name===Intl.DateTimeFormat().resolvedOptions().timeZone))||Gt.find((e=>"GMT"===e.abbreviation))||Gt[0]}function Qt(){const e=localStorage.getItem("scheduled-publishing::time-zone");try{if(e)return JSON.parse(e)}catch(e){}return Jt()}const Kt=()=>{const e=Re((()=>Qt()),[]),[t,n]=Ue(e),i=ve();He((()=>{const e=()=>{n(Qt())};return window.addEventListener("timeZoneEventUpdate",e),()=>{window.removeEventListener("timeZoneEventUpdate",e)}}),[]);const l=Fe((e=>{let{date:n,format:i=Ft.LARGE,includeTimeZone:l,prefix:o}=e,d=i;return o&&(d="'".concat(o,"'").concat(i)),l&&(d="".concat(i," (zzzz)")),Ke(n,t.name,d)}),[t.name]),o=Fe((()=>$e(new Date,t.name)),[t.name]),d=Fe((e=>{qt("handleNewValue:",e),n((t=>{try{t.name!==e.name&&(localStorage.setItem("scheduled-publishing::time-zone",JSON.stringify(e)),window.dispatchEvent(new Event("timeZoneEventUpdate"))),i.push({closable:!0,description:ce(jt,{body:"".concat(e.alternativeName," (").concat(e.namePretty,")"),title:"Time zone updated"}),duration:15e3,status:"info"})}catch(e){console.error(e),i.push({closable:!0,description:ce(jt,{body:Yt(e),title:"Unable to update time zone"}),status:"error"})}return e}))}),[i]),r=Fe((e=>$e(e,t.name)),[t.name]),a=Fe((e=>et(e,t.name)),[t.name]);return{formatDateTz:l,getCurrentZoneDate:o,setTimeZone:d,timeZone:t,utcToCurrentZoneDate:r,zoneDateToUtc:a}},$t=Ge.span((e=>{let{theme:t}=e;return Je(a||(a=y(["\n color: ",";\n font-weight: 500;\n margin-left: 1em;\n "])),t.sanity.color.base.fg)})),en=Ge.span((e=>{let{theme:t}=e;return Je(c||(c=y(["\n color: ",";\n margin-left: 1em;\n "])),t.sanity.color.input.default.readOnly.fg)})),tn=e=>{const{onClose:t}=e,{setTimeZone:n,timeZone:i}=Kt(),[l,o]=Ue(i),d=(null==l?void 0:l.name)!==i.name,r=Re((()=>(null==l?void 0:l.name)===Jt().name),[l]);return ce(ye,{footer:ce(be,{paddingX:4,paddingY:3,children:ce(Pt,{buttonText:"Update time zone",disabled:!d||!l,onAction:()=>{l&&n(l),null==t||t()},onComplete:t,tone:"primary"})}),header:"Select time zone",id:"time-zone",onClose:t,width:1,children:ae(me,{padding:4,space:5,children:[ce(ge,{size:1,children:"The selected time zone will change how dates are represented in schedules."}),ae(me,{space:3,children:[ae(ue,{align:"center",justify:"space-between",children:[ae(fe,{space:2,children:[ce(ge,{size:1,weight:"semibold",children:"Time zone"}),r&&ce(ge,{muted:!0,size:1,children:"local time"})]}),!r&&ce(ge,{size:1,weight:"medium",children:ce("a",{onClick:()=>{o(Jt())},style:{cursor:"pointer"},children:"Select local time zone"})})]}),ce(Ce,{fontSize:2,icon:C,id:"timezone",onChange:e=>{const t=Gt.find((t=>t.value===e));o(t)},openButton:!0,options:Gt,padding:4,placeholder:"Search for a city or time zone",popover:{boundaryElement:document.querySelector("body"),constrainSize:!0,placement:"bottom-start"},renderOption:e=>ce(he,{as:"button",padding:3,children:ae(ge,{size:1,textOverflow:"ellipsis",children:[ae("span",{children:["GMT",e.offset]}),ce($t,{children:e.alternativeName}),ce(en,{children:e.mainCities})]})}),renderValue:(e,t)=>t?"".concat(t.alternativeName," (").concat(t.namePretty,")"):"",tabIndex:-1,value:null==l?void 0:l.value})]})]})})};function nn(){const[e,t]=Ue(!1),n=Fe((()=>{t(!1)}),[]);return{visible:e,show:Fe((()=>{t(!0)}),[]),hide:n}}function ln(){const{visible:e,show:t,hide:n}=nn();return{DialogTimeZone:e?tn:null,dialogProps:{onClose:n,visible:e},dialogTimeZoneShow:t,hide:n}}const on=e=>{const{useElementQueries:t}=e,{timeZone:n}=Kt(),{DialogTimeZone:i,dialogProps:l,dialogTimeZoneShow:o}=ln();return ae(se,{children:[i&&ce(i,g({},l)),ce(we,{content:ce(be,{padding:2,children:ae(ge,{muted:!0,size:1,children:["Displaying schedules in ",n.alternativeName," (GMT",n.offset,")"]})}),portal:!0,children:ce("div",{children:t?ae(se,{children:[ce(be,{className:"button-small",children:ce(pe,{fontSize:1,icon:w,mode:"bleed",onClick:o,text:"".concat(n.abbreviation)})}),ce(be,{className:"button-large",children:ce(pe,{fontSize:1,icon:w,mode:"bleed",onClick:o,text:"".concat(n.alternativeName," (").concat(n.namePretty,")")})})]}):ce(pe,{fontSize:1,icon:w,mode:"bleed",onClick:o,text:"".concat(n.alternativeName," (").concat(n.namePretty,")")})})})]})},dn=Ge(ke)(s||(s=y(["\n .button-small {\n display: block;\n }\n .button-large {\n display: none;\n }\n\n &[data-eq-min~='2'] {\n .button-small {\n display: none;\n }\n .button-large {\n display: block;\n }\n }\n"]))),rn=e=>{const{title:t}=e;return ce(dn,{children:ae(ue,{align:"center",children:[t,ce("input",{style:{opacity:0,position:"absolute",width:0},tabIndex:-1,type:"button"}),ce(be,{marginLeft:2,style:{marginTop:"-1em",marginBottom:"-1em"},children:ce(on,{useElementQueries:!0})})]})})};function an(e){const{date:t,focused:n,isCurrentMonth:i,isToday:l,customValidation:o,onSelect:d,selected:r}=e,a=Re((()=>!o||o(nt(t))),[t,o]),c=Fe((()=>{a&&d(t)}),[t,a,d]);return ce("div",{"aria-selected":r,"data-ui":"CalendarDay",children:ce(he,{"aria-label":t.toDateString(),"aria-pressed":r,as:"button",__unstable_focusRing:!0,"data-weekday":!0,"data-focused":n?"true":"",disabled:!a,role:"button",tabIndex:-1,onClick:c,padding:3,radius:2,selected:r,tone:l||r?"primary":"default",children:ce(ge,{muted:!r&&!i,style:{textAlign:"center"},weight:i?"medium":"regular",children:t.getDate()})})})}const cn=["January","February","March","April","May","June","July","August","September","October","November","December"],sn=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],un=xt(0,24),hn=["ArrowUp","ArrowDown","ArrowLeft","ArrowRight"],pn=[1,2,3,4,5,6],mn=e=>{return(t=(e=>{const t=lt(e);return ot({start:t,end:dt(t)})})(e),t.map((e=>[e,...pn.map((t=>rt(e,t)))]))).map((e=>({number:it(e[0]),days:e})));var t};function fn(e){const{getCurrentZoneDate:t}=Kt(),{customValidation:n}=e;return ce(be,{"aria-hidden":e.hidden||!1,"data-ui":"CalendarMonth",children:ae(Se,{gap:1,style:{gridTemplateColumns:"repeat(7, minmax(44px, 46px))"},children:[sn.map((e=>ce(be,{paddingY:2,children:ce(ge,{size:1,weight:"medium",style:{textAlign:"center"},children:e})},e))),mn(e.date).map(((i,l)=>i.days.map(((i,o)=>{const d=e.focused&&at(i,e.focused),r=e.selected&&at(i,e.selected),a=at(i,t()),c=e.focused&&ct(i,e.focused);return ce(an,{date:i,focused:d,isCurrentMonth:c,isToday:a,customValidation:n,onSelect:e.onSelect,selected:r},"".concat(l,"-").concat(o))}))))]})})}const gn=!1,vn=Ne.forwardRef((function(t,n){let{onChange:i,onBlur:l,onKeyPress:o,value:d}=t,r=m(t,e);const[a,c]=Ne.useState(),s=Ne.useCallback((e=>{c(e.currentTarget.value)}),[]),u=Ne.useCallback((e=>{e.currentTarget.value!=="".concat(d)&&i&&i(e),c(void 0)}),[i,d]),h=Ne.useCallback((e=>{u(e),l&&l(e)}),[u,l]),p=Ne.useCallback((e=>{"Enter"===e.key&&u(e),o&&o(e)}),[u,o]);return ce(Me,g(g({},r),{},{"data-testid":"date-input",ref:n,value:void 0===a?d:a,onChange:s,onBlur:h,onKeyPress:p}))})),yn=e=>{let{onChange:n}=e,i=m(e,t);const l=Ne.useCallback((e=>{const t=parseInt(e.currentTarget.value,10);isNaN(t)||n(t)}),[n]);return ce(vn,g(g({},i),{},{onChange:l,inputMode:"numeric"}))},bn=ce("span",{"data-preserve-focus":!0,style:{overflow:"hidden",position:"absolute",outline:"none"},tabIndex:-1}),Cn=Ze((function(e,t){const{getCurrentZoneDate:i,zoneDateToUtc:l}=Kt(),{selectTime:o,onFocusedDateChange:d,selectedDate:r=i(),focusedDate:a=r,timeStep:c=1,onSelect:s,customValidation:u}=e,h=m(e,n),p=Fe((e=>d(l(e))),[d,l]),f=Fe((e=>p(st(ut(a,e),1))),[a,p]),v=Fe((e=>f(Number(e.currentTarget.value))),[f]),y=Fe((e=>p(ht(a,e))),[a,p]),b=Fe((e=>p(pt(a,e))),[a,p]),C=Fe((e=>{s(l(mt(ft(e,r.getHours()),r.getMinutes())))}),[s,r,l]),w=Fe((e=>{const t=Number(e.currentTarget.value);s(l(mt(r,t)))}),[s,r,l]),k=Fe((e=>{const t=Number(e.currentTarget.value);s(l(ft(r,t)))}),[s,r,l]);Fe(((e,t)=>{s(l(ft(mt(r,t),e)))}),[s,r,l]);const S=xe(t),M=Fe((()=>{var e,t;null==(t=null==(e=S.current)?void 0:e.querySelector('[data-focused="true"]'))||t.focus()}),[S]),x=Fe((e=>{var t,n;hn.includes(e.key)&&(e.preventDefault(),e.currentTarget.hasAttribute("data-calendar-grid")?M():("ArrowUp"===e.key&&d(l(rt(a,-7))),"ArrowDown"===e.key&&d(l(rt(a,7))),"ArrowLeft"===e.key&&d(l(rt(a,-1))),"ArrowRight"===e.key&&d(l(rt(a,1))),null==(n=null==(t=S.current)?void 0:t.querySelector("[data-preserve-focus]"))||n.focus()))}),[l,S,M,d,a]);He((()=>{M()}),[M]),He((()=>{var e;(null==(e=document.activeElement)?void 0:e.matches("[data-calendar-grid], [data-calendar-grid] [data-preserve-focus]"))&&M()}),[S,M,a]);const L=Fe((()=>s(new Date)),[s]);return ae(be,g(g({"data-ui":"Calendar"},h),{},{ref:S,children:[ae(be,{padding:2,children:[ae(ue,{children:[ce(be,{flex:1,children:ce(wn,{moveFocusedDate:y,onChange:v,value:null==a?void 0:a.getMonth()})}),ce(be,{marginLeft:2,children:ce(kn,{moveFocusedDate:y,onChange:b,value:a.getFullYear()})})]}),ae(be,{"data-calendar-grid":!0,onKeyDown:x,marginTop:2,overflow:"hidden",tabIndex:0,children:[ce(fn,{date:a,focused:a,customValidation:u,onSelect:C,selected:r}),bn]})]}),o&&ae(be,{padding:2,style:{borderTop:"1px solid var(--card-border-color)"},children:[ae(ue,{align:"center",children:[ae(ue,{align:"center",flex:1,children:[ce(be,{children:ce(Le,{"aria-label":"Select hour",value:null==r?void 0:r.getHours(),onChange:k,children:un.map((e=>ce("option",{value:e,children:"".concat(e).padStart(2,"0")},e)))})}),ce(be,{paddingX:1,children:ce(ge,{children:":"})}),ce(be,{children:ce(Le,{"aria-label":"Select minutes",value:null==r?void 0:r.getMinutes(),onChange:w,children:Mt(0,60,c).map((e=>ce("option",{value:e,children:"".concat(e).padStart(2,"0")},e)))})})]}),ce(be,{marginLeft:2,children:ce(pe,{text:"Set to current time",mode:"bleed",onClick:L})})]}),gn]})]}))}));function wn(e){const{moveFocusedDate:t,onChange:n,value:i}=e,l=Fe((()=>t(-1)),[t]),o=Fe((()=>t(1)),[t]);return ae(ue,{flex:1,children:[ce(pe,{"aria-label":"Go to previous month",onClick:l,mode:"bleed",icon:k,paddingX:2,radius:0}),ce(be,{flex:1,children:ce(Le,{radius:0,value:i,onChange:n,children:cn.map(((e,t)=>ce("option",{value:t,children:e},t)))})}),ce(pe,{"aria-label":"Go to next month",mode:"bleed",icon:S,onClick:o,paddingX:2,radius:0})]})}function kn(e){const{moveFocusedDate:t,onChange:n,value:i}=e,l=Fe((()=>t(-12)),[t]),o=Fe((()=>t(12)),[t]);return ae(ue,{children:[ce(pe,{"aria-label":"Previous year",onClick:l,mode:"bleed",icon:k,paddingX:2,radius:0}),ce(yn,{value:i,onChange:n,radius:0,style:{width:65}}),ce(pe,{"aria-label":"Next year",onClick:o,mode:"bleed",icon:S,paddingX:2,radius:0})]})}const Sn=Ne.forwardRef((function(e,t){const{utcToCurrentZoneDate:n}=Kt(),{value:l=new Date,onChange:o,customValidation:d}=e,r=m(e,i),[a,c]=Ne.useState(),s=Ne.useCallback((e=>{o(e),c(void 0)}),[o]);return ce(Cn,g(g({},r),{},{ref:t,selectedDate:n(l),onSelect:s,focusedDate:n(a||l),onFocusedDateChange:c,customValidation:d}))})),Mn=Ne.forwardRef((function(e,t){const{value:n,inputValue:i,customValidation:o,onInputChange:d,onChange:r,selectTime:a,timeStep:c}=e,s=m(e,l),[u,h]=Ne.useState(null),p=xe(t),f=Ne.useRef(null),[v,y]=Ne.useState(!1),C=De();Te((()=>y(!1)),[u]);const w=Fe((()=>{var e,t;null==(e=p.current)||e.focus(),null==(t=p.current)||t.select()}),[p]),k=Fe((e=>{"Escape"===e.key&&y(!1)}),[]),S=Fe((()=>y(!0)),[]),M=ce(be,{padding:1,children:ce(pe,{ref:f,icon:b,mode:"bleed",padding:2,onClick:S,style:{display:"block"},"data-testid":"select-date-button"})});return ce(vn,g(g({ref:p},s),{},{value:i,onChange:d,suffix:v?ce(ze,{zOffset:1e3,children:ce(Ae,{constrainSize:!0,content:ce(be,{overflow:"auto",children:ce(St,{onDeactivation:w,children:ce(Sn,{selectTime:a,timeStep:c,onKeyUp:k,value:n,onChange:r,customValidation:o})})}),"data-testid":"date-input-dialog",fallbackPlacements:["bottom","bottom-start","top-end","top","top-start"],floatingBoundary:C.element,open:!0,placement:"bottom-end",portal:!0,radius:2,ref:h,children:M})}):M}))})),xn=Ne.forwardRef((function(e,t){const{value:n,markers:i,title:l,description:d,placeholder:r,parseInputValue:a,formatInputValue:c,deserialize:s,serialize:u,selectTime:h,timeStep:p,readOnly:f,level:v,onChange:y,customValidation:b}=e,C=m(e,o),[w,k]=Ne.useState(null);He((()=>{k(null)}),[n]);const{zoneDateToUtc:S}=Kt(),M=void 0===n,x=Ne.useCallback((e=>{const t=e.currentTarget.value,n=""===t?null:a(t);null===n?(y(null),M&&w&&k(null)):n.isValid?y(u(S(n.date))):k(t)}),[M,S,w,u,y,a]),L=Ne.useCallback((e=>{y(e?u(e):null)}),[u,y]),D=xe(t),T=_e(),z=w?a(w):n?s(n):null,A=w||((null==z?void 0:z.isValid)?c(z.date):n),V=Re((()=>i.map((e=>({level:e.level,path:e.path,message:e.item.message})))),[i]);return ce(N,{validation:(null==z?void 0:z.error)?[...V,{level:"error",message:z.error,path:[]}]:V,title:l,level:v,description:d,inputId:T,children:f?ce(Me,{value:A,readOnly:!0}):ce(Mn,g(g({},C),{},{id:T,selectTime:h,timeStep:p,placeholder:r||"e.g. ".concat(c(new Date)),ref:D,value:null==z?void 0:z.date,inputValue:A||"",readOnly:Boolean(f),onInputChange:x,onChange:L,customValidity:null==z?void 0:z.error,customValidation:b}))})}));function Ln(e){return e.toISOString()}function Dn(e){const t=new Date(e);return(n=t)instanceof Date&&!isNaN(n.valueOf())?{isValid:!0,date:t}:{isValid:!1,error:'Invalid date value: "'.concat(e,'"')};var n}const Tn=Ne.forwardRef((function(e,t){const{type:n,onChange:i}=e,l=m(e,d),{title:o,description:r,placeholder:a}=n,{inputDateTimeFormat:c}=function(){const e=W().find((e=>"schedules"===e.name));return(null==e?void 0:e.options)||(console.warn("[scheduled-publishing] Unable to find tool options and reverting to default values - please ensure that the tool is available in the current studio."),Zt)}(),{getCurrentZoneDate:s,timeZone:u}=Kt(),{customValidation:h,customValidationMessage:p,timeStep:f}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{customValidation:e.customValidation||function(){return!0},customValidationMessage:e.customValidationMessage||"Invalid date.",calendarTodayLabel:e.calendarTodayLabel||"Today",timeStep:"timeStep"in e&&Number(e.timeStep)||1}}(n.options),v=Fe((e=>{let t=e;null!==t&&f>1&&(t=function(e,t){if(!t||1===t)return e;const n=yt(e),i=bt(n),l=i%t;return Ln(0!==l?mt(n,i-l):n)}(t,f)),i(t)}),[i,f]),y=Ne.useCallback((e=>Ke(e,u.name,"".concat(c))),[c,u.name]),b=Ne.useCallback((e=>{const t=gt(e,"".concat(c),s());return vt(t)?h(t)?{isValid:!0,date:t}:{isValid:!1,error:p}:{isValid:!1,error:'Invalid date. Must be in the format "'.concat(c,'"')}}),[h,p,s,c]);return ce(xn,g(g({},l),{},{onChange:v,ref:t,selectTime:!0,timeStep:f,title:o,description:r,placeholder:a,serialize:Ln,deserialize:Dn,formatInputValue:y,customValidation:h,parseInputValue:b}))})),zn=e=>{const{onChange:t,value:n}=e,{getCurrentZoneDate:i}=Kt(),[l,o]=Ue();return ce(me,{space:4,children:ce(he,{children:ce(Tn,{level:0,markers:[],onChange:e=>{e&&t&&(t({date:e}),o(e))},type:{name:"date",options:{customValidation:e=>e>i(),customValidationMessage:"Date cannot be in the past."},title:"Date and time"},value:void 0===l?null==n?void 0:n.date:l})})})};function An(e){const{onChange:t,value:n}=e;return ae(me,{space:4,children:[e.children,ce(zn,{onChange:t,value:n})]})}const Vn=e=>{const{description:t,title:n}=e;return ce(he,{overflow:"hidden",padding:4,radius:2,shadow:1,tone:"critical",children:ae(ue,{align:"center",gap:4,children:[ce(ge,{size:2,children:ce(M,{})}),ae(fe,{space:2,children:[ce(ge,{size:1,weight:"semibold",children:n}),t&&ce(ge,{size:1,children:t})]})]})})},In=Xe(void 0);function En(e){let{children:t,value:n}=e;return ce(In.Provider,{value:n,children:t})}const On={refreshWhenHidden:!1,refreshWhenOffline:!1,revalidateIfStale:!1,revalidateOnFocus:!1,revalidateOnReconnect:!1,shouldRetryOnError:!1};function Bn(){const e=R({apiVersion:"2022-09-01"}),t="/projects/".concat(e.config().projectId,"/features/scheduledPublishing"),n=Fe((()=>e.request({method:"GET",uri:t})),[e,t]),{data:i}=Lt(t,n,On);return i}function Pn(e){return(null==e?void 0:e.executedAt)||(null==e?void 0:e.executeAt)}function jn(){let{reverseOrder:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{reverseOrder:!1};return function(t,n){const i=Pn(t),l=Pn(n);return i===l?0:null===i?1:null===l?-1:(i>l?1:-1)*(e?-1:1)}}const Wn=Xt("useScheduleOperation");function Nn(){const e=R({apiVersion:"2022-09-01"});return Re((()=>function(e){const{dataset:t,projectId:n}=e.config();function i(i){let{date:l,documentId:o}=i;Wn("_create:",o);const d=new Date(l);return d.setSeconds(0),d.setMilliseconds(0),e.request({body:{documents:[{documentId:o}],executeAt:d,name:d},method:"POST",uri:"/schedules/".concat(n,"/").concat(t)})}function l(i){let{scheduleId:l}=i;return Wn("_delete:",l),e.request({method:"DELETE",uri:"/schedules/".concat(n,"/").concat(t,"/").concat(l)})}function o(e){let{scheduleIds:t}=e;Wn("_deleteMultiple:",t);const n=t.map((e=>l({scheduleId:e})));return Promise.allSettled(n)}function d(i){let{scheduleId:l}=i;return Wn("_publish:",l),e.request({method:"POST",uri:"/schedules/".concat(n,"/").concat(t,"/").concat(l,"/publish")})}function r(i){let{documentSchedule:l,scheduleId:o}=i;return Wn("_update:",o,l),e.request({body:l,method:"PATCH",uri:"/schedules/".concat(n,"/").concat(t,"/").concat(o)})}return{create:i,delete:l,deleteMultiple:o,publish:d,update:r}}(e)),[e])}var Rn=(e=>(e.create="scheduleCreate",e.delete="scheduleDelete",e.deleteMultiple="scheduleDeleteMultiple",e.publish="schedulePublish",e.update="scheduleUpdate",e))(Rn||{});const Un=(e,t)=>new CustomEvent(e,t);function Hn(){const e=ve(),{formatDateTz:t}=Kt(),n=Nn();return{createSchedule:async function(i){let{date:l,displayToast:o=!0,documentId:d}=i;try{const i=await n.create({date:l,documentId:d});window.dispatchEvent(Un("scheduleCreate",{detail:{date:l,documentId:d}})),o&&(null==i?void 0:i.executeAt)&&e.push({closable:!0,description:ce(jt,{body:t({date:new Date(i.executeAt),includeTimeZone:!0,prefix:"Publishing on "}),title:"Schedule created"}),duration:15e3,status:"success"})}catch(t){o&&e.push({closable:!0,description:ce(jt,{body:Yt(t),title:"Unable to create schedule"}),duration:15e3,status:"error"})}},deleteSchedule:async function(t){let{displayToast:i=!0,schedule:l}=t;try{await n.delete({scheduleId:null==l?void 0:l.id}),window.dispatchEvent(Un("scheduleDelete",{detail:{scheduleId:null==l?void 0:l.id}})),i&&e.push({closable:!0,description:ce(jt,{title:"Schedule deleted"}),status:"success"})}catch(t){i&&e.push({closable:!0,description:ce(jt,{body:Yt(t),title:"Unable to delete schedule"}),duration:15e3,status:"error"})}},deleteSchedules:async function(t){let{displayToast:i=!0,schedules:l}=t;try{const t=l.map((e=>e.id)),o=await n.deleteMultiple({scheduleIds:t}),{fulfilledIds:d,rejectedReasons:r}=o.reduce(((e,t,n)=>("fulfilled"===t.status&&e.fulfilledIds.push(l[n].id),"rejected"===t.status&&e.rejectedReasons.push("[".concat(l[n].id,"]: ").concat(t.reason)),e)),{fulfilledIds:[],rejectedReasons:[]}),a=d.length,c=r.length;(null==d?void 0:d.length)>0&&window.dispatchEvent(Un("scheduleDeleteMultiple",{detail:{scheduleIds:d}})),i&&((null==d?void 0:d.length)>0&&e.push({closable:!0,description:ce(jt,{title:"".concat(Dt("schedule",a,!0)," deleted")}),status:"success"}),(null==r?void 0:r.length)>0&&e.push({closable:!0,description:ce(jt,{body:null==r?void 0:r.toString(),title:"Unable to delete ".concat(Dt("schedule",c,!0))}),duration:15e3,status:"error"}))}catch(t){i&&e.push({closable:!0,description:ce(jt,{body:Yt(t),title:"Unable to delete schedules"}),duration:15e3,status:"error"})}},publishSchedule:async function(t){let{displayToast:i=!0,schedule:l}=t;try{const t=l.id;await n.publish({scheduleId:t}),window.dispatchEvent(Un("schedulePublish",{detail:{scheduleId:t}})),i&&e.push({closable:!0,description:ce(jt,{title:"Document published"}),status:"success"})}catch(t){i&&e.push({closable:!0,description:ce(jt,{body:Yt(t),title:"Unable to publish schedule"}),duration:15e3,status:"error"})}},updateSchedule:async function(i){let{date:l,displayToast:o=!0,scheduleId:d}=i;try{await n.update({documentSchedule:{executeAt:l},scheduleId:d}),window.dispatchEvent(Un("scheduleUpdate",{detail:{date:l,scheduleId:d}})),o&&e.push({closable:!0,description:ce(jt,{body:t({date:new Date(l),includeTimeZone:!0,prefix:"Publishing on "}),title:"Schedule updated"}),duration:15e3,status:"success"})}catch(t){o&&e.push({closable:!0,description:ce(jt,{body:Yt(t),title:"Unable to update schedule"}),duration:15e3,status:"error"})}}}}function Fn(){const e=R({apiVersion:"2022-09-01"}),{dataset:t,projectId:n}=e.config();return"/schedules/".concat(n,"/").concat(t)}function Zn(e){const t=R({apiVersion:"2022-09-01"});return Fe((()=>t.request({query:e.params,method:"GET",uri:e.url})),[t,e])}const _n={refreshInterval:1e4,refreshWhenHidden:!1,refreshWhenOffline:!1,revalidateOnFocus:!1,revalidateOnReconnect:!0,shouldRetryOnError:!1},Xn=[];function Yn(){let{documentId:e,state:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=Fn(),i=Re((()=>({params:{documentIds:e,state:t},url:n})),[n,e,t]),l=Zn(i),{data:o,error:d,mutate:r}=Lt(i,l,_n),a=Fe((e=>{r((t=>{var n;return{schedules:null==(n=null==t?void 0:t.schedules)?void 0:n.filter((t=>t.id!==e.detail.scheduleId))}}),!0)}),[r]),c=Fe((e=>{r((t=>{var n;return{schedules:null==(n=null==t?void 0:t.schedules)?void 0:n.filter((t=>!e.detail.scheduleIds.includes(t.id)))}}),!0)}),[r]),s=Fe((e=>{r((t=>{const n=(null==t?void 0:t.schedules)||[],i=n.findIndex((t=>t.id===e.detail.scheduleId));return{schedules:[...null==n?void 0:n.slice(0,i),g(g({},n[i]),{},{executeAt:(new Date).toISOString(),state:"succeeded"}),...null==n?void 0:n.slice(i+1)]}}),!0)}),[r]),u=Fe((e=>{r((t=>{const n=(null==t?void 0:t.schedules)||[],i=n.findIndex((t=>t.id===e.detail.scheduleId));return{schedules:[...null==n?void 0:n.slice(0,i),g(g({},n[i]),{},{executeAt:e.detail.date}),...null==n?void 0:n.slice(i+1)]}}),!0)}),[r]);He((()=>(window.addEventListener(Rn.delete,a),window.addEventListener(Rn.deleteMultiple,c),window.addEventListener(Rn.publish,s),window.addEventListener(Rn.update,u),()=>{window.removeEventListener(Rn.delete,a),window.removeEventListener(Rn.deleteMultiple,c),window.removeEventListener(Rn.publish,s),window.removeEventListener(Rn.update,u)})),[a,c,s,u]);const h=Re((()=>{var e;return null==(e=null==o?void 0:o.schedules)?void 0:e.sort(jn())}),[null==o?void 0:o.schedules]);return{error:d,isInitialLoading:!d&&!o,schedules:h||Xn}}function qn(e){const[t,n]=Ue(!1),[i,l]=Ue(e&&(null==e?void 0:e.executeAt)?{date:e.executeAt}:null);return{formData:i,isDirty:t,onFormChange:Fe((t=>{const i=(null==e?void 0:e.executeAt)&&new Date(e.executeAt).getTime()===new Date(null==t?void 0:t.date).getTime();l(t),n(!i)}),[null==e?void 0:e.executeAt])}}function Gn(e){return Re((()=>e?e.replaceAll("drafts.",""):void 0),[e])}function Jn(e){var t;return null==(t=e.documents)?void 0:t[0]}function Qn(e){var t;return null==(t=Jn(e))?void 0:t.documentId.replaceAll("drafts.","")}function Kn(e){const t=Jn(e),n=F(),i=t.documentType;return Re((()=>{if(i)return n.get(i)}),[i,n])}const $n={validation:[],isValidating:!1};function ei(e){return Re((()=>function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:$n.validation;const t=e.filter(Z).length>0,n=e.filter(_).length>0;let i="default";return n&&(i="default"),t&&(i="critical"),{markers:e,validationTone:i,hasError:t,hasWarning:n}}(e)),[e])}const ti=Ge(ge)(u||(u=y(["\n white-space: initial;\n"]))),ni={error:"critical",warning:"caution",info:"primary"};function ii(e){const{marker:t,onClick:n,path:i,truncate:l}=e,o=Fe((()=>{n&&n(t.path)}),[t.path,n]),d=ni[null==t?void 0:t.level]||void 0,r=ae(ue,{children:[ce(be,{children:ae(ge,{size:1,children:["error"===t.level&&ce(M,{}),"warning"===t.level&&ce(x,{}),"info"===t.level&&ce(L,{})]})}),ae(me,{space:2,flex:1,paddingLeft:3,children:[i&&ce(ti,{size:1,weight:"semibold",children:i}),t.item.message&&ce(ti,{muted:!0,size:1,textOverflow:l?"ellipsis":void 0,children:t.item.message})]})]});return ce(Ve,{padding:1,onClick:o,radius:2,tone:d,children:ce(be,{padding:2,children:r})})}function li(e){const{documentType:t,kind:n,validation:i,onFocus:l,onClose:o,truncate:d}=e,r=i.filter(Z),a=i.filter(_),c=i.filter(X),s=Fe((function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];l&&l(e),o&&o()}),[l,o]),u=e=>{const n=t&&t.fields,i=n&&n.find((t=>t.name===e[0]));return i&&i.type.title||""},h=r.length>0,p=a.length>0,m=c.length>0;return h||p||m?ae(Ie,{width:0,"data-kind":n,"data-testid":"validation-list",children:[h&&r.map(((e,t)=>ce(ii,{truncate:d,path:u(e.path),marker:e,onClick:s},t))),p&&a.map(((e,t)=>ce(ii,{truncate:d,path:u(e.path),marker:e,onClick:s},t))),m&&c.map(((e,t)=>ce(ii,{truncate:d,path:u(e.path),marker:e,onClick:s},t)))]}):null}const oi={portal:!0,constrainSize:!0,preventOverflow:!0,tone:"default",width:0};function di(e){const{type:t,markers:n,menuHeader:i,documentId:l}=e,o=le(),{hasError:d,hasWarning:r}=ei(n),a=d||r?"visible":"hidden",c=_e()||"",s=Gn(l),u=Fe((e=>{s&&o.navigateIntent("edit",{id:s,path:encodeURIComponent(It.toString(e))})}),[o,s]);return ce(Ee,{id:c||"",button:ce(pe,{title:"Show validation issues",mode:"bleed","data-testid":"schedule-validation-list-button",icon:d?M:x,style:{visibility:a},tone:d?"critical":"default"}),menu:ce(Oe,{padding:1,children:ce(Ie,{width:0,children:ae(me,{space:1,children:[null!=i?i:null,ce(li,{documentType:t,validation:n,onFocus:u})]})})}),popover:oi,placement:"bottom-end"})}function ri(e){let{id:t,schemaType:n}=e;return ae(me,{space:4,children:[ae(ge,{size:1,children:["Schedule this document to be published at any time in the future.",ce("br",{}),"Any edits in the meantime will be added to the scheduled document."]}),ce(ge,{size:1,children:"Visit the Schedules page to get an overview of all schedules."}),ce(ai,{id:t,type:n})]})}function ai(e){let{id:t,type:n}=e;const i=Gn(t),l=function(e){const t=F();return Re((()=>t.get(e)),[e,t])}(n),o=Y(i,n),{hasError:d}=ei(o.validation);return d?ce(he,{padding:2,radius:1,shadow:1,tone:"critical",children:ae(ue,{gap:1,align:"center",children:[ce(di,{markers:o.validation,type:l,documentId:i}),ce(ge,{size:1,children:Ut})]})}):null}function ci(e,t){const n=q(),[i,l]=Ue({});return He((()=>{if(!t)return;const i=function(e,t,n,i){const l=(e=>!0===e.liveEdit)(t)?Tt({snapshot:null}):e.observeForPreview({_type:"reference",_ref:U(n)},t),o=e.observeForPreview({_type:"reference",_ref:H(n)},t);return zt([l,o]).pipe(At((e=>{let[t,n]=e;return{draft:t.snapshot?g({title:i},t.snapshot||{}):null,isLoading:!1,published:n.snapshot?g({title:i},n.snapshot||{}):null}})),Vt({draft:null,isLoading:!0,published:null}))}(n,t,e,"").subscribe((e=>{l(e)}));return()=>{null==i||i.unsubscribe()}}),[n,t,e]),i}const si=Ge(ke)(h||(h=y(["\n .date-small {\n display: inline;\n }\n .date-medium {\n display: none;\n }\n .date-large {\n display: none;\n }\n\n &[data-eq-min~='1'] {\n .date-small {\n display: none;\n }\n .date-medium {\n display: inline;\n }\n .date-large {\n display: none;\n }\n }\n\n &[data-eq-min~='2'] {\n .date-small {\n display: none;\n }\n .date-medium {\n display: none;\n }\n .date-large {\n display: inline;\n }\n }\n"]))),ui=e=>{const{onClose:t,schedule:n}=e,{updateSchedule:i}=Hn(),{formData:l,isDirty:o,onFormChange:d}=qn(n),r=Fe((()=>{(null==l?void 0:l.date)&&i({date:l.date,scheduleId:n.id}).then(t)}),[n.id,i,t,null==l?void 0:l.date]);return ce(ye,{footer:ce(be,{paddingX:4,paddingY:3,children:ce(Pt,{buttonText:"Update",disabled:!o,onAction:r,onComplete:t,tone:"primary"})}),header:ce(rn,{title:"Edit schedule"}),id:"time-zone",onClose:t,width:1,children:ce(be,{padding:4,children:ce(An,{onChange:d,value:l})})})};function hi(e){const{visible:t,show:n,hide:i}=nn();return{DialogScheduleEdit:t?ui:null,dialogProps:{onClose:i,schedule:e,visible:t},dialogScheduleEditShow:n,hide:i}}const pi=e=>{const{currentUser:t,hasPermission:n,icon:i,onClick:l,permissionsOperationLabel:o,title:d,tone:r}=e;return ce(we,{content:ce(be,{paddingX:2,paddingY:1,children:ce(G,{currentUser:t,operationLabel:o})}),disabled:n,placement:"left",portal:!0,children:ce("div",{children:ce(Ve,{disabled:!n,icon:i,onClick:l,text:d,tone:r})})})},mi=e=>{const{actions:t,onDelete:n,onEdit:i,schedule:l,schemaType:o}=e,d=Jn(l),r=J(),[a,c]=Q({id:d.documentId,type:null==o?void 0:o.name,permission:"publish"}),{deleteSchedule:s,publishSchedule:u}=Hn(),h=!c&&!(null==a?void 0:a.granted),p=()=>{s({schedule:l}).then((()=>null==n?void 0:n()))};return r?ae(se,{children:[(null==t?void 0:t.edit)&&ce(pi,{currentUser:r,hasPermission:!h,icon:b,onClick:()=>{null==i||i()},permissionsOperationLabel:"edit schedules",title:"Edit schedule"}),(null==t?void 0:t.execute)&&ce(pi,{currentUser:r,hasPermission:!h,icon:D,onClick:()=>{u({schedule:l})},permissionsOperationLabel:"execute schedules",title:"Publish now"}),(null==t?void 0:t.delete)&&ce(pi,{currentUser:r,hasPermission:!h,icon:T,onClick:p,permissionsOperationLabel:"delete schedules",title:"Delete schedule",tone:"critical"}),(null==t?void 0:t.clear)&&ce(pi,{currentUser:r,hasPermission:!h,icon:z,onClick:p,permissionsOperationLabel:"delete schedules",title:"Clear completed schedule"})]}):null},fi=e=>{const{actions:t,onDelete:n,onEdit:i,schedule:l,schemaType:o}=e;return ce(Ee,{button:ce(pe,{icon:A,mode:"bleed",paddingX:2,paddingY:3,tone:"default"}),id:"contextMenu",menu:ce(Oe,{children:ce(mi,{actions:t,onDelete:n,onEdit:i,schedule:l,schemaType:o})}),placement:"left",popover:{portal:!0,tone:"default"}})};function gi(e){let{schedule:t,updateValidation:n}=e;const i=Kn(t),l=Qn(t);return l&&(null==i?void 0:i.name)?ce(vi,{id:l,schemaName:i.name,updateValidation:n}):null}function vi(e){let{id:t,schemaName:n,updateValidation:i}=e;const[l,o]=Ue(!1);return He((()=>{const e=setTimeout((()=>{o(!0)}),1500);return()=>{clearTimeout(e)}}),[]),l?ce(yi,{id:t,schemaName:n,updateValidation:i}):null}function yi(e){let{id:t,schemaName:n,updateValidation:i}=e;const l=Y(t,n);return He((()=>{l.isValidating||i(l)}),[i,l]),null}const bi=e=>{const{date:t,useElementQueries:n}=e,{formatDateTz:i}=Kt(),l=Ct(t,new Date,{addSuffix:!0}),o=i({date:t,format:Ft.LARGE}),d=i({date:t,format:Ft.MEDIUM}),r=i({date:t,format:Ft.SMALL});return ce(ge,{size:1,textOverflow:"ellipsis",children:ce(we,{content:ce(be,{padding:2,children:ce(ge,{muted:!0,size:1,children:l})}),portal:!0,children:ce("span",{children:n?ae(se,{children:[ce("span",{className:"date-small",children:r}),ce("span",{className:"date-medium",children:d}),ce("span",{className:"date-large",children:o})]}):o})})})};function Ci(e){let{time:t}=e;const n=K(t);return ae("span",{title:n,children:[n," ago"]})}const wi=e=>{let{document:t}=e;return ce(we,{content:ce(be,{padding:2,children:ce(ge,{size:1,children:t?ae(se,{children:["Edited ",(null==t?void 0:t._updatedAt)&&ce(Ci,{time:null==t?void 0:t._updatedAt})]}):ce(se,{children:"No unpublished edits"})})}),portal:!0,children:ce($,{tone:"caution",dimmed:!t,muted:!t,size:1,children:ce(V,{})})})},ki=e=>{let{document:t}=e;return ce(we,{content:ce(be,{padding:2,children:ce(ge,{size:1,children:t?ae(se,{children:["Published ",t._updatedAt&&ce(Ci,{time:t._updatedAt})]}):ce(se,{children:"Not published"})})}),portal:!0,children:ce($,{tone:"positive",dimmed:!t,muted:!t,size:1,children:ce(D,{})})})},Si={portal:!0,constrainSize:!0,preventOverflow:!0,tone:"default",width:0},Mi=e=>{const{stateReason:t}=e;return ce(Ee,{id:"stateReason",button:ce(pe,{title:"Schedule failed",mode:"bleed","data-testid":"schedule-validation-list-button",icon:M,tone:"critical"}),menu:ce(Oe,{padding:1,children:ae(Ie,{padding:2,width:0,children:[ce(ge,{size:1,children:"This schedule failed to run."}),ae(ue,{gap:3,marginTop:4,padding:1,children:[ce(ge,{size:1,style:{color:Et[700].hex},children:ce(M,{})}),ce(ge,{size:1,style:{color:Et[700].hex},weight:"medium",children:t})]})]})}),placement:"bottom-end",popover:Si})},xi=e=>{const{id:t}=e;return ce(ee,{user:t,withTooltip:!0})},Li=e=>{const{children:t,contextMenu:n,linkComponent:i,onClick:l,previewState:o,publishedDocumentId:d,schedule:r,schemaType:a,useElementQueries:c}=e,[s,u]=Ue($n),{validation:h}=s,{hasError:p,validationTone:m}=ei(h),{formatDateTz:f}=Kt(),g=Pn(r),v=g?new Date(g):null;return ce(he,{padding:1,radius:2,shadow:1,tone:m,children:ae(ue,{align:"center",gap:1,justify:"space-between",children:[ce(he,{__unstable_focusRing:!0,as:i||void 0,"data-as":l||i?"a":void 0,flex:1,onClick:l,padding:1,radius:2,tabIndex:0,tone:m,children:ae(ue,{align:"center",gap:3,justify:"flex-start",paddingLeft:t?0:[1,2],children:[t&&ce(be,{style:{flexBasis:"auto",flexGrow:1},children:t}),"unpublish"===r.action&&ce(ue,{style:{flexShrink:0},children:ce(Be,{fontSize:0,mode:"outline",tone:Wt[r.action].badgeTone,children:r.action})}),ce(be,{display:["block","none"],style:{flexShrink:0,width:"90px"},children:ce(me,{space:2,children:v?ae(se,{children:[ce(ge,{size:1,children:f({date:v,format:"dd/MM/yyyy"})}),ce(ge,{size:1,children:f({date:v,format:"p"})})]}):ce(ge,{muted:!0,size:1,children:ce("em",{children:"No date specified"})})})}),ce(be,{display:["none","block"],style:{flexShrink:0,maxWidth:"250px",width:t?"35%":"auto"},children:v?ce(bi,{date:v,useElementQueries:c}):ce(ge,{muted:!0,size:1,children:ce("em",{children:"No date specified"})})}),!t&&ce(be,{style:{visibility:"hidden"},children:ce(te,{isPlaceholder:!0})}),ae(ue,{align:"center",style:{flexShrink:0,marginLeft:"auto"},children:[ce(be,{display:["none","none","block"],marginX:3,style:{flexShrink:0},children:ce(xi,{id:null==r?void 0:r.author})}),ce(be,{display:["none","block"],marginX:[2,2,3],style:{flexShrink:0},children:ae(fe,{space:4,children:[ce(ki,{document:null==o?void 0:o.published}),ce(wi,{document:null==o?void 0:o.draft})]})})]})]})}),ae(ue,{justify:"center",style:{width:"38px"},children:["scheduled"===r.state&&ae(be,{children:[ce(gi,{schedule:r,updateValidation:u}),ce(di,{markers:h,type:a,documentId:d,menuHeader:ce(be,{padding:2,children:ce(ge,{size:1,children:p?Ut:"This document has validation warnings."})})})]}),"cancelled"===r.state&&ce(Mi,{stateReason:r.stateReason})]}),"cancelled"===r.state&&ce(Mi,{stateReason:r.stateReason}),n&&ce(be,{style:{flexShrink:0},children:n})]})})},Di=e=>{const{schedule:t,schemaType:n}=e,{DialogScheduleEdit:i,dialogProps:l,dialogScheduleEditShow:o}=hi(t),{onComplete:d}=function(){const e=Ye(In);if(void 0===e)throw new Error("useDocumentActionProps must be used within a DocumentActionPropsProvider");return e}(),r=Re((()=>Qn(t)),[t]);return ae(se,{children:[i&&ce(i,g({},l)),ce(Li,{contextMenu:ce(fi,{actions:{delete:!0,edit:!0},onDelete:d,onEdit:o,schedule:t,schemaType:n}),onClick:o,publishedDocumentId:r,schedule:t,schemaType:n})]})},Ti=e=>{const{onDelete:t,schedule:n}=e,{deleteSchedule:i}=Hn();return ce(Ee,{button:ce(pe,{icon:A,mode:"bleed",paddingX:2,paddingY:3,tone:"default"}),id:"contextMenu",menu:ce(Oe,{children:ce(Ve,{icon:T,onClick:()=>{i({schedule:n}).then((()=>null==t?void 0:t()))},text:"Delete schedule",tone:"critical"})}),placement:"left",popover:{portal:!0,tone:"default"}})},zi=e=>{let{schedule:t}=e;return ce(Li,{contextMenu:ce(Ti,{schedule:t}),schedule:t,useElementQueries:!0,children:ce(te,{icon:I,layout:"default",subtitle:ce("em",{children:"It may have been deleted"}),title:ce("em",{style:{color:Et[600].hex},children:"Document not found"})})})},Ai=e=>{const{previewState:t,schedule:n,schemaType:i}=e,l=t.draft||t.published,o="succeeded"===n.state,d="scheduled"===n.state,{DialogScheduleEdit:r,dialogProps:a,dialogScheduleEditShow:c}=hi(n),s=Gn(null==l?void 0:l._id),u=Re((()=>Ze(((e,t)=>ce(oe,g(g({},e),{},{intent:"edit",params:{type:i.name,id:l&&H(null==l?void 0:l._id)},ref:t}))))),[i,l]);return ae(se,{children:[r&&ce(r,g({},a)),ce(Li,{contextMenu:ce(fi,{actions:{clear:o,delete:!o,edit:d,execute:d},onEdit:c,schedule:n,schemaType:i}),linkComponent:u,previewState:t,publishedDocumentId:s,schedule:n,schemaType:i,useElementQueries:!0,children:t.isLoading?ce(te,{icon:null==i?void 0:i.icon,isPlaceholder:t.isLoading,layout:"default"}):ce(ne,{layout:"default",schemaType:i,value:l})})]})},Vi=e=>{const{schedule:t,type:n}=e,i=Jn(t),l=Kn(t),o=ci(null==i?void 0:i.documentId,l),d=!(o.draft||o.published)&&!o.isLoading,r=Re((()=>!l||d?ce(zi,{schedule:t}):"document"===n?ce(Di,{schedule:t,schemaType:l}):"tool"===n?ce(Ai,{previewState:o,schedule:t,schemaType:l}):null),[d,n,o,t,l]);return ce(si,{children:r})},Ii=e=>{const{schedules:t}=e;return ce(me,{space:4,children:0===t.length?ce(be,{children:ce(ge,{size:1,children:"No schedules"})}):ce(me,{space:2,children:t.map((e=>ce(Vi,{schedule:e,type:"document"},e.id)))})})},Ei=Xt("ScheduleAction"),Oi=e=>{const{draft:t,id:n,liveEdit:i,onComplete:l,published:o,type:d}=e,r=J(),[a,c]=Q({id:n,type:d,permission:"publish"}),{createSchedule:s}=Hn(),u=Bn(),[h,p]=Ue(!1),{formData:m,onFormChange:f}=qn(),{error:g,isInitialLoading:v,schedules:y}=Yn({documentId:n,state:"scheduled"});Ei("schedules",y);const C=y&&y.length>0,w=null!==t||null!==o,k=!c&&!(null==a?void 0:a.granted),S=Fe((()=>{p(!0)}),[]),M=Fe((()=>{(null==m?void 0:m.date)&&s({date:m.date,documentId:n}).then(l)}),[l,s,n,null==m?void 0:m.date]),x=C?"Edit Schedule":"Schedule";if(k)return{disabled:!0,icon:b,label:x,title:ce(G,{currentUser:r,operationLabel:"edit schedules"})};let L,D="This document doesn't exist yet";return w&&(D=null),v&&(D="Loading schedules"),i&&(D="Live Edit is enabled for this content type and publishing happens automatically as you make changes"),L=!1===u?{content:ce(ge,{size:1,children:Ht}),header:"Feature not available",onClose:l,type:"dialog"}:{content:g?ce(Vn,{description:"More information in the developer console.",title:"Something went wrong, unable to retrieve schedules."}):ce(En,{value:e,children:C?ce(Ii,{schedules:y}):ce(An,{onChange:f,value:m,children:ce(ri,{id:n,schemaType:d})})}),footer:!C&&ce(Pt,{buttonText:"Schedule",disabled:!(null==m?void 0:m.date),icon:E,onAction:M,onComplete:l,tone:"primary"}),header:ce(rn,{title:x}),onClose:l,type:"dialog"},{dialog:h&&L,disabled:v||!w||i,label:x,icon:b,onHandle:S,title:D&&ce(be,{style:{maxWidth:"315px"},children:D})}};function Bi(e){const t=e.findIndex((e=>"publish"===e.action));return t<0?[Oi,...e]:[...e.slice(0,t+1),Oi,...e.slice(t+1)]}const Pi=Xt("ScheduledBadge"),ji=e=>{const{schedules:t}=Yn({documentId:e.id,state:"scheduled"});Pi("schedules",t);const n=null==t?void 0:t[0];if(!n||!n.executeAt)return null;const i=wt(new Date(n.executeAt),Ft.LARGE);return{color:Wt[n.action].badgeColor,label:"Scheduled",title:"".concat(Wt[n.action].actionName," on ").concat(i," (local time)")}};function Wi(e){return[...e,ji]}const Ni=Xe(void 0),Ri=[];function Ui(e){let{children:t,value:n}=e;const[i,l]=Ue(n.sortBy||"executeAt"),{utcToCurrentZoneDate:o}=Kt(),d=Fe((e=>function(t){const n=Pn(t);if(!n)return!1;const i=new Date(n),l=o(i);return at(l,e)}),[o]),r=Fe((e=>function(t){return t.state===e}),[]),a=Re((()=>n.schedules.filter((e=>n.selectedDate?d(n.selectedDate)(e):r(n.scheduleState)(e))).sort(((e,t)=>{if("createdAt"===i)return e[i]<t[i]?1:-1;if("executeAt"===i){return jn({reverseOrder:!("scheduled"===n.scheduleState||n.selectedDate)})(e,t)}return 1}))||[]),[r,n.schedules,n.scheduleState,n.selectedDate,i,d]),c=Fe((e=>n.schedules.filter(d(e)).sort(jn())),[n.schedules,d]);return ce(Ni.Provider,{value:{activeSchedules:a,schedules:n.schedules||Ri,schedulesByDate:c,scheduleState:n.scheduleState,selectedDate:n.selectedDate,setSortBy:l,sortBy:i},children:t})}function Hi(){const e=Ye(Ni);if(void 0===e)throw new Error("useSchedules must be used within a SchedulesProvider");return e}const Fi=()=>!1===Bn()?ce(he,{padding:4,tone:"caution",children:ae(ue,{align:"center",gap:3,children:[ce(ge,{size:2,children:ce(L,{})}),ce(ge,{size:1,children:Ht})]})}):null;function Zi(e,t){return Re((()=>e.filter((e=>e.state===t))),[e,t])}const _i=e=>{const{selected:t,schedules:n,state:i}=e,l=Zi(n,i).length,o=l>0,d="cancelled"===i,{href:r,onClick:a}=de({state:{state:i}});return ce(pe,{as:"a",href:r,mode:"bleed",onClick:a,selected:t,tone:d?"critical":"default",children:ae(fe,{space:2,children:[ce(ge,{size:2,weight:"medium",children:Nt[i].title}),o&&ce(ge,{size:1,children:l})]})})},Xi=e=>{const{onClearDate:t,selectedDate:n}=e,{navigate:i}=le(),{schedules:l,scheduleState:o}=Hi(),d=e=>{i(e)},r=Zi(l,o);return ae(se,{children:[ae(be,{display:["block","block","none"],children:[n&&ce(pe,{fontSize:2,iconRight:O,onClick:t,text:wt(n,"d MMMM yyyy"),tone:"primary"}),o&&ce(Ee,{button:ce(pe,{fontSize:2,iconRight:B,mode:"ghost",text:"".concat(Nt[o].title," (").concat((null==r?void 0:r.length)||0,")"),tone:"default"}),id:"state",menu:ae(Oe,{style:{minWidth:"175px"},children:[ce(be,{paddingX:3,paddingY:2,children:ce(Pe,{muted:!0,size:1,children:"Scheduled state"})}),Rt.map((e=>ce(Ve,{iconRight:e===o?P:void 0,onClick:d.bind(void 0,{state:e}),text:Nt[e].title},e)))]}),placement:"bottom"})]}),ae(be,{display:["none","none","block"],children:[n&&ce(pe,{iconRight:O,onClick:t,text:wt(n,"d MMMM yyyy"),tone:"primary"}),o&&ce(ue,{gap:2,children:Rt.map((e=>ce(_i,{schedules:l,selected:o===e,state:e},e)))})]})]})},Yi=e=>ae("svg",g(g({width:"100",height:"100",viewBox:"0 0 100 100",fill:"none",xmlns:"http://www.w3.org/2000/svg"},e),{},{children:[ce("path",{d:"M54 26C54 28.7614 49.0751 31 43 31C36.9249 31 32 28.7614 32 26C32 23.2386 36.9249 7 43 7C49.0751 7 54 23.2386 54 26Z",stroke:"#7B8CA8",strokeWidth:"1.2"}),ce("path",{d:"M65 71.5V57M65 71.5L60.5789 69.0132M65 71.5L60.5789 73.9868M65 57L57 52.5L54 54.1875M65 57V42.5M65 57L57 47M65 57L58.1586 60.8483M65 57L60.5789 67.5M65 42.5L57 38L54 39.6875M65 42.5L57 47M65 42.5V27.5M57 47L65 27.5M57 47L54 39.6875M57 47L54 45.3125M57 47L54 50.75M57 23L65 27.5M57 23L54 24.6875V39.6875M57 23V60M65 27.5L57 32L54 30.3125",stroke:"#7B8CA8",strokeWidth:"1.2"}),ce("path",{d:"M54 76C54 78.7614 49.0751 81 43 81C36.9249 81 32 78.7614 32 76M54 76H60.5V63L54 57M54 76V57M32 76H25V63L32 57M32 76V57M32 26V57M54 26V57M54 45C54 47.7614 49.0751 50 43 50V35C49.0751 35 54 32.7614 54 30",stroke:"#7B8CA8",strokeWidth:"1.2"}),ce("path",{d:"M43 45.5701H44.8976L45.8465 43.1981L46.9679 42.7335L49.3162 43.7399L50.658 42.3981L49.6516 40.0499L50.1161 38.9284L52.4882 37.9795V36.0819L50.1161 35.1331L49.6516 34.0116M47.1334 34.9653C47.5197 35.5597 47.7441 36.269 47.7441 37.0307C47.7441 39.1268 46.0449 40.826 43.9488 40.826C43.6212 40.826 43.3033 40.7845 43 40.7064",stroke:"#7B8CA8",strokeWidth:"1.2",strokeLinejoin:"round"}),ce("path",{d:"M63.5464 78.6739L64.9606 78.0321L67.4355 78.5135L68.6174 78.2913L69.6174 77.1566H71.6174L72.6174 78.2913L73.7994 78.5135L76.2743 78.0321L77.6885 78.6739M63.5464 78.6739L64.607 79.7972L64.1174 80.3336L63.5464 80.4373M63.5464 78.6739V80.4373M77.6885 78.6739L76.6278 79.7972L77.1174 80.3336L77.6885 80.4373M77.6885 78.6739V80.4373M63.5464 80.4373L61.6174 80.7875V81.6952L64.1174 82.1491L64.607 82.6855L63.5464 83.8088L64.9606 84.4506L67.4355 83.9693L68.6174 84.1915L69.6174 85.3261H71.6174L72.6174 84.1915L73.7994 83.9693L76.2743 84.4506L77.6885 83.8088L76.6278 82.6855L77.1174 82.1491L79.6174 81.6952V80.7875L77.6885 80.4373",stroke:"#7B8CA8",strokeWidth:"1.2",strokeLinecap:"round",strokeLinejoin:"round"}),ce("path",{d:"M79.6174 81.4647V84.7162L77.6885 85.0664M76.2743 87.4716L77.6885 86.8298V85.0664M76.2743 87.4716L73.7994 86.9902L72.6174 87.2124L71.6174 88.3471M76.2743 87.4716V84.7162M61.6174 81.4647V84.7162L63.5464 85.0664M71.6174 88.3471H69.6174M71.6174 88.3471V85.3261M69.6174 88.3471L68.6174 87.2124L67.4355 86.9902L64.9606 87.4716M69.6174 88.3471V85.3261M64.9606 87.4716L64.2535 87.1507L63.5464 86.8298V85.0664M64.9606 87.4716V84.6825M63.54