@manifest-editor/shell 2.2.2-next.0.903673e → 2.2.2-next.0.a82700e

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/dist/index.cjs CHANGED
@@ -441,7 +441,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
441
441
  > * {
442
442
  min-width: 0;
443
443
  }
444
- `;function mo({panel:e,state:t,actions:n,isLeft:r,pinActions:i=n,transition:a,close:o,available:s=[],style:c,noHeader:l,isModal:f}){let p=(0,u.useContext)(m.ReactVaultContext)||null,[h,g]=(0,u.useState)(!1),_=Un(),v=pi(),{tabs:y,pinnable:b,hideHeader:x}=e?.options||{},S=(0,u.useMemo)(()=>(s||[]).filter(e=>!e.requiresState),[s]),{itemProps:w,isOpen:T,setIsOpen:E}=ir(S.length),[D,O]=(0,u.useState)(``),ee=(0,u.useRef)(void 0);(0,u.useEffect)(()=>g(!1),[_.state.canvasId,e?.id]),(0,u.useEffect)(()=>O(``),[e]),(0,u.useEffect)(()=>(ee.current=O,()=>{ee.current=void 0}),[]);let k=(0,u.useCallback)(e=>{ee.current&&ee.current(e)},[]),A=(0,u.useCallback)(r=>{let i=e?t.stack.length?n.popStack:e.backAction?()=>e&&e.backAction&&e.backAction(t,{...v,current:n},_):null:null;r&&(!i||r.metaKey)&&S.length?(r.preventDefault(),E(!0)):i?.()},[n,_,v,e,E,t,S.length]),j=r=>{n.change({id:r.id,state:r.defaultState,stacked:!!(t.stack.length||e?.backAction)})};if(!e||!t.current)return null;let M=e.backAction||t.stack.length?(0,d.jsx)(lo,{"aria-label":`Back`,onClick:A,children:(0,d.jsx)($a,{"aria-hidden":`true`})}):null,N=(0,d.jsx)(lo,{"aria-label":`Close panel`,onClick:o||n.close,children:(0,d.jsx)(tr,{"aria-hidden":`true`})});return(0,d.jsx)(ao.Provider,{value:k,children:(0,d.jsxs)(so,{"data-modal":f,"data-state":a,"data-flipped":r,style:c,"data-header":!l,children:[l?null:(0,d.jsxs)(co,{"data-tabs":!!y,"data-error":h,children:[(0,d.jsxs)(Ja,{style:{display:`flex`,height:`100%`},children:[e.renderBackAction?e.renderBackAction({backAction:A,fallback:M}):M,S.length?(0,d.jsxs)(Xa,{$open:T,role:`menu`,style:{left:`0.5em`},children:[(0,d.jsx)(Za,{children:`All panels`}),(0,d.jsx)(Qa,{}),S.map((t,n)=>(0,d.jsx)(Ya,{...w[n],onClick:()=>j(t),$active:e.id===t.id,children:t.label},n))]}):null]}),D?(0,d.jsx)(fo,{as:r?`h1`:`h2`,children:D}):x?(0,d.jsx)(uo,{}):(0,d.jsx)(fo,{as:r?`h1`:`h2`,children:e.label}),b?t.pinned?(0,d.jsx)(lo,{"aria-label":`Unpin panel`,onClick:i.unpin,children:(0,d.jsx)(eo,{"aria-hidden":`true`,fill:`orange`})}):(0,d.jsx)(lo,{"aria-label":`Pin panel`,onClick:()=>i.pin({id:e.id,state:t.state}),children:(0,d.jsx)(eo,{"aria-hidden":`true`,fill:`#ddd`})}):null,e.renderCloseAction?e.renderCloseAction({closeAction:o||n.close,fallback:N}):N]}),(0,d.jsx)(po,{className:`OverrideScrollbar`,children:(0,d.jsx)(C.ErrorBoundary,{onError:()=>g(!0),FallbackComponent:io,resetKeys:[_.state.canvasId,e?.id],onReset:()=>g(!1),children:ro(e.render(t.state||e.defaultState||{},{...v,current:n,vault:p,transition:a,isModal:f},_))})})]})})}function ho(e=`vault://homepage-collection.json`){let t=new x.Vault,n=window.localStorage.getItem(`preview-vault-collection`),r=!1;if(n)try{let i=JSON.parse(n);if(i.id&&i.id===e){t.dispatch((0,w.requestResource)({id:i.id}));let e=(0,T.actionListFromResource)(i.id,i);t.dispatch((0,w.batchActions)({actions:e})),r=!0}}catch{}if(!r){let n=(0,T.actionListFromResource)(e,{"@context":`http://iiif.io/api/presentation/3/context.json`,id:e,type:`Collection`,label:{en:[`Recent items`]},items:[]});t.dispatch((0,w.requestResource)({id:e})),t.dispatch((0,w.batchActions)({actions:n}))}return t.on(`after:@iiif/REMOVE_REFERENCE`,n=>{n.action.payload.id===e&&window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}),{vault:t,unsubscribe:()=>{},addHistory:(n,r)=>{let i=t.getState();if(n&&r&&(r===`Collection`||r===`Manifest`)){let a=i.iiif.entities.Collection[e];if(a){let i=a.items.findIndex(e=>e.id===n);i===-1?t.dispatch((0,w.addReference)({id:e,type:`Collection`,reference:{id:n,type:r},key:`items`,index:0})):t.dispatch((0,w.reorderEntityField)({id:e,type:`Collection`,key:`items`,startIndex:i,endIndex:0})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}},clearHistory:()=>{t.dispatch((0,w.modifyEntityField)({id:e,type:`Collection`,key:`items`,value:[]})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}}function go(){return(0,u.useContext)(_o)}const _o=(0,u.createContext)(new x.Vault),vo=(0,u.createContext)({addHistory:(e,t)=>{},clearHistory:()=>{}}),yo=`manifest-editor://homepage-collection.json`;function bo(){return(0,u.useContext)(vo)}function xo(e){let{vault:t,unsubscribe:n,addHistory:r,clearHistory:i}=(0,u.useMemo)(()=>ho(yo),[]);return(0,u.useEffect)(()=>n,[]),(0,d.jsx)(vo.Provider,{value:{addHistory:r,clearHistory:i},children:(0,d.jsx)(_o.Provider,{value:t,children:e.children})})}function So({children:e}){let t=go();return(0,d.jsx)(m.VaultProvider,{vault:t,children:e})}function Co(e,t,n,r,i){let a=(0,m.useVault)(),o=U(),{create:s,edit:c}=ui(),l=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)({type:n,parent:e,index:0,property:t},o.layout.creators||[],{vault:a}),[e,t,o.layout.creators,n,a]),d=e&&l.length!==0,f=(0,u.useCallback)((a,o)=>{if(e)return s({type:n,parent:(0,h.toRef)(e),property:t,index:a,target:r,initialData:o,...i||{}})},[s,e,t,n,i,r]),p=(0,u.useCallback)((a,o,c)=>{if(e)return s({type:n,filter:a,parent:(0,h.toRef)(e),property:t,index:o,target:r,initialData:c,...i||{}})},[s,e,t,n,i,r]);return[d,{create:f,edit:(0,u.useCallback)((n,r)=>{c(n,e?{parent:(0,h.toRef)(e),property:t,index:r}:void 0)},[c,e,t]),createFiltered:p,creator:(0,u.useCallback)((a,o)=>{if(e)return s({type:n,initialCreator:a,parent:(0,h.toRef)(e),property:t,target:r,initialData:o,...i||{}})},[n,t,e,r,s,i]),buttonProps:(0,u.useMemo)(()=>({"data-action-id":Pt(n,t,e)}),[n,t,e])}]}function wo(){let e=(0,m.useVault)(),t=go(),n=U(),r=z();return(0,u.useMemo)(()=>new S.Creator(e,n.layout.creators||[],t,r.creators),[n.layout.creators,r.creators,t,e])}async function To(e){let t=await e.create(),n=Array.isArray(t)?t[0]:t;return n?(e.onCreate?.(),e.close?.(),e.edit?.(n),!0):!1}const Eo=(0,u.createContext)({});function Do(e){return(0,u.useContext)(Eo)[e]||{}}function Oo(e){let t=(0,u.useContext)(Eo),n=(0,u.useMemo)(()=>({...t,[e.id]:e.data}),[t,e.id,e.data]);return(0,d.jsx)(Eo.Provider,{value:n,children:e.children})}const ko=(0,u.memo)(function(e){let t=(0,m.useVault)(),{edit:n,modal:r}=ui(),[i,a]=(0,u.useState)(!1),[o,s]=(0,u.useState)(null),c=wo(),f=z(),p=(0,u.useRef)(!1),g=e.resource.initialData?.selector;Ka(g);let _=Do(e.creator.id),v={targetType:e.resource.type,parent:e.resource.parent?{property:e.resource.property,atIndex:e.resource.index,resource:e.resource.parent}:void 0,target:e.resource.target,initialData:{..._,...e.resource.initialData||{},...e.initialData||{}}},y=async t=>{if(!(i||p.current)){a(!0),p.current=!0;try{await To({create:()=>c.create(e.creator.id,t,v),onCreate:e.onCreate,close:e.skipEditingOnCreate?void 0:()=>{r.popStack(),r.close()},edit:e.skipEditingOnCreate||e.resource.initialData?.skipEditingOnCreate?void 0:t=>n(t,{parent:(0,h.toRef)(e.resource.parent),property:e.resource.property,index:e.resource.index})})}catch(e){s(e?.message||`Unknown error`)}finally{a(!1),p.current=!1}}},b=async()=>!0;if((0,u.useEffect)(()=>{e.resource.initialData?.showEmptyForm||!e.creator.render&&!i&&y({})},[e.creator]),o)return(0,d.jsx)(`div`,{className:`flex flex-col items-center p-4`,children:(0,d.jsx)(l.ErrorMessage,{children:o})});let x=(0,d.jsx)(`div`,{className:`flex flex-col items-center py-8`,children:(0,d.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,d.jsx)(l.Spinner,{}),` `,(0,d.jsx)(`span`,{children:`Loading`})]})});return i?x:e.creator.render?(0,d.jsx)(d.Fragment,{children:(0,d.jsx)(u.Suspense,{fallback:x,children:e.creator.render({vault:t,runCreate:y,validate:b,options:v,config:f.creators?.[(0,S.getCreatorConfigKey)(e.creator)]||{}})})}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l.EmptyState,{children:`No options available`}),(0,d.jsx)(l.ActionButton,{primary:!0,onPress:()=>y({}),children:e.creator.actionButton||`Create`})]})});function Ao(e){let t=U(),n=(0,m.useVault)(),[r,i]=(0,u.useState)(e.resource.initialCreator||``),[a,o]=(0,u.useState)(),[s,c]=(0,u.useState)(``),[f,p]=(0,u.useState)(!1),[h,g]=(0,u.useState)(``),[_,v]=(0,u.useState)(null),y=(0,u.useRef)(null),b=oo(),x=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,t.layout.creators||[],{vault:n}),[e.resource,t.layout.creators,n]),C=x.some(e=>e.supportsResource);(0,u.useEffect)(()=>{x.length===1&&!r&&!C&&i(x[0].id)},[C,r,x]),(0,u.useEffect)(()=>{C&&!r&&y.current?.focus()},[C,r]);let w=x.find(e=>e.id===r);if((0,u.useEffect)(()=>{w&&b?.(w.label)}),x.length===0)return(0,d.jsx)(l.EmptyState,{children:`Not currently supported`});let T=(e,t)=>{o(t||Po(s)),i(e.id)},E=async t=>{t.preventDefault();let r=s.trim();if(!r||f)return;p(!0),g(``),v(null);let i=Fo(),a=await Promise.all(x.map(async t=>{if(!t.supportsResource)return null;try{let a=await t.supportsResource(r,i,{vault:n,resource:e.resource});return a?{creator:t,initialData:No(r,a).initialData}:null}catch(e){return{creator:t,error:e?.message||`Could not check this link`}}})),o=a.filter(jo),c=a.filter(Mo);if(p(!1),o.length===1){T(o[0].creator,o[0].initialData);return}if(o.length>1){v(o),g(`Multiple creators can use this link. Choose one below.`);return}g(c[0]?.error||`No creator recognised this link. Choose one below.`)},D=(0,d.jsx)(l.ModalBackSlot,{children:(0,d.jsx)(l.IconButton,{root:document.getElementById(`headlessui-portal-root`)||void 0,label:`Back to Add content options`,className:`group`,placement:`right`,onPress:()=>{i(``),o(void 0)},children:(0,d.jsx)(l.GridIcon,{className:`text-2xl opacity-50 group-hover:opacity-70`})})});if(w)return w.hiddenModal?(0,d.jsxs)(d.Fragment,{children:[D,(0,d.jsx)(ko,{creator:w,resource:e.resource,initialData:a})]}):(0,d.jsxs)(`div`,{children:[D,(0,d.jsx)(`div`,{className:`p-2 py-6`,children:(0,d.jsx)(ko,{creator:w,resource:e.resource,initialData:a})})]});let O=_?.length?_.map(e=>e.creator):x,ee=new Map(_?.map(e=>[e.creator.id,e.initialData]));return(0,d.jsxs)(d.Fragment,{children:[C?(0,d.jsxs)(`form`,{className:`p-4 pb-0`,onSubmit:E,children:[(0,d.jsx)(`label`,{className:`block text-sm font-medium text-gray-700`,htmlFor:`creator-resource-link`,children:`Paste a link`}),(0,d.jsxs)(`div`,{className:`mt-1 flex gap-2`,children:[(0,d.jsx)(`input`,{ref:y,id:`creator-resource-link`,className:`min-w-0 flex-1 rounded border border-gray-300 px-3 py-2 text-sm`,value:s,onChange:e=>{c(e.currentTarget.value),g(``),v(null)},placeholder:`https://example.org/resource`,type:`url`}),(0,d.jsx)(l.ActionButton,{primary:!0,type:`submit`,isDisabled:!s.trim()||f,children:f?`Checking`:`Use link`})]}),h?(0,d.jsx)(`div`,{className:`mt-2 text-sm text-gray-600`,role:`status`,children:h}):null]}):null,(0,d.jsx)(l.CreatorGrid,{label:`Select a type`,items:O.map(e=>({id:e.id,title:e.label,description:e.summary||``,icon:e.icon,onClick:()=>T(e,ee.get(e.id))}))})]})}function jo(e){return!!e&&!(`error`in e)}function Mo(e){return!!e&&`error`in e}function No(e,t){return typeof t==`object`?t:{initialData:Po(e)}}function Po(e){let t=e.trim();return t?{url:t,youtubeUrl:t}:void 0}function Fo(){let e=new Map,t=new Map,n=new Map,r=t=>(e.has(t)||e.set(t,fetch(t).then(e=>{if(!e.ok)throw Error(`Could not load ${t}`);return e.text()})),e.get(t)),i=e=>(n.has(e)||n.set(e,fetch(e,{method:`HEAD`}).then(t=>{if(!t.ok)throw Error(`Could not check ${e}`);return t})),n.get(e));return{text:r,head:i,json(e){return t.has(e)||t.set(e,r(e).then(e=>JSON.parse(e))),t.get(e)},async contentType(e){return(await i(e)).headers.get(`content-type`)||``}}}const Io={id:`@manifest-editor/creator`,label:`Add content`,options:{hideHeader:!0,tabs:!1},render(e){return(0,d.jsx)(Ao,{resource:e})}},Lo={color:{main:`#B84C74`,mainHover:`#4a89ff`,logoPink:`#E94581`,white:`white`,grey:`grey`,black:`black`,lightgrey:`#F8F9FA`,mediumgrey:`#dddddd`,danger:`#a90e21`,warning:`#e38627`,lightdanger:`#ffeaea`,lightsuccess:`#c5e8c5`,success:`#6ccd55`,greyOverlay:`rgba(0, 0, 0, 0.2)`,highlight:`#faeed7`},iiifColor:{manifest:`rgba(0, 0, 0, 0.2)`,canvas:`rgba(255, 222, 219, 0.8)`,service:`rgba(13, 110, 253, 0.8)`,annotation:`rgba(247, 226, 173, 0.8)`,contentResource:`rgba(207, 247, 255, 0.8)`,ranges:`rgba(144, 213, 157, 0.8)`},padding:{xs:`0.25rem`,small:`0.5rem`,medium:`1rem`,large:`2rem`},device:{mobile:`375px`,tablet:`768px`,laptop:`992px`,desktop:`1200px`},shadows:{standard:`rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.05) 0px 5px 15px 0px`,bottom:`rgba(0, 0, 0, 0.1) 0px 4px 2px -2px`}};function Ro(e){let{}=e,t=(0,m.useVault)(),n=U(),r=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,n.layout.creators||[],{vault:t}),[e.resource,n.layout.creators,t]);return r.length===0?(0,d.jsx)(`div`,{children:`No supported creators found`}):(0,d.jsx)(`div`,{children:(0,d.jsxs)(l.Tabs,{className:`w-full flex-1 overflow-hidden flex flex-col`,children:[(0,d.jsx)(l.TabList,{className:`flex-1 overflow-hidden w-full flex text-sm whitespace-nowrap`,items:r,children:e=>(0,d.jsx)(l.Tab,{id:e.id,children:e.label})}),r.map(t=>(0,d.jsx)(l.TabPanel,{id:t.id,className:`p-2`,children:(0,d.jsx)(g.ThemeProvider,{theme:Lo,children:(0,d.jsx)(ko,{creator:t,resource:e.resource,onCreate:e.onCreate,skipEditingOnCreate:!0})})},t.id))]})})}function zo({fallback:e,backAction:t}){let n=Xr(),{back:r}=Jr();return n.length?(0,d.jsx)(lo,{"aria-label":`Back`,onClick:r,children:(0,d.jsx)($a,{"aria-hidden":`true`})}):e}function Bo({closeAction:e,fallback:t}){let n=Xr();return Yr()||n.length?(0,d.jsx)(lo,{"aria-label":`Close panel`,onClick:()=>{e()},children:(0,d.jsx)(tr,{"aria-hidden":`true`})}):t}function Vo(e,t,n,r){let i=t.filter(t=>t.resourceType===e.resource.source.type);if(i.length===0)return null;for(let t of i){let i=[],a={},o=e.property===`partOf`,s=(t.editors||[]).filter(t=>{if(o&&t.id!==`@manifest-editor/part-of-reference`||r.hideTabs&&r.hideTabs.includes(t.id)||r.onlyTabs&&!r.onlyTabs.includes(t.id))return!1;if(t.supports.sortKey){if(i.includes(t.supports.sortKey))return!1;t.supports.sortFallback&&(a[t.supports.sortKey]=t)}return n.edit&&!t.supports.edit||t.supports.custom&&t.supports.custom(e,n.vault)===!1?!1:(t.supports.sortKey&&i.push(t.supports.sortKey),!0)}),c=Object.keys(a);for(let e of c)!i.includes(e)&&a[e]&&!s.includes(a[e])&&s.push(a[e]);if(s.length)return{...t,editors:s}}return null}function Ho({currentTab:e=void 0}){let t=Yr(),n=(0,u.useContext)(m.ResourceReactContext),r=U(),i=W(),a=(0,m.useVault)(),{change:o}=ui(),s=oo(),{editorConfig:c}=z(),f=t?.resource.source?.id,p=t?.resource.source?.type,h=f!==i.id;f&&h&&i.type===`Collection`&&p===`Collection`&&(p=`EmbeddedCollection`);let g=(p?c[p]:c.All)||{},_=(0,u.useMemo)(()=>{let e={...n},r=t?.resource.source.id,i=t?.resource.source.type,a={Collection:`collection`,Manifest:`manifest`,Range:`range`,Canvas:`canvas`,Annotation:`annotation`,AnnotationPage:`annotationPage`};return i&&a[i]&&(e[a[i]]=r),e},[t,n]);function v(e){return t?(0,d.jsx)(m.ResourceReactContext.Provider,{value:_,children:e}):e}let y=(0,u.useMemo)(()=>{if(!t)return null;let e=r.layout.editors||[],n=(r.layout.resources||[]).map(t=>typeof t==`string`?{id:`@default/`+t,label:t,resourceType:t,auto:!0,editors:e.filter(e=>e.supports.resourceTypes.includes(t))}:t);return Vo(t,n,{edit:!0,vault:a},g)},[t,r]);(0,u.useEffect)(()=>{s(y?.label||``)},[y]),(0,u.useEffect)(()=>{let t=y?.editors.map(e=>e.id)||[];t.find(t=>t===e)||o(`@manifest-editor/editor`,{currentTab:t[0]})},[y?.editors,e,o]);let b=(0,u.useMemo)(()=>(y?.editors||[]).map(e=>({id:e.id,label:e.label,renderComponent:()=>e.component(g)})),[y?.editors,g]);if(!t||!y)return null;if(g.singleTab){let e=(y?.editors||[]).find(e=>e.id===g.singleTab);if(e)return v((0,d.jsx)(`div`,{className:`w-full`,children:e.component(g)},t.resource.source?.id))}return v((0,d.jsx)(l.SidebarTabs,{isNested:h,rootResource:i,menuId:t.resource.source.id,menu:b,selectedKey:e,onSelectionChange:e=>{o(`@manifest-editor/editor`,{currentTab:e})}},t.resource.source?.id))}const Uo={id:`@manifest-editor/editor`,label:`Editor`,options:{hideHeader:!0,tabs:!0,minWidth:400},renderBackAction:({backAction:e,fallback:t})=>(0,d.jsx)(zo,{backAction:e,fallback:t}),renderCloseAction:({closeAction:e,fallback:t})=>(0,d.jsx)(Bo,{closeAction:e,fallback:t}),render({currentTab:e}){return(0,d.jsx)(Ho,{currentTab:e})}};function Wo(e){let[t,n]=(0,u.useState)(!1),r=(0,u.useRef)(null),i=(0,u.useRef)(0);function a(t){i.current--,!(t&&i.current!==0)&&(r.current&&(clearTimeout(r.current),r.current=0),r.current=setTimeout(()=>{n(!1)},e))}function o(){i.current++,r.current&&clearTimeout(r.current),n(!0)}return(0,u.useMemo)(()=>[t,{set:o,clear:a}],[t])}function Go(e){return e?typeof e==`string`?{src:e,alt:``}:e:null}function Ko(e){return e?typeof e==`string`?e:e.name:null}function qo(e){let t=e.extension,n=t.leftPanels?.[0]||t.centerPanels?.[0]||t.rightPanels?.[0]||t.modalPanels?.[0];return n?{id:n.id,label:n.label||`Open plugin`,modal:t.modalPanels?.some(e=>e.id===n.id)||!1}:null}function Jo(e){return e instanceof Error?e.message:`Plugin configuration could not be saved.`}function Yo(e){return(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,d.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,d.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})}function Xo(e){return(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,d.jsx)(`path`,{d:`M7 7h10v10`}),(0,d.jsx)(`path`,{d:`M7 17 17 7`})]})}function Zo(){let e=U(),{appId:t}=Hn(),n=z(),r=ie(),i=An(),a=Mn(),o=ui(),{saveGlobalPluginConfig:s}=(0,u.useContext)(Tn),[c,f]=(0,u.useState)(!1),[p,m]=(0,u.useState)(``),[h,g]=(0,u.useState)(null),[_,v]=(0,u.useState)(null),[y,b]=(0,u.useState)(null),x=(0,u.useMemo)(()=>new Set(un(i,e,t).map(e=>e.metadata.id)),[i,e,t]),S=(0,u.useMemo)(()=>{let n=p.trim().toLowerCase();return i.plugins.filter(r=>{let i=on(r,e,t);return!c&&!i?!1:!n||[r.metadata.label,r.metadata.id,r.metadata.description,Ko(r.metadata.author),...r.metadata.tags||[]].filter(Boolean).join(` `).toLowerCase().includes(n)})},[e,t,i.plugins,p,c]),C=h&&i.plugins.find(e=>e.metadata.id===h)||null;if(!i.plugins.length)return null;function w(e){a.setAppConfig(t,e),r({plugins:{...n.plugins||{},apps:{...n.plugins?.apps||{},[t]:e}}})}async function T(e){if(!s){b(`Global plugin settings are not available in this host.`);return}let n=i.globalApps[t]||{},r={apps:{...i.globalApps,[t]:e}};a.setGlobalAppConfig(t,e);try{await s(r)}catch(e){a.setGlobalAppConfig(t,n),b(Jo(e))}}async function E(n,r,a){b(null),v(`${a}:${n.metadata.id}`);let o=a===`global`?i.globalApps[t]||{}:i.apps[t]||{},s=r?_n(o,i,n,e,t):{config:Yt(o,n.metadata.id),blocked:[]};if(s.blocked.length){v(null),b(`Cannot enable ${n.metadata.label}: ${s.blocked.join(`, `)}.`);return}a===`global`?await T(s.config):w(s.config),v(null)}function D(e){let t=qo(e);if(t){if(t.modal){o.modal.open({id:t.id});return}o.open(t.id)}}return(0,d.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-gray-200 pt-4 mt-4`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,d.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,d.jsx)(`h3`,{className:`font-semibold text-sm text-gray-900`,children:`Plugins`})}),(0,d.jsx)(`button`,{type:`button`,className:`rounded border border-gray-200 bg-white px-2 py-1 text-xs text-gray-500 hover:text-gray-700 hover:border-gray-300 transition-colors`,onClick:()=>f(e=>!e),children:c?`Compatible only`:`Show all`})]}),(0,d.jsx)(`input`,{"aria-label":`Search plugins`,className:`rounded border border-gray-200 px-2.5 py-1.5 text-xs focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`,type:`search`,placeholder:`Search plugins…`,value:p,onChange:e=>m(e.currentTarget.value)}),y?(0,d.jsx)(`div`,{className:`rounded border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:y}):null,(0,d.jsx)(`div`,{className:`flex flex-col gap-2`,children:S.map(n=>{let r=cn(n,i,t),a=x.has(n.metadata.id),o=r&&n.loadStatus===`loading`,s=r&&n.loadStatus===`error`?n.loadError:null,c=Go(n.metadata.image),u=r&&!a&&!o&&!s,f=on(n,e,t),p=sn(n,e,t),m=qo(n),h=!!n.settings,v=_===`workspace:${n.metadata.id}`;return(0,d.jsxs)(`article`,{className:`flex gap-2.5 rounded-lg border bg-white p-3 text-sm transition-colors ${a?`border-gray-200`:`border-gray-100 bg-gray-50`} ${f?``:`bg-gray-100`}`,children:[c?(0,d.jsx)(`img`,{className:`h-9 w-9 rounded object-cover flex-none mt-0.5`,src:c.src,alt:c.alt||n.metadata.label}):(0,d.jsx)(`div`,{className:`h-9 w-9 rounded flex items-center justify-center flex-none mt-0.5 text-lg ${a?`bg-me-primary-50 text-me-primary-500`:`bg-gray-100 text-gray-600`}`,children:(0,d.jsx)(Yo,{className:`w-4 h-4`})}),(0,d.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,d.jsxs)(`div`,{className:`flex items-start justify-between gap-1`,children:[(0,d.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 min-w-0`,children:[(0,d.jsx)(`span`,{className:`font-medium text-gray-900 text-xs`,children:n.metadata.label}),n.metadata.official?(0,d.jsxs)(`span`,{className:`rounded-full text-me-primary-500 px-1.5 py-0 text-[9px] font-bold inline-flex items-center gap-1`,children:[(0,d.jsx)(l.CheckIcon,{className:`w-3 h-3`}),` Verified`]}):null,n.metadata.version?(0,d.jsx)(`span`,{className:`text-[10px] text-gray-600`,children:n.metadata.version}):null]}),(0,d.jsxs)(`div`,{className:`flex items-center gap-1 flex-none`,children:[h?(0,d.jsx)(`button`,{type:`button`,title:`Configure plugin`,"aria-label":`Configure ${n.metadata.label}`,className:`rounded p-1 text-gray-600 hover:text-gray-700 hover:bg-gray-100 transition-colors`,onClick:()=>g(n.metadata.id),children:(0,d.jsx)(Yo,{className:`w-3.5 h-3.5`})}):null,a&&m?(0,d.jsx)(`button`,{type:`button`,title:`Open ${m.label}`,"aria-label":`Open ${m.label}`,className:`rounded p-1 text-me-primary-500 hover:bg-me-primary-50 transition-colors`,onClick:()=>D(n),children:(0,d.jsx)(Xo,{className:`w-3.5 h-3.5`})}):null,(0,d.jsx)(`button`,{type:`button`,disabled:!f||v,onClick:()=>E(n,!r,`workspace`),className:`relative inline-flex h-5 w-9 flex-none items-center rounded-full transition-colors disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-me-primary-500/30 ${r?`bg-me-primary-500`:`bg-gray-200`}`,title:r?`Disable plugin`:`Enable plugin`,"aria-label":`${r?`Disable`:`Enable`} ${n.metadata.label}`,children:(0,d.jsx)(`span`,{className:`inline-block h-3.5 w-3.5 transform rounded-full bg-white shadow transition-transform ${r?`translate-x-4`:`translate-x-0.5`}`})})]})]}),n.metadata.description?(0,d.jsx)(`p`,{className:`text-xs text-gray-500 leading-relaxed`,children:n.metadata.description}):null,o?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Loading plugin…`}):null,s?(0,d.jsx)(`span`,{className:`text-xs text-red-600`,children:s}):null,u?(0,d.jsx)(`span`,{className:`text-xs text-amber-600`,children:`Waiting for required dependencies`}):null,!f&&p?(0,d.jsx)(`span`,{className:`text-xs text-gray-600`,children:p}):null]})]},n.metadata.id)})}),S.length?null:(0,d.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-xs text-gray-500`,children:`No plugins found.`}),C?(0,d.jsx)(l.Modal,{title:`Configure ${C.metadata.label}`,onClose:()=>g(null),width:`560px`,children:(0,d.jsx)(Qo,{plugin:C,onClose:()=>g(null),canSaveGlobal:!!s})}):null]})}function Qo({plugin:e,onClose:t,canSaveGlobal:n}){let r=Fn(e.metadata.id),[i,a]=(0,u.useState)(`workspace`),[o,s]=(0,u.useState)({}),[c,l]=(0,u.useState)(!1),[f,p]=(0,u.useState)(!1),[m,h]=(0,u.useState)(null),g=i===`global`?r.global:r.workspace;(0,u.useEffect)(()=>{s({...g}),h(null),p(!1)},[e.metadata.id,i]);async function _(){let t=e.settings?.validate?.(o);if(t){h(t);return}l(!0),h(null);try{i===`global`?await r.setGlobalSettings(o):r.setWorkspaceSettings(o),p(!0),setTimeout(()=>p(!1),2e3)}catch(e){h(Jo(e))}finally{l(!1)}}async function v(){l(!0),h(null);try{i===`global`?await r.resetGlobalSettings():r.resetWorkspaceSettings(),s({})}catch(e){h(Jo(e))}finally{l(!1)}}let y=n&&r.canSaveGlobal;return(0,d.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[y?(0,d.jsxs)(`div`,{className:`flex items-center gap-1 px-5 pt-4 pb-3 border-b border-gray-100`,children:[(0,d.jsx)(`span`,{className:`text-xs text-gray-500 mr-2`,children:`Scope:`}),(0,d.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`workspace`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`workspace`),children:`This workspace`}),(0,d.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`global`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`global`),children:`All workspaces`})]}):null,m?(0,d.jsx)(`div`,{className:`mx-5 mt-4 rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:m}):null,(0,d.jsx)(`div`,{className:`flex-1 overflow-y-auto p-5`,children:(0,d.jsx)(`div`,{className:`flex flex-col gap-3`,children:e.settings?.render?e.settings.render({plugin:e,appId:r.appId,scope:i,value:o,defaults:r.defaults,effective:r.effective,onChange:s}):e.settings?.fields?.length?e.settings.fields.map(e=>(0,d.jsx)($o,{field:e,draft:o,setDraft:s},e.id)):(0,d.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-sm text-gray-500`,children:`This plugin has no configurable settings.`})})}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-gray-100 px-5 py-4`,children:[(0,d.jsx)(`button`,{type:`button`,className:`text-xs text-gray-600 hover:text-gray-700 transition-colors disabled:opacity-40`,disabled:c,onClick:v,children:`Reset to defaults`}),(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f?(0,d.jsx)(`span`,{className:`text-xs text-green-600`,children:`✓ Saved`}):null,(0,d.jsx)(`button`,{type:`button`,className:`rounded-lg bg-me-primary-500 px-4 py-2 text-sm font-medium text-white hover:bg-me-primary-600 disabled:opacity-50 transition-colors`,disabled:c,onClick:_,children:c?`Saving…`:`Save ${i}`})]})]})]})}function $o({field:e,draft:t,setDraft:n}){let r=t[e.id],i=`plugin-setting-${e.id}`;function a(r){n({...t,[e.id]:r})}let o=(0,d.jsx)(`label`,{className:`text-sm font-medium text-gray-900`,htmlFor:i,children:e.label}),s=`rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`;return e.type===`boolean`?(0,d.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null]}),(0,d.jsx)(`input`,{id:i,type:`checkbox`,checked:r===!0,onChange:e=>a(e.currentTarget.checked),className:`h-4 w-4 rounded border-gray-300 text-me-primary-500 focus:ring-me-primary-500`})]}):e.type===`textarea`?(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsx)(`textarea`,{id:i,className:`${s} min-h-24 resize-y`,value:typeof r==`string`?r:``,placeholder:e.placeholder,onChange:e=>a(e.currentTarget.value)})]}):e.type===`select`?(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsxs)(`select`,{id:i,className:s,value:r===void 0?``:String(r),onChange:t=>{let n=e.options?.find(e=>String(e.value)===t.currentTarget.value);a(n?n.value:t.currentTarget.value)},children:[(0,d.jsx)(`option`,{value:``,children:`Default`}),(e.options||[]).map(e=>(0,d.jsx)(`option`,{value:String(e.value),children:e.label},String(e.value)))]})]}):(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsx)(`input`,{id:i,className:s,type:e.type===`number`?`number`:`text`,value:typeof r==`string`||typeof r==`number`?r:``,placeholder:e.placeholder,onChange:t=>{a(e.type===`number`?Number(t.currentTarget.value):t.currentTarget.value)}})]})}function es(){let e=z(),t=ie(),n=e.creators[`iiif-image-services`]||{};return(0,d.jsxs)(l.Form.Form,{className:`flex max-w-3xl flex-col gap-4`,onChange:e=>{let n=new FormData(e.currentTarget);t({creators:{"iiif-image-services":{compact:n.get(`compact`)===`compact`?`compact`:`with-dimensions`,includeSizes:n.get(`includeSizes`)===`on`,includeTiles:n.get(`includeTiles`)===`on`}}})},onSubmit:e=>e.preventDefault(),children:[(0,d.jsx)(`h2`,{className:`text-xl font-semibold text-gray-900`,children:`IIIF Options`}),(0,d.jsxs)(`fieldset`,{className:`flex flex-col gap-4`,children:[(0,d.jsx)(`legend`,{className:`mb-3 text-base font-semibold`,children:`Image services`}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`compactImageServices`,children:`Compact services`}),(0,d.jsxs)(`select`,{id:`compactImageServices`,name:`compact`,className:`rounded border border-gray-300 p-2`,defaultValue:n.compact===`compact`?`compact`:`with-dimensions`,children:[(0,d.jsx)(`option`,{value:`with-dimensions`,children:`id, type, profile, width, height (default)`}),(0,d.jsx)(`option`,{value:`compact`,children:`id, type, profile (compact)`})]})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{id:`includeSizes`,name:`includeSizes`,type:`checkbox`,defaultChecked:n.includeSizes===!0}),(0,d.jsx)(l.Form.Label,{htmlFor:`includeSizes`,children:`Include sizes`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{id:`includeTiles`,name:`includeTiles`,type:`checkbox`,defaultChecked:n.includeTiles===!0}),(0,d.jsx)(l.Form.Label,{htmlFor:`includeTiles`,children:`Include tiles`})]}),(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:`Applies to newly added images. Thumbnails always include available sizes and tiles.`})]})]})}function ts(){let e=Cr(),t=W(),n=z(),r=ie(),[i,a]=Wo(2e3);function o(e){e.preventDefault();let t=new FormData(e.target),i={defaultPreview:t.get(`defaultPreview`),i18n:{...n.i18n||{},advancedLanguageMode:t.get(`advancedLanguageMode`)===`on`,availableLanguages:(t.get(`availableLanguages`)||``).split(`,`).map(e=>e.trim()),defaultLanguage:t.get(`defaultLanguage`)},export:{...n.export||{},version:t.get(`isVersion2`)===`on`?2:3,baseIdentifier:t.get(`base`)||null},plugins:n.plugins,editorFeatureFlags:{...n.editorFeatureFlags||{},rememberCanvasId:t.get(`rememberCanvasId`)===`on`,rememberLeftPanelId:t.get(`rememberLeftPanelId`)===`on`,annotationPopups:t.get(`annotationPopups`)===`on`,manifestGridOptions:t.get(`manifestGridOptions`)===`on`,enableMultiImageCanvases:t.get(`enableMultiImageCanvases`)===`on`,enableMultiMediaCanvases:t.get(`enableMultiMediaCanvases`)===`on`}};r(i),a.set(),a.clear()}return(0,d.jsxs)(l.Sidebar,{children:[(0,d.jsx)(l.SidebarHeader,{title:`Workspace configuration`}),i?(0,d.jsx)(`div`,{className:`bg-me-primary-500 text-white p-3 text-sm`,children:`Changes saved`}):null,(0,d.jsxs)(l.SidebarContent,{className:`p-4`,children:[(0,d.jsx)(es,{}),(0,d.jsxs)(l.Form.Form,{onSubmit:o,className:`flex flex-col gap-3`,children:[(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`defaultLanguage`,children:`Default Language`}),(0,d.jsx)(l.Form.Input,{type:`text`,name:`defaultLanguage`,id:`defaultLanguage`,defaultValue:n.i18n?.defaultLanguage||``})]}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`availableLanguages`,children:`Available Languages`}),(0,d.jsx)(l.Form.Input,{type:`text`,name:`availableLanguages`,id:`availableLanguages`,defaultValue:(n.i18n?.availableLanguages||[]).join(`, `)})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`advancedLanguageMode`,id:`advancedLanguageMode`,defaultChecked:n.i18n?.advancedLanguageMode||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`advancedLanguageMode`,children:`Advanced Language Mode`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`textGranularityEnabled`,id:`textGranularityEnabled`,defaultChecked:n.i18n?.textGranularityEnabled||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`textGranularityEnabled`,children:`Enable text granularity`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`rememberCanvasId`,id:`rememberCanvasId`,defaultChecked:n.editorFeatureFlags?.rememberCanvasId||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`rememberCanvasId`,children:`Remember Canvas ID`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`rememberLeftPanelId`,id:`rememberLeftPanelId`,defaultChecked:n.editorFeatureFlags?.rememberLeftPanelId||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`rememberLeftPanelId`,children:`Remember Left panel`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`manifestGridOptions`,id:`manifestGridOptions`,defaultChecked:n.editorFeatureFlags?.manifestGridOptions||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`manifestGridOptions`,children:`Manifest Grid Options`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`isVersion2`,id:`isVersion2`,defaultChecked:n.export?.version===2}),(0,d.jsxs)(l.Form.Label,{htmlFor:`isVersion2`,children:[`Export Presentation 2 `,t.type,`s`]})]}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`defaultPreview`,children:`Default preview`}),(0,d.jsx)(`div`,{children:e.configs.map((e,t)=>e.type===`iiif-preview-service`?null:(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{type:`radio`,id:e.id,name:`defaultPreview`,value:e.id,defaultChecked:n.defaultPreview?n.defaultPreview===e.id:t===0}),(0,d.jsx)(`label`,{htmlFor:e.id,children:e.label})]},e.id))})]}),t.type===`Manifest`?(0,d.jsx)(`a`,{className:`text-sm text-me-primary-500 hover:underline hover:text-me-primary-600`,href:window.location.pathname.includes(`/exhibition`)?window.location.pathname.replace(`/exhibition`,``)||`/`:`${window.location.pathname}/exhibition`,children:window.location.pathname.includes(`/exhibition`)?`Return to Manifest Editor`:`Go to Exhibition Editor`}):null,(0,d.jsx)(Zo,{}),(0,d.jsx)(`div`,{className:`mt-5`,children:(0,d.jsx)(l.ActionButton,{type:`submit`,children:`Save changes`})})]})]})]})}function ns(e){let t=new Map;for(let n of e){if(!n.configuration?.fields.length)continue;let e=(0,S.getCreatorConfigKey)(n);(!t.has(e)||n.id===e)&&t.set(e,n)}return Array.from(t.values())}function rs(){let e=U(),t=z(),n=ie(),r=(0,u.useMemo)(()=>ns(e.layout.creators||[]),[e.layout.creators]);function i(e,t){let r=(0,S.getCreatorConfigKey)(e),i=new FormData(t),a={};for(let t of e.configuration?.fields||[])t.type===`checkbox`&&(a[t.id]=i.get(t.id)===`on`);n({creators:{[r]:a}})}return r.length?(0,d.jsx)(`div`,{className:`flex max-w-3xl flex-col gap-6`,children:r.map(e=>(0,d.jsxs)(l.Form.Form,{className:`flex flex-col gap-3 border-b border-gray-100 pb-5 last:border-b-0`,onChange:t=>i(e,t.currentTarget),children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,d.jsx)(`h3`,{className:`text-base font-semibold text-gray-900`,children:e.label}),e.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:e.summary}):null]}),e.configuration?.fields.map(n=>{let r=(0,S.getCreatorConfigKey)(e),i=t.creators?.[r]?.[n.id],a=`${r}-${n.id}`;return n.type===`checkbox`?(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-1 items-start`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:n.id,id:a,defaultChecked:typeof i==`boolean`?i:n.defaultValue||!1}),(0,d.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,d.jsx)(l.Form.Label,{htmlFor:a,children:n.label}),n.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:n.summary}):null]})]},n.id):null})]},(0,S.getCreatorConfigKey)(e)))}):(0,d.jsx)(l.EmptyState,{children:`No creator settings available`})}function is(){return(0,f.createStore)((e,t)=>({specificMenus:{},resourceMenus:{},hookMenuItem(t){let n=Lt(),r=t.resource?.id||``,i=t.resource?.type;return i?r?(e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:void 0}}}}))}):(e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:void 0}}}}))}):()=>{}}}))}const as=(0,u.createContext)(null);function os({children:e}){let t=(0,u.useMemo)(()=>is(),[]);return(0,d.jsx)(as.Provider,{value:t,children:e})}function ss(){let e=(0,u.useContext)(as);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function cs(e){let t=ss(),n=(0,f.useStore)(t,e=>e.resourceMenus),r=(0,f.useStore)(t,e=>e.specificMenus);return(0,u.useMemo)(()=>{let t=r[e.id||``]?.menus||{},i=n[e.type]?.menus||{},a=Object.values(t).flat(),o=[...Object.values(i).flat(),...a].filter(e=>e!==void 0),s=[],c=[];for(let e of o){let t=[];for(let n of e.items||[])n.id&&s.includes(n.id)||(s.push(n.id),t.push(n));t.length&&c.push({...e,items:t})}return ls(c)},[r,n,e.id,e.type])}function ls(e){let t={},n=[];e.forEach(e=>{if(!e)return;let r=e.sectionTitle;if(!r){n.push(...e.items||[]);return}t[r]||(t[r]=[]),t[r].push(...e.items)});let r=Object.entries(t).map(([e,t])=>({sectionTitle:e,items:t}));return n.length&&r.push({items:n}),r}function us(e,t=[]){let n=ss(),r=(0,f.useStore)(n,e=>e.hookMenuItem);(0,u.useEffect)(()=>r(e),[r,e.resource?.id,e.resource?.type,...t])}var ds={CenterPanelContainer:`_CenterPanelContainer_1sbe6_1`,CenterPanelHeader:`_CenterPanelHeader_1sbe6_16`,CenterPanelClose:`_CenterPanelClose_1sbe6_23`,CenterPanelTitle:`_CenterPanelTitle_1sbe6_28`};function fs(e){return(0,d.jsxs)(`div`,{className:ds.CenterPanelContainer,children:[e.title||e.close?(0,d.jsxs)(`div`,{className:ds.CenterPanelHeader,children:[e.title?(0,d.jsx)(`h2`,{className:ds.CenterPanelTitle,children:e.title}):null,e.close?(0,d.jsx)(K,{className:ds.CenterPanelClose,onClick:e.close,children:(0,d.jsx)(tr,{})}):null]}):null,e.children]})}const ps=g.default.div`
444
+ `;function mo({panel:e,state:t,actions:n,isLeft:r,pinActions:i=n,transition:a,close:o,available:s=[],style:c,noHeader:l,isModal:f}){let p=(0,u.useContext)(m.ReactVaultContext)||null,[h,g]=(0,u.useState)(!1),_=Un(),v=pi(),{tabs:y,pinnable:b,hideHeader:x}=e?.options||{},S=(0,u.useMemo)(()=>(s||[]).filter(e=>!e.requiresState),[s]),{itemProps:w,isOpen:T,setIsOpen:E}=ir(S.length),[D,O]=(0,u.useState)(``),ee=(0,u.useRef)(void 0);(0,u.useEffect)(()=>g(!1),[_.state.canvasId,e?.id]),(0,u.useEffect)(()=>O(``),[e]),(0,u.useEffect)(()=>(ee.current=O,()=>{ee.current=void 0}),[]);let k=(0,u.useCallback)(e=>{ee.current&&ee.current(e)},[]),A=(0,u.useCallback)(r=>{let i=e?t.stack.length?n.popStack:e.backAction?()=>e&&e.backAction&&e.backAction(t,{...v,current:n},_):null:null;r&&(!i||r.metaKey)&&S.length?(r.preventDefault(),E(!0)):i?.()},[n,_,v,e,E,t,S.length]),j=r=>{n.change({id:r.id,state:r.defaultState,stacked:!!(t.stack.length||e?.backAction)})};if(!e||!t.current)return null;let M=e.backAction||t.stack.length?(0,d.jsx)(lo,{"aria-label":`Back`,onClick:A,children:(0,d.jsx)($a,{"aria-hidden":`true`})}):null,N=(0,d.jsx)(lo,{"aria-label":`Close panel`,onClick:o||n.close,children:(0,d.jsx)(tr,{"aria-hidden":`true`})});return(0,d.jsx)(ao.Provider,{value:k,children:(0,d.jsxs)(so,{"data-modal":f,"data-state":a,"data-flipped":r,style:c,"data-header":!l,children:[l?null:(0,d.jsxs)(co,{"data-tabs":!!y,"data-error":h,children:[(0,d.jsxs)(Ja,{style:{display:`flex`,height:`100%`},children:[e.renderBackAction?e.renderBackAction({backAction:A,fallback:M}):M,S.length?(0,d.jsxs)(Xa,{$open:T,role:`menu`,style:{left:`0.5em`},children:[(0,d.jsx)(Za,{children:`All panels`}),(0,d.jsx)(Qa,{}),S.map((t,n)=>(0,d.jsx)(Ya,{...w[n],onClick:()=>j(t),$active:e.id===t.id,children:t.label},n))]}):null]}),D?(0,d.jsx)(fo,{as:r?`h1`:`h2`,children:D}):x?(0,d.jsx)(uo,{}):(0,d.jsx)(fo,{as:r?`h1`:`h2`,children:e.label}),b?t.pinned?(0,d.jsx)(lo,{"aria-label":`Unpin panel`,onClick:i.unpin,children:(0,d.jsx)(eo,{"aria-hidden":`true`,fill:`orange`})}):(0,d.jsx)(lo,{"aria-label":`Pin panel`,onClick:()=>i.pin({id:e.id,state:t.state}),children:(0,d.jsx)(eo,{"aria-hidden":`true`,fill:`#ddd`})}):null,e.renderCloseAction?e.renderCloseAction({closeAction:o||n.close,fallback:N}):N]}),(0,d.jsx)(po,{className:`OverrideScrollbar`,children:(0,d.jsx)(C.ErrorBoundary,{onError:()=>g(!0),FallbackComponent:io,resetKeys:[_.state.canvasId,e?.id],onReset:()=>g(!1),children:ro(e.render(t.state||e.defaultState||{},{...v,current:n,vault:p,transition:a,isModal:f},_))})})]})})}function ho(e=`vault://homepage-collection.json`){let t=new x.Vault,n=window.localStorage.getItem(`preview-vault-collection`),r=!1;if(n)try{let i=JSON.parse(n);if(i.id&&i.id===e){t.dispatch((0,w.requestResource)({id:i.id}));let e=(0,T.actionListFromResource)(i.id,i);t.dispatch((0,w.batchActions)({actions:e})),r=!0}}catch{}if(!r){let n=(0,T.actionListFromResource)(e,{"@context":`http://iiif.io/api/presentation/3/context.json`,id:e,type:`Collection`,label:{en:[`Recent items`]},items:[]});t.dispatch((0,w.requestResource)({id:e})),t.dispatch((0,w.batchActions)({actions:n}))}return t.on(`after:@iiif/REMOVE_REFERENCE`,n=>{n.action.payload.id===e&&window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}),{vault:t,unsubscribe:()=>{},addHistory:(n,r)=>{let i=t.getState();if(n&&r&&(r===`Collection`||r===`Manifest`)){let a=i.iiif.entities.Collection[e];if(a){let i=a.items.findIndex(e=>e.id===n);i===-1?t.dispatch((0,w.addReference)({id:e,type:`Collection`,reference:{id:n,type:r},key:`items`,index:0})):t.dispatch((0,w.reorderEntityField)({id:e,type:`Collection`,key:`items`,startIndex:i,endIndex:0})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}},clearHistory:()=>{t.dispatch((0,w.modifyEntityField)({id:e,type:`Collection`,key:`items`,value:[]})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}}function go(){return(0,u.useContext)(_o)}const _o=(0,u.createContext)(new x.Vault),vo=(0,u.createContext)({addHistory:(e,t)=>{},clearHistory:()=>{}}),yo=`manifest-editor://homepage-collection.json`;function bo(){return(0,u.useContext)(vo)}function xo(e){let{vault:t,unsubscribe:n,addHistory:r,clearHistory:i}=(0,u.useMemo)(()=>ho(yo),[]);return(0,u.useEffect)(()=>n,[]),(0,d.jsx)(vo.Provider,{value:{addHistory:r,clearHistory:i},children:(0,d.jsx)(_o.Provider,{value:t,children:e.children})})}function So({children:e}){let t=go();return(0,d.jsx)(m.VaultProvider,{vault:t,children:e})}function Co(e,t,n,r,i){let a=(0,m.useVault)(),o=U(),{create:s,edit:c}=ui(),l=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)({type:n,parent:e,index:0,property:t,filter:i?.filter},o.layout.creators||[],{vault:a}),[e,t,o.layout.creators,n,a,i?.filter]),d=e&&l.length!==0,f=(0,u.useCallback)((a,o)=>{if(e)return s({type:n,parent:(0,h.toRef)(e),property:t,index:a,target:r,initialData:o,...i||{}})},[s,e,t,n,i,r]),p=(0,u.useCallback)((a,o,c)=>{if(e)return s({type:n,filter:a,parent:(0,h.toRef)(e),property:t,index:o,target:r,initialData:c,...i||{}})},[s,e,t,n,i,r]);return[d,{create:f,edit:(0,u.useCallback)((n,r)=>{c(n,e?{parent:(0,h.toRef)(e),property:t,index:r}:void 0)},[c,e,t]),createFiltered:p,creator:(0,u.useCallback)((a,o)=>{if(e)return s({type:n,initialCreator:a,parent:(0,h.toRef)(e),property:t,target:r,initialData:o,...i||{}})},[n,t,e,r,s,i]),buttonProps:(0,u.useMemo)(()=>({"data-action-id":Pt(n,t,e)}),[n,t,e])}]}function wo(){let e=(0,m.useVault)(),t=go(),n=U(),r=z();return(0,u.useMemo)(()=>new S.Creator(e,n.layout.creators||[],t,r.creators),[n.layout.creators,r.creators,t,e])}async function To(e){let t=await e.create(),n=Array.isArray(t)?t[0]:t;return n?(e.onCreate?.(),e.close?.(),e.edit?.(n),!0):!1}const Eo=(0,u.createContext)({});function Do(e){return(0,u.useContext)(Eo)[e]||{}}function Oo(e){let t=(0,u.useContext)(Eo),n=(0,u.useMemo)(()=>({...t,[e.id]:e.data}),[t,e.id,e.data]);return(0,d.jsx)(Eo.Provider,{value:n,children:e.children})}const ko=(0,u.memo)(function(e){let t=(0,m.useVault)(),{edit:n,modal:r}=ui(),[i,a]=(0,u.useState)(!1),[o,s]=(0,u.useState)(null),c=wo(),f=z(),p=(0,u.useRef)(!1),g=e.resource.initialData?.selector;Ka(g);let _=Do(e.creator.id),v={targetType:e.resource.type,parent:e.resource.parent?{property:e.resource.property,atIndex:e.resource.index,resource:e.resource.parent}:void 0,target:e.resource.target,initialData:{..._,...e.resource.initialData||{},...e.initialData||{}}},y=async t=>{if(!(i||p.current)){a(!0),p.current=!0;try{await To({create:()=>c.create(e.creator.id,t,v),onCreate:e.onCreate,close:e.skipEditingOnCreate?void 0:()=>{r.popStack(),r.close()},edit:e.skipEditingOnCreate||e.resource.initialData?.skipEditingOnCreate?void 0:t=>n(t,{parent:(0,h.toRef)(e.resource.parent),property:e.resource.property,index:e.resource.index})})}catch(e){s(e?.message||`Unknown error`)}finally{a(!1),p.current=!1}}},b=async()=>!0;if((0,u.useEffect)(()=>{e.resource.initialData?.showEmptyForm||!e.creator.render&&!i&&y({})},[e.creator]),o)return(0,d.jsx)(`div`,{className:`flex flex-col items-center p-4`,children:(0,d.jsx)(l.ErrorMessage,{children:o})});let x=(0,d.jsx)(`div`,{className:`flex flex-col items-center py-8`,children:(0,d.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,d.jsx)(l.Spinner,{}),` `,(0,d.jsx)(`span`,{children:`Loading`})]})});return i?x:e.creator.render?(0,d.jsx)(d.Fragment,{children:(0,d.jsx)(u.Suspense,{fallback:x,children:e.creator.render({vault:t,runCreate:y,validate:b,options:v,config:f.creators?.[(0,S.getCreatorConfigKey)(e.creator)]||{}})})}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l.EmptyState,{children:`No options available`}),(0,d.jsx)(l.ActionButton,{primary:!0,onPress:()=>y({}),children:e.creator.actionButton||`Create`})]})});function Ao(e){let t=U(),n=(0,m.useVault)(),[r,i]=(0,u.useState)(e.resource.initialCreator||``),[a,o]=(0,u.useState)(),[s,c]=(0,u.useState)(``),[f,p]=(0,u.useState)(!1),[h,g]=(0,u.useState)(``),[_,v]=(0,u.useState)(null),y=(0,u.useRef)(null),b=oo(),x=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,t.layout.creators||[],{vault:n}),[e.resource,t.layout.creators,n]),C=x.some(e=>e.supportsResource);(0,u.useEffect)(()=>{x.length===1&&!r&&!C&&i(x[0].id)},[C,r,x]),(0,u.useEffect)(()=>{C&&!r&&y.current?.focus()},[C,r]);let w=x.find(e=>e.id===r);if((0,u.useEffect)(()=>{w&&b?.(w.label)}),x.length===0)return(0,d.jsx)(l.EmptyState,{children:`Not currently supported`});let T=(e,t)=>{o(t||Po(s)),i(e.id)},E=async t=>{t.preventDefault();let r=s.trim();if(!r||f)return;p(!0),g(``),v(null);let i=Fo(),a=await Promise.all(x.map(async t=>{if(!t.supportsResource)return null;try{let a=await t.supportsResource(r,i,{vault:n,resource:e.resource});return a?{creator:t,initialData:No(r,a).initialData}:null}catch(e){return{creator:t,error:e?.message||`Could not check this link`}}})),o=a.filter(jo),c=a.filter(Mo);if(p(!1),o.length===1){T(o[0].creator,o[0].initialData);return}if(o.length>1){v(o),g(`Multiple creators can use this link. Choose one below.`);return}g(c[0]?.error||`No creator recognised this link. Choose one below.`)},D=(0,d.jsx)(l.ModalBackSlot,{children:(0,d.jsx)(l.IconButton,{root:document.getElementById(`headlessui-portal-root`)||void 0,label:`Back to Add content options`,className:`group`,placement:`right`,onPress:()=>{i(``),o(void 0)},children:(0,d.jsx)(l.GridIcon,{className:`text-2xl opacity-50 group-hover:opacity-70`})})});if(w)return w.hiddenModal?(0,d.jsxs)(d.Fragment,{children:[D,(0,d.jsx)(ko,{creator:w,resource:e.resource,initialData:a})]}):(0,d.jsxs)(`div`,{children:[D,(0,d.jsx)(`div`,{className:`p-2 py-6`,children:(0,d.jsx)(ko,{creator:w,resource:e.resource,initialData:a})})]});let O=_?.length?_.map(e=>e.creator):x,ee=new Map(_?.map(e=>[e.creator.id,e.initialData]));return(0,d.jsxs)(d.Fragment,{children:[C?(0,d.jsxs)(`form`,{className:`p-4 pb-0`,onSubmit:E,children:[(0,d.jsx)(`label`,{className:`block text-sm font-medium text-gray-700`,htmlFor:`creator-resource-link`,children:`Paste a link`}),(0,d.jsxs)(`div`,{className:`mt-1 flex gap-2`,children:[(0,d.jsx)(`input`,{ref:y,id:`creator-resource-link`,className:`min-w-0 flex-1 rounded border border-gray-300 px-3 py-2 text-sm`,value:s,onChange:e=>{c(e.currentTarget.value),g(``),v(null)},placeholder:`https://example.org/resource`,type:`url`}),(0,d.jsx)(l.ActionButton,{primary:!0,type:`submit`,isDisabled:!s.trim()||f,children:f?`Checking`:`Use link`})]}),h?(0,d.jsx)(`div`,{className:`mt-2 text-sm text-gray-600`,role:`status`,children:h}):null]}):null,(0,d.jsx)(l.CreatorGrid,{label:`Select a type`,items:O.map(e=>({id:e.id,title:e.label,description:e.summary||``,icon:e.icon,onClick:()=>T(e,ee.get(e.id))}))})]})}function jo(e){return!!e&&!(`error`in e)}function Mo(e){return!!e&&`error`in e}function No(e,t){return typeof t==`object`?t:{initialData:Po(e)}}function Po(e){let t=e.trim();return t?{url:t,youtubeUrl:t}:void 0}function Fo(){let e=new Map,t=new Map,n=new Map,r=t=>(e.has(t)||e.set(t,fetch(t).then(e=>{if(!e.ok)throw Error(`Could not load ${t}`);return e.text()})),e.get(t)),i=e=>(n.has(e)||n.set(e,fetch(e,{method:`HEAD`}).then(t=>{if(!t.ok)throw Error(`Could not check ${e}`);return t})),n.get(e));return{text:r,head:i,json(e){return t.has(e)||t.set(e,r(e).then(e=>JSON.parse(e))),t.get(e)},async contentType(e){return(await i(e)).headers.get(`content-type`)||``}}}const Io={id:`@manifest-editor/creator`,label:`Add content`,options:{hideHeader:!0,tabs:!1},render(e){return(0,d.jsx)(Ao,{resource:e})}},Lo={color:{main:`#B84C74`,mainHover:`#4a89ff`,logoPink:`#E94581`,white:`white`,grey:`grey`,black:`black`,lightgrey:`#F8F9FA`,mediumgrey:`#dddddd`,danger:`#a90e21`,warning:`#e38627`,lightdanger:`#ffeaea`,lightsuccess:`#c5e8c5`,success:`#6ccd55`,greyOverlay:`rgba(0, 0, 0, 0.2)`,highlight:`#faeed7`},iiifColor:{manifest:`rgba(0, 0, 0, 0.2)`,canvas:`rgba(255, 222, 219, 0.8)`,service:`rgba(13, 110, 253, 0.8)`,annotation:`rgba(247, 226, 173, 0.8)`,contentResource:`rgba(207, 247, 255, 0.8)`,ranges:`rgba(144, 213, 157, 0.8)`},padding:{xs:`0.25rem`,small:`0.5rem`,medium:`1rem`,large:`2rem`},device:{mobile:`375px`,tablet:`768px`,laptop:`992px`,desktop:`1200px`},shadows:{standard:`rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.05) 0px 5px 15px 0px`,bottom:`rgba(0, 0, 0, 0.1) 0px 4px 2px -2px`}};function Ro(e){let{}=e,t=(0,m.useVault)(),n=U(),r=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,n.layout.creators||[],{vault:t}),[e.resource,n.layout.creators,t]);return r.length===0?(0,d.jsx)(`div`,{children:`No supported creators found`}):(0,d.jsx)(`div`,{children:(0,d.jsxs)(l.Tabs,{className:`w-full flex-1 overflow-hidden flex flex-col`,children:[(0,d.jsx)(l.TabList,{className:`flex-1 overflow-hidden w-full flex text-sm whitespace-nowrap`,items:r,children:e=>(0,d.jsx)(l.Tab,{id:e.id,children:e.label})}),r.map(t=>(0,d.jsx)(l.TabPanel,{id:t.id,className:`p-2`,children:(0,d.jsx)(g.ThemeProvider,{theme:Lo,children:(0,d.jsx)(ko,{creator:t,resource:e.resource,onCreate:e.onCreate,skipEditingOnCreate:!0})})},t.id))]})})}function zo({fallback:e,backAction:t}){let n=Xr(),{back:r}=Jr();return n.length?(0,d.jsx)(lo,{"aria-label":`Back`,onClick:r,children:(0,d.jsx)($a,{"aria-hidden":`true`})}):e}function Bo({closeAction:e,fallback:t}){let n=Xr();return Yr()||n.length?(0,d.jsx)(lo,{"aria-label":`Close panel`,onClick:()=>{e()},children:(0,d.jsx)(tr,{"aria-hidden":`true`})}):t}function Vo(e,t,n,r){let i=t.filter(t=>t.resourceType===e.resource.source.type);if(i.length===0)return null;for(let t of i){let i=[],a={},o=e.property===`partOf`,s=(t.editors||[]).filter(t=>{if(o&&t.id!==`@manifest-editor/part-of-reference`||r.hideTabs&&r.hideTabs.includes(t.id)||r.onlyTabs&&!r.onlyTabs.includes(t.id))return!1;if(t.supports.sortKey){if(i.includes(t.supports.sortKey))return!1;t.supports.sortFallback&&(a[t.supports.sortKey]=t)}return n.edit&&!t.supports.edit||t.supports.custom&&t.supports.custom(e,n.vault)===!1?!1:(t.supports.sortKey&&i.push(t.supports.sortKey),!0)}),c=Object.keys(a);for(let e of c)!i.includes(e)&&a[e]&&!s.includes(a[e])&&s.push(a[e]);if(s.length)return{...t,editors:s}}return null}function Ho({currentTab:e=void 0}){let t=Yr(),n=(0,u.useContext)(m.ResourceReactContext),r=U(),i=W(),a=(0,m.useVault)(),{change:o}=ui(),s=oo(),{editorConfig:c}=z(),f=t?.resource.source?.id,p=t?.resource.source?.type,h=f!==i.id;f&&h&&i.type===`Collection`&&p===`Collection`&&(p=`EmbeddedCollection`);let g=(p?c[p]:c.All)||{},_=(0,u.useMemo)(()=>{let e={...n},r=t?.resource.source.id,i=t?.resource.source.type,a={Collection:`collection`,Manifest:`manifest`,Range:`range`,Canvas:`canvas`,Annotation:`annotation`,AnnotationPage:`annotationPage`};return i&&a[i]&&(e[a[i]]=r),e},[t,n]);function v(e){return t?(0,d.jsx)(m.ResourceReactContext.Provider,{value:_,children:e}):e}let y=(0,u.useMemo)(()=>{if(!t)return null;let e=r.layout.editors||[],n=(r.layout.resources||[]).map(t=>typeof t==`string`?{id:`@default/`+t,label:t,resourceType:t,auto:!0,editors:e.filter(e=>e.supports.resourceTypes.includes(t))}:t);return Vo(t,n,{edit:!0,vault:a},g)},[t,r]);(0,u.useEffect)(()=>{s(y?.label||``)},[y]),(0,u.useEffect)(()=>{let t=y?.editors.map(e=>e.id)||[];t.find(t=>t===e)||o(`@manifest-editor/editor`,{currentTab:t[0]})},[y?.editors,e,o]);let b=(0,u.useMemo)(()=>(y?.editors||[]).map(e=>({id:e.id,label:e.label,renderComponent:()=>e.component(g)})),[y?.editors,g]);if(!t||!y)return null;if(g.singleTab){let e=(y?.editors||[]).find(e=>e.id===g.singleTab);if(e)return v((0,d.jsx)(`div`,{className:`w-full`,children:e.component(g)},t.resource.source?.id))}return v((0,d.jsx)(l.SidebarTabs,{isNested:h,rootResource:i,menuId:t.resource.source.id,menu:b,selectedKey:e,onSelectionChange:e=>{o(`@manifest-editor/editor`,{currentTab:e})}},t.resource.source?.id))}const Uo={id:`@manifest-editor/editor`,label:`Editor`,options:{hideHeader:!0,tabs:!0,minWidth:400},renderBackAction:({backAction:e,fallback:t})=>(0,d.jsx)(zo,{backAction:e,fallback:t}),renderCloseAction:({closeAction:e,fallback:t})=>(0,d.jsx)(Bo,{closeAction:e,fallback:t}),render({currentTab:e}){return(0,d.jsx)(Ho,{currentTab:e})}};function Wo(e){let[t,n]=(0,u.useState)(!1),r=(0,u.useRef)(null),i=(0,u.useRef)(0);function a(t){i.current--,!(t&&i.current!==0)&&(r.current&&(clearTimeout(r.current),r.current=0),r.current=setTimeout(()=>{n(!1)},e))}function o(){i.current++,r.current&&clearTimeout(r.current),n(!0)}return(0,u.useMemo)(()=>[t,{set:o,clear:a}],[t])}function Go(e){return e?typeof e==`string`?{src:e,alt:``}:e:null}function Ko(e){return e?typeof e==`string`?e:e.name:null}function qo(e){let t=e.extension,n=t.leftPanels?.[0]||t.centerPanels?.[0]||t.rightPanels?.[0]||t.modalPanels?.[0];return n?{id:n.id,label:n.label||`Open plugin`,modal:t.modalPanels?.some(e=>e.id===n.id)||!1}:null}function Jo(e){return e instanceof Error?e.message:`Plugin configuration could not be saved.`}function Yo(e){return(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,d.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,d.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})}function Xo(e){return(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,d.jsx)(`path`,{d:`M7 7h10v10`}),(0,d.jsx)(`path`,{d:`M7 17 17 7`})]})}function Zo(){let e=U(),{appId:t}=Hn(),n=z(),r=ie(),i=An(),a=Mn(),o=ui(),{saveGlobalPluginConfig:s}=(0,u.useContext)(Tn),[c,f]=(0,u.useState)(!1),[p,m]=(0,u.useState)(``),[h,g]=(0,u.useState)(null),[_,v]=(0,u.useState)(null),[y,b]=(0,u.useState)(null),x=(0,u.useMemo)(()=>new Set(un(i,e,t).map(e=>e.metadata.id)),[i,e,t]),S=(0,u.useMemo)(()=>{let n=p.trim().toLowerCase();return i.plugins.filter(r=>{let i=on(r,e,t);return!c&&!i?!1:!n||[r.metadata.label,r.metadata.id,r.metadata.description,Ko(r.metadata.author),...r.metadata.tags||[]].filter(Boolean).join(` `).toLowerCase().includes(n)})},[e,t,i.plugins,p,c]),C=h&&i.plugins.find(e=>e.metadata.id===h)||null;if(!i.plugins.length)return null;function w(e){a.setAppConfig(t,e),r({plugins:{...n.plugins||{},apps:{...n.plugins?.apps||{},[t]:e}}})}async function T(e){if(!s){b(`Global plugin settings are not available in this host.`);return}let n=i.globalApps[t]||{},r={apps:{...i.globalApps,[t]:e}};a.setGlobalAppConfig(t,e);try{await s(r)}catch(e){a.setGlobalAppConfig(t,n),b(Jo(e))}}async function E(n,r,a){b(null),v(`${a}:${n.metadata.id}`);let o=a===`global`?i.globalApps[t]||{}:i.apps[t]||{},s=r?_n(o,i,n,e,t):{config:Yt(o,n.metadata.id),blocked:[]};if(s.blocked.length){v(null),b(`Cannot enable ${n.metadata.label}: ${s.blocked.join(`, `)}.`);return}a===`global`?await T(s.config):w(s.config),v(null)}function D(e){let t=qo(e);if(t){if(t.modal){o.modal.open({id:t.id});return}o.open(t.id)}}return(0,d.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-gray-200 pt-4 mt-4`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,d.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,d.jsx)(`h3`,{className:`font-semibold text-sm text-gray-900`,children:`Plugins`})}),(0,d.jsx)(`button`,{type:`button`,className:`rounded border border-gray-200 bg-white px-2 py-1 text-xs text-gray-500 hover:text-gray-700 hover:border-gray-300 transition-colors`,onClick:()=>f(e=>!e),children:c?`Compatible only`:`Show all`})]}),(0,d.jsx)(`input`,{"aria-label":`Search plugins`,className:`rounded border border-gray-200 px-2.5 py-1.5 text-xs focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`,type:`search`,placeholder:`Search plugins…`,value:p,onChange:e=>m(e.currentTarget.value)}),y?(0,d.jsx)(`div`,{className:`rounded border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:y}):null,(0,d.jsx)(`div`,{className:`flex flex-col gap-2`,children:S.map(n=>{let r=cn(n,i,t),a=x.has(n.metadata.id),o=r&&n.loadStatus===`loading`,s=r&&n.loadStatus===`error`?n.loadError:null,c=Go(n.metadata.image),u=r&&!a&&!o&&!s,f=on(n,e,t),p=sn(n,e,t),m=qo(n),h=!!n.settings,v=_===`workspace:${n.metadata.id}`;return(0,d.jsxs)(`article`,{className:`flex gap-2.5 rounded-lg border bg-white p-3 text-sm transition-colors ${a?`border-gray-200`:`border-gray-100 bg-gray-50`} ${f?``:`bg-gray-100`}`,children:[c?(0,d.jsx)(`img`,{className:`h-9 w-9 rounded object-cover flex-none mt-0.5`,src:c.src,alt:c.alt||n.metadata.label}):(0,d.jsx)(`div`,{className:`h-9 w-9 rounded flex items-center justify-center flex-none mt-0.5 text-lg ${a?`bg-me-primary-50 text-me-primary-500`:`bg-gray-100 text-gray-600`}`,children:(0,d.jsx)(Yo,{className:`w-4 h-4`})}),(0,d.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,d.jsxs)(`div`,{className:`flex items-start justify-between gap-1`,children:[(0,d.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 min-w-0`,children:[(0,d.jsx)(`span`,{className:`font-medium text-gray-900 text-xs`,children:n.metadata.label}),n.metadata.official?(0,d.jsxs)(`span`,{className:`rounded-full text-me-primary-500 px-1.5 py-0 text-[9px] font-bold inline-flex items-center gap-1`,children:[(0,d.jsx)(l.CheckIcon,{className:`w-3 h-3`}),` Verified`]}):null,n.metadata.version?(0,d.jsx)(`span`,{className:`text-[10px] text-gray-600`,children:n.metadata.version}):null]}),(0,d.jsxs)(`div`,{className:`flex items-center gap-1 flex-none`,children:[h?(0,d.jsx)(`button`,{type:`button`,title:`Configure plugin`,"aria-label":`Configure ${n.metadata.label}`,className:`rounded p-1 text-gray-600 hover:text-gray-700 hover:bg-gray-100 transition-colors`,onClick:()=>g(n.metadata.id),children:(0,d.jsx)(Yo,{className:`w-3.5 h-3.5`})}):null,a&&m?(0,d.jsx)(`button`,{type:`button`,title:`Open ${m.label}`,"aria-label":`Open ${m.label}`,className:`rounded p-1 text-me-primary-500 hover:bg-me-primary-50 transition-colors`,onClick:()=>D(n),children:(0,d.jsx)(Xo,{className:`w-3.5 h-3.5`})}):null,(0,d.jsx)(`button`,{type:`button`,disabled:!f||v,onClick:()=>E(n,!r,`workspace`),className:`relative inline-flex h-5 w-9 flex-none items-center rounded-full transition-colors disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-me-primary-500/30 ${r?`bg-me-primary-500`:`bg-gray-200`}`,title:r?`Disable plugin`:`Enable plugin`,"aria-label":`${r?`Disable`:`Enable`} ${n.metadata.label}`,children:(0,d.jsx)(`span`,{className:`inline-block h-3.5 w-3.5 transform rounded-full bg-white shadow transition-transform ${r?`translate-x-4`:`translate-x-0.5`}`})})]})]}),n.metadata.description?(0,d.jsx)(`p`,{className:`text-xs text-gray-500 leading-relaxed`,children:n.metadata.description}):null,o?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Loading plugin…`}):null,s?(0,d.jsx)(`span`,{className:`text-xs text-red-600`,children:s}):null,u?(0,d.jsx)(`span`,{className:`text-xs text-amber-600`,children:`Waiting for required dependencies`}):null,!f&&p?(0,d.jsx)(`span`,{className:`text-xs text-gray-600`,children:p}):null]})]},n.metadata.id)})}),S.length?null:(0,d.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-xs text-gray-500`,children:`No plugins found.`}),C?(0,d.jsx)(l.Modal,{title:`Configure ${C.metadata.label}`,onClose:()=>g(null),width:`560px`,children:(0,d.jsx)(Qo,{plugin:C,onClose:()=>g(null),canSaveGlobal:!!s})}):null]})}function Qo({plugin:e,onClose:t,canSaveGlobal:n}){let r=Fn(e.metadata.id),[i,a]=(0,u.useState)(`workspace`),[o,s]=(0,u.useState)({}),[c,l]=(0,u.useState)(!1),[f,p]=(0,u.useState)(!1),[m,h]=(0,u.useState)(null),g=i===`global`?r.global:r.workspace;(0,u.useEffect)(()=>{s({...g}),h(null),p(!1)},[e.metadata.id,i]);async function _(){let t=e.settings?.validate?.(o);if(t){h(t);return}l(!0),h(null);try{i===`global`?await r.setGlobalSettings(o):r.setWorkspaceSettings(o),p(!0),setTimeout(()=>p(!1),2e3)}catch(e){h(Jo(e))}finally{l(!1)}}async function v(){l(!0),h(null);try{i===`global`?await r.resetGlobalSettings():r.resetWorkspaceSettings(),s({})}catch(e){h(Jo(e))}finally{l(!1)}}let y=n&&r.canSaveGlobal;return(0,d.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[y?(0,d.jsxs)(`div`,{className:`flex items-center gap-1 px-5 pt-4 pb-3 border-b border-gray-100`,children:[(0,d.jsx)(`span`,{className:`text-xs text-gray-500 mr-2`,children:`Scope:`}),(0,d.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`workspace`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`workspace`),children:`This workspace`}),(0,d.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`global`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`global`),children:`All workspaces`})]}):null,m?(0,d.jsx)(`div`,{className:`mx-5 mt-4 rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:m}):null,(0,d.jsx)(`div`,{className:`flex-1 overflow-y-auto p-5`,children:(0,d.jsx)(`div`,{className:`flex flex-col gap-3`,children:e.settings?.render?e.settings.render({plugin:e,appId:r.appId,scope:i,value:o,defaults:r.defaults,effective:r.effective,onChange:s}):e.settings?.fields?.length?e.settings.fields.map(e=>(0,d.jsx)($o,{field:e,draft:o,setDraft:s},e.id)):(0,d.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-sm text-gray-500`,children:`This plugin has no configurable settings.`})})}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-gray-100 px-5 py-4`,children:[(0,d.jsx)(`button`,{type:`button`,className:`text-xs text-gray-600 hover:text-gray-700 transition-colors disabled:opacity-40`,disabled:c,onClick:v,children:`Reset to defaults`}),(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f?(0,d.jsx)(`span`,{className:`text-xs text-green-600`,children:`✓ Saved`}):null,(0,d.jsx)(`button`,{type:`button`,className:`rounded-lg bg-me-primary-500 px-4 py-2 text-sm font-medium text-white hover:bg-me-primary-600 disabled:opacity-50 transition-colors`,disabled:c,onClick:_,children:c?`Saving…`:`Save ${i}`})]})]})]})}function $o({field:e,draft:t,setDraft:n}){let r=t[e.id],i=`plugin-setting-${e.id}`;function a(r){n({...t,[e.id]:r})}let o=(0,d.jsx)(`label`,{className:`text-sm font-medium text-gray-900`,htmlFor:i,children:e.label}),s=`rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`;return e.type===`boolean`?(0,d.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null]}),(0,d.jsx)(`input`,{id:i,type:`checkbox`,checked:r===!0,onChange:e=>a(e.currentTarget.checked),className:`h-4 w-4 rounded border-gray-300 text-me-primary-500 focus:ring-me-primary-500`})]}):e.type===`textarea`?(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsx)(`textarea`,{id:i,className:`${s} min-h-24 resize-y`,value:typeof r==`string`?r:``,placeholder:e.placeholder,onChange:e=>a(e.currentTarget.value)})]}):e.type===`select`?(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsxs)(`select`,{id:i,className:s,value:r===void 0?``:String(r),onChange:t=>{let n=e.options?.find(e=>String(e.value)===t.currentTarget.value);a(n?n.value:t.currentTarget.value)},children:[(0,d.jsx)(`option`,{value:``,children:`Default`}),(e.options||[]).map(e=>(0,d.jsx)(`option`,{value:String(e.value),children:e.label},String(e.value)))]})]}):(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsx)(`input`,{id:i,className:s,type:e.type===`number`?`number`:`text`,value:typeof r==`string`||typeof r==`number`?r:``,placeholder:e.placeholder,onChange:t=>{a(e.type===`number`?Number(t.currentTarget.value):t.currentTarget.value)}})]})}function es(){let e=z(),t=ie(),n=e.creators[`iiif-image-services`]||{};return(0,d.jsxs)(l.Form.Form,{className:`flex max-w-3xl flex-col gap-4`,onChange:e=>{let n=new FormData(e.currentTarget);t({creators:{"iiif-image-services":{compact:n.get(`compact`)===`compact`?`compact`:`with-dimensions`,includeSizes:n.get(`includeSizes`)===`on`,includeTiles:n.get(`includeTiles`)===`on`}}})},onSubmit:e=>e.preventDefault(),children:[(0,d.jsx)(`h2`,{className:`text-xl font-semibold text-gray-900`,children:`IIIF Options`}),(0,d.jsxs)(`fieldset`,{className:`flex flex-col gap-4`,children:[(0,d.jsx)(`legend`,{className:`mb-3 text-base font-semibold`,children:`Image services`}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`compactImageServices`,children:`Compact services`}),(0,d.jsxs)(`select`,{id:`compactImageServices`,name:`compact`,className:`rounded border border-gray-300 p-2`,defaultValue:n.compact===`compact`?`compact`:`with-dimensions`,children:[(0,d.jsx)(`option`,{value:`with-dimensions`,children:`id, type, profile, width, height (default)`}),(0,d.jsx)(`option`,{value:`compact`,children:`id, type, profile (compact)`})]})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{id:`includeSizes`,name:`includeSizes`,type:`checkbox`,defaultChecked:n.includeSizes===!0}),(0,d.jsx)(l.Form.Label,{htmlFor:`includeSizes`,children:`Include sizes`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{id:`includeTiles`,name:`includeTiles`,type:`checkbox`,defaultChecked:n.includeTiles===!0}),(0,d.jsx)(l.Form.Label,{htmlFor:`includeTiles`,children:`Include tiles`})]}),(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:`Applies to newly added images. Thumbnails always include available sizes and tiles.`})]})]})}function ts(){let e=Cr(),t=W(),n=z(),r=ie(),[i,a]=Wo(2e3);function o(e){e.preventDefault();let t=new FormData(e.target),i={defaultPreview:t.get(`defaultPreview`),i18n:{...n.i18n||{},advancedLanguageMode:t.get(`advancedLanguageMode`)===`on`,availableLanguages:(t.get(`availableLanguages`)||``).split(`,`).map(e=>e.trim()),defaultLanguage:t.get(`defaultLanguage`)},export:{...n.export||{},version:t.get(`isVersion2`)===`on`?2:3,baseIdentifier:t.get(`base`)||null},plugins:n.plugins,editorFeatureFlags:{...n.editorFeatureFlags||{},rememberCanvasId:t.get(`rememberCanvasId`)===`on`,rememberLeftPanelId:t.get(`rememberLeftPanelId`)===`on`,annotationPopups:t.get(`annotationPopups`)===`on`,manifestGridOptions:t.get(`manifestGridOptions`)===`on`,enableMultiImageCanvases:t.get(`enableMultiImageCanvases`)===`on`,enableMultiMediaCanvases:t.get(`enableMultiMediaCanvases`)===`on`}};r(i),a.set(),a.clear()}return(0,d.jsxs)(l.Sidebar,{children:[(0,d.jsx)(l.SidebarHeader,{title:`Workspace configuration`}),i?(0,d.jsx)(`div`,{className:`bg-me-primary-500 text-white p-3 text-sm`,children:`Changes saved`}):null,(0,d.jsxs)(l.SidebarContent,{className:`p-4`,children:[(0,d.jsx)(es,{}),(0,d.jsxs)(l.Form.Form,{onSubmit:o,className:`flex flex-col gap-3`,children:[(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`defaultLanguage`,children:`Default Language`}),(0,d.jsx)(l.Form.Input,{type:`text`,name:`defaultLanguage`,id:`defaultLanguage`,defaultValue:n.i18n?.defaultLanguage||``})]}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`availableLanguages`,children:`Available Languages`}),(0,d.jsx)(l.Form.Input,{type:`text`,name:`availableLanguages`,id:`availableLanguages`,defaultValue:(n.i18n?.availableLanguages||[]).join(`, `)})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`advancedLanguageMode`,id:`advancedLanguageMode`,defaultChecked:n.i18n?.advancedLanguageMode||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`advancedLanguageMode`,children:`Advanced Language Mode`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`textGranularityEnabled`,id:`textGranularityEnabled`,defaultChecked:n.i18n?.textGranularityEnabled||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`textGranularityEnabled`,children:`Enable text granularity`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`rememberCanvasId`,id:`rememberCanvasId`,defaultChecked:n.editorFeatureFlags?.rememberCanvasId||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`rememberCanvasId`,children:`Remember Canvas ID`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`rememberLeftPanelId`,id:`rememberLeftPanelId`,defaultChecked:n.editorFeatureFlags?.rememberLeftPanelId||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`rememberLeftPanelId`,children:`Remember Left panel`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`manifestGridOptions`,id:`manifestGridOptions`,defaultChecked:n.editorFeatureFlags?.manifestGridOptions||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`manifestGridOptions`,children:`Manifest Grid Options`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`isVersion2`,id:`isVersion2`,defaultChecked:n.export?.version===2}),(0,d.jsxs)(l.Form.Label,{htmlFor:`isVersion2`,children:[`Export Presentation 2 `,t.type,`s`]})]}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`defaultPreview`,children:`Default preview`}),(0,d.jsx)(`div`,{children:e.configs.map((e,t)=>e.type===`iiif-preview-service`?null:(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{type:`radio`,id:e.id,name:`defaultPreview`,value:e.id,defaultChecked:n.defaultPreview?n.defaultPreview===e.id:t===0}),(0,d.jsx)(`label`,{htmlFor:e.id,children:e.label})]},e.id))})]}),t.type===`Manifest`?(0,d.jsx)(`a`,{className:`text-sm text-me-primary-500 hover:underline hover:text-me-primary-600`,href:window.location.pathname.includes(`/exhibition`)?window.location.pathname.replace(`/exhibition`,``)||`/`:`${window.location.pathname}/exhibition`,children:window.location.pathname.includes(`/exhibition`)?`Return to Manifest Editor`:`Go to Exhibition Editor`}):null,(0,d.jsx)(Zo,{}),(0,d.jsx)(`div`,{className:`mt-5`,children:(0,d.jsx)(l.ActionButton,{type:`submit`,children:`Save changes`})})]})]})]})}function ns(e){let t=new Map;for(let n of e){if(!n.configuration?.fields.length)continue;let e=(0,S.getCreatorConfigKey)(n);(!t.has(e)||n.id===e)&&t.set(e,n)}return Array.from(t.values())}function rs(){let e=U(),t=z(),n=ie(),r=(0,u.useMemo)(()=>ns(e.layout.creators||[]),[e.layout.creators]);function i(e,t){let r=(0,S.getCreatorConfigKey)(e),i=new FormData(t),a={};for(let t of e.configuration?.fields||[])t.type===`checkbox`&&(a[t.id]=i.get(t.id)===`on`);n({creators:{[r]:a}})}return r.length?(0,d.jsx)(`div`,{className:`flex max-w-3xl flex-col gap-6`,children:r.map(e=>(0,d.jsxs)(l.Form.Form,{className:`flex flex-col gap-3 border-b border-gray-100 pb-5 last:border-b-0`,onChange:t=>i(e,t.currentTarget),children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,d.jsx)(`h3`,{className:`text-base font-semibold text-gray-900`,children:e.label}),e.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:e.summary}):null]}),e.configuration?.fields.map(n=>{let r=(0,S.getCreatorConfigKey)(e),i=t.creators?.[r]?.[n.id],a=`${r}-${n.id}`;return n.type===`checkbox`?(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-1 items-start`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:n.id,id:a,defaultChecked:typeof i==`boolean`?i:n.defaultValue||!1}),(0,d.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,d.jsx)(l.Form.Label,{htmlFor:a,children:n.label}),n.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:n.summary}):null]})]},n.id):null})]},(0,S.getCreatorConfigKey)(e)))}):(0,d.jsx)(l.EmptyState,{children:`No creator settings available`})}function is(){return(0,f.createStore)((e,t)=>({specificMenus:{},resourceMenus:{},hookMenuItem(t){let n=Lt(),r=t.resource?.id||``,i=t.resource?.type;return i?r?(e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:void 0}}}}))}):(e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:void 0}}}}))}):()=>{}}}))}const as=(0,u.createContext)(null);function os({children:e}){let t=(0,u.useMemo)(()=>is(),[]);return(0,d.jsx)(as.Provider,{value:t,children:e})}function ss(){let e=(0,u.useContext)(as);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function cs(e){let t=ss(),n=(0,f.useStore)(t,e=>e.resourceMenus),r=(0,f.useStore)(t,e=>e.specificMenus);return(0,u.useMemo)(()=>{let t=r[e.id||``]?.menus||{},i=n[e.type]?.menus||{},a=Object.values(t).flat(),o=[...Object.values(i).flat(),...a].filter(e=>e!==void 0),s=[],c=[];for(let e of o){let t=[];for(let n of e.items||[])n.id&&s.includes(n.id)||(s.push(n.id),t.push(n));t.length&&c.push({...e,items:t})}return ls(c)},[r,n,e.id,e.type])}function ls(e){let t={},n=[];e.forEach(e=>{if(!e)return;let r=e.sectionTitle;if(!r){n.push(...e.items||[]);return}t[r]||(t[r]=[]),t[r].push(...e.items)});let r=Object.entries(t).map(([e,t])=>({sectionTitle:e,items:t}));return n.length&&r.push({items:n}),r}function us(e,t=[]){let n=ss(),r=(0,f.useStore)(n,e=>e.hookMenuItem);(0,u.useEffect)(()=>r(e),[r,e.resource?.id,e.resource?.type,...t])}var ds={CenterPanelContainer:`_CenterPanelContainer_1sbe6_1`,CenterPanelHeader:`_CenterPanelHeader_1sbe6_16`,CenterPanelClose:`_CenterPanelClose_1sbe6_23`,CenterPanelTitle:`_CenterPanelTitle_1sbe6_28`};function fs(e){return(0,d.jsxs)(`div`,{className:ds.CenterPanelContainer,children:[e.title||e.close?(0,d.jsxs)(`div`,{className:ds.CenterPanelHeader,children:[e.title?(0,d.jsx)(`h2`,{className:ds.CenterPanelTitle,children:e.title}):null,e.close?(0,d.jsx)(K,{className:ds.CenterPanelClose,onClick:e.close,children:(0,d.jsx)(tr,{})}):null]}):null,e.children]})}const ps=g.default.div`
445
445
  flex: 1;
446
446
  display: flex;
447
447
  width: 100%;
@@ -1527,6 +1527,6 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
1527
1527
  pointer-events: visible;
1528
1528
  opacity: 1;
1529
1529
  `}
1530
- `,Ac=(0,u.memo)(function(e){if(e.layoutMode===`focused`)return(0,d.jsx)(bc,{...e});let t=U(),n=Un(),r=W(),i=pi(),{vault:a}=(0,u.useContext)(m.ReactVaultContext),o=a||void 0,s=(0,m.useVaultSelector)(e=>e.iiif),c=(0,u.useRef)(null),f=(0,u.useRef)(null),{loading:p,state:h,leftPanels:g,centerPanels:_,rightPanels:v,modals:y=[],actions:b}=i,x=(0,u.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:h,appState:n}),[r,o,t,h,n,s]),S=(0,u.useMemo)(()=>_c(g,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[g,x]),w=(0,u.useMemo)(()=>_c(_,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,x]),T=(0,u.useMemo)(()=>_c(v,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[v,x]),E=(0,u.useMemo)(()=>_c(y,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[y,x]),D=(0,u.useMemo)(()=>S.filter(e=>e.modal),[S]),k=(0,u.useMemo)(()=>S.filter(e=>!e.modal),[S]),A=(0,u.useMemo)(()=>[...E,...D],[E,D]),j=(0,u.useMemo)(()=>({...i,leftPanels:S,centerPanels:w,rightPanels:T,modals:A}),[i,S,w,T,A]),M=k.find(e=>e.id===h.leftPanel.current),N=T.find(e=>e.id===h.rightPanel.current),P=w.find(e=>e.id===h.centerPanel.current),F=A.find(e=>e.id===h.modal.current),te=h.modal.open&&D.some(e=>e.id===h.modal.current)?h.modal.current:h.leftPanel.current,ne=h.pinnedRightPanel.pinned?T.find(e=>e.id===h.pinnedRightPanel.current):void 0,[I]=Rs([`(max-width: 1020px)`]),re=e.isLoading||!1,L=(0,u.useMemo)(()=>(i.background||[]).map((e,t)=>(0,d.jsx)(u.Fragment,{children:e.render()},t)),[i.background]),R=$s(`left-panel/${M?.id}`,{left:!0,marginLeft:60,minWidthPx:M?.options?.minWidth||200,maxWidthPx:M?.options?.maxWidth||720,loading:p}),z=$s(`right-panel/${N?.id}`,{left:!1,minWidthPx:N?.options?.minWidth||320,maxWidthPx:N?.options?.maxWidth||720,loading:p}),ie=N&&(ne?.id!==N.id||!(0,ee.default)(h.pinnedRightPanel.state,h.rightPanel.state)),ae=R.widthB===`auto`?void 0:()=>R.setWidths({widthA:`auto`,widthB:no({options:M?.options,fallback:320})}),oe=z.widthB===`auto`?void 0:()=>z.setWidths({widthA:`auto`,widthB:no({options:N?.options,fallback:320})});if((0,u.useLayoutEffect)(()=>{I&&h.leftPanel.open&&h.rightPanel.open&&(b.leftPanel.close(),b.rightPanel.close())},[I]),(0,u.useLayoutEffect)(()=>{if(P&&P.onMount)return P.onMount(h.centerPanel.state||P.defaultState||{},{...j,current:b.centerPanel,vault:o},n)},[h.centerPanel.current,P?.id]),(0,u.useLayoutEffect)(()=>{if(h.leftPanel.current&&!M){let e=vc(k,h.leftPanel.current);e?b.leftPanel.change({id:e}):b.leftPanel.close()}if(h.centerPanel.current&&!P){let e=vc(w,h.centerPanel.current);e?b.centerPanel.change({id:e}):b.centerPanel.close()}if(h.rightPanel.current&&!N){let e=vc(T,h.rightPanel.current);e?b.rightPanel.change({id:e}):b.rightPanel.close()}if(h.modal.current&&!F){let e=vc(A,h.modal.current);e?b.modal.change({id:e}):b.modal.close()}},[h.leftPanel.current,h.centerPanel.current,h.rightPanel.current,h.modal.current,M?.id,P?.id,N?.id,F?.id,Q(k),Q(w),Q(T),Q(A)]),(0,u.useLayoutEffect)(()=>{T.length&&b.rightPanel.change({id:T[0].id}),k.length&&b.leftPanel.change({id:k[0].id}),w.length&&b.centerPanel.change({id:w[0].id})},[]),p)return null;let se=t=>(0,d.jsx)(gc,{$menu:e.leftPanelMenuPosition||`bottom`,ref:R.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:h.leftPanel.open||t!==`exited`?R.widthB:void 0,minWidth:M?.options?.minWidth},children:re?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.leftPanelMenu?(0,d.jsx)(X,{$open:h.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,d.jsx)(Z,{children:h.leftPanel.open||t!==`exited`?(0,d.jsx)(d.Fragment,{children:M?(0,d.jsx)(mo,{isLeft:!0,noHeader:!0,transition:t,panel:M,state:h.leftPanel,actions:b.leftPanel}):null}):null})]})}),ce=()=>F?(0,d.jsx)(l.Modal,{title:F.label,open:h.modal.open,onClose:()=>b.modal.close(),children:F.modal?(0,d.jsx)(`div`,{className:`h-[70vh] min-h-[60vh] max-h-full flex w-full`,children:(0,d.jsx)(mo,{isLeft:!0,isModal:!0,noHeader:!0,panel:F,state:h.modal,actions:b.modal})}):ro(F.render(h.modal.state||F.defaultState||{},{...j,current:b.modal,vault:o,isModal:!0},n))}):null,le=()=>(0,d.jsxs)(gc,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,d.jsx)(X,{$open:h.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,d.jsx)(Z,{children:(0,d.jsx)(C.ErrorBoundary,{resetKeys:[P?.id],FallbackComponent:io,children:re?(0,d.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,d.jsx)(qs,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):h.centerPanel.open&&P?ro(P.render(h.centerPanel.state||P.defaultState||{},{...j,current:b.centerPanel,vault:o},n)):null})})]}),ue=t=>(0,d.jsx)(gc,{$menu:e.rightPanelMenuPosition||`bottom`,ref:z.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:h.rightPanel.open||t!==`exited`?z.widthB:void 0,minWidth:N?.options?.minWidth},children:re?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.rightPanelMenu?(0,d.jsx)(X,{$open:h.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,d.jsx)(Z,{children:h.rightPanel.open||t!==`exited`?(0,d.jsxs)(d.Fragment,{children:[ie?(0,d.jsx)(mo,{panel:N,state:h.rightPanel,actions:b.rightPanel,pinActions:b.pinnedRightPanel,available:T}):null,ne?(0,d.jsx)(mo,{panel:ne,state:h.pinnedRightPanel,actions:b.pinnedRightPanel,close:b.rightPanel.close}):null]}):null})]})});return I?(0,d.jsxs)(lc,{children:[e.hideHeader?null:(0,d.jsxs)(uc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsx)(fc,{children:(0,d.jsxs)(xc,{children:[(0,d.jsxs)(Cc,{children:[k.length>0?(0,d.jsx)(wc,{type:`button`,"aria-expanded":h.leftPanel.open,onClick:()=>{b.rightPanel.close(),b.leftPanel.toggle()},children:M?.label}):null,T.length>0?(0,d.jsx)(Tc,{children:(0,d.jsxs)(Ec,{type:`button`,"aria-expanded":h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.toggle()},children:[(0,d.jsx)(nr,{"aria-hidden":`true`,rotate:90}),N?.label]})}):null]}),(0,d.jsx)(Sc,{children:le()}),T.length>0?(0,d.jsx)(Dc,{$open:h.rightPanel.open,children:ue()}):null,k.length>0?(0,d.jsxs)(Oc,{$open:h.leftPanel.open,children:[(0,d.jsx)(`nav`,{"aria-label":`Left panel tabs`,className:`flex flex-none overflow-x-auto border-b border-gray-300`,children:k.map(e=>(0,d.jsxs)(`button`,{type:`button`,"aria-pressed":h.leftPanel.current===e.id,className:`flex flex-1 shrink-0 items-center justify-center gap-1.5 border-0 border-b-[3px] p-3 text-gray-700 [&>svg]:shrink-0 [&>svg]:text-xl ${h.leftPanel.current===e.id?`border-b-[#b83265] bg-[#f9e8ef]`:`border-b-transparent bg-white`}`,onClick:()=>{b.rightPanel.close(),b.leftPanel.open({id:e.id,state:e.defaultState})},children:[e.icon,e.label]},e.id))}),se()]}):null,S.length>0||T.length>0?(0,d.jsx)(kc,{type:`button`,"aria-label":`Close panels`,$open:h.leftPanel.open||h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.close()}}):null]})}),(0,d.jsx)(`div`,{className:`hidden`,children:L}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:ce()}),(0,d.jsx)(Da,{})]}):(0,d.jsxs)(lc,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,d.jsxs)(uc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsxs)(fc,{ref:e=>{R.refs.container.current=e,z.refs.container.current=e},children:[S.length>0?(0,d.jsx)(l.PanelSideMenu,{current:te,items:S.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,separator:e.separator,onClick:()=>{if(e.modal){h.modal.open&&h.modal.current===e.id?b.modal.close():b.modal.open({id:e.id,state:e.defaultState});return}h.leftPanel.current===e.id?b.leftPanel.toggle():b.leftPanel.change({id:e.id})}})),open:h.leftPanel.open}):null,k.length>0?(0,d.jsx)(O.Transition,{nodeRef:c,in:h.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(pc,{ref:c,$width:R.widthB,$state:e,$motion:!0,children:se(e)}),(0,d.jsx)(Ks,{ref:R.refs.resizer,reset:ae,dir:`left`,transition:e,open:h.leftPanel.open||e!==`exited`,actions:b.leftPanel})]})}):null,(0,d.jsx)(mc,{children:le()}),T.length>0?(0,d.jsx)(O.Transition,{nodeRef:f,in:h.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Ks,{ref:z.refs.resizer,dir:`right`,reset:oe,open:h.rightPanel.open,actions:b.rightPanel}),(0,d.jsx)(hc,{ref:f,$width:z.widthB,$state:e,$motion:!0,children:ue(e)})]})}):null]}),(0,d.jsx)(dc,{children:e.footer||null}),(0,d.jsx)(`div`,{className:`hidden`,children:L}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:ce()}),(0,d.jsx)(Da,{})]})});function jc(e,t){function n(){t({type:`popStack`,panel:e,payload:void 0})}function r(n){t({type:`change`,panel:e,payload:n})}function i(n){t({type:`open`,panel:e,payload:n})}function a(){t({type:`close`,panel:e,payload:void 0})}function o(){t({type:`toggle`,panel:e,payload:void 0})}function s(){t({type:`minimise`,panel:e,payload:void 0})}function c(n){t({type:`maximise`,panel:e,payload:n})}function l(n){t({type:`setCustomWidth`,panel:e,payload:n})}function d(){t({type:`resetSize`,panel:e,payload:void 0})}function f(n){t({type:`pin`,panel:e,payload:n})}function p(){t({type:`unpin`,panel:e,payload:void 0})}return(0,u.useMemo)(()=>({popStack:n,change:r,open:i,close:a,toggle:o,minimise:s,maximise:c,setCustomWidth:l,resetSize:d,pin:f,unpin:p}),[])}function Mc(e,t){if(t.payload&&t.payload.stacked){if(e.current){let n=e.stack[e.stack.length-1];if(n&&n.id===e.current)return;t.payload.unique&&(e.stack=e.stack.filter(t=>t.id!==e.current)),e.stack.push({id:e.current,state:e.state?{...(0,_.original)(e.state)}:{}})}}else e.stack=[]}function Nc(e,t){switch(t.type){case`popStack`:if(e.stack.length){let t=e.stack[e.stack.length-1];t&&(e.current=t.id,e.state=t.state),e.stack=e.stack.slice(0,-1)}break;case`change`:t.payload.id!==e.current&&Mc(e,t),e.state=t.payload.state,e.current=t.payload.id;break;case`close`:e.open=!1;break;case`open`:e.open=!0,t.payload&&(t.payload.id!==e.current&&Mc(e,t),e.state=t.payload.state,e.current=t.payload.id);break;case`toggle`:e.open=!e.open;break;case`maximise`:e.minimised=!1,t.payload&&(e.state=t.payload.state,e.current=t.payload.id);break;case`minimise`:e.minimised=!0;break;case`setCustomWidth`:e.customWidth=t.payload;break;case`resetSize`:e.customWidth=void 0}if(to(e))switch(t.type){case`pin`:e.pinned=!0,e.state=t.payload.state,e.current=t.payload.id;break;case`unpin`:e.pinned=!1,e.state=void 0}}const Pc=(0,_.produce)((e,t)=>{switch(t.panel){case`centerPanel`:Nc(e.centerPanel,t);break;case`leftPanel`:Nc(e.leftPanel,t);break;case`rightPanel`:Nc(e.rightPanel,t);break;case`modal`:Nc(e.modal,t);break;case`pinnedRightPanel`:Nc(e.pinnedRightPanel,t)}});function Fc(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function Ic(){return{leftPanel:Fc(),centerPanel:Fc(),rightPanel:Fc(),modal:Fc(),pinnedRightPanel:{...Fc(),pinnable:!0,pinned:!1}}}function Lc({className:e,variant:t=`light`}){let n=(0,m.useManifest)(),r=(0,m.useVault)(),{edit:i}=ui(),a=Yr(),o=Xr(),s=n?.items||[],c=n?.viewingDirection===`right-to-left`||n?.viewingDirection===`bottom-to-top`,l=n?.viewingDirection===`top-to-bottom`||n?.viewingDirection===`bottom-to-top`,f=Rc(a)||o.map(Rc).find(Boolean)||s[0]?.id||``,p=Math.max(0,s.findIndex(e=>e.id===f)),h=s[p]?.id||``,g=p+1,_=(0,u.useMemo)(()=>s.map((e,t)=>{let n=r.get({id:e.id,type:`Canvas`});return{id:e.id,pageNumber:t+1,labelText:(0,b.getValue)(n?.label)||`Page ${t+1}`}}),[s,r]),v=e=>{let t=s.findIndex(t=>t.id===e),r=s[t];!r||!n||i({id:r.id,type:`Canvas`},{parent:{id:n.id,type:`Manifest`},property:`items`,index:t},{forceOpen:!1})};if(!n||s.length<2)return(0,d.jsx)(`div`,{});let y=s[p-1],x=s[p+1],S=t===`dark`;return(0,d.jsxs)(`nav`,{"aria-label":`Manifest pagination`,className:Hc(`inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-1`,`focus-within:ring-2 focus-within:ring-me-primary-500/40`,c&&`flex-row-reverse`,S?`border-white/20 bg-white/10 text-white`:`border-me-gray-300 bg-white text-me-gray-900`,e),children:[(0,d.jsx)(zc,{ariaLabel:`Previous canvas`,disabled:!y,onClick:()=>y&&v(y.id),dark:S,children:(0,d.jsx)(Bc,{reverse:c,vertical:l})}),(0,d.jsxs)(`label`,{htmlFor:`manifest-pagination-page-select`,"aria-label":`Page ${g} of ${s.length}`,className:Hc(`relative inline-flex min-h-8 cursor-pointer select-none items-center gap-0.5`,`whitespace-nowrap rounded-full border px-2.5 text-xs font-semibold leading-none`,`focus-within:outline-none focus-within:ring-2 focus-within:ring-me-primary-500/40`,S?`border-white/20 bg-white/10 text-white hover:bg-white/15`:`border-me-gray-300 bg-me-gray-100 text-me-gray-900 hover:bg-me-primary-50`),children:[(0,d.jsxs)(`span`,{children:[g,` / `,s.length]}),(0,d.jsx)(Vc,{className:Hc(`shrink-0 text-base`,S?`text-white/60`:`text-me-gray-500`)}),(0,d.jsx)(`select`,{id:`manifest-pagination-page-select`,"aria-label":`Jump to canvas`,value:h,onChange:e=>v(e.target.value),className:`absolute inset-0 cursor-pointer appearance-none border-0 bg-white opacity-0`,children:_.map(e=>(0,d.jsxs)(`option`,{value:e.id,children:[`Page `,e.pageNumber,` - `,e.labelText]},e.id))})]}),(0,d.jsx)(zc,{ariaLabel:`Next canvas`,disabled:!x,onClick:()=>x&&v(x.id),dark:S,children:(0,d.jsx)(Bc,{reverse:!c,vertical:l})})]})}function Rc(e){let t=e?.resource?.source;return t?.type===`Canvas`?t.id:null}function zc({ariaLabel:e,children:t,dark:n,disabled:r,onClick:i}){return(0,d.jsx)(`button`,{type:`button`,"aria-label":e,disabled:r,onClick:i,className:Hc(`inline-flex h-8 w-8 items-center justify-center rounded-full border-0 bg-transparent p-0`,`text-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-me-primary-500/50`,n?`text-white hover:bg-white/15 disabled:text-white/40 disabled:hover:bg-transparent`:`text-me-gray-900 hover:bg-me-primary-50 disabled:text-me-gray-500 disabled:hover:bg-transparent`,`disabled:cursor-not-allowed`),children:t})}function Bc({reverse:e,vertical:t}){return(0,d.jsx)(e?l.ArrowRightIcon:l.BackIcon,{"aria-hidden":!0,className:Hc(`block`,t&&`rotate-90`)})}function Vc(e){return(0,d.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,"aria-hidden":!0,...e,children:(0,d.jsx)(`path`,{fill:`currentColor`,d:`m7 10l5 5l5-5z`})})}function Hc(...e){return e.filter(Boolean).join(` `)}const Uc=new WeakMap;function Wc(e,t){let n={port:t,lastActionId:`@genesis`},r=Gc(e);function i(e){t.postMessage(typeof e==`string`?e:JSON.stringify(e))}function a(){i({_id:Lt(),_type:`init-response`,_lastActionId:n.lastActionId,data:e.getState()})}function o(e){i({_id:e,_type:`vault-action-rejection`,_lastActionId:n.lastActionId,action:e})}function s(e){let t=qc(e.data);if(t){if(t._type===`init-request`){a();return}t._type===`vault-action`&&o(t._id)}}return r.targets.add(n),t.addEventListener(`message`,s),t.start(),()=>{t.removeEventListener(`message`,s),r.targets.delete(n),r.targets.size===0&&e.dispatch===r.patchedDispatch&&(e.dispatch=r.originalDispatch,Uc.delete(e)),t.close()}}function Gc(e){let t=Uc.get(e);if(t)return t;let n=e.dispatch.bind(e),r=new Set,i=(e=>{let t=n(e);for(let t of r)Kc(t,e);return t}),a={originalDispatch:n,patchedDispatch:i,targets:r};return e.dispatch=i,Uc.set(e,a),a}function Kc(e,t){let n={_id:Lt(),_type:`vault-action`,_lastActionId:e.lastActionId,action:t};e.lastActionId=n._id,e.port.postMessage(JSON.stringify(n))}function qc(e){try{if(typeof e==`string`)return JSON.parse(e);if(typeof e==`object`&&e)return e}catch{return null}return null}const Jc=(0,u.createContext)(null);function Yc({children:e}){let t=(0,m.useVault)(),n=(0,u.useRef)(null),r=(0,u.useRef)(null),i=(0,u.useRef)(null),a=(0,u.useRef)(!1),[o,s]=(0,u.useState)(!0),c=(0,u.useCallback)(()=>{if(!n.current||n.current.closed||!r.current)return;i.current?.();let e=new MessageChannel;i.current=Wc(t,e.port1),n.current.postMessage({_type:`manifest-editor:iframe-preview:connect`,resource:r.current.resource,canvasId:r.current.canvasId||null,annotationId:r.current.annotationId||void 0},new URL(r.current.url).origin,[e.port2]),a.current=!0},[t]);(0,u.useEffect)(()=>{let e=e=>{!r.current||e.source!==n.current||e.origin===new URL(r.current.url).origin&&e.data?._type===`manifest-editor:iframe-preview:ready`&&c()},t=window.setInterval(()=>{n.current?.closed&&(i.current?.(),i.current=null,a.current=!1,n.current=null,s(!0))},1e3);return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e),window.clearInterval(t),i.current?.()}},[c]);let l=(0,u.useCallback)(e=>{r.current=e;let t=n.current;if(t&&!t.closed){t.focus();return}i.current?.(),i.current=null,a.current=!1,n.current=window.open(e.url,e.name||`manifest-editor-preview`,e.features||`popup,width=1200,height=900`),s(!n.current)},[]),f=(0,u.useCallback)(e=>{let t=r.current;r.current=e;let o=n.current;if(!(!o||o.closed)){if(t&&(t.url!==e.url||t.reloadKey!==e.reloadKey)){i.current?.(),i.current=null,a.current=!1,o.location.href=e.url;return}a.current&&o.postMessage({_type:`manifest-editor:iframe-preview:selection`,resource:e.resource,canvasId:e.canvasId||null,annotationId:e.annotationId||void 0},new URL(e.url).origin)}},[]),p=(0,u.useCallback)(()=>{n.current&&!n.current.closed&&n.current.focus()},[]);return(0,d.jsx)(Jc.Provider,{value:{open:l,update:f,focus:p,isClosed:o},children:e})}function Xc(){let e=(0,u.useContext)(Jc);return N(e,`usePreviewWindow() can only be called from inside <PreviewWindowProvider />`),e}var Zc=class extends u.Component{constructor(...e){super(...e),G(this,`state`,{hasError:!1})}static getDerivedStateFromError(e){return console.error(e),{hasError:!0}}componentDidCatch(e,t){console.error(`Uncaught error:`,e,t)}render(){return this.state.hasError?(0,d.jsx)(`h1`,{children:`Sorry.. there was an error`}):this.props.children}};function Qc(e,t){return typeof e==`string`?{id:e,state:t}:e}const $c=(0,u.memo)(function(e){let t=U(),n=Is(),r=t.layout,[i,a]=(0,u.useReducer)(Pc,void 0,Ic),o={centerPanel:jc(`centerPanel`,a),leftPanel:jc(`leftPanel`,a),rightPanel:jc(`rightPanel`,a),pinnedRightPanel:jc(`pinnedRightPanel`,a),modal:jc(`modal`,a),editingStack:Jr()};function s(e){let t=r.rightPanels.find(t=>t.id===e);if(t)return[t,o.rightPanel,o.pinnedRightPanel];let n=r.centerPanels.find(t=>t.id===e);if(n)return[n,o.centerPanel];let i=r.leftPanels.find(t=>t.id===e);if(i)return i.modal?[i,o.modal]:[i,o.leftPanel];N(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Qc(e,t),[o,c,l]=s(r);if(l&&o.options?.openPinned)l.pin({id:r,state:{...o.defaultState||{},...i||{}}});else{let e={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.open`,e),c.open(e)}}function l(e,t){let{id:r,state:i}=Qc(e,t),[a,o]=s(r),c={id:r,state:{...a.defaultState||{},...i||{}},stacked:!0};n.emit(`layout.open`,c),o.open(c)}function f(e,t){let{id:r,state:i,stacked:a}=Qc(e,t),[o,c]=s(r),l={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.change`,l),c.change(l)}function p(e,t){let{id:r}=Qc(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function m(e,t){let{id:r}=Qc(e,t),[,i]=s(r);n.emit(`layout.toggle`,{id:r}),i.toggle()}function g(e,t={},{reset:i,property:a,stacked:s,forceOpen:c,selectedTab:l}={}){let u={resource:(0,h.isSpecificResource)(e)?e:{type:`SpecificResource`,source:e},...t};n.emit(`layout.edit`,u),o.editingStack.edit(u,i),r.rightPanels.find(e=>e.id===`@manifest-editor/editor`)&&(c?o.rightPanel.open({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}):o.rightPanel.change({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}))}async function _(e){o.editingStack.create(e,{}),n.emit(`layout.create`,e),r.modals?.find(e=>e.id===`@manifest-editor/creator`)?o.modal.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e}):r.rightPanels.find(e=>e.id===`@manifest-editor/creator`)&&o.rightPanel.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e})}let v={open:c,change:f,close:p,toggle:m,stack:l,edit:g,create:_};return(0,d.jsx)(oi.Provider,{value:(0,u.useMemo)(()=>({...o,...v}),[r]),children:(0,d.jsx)(si.Provider,{value:i,children:e.children})})}),el=[{id:`universal-viewer`,config:{url:`https://universalviewer.dev/#?iiifManifestId={manifestId}`},type:`external-manifest-preview`,label:`Universal viewer`},{id:`mirador-3`,type:`external-manifest-preview`,label:`Mirador 3`,config:{url:`https://tomcrane.github.io/scratch/mirador3/?iiif-content={manifestId}`}},{id:`annona`,type:`external-manifest-preview`,label:`Annona`,config:{url:`https://ncsu-libraries.github.io/annona/tools/#/display?url={manifestId}&viewtype=iiif-storyboard&settings=%7B%22fullpage%22%3Atrue%7D`}},{id:`iiif-preview`,config:{url:`https://iiif-preview.digirati.services/store`},type:`iiif-preview-service`,label:`IIIF Preview`}],tl=new k.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function nl({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o,backgroundActionPersistence:s}){let c=Hn(),l=z(),f=(0,u.useMemo)(()=>{let t=e?.previews||(l.previews?.length?l.previews:el);return re(l,{previews:t},e)},[l,e]),p=(0,u.useMemo)(()=>({appId:c.appId,instanceId:c.instanceId,rootResource:{id:a.id,type:a.type}}),[c.appId,c.instanceId,a.id,a.type]);return(0,d.jsx)(Zc,{children:(0,d.jsx)(m.ImageServiceLoaderContext.Provider,{value:tl,children:(0,d.jsx)(lr,{resource:a,children:(0,d.jsx)(xo,{children:(0,d.jsx)(g.ThemeProvider,{theme:r||Lo,children:(0,d.jsxs)(ae,{config:f,saveConfig:t,children:[(0,d.jsx)(Rn,{config:f}),(0,d.jsx)(ii,{children:(0,d.jsx)($c,{children:(0,d.jsx)(kt,{persistence:s,persistenceKey:p,children:(0,d.jsx)(os,{children:(0,d.jsx)(Gi,{children:(0,d.jsx)(xr,{previews:i||[],configs:f.previews,children:(0,d.jsx)(Yc,{children:(0,d.jsx)(m.AtlasStoreProvider,{children:n})})})})})})})})]})})})})})})}const rl=new Set([`Collection`,`Manifest`,`Canvas`,`Range`,`AnnotationPage`,`Annotation`,`ContentResource`,`Agent`]),il={satisfied:0,missing:0,invalid:0,disallowed:0,"not-applicable":0},al=new Set([`label`,`summary`,`language`,`navDate`,`provider`,`requiredStatement`,`rights`,`thumbnail`]);function ol(e){return e?Array.isArray(e)?e.filter(Boolean):e.split(`.`).filter(Boolean):[]}function sl(e,t){let n=ol(e),r=ol(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function cl(e,t){let n=e;for(let e of ol(t)){if(n==null)return;n=n[e]}return n}function ll(e,t,n){let r=ol(t);if(!r.length)return n;let i=Array.isArray(e)?[...e]:{...e||{}},a=i;return r.forEach((e,t)=>{if(t===r.length-1){a[e]=n;return}let i=a[e];a[e]=Array.isArray(i)?[...i]:{...i||{}},a=a[e]}),i}function $(e){if(e==null)return!1;if(typeof e==`string`)return e.trim().length>0;if(typeof e==`number`||typeof e==`boolean`)return!0;if(Array.isArray(e))return e.some(e=>$(e));if(typeof e!=`object`)return!1;let t=Object.entries(e);return t.length?!t.every(([,e])=>typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`))||t.some(([,e])=>$(e)):!1}function ul(e){return Array.isArray(e)?e.map(ul):e&&typeof e==`object`?Object.keys(e).sort().reduce((t,n)=>(t[n]=ul(e[n]),t),{}):e}function dl(e,t){return JSON.stringify(ul(e))===JSON.stringify(ul(t))}function fl(e,t,n,r){let i=ol(n);for(let n of e||[])for(let e of n.terminology?.properties||[])if(!(e.entityType&&e.entityType!==t)&&sl(e.path,i))return e.label;return r||Bl(i)}function pl(e,t,n){let r=ol(n),i=[],a,o,s=!1,c=!1;if(!t||!rl.has(t.type))return{entityType:t?.type,path:r,label:fl(e,t?.type,r),disallowed:!1,required:!1,rules:i};for(let n of e||[])for(let e of n.rules||[])!(`entityType`in e)||!(`path`in e)||e.entityType===t.type&&sl(e.path,r)&&(i.push(e),e.type===`disallow-property`&&(s=!0),e.type===`require-non-empty`&&(c=!0),e.type===`fixed-value`&&!o&&(a=e.value,o=e,c=!0));return{entityType:t.type,path:r,label:fl(e,t.type,r),disallowed:s,required:c,fixedValue:a,fixedValueRule:o,rules:i}}function ml(e,t,n){let r=e||[],i=hl(t,n),a=[];for(let e of r)for(let[n,r]of(e.rules||[]).entries())a.push(...gl(e,r,n,i,t));return{specifications:r,results:a,counts:Tl(a)}}function hl(e,t){let n=[],r=new Set;function i(t){let a=Dl(t);if(!a)return;if(a.type===`SpecificResource`){i(t?.source);return}let o=El(e,t)||El(e,a);if(!o||!o.type)return;let s=`${o.type}:${o.id||JSON.stringify(a)}`;if(!r.has(s)){r.add(s),rl.has(o.type)&&n.push({ref:{id:o.id,type:o.type},resource:o});for(let e of Ol(o))i(e)}}return i(t),n}function gl(e,t,n,r,i){switch(t.type){case`disallow-property`:case`require-non-empty`:case`fixed-value`:return _l(e,t,n,r);case`iiif:canvas-with-image-service`:return[vl(e,t,n,r,i)];case`iiif:thumbnail-from-body-service`:return yl(e,t,n,r,i);case`iiif:valid-rights`:return bl(e,t,n,r);case`iiif:required-statement`:return xl(e,t,n,r);case`iiif:metadata-template`:return Sl(e,t,n,r);default:return[]}}function _l(e,t,n,r){let i=r.filter(e=>e.ref.type===t.entityType),a=fl(e?[e]:[],t.entityType,t.path);return i.length?i.map(({ref:r,resource:i})=>{let o=cl(i,t.path),s=$(o);if(t.type===`disallow-property`)return Cl(e,t,n,{target:r,path:t.path,status:s?`disallowed`:`satisfied`,displayLabel:a,actual:o,message:s?`${a} is present but is not allowed.`:`${a} is not present.`,editorTarget:wl(r,t.path)});if(t.type===`require-non-empty`)return Cl(e,t,n,{target:r,path:t.path,status:s?`satisfied`:`missing`,displayLabel:a,actual:o,message:s?`${a} has a value.`:`${a} must be filled in.`,editorTarget:wl(r,t.path)});let c=dl(o,t.value);return Cl(e,t,n,{target:r,path:t.path,status:c?`satisfied`:s?`invalid`:`missing`,displayLabel:a,expected:t.value,actual:o,message:c?`${a} matches the required value.`:s?`${a} does not match the required value.`:`${a} must use the required value.`,editorTarget:wl(r,t.path)})}):[Cl(e,t,n,{status:`not-applicable`,displayLabel:a,message:`No ${t.entityType} resources were found for ${a}.`,path:t.path})]}function vl(e,t,n,r,i){let a=r.filter(e=>e.ref.type===`Canvas`),o=kl(t),s=a.find(({resource:e})=>Al(jl(e,i),o));return Cl(e,t,n,{target:s?.ref,status:s?`satisfied`:`missing`,displayLabel:t.label||`Canvas image service`,expected:o,message:s?`A canvas contains the required image service.`:o.length?`A canvas must contain one of the required image services: ${o.join(`, `)}.`:`A canvas must contain a painting body with an image service.`,editorTarget:s?wl(s.ref,[`items`]):void 0})}function yl(e,t,n,r,i){let a=t.entityType||`Canvas`,o=r.filter(e=>e.ref.type===a);return o.length?o.map(({ref:o,resource:s})=>{let c=a===`Manifest`?r.filter(e=>e.ref.type===`Canvas`).flatMap(e=>jl(e.resource,i)):jl(s,i),l=Ml(s,c,i),u=$(s.thumbnail);return Cl(e,t,n,{target:o,path:[`thumbnail`],status:l?`satisfied`:c.length?u?`invalid`:t.requireThumbnail===!1?`not-applicable`:`missing`:`not-applicable`,displayLabel:fl([e],o.type,[`thumbnail`],`Thumbnail`),expected:c,actual:s.thumbnail,message:l?`Thumbnail uses the same image service as the painting content.`:c.length?u?`Thumbnail does not use the same image service as the painting content.`:`Thumbnail must be created from the painting image service.`:`No painting image service was found to compare against.`,editorTarget:wl(o,[`thumbnail`])})}):[Cl(e,t,n,{status:`not-applicable`,displayLabel:`Thumbnail`,message:`No ${a} resources were found for thumbnail checks.`})]}function bl(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=t.allowed||[];return a.map(({ref:r,resource:i})=>{let a=i.rights,s=$(a),c=typeof a==`string`&&o.map(Il).includes(Il(a));return Cl(e,t,n,{target:r,path:[`rights`],status:c?`satisfied`:!s&&t.required!==!1?`missing`:`invalid`,displayLabel:fl([e],r.type,[`rights`],`Rights`),expected:o,actual:a,message:c?`Rights uses an allowed URI.`:!s&&t.required!==!1?`Rights must use an allowed URI.`:`Rights is not one of the allowed URIs.`,editorTarget:wl(r,[`rights`])})})}function xl(e,t,n,r){let i=t.entityType||`Manifest`;return r.filter(e=>e.ref.type===i).map(({ref:r,resource:i})=>{let a=i.requiredStatement,o=t.label?Ll(a?.label,t.label):$(a?.label),s=t.value||t.valueRequired!==!1,c=t.value?Ll(a?.value,t.value):!s||$(a?.value),l=$(a);return Cl(e,t,n,{target:r,path:[`requiredStatement`],status:o&&c?`satisfied`:l?`invalid`:`missing`,displayLabel:fl([e],r.type,[`requiredStatement`],`Required statement`),expected:t.value||t.label,actual:a,message:o&&c?`Required statement is complete.`:l?`Required statement does not match the specification.`:`Required statement must be filled in.`,editorTarget:wl(r,[`requiredStatement`])})})}function Sl(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=[];for(let{ref:r,resource:i}of a){let a=Array.isArray(i.metadata)?i.metadata:[];t.items.forEach((i,s)=>{let c=a.find(e=>Ll(e?.label,i.label)),l=i.value?Ll(c?.value,i.value):!i.valueRequired||$(c?.value),u=c&&l?`satisfied`:c&&i.value?`invalid`:`missing`,d=zl(i.label);o.push(Cl(e,t,n,{idSuffix:`metadata-${s}`,target:r,path:[`metadata`],status:u,displayLabel:d||`Metadata`,expected:i.value||i.label,actual:c,message:c&&l?`${d||`Metadata`} is present.`:c?`${d||`Metadata`} needs a value.`:`${d||`Metadata`} metadata must be added.`,editorTarget:wl(r,[`metadata`])}))})}return o}function Cl(e,t,n,r){let i=t.id||`${t.type}-${n}`,a=r.idSuffix?`-${r.idSuffix}`:``;return{id:`${e.id}-${i}-${r.target?.type||`root`}-${r.target?.id||`none`}${a}`,specificationId:e.id,specificationLabel:e.label,ruleId:i,ruleType:t.type,ruleLabel:t.label||r.displayLabel,ruleIndex:n,target:r.target,path:r.path,status:r.status,displayLabel:r.displayLabel,message:t.message||r.message,expected:r.expected,actual:r.actual,editorTarget:r.editorTarget}}function wl(e,t){let n=t[0];return{resource:e,propertyPath:t,selectedTab:n===`metadata`?`@manifest-editor/metadata`:n&&al.has(n)?`@manifest-editor/descriptive-properties`:void 0}}function Tl(e){let t={...il};for(let n of e)t[n.status]+=1;return t}function El(e,t){let n=Dl(t);if(!n)return t;try{return e.get(n,{skipSelfReturn:!1})||t}catch{try{return e.get(n)||t}catch{return t}}}function Dl(e){return!e||typeof e!=`object`?null:e.type===`SpecificResource`?{id:e.id||e.source?.id||``,type:`SpecificResource`}:typeof e.id==`string`&&typeof e.type==`string`?{id:e.id,type:e.type}:null}function Ol(e){if(!e||typeof e!=`object`)return[];let t=[];for(let n of[`items`,`structures`,`annotations`,`thumbnail`,`provider`,`homepage`,`rendering`,`seeAlso`,`body`,`target`,`source`]){let r=e[n];Array.isArray(r)?t.push(...r):r&&t.push(r)}return t}function kl(e){return[...e.serviceIds||[],...e.serviceId?[e.serviceId]:[]].filter(Boolean)}function Al(e,t){let n=new Set(e.filter(Boolean));return t.length?t.some(e=>n.has(e)):n.size>0}function jl(e,t){let n=Fl(t,e?.items),r=[];for(let e of n){let n=Fl(t,e?.items);for(let e of n)if((Array.isArray(e?.motivation)?e.motivation:[e?.motivation]).includes(`painting`))for(let n of Nl(e?.body,t))r.push(...Pl(n))}return Array.from(new Set(r))}function Ml(e,t,n){let r=Fl(n,e?.thumbnail);if(!r.length||!t.length)return!1;for(let e of r){let n=Pl(e),r=typeof e?.id==`string`?e.id:``;if(n.some(e=>t.includes(e))||t.some(e=>r.startsWith(e)))return!0}return!1}function Nl(e,t){let n=El(t,e);return n?Array.isArray(n)?n.flatMap(e=>Nl(e,t)):n.type===`SpecificResource`?Nl(n.source,t):n.type===`Choice`?n.items?.flatMap(e=>Nl(e,t))||[]:[n]:[]}function Pl(e){let t=e?.service||e?.services,n=Array.isArray(t)?t:t?[t]:[],r=[];for(let e of n){let t=typeof e==`string`?e:e?.id||e?.[`@id`];typeof t==`string`&&t&&r.push(t)}return Array.from(new Set(r))}function Fl(e,t){if(!t)return[];let n=Array.isArray(t)?t:[t];try{let t=e.get(n);if(Array.isArray(t))return t.filter(Boolean)}catch{}return n.map(t=>El(e,t)).filter(Boolean)}function Il(e){return e.replace(/^https:/,`http:`).replace(/\/?$/,`/`)}function Ll(e,t){return typeof t==`string`?Rl(e).some(e=>e===t):dl(e,t)}function Rl(e){return e?typeof e==`string`?[e.trim()].filter(Boolean):Array.isArray(e)?e.flatMap(Rl):typeof e==`object`?Object.values(e).flatMap(Rl):[]:[]}function zl(e){return typeof e==`string`?e:Rl(e)[0]||``}function Bl(e){return(e[e.length-1]||`Property`).replace(/([A-Z])/g,` $1`).replace(/[-_]/g,` `).replace(/^./,e=>e.toUpperCase())}const Vl=(0,u.createContext)([]);function Hl({children:e,specifications:t}){let n=(0,u.useMemo)(()=>t||[],[t]);return(0,d.jsx)(Vl.Provider,{value:n,children:e})}function Ul(){return(0,u.useContext)(Vl)}function Wl(e){let t=W(),n=Ul(),r=e||t;return(0,m.useVaultSelector)((e,t)=>ml(n,t,r),[n,r.id,r.type])}function Gl(){let e=Ul();return(0,u.useMemo)(()=>({getLabel(t,n,r){return fl(e,t,n,r)}}),[e])}function Kl(e,t){let n=Ul();return(0,u.useMemo)(()=>pl(n,e,t),[n,e?.id,e?.type,JSON.stringify(t)])}const ql={},Jl=(0,u.createContext)(`global`);function Yl(){return(0,u.useContext)(Jl)}function Xl(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Zl(e){let t=Yl(),[,n]=(0,u.useReducer)(e=>e+1,0),r=(0,u.useMemo)(()=>(ql[t]||(ql[t]={}),ql[t][e]||(ql[t][e]={name:e,emitter:(0,E.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),ql[t][e]),[t,e]);return Ql(r,`abort`,n),Ql(r,`error`,n),Ql(r,`complete`,n),Ql(r,`running`,n),r}function Ql(e,t,n){let r=(0,u.useCallback)(()=>n(e),[n]);(0,u.useEffect)(()=>{let n=e.emitter;return n.on(t,r),()=>n.off(t,r)},[t,r,e.emitter])}const $l=()=>void 0;function eu(e,t){let n=Zl(e);return Ql(n,`complete`,t||$l),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=Xl();t.promise.then(()=>n.emitter.emit(`complete`)).catch(()=>n.emitter.emit(`error`)),n.status=`running`,n.request=e,n.promise=t.promise,n.resolve=t.resolve,n.reject=t.reject,n.emitter.emit(`running`)},n]}function tu(e,t){let n=Zl(e);return Ql(n,`running`,t),[e=>{n.status===`running`&&(n.response=e,n.status=`complete`,n.resolve())},n,(e,t)=>{n.status===`running`&&(n.error=t||e,n.status=`error`,n.reject(e))}]}function nu({children:e}){return(0,d.jsx)(Jl.Provider,{value:(0,u.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function ru(e){return!1}function iu({as:e,reference:t,onReference:n,onLink:r,onAnalysis:i,onDropReference:a,onDropLink:o,onDropAnalysis:s,onPasteReference:c,onPasteLink:l,onPasteAnalysis:f,...p}){let m=e||`div`,h=a||n,g=c||n,_=l||r,v=f||i,y=(0,u.useMemo)(()=>t,[t?.id,t?.type]),b=(0,u.useCallback)(function(e){e.defaultPrevented||(e.preventDefault(),e.clipboardData&&y&&y.id&&y.type&&e.clipboardData.setData(`application/json+vault`,JSON.stringify({id:y.id,type:y.type})))},[y]),x=(0,u.useCallback)(async function(e){if(!e.defaultPrevented&&(e.preventDefault(),e.clipboardData)){if(p.onLoading&&p.onLoading(),g){let t=e.clipboardData.getData(`application/json+vault`);if(t)try{let e=JSON.parse(t);e&&e.id&&e.type&&g(e)}catch{}}if(_||v){let t=e.clipboardData.getData(`text`);if(t.startsWith(`http`)){let e=t.split(`
1530
+ `,Ac=(0,u.memo)(function(e){if(e.layoutMode===`focused`)return(0,d.jsx)(bc,{...e});let t=U(),n=Un(),r=W(),i=pi(),{vault:a}=(0,u.useContext)(m.ReactVaultContext),o=a||void 0,s=(0,m.useVaultSelector)(e=>e.iiif),c=(0,u.useRef)(null),f=(0,u.useRef)(null),{loading:p,state:h,leftPanels:g,centerPanels:_,rightPanels:v,modals:y=[],actions:b}=i,x=(0,u.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:h,appState:n}),[r,o,t,h,n,s]),S=(0,u.useMemo)(()=>_c(g,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[g,x]),w=(0,u.useMemo)(()=>_c(_,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,x]),T=(0,u.useMemo)(()=>_c(v,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[v,x]),E=(0,u.useMemo)(()=>_c(y,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[y,x]),D=(0,u.useMemo)(()=>S.filter(e=>e.modal),[S]),k=(0,u.useMemo)(()=>S.filter(e=>!e.modal),[S]),A=(0,u.useMemo)(()=>[...E,...D],[E,D]),j=(0,u.useMemo)(()=>({...i,leftPanels:S,centerPanels:w,rightPanels:T,modals:A}),[i,S,w,T,A]),M=k.find(e=>e.id===h.leftPanel.current),N=T.find(e=>e.id===h.rightPanel.current),P=w.find(e=>e.id===h.centerPanel.current),F=A.find(e=>e.id===h.modal.current),te=h.modal.open&&D.some(e=>e.id===h.modal.current)?h.modal.current:h.leftPanel.current,ne=h.pinnedRightPanel.pinned?T.find(e=>e.id===h.pinnedRightPanel.current):void 0,[I]=Rs([`(max-width: 1020px)`]),re=e.isLoading||!1,L=(0,u.useMemo)(()=>(i.background||[]).map((e,t)=>(0,d.jsx)(u.Fragment,{children:e.render()},t)),[i.background]),R=$s(`left-panel/${M?.id}`,{left:!0,marginLeft:60,minWidthPx:M?.options?.minWidth||200,maxWidthPx:M?.options?.maxWidth||720,loading:p}),z=$s(`right-panel/${N?.id}`,{left:!1,minWidthPx:N?.options?.minWidth||320,maxWidthPx:N?.options?.maxWidth||720,loading:p}),ie=N&&(ne?.id!==N.id||!(0,ee.default)(h.pinnedRightPanel.state,h.rightPanel.state)),ae=R.widthB===`auto`?void 0:()=>R.setWidths({widthA:`auto`,widthB:no({options:M?.options,fallback:320})}),oe=z.widthB===`auto`?void 0:()=>z.setWidths({widthA:`auto`,widthB:no({options:N?.options,fallback:320})});if((0,u.useLayoutEffect)(()=>{I&&h.leftPanel.open&&h.rightPanel.open&&(b.leftPanel.close(),b.rightPanel.close())},[I]),(0,u.useLayoutEffect)(()=>{if(P&&P.onMount)return P.onMount(h.centerPanel.state||P.defaultState||{},{...j,current:b.centerPanel,vault:o},n)},[h.centerPanel.current,P?.id]),(0,u.useLayoutEffect)(()=>{if(h.leftPanel.current&&!M){let e=vc(k,h.leftPanel.current);e?b.leftPanel.change({id:e}):b.leftPanel.close()}if(h.centerPanel.current&&!P){let e=vc(w,h.centerPanel.current);e?b.centerPanel.change({id:e}):b.centerPanel.close()}if(h.rightPanel.current&&!N){let e=vc(T,h.rightPanel.current);e?b.rightPanel.change({id:e}):b.rightPanel.close()}if(h.modal.current&&!F){let e=vc(A,h.modal.current);e?b.modal.change({id:e}):b.modal.close()}},[h.leftPanel.current,h.centerPanel.current,h.rightPanel.current,h.modal.current,M?.id,P?.id,N?.id,F?.id,Q(k),Q(w),Q(T),Q(A)]),(0,u.useLayoutEffect)(()=>{T.length&&b.rightPanel.change({id:T[0].id}),k.length&&b.leftPanel.change({id:k[0].id}),w.length&&b.centerPanel.change({id:w[0].id})},[]),p)return null;let se=t=>(0,d.jsx)(gc,{$menu:e.leftPanelMenuPosition||`bottom`,ref:R.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:h.leftPanel.open||t!==`exited`?R.widthB:void 0,minWidth:M?.options?.minWidth},children:re?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.leftPanelMenu?(0,d.jsx)(X,{$open:h.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,d.jsx)(Z,{children:h.leftPanel.open||t!==`exited`?(0,d.jsx)(d.Fragment,{children:M?(0,d.jsx)(mo,{isLeft:!0,noHeader:!0,transition:t,panel:M,state:h.leftPanel,actions:b.leftPanel}):null}):null})]})}),ce=()=>F?(0,d.jsx)(l.Modal,{title:F.label,open:h.modal.open,onClose:()=>b.modal.close(),children:F.modal?(0,d.jsx)(`div`,{className:`h-[70vh] min-h-[60vh] max-h-full flex w-full`,children:(0,d.jsx)(mo,{isLeft:!0,isModal:!0,noHeader:!0,panel:F,state:h.modal,actions:b.modal})}):ro(F.render(h.modal.state||F.defaultState||{},{...j,current:b.modal,vault:o,isModal:!0},n))}):null,le=()=>(0,d.jsxs)(gc,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,d.jsx)(X,{$open:h.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,d.jsx)(Z,{children:(0,d.jsx)(C.ErrorBoundary,{resetKeys:[P?.id],FallbackComponent:io,children:re?(0,d.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,d.jsx)(qs,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):h.centerPanel.open&&P?ro(P.render(h.centerPanel.state||P.defaultState||{},{...j,current:b.centerPanel,vault:o},n)):null})})]}),ue=t=>(0,d.jsx)(gc,{$menu:e.rightPanelMenuPosition||`bottom`,ref:z.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:h.rightPanel.open||t!==`exited`?z.widthB:void 0,minWidth:N?.options?.minWidth},children:re?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.rightPanelMenu?(0,d.jsx)(X,{$open:h.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,d.jsx)(Z,{children:h.rightPanel.open||t!==`exited`?(0,d.jsxs)(d.Fragment,{children:[ie?(0,d.jsx)(mo,{panel:N,state:h.rightPanel,actions:b.rightPanel,pinActions:b.pinnedRightPanel,available:T}):null,ne?(0,d.jsx)(mo,{panel:ne,state:h.pinnedRightPanel,actions:b.pinnedRightPanel,close:b.rightPanel.close}):null]}):null})]})});return I?(0,d.jsxs)(lc,{children:[e.hideHeader?null:(0,d.jsxs)(uc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsx)(fc,{children:(0,d.jsxs)(xc,{children:[(0,d.jsxs)(Cc,{children:[k.length>0?(0,d.jsx)(wc,{type:`button`,"aria-expanded":h.leftPanel.open,onClick:()=>{b.rightPanel.close(),b.leftPanel.toggle()},children:M?.label}):null,T.length>0?(0,d.jsx)(Tc,{children:(0,d.jsxs)(Ec,{type:`button`,"aria-expanded":h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.toggle()},children:[(0,d.jsx)(nr,{"aria-hidden":`true`,rotate:90}),N?.label]})}):null]}),(0,d.jsx)(Sc,{children:le()}),T.length>0?(0,d.jsx)(Dc,{$open:h.rightPanel.open,children:ue()}):null,k.length>0?(0,d.jsxs)(Oc,{$open:h.leftPanel.open,children:[(0,d.jsx)(`nav`,{"aria-label":`Left panel tabs`,className:`flex flex-none overflow-x-auto border-b border-gray-300`,children:k.map(e=>(0,d.jsxs)(`button`,{type:`button`,"aria-pressed":h.leftPanel.current===e.id,className:`flex flex-1 shrink-0 items-center justify-center gap-1.5 border-0 border-b-[3px] p-3 text-gray-700 [&>svg]:shrink-0 [&>svg]:text-xl ${h.leftPanel.current===e.id?`border-b-[#b83265] bg-[#f9e8ef]`:`border-b-transparent bg-white`}`,onClick:()=>{b.rightPanel.close(),b.leftPanel.open({id:e.id,state:e.defaultState})},children:[e.icon,e.label]},e.id))}),se()]}):null,S.length>0||T.length>0?(0,d.jsx)(kc,{type:`button`,"aria-label":`Close panels`,$open:h.leftPanel.open||h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.close()}}):null]})}),(0,d.jsx)(`div`,{className:`hidden`,children:L}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:ce()}),(0,d.jsx)(Da,{})]}):(0,d.jsxs)(lc,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,d.jsxs)(uc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsxs)(fc,{ref:e=>{R.refs.container.current=e,z.refs.container.current=e},children:[S.length>0?(0,d.jsx)(l.PanelSideMenu,{current:te,items:S.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,separator:e.separator,onClick:()=>{if(e.modal){h.modal.open&&h.modal.current===e.id?b.modal.close():b.modal.open({id:e.id,state:e.defaultState});return}h.leftPanel.current===e.id?b.leftPanel.toggle():b.leftPanel.change({id:e.id})}})),open:h.leftPanel.open}):null,k.length>0?(0,d.jsx)(O.Transition,{nodeRef:c,in:h.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(pc,{ref:c,$width:R.widthB,$state:e,$motion:!0,children:se(e)}),(0,d.jsx)(Ks,{ref:R.refs.resizer,reset:ae,dir:`left`,transition:e,open:h.leftPanel.open||e!==`exited`,actions:b.leftPanel})]})}):null,(0,d.jsx)(mc,{children:le()}),T.length>0?(0,d.jsx)(O.Transition,{nodeRef:f,in:h.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Ks,{ref:z.refs.resizer,dir:`right`,reset:oe,open:h.rightPanel.open,actions:b.rightPanel}),(0,d.jsx)(hc,{ref:f,$width:z.widthB,$state:e,$motion:!0,children:ue(e)})]})}):null]}),(0,d.jsx)(dc,{children:e.footer||null}),(0,d.jsx)(`div`,{className:`hidden`,children:L}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:ce()}),(0,d.jsx)(Da,{})]})});function jc(e,t){function n(){t({type:`popStack`,panel:e,payload:void 0})}function r(n){t({type:`change`,panel:e,payload:n})}function i(n){t({type:`open`,panel:e,payload:n})}function a(){t({type:`close`,panel:e,payload:void 0})}function o(){t({type:`toggle`,panel:e,payload:void 0})}function s(){t({type:`minimise`,panel:e,payload:void 0})}function c(n){t({type:`maximise`,panel:e,payload:n})}function l(n){t({type:`setCustomWidth`,panel:e,payload:n})}function d(){t({type:`resetSize`,panel:e,payload:void 0})}function f(n){t({type:`pin`,panel:e,payload:n})}function p(){t({type:`unpin`,panel:e,payload:void 0})}return(0,u.useMemo)(()=>({popStack:n,change:r,open:i,close:a,toggle:o,minimise:s,maximise:c,setCustomWidth:l,resetSize:d,pin:f,unpin:p}),[])}function Mc(e,t){if(t.payload&&t.payload.stacked){if(e.current){let n=e.stack[e.stack.length-1];if(n&&n.id===e.current)return;t.payload.unique&&(e.stack=e.stack.filter(t=>t.id!==e.current)),e.stack.push({id:e.current,state:e.state?{...(0,_.original)(e.state)}:{}})}}else e.stack=[]}function Nc(e,t){switch(t.type){case`popStack`:if(e.stack.length){let t=e.stack[e.stack.length-1];t&&(e.current=t.id,e.state=t.state),e.stack=e.stack.slice(0,-1)}break;case`change`:t.payload.id!==e.current&&Mc(e,t),e.state=t.payload.state,e.current=t.payload.id;break;case`close`:e.open=!1;break;case`open`:e.open=!0,t.payload&&(t.payload.id!==e.current&&Mc(e,t),e.state=t.payload.state,e.current=t.payload.id);break;case`toggle`:e.open=!e.open;break;case`maximise`:e.minimised=!1,t.payload&&(e.state=t.payload.state,e.current=t.payload.id);break;case`minimise`:e.minimised=!0;break;case`setCustomWidth`:e.customWidth=t.payload;break;case`resetSize`:e.customWidth=void 0}if(to(e))switch(t.type){case`pin`:e.pinned=!0,e.state=t.payload.state,e.current=t.payload.id;break;case`unpin`:e.pinned=!1,e.state=void 0}}const Pc=(0,_.produce)((e,t)=>{switch(t.panel){case`centerPanel`:Nc(e.centerPanel,t);break;case`leftPanel`:Nc(e.leftPanel,t);break;case`rightPanel`:Nc(e.rightPanel,t);break;case`modal`:Nc(e.modal,t);break;case`pinnedRightPanel`:Nc(e.pinnedRightPanel,t)}});function Fc(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function Ic(){return{leftPanel:Fc(),centerPanel:Fc(),rightPanel:Fc(),modal:Fc(),pinnedRightPanel:{...Fc(),pinnable:!0,pinned:!1}}}function Lc({className:e,variant:t=`light`}){let n=(0,m.useManifest)(),r=(0,m.useVault)(),{edit:i}=ui(),a=Yr(),o=Xr(),s=n?.items||[],c=n?.viewingDirection===`right-to-left`||n?.viewingDirection===`bottom-to-top`,l=n?.viewingDirection===`top-to-bottom`||n?.viewingDirection===`bottom-to-top`,f=Rc(a)||o.map(Rc).find(Boolean)||s[0]?.id||``,p=Math.max(0,s.findIndex(e=>e.id===f)),h=s[p]?.id||``,g=p+1,_=(0,u.useMemo)(()=>s.map((e,t)=>{let n=r.get({id:e.id,type:`Canvas`});return{id:e.id,pageNumber:t+1,labelText:(0,b.getValue)(n?.label)||`Page ${t+1}`}}),[s,r]),v=e=>{let t=s.findIndex(t=>t.id===e),r=s[t];!r||!n||i({id:r.id,type:`Canvas`},{parent:{id:n.id,type:`Manifest`},property:`items`,index:t},{forceOpen:!1})};if(!n||s.length<2)return(0,d.jsx)(`div`,{className:e});let y=s[p-1],x=s[p+1],S=t===`dark`;return(0,d.jsxs)(`nav`,{"aria-label":`Manifest pagination`,className:Hc(`inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-1`,`focus-within:ring-2 focus-within:ring-me-primary-500/40`,c&&`flex-row-reverse`,S?`border-white/20 bg-white/10 text-white`:`border-me-gray-300 bg-white text-me-gray-900`,e),children:[(0,d.jsx)(zc,{ariaLabel:`Previous canvas`,disabled:!y,onClick:()=>y&&v(y.id),dark:S,children:(0,d.jsx)(Bc,{reverse:c,vertical:l})}),(0,d.jsxs)(`label`,{htmlFor:`manifest-pagination-page-select`,"aria-label":`Page ${g} of ${s.length}`,className:Hc(`relative inline-flex min-h-8 cursor-pointer select-none items-center gap-0.5`,`whitespace-nowrap rounded-full border px-2.5 text-xs font-semibold leading-none`,`focus-within:outline-none focus-within:ring-2 focus-within:ring-me-primary-500/40`,S?`border-white/20 bg-white/10 text-white hover:bg-white/15`:`border-me-gray-300 bg-me-gray-100 text-me-gray-900 hover:bg-me-primary-50`),children:[(0,d.jsxs)(`span`,{children:[g,` / `,s.length]}),(0,d.jsx)(Vc,{className:Hc(`shrink-0 text-base`,S?`text-white/60`:`text-me-gray-500`)}),(0,d.jsx)(`select`,{id:`manifest-pagination-page-select`,"aria-label":`Jump to canvas`,value:h,onChange:e=>v(e.target.value),className:`absolute inset-0 cursor-pointer appearance-none border-0 bg-white opacity-0`,children:_.map(e=>(0,d.jsxs)(`option`,{value:e.id,children:[`Page `,e.pageNumber,` - `,e.labelText]},e.id))})]}),(0,d.jsx)(zc,{ariaLabel:`Next canvas`,disabled:!x,onClick:()=>x&&v(x.id),dark:S,children:(0,d.jsx)(Bc,{reverse:!c,vertical:l})})]})}function Rc(e){let t=e?.resource?.source;return t?.type===`Canvas`?t.id:null}function zc({ariaLabel:e,children:t,dark:n,disabled:r,onClick:i}){return(0,d.jsx)(`button`,{type:`button`,"aria-label":e,disabled:r,onClick:i,className:Hc(`inline-flex h-8 w-8 items-center justify-center rounded-full border-0 bg-transparent p-0`,`text-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-me-primary-500/50`,n?`text-white hover:bg-white/15 disabled:text-white/40 disabled:hover:bg-transparent`:`text-me-gray-900 hover:bg-me-primary-50 disabled:text-me-gray-500 disabled:hover:bg-transparent`,`disabled:cursor-not-allowed`),children:t})}function Bc({reverse:e,vertical:t}){return(0,d.jsx)(e?l.ArrowRightIcon:l.BackIcon,{"aria-hidden":!0,className:Hc(`block`,t&&`rotate-90`)})}function Vc(e){return(0,d.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,"aria-hidden":!0,...e,children:(0,d.jsx)(`path`,{fill:`currentColor`,d:`m7 10l5 5l5-5z`})})}function Hc(...e){return e.filter(Boolean).join(` `)}const Uc=new WeakMap;function Wc(e,t){let n={port:t,lastActionId:`@genesis`},r=Gc(e);function i(e){t.postMessage(typeof e==`string`?e:JSON.stringify(e))}function a(){i({_id:Lt(),_type:`init-response`,_lastActionId:n.lastActionId,data:e.getState()})}function o(e){i({_id:e,_type:`vault-action-rejection`,_lastActionId:n.lastActionId,action:e})}function s(e){let t=qc(e.data);if(t){if(t._type===`init-request`){a();return}t._type===`vault-action`&&o(t._id)}}return r.targets.add(n),t.addEventListener(`message`,s),t.start(),()=>{t.removeEventListener(`message`,s),r.targets.delete(n),r.targets.size===0&&e.dispatch===r.patchedDispatch&&(e.dispatch=r.originalDispatch,Uc.delete(e)),t.close()}}function Gc(e){let t=Uc.get(e);if(t)return t;let n=e.dispatch.bind(e),r=new Set,i=(e=>{let t=n(e);for(let t of r)Kc(t,e);return t}),a={originalDispatch:n,patchedDispatch:i,targets:r};return e.dispatch=i,Uc.set(e,a),a}function Kc(e,t){let n={_id:Lt(),_type:`vault-action`,_lastActionId:e.lastActionId,action:t};e.lastActionId=n._id,e.port.postMessage(JSON.stringify(n))}function qc(e){try{if(typeof e==`string`)return JSON.parse(e);if(typeof e==`object`&&e)return e}catch{return null}return null}const Jc=(0,u.createContext)(null);function Yc({children:e}){let t=(0,m.useVault)(),n=(0,u.useRef)(null),r=(0,u.useRef)(null),i=(0,u.useRef)(null),a=(0,u.useRef)(!1),[o,s]=(0,u.useState)(!0),c=(0,u.useCallback)(()=>{if(!n.current||n.current.closed||!r.current)return;i.current?.();let e=new MessageChannel;i.current=Wc(t,e.port1),n.current.postMessage({_type:`manifest-editor:iframe-preview:connect`,resource:r.current.resource,canvasId:r.current.canvasId||null,annotationId:r.current.annotationId||void 0},new URL(r.current.url).origin,[e.port2]),a.current=!0},[t]);(0,u.useEffect)(()=>{let e=e=>{!r.current||e.source!==n.current||e.origin===new URL(r.current.url).origin&&e.data?._type===`manifest-editor:iframe-preview:ready`&&c()},t=window.setInterval(()=>{n.current?.closed&&(i.current?.(),i.current=null,a.current=!1,n.current=null,s(!0))},1e3);return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e),window.clearInterval(t),i.current?.()}},[c]);let l=(0,u.useCallback)(e=>{r.current=e;let t=n.current;if(t&&!t.closed){t.focus();return}i.current?.(),i.current=null,a.current=!1,n.current=window.open(e.url,e.name||`manifest-editor-preview`,e.features||`popup,width=1200,height=900`),s(!n.current)},[]),f=(0,u.useCallback)(e=>{let t=r.current;r.current=e;let o=n.current;if(!(!o||o.closed)){if(t&&(t.url!==e.url||t.reloadKey!==e.reloadKey)){i.current?.(),i.current=null,a.current=!1,o.location.href=e.url;return}a.current&&o.postMessage({_type:`manifest-editor:iframe-preview:selection`,resource:e.resource,canvasId:e.canvasId||null,annotationId:e.annotationId||void 0},new URL(e.url).origin)}},[]),p=(0,u.useCallback)(()=>{n.current&&!n.current.closed&&n.current.focus()},[]);return(0,d.jsx)(Jc.Provider,{value:{open:l,update:f,focus:p,isClosed:o},children:e})}function Xc(){let e=(0,u.useContext)(Jc);return N(e,`usePreviewWindow() can only be called from inside <PreviewWindowProvider />`),e}var Zc=class extends u.Component{constructor(...e){super(...e),G(this,`state`,{hasError:!1})}static getDerivedStateFromError(e){return console.error(e),{hasError:!0}}componentDidCatch(e,t){console.error(`Uncaught error:`,e,t)}render(){return this.state.hasError?(0,d.jsx)(`h1`,{children:`Sorry.. there was an error`}):this.props.children}};function Qc(e,t){return typeof e==`string`?{id:e,state:t}:e}const $c=(0,u.memo)(function(e){let t=U(),n=Is(),r=t.layout,[i,a]=(0,u.useReducer)(Pc,void 0,Ic),o={centerPanel:jc(`centerPanel`,a),leftPanel:jc(`leftPanel`,a),rightPanel:jc(`rightPanel`,a),pinnedRightPanel:jc(`pinnedRightPanel`,a),modal:jc(`modal`,a),editingStack:Jr()};function s(e){let t=r.rightPanels.find(t=>t.id===e);if(t)return[t,o.rightPanel,o.pinnedRightPanel];let n=r.centerPanels.find(t=>t.id===e);if(n)return[n,o.centerPanel];let i=r.leftPanels.find(t=>t.id===e);if(i)return i.modal?[i,o.modal]:[i,o.leftPanel];N(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Qc(e,t),[o,c,l]=s(r);if(l&&o.options?.openPinned)l.pin({id:r,state:{...o.defaultState||{},...i||{}}});else{let e={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.open`,e),c.open(e)}}function l(e,t){let{id:r,state:i}=Qc(e,t),[a,o]=s(r),c={id:r,state:{...a.defaultState||{},...i||{}},stacked:!0};n.emit(`layout.open`,c),o.open(c)}function f(e,t){let{id:r,state:i,stacked:a}=Qc(e,t),[o,c]=s(r),l={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.change`,l),c.change(l)}function p(e,t){let{id:r}=Qc(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function m(e,t){let{id:r}=Qc(e,t),[,i]=s(r);n.emit(`layout.toggle`,{id:r}),i.toggle()}function g(e,t={},{reset:i,property:a,stacked:s,forceOpen:c,selectedTab:l}={}){let u={resource:(0,h.isSpecificResource)(e)?e:{type:`SpecificResource`,source:e},...t};n.emit(`layout.edit`,u),o.editingStack.edit(u,i),r.rightPanels.find(e=>e.id===`@manifest-editor/editor`)&&(c?o.rightPanel.open({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}):o.rightPanel.change({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}))}async function _(e){o.editingStack.create(e,{}),n.emit(`layout.create`,e),r.modals?.find(e=>e.id===`@manifest-editor/creator`)?o.modal.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e}):r.rightPanels.find(e=>e.id===`@manifest-editor/creator`)&&o.rightPanel.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e})}let v={open:c,change:f,close:p,toggle:m,stack:l,edit:g,create:_};return(0,d.jsx)(oi.Provider,{value:(0,u.useMemo)(()=>({...o,...v}),[r]),children:(0,d.jsx)(si.Provider,{value:i,children:e.children})})}),el=[{id:`universal-viewer`,config:{url:`https://universalviewer.dev/#?iiifManifestId={manifestId}`},type:`external-manifest-preview`,label:`Universal viewer`},{id:`mirador-3`,type:`external-manifest-preview`,label:`Mirador 3`,config:{url:`https://tomcrane.github.io/scratch/mirador3/?iiif-content={manifestId}`}},{id:`annona`,type:`external-manifest-preview`,label:`Annona`,config:{url:`https://ncsu-libraries.github.io/annona/tools/#/display?url={manifestId}&viewtype=iiif-storyboard&settings=%7B%22fullpage%22%3Atrue%7D`}},{id:`iiif-preview`,config:{url:`https://iiif-preview.digirati.services/store`},type:`iiif-preview-service`,label:`IIIF Preview`}],tl=new k.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function nl({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o,backgroundActionPersistence:s}){let c=Hn(),l=z(),f=(0,u.useMemo)(()=>{let t=e?.previews||(l.previews?.length?l.previews:el);return re(l,{previews:t},e)},[l,e]),p=(0,u.useMemo)(()=>({appId:c.appId,instanceId:c.instanceId,rootResource:{id:a.id,type:a.type}}),[c.appId,c.instanceId,a.id,a.type]);return(0,d.jsx)(Zc,{children:(0,d.jsx)(m.ImageServiceLoaderContext.Provider,{value:tl,children:(0,d.jsx)(lr,{resource:a,children:(0,d.jsx)(xo,{children:(0,d.jsx)(g.ThemeProvider,{theme:r||Lo,children:(0,d.jsxs)(ae,{config:f,saveConfig:t,children:[(0,d.jsx)(Rn,{config:f}),(0,d.jsx)(ii,{children:(0,d.jsx)($c,{children:(0,d.jsx)(kt,{persistence:s,persistenceKey:p,children:(0,d.jsx)(os,{children:(0,d.jsx)(Gi,{children:(0,d.jsx)(xr,{previews:i||[],configs:f.previews,children:(0,d.jsx)(Yc,{children:(0,d.jsx)(m.AtlasStoreProvider,{children:n})})})})})})})})]})})})})})})}const rl=new Set([`Collection`,`Manifest`,`Canvas`,`Range`,`AnnotationPage`,`Annotation`,`ContentResource`,`Agent`]),il={satisfied:0,missing:0,invalid:0,disallowed:0,"not-applicable":0},al=new Set([`label`,`summary`,`language`,`navDate`,`provider`,`requiredStatement`,`rights`,`thumbnail`]);function ol(e){return e?Array.isArray(e)?e.filter(Boolean):e.split(`.`).filter(Boolean):[]}function sl(e,t){let n=ol(e),r=ol(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function cl(e,t){let n=e;for(let e of ol(t)){if(n==null)return;n=n[e]}return n}function ll(e,t,n){let r=ol(t);if(!r.length)return n;let i=Array.isArray(e)?[...e]:{...e||{}},a=i;return r.forEach((e,t)=>{if(t===r.length-1){a[e]=n;return}let i=a[e];a[e]=Array.isArray(i)?[...i]:{...i||{}},a=a[e]}),i}function $(e){if(e==null)return!1;if(typeof e==`string`)return e.trim().length>0;if(typeof e==`number`||typeof e==`boolean`)return!0;if(Array.isArray(e))return e.some(e=>$(e));if(typeof e!=`object`)return!1;let t=Object.entries(e);return t.length?!t.every(([,e])=>typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`))||t.some(([,e])=>$(e)):!1}function ul(e){return Array.isArray(e)?e.map(ul):e&&typeof e==`object`?Object.keys(e).sort().reduce((t,n)=>(t[n]=ul(e[n]),t),{}):e}function dl(e,t){return JSON.stringify(ul(e))===JSON.stringify(ul(t))}function fl(e,t,n,r){let i=ol(n);for(let n of e||[])for(let e of n.terminology?.properties||[])if(!(e.entityType&&e.entityType!==t)&&sl(e.path,i))return e.label;return r||Bl(i)}function pl(e,t,n){let r=ol(n),i=[],a,o,s=!1,c=!1;if(!t||!rl.has(t.type))return{entityType:t?.type,path:r,label:fl(e,t?.type,r),disallowed:!1,required:!1,rules:i};for(let n of e||[])for(let e of n.rules||[])!(`entityType`in e)||!(`path`in e)||e.entityType===t.type&&sl(e.path,r)&&(i.push(e),e.type===`disallow-property`&&(s=!0),e.type===`require-non-empty`&&(c=!0),e.type===`fixed-value`&&!o&&(a=e.value,o=e,c=!0));return{entityType:t.type,path:r,label:fl(e,t.type,r),disallowed:s,required:c,fixedValue:a,fixedValueRule:o,rules:i}}function ml(e,t,n){let r=e||[],i=hl(t,n),a=[];for(let e of r)for(let[n,r]of(e.rules||[]).entries())a.push(...gl(e,r,n,i,t));return{specifications:r,results:a,counts:Tl(a)}}function hl(e,t){let n=[],r=new Set;function i(t){let a=Dl(t);if(!a)return;if(a.type===`SpecificResource`){i(t?.source);return}let o=El(e,t)||El(e,a);if(!o||!o.type)return;let s=`${o.type}:${o.id||JSON.stringify(a)}`;if(!r.has(s)){r.add(s),rl.has(o.type)&&n.push({ref:{id:o.id,type:o.type},resource:o});for(let e of Ol(o))i(e)}}return i(t),n}function gl(e,t,n,r,i){switch(t.type){case`disallow-property`:case`require-non-empty`:case`fixed-value`:return _l(e,t,n,r);case`iiif:canvas-with-image-service`:return[vl(e,t,n,r,i)];case`iiif:thumbnail-from-body-service`:return yl(e,t,n,r,i);case`iiif:valid-rights`:return bl(e,t,n,r);case`iiif:required-statement`:return xl(e,t,n,r);case`iiif:metadata-template`:return Sl(e,t,n,r);default:return[]}}function _l(e,t,n,r){let i=r.filter(e=>e.ref.type===t.entityType),a=fl(e?[e]:[],t.entityType,t.path);return i.length?i.map(({ref:r,resource:i})=>{let o=cl(i,t.path),s=$(o);if(t.type===`disallow-property`)return Cl(e,t,n,{target:r,path:t.path,status:s?`disallowed`:`satisfied`,displayLabel:a,actual:o,message:s?`${a} is present but is not allowed.`:`${a} is not present.`,editorTarget:wl(r,t.path)});if(t.type===`require-non-empty`)return Cl(e,t,n,{target:r,path:t.path,status:s?`satisfied`:`missing`,displayLabel:a,actual:o,message:s?`${a} has a value.`:`${a} must be filled in.`,editorTarget:wl(r,t.path)});let c=dl(o,t.value);return Cl(e,t,n,{target:r,path:t.path,status:c?`satisfied`:s?`invalid`:`missing`,displayLabel:a,expected:t.value,actual:o,message:c?`${a} matches the required value.`:s?`${a} does not match the required value.`:`${a} must use the required value.`,editorTarget:wl(r,t.path)})}):[Cl(e,t,n,{status:`not-applicable`,displayLabel:a,message:`No ${t.entityType} resources were found for ${a}.`,path:t.path})]}function vl(e,t,n,r,i){let a=r.filter(e=>e.ref.type===`Canvas`),o=kl(t),s=a.find(({resource:e})=>Al(jl(e,i),o));return Cl(e,t,n,{target:s?.ref,status:s?`satisfied`:`missing`,displayLabel:t.label||`Canvas image service`,expected:o,message:s?`A canvas contains the required image service.`:o.length?`A canvas must contain one of the required image services: ${o.join(`, `)}.`:`A canvas must contain a painting body with an image service.`,editorTarget:s?wl(s.ref,[`items`]):void 0})}function yl(e,t,n,r,i){let a=t.entityType||`Canvas`,o=r.filter(e=>e.ref.type===a);return o.length?o.map(({ref:o,resource:s})=>{let c=a===`Manifest`?r.filter(e=>e.ref.type===`Canvas`).flatMap(e=>jl(e.resource,i)):jl(s,i),l=Ml(s,c,i),u=$(s.thumbnail);return Cl(e,t,n,{target:o,path:[`thumbnail`],status:l?`satisfied`:c.length?u?`invalid`:t.requireThumbnail===!1?`not-applicable`:`missing`:`not-applicable`,displayLabel:fl([e],o.type,[`thumbnail`],`Thumbnail`),expected:c,actual:s.thumbnail,message:l?`Thumbnail uses the same image service as the painting content.`:c.length?u?`Thumbnail does not use the same image service as the painting content.`:`Thumbnail must be created from the painting image service.`:`No painting image service was found to compare against.`,editorTarget:wl(o,[`thumbnail`])})}):[Cl(e,t,n,{status:`not-applicable`,displayLabel:`Thumbnail`,message:`No ${a} resources were found for thumbnail checks.`})]}function bl(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=t.allowed||[];return a.map(({ref:r,resource:i})=>{let a=i.rights,s=$(a),c=typeof a==`string`&&o.map(Il).includes(Il(a));return Cl(e,t,n,{target:r,path:[`rights`],status:c?`satisfied`:!s&&t.required!==!1?`missing`:`invalid`,displayLabel:fl([e],r.type,[`rights`],`Rights`),expected:o,actual:a,message:c?`Rights uses an allowed URI.`:!s&&t.required!==!1?`Rights must use an allowed URI.`:`Rights is not one of the allowed URIs.`,editorTarget:wl(r,[`rights`])})})}function xl(e,t,n,r){let i=t.entityType||`Manifest`;return r.filter(e=>e.ref.type===i).map(({ref:r,resource:i})=>{let a=i.requiredStatement,o=t.label?Ll(a?.label,t.label):$(a?.label),s=t.value||t.valueRequired!==!1,c=t.value?Ll(a?.value,t.value):!s||$(a?.value),l=$(a);return Cl(e,t,n,{target:r,path:[`requiredStatement`],status:o&&c?`satisfied`:l?`invalid`:`missing`,displayLabel:fl([e],r.type,[`requiredStatement`],`Required statement`),expected:t.value||t.label,actual:a,message:o&&c?`Required statement is complete.`:l?`Required statement does not match the specification.`:`Required statement must be filled in.`,editorTarget:wl(r,[`requiredStatement`])})})}function Sl(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=[];for(let{ref:r,resource:i}of a){let a=Array.isArray(i.metadata)?i.metadata:[];t.items.forEach((i,s)=>{let c=a.find(e=>Ll(e?.label,i.label)),l=i.value?Ll(c?.value,i.value):!i.valueRequired||$(c?.value),u=c&&l?`satisfied`:c&&i.value?`invalid`:`missing`,d=zl(i.label);o.push(Cl(e,t,n,{idSuffix:`metadata-${s}`,target:r,path:[`metadata`],status:u,displayLabel:d||`Metadata`,expected:i.value||i.label,actual:c,message:c&&l?`${d||`Metadata`} is present.`:c?`${d||`Metadata`} needs a value.`:`${d||`Metadata`} metadata must be added.`,editorTarget:wl(r,[`metadata`])}))})}return o}function Cl(e,t,n,r){let i=t.id||`${t.type}-${n}`,a=r.idSuffix?`-${r.idSuffix}`:``;return{id:`${e.id}-${i}-${r.target?.type||`root`}-${r.target?.id||`none`}${a}`,specificationId:e.id,specificationLabel:e.label,ruleId:i,ruleType:t.type,ruleLabel:t.label||r.displayLabel,ruleIndex:n,target:r.target,path:r.path,status:r.status,displayLabel:r.displayLabel,message:t.message||r.message,expected:r.expected,actual:r.actual,editorTarget:r.editorTarget}}function wl(e,t){let n=t[0];return{resource:e,propertyPath:t,selectedTab:n===`metadata`?`@manifest-editor/metadata`:n&&al.has(n)?`@manifest-editor/descriptive-properties`:void 0}}function Tl(e){let t={...il};for(let n of e)t[n.status]+=1;return t}function El(e,t){let n=Dl(t);if(!n)return t;try{return e.get(n,{skipSelfReturn:!1})||t}catch{try{return e.get(n)||t}catch{return t}}}function Dl(e){return!e||typeof e!=`object`?null:e.type===`SpecificResource`?{id:e.id||e.source?.id||``,type:`SpecificResource`}:typeof e.id==`string`&&typeof e.type==`string`?{id:e.id,type:e.type}:null}function Ol(e){if(!e||typeof e!=`object`)return[];let t=[];for(let n of[`items`,`structures`,`annotations`,`thumbnail`,`provider`,`homepage`,`rendering`,`seeAlso`,`body`,`target`,`source`]){let r=e[n];Array.isArray(r)?t.push(...r):r&&t.push(r)}return t}function kl(e){return[...e.serviceIds||[],...e.serviceId?[e.serviceId]:[]].filter(Boolean)}function Al(e,t){let n=new Set(e.filter(Boolean));return t.length?t.some(e=>n.has(e)):n.size>0}function jl(e,t){let n=Fl(t,e?.items),r=[];for(let e of n){let n=Fl(t,e?.items);for(let e of n)if((Array.isArray(e?.motivation)?e.motivation:[e?.motivation]).includes(`painting`))for(let n of Nl(e?.body,t))r.push(...Pl(n))}return Array.from(new Set(r))}function Ml(e,t,n){let r=Fl(n,e?.thumbnail);if(!r.length||!t.length)return!1;for(let e of r){let n=Pl(e),r=typeof e?.id==`string`?e.id:``;if(n.some(e=>t.includes(e))||t.some(e=>r.startsWith(e)))return!0}return!1}function Nl(e,t){let n=El(t,e);return n?Array.isArray(n)?n.flatMap(e=>Nl(e,t)):n.type===`SpecificResource`?Nl(n.source,t):n.type===`Choice`?n.items?.flatMap(e=>Nl(e,t))||[]:[n]:[]}function Pl(e){let t=e?.service||e?.services,n=Array.isArray(t)?t:t?[t]:[],r=[];for(let e of n){let t=typeof e==`string`?e:e?.id||e?.[`@id`];typeof t==`string`&&t&&r.push(t)}return Array.from(new Set(r))}function Fl(e,t){if(!t)return[];let n=Array.isArray(t)?t:[t];try{let t=e.get(n);if(Array.isArray(t))return t.filter(Boolean)}catch{}return n.map(t=>El(e,t)).filter(Boolean)}function Il(e){return e.replace(/^https:/,`http:`).replace(/\/?$/,`/`)}function Ll(e,t){return typeof t==`string`?Rl(e).some(e=>e===t):dl(e,t)}function Rl(e){return e?typeof e==`string`?[e.trim()].filter(Boolean):Array.isArray(e)?e.flatMap(Rl):typeof e==`object`?Object.values(e).flatMap(Rl):[]:[]}function zl(e){return typeof e==`string`?e:Rl(e)[0]||``}function Bl(e){return(e[e.length-1]||`Property`).replace(/([A-Z])/g,` $1`).replace(/[-_]/g,` `).replace(/^./,e=>e.toUpperCase())}const Vl=(0,u.createContext)([]);function Hl({children:e,specifications:t}){let n=(0,u.useMemo)(()=>t||[],[t]);return(0,d.jsx)(Vl.Provider,{value:n,children:e})}function Ul(){return(0,u.useContext)(Vl)}function Wl(e){let t=W(),n=Ul(),r=e||t;return(0,m.useVaultSelector)((e,t)=>ml(n,t,r),[n,r.id,r.type])}function Gl(){let e=Ul();return(0,u.useMemo)(()=>({getLabel(t,n,r){return fl(e,t,n,r)}}),[e])}function Kl(e,t){let n=Ul();return(0,u.useMemo)(()=>pl(n,e,t),[n,e?.id,e?.type,JSON.stringify(t)])}const ql={},Jl=(0,u.createContext)(`global`);function Yl(){return(0,u.useContext)(Jl)}function Xl(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Zl(e){let t=Yl(),[,n]=(0,u.useReducer)(e=>e+1,0),r=(0,u.useMemo)(()=>(ql[t]||(ql[t]={}),ql[t][e]||(ql[t][e]={name:e,emitter:(0,E.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),ql[t][e]),[t,e]);return Ql(r,`abort`,n),Ql(r,`error`,n),Ql(r,`complete`,n),Ql(r,`running`,n),r}function Ql(e,t,n){let r=(0,u.useCallback)(()=>n(e),[n]);(0,u.useEffect)(()=>{let n=e.emitter;return n.on(t,r),()=>n.off(t,r)},[t,r,e.emitter])}const $l=()=>void 0;function eu(e,t){let n=Zl(e);return Ql(n,`complete`,t||$l),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=Xl();t.promise.then(()=>n.emitter.emit(`complete`)).catch(()=>n.emitter.emit(`error`)),n.status=`running`,n.request=e,n.promise=t.promise,n.resolve=t.resolve,n.reject=t.reject,n.emitter.emit(`running`)},n]}function tu(e,t){let n=Zl(e);return Ql(n,`running`,t),[e=>{n.status===`running`&&(n.response=e,n.status=`complete`,n.resolve())},n,(e,t)=>{n.status===`running`&&(n.error=t||e,n.status=`error`,n.reject(e))}]}function nu({children:e}){return(0,d.jsx)(Jl.Provider,{value:(0,u.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function ru(e){return!1}function iu({as:e,reference:t,onReference:n,onLink:r,onAnalysis:i,onDropReference:a,onDropLink:o,onDropAnalysis:s,onPasteReference:c,onPasteLink:l,onPasteAnalysis:f,...p}){let m=e||`div`,h=a||n,g=c||n,_=l||r,v=f||i,y=(0,u.useMemo)(()=>t,[t?.id,t?.type]),b=(0,u.useCallback)(function(e){e.defaultPrevented||(e.preventDefault(),e.clipboardData&&y&&y.id&&y.type&&e.clipboardData.setData(`application/json+vault`,JSON.stringify({id:y.id,type:y.type})))},[y]),x=(0,u.useCallback)(async function(e){if(!e.defaultPrevented&&(e.preventDefault(),e.clipboardData)){if(p.onLoading&&p.onLoading(),g){let t=e.clipboardData.getData(`application/json+vault`);if(t)try{let e=JSON.parse(t);e&&e.id&&e.type&&g(e)}catch{}}if(_||v){let t=e.clipboardData.getData(`text`);if(t.startsWith(`http`)){let e=t.split(`
1531
1531
  `);for(let t of e){if(v)try{let e=await ru(t);if(e){v(e);continue}}catch{}_&&_(t)}}}p.onComplete&&p.onComplete()}},[]),S=(0,u.useCallback)(function(e){e.defaultPrevented||(e.preventDefault(),e.dataTransfer&&p.draggable&&(e.dataTransfer.effectAllowed=`all`,y&&y.id&&y.type&&e.dataTransfer.setData(`application/json+vault`,JSON.stringify({id:y.id,type:y.type}))))},[]),C=(0,u.useCallback)(async function(e){if(e.preventDefault(),e.dataTransfer){if(h){let t=e.dataTransfer.getData(`application/json+vault`);if(t)try{let n=JSON.parse(t);n&&n.id&&n.type&&h(n,e)}catch{return}}let t=e.dataTransfer.getData(`application/json`);if(t){JSON.parse(t);return}if(e.dataTransfer.getData(`text/plain`))return}},[]),w=(0,u.useCallback)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`)},[]);return(0,d.jsx)(m,{onCopy:b,onPaste:x,onDrop:C,onDragOver:w,onDragStart:S,tabIndex:-1,...p})}exports.AppHeader=Oa,exports.AppMenuProvider=Ma,exports.AppProvider=qn,exports.AppReactContext=Bn,exports.AppResourceInstanceProvider=cr,exports.AppResourceProvider=lr,exports.AppStateReactContext=Vn,exports.AtlasStoreProvider=m.AtlasStoreProvider,exports.AtlasStoreReactContext=m.AtlasStoreReactContext,exports.BackgroundActionToasts=ta,exports.BackgroundActionsMenu=ha,exports.BackgroundActionsMount=ea,exports.BackgroundActionsProvider=kt,exports.BackgroundActionsReactContext=Ot,exports.BaseAnnotationCreator=Ro,exports.BaseEditor=Ho,exports.BaseEditorBackButton=zo,exports.BaseEditorCloseButton=Bo,exports.ButtonChange=Or,exports.ButtonContainer=Er,exports.ButtonEmpty=Fr,exports.ButtonMain=Dr,exports.CANVAS_PROGRESS_META_NAMESPACE=oe,exports.CANVAS_PROGRESS_STATUS_META_KEY=se,exports.ConfigEditor=ts,exports.ConfigProvider=ae,exports.ConfigReactContext=L,exports.ContextMenuProvider=os,exports.ContextMenuReactContext=as,exports.CreatorInitialData=Oo,exports.CreatorSettings=rs,exports.EditingStack=ii,exports.EditingStackContext=Kr,exports.EventEmitterProvider=Fs,exports.ExportPanel=js,exports.FLAG_TAG=gi,exports.HOMEPAGE_COLLECTION=yo,exports.HandleContainer=Vs,exports.HandleControls=Ks,exports.IIIFOptions=es,exports.InlineEditingStack=ai,exports.Layout=Ac,exports.LayoutActionsReactContext=oi,exports.LayoutModeReactContext=ci,exports.LayoutStateReactContext=si,exports.ManifestEditorCanvasProgressOverlay=Ee,exports.ManifestEditorTagBadge=zi,exports.ManifestEditorTagIcon=Ri,exports.ManifestEditorTagOverlay=Bi,exports.ManifestPaginationNavigation=Lc,exports.MenuContainer=kr,exports.MenuItem=Ar,exports.MenuItemClose=Pr,exports.MenuItemLabel=Nr,exports.MenuItemStatus=Mr,Object.defineProperty(exports,"MessagePortClientVault",{enumerable:!0,get:function(){return A.MessagePortClientVault}}),exports.ModularPanel=mo,exports.ModularPanelHeader=co,exports.ModulePanelButton=lo,exports.MultiAppProvider=Zn,exports.PanelError=io,exports.PluginConfigBridge=Rn,exports.PluginGlobalConfigReactContext=Tn,exports.PluginManager=Zo,exports.PluginProvider=En,exports.PluginReactContext=wn,exports.PresetOnboarding=Da,exports.PresetOnboardingButton=Ta,exports.PresetPreviewButton=Ea,exports.PreviewButton=Lr,exports.PreviewProvider=xr,exports.PreviewVaultBoundary=So,exports.PreviewVaultContext=xo,exports.PreviewWindowProvider=Yc,exports.PrimeAppReactContext=zn,exports.ReactEmitterContext=Ps,exports.ResourceEditingProvider=Hr,exports.ResourceEditingReactContext=Rr,exports.SaveConfigReactContext=R,exports.ShellProvider=nl,exports.SpecificationProvider=Hl,exports.TAGS_META_KEY=hi,exports.TAGS_META_NAMESPACE=mi,exports.TaskBridge=nu,exports.ToastProvider=Gi,exports.UniversalCopyTarget=iu,exports.addResourceTag=ki,exports.analyse=Ra,exports.analyseJson=Ba,exports.applyPlugins=Sn,exports.baseCreator=Io,exports.baseEditor=Uo,exports.clearCanvasProgressStatus=he,exports.clearCanvasProgressStatuses=_e,exports.collectSpecificationResources=hl,exports.copyToClipboard=It,exports.createActionIdentity=Pt,exports.createBackgroundActionsStore=yt,exports.createDownload=Ft,exports.createIframeVaultBridge=Wc,exports.createLocalForageBackgroundActionPersistence=Et,exports.createManifestEditorCanvasProgressApi=ve,exports.createManifestEditorTagsApi=Fi,exports.createPluginRuntimeApi=gn,exports.createPluginStore=Cn,exports.createPreviewVault=ho,exports.createTrackingCanvasProgressApi=ye,exports.detectMedia=La,exports.disablePluginInConfig=Yt,exports.editBasedOnResource=Vo,exports.enablePluginAndDependenciesInConfig=_n,exports.enablePluginInConfig=Jt,exports.evaluateSpecifications=ml,exports.extendApp=Bt,exports.filterSupportedPanels=_c,exports.getAvailableBackgroundActionGroups=Fe,exports.getBackgroundActionInstanceKey=ke,exports.getCanvasProgressStatus=fe,exports.getCanvasProgressStatusFromState=pe,exports.getDefaultLayoutState=Ic,exports.getDefaultPanelState=Fc,exports.getEffectivePluginSettings=hn,exports.getEmptyPluginState=Ut,exports.getEnabledPluginsForApp=un,exports.getFormat=Ua,exports.getImageDimensions=Wa,exports.getManifestNomalized=Nt,exports.getPluginCompatibilityReason=sn,exports.getPluginDefaultSettings=mn,exports.getPluginSelectionSource=ln,exports.getPluginSettingsFromConfig=dn,exports.getPresetOnboardingDismissalKey=Ca,exports.getPropertyPolicy=pl,exports.getResourceTag=Ai,exports.getResourceTagGroups=Mi,exports.getResourceTags=Ei,exports.getResourceTagsFromState=Di,exports.getSelectedPresetTemplate=Wn,exports.getSupportedPanelFallback=vc,exports.getTerminologyLabel=fl,exports.getValueAtPath=cl,exports.hasMeaningfulValue=$,exports.hasPreviewOption=Ir,exports.hasResourceTag=Ni,exports.isLazyPlugin=tn,exports.isMappedPlugin=en,exports.isPinnableState=to,exports.isPluginCompatible=on,exports.isPluginSelected=cn,exports.layoutReducer=Pc,exports.mapApp=Rt,exports.mapLazyPlugin=$t,exports.mapPlugin=Qt,exports.mergeBackgroundActionDefinitions=Ae,exports.mergeConfig=re,exports.mergePartialConfig=I,exports.mergePresetConfig=zt,exports.mergeProviderPlugins=an,exports.normaliseBackgroundActionError=Me,exports.normaliseJsonValue=ul,exports.normalisePlugin=nn,exports.normalisePluginAppConfig=Kt,exports.normalisePluginAppsConfig=qt,exports.normalisePlugins=rn,exports.normaliseSpecificationPath=ol,exports.panelIds=Q,exports.panelSizing=no,exports.pluginAppConfigEquals=Zt,exports.polygonToBoundingBox=Pa,exports.randomId=Lt,exports.removeResourceTag=ji,exports.renderHelper=ro,exports.resetPluginInConfig=Xt,exports.resetPluginSettingsInConfig=pn,exports.runBackgroundAction=St,exports.setCanvasProgressStatus=me,exports.setCanvasProgressStatuses=ge,exports.setPluginSettingsInConfig=fn,exports.setResourceTags=Oi,exports.setValueAtPath=ll,exports.sortBackgroundActionDefinitions=je,exports.specificationJsonEquals=dl,exports.specificationPathEquals=sl,exports.toggleResourceTag=Pi,exports.useAnnotationCreatorState=Ms,exports.useAnnotationPageEditor=ti,exports.useApp=U,exports.useAppInstance=Hn,exports.useAppMenu=Aa,exports.useAppMenuItem=ja,exports.useAppResource=W,exports.useAppResourceInstance=sr,exports.useAppState=Un,exports.useApps=Yn,exports.useAtlasStore=Na,exports.useAvailableBackgroundActions=$i,exports.useAvailableLayouts=fi,exports.useBackgroundActionHistory=Mt,exports.useBackgroundActionInstance=jt,exports.useBackgroundActionsStore=H,exports.useBackgroundActionsStoreApi=At,exports.useCanvasProgressActions=xe,exports.useCanvasProgressStatus=be,exports.useCollectionEditor=$r,exports.useConfig=z,exports.useCreatingResource=Zr,exports.useCreator=Co,exports.useCustomContextMenu=us,exports.useDecayState=Wo,exports.useEditingContext=zr,exports.useEditingResource=Yr,exports.useEditingResourceStack=Xr,exports.useEditingStack=Jr,exports.useEditor=ni,exports.useEmitter=Is,exports.useEnabledPlugins=jn,exports.useEvent=Ls,exports.useGenericEditor=ei,exports.useHighlightedImageResource=Ga,exports.useHoverHighlightImageResource=qa,exports.useInitialData=Do,exports.useInlineCreator=wo,exports.useLayoutActions=ui,exports.useLayoutMode=di,exports.useLayoutProvider=pi,exports.useLayoutState=li,exports.useLocalStorage=l.useLocalStorage,exports.useManifestEditor=Qr,exports.useMatchMedia=Rs,exports.useOpenPresetOnboarding=wa,exports.useOptionalLocalStorage=l.useOptionalLocalStorage,exports.useOptionalPluginStoreApi=Dn,exports.useOptionalResource=Vr,exports.usePanelActions=jc,exports.usePluginActions=Mn,exports.usePluginConfigApi=Fn,exports.usePluginRuntimeApi=Nn,exports.usePluginSettings=Pn,exports.usePluginStoreApi=On,exports.usePlugins=An,exports.usePresetTemplateSelection=Gn,exports.usePreviewContext=Cr,exports.usePreviewHistory=bo,exports.usePreviewVault=go,exports.usePreviewWindow=Xc,exports.usePreviews=Sr,exports.useResolvedPluginApp=In,exports.useResource=Br,exports.useResourceContextMenuItems=cs,exports.useResourceTagActions=Li,exports.useResourceTags=Ii,exports.useSaveConfig=ie,exports.useSaveVault=zs,exports.useSetCustomTitle=oo,exports.useSpecificationPropertyPolicy=Kl,exports.useSpecificationReport=Wl,exports.useSpecificationTerminology=Gl,exports.useSpecifications=Ul,exports.useSvgTools=Bs,exports.useTask=Zl,exports.useTaskDispatch=eu,exports.useTaskEvent=Ql,exports.useTaskRunner=tu,exports.useTemporaryHighlight=Ka,exports.useToasts=Ki;
1532
1532
  //# sourceMappingURL=index.cjs.map