@manifest-editor/shell 2.1.0 → 2.2.0

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
@@ -1,13 +1,13 @@
1
- var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@manifest-editor/components`),l=require(`react`);l=s(l);let u=require(`react/jsx-runtime`),d=require(`zustand`),f=require(`localforage`);f=s(f);let p=require(`react-iiif-vault`),m=require(`@iiif/parser`),h=require(`styled-components`);h=s(h);let g=require(`react-accessible-dropdown-menu-hook`);g=s(g);let _=require(`immer`),v=require(`@manifest-editor/editor-api`),y=require(`@react-stately/toast`),b=require(`@iiif/helpers`),x=require(`@iiif/helpers/vault`);x=s(x);let S=require(`@manifest-editor/creator-api`),ee=require(`react-error-boundary`),C=require(`@iiif/helpers/vault/actions`),w=require(`@iiif/helpers/vault/utility`),T=require(`mitt`);T=s(T);let E=require(`tiny-use-debounce`),D=require(`react-transition-group`),te=require(`shallowequal`);te=s(te);let O=require(`@atlas-viewer/iiif-image-api`),k=require(`@manifest-editor/client-vault`);var A=process.env.NODE_ENV===`production`,j=`Invariant failed`;function M(e,t){if(!e){if(A)throw Error(j);var n=typeof t==`function`?t():t,r=n?`${j}: ${n}`:j;throw Error(r)}}const ne={previews:[],behaviorPresets:[`auto-advance`,`no-auto-advance`,`repeat`,`no-repeat`,`unordered`,`individuals`,`continuous`,`paged`,`non-paged`,`facing-pages`,`multi-part`,`together`,`sequence`,`thumbnail-nav`,`no-nav`,`hidden`],defaultPreview:null,editorConfig:{},newTemplates:null,i18n:{advancedLanguageMode:!1,availableLanguages:[`en`,`cy`,`nl`,`fr`],defaultLanguage:`en`},editorFeatureFlags:{enableMultiImageCanvases:!0,enableMultiMediaCanvases:!0,annotationPopups:!1,rememberCanvasId:!0,manifestGridOptions:!1,rememberLeftPanelId:!1},uploadBackends:[],plugins:{apps:{}},export:{baseIdentifier:null,version:3}};function re(e,t){if(!e&&!t)return;let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{}};return n}function ie(e,t){if(!e&&!t)return;let n={...e?.apps||{}};for(let[e,r]of Object.entries(t?.apps||{})){let t=n[e]||{};n[e]={...t,...r,settings:{...t.settings||{},...r.settings||{}}}}return{apps:n}}function N(...e){let t={};for(let n of e)n&&(t={...t,...n,editorConfig:re(t.editorConfig,n.editorConfig),editorFeatureFlags:t.editorFeatureFlags||n.editorFeatureFlags?{...t.editorFeatureFlags||{},...n.editorFeatureFlags||{}}:void 0,i18n:t.i18n||n.i18n?{...t.i18n||{},...n.i18n||{}}:void 0,export:t.export||n.export?{...t.export||{},...n.export||{}}:void 0,plugins:ie(t.plugins,n.plugins)});return t}function P(...e){return N(ne,...e)}const ae=(0,l.createContext)(ne),oe=(0,l.createContext)(()=>{});function F(){return(0,l.useContext)(ae)}function se(){return(0,l.useContext)(oe)}function ce({children:e,config:t,saveConfig:n}){let[r,i]=(0,l.useState)(null),a=(0,l.useMemo)(()=>P(t,r),[t,r]),o=(0,l.useCallback)(e=>{i(t=>N(t,e)),n&&n(e)},[n]);return(0,u.jsx)(oe.Provider,{value:o,children:(0,u.jsx)(ae.Provider,{value:a,children:e})})}const le=`@manifest-editor/canvas-progress`,ue=`status`,de=new Set([`queued`,`pending`,`done`]);function fe(e){return typeof e==`string`?e:e?.id||null}function pe(e){return typeof e==`string`&&de.has(e)?e:`none`}function me(e){return typeof e==`string`&&de.has(e)}function he(e,t){let n=fe(t);return n?pe(e.getResourceMeta(n,le)?.[ue]):`none`}function ge(e,t){let n=fe(t);return n?pe(e?.iiif?.meta?.[n]?.[le]?.[ue]):`none`}function _e(e,t,n){let r=fe(t);if(!r)return`none`;let i=me(n)?n:void 0;return e.setMetaValue([r,le,ue],i),i||`none`}function ve(e,t){return _e(e,t,`none`)}function ye(e,t,n){let r={};for(let i of t){let t=fe(i);t&&(r[t]=_e(e,i,n))}return r}function be(e,t){return ye(e,t,`none`)}function xe(e){return{getStatus(t){return he(e,t)},setStatus(t,n){return _e(e,t,n)},clearStatus(t){return ve(e,t)},setStatuses(t,n){return ye(e,t,n)},clearStatuses(t){return be(e,t)}}}function Se(e,t=new Set){function n(e){let n=fe(e);n&&t.add(n)}function r(e){for(let t of e)n(t)}return{trackedResourceIds:t,getStatus(t){return e.getStatus(t)},setStatus(t,r){return n(t),e.setStatus(t,r)},clearStatus(t){return n(t),e.clearStatus(t)},setStatuses(t,n){return r(t),e.setStatuses(t,n)},clearStatuses(t){return r(t),e.clearStatuses(t)},clearTrackedStatuses(){e.clearStatuses(Array.from(t).map(e=>({id:e,type:`Canvas`}))),t.clear()}}}function Ce(e){let t=fe(e);return(0,p.useVaultSelector)(e=>t?ge(e,t):`none`,[t])}function we(e){let t=(0,p.useVault)(),n=fe(e),r=(0,l.useMemo)(()=>xe(t),[t]);return(0,l.useMemo)(()=>({setStatus(e){return r.setStatus(n,e)},clearStatus(){return r.clearStatus(n)},getStatus(){return r.getStatus(n)}}),[r,n])}const Te={queued:{label:`Queued`,stripClass:`bg-zinc-400/80`,badgeClass:`bg-zinc-500`,dimOverlay:!0},pending:{label:`In progress`,stripClass:`bg-amber-400/90 animate-pulse`,badgeClass:`bg-amber-500`},done:{label:`Done`,stripClass:`bg-me-primary-500`,badgeClass:`bg-me-primary-500`}};function Ee({className:e}){return(0,u.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,u.jsx)(`path`,{d:`M12 7v5l2.5 2.5`})]})}function De({className:e}){return(0,u.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,children:[(0,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeOpacity:`0.3`}),(0,u.jsx)(`path`,{d:`M12 3a9 9 0 0 1 9 9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`})]})}function Oe({className:e}){return(0,u.jsx)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,u.jsx)(`path`,{d:`M5 12l4 4 8-8`})})}function ke({resource:e,status:t,className:n}){return t?(0,u.jsx)(je,{status:t,className:n}):(0,u.jsx)(Ae,{resource:e,className:n})}function Ae({resource:e,className:t}){return(0,u.jsx)(je,{status:Ce(e),className:t})}function je({status:e,className:t}){if(e===`none`)return null;let n=Te[e];return(0,u.jsxs)(u.Fragment,{children:[n.dimOverlay&&(0,u.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0 z-10 bg-white/40`}),(0,u.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-x-0 top-0 z-10 h-[3px] rounded-t-sm ${n.stripClass} ${t||``}`}),(0,u.jsxs)(`div`,{className:`pointer-events-none absolute right-1.5 top-1.5 z-10 flex h-[18px] w-[18px] items-center justify-center rounded-full ${n.badgeClass} shadow-md ring-2 ring-white/70`,title:n.label,children:[(0,u.jsx)(`span`,{className:`sr-only`,children:n.label}),e===`queued`&&(0,u.jsx)(Ee,{className:`h-2.5 w-2.5 text-white`}),e===`pending`&&(0,u.jsx)(De,{className:`h-2.5 w-2.5 animate-spin text-white`}),e===`done`&&(0,u.jsx)(Oe,{className:`h-2.5 w-2.5 text-white`})]})]})}function Me(e,t){return`${e}::${t.type}::${t.id}`}function Ne(e=[],t=[]){let n=[],r=new Set;for(let e=t.length-1;e>=0;--e){let i=t[e];i&&!r.has(i.id)&&(r.add(i.id),n.unshift(i))}return[...e.filter(e=>!r.has(e.id)),...n]}function Pe(e){return[...e].sort((e,t)=>{let n=(e.section||``).localeCompare(t.section||``);if(n!==0)return n;let r=(e.order||0)-(t.order||0);if(r!==0)return r;let i=e.label.localeCompare(t.label);return i===0?e.id.localeCompare(t.id):i})}function Fe(e){return e instanceof Error?{message:e.message,stack:e.stack,detail:e}:{message:typeof e==`string`?e:`Background action failed`,detail:e}}function Ie(e){return e&&typeof e==`object`&&typeof e.message==`string`?{message:e.message,stack:typeof e.stack==`string`?e.stack:void 0,detail:e.detail}:Fe(e)}function Le(e,t){return e.resourceTypes?.length?e.resourceTypes.includes(t.type):!0}function Re({definitions:e,instances:t,systemContext:n,targets:r,onSupportsError:i}){let a=Pe(e),o=[];for(let e of r){let r=[];for(let o of a){if(!Le(o,e))continue;let a=Me(o.id,e),s={...n,definition:o,target:e,instanceKey:a,instance:t[a]};try{if(o.supports&&!o.supports(s))continue}catch(e){i?.(o,e);continue}r.push({definition:o,target:e,instanceKey:a,instance:t[a],context:s})}r.length&&o.push({id:`${e.scope}:${e.type}:${e.id}`,label:e.label,target:e,actions:r})}return o}let ze=0;function Be(e){return ze+=1,`${e}-${Date.now()}-${ze}`}function Ve(e,t,n,r=Date.now()){return{id:Be(`event`),createdAt:r,type:e,message:t,data:n}}function I(e,t,n,r,i=Date.now()){return{...e,events:[...e.events,Ve(t,n,r,i)]}}function He(e){return e.filter(e=>String(e.type)!==`progress`)}function Ue(e){return{...e,logs:[...e.logs],events:He(e.events),progress:e.progress?{...e.progress}:void 0}}function We(e,t,n){if(!Je(n.status))return e;let r=e[t]||[],i=Ue(n),a=r.findIndex(e=>e.runId===n.runId),o=a>=0?r.map((e,t)=>t===a?i:e):[...r,i];return{...e,[t]:o}}function L(e,t,n){let r=e.instances[t];if(!r)return{instances:e.instances,histories:e.histories};let i=n(r);return{instances:{...e.instances,[t]:i},histories:We(e.histories,t,i)}}function Ge(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function Ke(e){let t=e,n=typeof t.current==`number`&&Number.isFinite(t.current)?t.current:void 0,r=typeof t.total==`number`&&Number.isFinite(t.total)?t.total:void 0;return{percent:Ge(typeof t.percent==`number`&&Number.isFinite(t.percent)?t.percent:typeof n==`number`&&typeof r==`number`&&r>0?n/r*100:0),current:n,total:r,label:t.label}}function qe(e){return e===`preparing`||e===`running`}function Je(e){return e===`complete`||e===`error`||e===`cancelled`}function Ye(e){return e===`queued`||e===`running`||e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function Xe(e){return!e||e===`queued`||e===`running`}function Ze(e){return e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function Qe(e){if(e!==void 0)try{return JSON.parse(JSON.stringify(e))}catch{return}}function $e(e){return e&&{message:e.message,stack:e.stack,detail:Qe(e.detail)}}function et(e){return{...e,error:$e(e.error)||null,result:Qe(e.result),logs:e.logs.map(e=>({...e,data:Qe(e.data)})),events:He(e.events).map(e=>({...e,data:Qe(e.data)})),progress:e.progress?{...e.progress}:void 0}}function tt(e){return{...e,status:st(e.status),input:Qe(e.input),result:Qe(e.result),error:$e(e.error)||null}}function nt(e){return{version:1,data:Qe(e.data),tasks:e.tasks.map(tt)}}function rt(e){return{version:1,savedAt:Date.now(),instances:Object.fromEntries(Object.entries(e.instances).map(([e,t])=>[e,et(t)])),histories:Object.fromEntries(Object.entries(e.histories).map(([e,t])=>[e,t.map(et)])),plans:Object.fromEntries(Object.entries(e.plans).map(([e,t])=>[e,nt(t)]))}}function it(){return{version:1,savedAt:Date.now(),instances:{},histories:{},plans:{}}}function at(e,t){return{version:1,savedAt:t.savedAt,instances:{...e.instances,...t.instances},histories:{...e.histories,...t.histories},plans:{...e.plans,...t.plans}}}function ot(e){return!Object.keys(e.instances).length&&!Object.keys(e.histories).length&&!Object.keys(e.plans).length}function st(e){return Ye(e)?e:`queued`}function ct(e,t){let n=Date.now(),r=typeof e.id==`string`&&e.id?e.id:`task-${t+1}`;return{...e,id:r,label:typeof e.label==`string`&&e.label?e.label:r,status:st(e.status),error:e.error?Ie(e.error):null,createdAt:typeof e.createdAt==`number`?e.createdAt:n}}function lt(e){return!e||e.version!==1||!Array.isArray(e.tasks)?null:{version:1,data:e.data,tasks:e.tasks.map(ct)}}function ut(e){return{...e,tasks:e.tasks.map(e=>e.status===`running`?{...e,status:`queued`,statusText:`Queued after reload`,startedAt:void 0}:e)}}function dt(e,t=Date.now()){return{...e,tasks:e.tasks.map(e=>Xe(e.status)?{...e,status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:t}:e)}}function ft(e){return{...e,error:e.error?Ie(e.error):null,logs:Array.isArray(e.logs)?e.logs:[],events:He(Array.isArray(e.events)?e.events:[]),resultsAvailable:e.resultsAvailable===!0}}function pt(e){return!e||e.version!==1?it():{version:1,savedAt:typeof e.savedAt==`number`?e.savedAt:Date.now(),instances:e.instances||{},histories:e.histories||{},plans:e.plans||{}}}function mt(e,t,n){let r=e,i=t;if(qe(e.status))if(e.cancelRequestedAt){let t=Date.now();i=i&&dt(i,t),r=I({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:t,cancelledAt:t},`status`,`Cancelled`,{status:`cancelled`},t)}else if(n.resumable&&i)i=ut(i),r=I({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`});else{let t=Date.now();r=I({...e,status:`cancelled`,statusText:`Interrupted by page reload`,completedAt:t,cancelledAt:t},`status`,`Interrupted by page reload`,{status:`cancelled`},t)}return{instance:r,plan:i}}function ht(e,t){let n=pt(e),r=new Map(t.map(e=>[e.id,e])),i={},a={},o={},s=it();for(let[e,t]of Object.entries(n.histories)){let n=(Array.isArray(t)?t:[]).map(ft),i=n.filter(e=>r.has(e.actionId)),o=n.filter(e=>!r.has(e.actionId));i.length&&(a[e]=i),o.length&&(s.histories[e]=o)}for(let[e,t]of Object.entries(n.instances)){let c=ft(t),l=lt(n.plans[e]),u=r.get(c.actionId);if(!u){s.instances[e]=et(c),l&&(s.plans[e]=nt(l));continue}let d=mt(c,l,u);i[e]=d.instance,a=We(a,e,d.instance),d.plan&&(o[e]=d.plan)}return{instances:i,histories:a,plans:o,deferred:s}}function gt(e,t){let n=e.tasks.length;if(!n)return;let r=e.tasks.filter(e=>Ze(e.status)).length;return Ke({current:r,total:n,label:t})}function _t(e){return e&&typeof e==`object`&&`taskStatus`in e&&(e.taskStatus===`complete`||e.taskStatus===`skipped`)?{taskStatus:e.taskStatus,result:e.result,statusText:e.statusText}:{taskStatus:`complete`,result:e}}function vt(e,t){for(let n of t.tasks)!n.target||n.target.type!==`Canvas`||(n.status===`running`?e.setStatus(n.target,`pending`):n.status===`queued`&&e.setStatus(n.target,`queued`))}function yt(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i;function o(){return r.getState().plans[a]}function s(){return o()?.tasks||[]}function c(e=[`queued`,`running`]){let t=new Set(e);return s().filter(e=>t.has(st(e.status)))}function l(e,t,n=!1){r.getState().updateActionTask(a,e,t,n)}async function u(e,i={}){let u=c(i.statuses||[`queued`,`running`]),d=s().length,f=u.length,p=i.yieldEveryMs===!1?!1:i.yieldEveryMs??16,m=0;for(let[c,h]of u.entries()){if(t.aborted||bt(m,p)&&(await xt(),m=Date.now(),t.aborted))throw Error(`Background action cancelled.`);let u=s().find(e=>e.id===h.id)||h,g=s().findIndex(e=>e.id===u.id),_=i.progressLabel?.(u,g,d)||u.label||`Task ${g+1}/${d}`;u.target?.type===`Canvas`&&n.setStatus(u.target,`pending`),l(u.id,{status:`running`,statusText:_,error:null,startedAt:Date.now(),completedAt:void 0},!0),r.getState().setActionStatus(a,`running`,_),r.getState().setActionProgress(a,{current:s().filter(e=>Ze(e.status)).length,total:d,label:_});try{let r=await e(u,{index:g,total:d,pendingIndex:c,pendingTotal:f});if(t.aborted)throw Error(`Background action cancelled.`);let i=_t(r);l(u.id,{status:i.taskStatus,statusText:i.statusText||(i.taskStatus===`skipped`?`Skipped`:`Complete`),result:i.result,error:null,completedAt:Date.now()},!0),u.target?.type===`Canvas`&&n.setStatus(u.target,`done`)}catch(e){if(t.aborted||Et(e))throw l(u.id,{status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:Date.now()},!0),e;let n=Fe(e);l(u.id,{status:`error`,statusText:n.message,error:n,completedAt:Date.now()},!0),r.getState().appendActionLog(a,`Task failed: ${u.label}`,`warn`,{taskId:u.id,error:n.message})}finally{let e=o();e&&r.getState().setActionProgress(a,{current:e.tasks.filter(e=>Ze(e.status)).length,total:d,label:_})}}return s()}return{getAll:s,getPending:()=>c(),update:l,runEach:u}}function bt(e,t){return t!==!1&&(!e||Date.now()-e>=t)}function xt(){return new Promise(e=>{setTimeout(e,0)})}function St(e=[]){let t=null,n=null,r=null,i=it();return(0,d.createStore)((a,o)=>{function s(e,t){let n=Ne([],t),r=ht(i,n);return i=r.deferred,{definitions:n,instances:{...e.instances,...r.instances},histories:{...e.histories,...r.histories},plans:{...e.plans,...r.plans},controllers:Object.fromEntries(Object.entries(e.controllers).filter(([t,n])=>n&&e.instances[t]?.status&&qe(e.instances[t].status)))}}async function c(){if(r&&(clearTimeout(r),r=null),!t||!n||!o().hasHydrated)return;let e=at(i,rt(o()));if(ot(e)){await t.clear(n);return}await t.save(n,e)}function l(e=!1){if(!(!t||!n||!o().hasHydrated)){if(e){c();return}r&&clearTimeout(r),r=setTimeout(()=>{c()},300)}}return{definitions:Ne([],e),instances:{},histories:{},plans:{},controllers:{},hasHydrated:!0,setDefinitions(e){a(t=>s(t,e)),l()},setPersistence(e,r){t=e,n=e&&r?r:null,a({hasHydrated:!t})},hydrate(e){let t=ht(pt(e),o().definitions);i=t.deferred,a({instances:t.instances,histories:t.histories,plans:t.plans,controllers:{},hasHydrated:!0}),l(!0)},persist(e=!1){l(e)},flushPersistence:c,registerAction(e){return a(t=>s(t,Ne(t.definitions,[e]))),l(),()=>o().unregisterAction(e.id)},unregisterAction(e){a(t=>{let n={};for(let[r,i]of Object.entries(t.instances))i.actionId!==e&&(n[r]=i);let r={};for(let[n,i]of Object.entries(t.histories)){let t=i.filter(t=>t.actionId!==e);t.length&&(r[n]=t)}let i={...t.plans},a={...t.controllers};for(let[n,r]of Object.entries(t.instances))r.actionId===e&&(a[n]?.abort(),delete a[n],delete i[n]);return{definitions:t.definitions.filter(t=>t.id!==e),instances:n,histories:r,plans:i,controllers:a}}),l(!0)},resetAction(e){a(t=>{t.controllers[e]?.abort();let n={...t.instances},r={...t.histories},i={...t.plans},a={...t.controllers};return delete n[e],delete r[e],delete i[e],delete a[e],{instances:n,histories:r,plans:i,controllers:a}}),l(!0)},startAction(e,t,n,r){let i=Date.now();a(a=>{let o={...a.plans};return delete o[e],{instances:{...a.instances,[e]:{id:e,runId:Be(`run`),actionId:t.id,target:n,label:t.label,status:`preparing`,statusText:`Preparing`,error:null,result:void 0,resultsAvailable:!1,logs:[],events:[Ve(`started`,`Preparing`,{status:`preparing`},i)],progress:void 0,startedAt:i,completedAt:void 0,cancelRequestedAt:void 0,cancelledAt:void 0}},plans:o,controllers:r?{...a.controllers,[e]:r}:a.controllers}}),l(!0)},resumeAction(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`},n)),controllers:{...r.controllers,[e]:t}})),l(!0)},cancelAction(e){let t=o().controllers[e],n=o().instances[e];if(!n||!qe(n.status))return;let r=Date.now();a(t=>{let n=L(t,e,e=>I(I({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:r,cancelledAt:r,cancelRequestedAt:e.cancelRequestedAt||r},`cancel-requested`,`Cancelling`,void 0,r),`status`,`Cancelled`,{status:`cancelled`},r)),i=t.plans[e];return{...n,plans:i?{...t.plans,[e]:dt(i,r)}:t.plans,controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))}}),l(!0),t?.abort()},setActionLabel(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,label:t},`label`,t,{label:t},n))})),l()},setActionStatus(e,t,n){let r=Date.now(),i=Je(t)?r:void 0;a(a=>({...L(a,e,e=>I({...e,status:t,statusText:n,completedAt:i,cancelledAt:t===`cancelled`?r:void 0},`status`,n||t,{status:t},r)),controllers:qe(t)?a.controllers:Object.fromEntries(Object.entries(a.controllers).filter(([t])=>t!==e))})),l(Je(t))},setActionError(e,t,n){let r=Date.now(),i=Fe(t);a(t=>({...L(t,e,e=>I({...e,status:`error`,statusText:n,error:i,completedAt:r,cancelledAt:void 0},`error`,n||i.message,i,r)),controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))})),l(!0)},appendActionLog(e,t,n=`info`,r){let i=Date.now(),o={id:Be(`log`),createdAt:i,level:n,message:t,data:r};a(a=>({...L(a,e,e=>I({...e,logs:[...e.logs,o]},`log`,t,{level:n,data:r},i))})),l()},setActionProgress(e,t){let n=t?Ke(t):void 0;a(t=>({...L(t,e,e=>({...e,progress:n}))}))},setResult(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,result:t},`result`,`Result recorded`,void 0,n))})),l(!0)},setResultsAvailable(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,resultsAvailable:t},`results-available`,t?`Results available`:`Results hidden`,{available:t},n))})),l(!0)},setActionPlan(e,t){let n=lt(t);n&&(a(t=>({...L(t,e,e=>({...e,progress:gt(n,`Queued`)})),plans:{...t.plans,[e]:n}})),l(!0))},updateActionTask(e,t,n,r=!1){a(r=>{let i=r.plans[e];if(!i)return r;let a=i.tasks.map(e=>e.id===t?ct({...e,...n,status:n.status?st(n.status):e.status,error:n.error?Ie(n.error):n.error===null?null:e.error},0):e),o={...i,tasks:a};return{...L(r,e,e=>({...e,progress:gt(o,n.statusText||n.label)})),plans:{...r.plans,[e]:o}}}),l(r)}}})}function Ct(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i,o=yt(e,t,n);return{...i,canvasProgress:n,instance:r.getState().instances[a],plan:r.getState().plans[a],tasks:o,signal:t,prepareData:e.prepareData,setActionLabel(e){r.getState().setActionLabel(a,e)},setActionStatus(e,t){r.getState().setActionStatus(a,e,t)},setActionError(e,t){r.getState().setActionError(a,e,t)},appendActionLog(e,t,n){r.getState().appendActionLog(a,e,t,n)},setActionProgress(e){r.getState().setActionProgress(a,e)},setResult(e){r.getState().setResult(a,e)},setResultsAvailable(e){r.getState().setResultsAvailable(a,e)}}}function wt(e){return!!e&&typeof e==`object`&&e.version===1&&Array.isArray(e.tasks)}async function Tt(e){let{store:t,context:n}=e,{definition:r,instanceKey:i,target:a}=n,o=t.getState().instances[i],s=t.getState().controllers[i];if((o?.status===`preparing`||o?.status===`running`)&&(!e.resume||s))return o;let c=new AbortController,l=c.signal,u=Se(n.canvasProgress),d=()=>c.abort();e.signal&&(e.signal.aborted?c.abort():e.signal.addEventListener(`abort`,d,{once:!0})),e.resume&&o&&qe(o.status)?t.getState().resumeAction(i,c):t.getState().startAction(i,r,a,c);let f=()=>{let e=t.getState().instances[i];e&&!Je(e.status)&&t.getState().setActionStatus(i,`cancelled`,`Cancelled`)};try{if(!e.resume&&r.prepare){let n=await r.prepare(Ct(e,l,u));if(l.aborted)return f(),t.getState().instances[i];if(n===!1)return t.getState().setActionStatus(i,`idle`),t.getState().instances[i];wt(n)&&t.getState().setActionPlan(i,n)}if(l.aborted)return f(),t.getState().instances[i];let n=t.getState().plans[i];n&&vt(u,n),t.getState().setActionStatus(i,`running`,e.resume?`Resuming`:`Running`);let a=await r.run(Ct(e,l,u));if(l.aborted)return f(),t.getState().instances[i];let o=t.getState().instances[i];a!==void 0&&o&&!Je(o.status)&&t.getState().setResult(i,a),o=t.getState().instances[i],o&&qe(o.status)&&((a!==void 0||o?.resultsAvailable)&&t.getState().setResultsAvailable(i,!0),t.getState().setActionStatus(i,`complete`,`Complete`))}catch(e){l.aborted||Et(e)?f():t.getState().setActionError(i,e,`Error`)}finally{u.clearTrackedStatuses(),e.signal?.removeEventListener(`abort`,d),await t.getState().flushPersistence()}return t.getState().instances[i]}function Et(e){return e instanceof Error&&(e.name===`AbortError`||e.message.toLowerCase().includes(`aborted`))}function Dt(e){return JSON.stringify([e.appId,e.instanceId,e.rootResource.type,e.rootResource.id])}let Ot;function kt(){if(typeof window>`u`)return null;let e=f.default.createInstance({name:`manifest-editor-background-actions-v1`,storeName:`background-actions`});return{async load(t){return e.getItem(Dt(t))},async save(t,n){await e.setItem(Dt(t),n)},async clear(t){await e.removeItem(Dt(t))}}}function At(){return Ot===void 0&&(Ot=kt()),Ot}const jt=(0,l.createContext)(null);function Mt({children:e,persistence:t,persistenceKey:n}){let r=z(),i=Wn(),a=(0,l.useMemo)(()=>St(),[]),o=r.layout.backgroundActions||[],s=(0,l.useMemo)(()=>t===!1?null:t||At(),[t]),c=(0,l.useMemo)(()=>n||null,[n]);return(0,l.useEffect)(()=>{a.getState().setDefinitions(o)},[a,o]),(0,l.useEffect)(()=>{let e=c||{appId:i.appId,instanceId:i.instanceId,rootResource:{id:`global`,type:`Manifest`}},t=!1;return a.getState().setPersistence(s,e),s?(s.load(e).then(e=>{t||a.getState().hydrate(e)}).catch(e=>{console.warn(`[manifest-editor/background-actions] Failed to load persisted actions`,e),t||a.getState().hydrate(null)}),()=>{t=!0,a.getState().flushPersistence()}):(a.getState().hydrate(null),()=>void 0)},[i.appId,i.instanceId,s,c?.appId,c?.instanceId,c?.rootResource.id,c?.rootResource.type,a]),(0,l.useEffect)(()=>{let e=()=>{a.getState().flushPersistence()};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[a]),(0,l.createElement)(jt.Provider,{value:a},e)}function Nt(){let e=(0,l.useContext)(jt);if(!e)throw Error(`useBackgroundActionsStore must be used within a BackgroundActionsProvider`);return e}function R(e=e=>e){return(0,d.useStore)(Nt(),e)}function Pt(e){return R(t=>t.instances[e])}function Ft(e){return R(t=>t.histories[e]||[])}async function It(e){let t;try{await fetch(e).then(e=>e.json().catch(e=>{console.error(`'${e}' happened!`)})).then(e=>{t={...e}})}catch(e){console.log(e)}return t}function Lt(e,t,n){return`create_${e}_${t}_${(0,m.toRef)(n)?.type||`unknown`}`}function Rt(e,t,n=`text/json`){let r=e instanceof Blob?e:new Blob([e],{type:n}),i=document.createElement(`a`);i.download=t,i.href=window.URL.createObjectURL(r);let a=new MouseEvent(`click`,{view:window,bubbles:!0,cancelable:!0});i.dispatchEvent(a),i.remove()}async function zt(e){return navigator.clipboard.writeText(typeof e==`string`?e:JSON.stringify(e,null,2))}function Bt(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function Vt(e,t){let{default:n,config:r,...i}=e,a={metadata:n,layout:{leftPanels:[],rightPanels:[],centerPanels:[],...i},config:r};return t?t(a):a}function Ht(e,t,n){return{...e,metadata:t,config:N(e.config||{},n.config||{}),layout:{...e.layout,leftPanels:[...(e.layout.leftPanels||[]).filter(e=>n?.leftPanelIds?n.leftPanelIds.includes(e.id):!0),...n?.leftPanels||[]],annotations:[...n?.annotations||[],...e.layout.annotations||[]],canvasEditors:[...n?.canvasEditors||[],...e.layout.canvasEditors||[]],creators:[...n?.creators||[],...e.layout.creators||[]],background:[...e.layout?.background||[],...n?.background||[]],backgroundActions:Ne(e.layout?.backgroundActions||[],n?.backgroundActions||[]),editors:[...n?.editors||[],...e.layout.editors||[]],rightPanels:[...e.layout.rightPanels||[],...n?.rightPanels||[]],centerPanels:[...e.layout.centerPanels||[],...n?.centerPanels||[]],modals:[...e.layout.modals||[],...n?.modalPanels||[]]}}}const Ut=[`leftPanels`,`centerPanels`,`rightPanels`,`modalPanels`,`annotations`,`canvasEditors`,`editors`,`creators`,`background`,`backgroundActions`],Wt={plugins:[],enabled:[],disabled:[],globalApps:{},apps:{}};function Gt(){return Wt}function Kt(e=[]){return Array.from(new Set(e.filter(Boolean)))}function qt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Jt(e={}){return{...e,enabled:Kt(e.enabled||[]),disabled:Kt(e.disabled||[]),settings:e.settings?{...e.settings}:void 0}}function Yt(e){let t={};for(let[n,r]of Object.entries(e?.apps||{}))t[n]=Jt(r);return t}function Xt(e={},t){return{...e,enabled:Kt([...(e.enabled||[]).filter(e=>e!==t),t]),disabled:(e.disabled||[]).filter(e=>e!==t)}}function Zt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:Kt([...(e.disabled||[]).filter(e=>e!==t),t])}}function Qt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:(e.disabled||[]).filter(e=>e!==t)}}function $t(e={},t={}){let n=e.enabled||[],r=t.enabled||[],i=e.disabled||[],a=t.disabled||[];return n.length===r.length&&n.every((e,t)=>e===r[t])&&i.length===a.length&&i.every((e,t)=>e===a[t])&&JSON.stringify(e.settings||{})===JSON.stringify(t.settings||{})}function en(e,t){let{default:n,config:r,settings:i,...a}=e,o={metadata:n,extension:{...a,config:r},settings:i};return t?t(o):o}function tn(e){return{metadata:e.default,extension:{},settings:e.settings,load:e.load,loadStatus:`idle`}}function nn(e){return!!e&&`metadata`in e&&`extension`in e}function rn(e){return!!e&&`load`in e&&`default`in e}function an(e){return nn(e)?e:rn(e)?tn(e):en(e)}function on(e=[]){return e.map(an)}function sn(e,t){let n=new Map(e.map(e=>[e.metadata.id,e]));return t.map(e=>{let t=n.get(e.metadata.id);return t?t.loadStatus===`loaded`&&e.load?{...t,metadata:e.metadata,load:e.load}:t.loadStatus===`loading`&&e.load?{...e,loadStatus:`loading`}:t.loadStatus===`error`&&e.load?{...e,loadStatus:`error`,loadError:t.loadError}:e:e})}function cn(e,t,n){let r=e.metadata.supports;if(!r)return!0;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return!1}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return!1}return!0}function ln(e,t,n){let r=e.metadata.supports;if(!r)return null;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return`This plugin does not support the current app.`}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return`This plugin does not support the current project type.`}return null}function un(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)?!1:r?.enabled?.includes(a)?!0:i?.disabled?.includes(a)?!1:i?.enabled?.includes(a)?!0:t.disabled.includes(a)?!1:t.enabled.includes(a)?!0:e.metadata.defaultEnabled===!0}function dn(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)||r?.enabled?.includes(a)?`workspace`:i?.disabled?.includes(a)||i?.enabled?.includes(a)?`global`:t.disabled.includes(a)||t.enabled.includes(a)?`provider`:`default`}function fn(e,t,n){let r=[],i=new Set,a=new Set,o=new Set(e.plugins.filter(r=>cn(r,t,n)&&un(r,e,n)).map(e=>e.metadata.id)),s=new Map(e.plugins.map(e=>[e.metadata.id,e])),c=new Set;function l(e){let u=e.metadata.id;if(i.has(u))return!0;if(a.has(u))return!1;if(c.has(u))return xn(`Plugin "${u}" was not enabled because its dependency graph contains a cycle.`),a.add(u),!1;c.add(u);for(let r of e.metadata.dependencies||[]){let e=s.get(r);if(!e||!o.has(r))return xn(`Plugin "${u}" was not enabled because dependency "${r}" is not enabled.`),c.delete(u),a.add(u),!1;if(!cn(e,t,n))return xn(`Plugin "${u}" was not enabled because dependency "${r}" is not compatible.`),c.delete(u),a.add(u),!1;if(!l(e))return c.delete(u),a.add(u),!1}return c.delete(u),r.push(e),i.add(u),!0}for(let r of e.plugins)cn(r,t,n)&&un(r,e,n)&&l(r);return r}function pn(e,t){let n=e?.settings?.[t];return qt(n)?n:{}}function mn(e={},t,n){return{...e,settings:{...e.settings||{},[t]:n}}}function hn(e={},t){let n={...e.settings||{}};return delete n[t],{...e,settings:n}}function gn(e){return{...e?.settings?.defaults||{}}}function _n(e,t,n){let r=e.plugins.find(e=>e.metadata.id===t),i=n?e.globalApps[n]:void 0,a=n?e.apps[n]:void 0;return{...gn(r),...pn(i,t),...pn(a,t)}}function vn(e,t){return{getSettings(n){return _n(e,n,t)}}}function yn(e,t,n,r,i){let a=new Map(t.plugins.map(e=>[e.metadata.id,e])),o=[],s=[],c=new Set,l=e;function u(e){let t=e.metadata.id;if(!o.includes(t)){if(c.has(t)){s.push(`${t} has a circular dependency`);return}c.add(t);for(let t of e.metadata.dependencies||[]){let e=a.get(t);if(!e){s.push(`${t} is not available`);continue}if(!cn(e,r,i)){s.push(`${e.metadata.label} is not compatible`);continue}u(e)}c.delete(t),l=Xt(l,t),o.push(t)}}return u(n),s.length?{config:e,enabledIds:[],blocked:s}:{config:l,enabledIds:o,blocked:s}}function bn(e,t){return t===`modalPanels`?e.layout.modals||[]:e.layout[t]||[]}function xn(e){globalThis.process?.env?.NODE_ENV!==`production`&&console.warn(`[manifest-editor/plugin] ${e}`)}function Sn(e,t,n,r){if(!r?.length)return;let i=[];for(let a of r){if(n.has(a.id)){xn(`Plugin "${e.metadata.id}" contribution "${a.id}" for "${t}" was skipped because that id already exists.`);continue}n.add(a.id),i.push(a)}return i.length?i:void 0}function Cn(e,t){let n=t.extension,r={config:n.config,disableSideEffects:n.disableSideEffects};for(let i of Ut){let a=Sn(t,i,new Set(bn(e,i).map(e=>e.id)),n[i]);a&&(r[i]=a)}return r}function wn(e,t,n){if(!t.length)return e;let r=e,i=new Set;for(let a of t){if(!cn(a,e,n))continue;let t=(a.metadata.dependencies||[]).filter(e=>!i.has(e));if(t.length){xn(`Plugin "${a.metadata.id}" was not applied because dependencies are missing or later in the plugin order: ${t.join(`, `)}`);continue}let o=Cn(r,a);r=Ht(r,r.metadata,o),i.add(a.metadata.id)}let a=new Set(e.layout.leftPanels.map(e=>e.id)),o=r.layout.leftPanels.filter(e=>e.divide),s=r.layout.leftPanels.filter(e=>!e.divide),c=!1,l=s.map(e=>!c&&!a.has(e.id)?(c=!0,{...e,separator:!0}):e);return{...r,config:N(e.config||{},...t.filter(e=>i.has(e.metadata.id)).map(e=>e.extension.config||{}),r.config||{}),layout:{...r.layout,leftPanels:[...l,...o],backgroundActions:Ne([],r.layout.backgroundActions||[])}}}function Tn({plugins:e=[],enabled:t=[],disabled:n=[],globalPluginConfig:r}={}){let i=(e=[])=>Array.from(new Set(e.filter(Boolean)));return(0,d.createStore)(a=>({plugins:e,enabled:i(t),disabled:i(n),globalApps:Yt(r),apps:{},setProviderState(e){a(t=>({...t,plugins:sn(t.plugins,e.plugins||[]),enabled:i(e.enabled||[]),disabled:i(e.disabled||[]),globalApps:Yt(e.globalPluginConfig)}))},setPluginLoading(e){a(t=>({...t,plugins:t.plugins.map(t=>t.metadata.id===e?{...t,loadStatus:`loading`,loadError:void 0}:t)}))},setPluginLoaded(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...t,metadata:{...n.metadata,...t.metadata},settings:t.settings||n.settings,load:n.load,loadStatus:`loaded`,loadError:void 0}:n)}))},setPluginLoadError(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...n,loadStatus:`error`,loadError:t}:n)}))},setAppConfig(e,t){let n=Jt(t);a(t=>$t(t.apps[e],n)?t:{...t,apps:{...t.apps,[e]:n}})},setGlobalConfig(e){a(t=>({...t,globalApps:Yt(e)}))},setGlobalAppConfig(e,t){let n=Jt(t);a(t=>$t(t.globalApps[e],n)?t:{...t,globalApps:{...t.globalApps,[e]:n}})},enable(e,t,n=`workspace`){a(r=>({...r,plugins:r.plugins.map(e=>e.metadata.id===t&&e.loadStatus===`error`?{...e,loadStatus:`idle`,loadError:void 0}:e),...n===`global`?{globalApps:{...r.globalApps,[e]:Xt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Xt(r.apps[e],t)}}}))},disable(e,t,n=`workspace`){a(r=>({...r,...n===`global`?{globalApps:{...r.globalApps,[e]:Zt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Zt(r.apps[e],t)}}}))}}))}const En=(0,l.createContext)(null),Dn=(0,l.createContext)({});function On({plugins:e,enabled:t,disabled:n,globalPluginConfig:r,saveGlobalPluginConfig:i,children:a}){let o=(0,l.useMemo)(()=>on(e),[e]),s=(0,l.useMemo)(()=>Tn({plugins:o,enabled:t,disabled:n,globalPluginConfig:r}),[]);(0,l.useEffect)(()=>{s.getState().setProviderState({plugins:o,enabled:t,disabled:n,globalPluginConfig:r})},[s,o,t,n,r]);let c=(0,l.useMemo)(()=>({globalPluginConfig:r,saveGlobalPluginConfig:i}),[r,i]);return(0,l.createElement)(Dn.Provider,{value:c},(0,l.createElement)(En.Provider,{value:s},a))}function kn(){return(0,l.useContext)(En)}function An(){let e=kn();if(!e)throw Error(`usePluginStoreApi must be used within <PluginProvider />`);return e}function jn(e){let t=kn();return t?(0,d.useStore)(t,e):e(Gt())}function Mn(){return jn(e=>({plugins:e.plugins,enabled:e.enabled,disabled:e.disabled,globalApps:e.globalApps,apps:e.apps}))}function Nn(e){let t=(0,l.useContext)(Hn),n=(0,l.useContext)(Vn),r=Mn(),i=e||t?.appId;return(0,l.useMemo)(()=>fn(r,n,i),[r,n,i])}function Pn(){let e=kn();return(0,l.useMemo)(()=>e?{enable(t,n,r){e.getState().enable(t,n,r||`workspace`)},disable(t,n,r){e.getState().disable(t,n,r||`workspace`)},setAppConfig(t,n){e.getState().setAppConfig(t,n)},setGlobalAppConfig(t,n){e.getState().setGlobalAppConfig(t,n)}}:{enable(){},disable(){},setAppConfig(){},setGlobalAppConfig(){}},[e])}function Fn(e){let t=(0,l.useContext)(Hn),n=Mn(),r=e||t?.appId;return(0,l.useMemo)(()=>vn(n,r),[n,r])}function In(e,t){let n=(0,l.useContext)(Hn),r=Mn(),i=t||n?.appId;return(0,l.useMemo)(()=>_n(r,e,i),[r,e,i])}function Ln(e,t){let n=(0,l.useContext)(Hn),r=kn(),i=Mn(),a=F(),o=se(),{saveGlobalPluginConfig:s}=(0,l.useContext)(Dn),c=t||n?.appId||``,u=i.plugins.find(t=>t.metadata.id===e)||null,d=c?i.globalApps[c]:void 0,f=c?i.apps[c]:void 0,p=(0,l.useMemo)(()=>gn(u||void 0),[u]),m=(0,l.useMemo)(()=>pn(d,e),[d,e]),h=(0,l.useMemo)(()=>pn(f,e),[f,e]),g=(0,l.useMemo)(()=>_n(i,e,c),[i,e,c]),_=(0,l.useCallback)(e=>{c&&(r?.getState().setAppConfig(c,e),o({plugins:{...a.plugins||{},apps:{...a.plugins?.apps||{},[c]:e}}}))},[a.plugins,c,o,r]),v=(0,l.useCallback)(t=>{_(mn(f||{},e,t))},[_,e,f]),y=(0,l.useCallback)(()=>{_(hn(f||{},e))},[_,e,f]),b=(0,l.useCallback)(async e=>{if(!c||!s)return;let t=i.globalApps[c]||{},n={apps:{...i.globalApps,[c]:e}};r?.getState().setGlobalAppConfig(c,e);try{await s(n)}catch(e){throw r?.getState().setGlobalAppConfig(c,t),e}},[c,s,i.globalApps,r]),x=(0,l.useCallback)(async t=>{await b(mn(d||{},e,t))},[d,b,e]),S=(0,l.useCallback)(async()=>{await b(hn(d||{},e))},[d,b,e]);return{plugin:u,appId:c,defaults:p,global:m,workspace:h,effective:g,canSaveGlobal:!!s,setWorkspaceSettings:v,resetWorkspaceSettings:y,setGlobalSettings:x,resetGlobalSettings:S}}function Rn(e,t){let n=Mn(),r=kn(),i=(0,l.useMemo)(()=>fn(n,e,t),[n,e,t]);return(0,l.useEffect)(()=>{if(r)for(let e of i)!e.load||e.loadStatus===`loading`||e.loadStatus===`loaded`||e.loadStatus===`error`||(r.getState().setPluginLoading(e.metadata.id),e.load().then(t=>{r.getState().setPluginLoaded(e.metadata.id,an(t))}).catch(t=>{r.getState().setPluginLoadError(e.metadata.id,zn(t))}))},[r,i]),(0,l.useMemo)(()=>wn(e,i.filter(e=>!e.load||e.loadStatus===`loaded`),t),[e,i,t])}function zn(e){return e instanceof Error?e.message:typeof e==`string`?e:`Plugin failed to load.`}function Bn({config:e}){let t=(0,l.useContext)(Hn),n=kn(),r=t?.appId,i=r?e?.plugins?.apps?.[r]:void 0;return(0,l.useEffect)(()=>{!n||!r||n.getState().setAppConfig(r,i||{})},[n,r,i]),null}const Vn=(0,l.createContext)(null),Hn=(0,l.createContext)(null),Un=(0,l.createContext)({state:null,setState:()=>{}});function Wn(){let e=(0,l.useContext)(Hn);return M(e,`Hook useAppInstance must be used inside <AppProvider />`),e}function z(){let e=(0,l.useContext)(Vn);return M(e,`Hook useApp must be used inside <AppProvider />`),e}function Gn(){return(0,l.useContext)(Un)}function Kn(e){let[t,n,r]=(0,c.useLocalStorage)(`app-state/${e.appId}/${e.instanceId}`,e.initialState||{}),i=(0,l.useCallback)(e=>{let t=r.current?JSON.parse(r.current||`{}`):{},i=(typeof e==`function`?e(t):e)||{};n({...t,...i})},[]);(0,l.useEffect)(()=>{e.args&&i(e.args)},[e.appId]);let a=(0,l.useMemo)(()=>({state:t||{},setState:i}),[i,t]);return(0,u.jsx)(Un.Provider,{value:a,children:e.children})}function qn({instanceId:e,appId:t,args:n,definition:r,children:i,initialState:a}){let o=(0,l.useMemo)(()=>({instanceId:e,appId:t,args:n}),[e,t,n]),s=(0,l.useMemo)(()=>a||{},[e]),c=Rn(r,t);return(0,u.jsx)(ce,{config:c.config||{},children:(0,u.jsx)(Vn.Provider,{value:c,children:(0,u.jsx)(Hn.Provider,{value:o,children:(0,u.jsx)(Kn,{instanceId:o.instanceId,appId:o.appId,args:o.args,initialState:s,children:i})})})})}const Jn=(0,l.createContext)(null);function Yn(){let e=(0,l.useContext)(Jn);return M(e,`Hook useApps must be used inside <MultiAppProvider />`),e}function Xn(e,t=!1){let[n,r]=(0,c.useOptionalLocalStorage)(`SelectedApplication`,e||{id:`splash`},!t);return[n,r]}function Zn({apps:e,initialApp:t,saveCurrentApp:n=!0,instanceId:r,children:i,config:a={}}){let{defaultApp:o=`splash`,collectionApp:s=`collection-editor`,manifestApp:c=`manifest-editor`}=a,[d,f]=Xn(t,n),p=e=>{e===`Manifest`&&f({id:c}),e===`Collection`&&f({id:s})},m=(0,l.useMemo)(()=>({currentApp:d||{id:o},initialApp:t||{id:o},apps:e,changeApp:f,changeProjectType:p}),[t,e,d]),h=e[m.currentApp.id];return!d||!h?null:(0,u.jsx)(qn,{appId:d.id,definition:h,instanceId:d.id+r,args:d.args,children:(0,u.jsx)(Jn.Provider,{value:m,children:i})})}const Qn=h.default.div`
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));let l=require("@manifest-editor/components"),u=require("react");u=c(u,1);let d=require("react/jsx-runtime"),f=require("zustand"),p=require("localforage");p=c(p,1);let m=require("react-iiif-vault"),h=require("@iiif/parser"),g=require("styled-components");g=c(g,1);let _=require("immer"),v=require("@manifest-editor/editor-api"),y=require("@react-stately/toast"),b=require("@iiif/helpers"),x=require("@iiif/helpers/vault");x=c(x,1);let S=require("@manifest-editor/creator-api"),C=require("react-error-boundary"),w=require("@iiif/helpers/vault/actions"),T=require("@iiif/helpers/vault/utility"),E=require("mitt");E=c(E,1);let D=require("tiny-use-debounce"),O=require("react-transition-group"),ee=require("shallowequal");ee=c(ee,1);let k=require("@atlas-viewer/iiif-image-api"),A=require("@manifest-editor/client-vault");var j=process.env.NODE_ENV===`production`,M=`Invariant failed`;function N(e,t){if(!e){if(j)throw Error(M);var n=typeof t==`function`?t():t,r=n?`${M}: ${n}`:M;throw Error(r)}}const P={previews:[],behaviorPresets:[`auto-advance`,`no-auto-advance`,`repeat`,`no-repeat`,`unordered`,`individuals`,`continuous`,`paged`,`non-paged`,`facing-pages`,`multi-part`,`together`,`sequence`,`thumbnail-nav`,`no-nav`,`hidden`],defaultPreview:null,editorConfig:{},newTemplates:null,i18n:{advancedLanguageMode:!1,availableLanguages:[`en`,`cy`,`nl`,`fr`],defaultLanguage:`en`},editorFeatureFlags:{enableMultiImageCanvases:!0,enableMultiMediaCanvases:!0,annotationPopups:!1,rememberCanvasId:!0,manifestGridOptions:!1,rememberLeftPanelId:!1},uploadBackends:[],plugins:{apps:{}},export:{baseIdentifier:null,version:3},creators:{}};function F(e,t){if(!e&&!t)return;let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{}};return n}function te(e,t){if(!e&&!t)return;let n={...e?.apps||{}};for(let[e,r]of Object.entries(t?.apps||{})){let t=n[e]||{};n[e]={...t,...r,settings:{...t.settings||{},...r.settings||{}}}}return{apps:n}}function ne(e,t){if(!e&&!t)return;let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{}};return n}function I(...e){let t={};for(let n of e)n&&(t={...t,...n,editorConfig:F(t.editorConfig,n.editorConfig),editorFeatureFlags:t.editorFeatureFlags||n.editorFeatureFlags?{...t.editorFeatureFlags||{},...n.editorFeatureFlags||{}}:void 0,i18n:t.i18n||n.i18n?{...t.i18n||{},...n.i18n||{}}:void 0,export:t.export||n.export?{...t.export||{},...n.export||{}}:void 0,creators:ne(t.creators,n.creators),plugins:te(t.plugins,n.plugins)});return t}function re(...e){return I(P,...e)}const L=(0,u.createContext)(P),R=(0,u.createContext)(()=>{});function z(){return(0,u.useContext)(L)}function ie(){return(0,u.useContext)(R)}function ae({children:e,config:t,saveConfig:n}){let[r,i]=(0,u.useState)(null),a=(0,u.useMemo)(()=>re(t,r),[t,r]),o=(0,u.useCallback)(e=>{i(t=>I(t,e)),n&&n(e)},[n]);return(0,d.jsx)(R.Provider,{value:o,children:(0,d.jsx)(L.Provider,{value:a,children:e})})}const oe=`@manifest-editor/canvas-progress`,se=`status`,ce=new Set([`queued`,`pending`,`done`]);function le(e){return typeof e==`string`?e:e?.id||null}function ue(e){return typeof e==`string`&&ce.has(e)?e:`none`}function de(e){return typeof e==`string`&&ce.has(e)}function fe(e,t){let n=le(t);return n?ue(e.getResourceMeta(n,oe)?.[se]):`none`}function pe(e,t){let n=le(t);return n?ue(e?.iiif?.meta?.[n]?.[oe]?.[se]):`none`}function me(e,t,n){let r=le(t);if(!r)return`none`;let i=de(n)?n:void 0;return e.setMetaValue([r,oe,se],i),i||`none`}function he(e,t){return me(e,t,`none`)}function ge(e,t,n){let r={};for(let i of t){let t=le(i);t&&(r[t]=me(e,i,n))}return r}function _e(e,t){return ge(e,t,`none`)}function ve(e){return{getStatus(t){return fe(e,t)},setStatus(t,n){return me(e,t,n)},clearStatus(t){return he(e,t)},setStatuses(t,n){return ge(e,t,n)},clearStatuses(t){return _e(e,t)}}}function ye(e,t=new Set){function n(e){let n=le(e);n&&t.add(n)}function r(e){for(let t of e)n(t)}return{trackedResourceIds:t,getStatus(t){return e.getStatus(t)},setStatus(t,r){return n(t),e.setStatus(t,r)},clearStatus(t){return n(t),e.clearStatus(t)},setStatuses(t,n){return r(t),e.setStatuses(t,n)},clearStatuses(t){return r(t),e.clearStatuses(t)},clearTrackedStatuses(){e.clearStatuses(Array.from(t).map(e=>({id:e,type:`Canvas`}))),t.clear()}}}function be(e){let t=le(e);return(0,m.useVaultSelector)(e=>t?pe(e,t):`none`,[t])}function xe(e){let t=(0,m.useVault)(),n=le(e),r=(0,u.useMemo)(()=>ve(t),[t]);return(0,u.useMemo)(()=>({setStatus(e){return r.setStatus(n,e)},clearStatus(){return r.clearStatus(n)},getStatus(){return r.getStatus(n)}}),[r,n])}const Se={queued:{label:`Queued`,stripClass:`bg-zinc-400/80`,badgeClass:`bg-zinc-500`,dimOverlay:!0},pending:{label:`In progress`,stripClass:`bg-amber-400/90 animate-pulse`,badgeClass:`bg-amber-500`},done:{label:`Done`,stripClass:`bg-me-primary-500`,badgeClass:`bg-me-primary-500`}};function Ce({className:e}){return(0,d.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,d.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,d.jsx)(`path`,{d:`M12 7v5l2.5 2.5`})]})}function we({className:e}){return(0,d.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,children:[(0,d.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeOpacity:`0.3`}),(0,d.jsx)(`path`,{d:`M12 3a9 9 0 0 1 9 9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`})]})}function Te({className:e}){return(0,d.jsx)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,d.jsx)(`path`,{d:`M5 12l4 4 8-8`})})}function Ee({resource:e,status:t,className:n}){return t?(0,d.jsx)(Oe,{status:t,className:n}):(0,d.jsx)(De,{resource:e,className:n})}function De({resource:e,className:t}){let n=be(e);return(0,d.jsx)(Oe,{status:n,className:t})}function Oe({status:e,className:t}){if(e===`none`)return null;let n=Se[e];return(0,d.jsxs)(d.Fragment,{children:[n.dimOverlay&&(0,d.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0 z-10 bg-white/40`}),(0,d.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-x-0 top-0 z-10 h-[3px] rounded-t-sm ${n.stripClass} ${t||``}`}),(0,d.jsxs)(`div`,{className:`pointer-events-none absolute right-1.5 top-1.5 z-10 flex h-[18px] w-[18px] items-center justify-center rounded-full ${n.badgeClass} shadow-md ring-2 ring-white/70`,title:n.label,children:[(0,d.jsx)(`span`,{className:`sr-only`,children:n.label}),e===`queued`&&(0,d.jsx)(Ce,{className:`h-2.5 w-2.5 text-white`}),e===`pending`&&(0,d.jsx)(we,{className:`h-2.5 w-2.5 animate-spin text-white`}),e===`done`&&(0,d.jsx)(Te,{className:`h-2.5 w-2.5 text-white`})]})]})}function ke(e,t){return`${e}::${t.type}::${t.id}`}function Ae(e=[],t=[]){let n=[],r=new Set;for(let e=t.length-1;e>=0;--e){let i=t[e];i&&!r.has(i.id)&&(r.add(i.id),n.unshift(i))}return[...e.filter(e=>!r.has(e.id)),...n]}function je(e){return[...e].sort((e,t)=>{let n=(e.section||``).localeCompare(t.section||``);if(n!==0)return n;let r=(e.order||0)-(t.order||0);if(r!==0)return r;let i=e.label.localeCompare(t.label);return i===0?e.id.localeCompare(t.id):i})}function Me(e){return e instanceof Error?{message:e.message,stack:e.stack,detail:e}:{message:typeof e==`string`?e:`Background action failed`,detail:e}}function Ne(e){return e&&typeof e==`object`&&typeof e.message==`string`?{message:e.message,stack:typeof e.stack==`string`?e.stack:void 0,detail:e.detail}:Me(e)}function Pe(e,t){return!e.resourceTypes?.length||e.resourceTypes.includes(t.type)}function Fe({definitions:e,instances:t,systemContext:n,targets:r,onSupportsError:i}){let a=je(e),o=[];for(let e of r){let r=[];for(let o of a){if(!Pe(o,e))continue;let a=ke(o.id,e),s={...n,definition:o,target:e,instanceKey:a,instance:t[a]};try{if(o.supports&&!o.supports(s))continue}catch(e){i?.(o,e);continue}r.push({definition:o,target:e,instanceKey:a,instance:t[a],context:s})}r.length&&o.push({id:`${e.scope}:${e.type}:${e.id}`,label:e.label,target:e,actions:r})}return o}let Ie=0;function Le(e){return Ie+=1,`${e}-${Date.now()}-${Ie}`}function Re(e,t,n,r=Date.now()){return{id:Le(`event`),createdAt:r,type:e,message:t,data:n}}function B(e,t,n,r,i=Date.now()){return{...e,events:[...e.events,Re(t,n,r,i)]}}function ze(e){return e.filter(e=>String(e.type)!==`progress`)}function Be(e){return{...e,logs:[...e.logs],events:ze(e.events),progress:e.progress?{...e.progress}:void 0}}function Ve(e,t,n){if(!Ge(n.status))return e;let r=e[t]||[],i=Be(n),a=r.findIndex(e=>e.runId===n.runId),o=a>=0?r.map((e,t)=>t===a?i:e):[...r,i];return{...e,[t]:o}}function V(e,t,n){let r=e.instances[t];if(!r)return{instances:e.instances,histories:e.histories};let i=n(r);return{instances:{...e.instances,[t]:i},histories:Ve(e.histories,t,i)}}function He(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function Ue(e){let t=e,n=typeof t.current==`number`&&Number.isFinite(t.current)?t.current:void 0,r=typeof t.total==`number`&&Number.isFinite(t.total)?t.total:void 0;return{percent:He(typeof t.percent==`number`&&Number.isFinite(t.percent)?t.percent:typeof n==`number`&&typeof r==`number`&&r>0?n/r*100:0),current:n,total:r,label:t.label}}function We(e){return e===`preparing`||e===`running`}function Ge(e){return e===`complete`||e===`error`||e===`cancelled`}function Ke(e){return e===`queued`||e===`running`||e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function qe(e){return!e||e===`queued`||e===`running`}function Je(e){return e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function Ye(e){if(e!==void 0)try{return JSON.parse(JSON.stringify(e))}catch{return}}function Xe(e){return e&&{message:e.message,stack:e.stack,detail:Ye(e.detail)}}function Ze(e){return{...e,error:Xe(e.error)||null,result:Ye(e.result),logs:e.logs.map(e=>({...e,data:Ye(e.data)})),events:ze(e.events).map(e=>({...e,data:Ye(e.data)})),progress:e.progress?{...e.progress}:void 0}}function Qe(e){return{...e,status:it(e.status),input:Ye(e.input),result:Ye(e.result),error:Xe(e.error)||null}}function $e(e){return{version:1,data:Ye(e.data),tasks:e.tasks.map(Qe)}}function et(e){return{version:1,savedAt:Date.now(),instances:Object.fromEntries(Object.entries(e.instances).map(([e,t])=>[e,Ze(t)])),histories:Object.fromEntries(Object.entries(e.histories).map(([e,t])=>[e,t.map(Ze)])),plans:Object.fromEntries(Object.entries(e.plans).map(([e,t])=>[e,$e(t)]))}}function tt(){return{version:1,savedAt:Date.now(),instances:{},histories:{},plans:{}}}function nt(e,t){return{version:1,savedAt:t.savedAt,instances:{...e.instances,...t.instances},histories:{...e.histories,...t.histories},plans:{...e.plans,...t.plans}}}function rt(e){return!Object.keys(e.instances).length&&!Object.keys(e.histories).length&&!Object.keys(e.plans).length}function it(e){return Ke(e)?e:`queued`}function at(e,t){let n=Date.now(),r=typeof e.id==`string`&&e.id?e.id:`task-${t+1}`;return{...e,id:r,label:typeof e.label==`string`&&e.label?e.label:r,status:it(e.status),error:e.error?Ne(e.error):null,createdAt:typeof e.createdAt==`number`?e.createdAt:n}}function ot(e){return!e||e.version!==1||!Array.isArray(e.tasks)?null:{version:1,data:e.data,tasks:e.tasks.map(at)}}function st(e){return{...e,tasks:e.tasks.map(e=>e.status===`running`?{...e,status:`queued`,statusText:`Queued after reload`,startedAt:void 0}:e)}}function ct(e,t=Date.now()){return{...e,tasks:e.tasks.map(e=>qe(e.status)?{...e,status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:t}:e)}}function lt(e){return{...e,error:e.error?Ne(e.error):null,logs:Array.isArray(e.logs)?e.logs:[],events:ze(Array.isArray(e.events)?e.events:[]),resultsAvailable:e.resultsAvailable===!0}}function ut(e){return!e||e.version!==1?tt():{version:1,savedAt:typeof e.savedAt==`number`?e.savedAt:Date.now(),instances:e.instances||{},histories:e.histories||{},plans:e.plans||{}}}function dt(e,t,n){let r=e,i=t;if(We(e.status)){if(e.cancelRequestedAt){let t=Date.now();i=i&&ct(i,t),r=B({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:t,cancelledAt:t},`status`,`Cancelled`,{status:`cancelled`},t)}else if(n.resumable&&i)i=st(i),r=B({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`});else{let t=Date.now();r=B({...e,status:`cancelled`,statusText:`Interrupted by page reload`,completedAt:t,cancelledAt:t},`status`,`Interrupted by page reload`,{status:`cancelled`},t)}}return{instance:r,plan:i}}function ft(e,t){let n=ut(e),r=new Map(t.map(e=>[e.id,e])),i={},a={},o={},s=tt();for(let[e,t]of Object.entries(n.histories)){let n=(Array.isArray(t)?t:[]).map(lt),i=n.filter(e=>r.has(e.actionId)),o=n.filter(e=>!r.has(e.actionId));i.length&&(a[e]=i),o.length&&(s.histories[e]=o)}for(let[e,t]of Object.entries(n.instances)){let c=lt(t),l=ot(n.plans[e]),u=r.get(c.actionId);if(!u){s.instances[e]=Ze(c),l&&(s.plans[e]=$e(l));continue}let d=dt(c,l,u);i[e]=d.instance,a=Ve(a,e,d.instance),d.plan&&(o[e]=d.plan)}return{instances:i,histories:a,plans:o,deferred:s}}function pt(e,t){let n=e.tasks.length;if(!n)return;let r=e.tasks.filter(e=>Je(e.status)).length;return Ue({current:r,total:n,label:t})}function mt(e){return e&&typeof e==`object`&&`taskStatus`in e&&(e.taskStatus===`complete`||e.taskStatus===`skipped`)?{taskStatus:e.taskStatus,result:e.result,statusText:e.statusText}:{taskStatus:`complete`,result:e}}function ht(e,t){for(let n of t.tasks)!n.target||n.target.type!==`Canvas`||(n.status===`running`?e.setStatus(n.target,`pending`):n.status===`queued`&&e.setStatus(n.target,`queued`))}function gt(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i;function o(){return r.getState().plans[a]}function s(){return o()?.tasks||[]}function c(e=[`queued`,`running`]){let t=new Set(e);return s().filter(e=>t.has(it(e.status)))}function l(e,t,n=!1){r.getState().updateActionTask(a,e,t,n)}async function u(e,i={}){let u=c(i.statuses||[`queued`,`running`]),d=s().length,f=u.length,p=i.yieldEveryMs===!1?!1:i.yieldEveryMs??16,m=0;for(let[c,h]of u.entries()){if(t.aborted||_t(m,p)&&(await vt(),m=Date.now(),t.aborted))throw Error(`Background action cancelled.`);let u=s().find(e=>e.id===h.id)||h,g=s().findIndex(e=>e.id===u.id),_=i.progressLabel?.(u,g,d)||u.label||`Task ${g+1}/${d}`;u.target?.type===`Canvas`&&n.setStatus(u.target,`pending`),l(u.id,{status:`running`,statusText:_,error:null,startedAt:Date.now(),completedAt:void 0},!0),r.getState().setActionStatus(a,`running`,_),r.getState().setActionProgress(a,{current:s().filter(e=>Je(e.status)).length,total:d,label:_});try{let r=await e(u,{index:g,total:d,pendingIndex:c,pendingTotal:f});if(t.aborted)throw Error(`Background action cancelled.`);let i=mt(r);l(u.id,{status:i.taskStatus,statusText:i.statusText||(i.taskStatus===`skipped`?`Skipped`:`Complete`),result:i.result,error:null,completedAt:Date.now()},!0),u.target?.type===`Canvas`&&n.setStatus(u.target,`done`)}catch(e){if(t.aborted||Ct(e))throw l(u.id,{status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:Date.now()},!0),e;let n=Me(e);l(u.id,{status:`error`,statusText:n.message,error:n,completedAt:Date.now()},!0),r.getState().appendActionLog(a,`Task failed: ${u.label}`,`warn`,{taskId:u.id,error:n.message})}finally{let e=o();e&&r.getState().setActionProgress(a,{current:e.tasks.filter(e=>Je(e.status)).length,total:d,label:_})}}return s()}return{getAll:s,getPending:()=>c(),update:l,runEach:u}}function _t(e,t){return t!==!1&&(!e||Date.now()-e>=t)}function vt(){return new Promise(e=>{setTimeout(e,0)})}function yt(e=[]){let t=null,n=null,r=null,i=tt();return(0,f.createStore)((a,o)=>{function s(e,t){let n=Ae([],t),r=ft(i,n);return i=r.deferred,{definitions:n,instances:{...e.instances,...r.instances},histories:{...e.histories,...r.histories},plans:{...e.plans,...r.plans},controllers:Object.fromEntries(Object.entries(e.controllers).filter(([t,n])=>n&&e.instances[t]?.status&&We(e.instances[t].status)))}}async function c(){if(r&&(clearTimeout(r),r=null),!t||!n||!o().hasHydrated)return;let e=nt(i,et(o()));if(rt(e)){await t.clear(n);return}await t.save(n,e)}function l(e=!1){if(!(!t||!n||!o().hasHydrated)){if(e){c();return}r&&clearTimeout(r),r=setTimeout(()=>{c()},300)}}return{definitions:Ae([],e),instances:{},histories:{},plans:{},controllers:{},hasHydrated:!0,setDefinitions(e){a(t=>s(t,e)),l()},setPersistence(e,r){t=e,n=e&&r?r:null,a({hasHydrated:!t})},hydrate(e){let t=ft(ut(e),o().definitions);i=t.deferred,a({instances:t.instances,histories:t.histories,plans:t.plans,controllers:{},hasHydrated:!0}),l(!0)},persist(e=!1){l(e)},flushPersistence:c,registerAction(e){return a(t=>s(t,Ae(t.definitions,[e]))),l(),()=>o().unregisterAction(e.id)},unregisterAction(e){a(t=>{let n={};for(let[r,i]of Object.entries(t.instances))i.actionId!==e&&(n[r]=i);let r={};for(let[n,i]of Object.entries(t.histories)){let t=i.filter(t=>t.actionId!==e);t.length&&(r[n]=t)}let i={...t.plans},a={...t.controllers};for(let[n,r]of Object.entries(t.instances))r.actionId===e&&(a[n]?.abort(),delete a[n],delete i[n]);return{definitions:t.definitions.filter(t=>t.id!==e),instances:n,histories:r,plans:i,controllers:a}}),l(!0)},resetAction(e){a(t=>{t.controllers[e]?.abort();let n={...t.instances},r={...t.histories},i={...t.plans},a={...t.controllers};return delete n[e],delete r[e],delete i[e],delete a[e],{instances:n,histories:r,plans:i,controllers:a}}),l(!0)},startAction(e,t,n,r){let i=Date.now();a(a=>{let o={...a.plans};return delete o[e],{instances:{...a.instances,[e]:{id:e,runId:Le(`run`),actionId:t.id,target:n,label:t.label,status:`preparing`,statusText:`Preparing`,error:null,result:void 0,resultsAvailable:!1,logs:[],events:[Re(`started`,`Preparing`,{status:`preparing`},i)],progress:void 0,startedAt:i,completedAt:void 0,cancelRequestedAt:void 0,cancelledAt:void 0}},plans:o,controllers:r?{...a.controllers,[e]:r}:a.controllers}}),l(!0)},resumeAction(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`},n)),controllers:{...r.controllers,[e]:t}})),l(!0)},cancelAction(e){let t=o().controllers[e],n=o().instances[e];if(!n||!We(n.status))return;let r=Date.now();a(t=>{let n=V(t,e,e=>B(B({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:r,cancelledAt:r,cancelRequestedAt:e.cancelRequestedAt||r},`cancel-requested`,`Cancelling`,void 0,r),`status`,`Cancelled`,{status:`cancelled`},r)),i=t.plans[e];return{...n,plans:i?{...t.plans,[e]:ct(i,r)}:t.plans,controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))}}),l(!0),t?.abort()},setActionLabel(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,label:t},`label`,t,{label:t},n))})),l()},setActionStatus(e,t,n){let r=Date.now(),i=Ge(t)?r:void 0;a(a=>({...V(a,e,e=>B({...e,status:t,statusText:n,completedAt:i,cancelledAt:t===`cancelled`?r:void 0},`status`,n||t,{status:t},r)),controllers:We(t)?a.controllers:Object.fromEntries(Object.entries(a.controllers).filter(([t])=>t!==e))})),l(Ge(t))},setActionError(e,t,n){let r=Date.now(),i=Me(t);a(t=>({...V(t,e,e=>B({...e,status:`error`,statusText:n,error:i,completedAt:r,cancelledAt:void 0},`error`,n||i.message,i,r)),controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))})),l(!0)},appendActionLog(e,t,n=`info`,r){let i=Date.now(),o={id:Le(`log`),createdAt:i,level:n,message:t,data:r};a(a=>({...V(a,e,e=>B({...e,logs:[...e.logs,o]},`log`,t,{level:n,data:r},i))})),l()},setActionProgress(e,t){let n=t?Ue(t):void 0;a(t=>({...V(t,e,e=>({...e,progress:n}))}))},setResult(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,result:t},`result`,`Result recorded`,void 0,n))})),l(!0)},setResultsAvailable(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,resultsAvailable:t},`results-available`,t?`Results available`:`Results hidden`,{available:t},n))})),l(!0)},setActionPlan(e,t){let n=ot(t);n&&(a(t=>({...V(t,e,e=>({...e,progress:pt(n,`Queued`)})),plans:{...t.plans,[e]:n}})),l(!0))},updateActionTask(e,t,n,r=!1){a(r=>{let i=r.plans[e];if(!i)return r;let a=i.tasks.map(e=>e.id===t?at({...e,...n,status:n.status?it(n.status):e.status,error:n.error?Ne(n.error):n.error===null?null:e.error},0):e),o={...i,tasks:a};return{...V(r,e,e=>({...e,progress:pt(o,n.statusText||n.label)})),plans:{...r.plans,[e]:o}}}),l(r)}}})}function bt(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i,o=gt(e,t,n);return{...i,canvasProgress:n,instance:r.getState().instances[a],plan:r.getState().plans[a],tasks:o,signal:t,prepareData:e.prepareData,setActionLabel(e){r.getState().setActionLabel(a,e)},setActionStatus(e,t){r.getState().setActionStatus(a,e,t)},setActionError(e,t){r.getState().setActionError(a,e,t)},appendActionLog(e,t,n){r.getState().appendActionLog(a,e,t,n)},setActionProgress(e){r.getState().setActionProgress(a,e)},setResult(e){r.getState().setResult(a,e)},setResultsAvailable(e){r.getState().setResultsAvailable(a,e)}}}function xt(e){return!!e&&typeof e==`object`&&e.version===1&&Array.isArray(e.tasks)}async function St(e){let{store:t,context:n}=e,{definition:r,instanceKey:i,target:a}=n,o=t.getState().instances[i],s=t.getState().controllers[i];if((o?.status===`preparing`||o?.status===`running`)&&(!e.resume||s))return o;let c=new AbortController,l=c.signal,u=ye(n.canvasProgress),d=()=>c.abort();e.signal&&(e.signal.aborted?c.abort():e.signal.addEventListener(`abort`,d,{once:!0})),e.resume&&o&&We(o.status)?t.getState().resumeAction(i,c):t.getState().startAction(i,r,a,c);let f=()=>{let e=t.getState().instances[i];e&&!Ge(e.status)&&t.getState().setActionStatus(i,`cancelled`,`Cancelled`)};try{if(!e.resume&&r.prepare){let n=await r.prepare(bt(e,l,u));if(l.aborted)return f(),t.getState().instances[i];if(n===!1)return t.getState().setActionStatus(i,`idle`),t.getState().instances[i];xt(n)&&t.getState().setActionPlan(i,n)}if(l.aborted)return f(),t.getState().instances[i];let n=t.getState().plans[i];n&&ht(u,n),t.getState().setActionStatus(i,`running`,e.resume?`Resuming`:`Running`);let a=await r.run(bt(e,l,u));if(l.aborted)return f(),t.getState().instances[i];let o=t.getState().instances[i];a!==void 0&&o&&!Ge(o.status)&&t.getState().setResult(i,a),o=t.getState().instances[i],o&&We(o.status)&&((a!==void 0||o?.resultsAvailable)&&t.getState().setResultsAvailable(i,!0),t.getState().setActionStatus(i,`complete`,`Complete`))}catch(e){l.aborted||Ct(e)?f():t.getState().setActionError(i,e,`Error`)}finally{u.clearTrackedStatuses(),e.signal?.removeEventListener(`abort`,d),await t.getState().flushPersistence()}return t.getState().instances[i]}function Ct(e){return e instanceof Error&&(e.name===`AbortError`||e.message.toLowerCase().includes(`aborted`))}function wt(e){return JSON.stringify([e.appId,e.instanceId,e.rootResource.type,e.rootResource.id])}let Tt;function Et(){if(typeof window>`u`)return null;let e=p.default.createInstance({name:`manifest-editor-background-actions-v1`,storeName:`background-actions`});return{async load(t){return e.getItem(wt(t))},async save(t,n){await e.setItem(wt(t),n)},async clear(t){await e.removeItem(wt(t))}}}function Dt(){return Tt===void 0&&(Tt=Et()),Tt}const Ot=(0,u.createContext)(null);function kt({children:e,persistence:t,persistenceKey:n}){let r=U(),i=Hn(),a=(0,u.useMemo)(()=>yt(),[]),o=r.layout.backgroundActions||[],s=(0,u.useMemo)(()=>t===!1?null:t||Dt(),[t]),c=(0,u.useMemo)(()=>n||null,[n]);return(0,u.useEffect)(()=>{a.getState().setDefinitions(o)},[a,o]),(0,u.useEffect)(()=>{let e=c||{appId:i.appId,instanceId:i.instanceId,rootResource:{id:`global`,type:`Manifest`}},t=!1;return a.getState().setPersistence(s,e),s?(s.load(e).then(e=>{t||a.getState().hydrate(e)}).catch(e=>{console.warn(`[manifest-editor/background-actions] Failed to load persisted actions`,e),t||a.getState().hydrate(null)}),()=>{t=!0,a.getState().flushPersistence()}):(a.getState().hydrate(null),()=>void 0)},[i.appId,i.instanceId,s,c?.appId,c?.instanceId,c?.rootResource.id,c?.rootResource.type,a]),(0,u.useEffect)(()=>{let e=()=>{a.getState().flushPersistence()};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[a]),(0,u.createElement)(Ot.Provider,{value:a},e)}function At(){let e=(0,u.useContext)(Ot);if(!e)throw Error(`useBackgroundActionsStore must be used within a BackgroundActionsProvider`);return e}function H(e=e=>e){return(0,f.useStore)(At(),e)}function jt(e){return H(t=>t.instances[e])}function Mt(e){return H(t=>t.histories[e]||[])}async function Nt(e){let t;try{await fetch(e).then(e=>e.json().catch(e=>{console.error(`'${e}' happened!`)})).then(e=>{t={...e}})}catch(e){console.log(e)}return t}function Pt(e,t,n){return`create_${e}_${t}_${(0,h.toRef)(n)?.type||`unknown`}`}function Ft(e,t,n=`text/json`){let r=e instanceof Blob?e:new Blob([e],{type:n}),i=document.createElement(`a`);i.download=t,i.href=window.URL.createObjectURL(r);let a=new MouseEvent(`click`,{view:window,bubbles:!0,cancelable:!0});i.dispatchEvent(a),i.remove()}async function It(e){return navigator.clipboard.writeText(typeof e==`string`?e:JSON.stringify(e,null,2))}function Lt(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function Rt(e,t){let{default:n,config:r,preset:i,...a}=e,o={metadata:n,layout:{leftPanels:[],rightPanels:[],centerPanels:[],...a},config:r,preset:i},s=t?t(o):o;return{...s,preset:zt(void 0,s.preset)}}function zt(e,t){if(!e&&!t)return;let n=e?.templateFilter&&t?.templateFilter?n=>e.templateFilter(n)&&t.templateFilter(n):t?.templateFilter||e?.templateFilter,r=t?.templateStrategy===`replace`?t.templates||[]:[...e?.templates||[],...t?.templates||[]],i=e?.preview||t?.preview?{...e?.preview||{},...t?.preview||{},actions:[...e?.preview?.actions||[],...t?.preview?.actions||[]]}:void 0;return{...e||{},...t||{},templateFilter:n,templates:n?r.filter(n):r,preview:i}}function Bt(e,t,n){return{...e,metadata:t,config:I(e.config||{},n.config||{}),preset:zt(e.preset,n.preset),layout:{...e.layout,leftPanels:[...(e.layout.leftPanels||[]).filter(e=>!n?.leftPanelIds||n.leftPanelIds.includes(e.id)),...n?.leftPanels||[]],annotations:[...n?.annotations||[],...e.layout.annotations||[]],canvasEditors:[...n?.canvasEditors||[],...e.layout.canvasEditors||[]],creators:[...n?.creators||[],...e.layout.creators||[]],background:[...e.layout?.background||[],...n?.background||[]],backgroundActions:Ae(e.layout?.backgroundActions||[],n?.backgroundActions||[]),editors:[...n?.editors||[],...e.layout.editors||[]],rightPanels:[...e.layout.rightPanels||[],...n?.rightPanels||[]],centerPanels:[...e.layout.centerPanels||[],...n?.centerPanels||[]],modals:[...e.layout.modals||[],...n?.modalPanels||[]]}}}const Vt=[`leftPanels`,`centerPanels`,`rightPanels`,`modalPanels`,`annotations`,`canvasEditors`,`editors`,`creators`,`background`,`backgroundActions`],Ht={plugins:[],enabled:[],disabled:[],globalApps:{},apps:{}};function Ut(){return Ht}function Wt(e=[]){return Array.from(new Set(e.filter(Boolean)))}function Gt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Kt(e={}){return{...e,enabled:Wt(e.enabled||[]),disabled:Wt(e.disabled||[]),settings:e.settings?{...e.settings}:void 0}}function qt(e){let t={};for(let[n,r]of Object.entries(e?.apps||{}))t[n]=Kt(r);return t}function Jt(e={},t){return{...e,enabled:Wt([...(e.enabled||[]).filter(e=>e!==t),t]),disabled:(e.disabled||[]).filter(e=>e!==t)}}function Yt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:Wt([...(e.disabled||[]).filter(e=>e!==t),t])}}function Xt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:(e.disabled||[]).filter(e=>e!==t)}}function Zt(e={},t={}){let n=e.enabled||[],r=t.enabled||[],i=e.disabled||[],a=t.disabled||[];return n.length===r.length&&n.every((e,t)=>e===r[t])&&i.length===a.length&&i.every((e,t)=>e===a[t])&&JSON.stringify(e.settings||{})===JSON.stringify(t.settings||{})}function Qt(e,t){let{default:n,config:r,settings:i,...a}=e,o={metadata:n,extension:{...a,config:r},settings:i};return t?t(o):o}function $t(e){return{metadata:e.default,extension:{},settings:e.settings,load:e.load,loadStatus:`idle`}}function en(e){return!!e&&`metadata`in e&&`extension`in e}function tn(e){return!!e&&`load`in e&&`default`in e}function nn(e){return en(e)?e:tn(e)?$t(e):Qt(e)}function rn(e=[]){return e.map(nn)}function an(e,t){let n=new Map(e.map(e=>[e.metadata.id,e]));return t.map(e=>{let t=n.get(e.metadata.id);return t?t.loadStatus===`loaded`&&e.load?{...t,metadata:e.metadata,load:e.load}:t.loadStatus===`loading`&&e.load?{...e,loadStatus:`loading`}:t.loadStatus===`error`&&e.load?{...e,loadStatus:`error`,loadError:t.loadError}:e:e})}function on(e,t,n){let r=e.metadata.supports;if(!r)return!0;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return!1}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return!1}return!0}function sn(e,t,n){let r=e.metadata.supports;if(!r)return null;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return`This plugin does not support the current app.`}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return`This plugin does not support the current project type.`}return null}function cn(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)?!1:r?.enabled?.includes(a)?!0:i?.disabled?.includes(a)?!1:i?.enabled?.includes(a)?!0:t.disabled.includes(a)?!1:t.enabled.includes(a)?!0:e.metadata.defaultEnabled===!0}function ln(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)||r?.enabled?.includes(a)?`workspace`:i?.disabled?.includes(a)||i?.enabled?.includes(a)?`global`:t.disabled.includes(a)||t.enabled.includes(a)?`provider`:`default`}function un(e,t,n){let r=[],i=new Set,a=new Set,o=new Set(e.plugins.filter(r=>on(r,t,n)&&cn(r,e,n)).map(e=>e.metadata.id)),s=new Map(e.plugins.map(e=>[e.metadata.id,e])),c=new Set;function l(e){let u=e.metadata.id;if(i.has(u))return!0;if(a.has(u))return!1;if(c.has(u))return yn(`Plugin "${u}" was not enabled because its dependency graph contains a cycle.`),a.add(u),!1;c.add(u);for(let r of e.metadata.dependencies||[]){let e=s.get(r);if(!e||!o.has(r))return yn(`Plugin "${u}" was not enabled because dependency "${r}" is not enabled.`),c.delete(u),a.add(u),!1;if(!on(e,t,n))return yn(`Plugin "${u}" was not enabled because dependency "${r}" is not compatible.`),c.delete(u),a.add(u),!1;if(!l(e))return c.delete(u),a.add(u),!1}return c.delete(u),r.push(e),i.add(u),!0}for(let r of e.plugins)on(r,t,n)&&cn(r,e,n)&&l(r);return r}function dn(e,t){let n=e?.settings?.[t];return Gt(n)?n:{}}function fn(e={},t,n){return{...e,settings:{...e.settings||{},[t]:n}}}function pn(e={},t){let n={...e.settings||{}};return delete n[t],{...e,settings:n}}function mn(e){return{...e?.settings?.defaults||{}}}function hn(e,t,n){let r=e.plugins.find(e=>e.metadata.id===t),i=n?e.globalApps[n]:void 0,a=n?e.apps[n]:void 0;return{...mn(r),...dn(i,t),...dn(a,t)}}function gn(e,t){return{getSettings(n){return hn(e,n,t)}}}function _n(e,t,n,r,i){let a=new Map(t.plugins.map(e=>[e.metadata.id,e])),o=[],s=[],c=new Set,l=e;function u(e){let t=e.metadata.id;if(!o.includes(t)){if(c.has(t)){s.push(`${t} has a circular dependency`);return}c.add(t);for(let t of e.metadata.dependencies||[]){let e=a.get(t);if(!e){s.push(`${t} is not available`);continue}if(!on(e,r,i)){s.push(`${e.metadata.label} is not compatible`);continue}u(e)}c.delete(t),l=Jt(l,t),o.push(t)}}return u(n),s.length?{config:e,enabledIds:[],blocked:s}:{config:l,enabledIds:o,blocked:s}}function vn(e,t){return t===`modalPanels`?e.layout.modals||[]:e.layout[t]||[]}function yn(e){globalThis.process?.env?.NODE_ENV!==`production`&&console.warn(`[manifest-editor/plugin] ${e}`)}function bn(e,t,n,r){if(!r?.length)return;let i=[];for(let a of r){if(n.has(a.id)){yn(`Plugin "${e.metadata.id}" contribution "${a.id}" for "${t}" was skipped because that id already exists.`);continue}n.add(a.id),i.push(a)}return i.length?i:void 0}function xn(e,t){let n=t.extension,r={config:n.config,preset:n.preset,disableSideEffects:n.disableSideEffects};for(let i of Vt){let a=bn(t,i,new Set(vn(e,i).map(e=>e.id)),n[i]);a&&(r[i]=a)}return r}function Sn(e,t,n){if(!t.length)return e;let r=e,i=new Set;for(let a of t){if(!on(a,e,n))continue;let t=(a.metadata.dependencies||[]).filter(e=>!i.has(e));if(t.length){yn(`Plugin "${a.metadata.id}" was not applied because dependencies are missing or later in the plugin order: ${t.join(`, `)}`);continue}let o=xn(r,a);r=Bt(r,r.metadata,o),i.add(a.metadata.id)}let a=new Set(e.layout.leftPanels.map(e=>e.id)),o=r.layout.leftPanels.filter(e=>e.divide),s=r.layout.leftPanels.filter(e=>!e.divide),c=!1,l=s.map(e=>!c&&!a.has(e.id)?(c=!0,{...e,separator:!0}):e);return{...r,config:I(e.config||{},...t.filter(e=>i.has(e.metadata.id)).map(e=>e.extension.config||{}),r.config||{}),layout:{...r.layout,leftPanels:[...l,...o],backgroundActions:Ae([],r.layout.backgroundActions||[])}}}function Cn({plugins:e=[],enabled:t=[],disabled:n=[],globalPluginConfig:r}={}){let i=(e=[])=>Array.from(new Set(e.filter(Boolean)));return(0,f.createStore)(a=>({plugins:e,enabled:i(t),disabled:i(n),globalApps:qt(r),apps:{},setProviderState(e){a(t=>({...t,plugins:an(t.plugins,e.plugins||[]),enabled:i(e.enabled||[]),disabled:i(e.disabled||[]),globalApps:qt(e.globalPluginConfig)}))},setPluginLoading(e){a(t=>({...t,plugins:t.plugins.map(t=>t.metadata.id===e?{...t,loadStatus:`loading`,loadError:void 0}:t)}))},setPluginLoaded(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...t,metadata:{...n.metadata,...t.metadata},settings:t.settings||n.settings,load:n.load,loadStatus:`loaded`,loadError:void 0}:n)}))},setPluginLoadError(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...n,loadStatus:`error`,loadError:t}:n)}))},setAppConfig(e,t){let n=Kt(t);a(t=>Zt(t.apps[e],n)?t:{...t,apps:{...t.apps,[e]:n}})},setGlobalConfig(e){a(t=>({...t,globalApps:qt(e)}))},setGlobalAppConfig(e,t){let n=Kt(t);a(t=>Zt(t.globalApps[e],n)?t:{...t,globalApps:{...t.globalApps,[e]:n}})},enable(e,t,n=`workspace`){a(r=>({...r,plugins:r.plugins.map(e=>e.metadata.id===t&&e.loadStatus===`error`?{...e,loadStatus:`idle`,loadError:void 0}:e),...n===`global`?{globalApps:{...r.globalApps,[e]:Jt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Jt(r.apps[e],t)}}}))},disable(e,t,n=`workspace`){a(r=>({...r,...n===`global`?{globalApps:{...r.globalApps,[e]:Yt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Yt(r.apps[e],t)}}}))}}))}const wn=(0,u.createContext)(null),Tn=(0,u.createContext)({});function En({plugins:e,enabled:t,disabled:n,globalPluginConfig:r,saveGlobalPluginConfig:i,children:a}){let o=(0,u.useMemo)(()=>rn(e),[e]),s=(0,u.useMemo)(()=>Cn({plugins:o,enabled:t,disabled:n,globalPluginConfig:r}),[]);(0,u.useEffect)(()=>{s.getState().setProviderState({plugins:o,enabled:t,disabled:n,globalPluginConfig:r})},[s,o,t,n,r]);let c=(0,u.useMemo)(()=>({globalPluginConfig:r,saveGlobalPluginConfig:i}),[r,i]);return(0,u.createElement)(Tn.Provider,{value:c},(0,u.createElement)(wn.Provider,{value:s},a))}function Dn(){return(0,u.useContext)(wn)}function On(){let e=Dn();if(!e)throw Error(`usePluginStoreApi must be used within <PluginProvider />`);return e}function kn(e){let t=Dn();return t?(0,f.useStore)(t,e):e(Ut())}function An(){return kn(e=>({plugins:e.plugins,enabled:e.enabled,disabled:e.disabled,globalApps:e.globalApps,apps:e.apps}))}function jn(e){let t=(0,u.useContext)(Bn),n=(0,u.useContext)(zn),r=An(),i=e||t?.appId;return(0,u.useMemo)(()=>un(r,n,i),[r,n,i])}function Mn(){let e=Dn();return(0,u.useMemo)(()=>e?{enable(t,n,r){e.getState().enable(t,n,r||`workspace`)},disable(t,n,r){e.getState().disable(t,n,r||`workspace`)},setAppConfig(t,n){e.getState().setAppConfig(t,n)},setGlobalAppConfig(t,n){e.getState().setGlobalAppConfig(t,n)}}:{enable(){},disable(){},setAppConfig(){},setGlobalAppConfig(){}},[e])}function Nn(e){let t=(0,u.useContext)(Bn),n=An(),r=e||t?.appId;return(0,u.useMemo)(()=>gn(n,r),[n,r])}function Pn(e,t){let n=(0,u.useContext)(Bn),r=An(),i=t||n?.appId;return(0,u.useMemo)(()=>hn(r,e,i),[r,e,i])}function Fn(e,t){let n=(0,u.useContext)(Bn),r=Dn(),i=An(),a=z(),o=ie(),{saveGlobalPluginConfig:s}=(0,u.useContext)(Tn),c=t||n?.appId||``,l=i.plugins.find(t=>t.metadata.id===e)||null,d=c?i.globalApps[c]:void 0,f=c?i.apps[c]:void 0,p=(0,u.useMemo)(()=>mn(l||void 0),[l]),m=(0,u.useMemo)(()=>dn(d,e),[d,e]),h=(0,u.useMemo)(()=>dn(f,e),[f,e]),g=(0,u.useMemo)(()=>hn(i,e,c),[i,e,c]),_=(0,u.useCallback)(e=>{c&&(r?.getState().setAppConfig(c,e),o({plugins:{...a.plugins||{},apps:{...a.plugins?.apps||{},[c]:e}}}))},[a.plugins,c,o,r]),v=(0,u.useCallback)(t=>{_(fn(f||{},e,t))},[_,e,f]),y=(0,u.useCallback)(()=>{_(pn(f||{},e))},[_,e,f]),b=(0,u.useCallback)(async e=>{if(!c||!s)return;let t=i.globalApps[c]||{},n={apps:{...i.globalApps,[c]:e}};r?.getState().setGlobalAppConfig(c,e);try{await s(n)}catch(e){throw r?.getState().setGlobalAppConfig(c,t),e}},[c,s,i.globalApps,r]),x=(0,u.useCallback)(async t=>{await b(fn(d||{},e,t))},[d,b,e]),S=(0,u.useCallback)(async()=>{await b(pn(d||{},e))},[d,b,e]);return{plugin:l,appId:c,defaults:p,global:m,workspace:h,effective:g,canSaveGlobal:!!s,setWorkspaceSettings:v,resetWorkspaceSettings:y,setGlobalSettings:x,resetGlobalSettings:S}}function In(e,t){let n=An(),r=Dn(),i=(0,u.useMemo)(()=>un(n,e,t),[n,e,t]);return(0,u.useEffect)(()=>{if(r)for(let e of i)!e.load||e.loadStatus===`loading`||e.loadStatus===`loaded`||e.loadStatus===`error`||(r.getState().setPluginLoading(e.metadata.id),e.load().then(t=>{r.getState().setPluginLoaded(e.metadata.id,nn(t))}).catch(t=>{r.getState().setPluginLoadError(e.metadata.id,Ln(t))}))},[r,i]),(0,u.useMemo)(()=>Sn(e,i.filter(e=>!e.load||e.loadStatus===`loaded`),t),[e,i,t])}function Ln(e){return e instanceof Error?e.message:typeof e==`string`?e:`Plugin failed to load.`}function Rn({config:e}){let t=(0,u.useContext)(Bn),n=Dn(),r=t?.appId,i=r?e?.plugins?.apps?.[r]:void 0;return(0,u.useEffect)(()=>{!n||!r||n.getState().setAppConfig(r,i||{})},[n,r,i]),null}const zn=(0,u.createContext)(null),Bn=(0,u.createContext)(null),Vn=(0,u.createContext)({state:null,setState:()=>{}});function Hn(){let e=(0,u.useContext)(Bn);return N(e,`Hook useAppInstance must be used inside <AppProvider />`),e}function U(){let e=(0,u.useContext)(zn);return N(e,`Hook useApp must be used inside <AppProvider />`),e}function Un(){return(0,u.useContext)(Vn)}function Wn(e,t){return e.find(e=>e.id===t)||null}function Gn(){let e=U(),{state:t,setState:n}=Un(),r=e.preset?.templates||[],i=typeof t?.presetTemplateId==`string`?t.presetTemplateId:null;return{templates:r,selectedTemplateId:i,selectedTemplate:(0,u.useMemo)(()=>Wn(r,i),[i,r]),setSelectedTemplateId:(0,u.useCallback)(e=>n({presetTemplateId:e}),[n])}}function Kn(e){let[t,n,r]=(0,l.useLocalStorage)(`app-state/${e.appId}/${e.instanceId}`,e.initialState||{}),i=(0,u.useCallback)(e=>{let t=r.current?JSON.parse(r.current||`{}`):{},i=(typeof e==`function`?e(t):e)||{};n({...t,...i})},[]);(0,u.useEffect)(()=>{e.args&&i(e.args)},[e.appId]);let a=(0,u.useMemo)(()=>({state:t||{},setState:i}),[i,t]);return(0,d.jsx)(Vn.Provider,{value:a,children:e.children})}function qn({instanceId:e,appId:t,args:n,definition:r,children:i,initialState:a}){let o=(0,u.useMemo)(()=>({instanceId:e,appId:t,args:n}),[e,t,n]),s=(0,u.useMemo)(()=>a||{},[e]),c=In(r,t);return(0,d.jsx)(ae,{config:c.config||{},children:(0,d.jsx)(zn.Provider,{value:c,children:(0,d.jsx)(Bn.Provider,{value:o,children:(0,d.jsx)(Kn,{instanceId:o.instanceId,appId:o.appId,args:o.args,initialState:s,children:i})})})})}const Jn=(0,u.createContext)(null);function Yn(){let e=(0,u.useContext)(Jn);return N(e,`Hook useApps must be used inside <MultiAppProvider />`),e}function Xn(e,t=!1){let[n,r]=(0,l.useOptionalLocalStorage)(`SelectedApplication`,e||{id:`splash`},!t);return[n,r]}function Zn({apps:e,initialApp:t,saveCurrentApp:n=!0,instanceId:r,children:i,config:a={}}){let{defaultApp:o=`splash`,collectionApp:s=`collection-editor`,manifestApp:c=`manifest-editor`}=a,[l,f]=Xn(t,n),p=e=>{e===`Manifest`&&f({id:c}),e===`Collection`&&f({id:s})},m=(0,u.useMemo)(()=>({currentApp:l||{id:o},initialApp:t||{id:o},apps:e,changeApp:f,changeProjectType:p}),[t,e,l]),h=e[m.currentApp.id];return!l||!h?null:(0,d.jsx)(qn,{appId:l.id,definition:h,instanceId:l.id+r,args:l.args,children:(0,d.jsx)(Jn.Provider,{value:m,children:i})})}const Qn=g.default.div`
2
2
  display: flex;
3
3
  align-items: center;
4
4
  height: 3em;
5
5
  padding: 0.5em;
6
- `,$n=h.default.div`
6
+ `,$n=g.default.div`
7
7
  display: flex;
8
8
  padding: 0.25em;
9
9
  flex-direction: column;
10
- `,er=h.default.button`
10
+ `;g.default.button`
11
11
  height: 1.75em;
12
12
  width: 1.75em;
13
13
  background: #e9e9e9;
@@ -26,9 +26,9 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
26
26
  fill: #fff;
27
27
  }
28
28
  }
29
- `,tr=h.default.div`
29
+ `,g.default.div`
30
30
  flex: 1;
31
- `,nr=h.default.div`
31
+ `;const er=g.default.div`
32
32
  color: #6e6e6e;
33
33
  display: flex;
34
34
  align-items: center;
@@ -39,7 +39,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
39
39
  user-select: none;
40
40
  cursor: pointer;
41
41
  margin-right: 0.5em;
42
- `,rr=h.default.div`
42
+ `;g.default.div`
43
43
  margin: 0 auto;
44
44
  padding: 3px;
45
45
  background: #f4f4f4;
@@ -52,7 +52,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
52
52
  @media (max-width: 450px) {
53
53
  display: none;
54
54
  }
55
- `,ir=h.default.button`
55
+ `,g.default.button`
56
56
  background: #e7fff4;
57
57
  border: 1px solid #c5e3cd;
58
58
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06);
@@ -60,7 +60,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
60
60
  color: #666666;
61
61
  padding: 0.35em 0.7em;
62
62
  letter-spacing: -0.42px;
63
- `,ar=({height:e=16})=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:e,viewBox:`0 0 24 24`,width:`24px`,fill:`currentColor`,children:[(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})]}),or=({rotate:e=0,...t})=>(0,u.jsx)(`svg`,{version:`1.2`,xmlns:`http://www.w3.org/2000/svg`,overflow:`visible`,preserveAspectRatio:`none`,viewBox:`0 0 24 24`,width:`1em`,height:`1em`,style:{fill:`rgba(0, 0, 0, 0.6)`,transform:`rotate(${e}deg)`,transition:`transform 0.2s`},...t,children:(0,u.jsx)(`path`,{d:`M8.12 9.29 12 13.17l3.88-3.88a.996.996 0 1 1 1.41 1.41l-4.59 4.59a.996.996 0 0 1-1.41 0L6.7 10.7a.996.996 0 0 1 0-1.41c.39-.38 1.03-.39 1.42 0z`,fill:`currentColor`})}),sr=(0,l.createContext)(null),cr=(0,l.createContext)(null);function lr(){let e=(0,l.useContext)(cr),t=(0,l.useContext)(sr),n=e||t?.id;return M(n,`useResourceInstance can only be called from inside <ResourceProvider />`),n}function B(){let e=(0,l.useContext)(sr);return M(e,`useResource can only be called from inside <ResourceProvider />`),e}function ur({id:e,children:t}){return e?(0,u.jsx)(cr.Provider,{value:e,children:t}):t}function dr({resource:e,children:t}){let n=(0,p.useExistingVault)(),r=t;return e&&e.type===`Manifest`&&(r=(0,u.jsx)(p.VaultProvider,{vault:n||void 0,children:(0,u.jsx)(p.ManifestContext,{manifest:e.id||``,children:t})})),e&&e.type===`Collection`&&(r=(0,u.jsx)(p.VaultProvider,{vault:n||void 0,children:(0,u.jsx)(p.CollectionContext,{collection:e.id||``,children:t})})),(0,u.jsx)(sr.Provider,{value:e,children:r})}function fr(e){"@babel/helpers - typeof";return fr=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},fr(e)}function pr(e,t){if(fr(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(fr(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function mr(e){var t=pr(e,`string`);return fr(t)==`symbol`?t:t+``}function V(e,t,n){return(t=mr(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var hr=class{constructor({id:e,config:t,label:n}){V(this,`id`,void 0),V(this,`label`,void 0),V(this,`type`,`external-manifest-preview`),V(this,`focusable`,!0),V(this,`serviceUrl`,void 0),V(this,`windows`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}isPreviewValid(e){let t=this.windows[e];return!!(t&&t.window&&!t.window.closed)}getRequires(){return[`readOnlyManifest`]}getProvides(){return[]}async createPreview(e,t,n,r){let i=`${this.serviceUrl}`.replace(/\{manifestId}/,r.readOnlyManifest).replace(/\{time}/,`${Date.now()}`),a=window.open(i,this.id);return this.windows[e]={location:i,window:a},{id:this.id,type:`external-manifest-preview`,data:{url:i}}}async focus(e){let t=this.windows[e];t&&t.window&&t.window.focus()}async updatePreview(e,t,n,r){let i=this.windows[e];if(i)try{i.window?.close()}catch{}return this.createPreview(e,t,n,r)}async deletePreview(e){let t=this.windows[e];t&&t.window&&(t.window.close(),delete this.windows[e])}},gr=class{constructor({id:e,config:t,label:n}){V(this,`id`,void 0),V(this,`label`,void 0),V(this,`type`,`iiif-preview-service`),V(this,`focusable`,!1),V(this,`serviceUrl`,void 0),V(this,`cache`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}getRequires(){return[]}getProvides(){return[`readOnlyManifest`]}async isPreviewValid(e,t){if(this.cache[e])return!0;if(!t||!t.data||!t.data.readOnlyManifest)return!1;let n=t.data.readOnlyManifest;try{return(await fetch(n,{cache:`no-cache`})).ok}catch{return!1}}async createPreview(e,t,n){let r=n.toPresentation3(t),i=await fetch(this.serviceUrl,{method:`POST`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(r)});M(i.ok,`Unknown error creating preview`);let a=await i.json();return M(a.location,`Missing IIIF location while creating preview`),this.cache[e]={...a,time:Date.now()},{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${a.location}/${Date.now()}`}}}async focus(){}async updatePreview(e,t,n){let r=this.cache[e];if(!r||Date.now()>r.expirationTtl+r.time||!r.updateLocation)return this.createPreview(e,t,n);let i=r.updateLocation,a=n.toPresentation3(t),o=await fetch(i,{method:`PUT`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(a)});M(o.ok,`Unknown error updating preview`);let s=await o.json();M(s.location),s.updateLocation&&(r.updateLocation=s.updateLocation);let c=`${s.location}/${Date.now()}`;return await fetch(c,{cache:`no-cache`}),{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${s.location}/${Date.now()}`}}}async deletePreview(e){let t=this.cache[e];if(t&&t.deleteLocation)try{await fetch(t.deleteLocation,{method:`DELETE`,headers:{"Content-Type":`application/json`,Origin:`*`}})}catch{}}};function _r(e,t,n,r,i){let a=B(),o=lr(),s=(0,p.useVault)(),c=(0,l.useMemo)(()=>({setPreview:e=>{e&&i(t=>[...t.filter(t=>t.id!==e.id),e])},removePreview:e=>{i(t=>t.filter(t=>t.id!==e))}}),[i,o]),[u,d]=(0,l.useMemo)(()=>{let e={},t={};for(let r of n){e[r.id]=r;let n=r.getProvides();if(n.length)for(let e of n)t[e]||(t[e]=r.id)}return[e,t]},[n]);async function f(){let n=e.selected,i=r.find(e=>e.id===n);if(r&&r.length&&i){let e=u[i.id].getRequires(),n={};for(let i of r){let r=u[i.id];if(r){let i=r.getProvides();for(let l of i)if(e.indexOf(l)!==-1){let e=await r.updatePreview(o,a,s,n);e&&(c.setPreview(e),t({type:`activatePreview`,payload:e.id}),Object.assign(n,e.data||{}))}}}let l=u[i.id];if(l){let e=await l.updatePreview(o,a,s,n);e?c.setPreview(e):(c.removePreview(i.id),await l.deletePreview(o))}}}async function m(e){u[e]&&o&&(t({type:`selectPreview`,payload:e}),await v(e))}async function h(){let e=d.readOnlyManifest,t=e?u[e]:null;if(t&&o){let e=r.find(e=>e.type===`iiif-preview-service`);if(!e||!await t.isPreviewValid(o,e)){let e=await t.createPreview(o,a,s,{});if(e)return e.data.readOnlyManifest}}return null}function g(e){let n=u[e];n&&o&&(c.removePreview(e),n.deletePreview(o).then(()=>{t({type:`deletePreview`,payload:e})}))}async function _(e){let n=u[e];u[e]&&o&&n&&(await n.focus(o),t({type:`focusPreview`,payload:e}))}async function v(n){let i=u[n];if(i&&o){let l=r.find(e=>e.id===n);if(!l||!i.isPreviewValid(o,l)){let n={},l=i.getRequires();for(let i of l){let l=d[i],f=l?u[l]:null;M(f,`Missing handler for Preview requirement "${i}"`),r.find(e=>e.id===l),e.active.find(e=>e===l);{let e=await f.createPreview(o,a,s,n);Object.assign(n,e?.data||{}),c.setPreview(e),t({type:`activatePreview`,payload:e.id})}}let f=await i.createPreview(o,a,s,n);f&&(c.setPreview(f),t({type:`activatePreview`,payload:f.id}))}}}return(0,l.useMemo)(()=>({selectPreview:m,deletePreview:g,focusPreview:_,activatePreview:v,updatePreviews:f,getPreviewLink:h}),[u,o,s,e.selected,e.active,r])}function vr(e){return(0,l.useMemo)(()=>{let t=[];for(let n of e)switch(n.type){case`iiif-preview-service`:t.push(new gr(n));break;case`external-manifest-preview`:t.push(new hr(n));break}return t},[])}const yr=(0,_.produce)(function(e,t){switch(t.type){case`focusPreview`:break;case`deletePreview`:e.selected===t.payload&&(e.selected=null),e.active=e.active.filter(e=>e!==t.payload);break;case`activatePreview`:e.active.indexOf(t.payload)===-1&&e.active.push(t.payload);break;case`selectPreview`:e.selected=t.payload,e.active.indexOf(t.payload)===-1&&e.active.push(t.payload);break}});function br(){return{active:[],selected:null}}const xr=(0,l.createContext)(null),Sr=(0,l.createContext)([]),Cr=(0,l.memo)(function({children:e,configs:t=[]}){let n=lr(),r=vr(t),[i,a]=(0,c.useLocalStorage)(`preview-${n}`,[]),[o,s]=(0,l.useReducer)(yr,void 0,br),d=_r(o,s,r,i,a),f=(0,l.useMemo)(()=>({configs:t,actions:d,handlers:r,...o}),[d,t,r,o]);return(0,l.useEffect)(()=>{for(let e of i)if(!o.active.includes(e.id)){let t=r.find(t=>t.id===e.id);t&&Promise.resolve(t.isPreviewValid(n,e)).then(t=>{t?s({type:`activatePreview`,payload:e.id}):a(t=>t.filter(t=>t.id!==e.id))})}},[n]),(0,u.jsx)(Sr.Provider,{value:i,children:(0,u.jsx)(xr.Provider,{value:f,children:e})})});function wr(){return(0,l.useContext)(Sr)}function Tr(){let e=(0,l.useContext)(xr);return M(e,`usePreviewContext() can only be called from inside <PreviewProvider />`),e}const Er=h.default.button`
63
+ `;const tr=({height:e=16})=>(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:e,viewBox:`0 0 24 24`,width:`24px`,fill:`currentColor`,children:[(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})]}),nr=({rotate:e=0,...t})=>(0,d.jsx)(`svg`,{version:`1.2`,xmlns:`http://www.w3.org/2000/svg`,overflow:`visible`,preserveAspectRatio:`none`,viewBox:`0 0 24 24`,width:`1em`,height:`1em`,style:{fill:`rgba(0, 0, 0, 0.6)`,transform:`rotate(${e}deg)`,transition:`transform 0.2s`},...t,children:(0,d.jsx)(`path`,{d:`M8.12 9.29 12 13.17l3.88-3.88a.996.996 0 1 1 1.41 1.41l-4.59 4.59a.996.996 0 0 1-1.41 0L6.7 10.7a.996.996 0 0 1 0-1.41c.39-.38 1.03-.39 1.42 0z`,fill:`currentColor`})});var rr=c(o((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=require("react");function n(e,n){let[r,i]=(0,t.useState)(!1),a=(0,t.useRef)(null),o=(0,t.useRef)(!0),s=(0,t.useRef)(!1),c=(0,t.useRef)(null),l=(0,t.useMemo)(()=>Array.from({length:e},()=>(0,t.createRef)()),[e]),u=e=>e.key!==void 0,d=e=>{var t;a.current=e,(t=l[e].current)==null||t.focus()};(0,t.useEffect)(()=>{if(o.current){o.current=!1;return}r&&(!s.current||n?.focusFirstItemOnClick)?d(0):r||(s.current=!1)},[r]),(0,t.useEffect)(()=>{if(!r)return;let e={removed:!1},t=e=>{setTimeout(()=>{e.target instanceof Element&&(e.target.closest(`[role="menu"]`)instanceof Element||i(!1))},10)};return setTimeout(()=>{e.removed||document.addEventListener(`click`,t)},1),()=>{e.removed=!0,document.removeEventListener(`click`,t)}},[r]),(0,t.useEffect)(()=>{let e=e=>{r&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&e.preventDefault()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]);let f=e=>{if(u(e)){let{key:t}=e;if(![`Enter`,` `,`Tab`,`ArrowDown`,`Escape`].includes(t))return;(t===`Tab`||t===`ArrowDown`)&&s.current&&r&&(e.preventDefault(),d(0)),(t===`Enter`||t===` `)&&(e.preventDefault(),i(!0)),t===`Escape`&&(e.preventDefault(),i(!1))}else n?.focusFirstItemOnClick||(s.current=!r),i(!r)},p=e=>{var t;let{key:n}=e;if([`Tab`,`Shift`,`Enter`,`Escape`,`ArrowUp`,`ArrowDown`,` `].includes(n)){let r=a.current;if(n===`Escape`){i(!1),(t=c.current)==null||t.focus();return}if(n===`Tab`){i(!1);return}if(n===`Enter`||n===` `){e.currentTarget.href||e.currentTarget.click(),i(!1);return}r!==null&&(n===`ArrowUp`?--r:n===`ArrowDown`&&(r+=1),r>l.length-1?r=0:r<0&&(r=l.length-1)),r!==null&&d(r);return}if(/[a-zA-Z0-9./<>?;:"'`!@#$%^&*()\\[\]{}_+=|\\-~,]/.test(n)){let e=l.findIndex(e=>(e.current?.innerText)?.toLowerCase().startsWith(n.toLowerCase())||(e.current?.textContent)?.toLowerCase().startsWith(n.toLowerCase())||(e.current?.getAttribute(`aria-label`))?.toLowerCase().startsWith(n.toLowerCase()));e!==-1&&d(e)}};return{buttonProps:{onKeyDown:f,onClick:f,tabIndex:0,ref:c,role:`button`,"aria-haspopup":!0,"aria-expanded":r},itemProps:Array.from({length:e},(e,t)=>({onKeyDown:p,tabIndex:-1,role:`menuitem`,ref:l[t]})),isOpen:r,setIsOpen:i,moveFocus:d}}e.default=n}))(),1);const ir=typeof rr.default==`object`&&rr.default!==null&&`default`in rr.default?rr.default.default:rr.default,ar=(0,u.createContext)(null),or=(0,u.createContext)(null);function sr(){let e=(0,u.useContext)(or),t=(0,u.useContext)(ar),n=e||t?.id;return N(n,`useResourceInstance can only be called from inside <ResourceProvider />`),n}function W(){let e=(0,u.useContext)(ar);return N(e,`useResource can only be called from inside <ResourceProvider />`),e}function cr({id:e,children:t}){return e?(0,d.jsx)(or.Provider,{value:e,children:t}):t}function lr({resource:e,children:t}){let n=(0,m.useExistingVault)(),r=t;return e&&e.type===`Manifest`&&(r=(0,d.jsx)(m.VaultProvider,{vault:n||void 0,children:(0,d.jsx)(m.ManifestContext,{manifest:e.id||``,children:t})})),e&&e.type===`Collection`&&(r=(0,d.jsx)(m.VaultProvider,{vault:n||void 0,children:(0,d.jsx)(m.CollectionContext,{collection:e.id||``,children:t})})),(0,d.jsx)(ar.Provider,{value:e,children:r})}function ur(e){"@babel/helpers - typeof";return ur=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ur(e)}function dr(e,t){if(ur(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(ur(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function fr(e){var t=dr(e,`string`);return ur(t)==`symbol`?t:t+``}function G(e,t,n){return(t=fr(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var pr=class{constructor({id:e,config:t,label:n}){G(this,`id`,void 0),G(this,`label`,void 0),G(this,`type`,`external-manifest-preview`),G(this,`focusable`,!0),G(this,`serviceUrl`,void 0),G(this,`windows`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}isPreviewValid(e){let t=this.windows[e];return!!(t&&t.window&&!t.window.closed)}getRequires(){return[`readOnlyManifest`]}getProvides(){return[]}async createPreview(e,t,n,r){let i=`${this.serviceUrl}`.replace(/\{manifestId}/,r.readOnlyManifest).replace(/\{time}/,`${Date.now()}`),a=window.open(i,this.id);return this.windows[e]={location:i,window:a},{id:this.id,type:`external-manifest-preview`,data:{url:i}}}async focus(e){let t=this.windows[e];t&&t.window&&t.window.focus()}async updatePreview(e,t,n,r){let i=this.windows[e];if(i)try{i.window?.close()}catch{}return this.createPreview(e,t,n,r)}async deletePreview(e){let t=this.windows[e];t&&t.window&&(t.window.close(),delete this.windows[e])}},mr=class{constructor({id:e,config:t,label:n}){G(this,`id`,void 0),G(this,`label`,void 0),G(this,`type`,`iiif-preview-service`),G(this,`focusable`,!1),G(this,`serviceUrl`,void 0),G(this,`cache`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}getRequires(){return[]}getProvides(){return[`readOnlyManifest`]}async isPreviewValid(e,t){if(this.cache[e])return!0;if(!t||!t.data||!t.data.readOnlyManifest)return!1;let n=t.data.readOnlyManifest;try{return(await fetch(n,{cache:`no-cache`})).ok}catch{return!1}}async createPreview(e,t,n){let r=n.toPresentation3(t),i=await fetch(this.serviceUrl,{method:`POST`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(r)});N(i.ok,`Unknown error creating preview`);let a=await i.json();return N(a.location,`Missing IIIF location while creating preview`),this.cache[e]={...a,time:Date.now()},{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${a.location}/${Date.now()}`}}}async focus(){}async updatePreview(e,t,n){let r=this.cache[e];if(!r||Date.now()>r.expirationTtl+r.time||!r.updateLocation)return this.createPreview(e,t,n);let i=r.updateLocation,a=n.toPresentation3(t),o=await fetch(i,{method:`PUT`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(a)});N(o.ok,`Unknown error updating preview`);let s=await o.json();N(s.location),s.updateLocation&&(r.updateLocation=s.updateLocation);let c=`${s.location}/${Date.now()}`;return await fetch(c,{cache:`no-cache`}),{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${s.location}/${Date.now()}`}}}async deletePreview(e){let t=this.cache[e];if(t&&t.deleteLocation)try{await fetch(t.deleteLocation,{method:`DELETE`,headers:{"Content-Type":`application/json`,Origin:`*`}})}catch{}}};function hr(e,t,n,r,i){let a=W(),o=sr(),s=(0,m.useVault)(),c=(0,u.useMemo)(()=>({setPreview:e=>{e&&i(t=>[...t.filter(t=>t.id!==e.id),e])},removePreview:e=>{i(t=>t.filter(t=>t.id!==e))}}),[i,o]),[l,d]=(0,u.useMemo)(()=>{let e={},t={};for(let r of n){e[r.id]=r;let n=r.getProvides();if(n.length)for(let e of n)t[e]||(t[e]=r.id)}return[e,t]},[n]);async function f(){let n=e.selected,i=r.find(e=>e.id===n);if(r&&r.length&&i){let e=l[i.id].getRequires(),n={};for(let i of r){let r=l[i.id];if(r){let i=r.getProvides();for(let l of i)if(e.indexOf(l)!==-1){let e=await r.updatePreview(o,a,s,n);e&&(c.setPreview(e),t({type:`activatePreview`,payload:e.id}),Object.assign(n,e.data||{}))}}}let u=l[i.id];if(u){let e=await u.updatePreview(o,a,s,n);e?c.setPreview(e):(c.removePreview(i.id),await u.deletePreview(o))}}}async function p(e){l[e]&&o&&(t({type:`selectPreview`,payload:e}),await v(e))}async function h(){let e=d.readOnlyManifest,t=e?l[e]:null;if(t&&o){let e=r.find(e=>e.type===`iiif-preview-service`);if(!e||!await t.isPreviewValid(o,e)){let e=await t.createPreview(o,a,s,{});if(e)return e.data.readOnlyManifest}}return null}function g(e){let n=l[e];n&&o&&(c.removePreview(e),n.deletePreview(o).then(()=>{t({type:`deletePreview`,payload:e})}))}async function _(e){let n=l[e];l[e]&&o&&n&&(await n.focus(o),t({type:`focusPreview`,payload:e}))}async function v(n){let i=l[n];if(i&&o){let u=r.find(e=>e.id===n);if(!u||!i.isPreviewValid(o,u)){let n={},u=i.getRequires();for(let i of u){let u=d[i],f=u?l[u]:null;N(f,`Missing handler for Preview requirement "${i}"`),r.find(e=>e.id===u),e.active.find(e=>e===u);{let e=await f.createPreview(o,a,s,n);Object.assign(n,e?.data||{}),c.setPreview(e),t({type:`activatePreview`,payload:e.id})}}let f=await i.createPreview(o,a,s,n);f&&(c.setPreview(f),t({type:`activatePreview`,payload:f.id}))}}}return(0,u.useMemo)(()=>({selectPreview:p,deletePreview:g,focusPreview:_,activatePreview:v,updatePreviews:f,getPreviewLink:h}),[l,o,s,e.selected,e.active,r])}function gr(e){return(0,u.useMemo)(()=>{let t=[];for(let n of e)switch(n.type){case`iiif-preview-service`:t.push(new mr(n));break;case`external-manifest-preview`:t.push(new pr(n))}return t},[])}const _r=(0,_.produce)(function(e,t){switch(t.type){case`focusPreview`:break;case`deletePreview`:e.selected===t.payload&&(e.selected=null),e.active=e.active.filter(e=>e!==t.payload);break;case`activatePreview`:e.active.indexOf(t.payload)===-1&&e.active.push(t.payload);break;case`selectPreview`:e.selected=t.payload,e.active.indexOf(t.payload)===-1&&e.active.push(t.payload)}});function vr(){return{active:[],selected:null}}const yr=(0,u.createContext)(null),br=(0,u.createContext)([]),xr=(0,u.memo)(function({children:e,configs:t=[]}){let n=sr(),r=gr(t),[i,a]=(0,l.useLocalStorage)(`preview-${n}`,[]),[o,s]=(0,u.useReducer)(_r,void 0,vr),c=hr(o,s,r,i,a),f=(0,u.useMemo)(()=>({configs:t,actions:c,handlers:r,...o}),[c,t,r,o]);return(0,u.useEffect)(()=>{for(let e of i)if(!o.active.includes(e.id)){let t=r.find(t=>t.id===e.id);t&&Promise.resolve(t.isPreviewValid(n,e)).then(t=>{t?s({type:`activatePreview`,payload:e.id}):a(t=>t.filter(t=>t.id!==e.id))})}},[n]),(0,d.jsx)(br.Provider,{value:i,children:(0,d.jsx)(yr.Provider,{value:f,children:e})})});function Sr(){return(0,u.useContext)(br)}function Cr(){let e=(0,u.useContext)(yr);return N(e,`usePreviewContext() can only be called from inside <PreviewProvider />`),e}const wr=g.default.button`
64
64
  border: none;
65
65
  outline: none;
66
66
  background-color: transparent;
@@ -72,7 +72,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
72
72
  &:hover {
73
73
  color: inherit;
74
74
  }
75
- `,H=h.default.button`
75
+ `,K=g.default.button`
76
76
  padding: 0.5rem 1rem;
77
77
  color: ${e=>e.theme.color.main||`none`};
78
78
  background-color: ${e=>e.theme.color.white||`white`};
@@ -90,11 +90,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
90
90
  &:hover {
91
91
  background: #eee;
92
92
  }
93
- `,Dr=(0,h.default)(H)`
93
+ `;(0,g.default)(K)`
94
94
  padding: 0.25em ${e=>e.theme.padding.xs||`0.4em`};
95
95
  height: unset;
96
96
  background: none;
97
- `,Or=(0,h.default)(H)`
97
+ `,(0,g.default)(K)`
98
98
  {
99
99
  padding: 0 ${e=>e.theme.padding.medium||`1rem`};
100
100
  color: ${e=>e.theme.color.main||`#B84C74;`};
@@ -113,7 +113,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
113
113
  cursor: not-allowed;
114
114
  }
115
115
  }
116
- `,kr=(0,h.default)(H)`
116
+ `;const Tr=(0,g.default)(K)`
117
117
  padding: 0 ${e=>e.theme.padding.medium||`1rem`};
118
118
  color: ${e=>e.theme.color.white||`white`};
119
119
  background-color: ${e=>e.theme.color.main||`#B84C74;`};
@@ -126,17 +126,17 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
126
126
  &:hover {
127
127
  background-color: ${e=>e.theme.color.mainHover||`#B84C74;`};
128
128
  }
129
- `,Ar=h.default.div`
129
+ `;g.default.div`
130
130
  display: flex;
131
131
  flex-direction: row;
132
132
  flex-wrap: wrap;
133
133
  align-items: flex-start;
134
134
  justify-content: ${e=>e.$right?`flex-end`:`flex-start`};
135
- `,jr=h.default.div`
135
+ `;const Er=g.default.div`
136
136
  display: flex;
137
137
  position: relative;
138
138
  width: 10em;
139
- `,Mr=(0,h.default)(Er)`
139
+ `,Dr=(0,g.default)(wr)`
140
140
  flex: 1;
141
141
  padding: 0.5em 0.8em;
142
142
  background: #b84c74;
@@ -157,7 +157,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
157
157
  background: #892c4e;
158
158
  box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
159
159
  }
160
- `,Nr=(0,h.default)(Er)`
160
+ `,Or=(0,g.default)(wr)`
161
161
  background: #b84c74;
162
162
  border-top-right-radius: 5px;
163
163
  border-bottom-right-radius: 5px;
@@ -178,11 +178,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
178
178
  box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
179
179
  }
180
180
 
181
- ${e=>e.$open&&h.css`
181
+ ${e=>e.$open&&g.css`
182
182
  background: #892c4e;
183
183
  box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
184
184
  `}
185
- `,Pr=h.default.div`
185
+ `,kr=g.default.div`
186
186
  position: absolute;
187
187
  opacity: 0;
188
188
  top: 100%;
@@ -199,11 +199,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
199
199
  color: #25211f;
200
200
  overflow: hidden;
201
201
 
202
- ${e=>e.$open&&h.css`
202
+ ${e=>e.$open&&g.css`
203
203
  opacity: 1;
204
204
  pointer-events: visible;
205
205
  `}
206
- `,Fr=h.default.div`
206
+ `,Ar=g.default.div`
207
207
  display: flex;
208
208
  background: #fff;
209
209
  color: #25211f;
@@ -213,13 +213,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
213
213
  &:hover {
214
214
  background: #f9f9f9;
215
215
  }
216
- `,Ir={available:`#ddd`,configured:`#e37266`,active:`#4cb235`},Lr=h.default.div`
216
+ `,jr={available:`#ddd`,configured:`#e37266`,active:`#4cb235`},Mr=g.default.div`
217
217
  margin: 0.2em 0.5em;
218
218
  width: 8px;
219
219
  height: 8px;
220
220
  border-radius: 50%;
221
- background-color: ${e=>Ir[e.$status]};
222
- `,Rr=h.default.div`
221
+ background-color: ${e=>jr[e.$status]};
222
+ `,Nr=g.default.div`
223
223
  flex: 1;
224
224
  font-size: 0.925em;
225
225
  color: #25211f;
@@ -228,10 +228,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
228
228
  cursor: pointer;
229
229
  white-space: nowrap;
230
230
  overflow: hidden;
231
- `,zr=h.default.div`
231
+ `,Pr=g.default.div`
232
232
  background: #f9f9f9;
233
233
  font-size: 0.8em;
234
- `,Br=h.default.div`
234
+ `,Fr=g.default.div`
235
235
  color: #999;
236
236
  font-size: 0.8em;
237
237
  padding: 0.6em 0.8em;
@@ -239,10 +239,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
239
239
  border-radius: 5px;
240
240
  user-select: none;
241
241
  cursor: not-allowed;
242
- `;function Vr({downloadEnabled:e,fileName:t}){let{active:n,configs:r,actions:i,selected:a}=Tr(),o=(0,p.useVault)(),s=F(),l=B(),d=r.filter(e=>e.type===`external-manifest-preview`),{isOpen:f,buttonProps:m,itemProps:h}=(0,g.default)(d.length);return d.length===0?(0,u.jsx)(Br,{children:`Preview not available`}):(0,u.jsxs)(u.Fragment,{children:[e?(0,u.jsx)(`div`,{className:`mr-4`,children:(0,u.jsx)(c.DownloadButton,{fileName:t||`manifest.json`,label:`Download manifest`,getData:()=>s.export&&s.export.version===2?JSON.stringify(o.toPresentation2(l),null,2):JSON.stringify(o.toPresentation3(l),null,2)})}):null,(0,u.jsxs)(jr,{children:[(0,u.jsx)(Mr,{onClick:()=>{if(!a){let e=s.defaultPreview;if(e){let t=r.find(t=>t.id===e);if(t){i.selectPreview(t.id);return}}i.selectPreview(r[0].id)}i.updatePreviews()},children:`Preview`}),(0,u.jsx)(Nr,{$open:f,...m,children:(0,u.jsx)(or,{})}),(0,u.jsx)(Pr,{$open:f,children:d.map((e,t)=>{let r=n.indexOf(e.id)===-1;return(0,u.jsxs)(Fr,{...h[t],children:[(0,u.jsx)(Lr,{$status:r?`available`:e.id===a?`active`:`configured`}),(0,u.jsx)(Rr,{onClick:()=>{i.selectPreview(e.id)},children:e.label}),r?null:(0,u.jsx)(zr,{onClick:()=>i.deletePreview(e.id),children:(0,u.jsx)(ar,{})})]},e.id)})})]})]})}function Hr(e,t){switch(t.type){case`setStack`:return{...e,stack:t.payload.resources,current:t.payload.resources[0]||null};case`edit`:{let n=t.payload.reset;return(t.payload.resource?.resource.source?.type===`Manifest`||t.payload.resource?.resource.source?.type===`Canvas`)&&(n=!0),e.current?.resource.source.id===t.payload.resource?.resource.source.id?{...e,current:t.payload.resource}:{...e,current:t.payload.resource,stack:n?[]:e.current?[e.current,...e.stack]:e.stack}}case`syncRemoval`:{let n=(0,m.toRef)(t.payload.resource.resource);if(!n||!e.stack.find(e=>(0,m.toRef)(e.resource)?.id===n.id))return e;let r=e.current?.resource.id===n.id?null:e.current,i=Ur(e.stack.filter(e=>(0,m.toRef)(e.resource)?.id!==n.id),r);return{...e,stack:i,current:r}}case`updateCurrent`:return{...e,current:t.payload.resource};case`back`:{let t=e.stack[0];return{...e,stack:e.stack.slice(1),current:t||null}}case`close`:return{...e,stack:[],current:null};case`create`:return t.payload.resource===null?{...e,create:null}:{...e,create:t.payload}}return e}function Ur(e,t){let n=[],r=null;for(let t of e)r?.resource.id!==t.resource.id&&(n.push(t),r=t);return r&&r.resource.id===t?.resource.id?n.slice(0,n.length-1):n}const Wr={stack:[],current:null,create:null},Gr=(0,l.createContext)(Wr),Kr=(0,l.createContext)({edit(){},close(){},back(){},setStack(){},updateCurrent(){},create(){return()=>{}}});function qr(){return(0,l.useContext)(Kr)}function Jr(){return(0,l.useContext)(Gr).current}function Yr(){return(0,l.useContext)(Gr).stack}function Xr(){return(0,l.useContext)(Gr).create}function Zr(){let{manifest:e}=(0,p.useResourceContext)(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);M(e,`Manifest not found`);let i=(0,l.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Manifest`},vault:t}),[e,t]);return(0,l.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function Qr(){let{collection:e}=(0,p.useResourceContext)(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);M(e,`Collection not found`);let i=(0,l.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Collection`},vault:t}),[e,t]);return(0,l.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function $r(e,t={}){let n=(0,p.useVault)(),[r,i]=(0,l.useReducer)(e=>e+1,0);!t.allowNull&&M(e,`Resource not found`);let a=(0,l.useMemo)(()=>t.allowNull&&!e?null:new v.EditorInstance({reference:(0,m.toRef)(e),vault:n,context:{resource:e,parent:t.parent,index:t.index,parentProperty:t.parentProperty}}),[e,n]);return(0,l.useEffect)(()=>a?.observe.start(i),[a]),a&&(a.observe.key=`${r}`,a.observe.reset()),a}function ei(){let{annotationPage:e}=(0,p.useResourceContext)();return M(e,`Annotation page not found`),$r({id:e,type:`AnnotationPage`})}function ti(){let e=Jr(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);M(e,`No resource selected`);let i=(0,l.useMemo)(()=>new v.EditorInstance({reference:e.resource.source||e.resource,vault:t}),[e,t]);return(0,l.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function ni(e){let t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(Hr,e),i=(0,l.useCallback)(e=>{r(e)},[]);(0,l.useEffect)(()=>t.on(`@iiif/REMOVE_REFERENCE`,e=>{let t=e.action,n={id:t.payload.id,type:t.payload.type},i=t.payload.reference;r({type:`syncRemoval`,payload:{resource:{parent:n,resource:i}}})}),[t]);let a=(0,l.useCallback)((e,t=!1)=>i({type:`edit`,payload:{resource:e,reset:t}}),[]),o=(0,l.useCallback)(e=>i({type:`setStack`,payload:{resources:e}}),[]),s=(0,l.useCallback)(e=>i({type:`updateCurrent`,payload:{resource:e}}),[]),c=(0,l.useCallback)(()=>i({type:`close`}),[]),u=(0,l.useCallback)(()=>i({type:`back`}),[]),d=(0,l.useCallback)((e,t)=>(i({type:`create`,payload:{resource:e,options:t}}),()=>{i({type:`create`,payload:{resource:null}})}),[]);return[n,(0,l.useMemo)(()=>({edit:a,updateCurrent:s,close:c,back:u,create:d,setStack:o}),[])]}function ri(e){let{instanceId:t}=Wn(),[n,r]=ni(e.initialState||Wr);return(0,u.jsx)(Kr.Provider,{value:r,children:(0,u.jsx)(Gr.Provider,{value:n,children:e.children})},t)}function ii({resource:e,children:t}){let{instanceId:n}=Wn(),[r,i]=ni((0,l.useMemo)(()=>({create:null,stack:[],current:{resource:{type:`SpecificResource`,source:{id:e.id,type:e.type}}}}),[]));return(0,u.jsx)(Kr.Provider,{value:i,children:(0,u.jsx)(Gr.Provider,{value:r,children:t})},n)}const ai=(0,l.createContext)(null),oi=(0,l.createContext)(null),si=(0,l.createContext)(`default`);function ci(){return(0,l.useContext)(oi)}function li(){return(0,l.useContext)(ai)}function ui(){return(0,l.useContext)(si)}function di(){return z().layout}function fi(){let e=z(),t=e.layout,n=(0,l.useContext)(ai),r=(0,l.useContext)(oi);return(0,l.useMemo)(()=>({actions:n,state:r,...t}),[e,r])}const pi=`@manifest-editor/tags`,mi=`tags`,hi={type:`flag`,id:`flag`,label:`Flag`,backgroundColor:`#b91c1c`,textColor:`#ffffff`,icon:`flag`},gi=[];function _i(e){return typeof e==`string`?e:e?.id||null}function vi(e){return e.type||e.id}function yi(e){return`${e.type}:${e.id}`}function bi(e){if(!Array.isArray(e))return gi;let t=new Map;for(let n of e){if(!n?.id)continue;let e=vi(n);t.set(e,{...n,type:e})}return Array.from(t.values())}function xi(e){return e.label||e.id||e.type}function Si(e,t){return e===hi.type&&(!t||t===hi.id)}function Ci(e,t){return Si(e.type,e.id)?-1:Si(t.type,t.id)?1:xi(e.tag).localeCompare(xi(t.tag))||e.type.localeCompare(t.type)||e.id.localeCompare(t.id)}function wi(e,t){return Si(e.type)?-1:Si(t.type)?1:e.type.localeCompare(t.type)}function Ti(e,t){let n=_i(t);return n?bi(e.getResourceMeta(n,pi)?.[mi]):gi}function Ei(e,t){let n=_i(t);return n?bi(e?.iiif?.meta?.[n]?.[pi]?.[mi]):gi}function Di(e,t,n){let r=_i(t);if(!r)return gi;let i=bi(n);return e.setMetaValue([r,pi,mi],i),i}function Oi(e,t,n){return Di(e,t,[...Ti(e,t),n])}function ki(e,t,n){return Ti(e,t).find(e=>e.type===n)}function Ai(e,t,n,r){return Di(e,t,Ti(e,t).filter(e=>e.type!==n||(r?e.id!==r:!1)))}function ji(e,t){let n=new Map;for(let r of t){let t=_i(r);if(t)for(let i of Ti(e,r)){let e=i.type,r=yi(i),a=n.get(e);a||(a={key:e,type:i.type,rows:[],canvasIds:[],canvasCount:0,tagCount:0},n.set(e,a));let o=a.rows.find(e=>e.key===r);o||(o={key:r,type:i.type,id:i.id,tag:i,canvasIds:[],canvasCount:0},a.rows.push(o)),o.canvasIds.push(t),o.canvasCount=o.canvasIds.length,a.tagCount+=1}}for(let e of n.values())e.rows.sort(Ci),e.canvasIds=Array.from(new Set(e.rows.flatMap(e=>e.canvasIds))),e.canvasCount=e.canvasIds.length;return Array.from(n.values()).sort(wi)}function Mi(e,t,n,r){let i=ki(e,t,n);return r?i?.id===r:!!i}function Ni(e,t,n){return Mi(e,t,n.type,n.id)?Ai(e,t,n.type):Oi(e,t,n)}function Pi(e){return{getTags(t){return Ti(e,t)},setTags(t,n){return Di(e,t,n)},addTag(t,n){return Oi(e,t,n)},upsertTag(t,n){return Oi(e,t,n)},getTag(t,n){return ki(e,t,n)},removeTag(t,n,r){return Ai(e,t,n,r)},hasTag(t,n,r){return Mi(e,t,n,r)},toggleTag(t,n){return Ni(e,t,n)}}}function Fi(e){let t=_i(e);return(0,p.useVaultSelector)(e=>t?Ei(e,t):gi,[t])}function Ii(e){let t=(0,p.useVault)(),n=_i(e),r=(0,l.useMemo)(()=>Pi(t),[t]);return(0,l.useMemo)(()=>({setTags(e){return r.setTags(n,e)},addTag(e){return r.addTag(n,e)},getTag(e){return r.getTag(n,e)},removeTag(e,t){return r.removeTag(n,e,t)},toggleTag(e){return r.toggleTag(n,e)},hasTag(e,t){return r.hasTag(n,e,t)}}),[r,n])}function Li({icon:e,title:t,...n}){return e===`flag`?(0,u.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`1em`,height:`1em`,"aria-hidden":t?void 0:!0,...n,children:[t?(0,u.jsx)(`title`,{children:t}):null,(0,u.jsx)(`path`,{fill:`currentColor`,d:`M5 21a1 1 0 0 1-1-1V5.6c0-.42.26-.8.65-.94C6.7 3.9 8.65 4 10.5 4.7c1.55.58 3.05.7 4.5.36l3.75-.88A1 1 0 0 1 20 5.15v9.25c0 .46-.31.86-.75.97l-3.79.9c-1.85.43-3.76.28-5.66-.43-1.28-.48-2.55-.59-3.8-.33V20a1 1 0 0 1-1 1Z`})]}):null}function Ri({tag:e,showIcon:t=!0,className:n,style:r}){return(0,u.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-0.5 rounded px-1 py-0.5 font-medium shadow-sm ${n||``}`,style:{backgroundColor:e.backgroundColor||`#e5e7eb`,color:e.textColor||`#111827`,fontSize:9,lineHeight:`11px`,...r},children:[t&&e.icon?(0,u.jsx)(Li,{icon:e.icon,className:`h-2.5 w-2.5 flex-shrink-0`}):null,(0,u.jsx)(`span`,{className:`min-w-0 truncate`,children:xi(e)})]})}function zi({resource:e,tags:t,className:n}){return t?(0,u.jsx)(Vi,{tags:t,className:n}):(0,u.jsx)(Bi,{resource:e,className:n})}function Bi({resource:e,className:t}){return(0,u.jsx)(Vi,{tags:Fi(e),className:t})}function Vi({tags:e,className:t}){let n=e;return n.length?(0,u.jsx)(`div`,{className:`pointer-events-none absolute bottom-1 right-1 z-10 flex max-w-full flex-wrap justify-end gap-0.5 ${t||``}`,children:n.map(e=>(0,u.jsx)(Ri,{tag:e},e.type))}):null}const Hi=5e3,Ui=8e3,Wi=(0,l.createContext)(null);function Gi(e){return e===`error`?8e3:5e3}function Ki({children:e,maxVisibleToasts:t=3}){let n=(0,y.useToastState)({maxVisibleToasts:t}),r=(0,l.useMemo)(()=>{let e=(e,t)=>n.add(e,{...t,timeout:t?.timeout??Gi(e.variant)}),t=(t,n,r)=>e({...n,variant:t},r);return{add:e,info:(e,n)=>t(`info`,e,n),success:(e,n)=>t(`success`,e,n),warning:(e,n)=>t(`warning`,e,n),error:(e,n)=>t(`error`,e,n),close:n.close}},[n]);return(0,u.jsxs)(Wi.Provider,{value:r,children:[e,(0,u.jsx)(c.ToastRegion,{state:n})]})}function qi(){let e=(0,l.useContext)(Wi);if(!e)throw Error(`useToasts must be used within a ToastProvider`);return e}function Ji(e){return e.status!==`complete`&&e.status!==`error`||!e.completedAt?null:`${e.id}:${e.status}:${e.completedAt}`}function Yi(e,t,n){let r=t.label||e.label;return t.status===`complete`?{variant:`success`,title:`${r} complete`,description:t.resultsAvailable?`Results are ready.`:void 0,action:t.resultsAvailable&&n?{label:`Results`,onPress:n}:void 0}:t.status===`error`?{variant:`error`,title:`${r} failed`,description:t.error?.message||t.statusText||`Action failed`}:null}function Xi(e){return{id:e.id,type:e.type,label:e.type,scope:`root`}}function Zi(e){if(!(!e||!e.id||e.type!==`Canvas`))return{id:e.id,type:`Canvas`,label:`Current canvas`,scope:`canvas`}}function Qi(){let e=Jr(),t=Yr();return(0,l.useMemo)(()=>Zi([e,...t].find(e=>e?.resource?.source?.type===`Canvas`)?.resource?.source),[e,t])}function $i(){let e=B(),t=Qi(),n=(0,p.useVault)(),r=(0,l.useMemo)(()=>Pi(n),[n]),i=(0,l.useMemo)(()=>xe(n),[n]),a=Fn(),o=F(),s=ci(),c=li();return(0,l.useMemo)(()=>({rootResource:e,currentCanvas:t,vault:n,tags:r,canvasProgress:i,plugins:a,config:o,layoutState:s,layoutActions:c}),[e,t,n,r,i,a,o,s,c])}function ea(){let e=R(e=>e.definitions),t=R(e=>e.instances),n=$i(),r=(0,l.useMemo)(()=>Xi(n.rootResource),[n.rootResource]);return(0,l.useMemo)(()=>Re({definitions:e,instances:t,systemContext:n,targets:[r,...n.currentCanvas?[n.currentCanvas]:[]],onSupportsError:(e,t)=>{console.error(`Background action "${e.id}" failed support check`,t)}}),[e,t,r,n])}function ta(){let e=Nt(),t=R(e=>e.definitions),n=R(e=>e.instances),r=R(e=>e.plans),i=R(e=>e.controllers),a=R(e=>e.hasHydrated),o=$i(),s=(0,l.useRef)(new Set);return(0,l.useEffect)(()=>{if(!a)return;let c=new Map(t.map(e=>[e.id,e]));for(let[t,a]of Object.entries(n)){let n=c.get(a.actionId),l=`${t}:${a.runId}`;!n?.resumable||!ra(a)||!r[t]||i[t]||s.current.has(l)||(s.current.add(l),Tt({store:e,resume:!0,context:{...o,definition:n,target:a.target,instanceKey:t,instance:a}}))}},[i,t,a,n,r,e,o]),(0,u.jsx)(u.Fragment,{children:t.map(e=>e.render?(0,u.jsx)(l.Fragment,{children:e.render({...o,definition:e})},e.id):null)})}function na(){let e=R(e=>e.definitions),t=R(e=>e.instances),n=$i(),r=qi(),i=(0,l.useRef)(new Set),a=(0,l.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]);return(0,l.useEffect)(()=>{for(let e of Object.values(t)){let t=Ji(e);if(!t||i.current.has(t))continue;let o=a.get(e.actionId);if(!o)continue;let s={...n,definition:o,target:e.target,instanceKey:e.id,instance:e},c=Yi(o,e,e.resultsAvailable&&o.onResults?()=>{o.onResults?.(s)}:void 0);c&&(r.add(c),i.current.add(t))}},[a,t,n,r]),null}function ra(e){return e?.status===`preparing`||e?.status===`running`}function ia(e){return!e||e.status===`idle`?``:e.status===`error`?e.error?.message||e.statusText||`Error`:e.status===`complete`&&e.resultsAvailable?`Results ready`:e.status===`cancelled`?`Cancelled`:e.statusText||e.status}function aa(e){return e?new Date(e).toLocaleString():`Not recorded`}function oa(e){return e?new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):`--:--:--`}function sa(e){if(!e.startedAt)return`Not recorded`;let t=e.completedAt||Date.now(),n=Math.max(0,Math.round((t-e.startedAt)/1e3)),r=Math.floor(n/60),i=n%60;return r?`${r}m ${i}s`:`${i}s`}function ca(e){if(e===void 0)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function la({label:e,value:t}){return(0,u.jsxs)(`div`,{className:`min-w-0`,children:[(0,u.jsx)(`dt`,{className:`text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:e}),(0,u.jsx)(`dd`,{className:`mt-1 break-words text-sm text-zinc-800`,children:t})]})}const ua={debug:{label:`DBG`,className:`text-zinc-500`},verbose:{label:`VRB`,className:`text-zinc-500`},info:{label:`INF`,className:`text-sky-400`},log:{label:`LOG`,className:`text-zinc-300`},warn:{label:`WRN`,className:`text-amber-400`},warning:{label:`WRN`,className:`text-amber-400`},error:{label:`ERR`,className:`text-red-400`}};function da(e){return ua[e?.toLowerCase()]??{label:e?.toUpperCase().slice(0,3)??`LOG`,className:`text-zinc-300`}}const fa={error:`bg-red-100 text-red-700`,failed:`bg-red-100 text-red-700`,completed:`bg-green-100 text-green-700`,success:`bg-green-100 text-green-700`,started:`bg-sky-100 text-sky-700`,cancelled:`bg-zinc-100 text-zinc-600`,warning:`bg-amber-100 text-amber-700`,warn:`bg-amber-100 text-amber-700`};function pa(e){return fa[e?.toLowerCase()]??`bg-zinc-100 text-zinc-600`}function ma(e){return e?.toLowerCase()in fa}function ha({definition:e,instance:t,onClose:n}){let[r,i]=(0,l.useState)(`overview`),a=(0,l.useRef)(null),o=t.logs.length;(0,l.useEffect)(()=>{r===`logs`&&a.current?.scrollIntoView({behavior:`instant`})},[r]);let s={idle:`bg-zinc-100 text-zinc-600`,preparing:`bg-orange-100 text-orange-700`,running:`bg-orange-100 text-orange-700`,complete:`bg-green-100 text-green-700`,error:`bg-red-100 text-red-700`,cancelled:`bg-zinc-100 text-zinc-500`},d=t.events.filter(e=>ma(e.type)),f=[{id:`overview`,label:`Overview`},{id:`logs`,label:`Logs`,count:o}];return(0,u.jsxs)(c.Modal,{title:t.label||e.label,onClose:n,className:`max-w-3xl`,children:[(0,u.jsx)(`div`,{className:`sticky top-0 z-10 border-b border-zinc-200 bg-white px-2`,children:(0,u.jsx)(`div`,{className:`flex gap-0.5`,children:f.map(e=>(0,u.jsxs)(`button`,{type:`button`,onClick:()=>i(e.id),className:[`flex items-center gap-1.5 border-b-2 px-3 py-2.5 text-sm transition-colors -mb-px`,r===e.id?`border-me-primary-500 font-semibold text-me-primary-600`:`border-transparent text-zinc-500 hover:text-zinc-800`].join(` `),children:[e.label,e.count?(0,u.jsx)(`span`,{className:`rounded-full bg-zinc-100 px-1.5 py-0.5 text-[10px] font-medium text-zinc-500`,children:e.count}):null]},e.id))})}),r===`overview`&&(0,u.jsxs)(`div`,{className:`flex flex-col gap-5 p-5`,children:[(0,u.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,u.jsx)(`span`,{className:[`inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-semibold uppercase tracking-wide`,s[t.status]??`bg-zinc-100 text-zinc-600`].join(` `),children:t.status}),t.statusText?(0,u.jsx)(`span`,{className:`text-sm text-zinc-500`,children:t.statusText}):null]}),(0,u.jsxs)(`dl`,{className:`grid gap-x-6 gap-y-4 sm:grid-cols-2`,children:[(0,u.jsx)(la,{label:`Target`,value:`${t.target.label} (${t.target.type})`}),(0,u.jsx)(la,{label:`Run ID`,value:t.runId}),(0,u.jsx)(la,{label:`Started`,value:aa(t.startedAt)}),(0,u.jsx)(la,{label:`Finished`,value:aa(t.completedAt)}),(0,u.jsx)(la,{label:`Duration`,value:sa(t)}),t.progress?(0,u.jsx)(la,{label:`Progress`,value:`${Math.round(t.progress.percent)}%${t.progress.label?` — ${t.progress.label}`:``}`}):null]}),t.progress?(0,u.jsxs)(`div`,{children:[(0,u.jsx)(c.BackgroundActionMenuProgressBar,{percent:t.progress.percent,label:t.progress.label||`Background action progress`}),typeof t.progress.current==`number`&&typeof t.progress.total==`number`?(0,u.jsxs)(`div`,{className:`mt-1 text-xs text-zinc-500`,children:[t.progress.current,` of `,t.progress.total,` items`]}):null]}):null,t.error?(0,u.jsxs)(`div`,{className:`rounded-lg border border-red-200 bg-red-50`,children:[(0,u.jsx)(`div`,{className:`border-b border-red-200 px-4 py-2.5`,children:(0,u.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-widest text-red-600`,children:`Error`})}),(0,u.jsxs)(`div`,{className:`p-4`,children:[(0,u.jsx)(`div`,{className:`text-sm font-medium text-red-800`,children:t.error.message}),t.error.stack?(0,u.jsx)(`pre`,{className:`mt-3 max-h-40 overflow-auto rounded bg-red-100 p-3 text-xs text-red-700 leading-relaxed whitespace-pre-wrap`,children:t.error.stack}):null]})]}):null,d.length>0?(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`h3`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:`Key events`}),(0,u.jsx)(`div`,{className:`divide-y divide-zinc-100 rounded-lg border border-zinc-200`,children:d.map(e=>(0,u.jsxs)(`div`,{className:`flex items-baseline gap-3 px-3 py-2`,children:[(0,u.jsx)(`span`,{className:[`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,pa(e.type)].join(` `),children:e.type}),(0,u.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm text-zinc-700`,children:e.message||e.type}),(0,u.jsx)(`time`,{className:`shrink-0 text-xs text-zinc-400`,children:oa(e.createdAt)})]},e.id))})]}):null]}),r===`logs`&&(0,u.jsx)(`div`,{className:`p-5`,children:o===0?(0,u.jsx)(`div`,{className:`rounded-lg border border-zinc-200 p-6 text-center text-sm text-zinc-400`,children:`No logs recorded.`}):(0,u.jsxs)(`div`,{className:`overflow-hidden rounded-lg bg-zinc-950 shadow-inner`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-white/10 px-3 py-2`,children:[(0,u.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,u.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,u.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,u.jsxs)(`span`,{className:`ml-2 text-[10px] text-zinc-500 font-mono`,children:[o,` `,o===1?`entry`:`entries`]})]}),(0,u.jsxs)(`div`,{className:`max-h-[50vh] overflow-y-auto p-1 font-mono text-xs`,children:[t.logs.map(e=>{let t=da(e.level);return(0,u.jsxs)(`div`,{className:`group flex gap-0 hover:bg-white/5 rounded px-2 py-1 leading-relaxed`,children:[(0,u.jsx)(`time`,{className:`w-20 shrink-0 text-zinc-600 select-none pr-2`,children:oa(e.createdAt)}),(0,u.jsx)(`span`,{className:[`w-10 shrink-0 select-none font-bold pr-2`,t.className].join(` `),children:t.label}),(0,u.jsxs)(`span`,{className:`min-w-0 flex-1 text-zinc-200 break-words`,children:[e.message,e.data===void 0?null:(0,u.jsx)(`span`,{className:`block mt-0.5 text-zinc-500 whitespace-pre-wrap`,children:ca(e.data)})]})]},e.id)}),(0,u.jsx)(`div`,{ref:a})]})]})})]})}function ga(){let e=Nt(),t=ea(),[n,r]=(0,l.useState)(null),i=t.reduce((e,t)=>e+t.actions.length,0),a=t.reduce((e,t)=>e+t.actions.filter(e=>ra(e.instance)).length,0),o=t.reduce((e,t)=>e+t.actions.filter(e=>e.instance?.status===`error`).length,0),{isOpen:s,buttonProps:d,itemProps:f,setIsOpen:p}=(0,g.default)(i);if(!i)return null;let m=n?t.flatMap(e=>e.actions).find(e=>e.instanceKey===n):void 0,h=0;return(0,u.jsxs)(c.BackgroundActionMenuRoot,{children:[(0,u.jsx)(c.BackgroundActionMenuButton,{active:s,runningCount:a,errorCount:o,"aria-label":`Actions menu`,...d}),(0,u.jsx)(c.BackgroundActionMenuPanel,{open:s,role:`menu`,children:(0,u.jsx)(`div`,{className:`py-1.5`,children:t.map((t,n)=>(0,u.jsxs)(l.Fragment,{children:[n?(0,u.jsx)(c.BackgroundActionMenuDivider,{}):null,(0,u.jsx)(c.BackgroundActionMenuSection,{children:t.label}),t.actions.map(t=>{let{onKeyDown:n,...i}=f[h++]||{},a=ia(t.instance),o=ra(t.instance),s=()=>{o||(Tt({store:e,context:t.context}),p(!0))},l=()=>{o&&(e.getState().cancelAction(t.instanceKey),p(!0))};return(0,u.jsxs)(c.BackgroundActionMenuItem,{status:t.instance?.status||`idle`,children:[(0,u.jsx)(c.BackgroundActionMenuTrigger,{running:o,...i,"aria-label":o?`Cancel ${t.definition.label}`:`Run ${t.definition.label}`,onMouseDown:e=>{e.preventDefault()},onClick:e=>{e.stopPropagation(),o?l():s()},onKeyDown:e=>{e.key===`Enter`||e.key===` `?(e.preventDefault(),e.stopPropagation(),o?l():s()):n?.(e)},children:(0,u.jsxs)(c.BackgroundActionMenuText,{children:[(0,u.jsx)(c.BackgroundActionMenuLabel,{running:o,children:t.instance?.label||t.definition.label}),a?(0,u.jsx)(c.BackgroundActionMenuMeta,{variant:t.instance?.status===`error`?`error`:`default`,children:a}):null,t.definition.summary&&!a?(0,u.jsx)(c.BackgroundActionMenuMeta,{children:t.definition.summary}):null,o&&t.instance?.progress?(0,u.jsx)(c.BackgroundActionMenuProgressBar,{percent:t.instance.progress.percent,label:t.instance.progress.label||a||t.definition.label}):null]})}),t.instance?.resultsAvailable&&t.definition.onResults?(0,u.jsx)(c.BackgroundActionMenuInlineAction,{onClick:e=>{e.stopPropagation(),t.definition.onResults?.(t.context)},children:`Results`}):null,t.instance?(0,u.jsx)(c.BackgroundActionMenuInfoButton,{"aria-label":`View ${t.definition.label} details`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r(t.instanceKey),p(!0)}}):null]},t.instanceKey)})]},t.id))})}),m?.instance?(0,u.jsx)(ha,{definition:m.definition,instance:m.instance,onClose:()=>r(null)}):null]})}const _a=(0,l.memo)(function(e){let[t]=(0,c.useLocalStorage)(`menu-hidden`);return(0,u.jsx)($n,{children:(0,u.jsxs)(Qn,{children:[(0,u.jsx)(nr,{onClick:e.onClickLogo,children:(0,u.jsx)(c.ManifestEditorLogo,{})}),(0,u.jsx)(Vr,{}),(0,u.jsx)(ga,{})]})})}),va=(0,l.createContext)(null);function ya(){return(0,l.useContext)(va)||null}function ba(e,t){let n=ya();return n?n[e][t]:null}function xa({children:e,menu:t}){return(0,u.jsx)(va.Provider,{value:t,children:e})}function Sa(){return(0,l.useContext)(p.AtlasStoreReactContext)}function Ca(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(e=>e[0])),n=Math.min(...e.points.map(e=>e[1])),r=Math.max(0,...e.points.map(e=>e[0])),i=Math.max(0,...e.points.map(e=>e[1]));return{x:t,y:n,width:r-t,height:i-n}}return null}const wa=async e=>new Promise((t,n)=>{let r=document.createElement(`img`);r.onload=()=>t(r),r.onerror=()=>n(),r.src=e,r.complete&&t(r)}),Ta=async e=>new Promise((t,n)=>{let r=document.createElement(`video`);r.onloadedmetadata=()=>t(r),r.onerror=()=>n(),r.preload=`metadata`,r.src=e});async function Ea(){}async function Da(e,...t){if(!e)return;if(e.endsWith(`.mp3`)||e.endsWith(`.mp4`)||e.endsWith(`.m4a`)||e.endsWith(`.m4v`))try{let t=await Ta(e);if(t){let n=t.videoWidth===0;return{id:e,type:t.videoWidth===0?`Sound`:`Video`,width:t.videoWidth||void 0,height:t.videoHeight||void 0,duration:t.duration,format:n?`audio/mp4`:`video/mp4`}}}catch{}let n=null;try{n=await fetch(e)}catch{return Aa(e)}if(!n.ok&&(n=await fetch(e+`/info.json`),!n.ok))return Aa(e);let r=n.headers.get(`Content-Type`);if(r?.includes(`image/`))return Aa(e,r);let i=null;try{i=await n.json()}catch{return null}return await ka(i,e)}function Oa(e){return e.protocol&&e.protocol===`http://iiif.io/api/image`?(e.type||(e.type=`ImageService`),e):null}async function ka(e,t){let n=Oa(e);if(n)return n;if(!(e.id||e[`@id`]))return null;let r=await new x.Vault().load(t,e);if(r&&(r&&r?.type===`Manifest`||r?.type===`Collection`))return{id:t,type:r.type,label:(0,b.getValue)(r.label)}}async function Aa(e,t){let n=e.split(`/`);if(n.length>=8){let e=n.slice(-4);if(e[3].split(`.`).length===2&&(e[2][0]===`!`||e[2]===e[2])){let e=await ja(n.slice(0,n.length-4).join(`/`)+`/info.json`);if(e&&e?.type&&e?.type?.startsWith(`ImageService`))return e}}try{let n=await wa(e);return{id:e,type:`Image`,width:n.width,height:n.height,format:await Ma(e,t)}}catch{}return null}async function ja(e){try{let t=await fetch(e);return t.ok?await ka(await t.json(),e):null}catch(e){return console.log(e),null}}async function Ma(e,t){if(t)return t;try{let t=(await fetch(e,{method:`HEAD`,mode:`no-cors`})).headers.get(`Content-type`);if(t)return t}catch{}let n=e.toLowerCase();return n.endsWith(`jpg`)||n.endsWith(`jpeg`)?`image/jpeg`:n.endsWith(`png`)?`image/png`:`image/jpeg`}async function Na(e){try{let t=await wa(e);if(t)return{width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}}catch{return null}return null}const Pa=(0,d.create)(e=>({regions:{},resources:[],setRegion:(t,n)=>{e(e=>({...e.regions,regions:{[t]:n||null}}))},setHighlight:t=>{e({resources:Array.isArray(t)?t:[t]})},highlight:t=>{e(e=>e.resources.indexOf(t)===-1?{resources:[...e.resources,t]}:e)},clearHighlight:t=>{e(e=>({resources:e.resources.filter(e=>e!==t)}))}}));function Fa(e){let t=(0,l.useMemo)(()=>Bt(),[]),n=Pa(e=>e.regions[t]),r=Pa(e=>e.setRegion);(0,l.useEffect)(()=>{n&&e?n!==e&&(n.x!==e.x||n.y!==e.y||n.width!==e.width||n.height!==e.height)&&r(t,e||null):r(t,e||null)},[n]),(0,l.useEffect)(()=>()=>r(t,null),[])}function Ia(e){let t=Pa(e=>e.highlight),n=Pa(e=>e.clearHighlight);return(0,l.useEffect)(()=>()=>{e&&n(e)},[n,e]),(0,l.useMemo)(()=>({onMouseEnter(){e&&t(e)},onMouseLeave(){e&&n(e)}}),[e,t,n])}const La=e=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`0 0 24 24`,...e,children:[(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z`,fill:`currentColor`})]}),Ra=({style:e})=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`1rem`,fill:`#000000`,style:e,children:[(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`})]});function za(e){let t=e.error.toString(),[n,r]=(0,l.useState)(!1);return(0,u.jsxs)(c.PaddedSidebarContainer,{children:[(0,u.jsx)(c.ErrorMessage,{className:`mb-2`,children:t}),(0,u.jsx)(kr,{onClick:e.resetErrorBoundary,children:`Try again`})]})}function Ba(e){return e&&e.pinnable}function Va({initial:e,fallback:t,options:n={}}){return Math.max(n.minWidth||0,Math.min(n.maxWidth||1/0,e||t))}function Ha(e){return typeof e==`string`?(0,l.createElement)(`div`,{dangerouslySetInnerHTML:{__html:e}}):e}const Ua=h.default.div`
242
+ `;function Ir(e,t){return e>0||!!t?.mainAction||!!t?.actions?.length}function Lr({downloadEnabled:e,fileName:t,preview:n}){let{active:r,configs:i,actions:a,selected:o}=Cr(),s=(0,m.useVault)(),c=z(),u=W(),f=i.filter(e=>e.type===`external-manifest-preview`),p=n?.actions||[],{isOpen:h,buttonProps:g,itemProps:_}=ir(f.length+p.length);return Ir(f.length,n)?(0,d.jsxs)(d.Fragment,{children:[e?(0,d.jsx)(`div`,{className:`mr-4`,children:(0,d.jsx)(l.DownloadButton,{fileName:t||`manifest.json`,label:`Download manifest`,getData:()=>c.export&&c.export.version===2?JSON.stringify(s.toPresentation2(u),null,2):JSON.stringify(s.toPresentation3(u),null,2)})}):null,(0,d.jsxs)(Er,{children:[(0,d.jsx)(Dr,{"data-preview-action":n?.mainAction?.id,disabled:n?.mainAction?.disabled||!n?.mainAction&&f.length===0,onClick:()=>{if(n?.mainAction){n.mainAction.onClick();return}if(f.length){if(!o){let e=c.defaultPreview;if(e){let t=i.find(t=>t.id===e);if(t){a.selectPreview(t.id);return}}a.selectPreview(i[0].id)}a.updatePreviews()}},children:n?.mainAction?.label||`Preview`}),f.length+p.length>0?(0,d.jsx)(Or,{$open:h,...g,"aria-label":`Choose preview`,children:(0,d.jsx)(nr,{"aria-hidden":!0})}):null,(0,d.jsxs)(kr,{$open:h,role:`menu`,children:[f.map((e,t)=>{let n=r.indexOf(e.id)===-1;return(0,d.jsxs)(Ar,{..._[t],children:[(0,d.jsx)(Mr,{$status:n?`available`:e.id===o?`active`:`configured`}),(0,d.jsx)(Nr,{onClick:()=>{a.selectPreview(e.id)},children:e.label}),n?null:(0,d.jsx)(Pr,{onClick:()=>a.deletePreview(e.id),children:(0,d.jsx)(tr,{})})]},e.id)}),p.map((e,t)=>(0,d.jsxs)(Ar,{..._[f.length+t],"aria-disabled":e.disabled||void 0,onClick:()=>{e.disabled||e.onClick()},children:[(0,d.jsx)(Mr,{$status:e.status||`available`}),(0,d.jsx)(Nr,{children:e.label})]},e.id))]})]})]}):(0,d.jsx)(Fr,{children:`Preview not available`})}const Rr=(0,u.createContext)({resource:null});function zr(){return(0,u.useContext)(Rr)}function Br(){let e=(0,m.useVault)(),{resource:t}=zr();N(t,`Nothing selected`);let{id:n,type:r}=t;return(0,m.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function Vr(){let{resource:e}=zr();return e}function Hr({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,d.jsx)(Rr.Provider,{value:(0,u.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}function Ur(e,t){switch(t.type){case`setStack`:return{...e,stack:t.payload.resources,current:t.payload.resources[0]||null};case`edit`:{let n=t.payload.reset;return(t.payload.resource?.resource.source?.type===`Manifest`||t.payload.resource?.resource.source?.type===`Canvas`)&&(n=!0),e.current?.resource.source.id===t.payload.resource?.resource.source.id?{...e,current:t.payload.resource}:{...e,current:t.payload.resource,stack:n?[]:e.current?[e.current,...e.stack]:e.stack}}case`syncRemoval`:{let n=(0,h.toRef)(t.payload.resource.resource);if(!n||!e.stack.find(e=>(0,h.toRef)(e.resource)?.id===n.id))return e;let r=e.current?.resource.id===n.id?null:e.current,i=Wr(e.stack.filter(e=>(0,h.toRef)(e.resource)?.id!==n.id),r);return{...e,stack:i,current:r}}case`updateCurrent`:return{...e,current:t.payload.resource};case`back`:{let t=e.stack[0];return{...e,stack:e.stack.slice(1),current:t||null}}case`close`:return{...e,stack:[],current:null};case`create`:return t.payload.resource===null?{...e,create:null}:{...e,create:t.payload}}return e}function Wr(e,t){let n=[],r=null;for(let t of e)r?.resource.id!==t.resource.id&&(n.push(t),r=t);return r&&r.resource.id===t?.resource.id?n.slice(0,n.length-1):n}const Gr={stack:[],current:null,create:null},Kr=(0,u.createContext)(Gr),qr=(0,u.createContext)({edit(){},close(){},back(){},setStack(){},updateCurrent(){},create(){return()=>{}}});function Jr(){return(0,u.useContext)(qr)}function Yr(){return(0,u.useContext)(Kr).current}function Xr(){return(0,u.useContext)(Kr).stack}function Zr(){return(0,u.useContext)(Kr).create}function Qr(){let{manifest:e}=(0,m.useResourceContext)(),t=(0,m.useVault)(),[n,r]=(0,u.useReducer)(e=>e+1,0);N(e,`Manifest not found`);let i=(0,u.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Manifest`},vault:t}),[e,t]);return(0,u.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function $r(){let{collection:e}=(0,m.useResourceContext)(),t=(0,m.useVault)(),[n,r]=(0,u.useReducer)(e=>e+1,0);N(e,`Collection not found`);let i=(0,u.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Collection`},vault:t}),[e,t]);return(0,u.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function ei(e,t={}){let n=(0,m.useVault)(),[r,i]=(0,u.useReducer)(e=>e+1,0);!t.allowNull&&N(e,`Resource not found`);let a=(0,u.useMemo)(()=>t.allowNull&&!e?null:new v.EditorInstance({reference:(0,h.toRef)(e),vault:n,context:{resource:e,parent:t.parent,index:t.index,parentProperty:t.parentProperty}}),[e,n]);return(0,u.useEffect)(()=>a?.observe.start(i),[a]),a&&(a.observe.key=`${r}`,a.observe.reset()),a}function ti(){let{annotationPage:e}=(0,m.useResourceContext)();return N(e,`Annotation page not found`),ei({id:e,type:`AnnotationPage`})}function ni(){let e=Yr(),{resource:t}=zr(),n=(0,m.useVault)(),[r,i]=(0,u.useReducer)(e=>e+1,0);N(e,`No resource selected`);let a=(0,u.useMemo)(()=>new v.EditorInstance({reference:t||e.resource.source||e.resource,vault:n}),[t,e,n]);return(0,u.useEffect)(()=>a.observe.start(i),[a]),a.observe.key=`${r}`,a.observe.reset(),a}function ri(e){let t=(0,m.useVault)(),[n,r]=(0,u.useReducer)(Ur,e),i=(0,u.useCallback)(e=>{r(e)},[]);(0,u.useEffect)(()=>t.on(`@iiif/REMOVE_REFERENCE`,e=>{let t=e.action,n={id:t.payload.id,type:t.payload.type},i=t.payload.reference;r({type:`syncRemoval`,payload:{resource:{parent:n,resource:i}}})}),[t]);let a=(0,u.useCallback)((e,t=!1)=>i({type:`edit`,payload:{resource:e,reset:t}}),[]),o=(0,u.useCallback)(e=>i({type:`setStack`,payload:{resources:e}}),[]),s=(0,u.useCallback)(e=>i({type:`updateCurrent`,payload:{resource:e}}),[]),c=(0,u.useCallback)(()=>i({type:`close`}),[]),l=(0,u.useCallback)(()=>i({type:`back`}),[]),d=(0,u.useCallback)((e,t)=>(i({type:`create`,payload:{resource:e,options:t}}),()=>{i({type:`create`,payload:{resource:null}})}),[]);return[n,(0,u.useMemo)(()=>({edit:a,updateCurrent:s,close:c,back:l,create:d,setStack:o}),[])]}function ii(e){let{instanceId:t}=Hn(),[n,r]=ri(e.initialState||Gr);return(0,d.jsx)(qr.Provider,{value:r,children:(0,d.jsx)(Kr.Provider,{value:n,children:e.children})},t)}function ai({resource:e,children:t}){let{instanceId:n}=Hn(),[r,i]=ri((0,u.useMemo)(()=>({create:null,stack:[],current:{resource:{type:`SpecificResource`,source:{id:e.id,type:e.type}}}}),[]));return(0,d.jsx)(qr.Provider,{value:i,children:(0,d.jsx)(Kr.Provider,{value:r,children:t})},n)}const oi=(0,u.createContext)(null),si=(0,u.createContext)(null),ci=(0,u.createContext)(`default`);function li(){return(0,u.useContext)(si)}function ui(){return(0,u.useContext)(oi)}function di(){return(0,u.useContext)(ci)}function fi(){return U().layout}function pi(){let e=U(),t=e.layout,n=(0,u.useContext)(oi),r=(0,u.useContext)(si);return(0,u.useMemo)(()=>({actions:n,state:r,...t}),[e,r])}const mi=`@manifest-editor/tags`,hi=`tags`,gi={type:`flag`,id:`flag`,label:`Flag`,backgroundColor:`#b91c1c`,textColor:`#ffffff`,icon:`flag`},_i=[];function vi(e){return typeof e==`string`?e:e?.id||null}function yi(e){return e.type||e.id}function bi(e){return`${e.type}:${e.id}`}function xi(e){if(!Array.isArray(e))return _i;let t=new Map;for(let n of e){if(!n?.id)continue;let e=yi(n);t.set(e,{...n,type:e})}return Array.from(t.values())}function Si(e){return e.label||e.id||e.type}function Ci(e,t){return e===gi.type&&(!t||t===gi.id)}function wi(e,t){return Ci(e.type,e.id)?-1:Ci(t.type,t.id)?1:Si(e.tag).localeCompare(Si(t.tag))||e.type.localeCompare(t.type)||e.id.localeCompare(t.id)}function Ti(e,t){return Ci(e.type)?-1:Ci(t.type)?1:e.type.localeCompare(t.type)}function Ei(e,t){let n=vi(t);return n?xi(e.getResourceMeta(n,mi)?.[hi]):_i}function Di(e,t){let n=vi(t);return n?xi(e?.iiif?.meta?.[n]?.[mi]?.[hi]):_i}function Oi(e,t,n){let r=vi(t);if(!r)return _i;let i=xi(n);return e.setMetaValue([r,mi,hi],i),i}function ki(e,t,n){return Oi(e,t,[...Ei(e,t),n])}function Ai(e,t,n){return Ei(e,t).find(e=>e.type===n)}function ji(e,t,n,r){return Oi(e,t,Ei(e,t).filter(e=>e.type!==n||(r?e.id!==r:!1)))}function Mi(e,t){let n=new Map;for(let r of t){let t=vi(r);if(t)for(let i of Ei(e,r)){let e=i.type,r=bi(i),a=n.get(e);a||(a={key:e,type:i.type,rows:[],canvasIds:[],canvasCount:0,tagCount:0},n.set(e,a));let o=a.rows.find(e=>e.key===r);o||(o={key:r,type:i.type,id:i.id,tag:i,canvasIds:[],canvasCount:0},a.rows.push(o)),o.canvasIds.push(t),o.canvasCount=o.canvasIds.length,a.tagCount+=1}}for(let e of n.values())e.rows.sort(wi),e.canvasIds=Array.from(new Set(e.rows.flatMap(e=>e.canvasIds))),e.canvasCount=e.canvasIds.length;return Array.from(n.values()).sort(Ti)}function Ni(e,t,n,r){let i=Ai(e,t,n);return r?i?.id===r:!!i}function Pi(e,t,n){return Ni(e,t,n.type,n.id)?ji(e,t,n.type):ki(e,t,n)}function Fi(e){return{getTags(t){return Ei(e,t)},setTags(t,n){return Oi(e,t,n)},addTag(t,n){return ki(e,t,n)},upsertTag(t,n){return ki(e,t,n)},getTag(t,n){return Ai(e,t,n)},removeTag(t,n,r){return ji(e,t,n,r)},hasTag(t,n,r){return Ni(e,t,n,r)},toggleTag(t,n){return Pi(e,t,n)}}}function Ii(e){let t=vi(e);return(0,m.useVaultSelector)(e=>t?Di(e,t):_i,[t])}function Li(e){let t=(0,m.useVault)(),n=vi(e),r=(0,u.useMemo)(()=>Fi(t),[t]);return(0,u.useMemo)(()=>({setTags(e){return r.setTags(n,e)},addTag(e){return r.addTag(n,e)},getTag(e){return r.getTag(n,e)},removeTag(e,t){return r.removeTag(n,e,t)},toggleTag(e){return r.toggleTag(n,e)},hasTag(e,t){return r.hasTag(n,e,t)}}),[r,n])}function Ri({icon:e,title:t,...n}){return e===`flag`?(0,d.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`1em`,height:`1em`,"aria-hidden":!t||void 0,...n,children:[t?(0,d.jsx)(`title`,{children:t}):null,(0,d.jsx)(`path`,{fill:`currentColor`,d:`M5 21a1 1 0 0 1-1-1V5.6c0-.42.26-.8.65-.94C6.7 3.9 8.65 4 10.5 4.7c1.55.58 3.05.7 4.5.36l3.75-.88A1 1 0 0 1 20 5.15v9.25c0 .46-.31.86-.75.97l-3.79.9c-1.85.43-3.76.28-5.66-.43-1.28-.48-2.55-.59-3.8-.33V20a1 1 0 0 1-1 1Z`})]}):null}function zi({tag:e,showIcon:t=!0,className:n,style:r}){return(0,d.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-0.5 rounded px-1 py-0.5 font-medium shadow-sm ${n||``}`,style:{backgroundColor:e.backgroundColor||`#e5e7eb`,color:e.textColor||`#111827`,fontSize:9,lineHeight:`11px`,...r},children:[t&&e.icon?(0,d.jsx)(Ri,{icon:e.icon,className:`h-2.5 w-2.5 flex-shrink-0`}):null,(0,d.jsx)(`span`,{className:`min-w-0 truncate`,children:Si(e)})]})}function Bi({resource:e,tags:t,className:n}){return t?(0,d.jsx)(Hi,{tags:t,className:n}):(0,d.jsx)(Vi,{resource:e,className:n})}function Vi({resource:e,className:t}){let n=Ii(e);return(0,d.jsx)(Hi,{tags:n,className:t})}function Hi({tags:e,className:t}){let n=e;return n.length?(0,d.jsx)(`div`,{className:`pointer-events-none absolute bottom-1 right-1 z-10 flex max-w-full flex-wrap justify-end gap-0.5 ${t||``}`,children:n.map(e=>(0,d.jsx)(zi,{tag:e},e.type))}):null}const Ui=(0,u.createContext)(null);function Wi(e){return e===`error`?8e3:5e3}function Gi({children:e,maxVisibleToasts:t=3}){let n=(0,y.useToastState)({maxVisibleToasts:t}),r=(0,u.useMemo)(()=>{let e=(e,t)=>n.add(e,{...t,timeout:t?.timeout??Wi(e.variant)}),t=(t,n,r)=>e({...n,variant:t},r);return{add:e,info:(e,n)=>t(`info`,e,n),success:(e,n)=>t(`success`,e,n),warning:(e,n)=>t(`warning`,e,n),error:(e,n)=>t(`error`,e,n),close:n.close}},[n]);return(0,d.jsxs)(Ui.Provider,{value:r,children:[e,(0,d.jsx)(l.ToastRegion,{state:n})]})}function Ki(){let e=(0,u.useContext)(Ui);if(!e)throw Error(`useToasts must be used within a ToastProvider`);return e}function qi(e){return e.status!==`complete`&&e.status!==`error`||!e.completedAt?null:`${e.id}:${e.status}:${e.completedAt}`}function Ji(e,t,n){let r=t.label||e.label;return t.status===`complete`?{variant:`success`,title:`${r} complete`,description:t.resultsAvailable?`Results are ready.`:void 0,action:t.resultsAvailable&&n?{label:`Results`,onPress:n}:void 0}:t.status===`error`?{variant:`error`,title:`${r} failed`,description:t.error?.message||t.statusText||`Action failed`}:null}function Yi(e){return{id:e.id,type:e.type,label:e.type,scope:`root`}}function Xi(e){if(!(!e||!e.id||e.type!==`Canvas`))return{id:e.id,type:`Canvas`,label:`Current canvas`,scope:`canvas`}}function Zi(){let e=Yr(),t=Xr();return(0,u.useMemo)(()=>Xi([e,...t].find(e=>e?.resource?.source?.type===`Canvas`)?.resource?.source),[e,t])}function Qi(){let e=W(),t=Zi(),n=(0,m.useVault)(),r=(0,u.useMemo)(()=>Fi(n),[n]),i=(0,u.useMemo)(()=>ve(n),[n]),a=Nn(),o=z(),s=li(),c=ui();return(0,u.useMemo)(()=>({rootResource:e,currentCanvas:t,vault:n,tags:r,canvasProgress:i,plugins:a,config:o,layoutState:s,layoutActions:c}),[e,t,n,r,i,a,o,s,c])}function $i(){let e=H(e=>e.definitions),t=H(e=>e.instances),n=Qi(),r=(0,u.useMemo)(()=>Yi(n.rootResource),[n.rootResource]);return(0,u.useMemo)(()=>{let i=[r,...n.currentCanvas?[n.currentCanvas]:[]];return Fe({definitions:e,instances:t,systemContext:n,targets:i,onSupportsError:(e,t)=>{console.error(`Background action "${e.id}" failed support check`,t)}})},[e,t,r,n])}function ea(){let e=At(),t=H(e=>e.definitions),n=H(e=>e.instances),r=H(e=>e.plans),i=H(e=>e.controllers),a=H(e=>e.hasHydrated),o=Qi(),s=(0,u.useRef)(new Set);return(0,u.useEffect)(()=>{if(!a)return;let c=new Map(t.map(e=>[e.id,e]));for(let[t,a]of Object.entries(n)){let n=c.get(a.actionId),l=`${t}:${a.runId}`;!n?.resumable||!na(a)||!r[t]||i[t]||s.current.has(l)||(s.current.add(l),St({store:e,resume:!0,context:{...o,definition:n,target:a.target,instanceKey:t,instance:a}}))}},[i,t,a,n,r,e,o]),(0,d.jsx)(d.Fragment,{children:t.map(e=>e.render?(0,d.jsx)(u.Fragment,{children:e.render({...o,definition:e})},e.id):null)})}function ta(){let e=H(e=>e.definitions),t=H(e=>e.instances),n=Qi(),r=Ki(),i=(0,u.useRef)(new Set),a=(0,u.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]);return(0,u.useEffect)(()=>{for(let e of Object.values(t)){let t=qi(e);if(!t||i.current.has(t))continue;let o=a.get(e.actionId);if(!o)continue;let s={...n,definition:o,target:e.target,instanceKey:e.id,instance:e},c=Ji(o,e,e.resultsAvailable&&o.onResults?()=>{o.onResults?.(s)}:void 0);c&&(r.add(c),i.current.add(t))}},[a,t,n,r]),null}function na(e){return e?.status===`preparing`||e?.status===`running`}function ra(e){return!e||e.status===`idle`?``:e.status===`error`?e.error?.message||e.statusText||`Error`:e.status===`complete`&&e.resultsAvailable?`Results ready`:e.status===`cancelled`?`Cancelled`:e.statusText||e.status}function ia(e){return e?new Date(e).toLocaleString():`Not recorded`}function aa(e){return e?new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):`--:--:--`}function oa(e){if(!e.startedAt)return`Not recorded`;let t=e.completedAt||Date.now(),n=Math.max(0,Math.round((t-e.startedAt)/1e3)),r=Math.floor(n/60),i=n%60;return r?`${r}m ${i}s`:`${i}s`}function sa(e){if(e===void 0)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ca({label:e,value:t}){return(0,d.jsxs)(`div`,{className:`min-w-0`,children:[(0,d.jsx)(`dt`,{className:`text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:e}),(0,d.jsx)(`dd`,{className:`mt-1 break-words text-sm text-zinc-800`,children:t})]})}const la={debug:{label:`DBG`,className:`text-zinc-500`},verbose:{label:`VRB`,className:`text-zinc-500`},info:{label:`INF`,className:`text-sky-400`},log:{label:`LOG`,className:`text-zinc-300`},warn:{label:`WRN`,className:`text-amber-400`},warning:{label:`WRN`,className:`text-amber-400`},error:{label:`ERR`,className:`text-red-400`}};function ua(e){return la[e?.toLowerCase()]??{label:e?.toUpperCase().slice(0,3)??`LOG`,className:`text-zinc-300`}}const da={error:`bg-red-100 text-red-700`,failed:`bg-red-100 text-red-700`,completed:`bg-green-100 text-green-700`,success:`bg-green-100 text-green-700`,started:`bg-sky-100 text-sky-700`,cancelled:`bg-zinc-100 text-zinc-600`,warning:`bg-amber-100 text-amber-700`,warn:`bg-amber-100 text-amber-700`};function fa(e){return da[e?.toLowerCase()]??`bg-zinc-100 text-zinc-600`}function pa(e){return e?.toLowerCase()in da}function ma({definition:e,instance:t,onClose:n}){let[r,i]=(0,u.useState)(`overview`),a=(0,u.useRef)(null),o=t.logs.length;(0,u.useEffect)(()=>{r===`logs`&&a.current?.scrollIntoView({behavior:`instant`})},[r]);let s={idle:`bg-zinc-100 text-zinc-600`,preparing:`bg-orange-100 text-orange-700`,running:`bg-orange-100 text-orange-700`,complete:`bg-green-100 text-green-700`,error:`bg-red-100 text-red-700`,cancelled:`bg-zinc-100 text-zinc-500`},c=t.events.filter(e=>pa(e.type)),f=[{id:`overview`,label:`Overview`},{id:`logs`,label:`Logs`,count:o}];return(0,d.jsxs)(l.Modal,{title:t.label||e.label,onClose:n,className:`max-w-3xl`,children:[(0,d.jsx)(`div`,{className:`sticky top-0 z-10 border-b border-zinc-200 bg-white px-2`,children:(0,d.jsx)(`div`,{className:`flex gap-0.5`,children:f.map(e=>(0,d.jsxs)(`button`,{type:`button`,onClick:()=>i(e.id),className:[`flex items-center gap-1.5 border-b-2 px-3 py-2.5 text-sm transition-colors -mb-px`,r===e.id?`border-me-primary-500 font-semibold text-me-primary-600`:`border-transparent text-zinc-500 hover:text-zinc-800`].join(` `),children:[e.label,e.count?(0,d.jsx)(`span`,{className:`rounded-full bg-zinc-100 px-1.5 py-0.5 text-[10px] font-medium text-zinc-500`,children:e.count}):null]},e.id))})}),r===`overview`&&(0,d.jsxs)(`div`,{className:`flex flex-col gap-5 p-5`,children:[(0,d.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,d.jsx)(`span`,{className:[`inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-semibold uppercase tracking-wide`,s[t.status]??`bg-zinc-100 text-zinc-600`].join(` `),children:t.status}),t.statusText?(0,d.jsx)(`span`,{className:`text-sm text-zinc-500`,children:t.statusText}):null]}),(0,d.jsxs)(`dl`,{className:`grid gap-x-6 gap-y-4 sm:grid-cols-2`,children:[(0,d.jsx)(ca,{label:`Target`,value:`${t.target.label} (${t.target.type})`}),(0,d.jsx)(ca,{label:`Run ID`,value:t.runId}),(0,d.jsx)(ca,{label:`Started`,value:ia(t.startedAt)}),(0,d.jsx)(ca,{label:`Finished`,value:ia(t.completedAt)}),(0,d.jsx)(ca,{label:`Duration`,value:oa(t)}),t.progress?(0,d.jsx)(ca,{label:`Progress`,value:`${Math.round(t.progress.percent)}%${t.progress.label?` — ${t.progress.label}`:``}`}):null]}),t.progress?(0,d.jsxs)(`div`,{children:[(0,d.jsx)(l.BackgroundActionMenuProgressBar,{percent:t.progress.percent,label:t.progress.label||`Background action progress`}),typeof t.progress.current==`number`&&typeof t.progress.total==`number`?(0,d.jsxs)(`div`,{className:`mt-1 text-xs text-zinc-500`,children:[t.progress.current,` of `,t.progress.total,` items`]}):null]}):null,t.error?(0,d.jsxs)(`div`,{className:`rounded-lg border border-red-200 bg-red-50`,children:[(0,d.jsx)(`div`,{className:`border-b border-red-200 px-4 py-2.5`,children:(0,d.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-widest text-red-600`,children:`Error`})}),(0,d.jsxs)(`div`,{className:`p-4`,children:[(0,d.jsx)(`div`,{className:`text-sm font-medium text-red-800`,children:t.error.message}),t.error.stack?(0,d.jsx)(`pre`,{className:`mt-3 max-h-40 overflow-auto rounded bg-red-100 p-3 text-xs text-red-700 leading-relaxed whitespace-pre-wrap`,children:t.error.stack}):null]})]}):null,c.length>0?(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h3`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:`Key events`}),(0,d.jsx)(`div`,{className:`divide-y divide-zinc-100 rounded-lg border border-zinc-200`,children:c.map(e=>(0,d.jsxs)(`div`,{className:`flex items-baseline gap-3 px-3 py-2`,children:[(0,d.jsx)(`span`,{className:[`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,fa(e.type)].join(` `),children:e.type}),(0,d.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm text-zinc-700`,children:e.message||e.type}),(0,d.jsx)(`time`,{className:`shrink-0 text-xs text-zinc-400`,children:aa(e.createdAt)})]},e.id))})]}):null]}),r===`logs`&&(0,d.jsx)(`div`,{className:`p-5`,children:o===0?(0,d.jsx)(`div`,{className:`rounded-lg border border-zinc-200 p-6 text-center text-sm text-zinc-400`,children:`No logs recorded.`}):(0,d.jsxs)(`div`,{className:`overflow-hidden rounded-lg bg-zinc-950 shadow-inner`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-white/10 px-3 py-2`,children:[(0,d.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,d.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,d.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,d.jsxs)(`span`,{className:`ml-2 text-[10px] text-zinc-500 font-mono`,children:[o,` `,o===1?`entry`:`entries`]})]}),(0,d.jsxs)(`div`,{className:`max-h-[50vh] overflow-y-auto p-1 font-mono text-xs`,children:[t.logs.map(e=>{let t=ua(e.level);return(0,d.jsxs)(`div`,{className:`group flex gap-0 hover:bg-white/5 rounded px-2 py-1 leading-relaxed`,children:[(0,d.jsx)(`time`,{className:`w-20 shrink-0 text-zinc-600 select-none pr-2`,children:aa(e.createdAt)}),(0,d.jsx)(`span`,{className:[`w-10 shrink-0 select-none font-bold pr-2`,t.className].join(` `),children:t.label}),(0,d.jsxs)(`span`,{className:`min-w-0 flex-1 text-zinc-200 break-words`,children:[e.message,e.data===void 0?null:(0,d.jsx)(`span`,{className:`block mt-0.5 text-zinc-500 whitespace-pre-wrap`,children:sa(e.data)})]})]},e.id)}),(0,d.jsx)(`div`,{ref:a})]})]})})]})}function ha(){let e=At(),t=$i(),[n,r]=(0,u.useState)(null),i=t.reduce((e,t)=>e+t.actions.length,0),a=t.reduce((e,t)=>e+t.actions.filter(e=>na(e.instance)).length,0),o=t.reduce((e,t)=>e+t.actions.filter(e=>e.instance?.status===`error`).length,0),{isOpen:s,buttonProps:c,itemProps:f,setIsOpen:p}=ir(i);if(!i)return null;let m=n?t.flatMap(e=>e.actions).find(e=>e.instanceKey===n):void 0,h=0;return(0,d.jsxs)(l.BackgroundActionMenuRoot,{children:[(0,d.jsx)(l.BackgroundActionMenuButton,{active:s,runningCount:a,errorCount:o,"aria-label":`Actions menu`,...c}),(0,d.jsx)(l.BackgroundActionMenuPanel,{open:s,role:`menu`,"aria-hidden":!s,inert:!s,children:(0,d.jsx)(`div`,{className:`py-1.5`,children:t.map((t,n)=>(0,d.jsxs)(u.Fragment,{children:[n?(0,d.jsx)(l.BackgroundActionMenuDivider,{}):null,(0,d.jsx)(l.BackgroundActionMenuSection,{children:t.label}),t.actions.map(t=>{let{onKeyDown:n,...i}=f[h++]||{},a=ra(t.instance),o=na(t.instance),s=()=>{o||(St({store:e,context:t.context}),p(!0))},c=()=>{o&&(e.getState().cancelAction(t.instanceKey),p(!0))};return(0,d.jsxs)(l.BackgroundActionMenuItem,{status:t.instance?.status||`idle`,children:[(0,d.jsx)(l.BackgroundActionMenuTrigger,{running:o,...i,"aria-label":o?`Cancel ${t.definition.label}`:`Run ${t.definition.label}`,onMouseDown:e=>{e.preventDefault()},onClick:e=>{e.stopPropagation(),o?c():s()},onKeyDown:e=>{e.key===`Enter`||e.key===` `?(e.preventDefault(),e.stopPropagation(),o?c():s()):n?.(e)},children:(0,d.jsxs)(l.BackgroundActionMenuText,{children:[(0,d.jsx)(l.BackgroundActionMenuLabel,{running:o,children:t.instance?.label||t.definition.label}),a?(0,d.jsx)(l.BackgroundActionMenuMeta,{variant:t.instance?.status===`error`?`error`:`default`,children:a}):null,t.definition.summary&&!a?(0,d.jsx)(l.BackgroundActionMenuMeta,{children:t.definition.summary}):null,o&&t.instance?.progress?(0,d.jsx)(l.BackgroundActionMenuProgressBar,{percent:t.instance.progress.percent,label:t.instance.progress.label||a||t.definition.label}):null]})}),t.instance?.resultsAvailable&&t.definition.onResults?(0,d.jsx)(l.BackgroundActionMenuInlineAction,{onClick:e=>{e.stopPropagation(),t.definition.onResults?.(t.context)},children:`Results`}):null,t.instance?(0,d.jsx)(l.BackgroundActionMenuInfoButton,{"aria-label":`View ${t.definition.label} details`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r(t.instanceKey),p(!0)}}):null]},t.instanceKey)})]},t.id))})}),m?.instance?(0,d.jsx)(ma,{definition:m.definition,instance:m.instance,onClose:()=>r(null)}):null]})}const ga=new Set([`fullpage`,`slideshow`,`scroll`]);function _a(e,t){return[...e.filter(e=>!e.startsWith(`template-`)&&!ga.has(e)),t.type,`template-${t.id}`]}function va(e,t=[]){let n=t.find(e=>e.startsWith(`template-`))?.slice(9);return e.find(e=>e.id===n)||e.find(e=>t.includes(e.type))||null}function ya(e,t,n=[]){return va(e,n)||e.find(e=>e.id===t)||e[0]||null}const ba=`manifest-editor:preset-onboarding:open`;function xa(e){return typeof window<`u`&&window.localStorage.getItem(e)===`true`}function Sa(e){typeof window<`u`&&window.localStorage.setItem(e,`true`)}function Ca(e,t){return e.mode===`global`||!t?`preset-onboarding/${e.id}`:`preset-onboarding/${e.id}/${t.type}/${t.id}`}function wa(){let e=U(),t=W(),n=e.preset?.onboarding,r=n?Ca(n,t):null;return()=>window.dispatchEvent(new CustomEvent(ba,{detail:r}))}function Ta({className:e}){let t=U().preset?.onboarding,n=wa();return t?(0,d.jsx)(l.ActionButton,{className:e,onPress:n,children:t.openLabel||`Open guide`}):null}function Ea(e){let t=U(),n=W(),{state:r,setState:i}=Un(),a=t.preset?.onboarding,o=t.preset?.onboarding?.renderPreviewButton,s=a?Ca(a,n):null,c=!!s&&r?.presetOnboardingPreviewHintKey===s;return o?o({...e,preview:t.preset?.preview,showOnboardingPreviewHint:c,onOnboardingPreviewHintClose:()=>{c&&i({presetOnboardingPreviewHintKey:null})}}):(0,d.jsx)(Lr,{...e,preview:t.preset?.preview})}function Da(){let e=U(),t=W(),n=e.preset?.onboarding,{setState:r}=Un(),i=Gn(),a=(0,m.useManifest)(),o=(0,m.useVault)(),s=a?.behavior||[],c=va(i.templates,s),f=ya(i.templates,i.selectedTemplateId,s),p=(0,u.useRef)(f?.id||null);p.current=f?.id||null;let h=(0,u.useMemo)(()=>n?Ca(n,t):null,[n,t]),[g,_]=(0,u.useState)(!1),[v,y]=(0,u.useState)(!1);if((0,u.useEffect)(()=>{if(!h)return;let e=!c&&!xa(h);_(e),y(e)},[c,h]),(0,u.useEffect)(()=>{let e=e=>{e.detail===h&&(r({presetOnboardingPreviewHintKey:null}),_(!!n),y(!1))};return window.addEventListener(ba,e),()=>window.removeEventListener(ba,e)},[h,n,r]),!n||!h)return null;let b=()=>{i.setSelectedTemplateId(ya(i.templates,p.current)?.id||null),Sa(h),v&&r({presetOnboardingPreviewHintKey:h}),_(!1),y(!1)},x=e=>{p.current=e,i.setSelectedTemplateId(e);let t=i.templates.find(t=>t.id===e);if(!a||!t)return;let n=a.behavior||[],r=_a(n,t);r.length===n.length&&r.every((e,t)=>e===n[t])||o.modifyEntityField(a,`behavior`,r)};return(0,d.jsx)(l.Modal,{title:n.title,open:g,onClose:b,actions:(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(l.ActionButton,{onPress:b,children:n.dismissLabel||`Dismiss`}),f?(0,d.jsx)(l.ActionButton,{primary:!0,onPress:()=>{x(p.current),b()},children:n.primaryLabel||`Continue`}):null]}),children:(0,d.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[n.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-600`,children:n.summary}):null,n.renderBody({...i,selectedTemplateId:f?.id||null,selectedTemplate:f,setSelectedTemplateId:x,dismiss:b})]})})}const Oa=(0,u.memo)(function(e){let[t]=(0,l.useLocalStorage)(`menu-hidden`);return(0,d.jsx)($n,{children:(0,d.jsxs)(Qn,{children:[(0,d.jsx)(er,{onClick:e.onClickLogo,children:(0,d.jsx)(l.ManifestEditorLogo,{})}),(0,d.jsx)(Lr,{}),(0,d.jsx)(Ta,{}),(0,d.jsx)(ha,{})]})})}),ka=(0,u.createContext)(null);function Aa(){return(0,u.useContext)(ka)||null}function ja(e,t){let n=Aa();return n?n[e][t]:null}function Ma({children:e,menu:t}){return(0,d.jsx)(ka.Provider,{value:t,children:e})}function Na(){return(0,u.useContext)(m.AtlasStoreReactContext)}function Pa(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(e=>e[0])),n=Math.min(...e.points.map(e=>e[1])),r=Math.max(0,...e.points.map(e=>e[0])),i=Math.max(0,...e.points.map(e=>e[1]));return{x:t,y:n,width:r-t,height:i-n}}return null}const Fa=async e=>new Promise((t,n)=>{let r=document.createElement(`img`);r.onload=()=>t(r),r.onerror=()=>n(),r.src=e,r.complete&&t(r)}),Ia=async e=>new Promise((t,n)=>{let r=document.createElement(`video`);r.onloadedmetadata=()=>t(r),r.onerror=()=>n(),r.preload=`metadata`,r.src=e});async function La(){}async function Ra(e,...t){if(!e)return;if(e.endsWith(`.mp3`)||e.endsWith(`.mp4`)||e.endsWith(`.m4a`)||e.endsWith(`.m4v`))try{let t=await Ia(e);if(t){let n=t.videoWidth===0;return{id:e,type:t.videoWidth===0?`Sound`:`Video`,width:t.videoWidth||void 0,height:t.videoHeight||void 0,duration:t.duration,format:n?`audio/mp4`:`video/mp4`}}}catch{}let n=null;try{n=await fetch(e)}catch{return Va(e)}if(!n.ok&&(n=await fetch(e+`/info.json`),!n.ok))return Va(e);let r=n.headers.get(`Content-Type`);if(r?.includes(`image/`))return Va(e,r);let i=null;try{i=await n.json()}catch{return null}return await Ba(i,e)}function za(e){return e.protocol&&e.protocol===`http://iiif.io/api/image`?(e.type||(e.type=`ImageService`),e):null}async function Ba(e,t){let n=za(e);if(n)return n;if(!(e.id||e[`@id`]))return null;let r=await new x.Vault().load(t,e);if(r&&(r&&r?.type===`Manifest`||r?.type===`Collection`))return{id:t,type:r.type,label:(0,b.getValue)(r.label)}}async function Va(e,t){let n=e.split(`/`);if(n.length>=8){let e=n.slice(-4);if(e[3].split(`.`).length===2&&(e[2][0]===`!`||e[2]===e[2])){let e=await Ha(n.slice(0,n.length-4).join(`/`)+`/info.json`);if(e&&e?.type&&e?.type?.startsWith(`ImageService`))return e}}try{let n=await Fa(e);return{id:e,type:`Image`,width:n.width,height:n.height,format:await Ua(e,t)}}catch{}return null}async function Ha(e){try{let t=await fetch(e);return t.ok?await Ba(await t.json(),e):null}catch(e){return console.log(e),null}}async function Ua(e,t){if(t)return t;try{let t=(await fetch(e,{method:`HEAD`,mode:`no-cors`})).headers.get(`Content-type`);if(t)return t}catch{}let n=e.toLowerCase();return n.endsWith(`jpg`)||n.endsWith(`jpeg`)?`image/jpeg`:n.endsWith(`png`)?`image/png`:`image/jpeg`}async function Wa(e){try{let t=await Fa(e);if(t)return{width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}}catch{return null}return null}const Ga=(0,f.create)(e=>({regions:{},resources:[],setRegion:(t,n)=>{e(e=>({...e.regions,regions:{[t]:n||null}}))},setHighlight:t=>{e({resources:Array.isArray(t)?t:[t]})},highlight:t=>{e(e=>e.resources.indexOf(t)===-1?{resources:[...e.resources,t]}:e)},clearHighlight:t=>{e(e=>({resources:e.resources.filter(e=>e!==t)}))}}));function Ka(e){let t=(0,u.useMemo)(()=>Lt(),[]),n=Ga(e=>e.regions[t]),r=Ga(e=>e.setRegion);(0,u.useEffect)(()=>{n&&e?n!==e&&(n.x!==e.x||n.y!==e.y||n.width!==e.width||n.height!==e.height)&&r(t,e||null):r(t,e||null)},[n]),(0,u.useEffect)(()=>()=>r(t,null),[])}function qa(e){let t=Ga(e=>e.highlight),n=Ga(e=>e.clearHighlight);return(0,u.useEffect)(()=>()=>{e&&n(e)},[n,e]),(0,u.useMemo)(()=>({onMouseEnter(){e&&t(e)},onMouseLeave(){e&&n(e)}}),[e,t,n])}const Ja=g.default.div`
243
243
  position: relative;
244
244
  display: inline-block;
245
- `,Wa=h.default.div`
245
+ `;g.default.div`
246
246
  display: flex;
247
247
  flex-direction: column;
248
248
  position: absolute;
@@ -257,7 +257,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
257
257
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
258
258
  }
259
259
  }
260
- `,Ga=h.default.button`
260
+ `;const Ya=g.default.button`
261
261
  padding: 0 ${e=>e.theme.padding.small||`0.5rem`};
262
262
  color: ${e=>e.theme.color.main||`none`};
263
263
  background-color: ${e=>e.theme.color.white||`white`};
@@ -276,7 +276,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
276
276
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
277
277
  }
278
278
 
279
- ${e=>e.$active&&h.css`
279
+ ${e=>e.$active&&g.css`
280
280
  background: #b84c74;
281
281
  color: #fff;
282
282
  &:hover {
@@ -284,7 +284,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
284
284
  color: #fff;
285
285
  }
286
286
  `}
287
- `,Ka=h.default.div`
287
+ `,Xa=g.default.div`
288
288
  display: none;
289
289
  flex-direction: column;
290
290
  position: absolute;
@@ -302,26 +302,26 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
302
302
  overflow: hidden;
303
303
  padding-bottom: 3px;
304
304
 
305
- ${H} {
305
+ ${K} {
306
306
  &:hover {
307
307
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
308
308
  }
309
309
  }
310
310
 
311
- ${e=>e.$open&&h.css`
311
+ ${e=>e.$open&&g.css`
312
312
  display: flex;
313
313
  `}
314
- `,qa=h.default.div`
314
+ `,Za=g.default.div`
315
315
  color: #999;
316
316
  text-transform: uppercase;
317
317
  font-weight: 600;
318
318
  padding: 0.7em;
319
319
  font-size: 0.875em;
320
- `,Ja=h.default.div`
320
+ `,Qa=g.default.div`
321
321
  height: 1px;
322
322
  margin: 0 0.5em;
323
323
  background: #eee;
324
- `,Ya=`OverrideScrollbar`,Xa=(0,l.createContext)(null);function Za(){return(0,l.useContext)(Xa)}const Qa=h.default.div`
324
+ `,$a=({style:e})=>(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`1rem`,fill:`#000000`,style:e,children:[(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`})]}),eo=e=>(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`0 0 24 24`,...e,children:[(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z`,fill:`currentColor`})]});function to(e){return e&&e.pinnable}function no({initial:e,fallback:t,options:n={}}){return Math.max(n.minWidth||0,Math.min(n.maxWidth||1/0,e||t))}function ro(e){return typeof e==`string`?(0,u.createElement)(`div`,{dangerouslySetInnerHTML:{__html:e}}):e}function io(e){let t=e.error.toString(),[n,r]=(0,u.useState)(!1);return(0,d.jsxs)(l.PaddedSidebarContainer,{children:[(0,d.jsx)(l.ErrorMessage,{className:`mb-2`,children:t}),(0,d.jsx)(Tr,{onClick:e.resetErrorBoundary,children:`Try again`})]})}const ao=(0,u.createContext)(null);function oo(){return(0,u.useContext)(ao)}const so=g.default.div`
325
325
  display: flex;
326
326
  flex-direction: column;
327
327
  position: relative;
@@ -333,6 +333,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
333
333
  border-top: 1px solid #e4e7f0;
334
334
  }
335
335
 
336
+ &[data-modal="true"] {
337
+ width: 100%;
338
+ }
339
+
336
340
  &[data-floating="true"] {
337
341
  margin: 10px;
338
342
  border-radius: 5px;
@@ -373,7 +377,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
373
377
  &[data-state="unmounted"] {
374
378
  transform: translateX(100%);
375
379
  }
376
- `,$a=h.default.div`
380
+ `,co=g.default.div`
377
381
  background: #fff;
378
382
  display: flex;
379
383
  height: 2.8em;
@@ -395,27 +399,38 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
395
399
  background: #ffc2d2;
396
400
  box-shadow: inset 0 -5px 10px 0 rgba(255, 255, 255, 0.5);
397
401
  }
398
- `,U=h.default.button`
402
+ `,lo=g.default.button`
399
403
  border: none;
400
404
  background: transparent;
401
405
  padding: 0 0.4em;
402
406
  margin: 0.3em;
407
+ min-width: 24px;
408
+ height: 24px;
409
+ display: inline-flex;
410
+ align-items: center;
411
+ justify-content: center;
403
412
  border-radius: 3px;
413
+ &:focus-visible {
414
+ outline: 2px solid #b84c74;
415
+ outline-offset: 2px;
416
+ }
404
417
  &:hover {
405
418
  background: #eee;
406
419
  }
407
420
  svg {
408
421
  font-size: 1.2em;
409
422
  }
410
- `,eo=h.default.div`
423
+ `,uo=g.default.div`
411
424
  flex: 1 1 0px;
412
- `,to=h.default.div`
425
+ `,fo=g.default.h2`
413
426
  font-size: 0.875em;
427
+ font-weight: 400;
428
+ margin: 0;
414
429
  flex: 1 1 0px;
415
430
  padding-left: 1em;
416
431
  text-align: center;
417
432
  align-self: center;
418
- `,no=h.default.div`
433
+ `,po=g.default.div`
419
434
  flex: 1 1 0px;
420
435
  display: flex;
421
436
 
@@ -426,13 +441,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
426
441
  > * {
427
442
  min-width: 0;
428
443
  }
429
- `;function ro({panel:e,state:t,actions:n,isLeft:r,pinActions:i=n,transition:a,close:o,available:s=[],style:c,noHeader:d}){let f=(0,l.useContext)(p.ReactVaultContext)||null,[m,h]=(0,l.useState)(!1),_=Gn(),v=fi(),{tabs:y,pinnable:b,hideHeader:x}=e?.options||{},S=[_.state.canvasId,e?.id],C=(0,l.useMemo)(()=>(s||[]).filter(e=>!e.requiresState),[s]),{itemProps:w,isOpen:T,setIsOpen:E}=(0,g.default)(C.length),[D,te]=(0,l.useState)(``),O=(0,l.useRef)(void 0);(0,l.useEffect)(()=>h(!1),S),(0,l.useEffect)(()=>te(``),[e]),(0,l.useEffect)(()=>(O.current=te,()=>{O.current=void 0}),[]);let k=(0,l.useCallback)(e=>{O.current&&O.current(e)},[]),A=(0,l.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)&&C.length?(r.preventDefault(),E(!0)):i&&i()},[n,_,v,e,E,t,C.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,u.jsx)(U,{onClick:A,children:(0,u.jsx)(Ra,{})}):null,ne=(0,u.jsx)(U,{onClick:o||n.close,children:(0,u.jsx)(ar,{})});return(0,u.jsx)(Xa.Provider,{value:k,children:(0,u.jsxs)(Qa,{"data-state":a,"data-flipped":r,style:c,"data-header":!d,children:[d?null:(0,u.jsxs)($a,{"data-tabs":!!y,"data-error":m,children:[(0,u.jsxs)(Ua,{style:{display:`flex`,height:`100%`},children:[e.renderBackAction?e.renderBackAction({backAction:A,fallback:M}):M,C.length?(0,u.jsxs)(Ka,{$open:T,style:{left:`0.5em`},children:[(0,u.jsx)(qa,{children:`All panels`}),(0,u.jsx)(Ja,{}),C.map((t,n)=>(0,u.jsx)(Ga,{...w[n],onClick:()=>j(t),$active:e.id===t.id,children:t.label},n))]}):null]}),D?(0,u.jsx)(to,{children:D}):x?(0,u.jsx)(eo,{}):(0,u.jsx)(to,{children:e.label}),b?t.pinned?(0,u.jsx)(U,{onClick:i.unpin,children:(0,u.jsx)(La,{fill:`orange`})}):(0,u.jsx)(U,{onClick:()=>i.pin({id:e.id,state:t.state}),children:(0,u.jsx)(La,{fill:`#ddd`})}):null,e.renderCloseAction?e.renderCloseAction({closeAction:o||n.close,fallback:ne}):ne]}),(0,u.jsx)(no,{className:`OverrideScrollbar`,children:(0,u.jsx)(ee.ErrorBoundary,{onError:()=>h(!0),FallbackComponent:za,resetKeys:S,onReset:()=>h(!1),children:Ha(e.render(t.state||e.defaultState||{},{...v,current:n,vault:f,transition:a},_))})})]})})}function io(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,C.requestResource)({id:i.id}));let e=(0,w.actionListFromResource)(i.id,i);t.dispatch((0,C.batchActions)({actions:e})),r=!0}}catch{}if(!r){let n=(0,w.actionListFromResource)(e,{"@context":`http://iiif.io/api/presentation/3/context.json`,id:e,type:`Collection`,label:{en:[`Recent items`]},items:[]});t.dispatch((0,C.requestResource)({id:e})),t.dispatch((0,C.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,C.addReference)({id:e,type:`Collection`,reference:{id:n,type:r},key:`items`,index:0})):t.dispatch((0,C.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,C.modifyEntityField)({id:e,type:`Collection`,key:`items`,value:[]})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}}function ao(){return(0,l.useContext)(oo)}const oo=(0,l.createContext)(new x.Vault),so=(0,l.createContext)({addHistory:(e,t)=>{},clearHistory:()=>{}}),co=`manifest-editor://homepage-collection.json`;function lo(){return(0,l.useContext)(so)}function uo(e){let{vault:t,unsubscribe:n,addHistory:r,clearHistory:i}=(0,l.useMemo)(()=>io(co),[]);return(0,l.useEffect)(()=>n,[]),(0,u.jsx)(so.Provider,{value:{addHistory:r,clearHistory:i},children:(0,u.jsx)(oo.Provider,{value:t,children:e.children})})}function fo({children:e}){return(0,u.jsx)(p.VaultProvider,{vault:ao(),children:e})}function po(e,t,n,r,i){let a=(0,p.useVault)(),o=z(),{create:s,edit:c}=li(),u=(0,l.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&&u.length!==0,f=(0,l.useCallback)((a,o)=>{if(e)return s({type:n,parent:(0,m.toRef)(e),property:t,index:a,target:r,initialData:o,...i||{}})},[s,e,t,n,i,r]),h=(0,l.useCallback)((a,o,c)=>{if(e)return s({type:n,filter:a,parent:(0,m.toRef)(e),property:t,index:o,target:r,initialData:c,...i||{}})},[s,e,t,n,i,r]);return[d,{create:f,edit:(0,l.useCallback)((n,r)=>{c(n,e?{parent:(0,m.toRef)(e),property:t,index:r}:void 0)},[c,e,t]),createFiltered:h,creator:(0,l.useCallback)((a,o)=>{if(e)return s({type:n,initialCreator:a,parent:(0,m.toRef)(e),property:t,target:r,initialData:o,...i||{}})},[n,t,e,r,s,i]),buttonProps:(0,l.useMemo)(()=>({"data-action-id":Lt(n,t,e)}),[n,t,e])}]}function mo(){let e=(0,p.useVault)(),t=ao(),n=z();return(0,l.useMemo)(()=>new S.Creator(e,n.layout.creators||[],t),[n.layout.creators,e])}const ho=(0,l.createContext)({});function go(e){return(0,l.useContext)(ho)[e]||{}}function _o(e){let t=(0,l.useContext)(ho),n=(0,l.useMemo)(()=>({...t,[e.id]:e.data}),[t,e.id,e.data]);return(0,u.jsx)(ho.Provider,{value:n,children:e.children})}const vo=(0,l.memo)(function(e){let t=(0,p.useVault)(),{edit:n,modal:r}=li(),[i,a]=(0,l.useState)(!1),[o,s]=(0,l.useState)(null),d=mo(),f=(0,l.useRef)(!1),h=e.resource.initialData?.selector;Fa(h);let g=go(e.creator.id),_={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:{...g,...e.resource.initialData||{}}},v=t=>{try{if(i||f.current)return;a(!0),f.current=!0,d.create(e.creator.id,t,_).catch(e=>(s(e?.message||`Unknown error`),null)).then(async t=>{if(e.onCreate?.(),e.resource.initialData?.skipEditingOnCreate){a(!1),r.popStack(),r.close();return}if(e.skipEditingOnCreate||!t)return;let i=Array.isArray(t)?t[0]:t;a(!1),r.popStack(),r.close(),i&&n(i,{parent:(0,m.toRef)(e.resource.parent),property:e.resource.property,index:e.resource.index})})}catch(e){s(e?.message||`Unknown error`)}},y=async()=>!0;if((0,l.useEffect)(()=>{e.resource.initialData?.showEmptyForm||!e.creator.render&&!i&&v({})},[e.creator]),o)return(0,u.jsx)(`div`,{className:`flex flex-col items-center p-4`,children:(0,u.jsx)(c.ErrorMessage,{children:o})});let b=(0,u.jsx)(`div`,{className:`flex flex-col items-center py-8`,children:(0,u.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,u.jsx)(c.Spinner,{}),` `,(0,u.jsx)(`span`,{children:`Loading`})]})});return i?b:e.creator.render?(0,u.jsx)(u.Fragment,{children:(0,u.jsx)(l.Suspense,{fallback:b,children:e.creator.render({vault:t,runCreate:v,validate:y,options:_})})}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.EmptyState,{children:`No options available`}),(0,u.jsx)(c.ActionButton,{primary:!0,onPress:()=>v({}),children:e.creator.actionButton||`Create`})]})});function yo(e){let t=z(),n=(0,p.useVault)(),[r,i]=(0,l.useState)(e.resource.initialCreator||``),a=Za(),o=(0,l.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,t.layout.creators||[],{vault:n}),[e.resource,t.layout.creators,n]);o.length===1&&!r&&i(o[0].id);let s=o.find(e=>e.id===r);if((0,l.useEffect)(()=>{s&&a?.(s.label)}),o.length===0)return(0,u.jsx)(c.EmptyState,{children:`Not currently supported`});let d=(0,u.jsx)(c.ModalBackSlot,{children:(0,u.jsx)(c.IconButton,{root:document.getElementById(`headlessui-portal-root`)||void 0,label:`Back to Add content options`,className:`group`,placement:`right`,onPress:()=>i(``),children:(0,u.jsx)(c.GridIcon,{className:`text-2xl opacity-50 group-hover:opacity-70`})})});return s?s.hiddenModal?(0,u.jsxs)(u.Fragment,{children:[d,(0,u.jsx)(vo,{creator:s,resource:e.resource})]}):(0,u.jsxs)(`div`,{children:[d,(0,u.jsx)(`div`,{className:`p-2 py-6`,children:(0,u.jsx)(vo,{creator:s,resource:e.resource})})]}):(0,u.jsx)(c.CreatorGrid,{label:`Select a type`,items:o.map(e=>({id:e.id,title:e.label,description:e.summary||``,icon:e.icon,onClick:()=>i(e.id)}))})}const bo={id:`@manifest-editor/creator`,label:`Add content`,options:{hideHeader:!0,tabs:!1},render(e){return(0,u.jsx)(yo,{resource:e})}},xo={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 So(e){let{}=e,t=(0,p.useVault)(),n=z(),r=(0,l.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,n.layout.creators||[],{vault:t}),[e.resource,n.layout.creators,t]);return r.length===0?(0,u.jsx)(`div`,{children:`No supported creators found`}):(0,u.jsx)(`div`,{children:(0,u.jsxs)(c.Tabs,{className:`w-full flex-1 overflow-hidden flex flex-col`,children:[(0,u.jsx)(c.TabList,{className:`flex-1 overflow-hidden w-full flex text-sm whitespace-nowrap`,items:r,children:e=>(0,u.jsx)(c.Tab,{id:e.id,children:e.label})}),r.map(t=>(0,u.jsx)(c.TabPanel,{id:t.id,className:`p-2`,children:(0,u.jsx)(h.ThemeProvider,{theme:xo,children:(0,u.jsx)(vo,{creator:t,resource:e.resource,onCreate:e.onCreate,skipEditingOnCreate:!0})})},t.id))]})})}function Co({fallback:e,backAction:t}){let n=Yr(),{back:r}=qr();return n.length?(0,u.jsx)(U,{onClick:r,children:(0,u.jsx)(Ra,{})}):e}function wo({closeAction:e,fallback:t}){let n=Yr();return Jr()||n.length?(0,u.jsx)(U,{onClick:()=>{e()},children:(0,u.jsx)(ar,{})}):t}function To(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=(t.editors||[]).filter(t=>{if(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)}),s=Object.keys(a);for(let e of s)!i.includes(e)&&a[e]&&!o.includes(a[e])&&o.push(a[e]);if(o.length)return{...t,editors:o}}return null}function Eo({currentTab:e=void 0}){let t=Jr(),n=(0,l.useContext)(p.ResourceReactContext),r=z(),i=B(),a=(0,p.useVault)(),{change:o}=li(),s=Za(),{editorConfig:d}=F(),f=t?.resource.source?.id,m=t?.resource.source?.type,h=f!==i.id;f&&h&&i.type===`Collection`&&m===`Collection`&&(m=`EmbeddedCollection`);let g=(m?d[m]:d.All)||{},_=(0,l.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,u.jsx)(p.ResourceReactContext.Provider,{value:_,children:e}):e}let y=(0,l.useMemo)(()=>{if(!t)return null;let e=r.layout.editors||[];return To(t,(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),{edit:!0,vault:a},g)},[t,r]);(0,l.useEffect)(()=>{s(y?.label||``)},[y]),(0,l.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,l.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,u.jsx)(`div`,{className:`w-full`,children:e.component(g)},t.resource.source?.id))}return v((0,u.jsx)(c.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 Do={id:`@manifest-editor/editor`,label:`Editor`,options:{hideHeader:!0,tabs:!0,minWidth:400},renderBackAction:({backAction:e,fallback:t})=>(0,u.jsx)(Co,{backAction:e,fallback:t}),renderCloseAction:({closeAction:e,fallback:t})=>(0,u.jsx)(wo,{closeAction:e,fallback:t}),render({currentTab:e}){return(0,u.jsx)(Eo,{currentTab:e})}};function Oo(e){let[t,n]=(0,l.useState)(!1),r=(0,l.useRef)(null),i=(0,l.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,l.useMemo)(()=>[t,{set:o,clear:a}],[t])}function ko(e){return e?typeof e==`string`?{src:e,alt:``}:e:null}function Ao(e){return e?typeof e==`string`?e:e.name:null}function jo(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 Mo(e){return e instanceof Error?e.message:`Plugin configuration could not be saved.`}function No(e){return(0,u.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,u.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,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})}function Po(e){return(0,u.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,u.jsx)(`path`,{d:`M7 7h10v10`}),(0,u.jsx)(`path`,{d:`M7 17 17 7`})]})}function Fo(){let e=z(),{appId:t}=Wn(),n=F(),r=se(),i=Mn(),a=Pn(),o=li(),{saveGlobalPluginConfig:s}=(0,l.useContext)(Dn),[d,f]=(0,l.useState)(!1),[p,m]=(0,l.useState)(``),[h,g]=(0,l.useState)(null),[_,v]=(0,l.useState)(null),[y,b]=(0,l.useState)(null),x=(0,l.useMemo)(()=>new Set(fn(i,e,t).map(e=>e.metadata.id)),[i,e,t]),S=(0,l.useMemo)(()=>{let n=p.trim().toLowerCase();return i.plugins.filter(r=>{let i=cn(r,e,t);return!d&&!i?!1:n?[r.metadata.label,r.metadata.id,r.metadata.description,Ao(r.metadata.author),...r.metadata.tags||[]].filter(Boolean).join(` `).toLowerCase().includes(n):!0})},[e,t,i.plugins,p,d]),ee=h&&i.plugins.find(e=>e.metadata.id===h)||null;if(!i.plugins.length)return null;function C(e){a.setAppConfig(t,e),r({plugins:{...n.plugins||{},apps:{...n.plugins?.apps||{},[t]:e}}})}async function w(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(Mo(e))}}async function T(n,r,a){b(null),v(`${a}:${n.metadata.id}`);let o=a===`global`?i.globalApps[t]||{}:i.apps[t]||{},s=r?yn(o,i,n,e,t):{config:Zt(o,n.metadata.id),blocked:[]};if(s.blocked.length){v(null),b(`Cannot enable ${n.metadata.label}: ${s.blocked.join(`, `)}.`);return}a===`global`?await w(s.config):C(s.config),v(null)}function E(e){let t=jo(e);if(t){if(t.modal){o.modal.open({id:t.id});return}o.open(t.id)}}return(0,u.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-gray-200 pt-4 mt-4`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,u.jsx)(`h3`,{className:`font-semibold text-sm text-gray-900`,children:`Plugins`})}),(0,u.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:d?`Compatible only`:`Show all`})]}),(0,u.jsx)(`input`,{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,u.jsx)(`div`,{className:`rounded border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:y}):null,(0,u.jsx)(`div`,{className:`flex flex-col gap-2`,children:S.map(n=>{let r=un(n,i,t),a=x.has(n.metadata.id),o=r&&n.loadStatus===`loading`,s=r&&n.loadStatus===`error`?n.loadError:null,l=ko(n.metadata.image),d=r&&!a&&!o&&!s,f=cn(n,e,t),p=ln(n,e,t),m=jo(n),h=!!n.settings,v=_===`workspace:${n.metadata.id}`;return(0,u.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 opacity-60`} ${f?``:`opacity-40`}`,children:[l?(0,u.jsx)(`img`,{className:`h-9 w-9 rounded object-cover flex-none mt-0.5`,src:l.src,alt:l.alt||n.metadata.label}):(0,u.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-400`}`,children:(0,u.jsx)(No,{className:`w-4 h-4`})}),(0,u.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,u.jsxs)(`div`,{className:`flex items-start justify-between gap-1`,children:[(0,u.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 min-w-0`,children:[(0,u.jsx)(`span`,{className:`font-medium text-gray-900 text-xs`,children:n.metadata.label}),n.metadata.official?(0,u.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,u.jsx)(c.CheckIcon,{className:`w-3 h-3`}),` Verified`]}):null,n.metadata.version?(0,u.jsx)(`span`,{className:`text-[10px] text-gray-400`,children:n.metadata.version}):null]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-1 flex-none`,children:[h?(0,u.jsx)(`button`,{type:`button`,title:`Configure plugin`,className:`rounded p-1 text-gray-400 hover:text-gray-700 hover:bg-gray-100 transition-colors`,onClick:()=>g(n.metadata.id),children:(0,u.jsx)(No,{className:`w-3.5 h-3.5`})}):null,a&&m?(0,u.jsx)(`button`,{type:`button`,title:`Open ${m.label}`,className:`rounded p-1 text-me-primary-500 hover:bg-me-primary-50 transition-colors`,onClick:()=>E(n),children:(0,u.jsx)(Po,{className:`w-3.5 h-3.5`})}):null,(0,u.jsx)(`button`,{type:`button`,disabled:!f||v,onClick:()=>T(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 plugin`:`Enable plugin`,children:(0,u.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,u.jsx)(`p`,{className:`text-xs text-gray-500 leading-relaxed`,children:n.metadata.description}):null,o?(0,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Loading plugin…`}):null,s?(0,u.jsx)(`span`,{className:`text-xs text-red-600`,children:s}):null,d?(0,u.jsx)(`span`,{className:`text-xs text-amber-600`,children:`Waiting for required dependencies`}):null,!f&&p?(0,u.jsx)(`span`,{className:`text-xs text-gray-400`,children:p}):null]})]},n.metadata.id)})}),S.length?null:(0,u.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.`}),ee?(0,u.jsx)(c.Modal,{title:`Configure ${ee.metadata.label}`,onClose:()=>g(null),width:`560px`,children:(0,u.jsx)(Io,{plugin:ee,onClose:()=>g(null),canSaveGlobal:!!s})}):null]})}function Io({plugin:e,onClose:t,canSaveGlobal:n}){let r=Ln(e.metadata.id),[i,a]=(0,l.useState)(`workspace`),[o,s]=(0,l.useState)({}),[c,d]=(0,l.useState)(!1),[f,p]=(0,l.useState)(!1),[m,h]=(0,l.useState)(null),g=i===`global`?r.global:r.workspace;(0,l.useEffect)(()=>{s({...g}),h(null),p(!1)},[e.metadata.id,i]);async function _(){let t=e.settings?.validate?.(o);if(t){h(t);return}d(!0),h(null);try{i===`global`?await r.setGlobalSettings(o):r.setWorkspaceSettings(o),p(!0),setTimeout(()=>p(!1),2e3)}catch(e){h(Mo(e))}finally{d(!1)}}async function v(){d(!0),h(null);try{i===`global`?await r.resetGlobalSettings():r.resetWorkspaceSettings(),s({})}catch(e){h(Mo(e))}finally{d(!1)}}return(0,u.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[n&&r.canSaveGlobal?(0,u.jsxs)(`div`,{className:`flex items-center gap-1 px-5 pt-4 pb-3 border-b border-gray-100`,children:[(0,u.jsx)(`span`,{className:`text-xs text-gray-500 mr-2`,children:`Scope:`}),(0,u.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,u.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,u.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,u.jsx)(`div`,{className:`flex-1 overflow-y-auto p-5`,children:(0,u.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,u.jsx)(Lo,{field:e,draft:o,setDraft:s},e.id)):(0,u.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,u.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-gray-100 px-5 py-4`,children:[(0,u.jsx)(`button`,{type:`button`,className:`text-xs text-gray-400 hover:text-gray-600 transition-colors disabled:opacity-40`,disabled:c,onClick:v,children:`Reset to defaults`}),(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f?(0,u.jsx)(`span`,{className:`text-xs text-green-600`,children:`✓ Saved`}):null,(0,u.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 Lo({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,u.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,u.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[(0,u.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[o,e.description?(0,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null]}),(0,u.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,u.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,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,u.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,u.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,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,u.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,u.jsx)(`option`,{value:``,children:`Default`}),(e.options||[]).map(e=>(0,u.jsx)(`option`,{value:String(e.value),children:e.label},String(e.value)))]})]}):(0,u.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,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,u.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 Ro(){let e=Tr(),t=B(),n=F(),r=se(),[i,a]=Oo(2e3);function o(e){e.preventDefault();let t=new FormData(e.target);r({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`}}),a.set(),a.clear()}return(0,u.jsxs)(c.Sidebar,{children:[(0,u.jsx)(c.SidebarHeader,{title:`Workspace configuration`}),i?(0,u.jsx)(`div`,{className:`bg-me-primary-500 text-white p-3 text-sm`,children:`Changes saved`}):null,(0,u.jsx)(c.SidebarContent,{className:`p-4`,children:(0,u.jsxs)(c.Form.Form,{onSubmit:o,className:`flex flex-col gap-3`,children:[(0,u.jsxs)(c.Form.InputContainer,{children:[(0,u.jsx)(c.Form.Label,{htmlFor:`defaultLanguage`,children:`Default Language`}),(0,u.jsx)(c.Form.Input,{type:`text`,name:`defaultLanguage`,id:`defaultLanguage`,defaultValue:n.i18n?.defaultLanguage||``})]}),(0,u.jsxs)(c.Form.InputContainer,{children:[(0,u.jsx)(c.Form.Label,{htmlFor:`availableLanguages`,children:`Available Languages`}),(0,u.jsx)(c.Form.Input,{type:`text`,name:`availableLanguages`,id:`availableLanguages`,defaultValue:(n.i18n?.availableLanguages||[]).join(`, `)})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`advancedLanguageMode`,id:`advancedLanguageMode`,defaultChecked:n.i18n?.advancedLanguageMode||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`advancedLanguageMode`,children:`Advanced Language Mode`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`textGranularityEnabled`,id:`textGranularityEnabled`,defaultChecked:n.i18n?.textGranularityEnabled||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`textGranularityEnabled`,children:`Enable text granularity`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`rememberCanvasId`,id:`rememberCanvasId`,defaultChecked:n.editorFeatureFlags?.rememberCanvasId||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`rememberCanvasId`,children:`Remember Canvas ID`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`rememberLeftPanelId`,id:`rememberLeftPanelId`,defaultChecked:n.editorFeatureFlags?.rememberLeftPanelId||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`rememberLeftPanelId`,children:`Remember Left panel`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`manifestGridOptions`,id:`manifestGridOptions`,defaultChecked:n.editorFeatureFlags?.manifestGridOptions||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`manifestGridOptions`,children:`Manifest Grid Options`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`isVersion2`,id:`isVersion2`,defaultChecked:n.export?.version===2}),(0,u.jsxs)(c.Form.Label,{htmlFor:`isVersion2`,children:[`Export Presentation 2 `,t.type,`s`]})]}),(0,u.jsxs)(c.Form.InputContainer,{children:[(0,u.jsx)(c.Form.Label,{htmlFor:`defaultPreview`,children:`Default preview`}),(0,u.jsx)(`div`,{children:e.configs.map((e,t)=>e.type===`iiif-preview-service`?null:(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,children:[(0,u.jsx)(c.Form.Input,{type:`radio`,id:e.id,name:`defaultPreview`,value:e.id,defaultChecked:n.defaultPreview?n.defaultPreview===e.id:t===0}),(0,u.jsx)(`label`,{htmlFor:e.id,children:e.label})]},e.id))})]}),t.type===`Manifest`?(0,u.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,u.jsx)(Fo,{}),(0,u.jsx)(`div`,{className:`mt-5`,children:(0,u.jsx)(c.ActionButton,{type:`submit`,children:`Save changes`})})]})})]})}function zo(){return(0,d.createStore)((e,t)=>({specificMenus:{},resourceMenus:{},hookMenuItem(t){let n=Bt(),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 Bo=(0,l.createContext)(null);function Vo({children:e}){let t=(0,l.useMemo)(()=>zo(),[]);return(0,u.jsx)(Bo.Provider,{value:t,children:e})}function Ho(){let e=(0,l.useContext)(Bo);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function Uo(e){let t=Ho(),n=(0,d.useStore)(t,e=>e.resourceMenus),r=(0,d.useStore)(t,e=>e.specificMenus);return(0,l.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 Wo(c)},[r,n,e.id,e.type])}function Wo(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 Go(e,t=[]){let n=(0,d.useStore)(Ho(),e=>e.hookMenuItem);(0,l.useEffect)(()=>n(e),[n,e.resource?.id,e.resource?.type,...t])}var Ko={};function qo(e){return(0,u.jsxs)(`div`,{className:Ko.CenterPanelContainer,children:[e.title||e.close?(0,u.jsxs)(`div`,{className:Ko.CenterPanelHeader,children:[e.title?(0,u.jsx)(`h2`,{className:Ko.CenterPanelTitle,children:e.title}):null,e.close?(0,u.jsx)(H,{className:Ko.CenterPanelClose,onClick:e.close,children:(0,u.jsx)(ar,{})}):null]}):null,e.children]})}const Jo=h.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},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=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.jsx)(l.SidebarContent,{className:`p-4`,children:(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 ts(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 ns(){let e=U(),t=z(),n=ie(),r=(0,u.useMemo)(()=>ts(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 rs(){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 is=(0,u.createContext)(null);function as({children:e}){let t=(0,u.useMemo)(()=>rs(),[]);return(0,d.jsx)(is.Provider,{value:t,children:e})}function os(){let e=(0,u.useContext)(is);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function ss(e){let t=os(),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 cs(c)},[r,n,e.id,e.type])}function cs(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 ls(e,t=[]){let n=os(),r=(0,f.useStore)(n,e=>e.hookMenuItem);(0,u.useEffect)(()=>r(e),[r,e.resource?.id,e.resource?.type,...t])}var us={CenterPanelContainer:`_CenterPanelContainer_1sbe6_1`,CenterPanelHeader:`_CenterPanelHeader_1sbe6_16`,CenterPanelClose:`_CenterPanelClose_1sbe6_23`,CenterPanelTitle:`_CenterPanelTitle_1sbe6_28`};function ds(e){return(0,d.jsxs)(`div`,{className:us.CenterPanelContainer,children:[e.title||e.close?(0,d.jsxs)(`div`,{className:us.CenterPanelHeader,children:[e.title?(0,d.jsx)(`h2`,{className:us.CenterPanelTitle,children:e.title}):null,e.close?(0,d.jsx)(K,{className:us.CenterPanelClose,onClick:e.close,children:(0,d.jsx)(tr,{})}):null]}):null,e.children]})}const fs=g.default.div`
430
445
  flex: 1;
431
446
  display: flex;
432
447
  width: 100%;
433
448
  flex-direction: column;
434
449
  position: relative;
435
- `,Yo=h.default.div`
450
+ `,ps=g.default.div`
436
451
  background: #fff;
437
452
  position: relative;
438
453
  border-bottom: 1px solid #d0d0d0;
@@ -450,11 +465,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
450
465
  //flex-direction: column;
451
466
  //justify-content: center;
452
467
  }
453
- `,Xo=h.default.p`
468
+ `,ms=g.default.p`
454
469
  font-size: 0.9em;
455
470
  color: #777;
456
471
  font-weight: 400;
457
- `,Zo=h.default.button`
472
+ `,hs=g.default.button`
458
473
  color: inherit;
459
474
  text-rendering: geometricPrecision;
460
475
  border: none;
@@ -496,7 +511,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
496
511
  margin-top: 0.5em;
497
512
  }
498
513
  }
499
- `,Qo=h.default.div`
514
+ `,gs=g.default.div`
500
515
  font-size: 1.4em;
501
516
  padding-right: 0.3em;
502
517
  display: flex;
@@ -505,7 +520,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
505
520
  [data-large="true"] & {
506
521
  font-size: 2em;
507
522
  }
508
- `,$o=h.default.div`
523
+ `,_s=g.default.div`
509
524
  width: 2em;
510
525
  align-items: center;
511
526
  //padding-top: 0.5em;
@@ -518,11 +533,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
518
533
  fill: #999;
519
534
  color: #999;
520
535
  }
521
- `,es=h.default.div`
536
+ `,vs=g.default.div`
522
537
  min-height: 0;
523
538
  overflow: visible;
524
539
  display: flex;
525
- `,ts=h.default.div`
540
+ `,ys=g.default.div`
526
541
  min-height: 0;
527
542
  overflow: visible;
528
543
  flex: 1;
@@ -535,7 +550,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
535
550
  &[data-max-height="true"] {
536
551
  overflow-y: auto;
537
552
  }
538
- `,ns=h.default.section`
553
+ `,bs=g.default.section`
539
554
  display: grid;
540
555
  grid-template-rows: 0fr;
541
556
  overflow: hidden;
@@ -563,7 +578,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
563
578
  &[data-scrolled="true"] {
564
579
  box-shadow: inset 0px 2px 0px 0 rgba(0, 0, 0, 0.1);
565
580
  }
566
- `,rs=h.default.div`
581
+ `,xs=g.default.div`
567
582
  position: sticky;
568
583
  display: flex;
569
584
  top: 0;
@@ -599,7 +614,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
599
614
  right: 0.5em;
600
615
  }
601
616
  }
602
- `,is=(()=>void 0);let as=0;function os(){return(0,l.useMemo)(()=>as++,[])}function ss(e,t=!1){let[n,r]=(0,l.useState)([]),i=(0,l.useRef)(-1),a=t=>{let r=document.activeElement,i=n.findIndex(e=>e.current?.button?.current===r);if(i!==-1)switch(t.code){case`Home`:n[0]&&n[0].current?.focus();break;case`End`:{let t=e-1;n[t]&&n[t].current?.focus();break}case`ArrowDown`:if(i!==e-1){let e=i+1;n[e]&&n[e].current?.focus()}break;case`ArrowUp`:if(i!==0){let e=i-1;n[e]&&n[e].current?.focus()}break;case`ArrowLeft`:{let e=n[i];e&&e.current&&e.current.close();break}case`ArrowRight`:{let e=n[i];e&&e.current&&e.current.open();break}}},o=(e,r)=>{if(t&&r&&e!==i.current){i.current=e;for(let t=0;t<n.length;t++){let r=n[t];t!==e&&r.current?.close()}}};return(0,l.useEffect)(()=>{r(t=>Array(e).fill(0).map((e,n)=>t[n]||(0,l.createRef)()))},[e]),{open:e=>{let t=n[e];t&&t.current&&t.current.open()},close:e=>{let t=n[e];t&&t.current&&t.current.close()},toggle:e=>{let t=n[e];t&&t.current&&t.current.toggle()},focus:e=>{let t=n[e];t&&t.current&&t.current.focus()},openAll:()=>{for(let e=0;e<n.length;e++)n[e].current?.open()},closeAll:()=>{for(let e=0;e<n.length;e++)n[e].current?.close()},onKeyDown:a,getItemProps:e=>({ref:n[e],onChange:t=>o(e,t)})}}const cs=(0,l.forwardRef)(function(e,t){let n=(0,l.useRef)(null),r=(0,l.useRef)(null),i=os(),[a,o]=(0,l.useState)(e.initialOpen||!1),s=e.onChange||is,c=()=>{s(!a),o(e=>!e)},d=e.maxHeight,[f,p]=(0,l.useState)(!1);(0,l.useImperativeHandle)(t,()=>({open(){s(!0),o(!0)},close(){s(!1),o(!1)},toggle(){c()},focus(){r.current&&r.current.focus()},button:r}));let m=e=>{e.target.scrollTop>0?p(!0):p(!1)};return(0,u.jsxs)(Yo,{"data-large":e.large,"data-open":a,children:[(0,u.jsxs)(rs,{"data-open":a,children:[e.icon?(0,u.jsx)($o,{onClick:c,children:e.icon}):null,(0,u.jsxs)(Zo,{ref:r,onClick:c,"aria-expanded":a,"aria-controls":`accordion-${i}`,children:[e.label,e.description?(0,u.jsx)(Xo,{children:e.description}):null]}),(0,u.jsx)(Qo,{onClick:c,children:(0,u.jsx)(or,{width:`1em`,height:`1em`,rotate:a?0:180})})]}),(0,u.jsx)(ns,{"aria-labelledby":`accordion-${i}`,"aria-hidden":!a,"data-overflow":!!e.overflow,"data-has-icon":!!e.icon,onScroll:m,ref:n,$initial:!a,"data-scrolled":f,hidden:!a,children:(0,u.jsx)(es,{children:(0,u.jsx)(ts,{"data-max-height":!!d,"data-full":e.fullWidth,style:{maxHeight:d||void 0},children:e.children})})})]})});function ls(e){let{getItemProps:t,onKeyDown:n}=ss(e.items.length,e.singleMode);return(0,u.jsx)(Jo,{onKeyDown:n,children:e.items.map((n,r)=>(0,u.jsx)(cs,{overflow:e.overflow,maxHeight:e.maxHeight,...n,...t(r),children:n.children},r))})}function us(){return(0,u.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`48`,viewBox:`0 -960 960 960`,width:`48`,children:(0,u.jsx)(`path`,{d:`M220-160q-24 0-42-18t-18-42v-143h60v143h520v-143h60v143q0 24-18 42t-42 18H220Zm260-153L287-506l43-43 120 120v-371h60v371l120-120 43 43-193 193Z`})})}const ds=h.default.div`
617
+ `,Ss=(()=>void 0);let Cs=0;function ws(){return(0,u.useMemo)(()=>Cs++,[])}function Ts(e,t=!1){let[n,r]=(0,u.useState)([]),i=(0,u.useRef)(-1),a=t=>{let r=document.activeElement,i=n.findIndex(e=>e.current?.button?.current===r);if(i!==-1)switch(t.code){case`Home`:n[0]&&n[0].current?.focus();break;case`End`:{let t=e-1;n[t]&&n[t].current?.focus();break}case`ArrowDown`:if(i!==e-1){let e=i+1;n[e]&&n[e].current?.focus()}break;case`ArrowUp`:if(i!==0){let e=i-1;n[e]&&n[e].current?.focus()}break;case`ArrowLeft`:{let e=n[i];e&&e.current&&e.current.close();break}case`ArrowRight`:{let e=n[i];e&&e.current&&e.current.open();break}}},o=(e,r)=>{if(t&&r&&e!==i.current){i.current=e;for(let t=0;t<n.length;t++){let r=n[t];t!==e&&r.current?.close()}}};return(0,u.useEffect)(()=>{r(t=>Array(e).fill(0).map((e,n)=>t[n]||(0,u.createRef)()))},[e]),{open:e=>{let t=n[e];t&&t.current&&t.current.open()},close:e=>{let t=n[e];t&&t.current&&t.current.close()},toggle:e=>{let t=n[e];t&&t.current&&t.current.toggle()},focus:e=>{let t=n[e];t&&t.current&&t.current.focus()},openAll:()=>{for(let e=0;e<n.length;e++)n[e].current?.open()},closeAll:()=>{for(let e=0;e<n.length;e++)n[e].current?.close()},onKeyDown:a,getItemProps:e=>({ref:n[e],onChange:t=>o(e,t)})}}const Es=(0,u.forwardRef)(function(e,t){let n=(0,u.useRef)(null),r=(0,u.useRef)(null),i=ws(),[a,o]=(0,u.useState)(e.initialOpen||!1),s=e.onChange||Ss,c=()=>{s(!a),o(e=>!e)},l=e.maxHeight,[f,p]=(0,u.useState)(!1);return(0,u.useImperativeHandle)(t,()=>({open(){s(!0),o(!0)},close(){s(!1),o(!1)},toggle(){c()},focus(){r.current&&r.current.focus()},button:r})),(0,d.jsxs)(ps,{"data-large":e.large,"data-open":a,children:[(0,d.jsxs)(xs,{"data-open":a,children:[e.icon?(0,d.jsx)(_s,{onClick:c,children:e.icon}):null,(0,d.jsxs)(hs,{ref:r,onClick:c,"aria-expanded":a,"aria-controls":`accordion-${i}`,children:[e.label,e.description?(0,d.jsx)(ms,{children:e.description}):null]}),(0,d.jsx)(gs,{onClick:c,children:(0,d.jsx)(nr,{width:`1em`,height:`1em`,rotate:a?0:180})})]}),(0,d.jsx)(bs,{"aria-labelledby":`accordion-${i}`,"aria-hidden":!a,"data-overflow":!!e.overflow,"data-has-icon":!!e.icon,onScroll:e=>{e.target.scrollTop>0?p(!0):p(!1)},ref:n,$initial:!a,"data-scrolled":f,hidden:!a,children:(0,d.jsx)(vs,{children:(0,d.jsx)(ys,{"data-max-height":!!l,"data-full":e.fullWidth,style:{maxHeight:l||void 0},children:e.children})})})]})});function Ds(e){let{getItemProps:t,onKeyDown:n}=Ts(e.items.length,e.singleMode);return(0,d.jsx)(fs,{onKeyDown:n,children:e.items.map((n,r)=>(0,d.jsx)(Es,{overflow:e.overflow,maxHeight:e.maxHeight,...n,...t(r),children:n.children},r))})}function Os(){return(0,d.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`48`,viewBox:`0 -960 960 960`,width:`48`,children:(0,d.jsx)(`path`,{d:`M220-160q-24 0-42-18t-18-42v-143h60v143h520v-143h60v143q0 24-18 42t-42 18H220Zm260-153L287-506l43-43 120 120v-371h60v371l120-120 43 43-193 193Z`})})}const ks=g.default.div`
603
618
  padding: 0.3em;
604
619
 
605
620
  display: flex;
@@ -621,12 +636,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
621
636
  position: sticky;
622
637
  bottom: 0;
623
638
  }
624
- `;function fs(e){let t=(0,p.useManifest)(),n=(0,p.useVault)(),r=li(),i=(0,l.useMemo)(()=>JSON.stringify(n.toPresentation3(t),null,2),[t,n]),a=(0,l.useMemo)(()=>JSON.stringify(n.toPresentation2(t),null,2),[t,n]);return(0,u.jsx)(qo,{title:`Export manifest`,close:r.centerPanel.popStack,children:(0,u.jsx)(`div`,{style:{flex:1,overflowY:`auto`},children:(0,u.jsx)(ls,{items:[{label:`Presentation 3`,description:`Download this version by clicking the "Download" button.`,maxHeight:400,large:!0,initialOpen:!0,overflow:!0,icon:(0,u.jsx)(H,{onClick:()=>Rt(i,`manifest.json`),children:(0,u.jsx)(us,{})}),children:(0,u.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,u.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`},children:JSON.stringify(n.toPresentation3(t),null,2)}),(0,u.jsxs)(ds,{"data-sticky":`true`,children:[(0,u.jsx)(H,{onClick:()=>zt(i),children:`Copy to clipboard`}),(0,u.jsx)(H,{onClick:()=>Rt(i,`manifest.json`),children:`Download`})]})]})},{label:`Presentation 2`,description:`Download this version by clicking the "Download" button.`,maxHeight:400,large:!0,icon:(0,u.jsx)(H,{onClick:()=>Rt(a,`manifest.json`),children:(0,u.jsx)(us,{})}),children:(0,u.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,u.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`},children:JSON.stringify(n.toPresentation2(t),null,2)}),(0,u.jsxs)(ds,{"data-sticky":`true`,children:[(0,u.jsx)(H,{onClick:()=>zt(a),children:`Copy to clipboard`}),(0,u.jsx)(H,{onClick:()=>Rt(a,`manifest.json`),children:`Download`})]})]})}]})})})}function ps({key:e,initialValue:t,requestId:n,getInitialValue:r}){let[i,a]=(0,p.useCurrentAnnotationMetadata)({requestId:n}),[o,s]=(0,l.useState)(r&&r(i)||i[e]||t);return[o,(0,l.useCallback)(t=>{a({[e]:t}),s(t)},[])]}const ms=(0,T.default)(),hs=(0,l.createContext)(ms);function gs({children:e,emitter:t}){return(0,u.jsx)(hs.Provider,{value:t,children:e})}function _s(){return(0,l.useContext)(hs)}function vs(e,t,n=[]){let r=(0,l.useContext)(hs);(0,l.useEffect)(()=>{let n=e=>{t(e)};return r.on(e,n),()=>{r.off(e,n)}},[r,e,...n])}function ys(e,t=[]){let n=t.length?t:Array(e.length).fill(!1);if(typeof window>`u`)return n;let r=e.map(e=>window.matchMedia(e)),i=()=>r.map(e=>e.matches),[a,o]=(0,l.useState)(i);return(0,l.useLayoutEffect)(()=>{let e=()=>o(i);return r.forEach(t=>t.addListener(e)),()=>r.forEach(t=>t.removeListener(e))},[]),a}function bs(e,t,n,r=!0){let i=(0,E.useDebounce)(t,n);(0,l.useEffect)(()=>typeof window>`u`?()=>void 0:(window.addEventListener(`beforeunload`,t,!1),()=>{t(),window.removeEventListener(`beforeunload`,t)}),[t]),(0,l.useEffect)(()=>{if(e&&r)return e.subscribe(i,!0)},[i,e,r])}function xs(){let e=(0,p.useAtlasStore)(),t=(0,d.useStore)(e,e=>e.switchTool),n=(0,d.useStore)(e,e=>e.polygonState.currentTool),r=(0,d.useStore)(e,e=>e.polygonState.selectedStamp),i=(0,d.useStore)(e,e=>e.polygonState.showBoundingBox);return(0,l.useMemo)(()=>({currentTool:n,selectedStamp:r,draw:{active:n===`pencil`,enable:t.draw},polygon:{active:n===`pen`,enable:t.pen},line:{active:n===`line`,enable:t.line},lineBox:{active:n===`lineBox`,enable:t.lineBox},square:{active:n===`box`,enable:t.box},triangle:{active:r?.id===`triangle`,enable:t.triangle},hexagon:{active:r?.id===`hexagon`,enable:t.hexagon},circle:{active:r?.id===`circle`,enable:t.circle},remove:{active:i,enable:t.remove}}),[i,r,n,t])}const Ss=h.default.div`
639
+ `;function As(e){let t=(0,m.useManifest)(),n=(0,m.useVault)(),r=ui(),i=(0,u.useMemo)(()=>JSON.stringify(n.toPresentation3(t),null,2),[t,n]),a=(0,u.useMemo)(()=>JSON.stringify(n.toPresentation2(t),null,2),[t,n]);return(0,d.jsx)(ds,{title:`Export manifest`,close:r.centerPanel.popStack,children:(0,d.jsx)(`div`,{style:{flex:1,overflowY:`auto`},children:(0,d.jsx)(Ds,{items:[{label:`Presentation 3`,description:`Download this version by clicking the "Download" button.`,maxHeight:400,large:!0,initialOpen:!0,overflow:!0,icon:(0,d.jsx)(K,{onClick:()=>Ft(i,`manifest.json`),children:(0,d.jsx)(Os,{})}),children:(0,d.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,d.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`},children:JSON.stringify(n.toPresentation3(t),null,2)}),(0,d.jsxs)(ks,{"data-sticky":`true`,children:[(0,d.jsx)(K,{onClick:()=>It(i),children:`Copy to clipboard`}),(0,d.jsx)(K,{onClick:()=>Ft(i,`manifest.json`),children:`Download`})]})]})},{label:`Presentation 2`,description:`Download this version by clicking the "Download" button.`,maxHeight:400,large:!0,icon:(0,d.jsx)(K,{onClick:()=>Ft(a,`manifest.json`),children:(0,d.jsx)(Os,{})}),children:(0,d.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,d.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`},children:JSON.stringify(n.toPresentation2(t),null,2)}),(0,d.jsxs)(ks,{"data-sticky":`true`,children:[(0,d.jsx)(K,{onClick:()=>It(a),children:`Copy to clipboard`}),(0,d.jsx)(K,{onClick:()=>Ft(a,`manifest.json`),children:`Download`})]})]})}]})})})}function js({key:e,initialValue:t,requestId:n,getInitialValue:r}){let[i,a]=(0,m.useCurrentAnnotationMetadata)({requestId:n}),[o,s]=(0,u.useState)(r&&r(i)||i[e]||t);return[o,(0,u.useCallback)(t=>{a({[e]:t}),s(t)},[])]}const Ms=(0,E.default)(),Ns=(0,u.createContext)(Ms);function Ps({children:e,emitter:t}){return(0,d.jsx)(Ns.Provider,{value:t,children:e})}function Fs(){return(0,u.useContext)(Ns)}function Is(e,t,n=[]){let r=(0,u.useContext)(Ns);(0,u.useEffect)(()=>{let n=e=>{t(e)};return r.on(e,n),()=>{r.off(e,n)}},[r,e,...n])}function Ls(e,t=[]){let n=t.length?t:Array(e.length).fill(!1);if(typeof window>`u`)return n;let r=e.map(e=>window.matchMedia(e)),i=()=>r.map(e=>e.matches),[a,o]=(0,u.useState)(i);return(0,u.useLayoutEffect)(()=>{let e=()=>o(i);return r.forEach(t=>t.addListener(e)),()=>r.forEach(t=>t.removeListener(e))},[]),a}function Rs(e,t,n,r=!0){let i=(0,D.useDebounce)(t,n);(0,u.useEffect)(()=>typeof window>`u`?()=>void 0:(window.addEventListener(`beforeunload`,t,!1),()=>{t(),window.removeEventListener(`beforeunload`,t)}),[t]),(0,u.useEffect)(()=>{if(e&&r)return e.subscribe(i,!0)},[i,e,r])}function zs(){let e=(0,m.useAtlasStore)(),t=(0,f.useStore)(e,e=>e.switchTool),n=(0,f.useStore)(e,e=>e.polygonState.currentTool),r=(0,f.useStore)(e,e=>e.polygonState.selectedStamp),i=(0,f.useStore)(e,e=>e.polygonState.showBoundingBox);return(0,u.useMemo)(()=>({currentTool:n,selectedStamp:r,draw:{active:n===`pencil`,enable:t.draw},polygon:{active:n===`pen`,enable:t.pen},line:{active:n===`line`,enable:t.line},lineBox:{active:n===`lineBox`,enable:t.lineBox},square:{active:n===`box`,enable:t.box},triangle:{active:r?.id===`triangle`,enable:t.triangle},hexagon:{active:r?.id===`hexagon`,enable:t.hexagon},circle:{active:r?.id===`circle`,enable:t.circle},remove:{active:i,enable:t.remove}}),[i,r,n,t])}const Bs=g.default.div`
625
640
  position: relative;
626
641
  width: 1px;
627
642
  background: rgba(0, 0, 0, 0.2);
628
643
  z-index: 50;
629
- `,Cs=(0,h.default)(Er)`
644
+ `,Vs=(0,g.default)(wr)`
630
645
  transition:
631
646
  opacity 300ms,
632
647
  transform 300ms;
@@ -638,7 +653,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
638
653
  &:focus {
639
654
  outline: 2px solid salmon;
640
655
  }
641
- `;(0,h.default)(Cs)`
656
+ `;(0,g.default)(Vs)`
642
657
  background: #fff;
643
658
  width: 30px;
644
659
  height: 30px;
@@ -652,7 +667,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
652
667
  svg {
653
668
  fill: #9999;
654
669
  }
655
- `;const ws=(0,h.default)(Cs)`
670
+ `;const Hs=(0,g.default)(Vs)`
656
671
  position: relative;
657
672
  display: flex;
658
673
  opacity: 1;
@@ -679,7 +694,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
679
694
  svg {
680
695
  font-size: 1.5em;
681
696
  }
682
- `,Ts=h.default.div`
697
+ `,Us=g.default.div`
683
698
  background: rgba(0, 0, 0, 0);
684
699
  position: absolute;
685
700
  width: 16px;
@@ -702,12 +717,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
702
717
  &:hover {
703
718
  transform: scaleX(100%);
704
719
  background: rgba(0, 0, 0, 0.1);
705
- ${Cs} {
720
+ ${Vs} {
706
721
  transform: scaleX(100%);
707
722
  opacity: 1;
708
723
  }
709
724
  }
710
- `,Es=h.default.div`
725
+ `,Ws=g.default.div`
711
726
  background: rgba(0, 0, 0, 0);
712
727
  position: absolute;
713
728
  pointer-events: none;
@@ -716,7 +731,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
716
731
  top: 0;
717
732
  bottom: 0;
718
733
  z-index: 51; // This will always be quite high.
719
- `,Ds=(0,l.forwardRef)(function({dir:e,open:t,actions:n,reset:r},i){let[a,o]=(0,l.useState)(!0),s=`mt-[calc(50vh+8px)]`,d=e===`left`?`${s} ml-[13px]`:`${s} ml-[3px]`;return(0,u.jsxs)(Ss,{onClick:()=>n.open(),children:[(0,u.jsx)(Es,{$open:t,$dir:e,className:`group`,children:t?null:(0,u.jsxs)(c.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,u.jsx)(c.TooltipTrigger,{as:ws,$dir:e,onClick:e=>n.open(),children:(0,u.jsx)(or,{className:`text-2xl`,rotate:e===`right`?90:270})}),(0,u.jsx)(c.DefaultTooltipContent,{children:`Open`})]})}),(0,u.jsxs)(c.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,u.jsx)(c.TooltipTrigger,{"aria-label":`Resize panel`,asChild:!0,children:(0,u.jsx)(`div`,{children:(0,u.jsxs)(Ts,{ref:i,$open:t,$dir:e,className:`group`,children:[t?(0,u.jsxs)(c.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,u.jsx)(c.TooltipTrigger,{as:c.IconHandle,onPress:()=>n.close(),children:(0,u.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,u.jsx)(ar,{})})}),(0,u.jsx)(c.DefaultTooltipContent,{children:`Close`})]}):null,r&&t?(0,u.jsxs)(c.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,u.jsx)(c.TooltipTrigger,{as:c.IconHandle,onPress:()=>r(),children:(0,u.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,u.jsx)(c.ResetIcon,{})})}),(0,u.jsx)(c.DefaultTooltipContent,{children:`Reset`})]}):null,t?(0,u.jsxs)(c.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,u.jsx)(c.TooltipTrigger,{asChild:!0,"aria-label":`Resize panel`,children:(0,u.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,u.jsx)(c.ResizeHandle,{"aria-label":`Resize panel`})})}),(0,u.jsx)(c.DefaultTooltipContent,{children:`Resize panel`})]}):null]})})}),a&&(0,u.jsx)(c.DefaultTooltipContent,{className:d,children:`Resize panel`})]})]})});function Os(e){return(0,u.jsx)(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 42 42`,xmlns:`http://www.w3.org/2000/svg`,stroke:`currentColor`,...e,children:(0,u.jsxs)(`g`,{transform:`translate(2 2)`,strokeWidth:5,fill:`none`,fillRule:`evenodd`,children:[(0,u.jsx)(`circle`,{strokeOpacity:.5,cx:18,cy:18,r:18}),(0,u.jsx)(`path`,{d:`M36 18c0-9.94-8.06-18-18-18`,children:(0,u.jsx)(`animateTransform`,{attributeName:`transform`,type:`rotate`,from:`0 18 18`,to:`360 18 18`,dur:`1s`,repeatCount:`indefinite`})})]})})}var ks={};function As(){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{"data-header":`true`,className:ks.ghostLoadingBlock}),(0,u.jsxs)(`div`,{className:ks.ghostBlockList,children:[(0,u.jsx)(`div`,{className:ks.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:ks.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:ks.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:ks.ghostLoadingBlock})]})]})}function js(e,t,n,r=[]){(0,l.useLayoutEffect)(()=>{let r=e.current;if(r)return r.addEventListener(t,n),()=>{r.removeEventListener(t,n)}},[t,...r])}function Ms(e,t,n,r){return Math.sqrt(Math.abs(n-e)**2+Math.abs(r-t)**2)}function Ns(e,t,n,r){return n||(r?r/e:t)}function Ps(e,t={}){let n=(0,l.useRef)(null),r=(0,l.useRef)(null),i=(0,l.useRef)(null),a=(0,l.useRef)(null),o=(0,l.useRef)(.5),[s,u]=(0,l.useState)(!1),d=(0,l.useRef)(!1),f=(0,l.useRef)(0),p=(0,l.useRef)({x:0,y:0}),[{widthA:m,widthB:h},g]=(0,c.useLocalStorage)(`resize-layout/${e}`,{widthA:`auto`,widthB:`${Va({initial:t.widthA,fallback:320,options:{minWidth:t.minWidthPx,maxWidth:t.maxWidthPx}})}px`}),{loading:_=!1}=t;return js(a,`mousedown`,e=>{p.current.x=e.pageX,p.current.y=e.pageY,f.current&&(clearTimeout(f.current),f.current=0),f.current=setTimeout(()=>{u(!0),d.current=!0},350)},[_]),js({current:typeof window<`u`?window:void 0},`mouseup`,()=>{let e=n.current;if(e&&d.current){let{x:n,width:r}=e.getBoundingClientRect(),i=t.marginLeft||0,a=Ns(r,.8,t.maxWidthPct,t.maxWidthPx)*r,s=Ns(r,.2,t.minWidthPct,t.minWidthPx)*r;if(t.left){let e=o.current*r-i;g({widthA:`${(1-o.current)*r-i}`,widthB:`${e>a?a:e<s?s:e}px`})}else{let e=1-o.current*r-i;g({widthA:`${e>a?a:e<s?s:e}px`,widthB:`${o.current*r-i}px`})}u(!1),d.current=!1,t.onDragEnd&&t.onDragEnd()}clearTimeout(f.current),f.current=0},[_]),js(n,`mousemove`,e=>{if(!d.current&&f.current&&Ms(p.current.x,p.current.y,e.pageX,e.pageY)>20&&(u(!0),d.current=!0,clearTimeout(f.current),f.current=0),d.current&&r.current){let i=n.current;if(i){let{x:n,width:a}=i.getBoundingClientRect(),s=t.marginLeft||0,c=t.left||!1,l=Ns(a,.8,t.maxWidthPct,t.maxWidthPx),u=Ns(a,.2,t.minWidthPct,t.minWidthPx);o.current=(a+n-e.pageX-5)/a,c&&(o.current=1-o.current),o.current=o.current<u?u:o.current,o.current=o.current>l?l:o.current,r.current.style.width=`${o.current*a-s}px`}}},[s,_]),{refs:{container:n,resizer:a,resizableDiv:r,otherDiv:i},setWidths:g,isDragging:s,widthA:m,widthB:h}}function W(e,t,n){return e.filter(e=>{if(!e.supports)return!0;try{return e.supports(t)}catch(t){return n?.(e,t),!1}})}function G(e,t){return t?e.some(e=>e.id===t)?t:e[0]?.id||null:null}function K(e){return e.map(e=>e.id).join(`,`)}const q=`.manifest-editor.exhibition-focused &`,J=`[data-exhibition-theme="dark"] ${q}`,Y={pink:`#b84c74`,pinkHover:`#9f3f64`,lightApp:`#f4f1ec`,lightStage:`#dfdbd4`,lightPanel:`#fff`,lightPanelSoft:`#f8f6f3`,lightBorder:`#dcd5ce`,lightPanelBorder:`#ddd5ce`,lightText:`#25211f`,lightMuted:`#6a625c`,darkApp:`#18161d`,darkStage:`#0e0d12`,darkPanel:`#28222d`,darkPanelSoft:`#2f2934`,darkPanelHeader:`#25222b`,darkHover:`#312c34`,darkSelected:`#3a3440`,darkText:`#f6f1f4`,darkMuted:`#c8c0c6`,darkSubtle:`#999088`,darkLabel:`#d9d1da`,darkWarning:`#4a2636`,darkWarningBorder:`#7a3f59`,darkBorder:`rgba(246, 241, 244, 0.16)`,darkBorderSoft:`rgba(246, 241, 244, 0.14)`},Fs=h.default.div`
734
+ `,Gs=(0,u.forwardRef)(function({dir:e,open:t,actions:n,reset:r},i){let[a,o]=(0,u.useState)(!0),s=`mt-[calc(50vh+8px)]`,c=e===`left`?`${s} ml-[13px]`:`${s} ml-[3px]`;return(0,d.jsxs)(Bs,{onClick:()=>n.open(),children:[(0,d.jsx)(Ws,{$open:t,$dir:e,className:`group`,children:t?null:(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{"aria-label":`Open ${e} panel`,as:Hs,$dir:e,onClick:e=>n.open(),children:(0,d.jsx)(nr,{"aria-hidden":`true`,className:`text-2xl`,rotate:e===`right`?90:270})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Open`})]})}),(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(`div`,{children:(0,d.jsxs)(Us,{ref:i,$open:t,$dir:e,className:`group`,children:[t?(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{"aria-label":`Close ${e} panel`,as:l.IconHandle,onPress:()=>n.close(),children:(0,d.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,d.jsx)(tr,{"aria-hidden":`true`})})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Close`})]}):null,r&&t?(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{"aria-label":`Reset ${e} panel size`,as:l.IconHandle,onPress:()=>r(),children:(0,d.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,d.jsx)(l.ResetIcon,{"aria-hidden":`true`})})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Reset`})]}):null,t?(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,d.jsx)(l.ResizeHandle,{"aria-label":`Resize panel`})})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Resize panel`})]}):null]})})}),a&&(0,d.jsx)(l.DefaultTooltipContent,{className:c,children:`Resize panel`})]})]})});function Ks(e){return(0,d.jsx)(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 42 42`,xmlns:`http://www.w3.org/2000/svg`,stroke:`currentColor`,...e,children:(0,d.jsxs)(`g`,{transform:`translate(2 2)`,strokeWidth:5,fill:`none`,fillRule:`evenodd`,children:[(0,d.jsx)(`circle`,{strokeOpacity:.5,cx:18,cy:18,r:18}),(0,d.jsx)(`path`,{d:`M36 18c0-9.94-8.06-18-18-18`,children:(0,d.jsx)(`animateTransform`,{attributeName:`transform`,type:`rotate`,from:`0 18 18`,to:`360 18 18`,dur:`1s`,repeatCount:`indefinite`})})]})})}var qs={ghostLoadingBlock:`_ghostLoadingBlock_1i1t4_1`,"ghost-loading":`_ghost-loading_1i1t4_1`,ghostLoading:`_ghost-loading_1i1t4_1`,ghostBlockList:`_ghostBlockList_1i1t4_28`};function Js(){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`div`,{"data-header":`true`,className:qs.ghostLoadingBlock}),(0,d.jsxs)(`div`,{className:qs.ghostBlockList,children:[(0,d.jsx)(`div`,{className:qs.ghostLoadingBlock}),(0,d.jsx)(`div`,{className:qs.ghostLoadingBlock}),(0,d.jsx)(`div`,{className:qs.ghostLoadingBlock}),(0,d.jsx)(`div`,{className:qs.ghostLoadingBlock})]})]})}function Ys(e,t,n,r=[]){(0,u.useLayoutEffect)(()=>{let r=e.current;if(r)return r.addEventListener(t,n),()=>{r.removeEventListener(t,n)}},[t,...r])}function Xs(e,t,n,r){return Math.sqrt(Math.abs(n-e)**2+Math.abs(r-t)**2)}function Zs(e,t,n,r){return n||(r?r/e:t)}function Qs(e,t={}){let n=(0,u.useRef)(null),r=(0,u.useRef)(null),i=(0,u.useRef)(null),a=(0,u.useRef)(null),o=(0,u.useRef)(.5),[s,c]=(0,u.useState)(!1),d=(0,u.useRef)(!1),f=(0,u.useRef)(0),p=(0,u.useRef)({x:0,y:0}),[{widthA:m,widthB:h},g]=(0,l.useLocalStorage)(`resize-layout/${e}`,{widthA:`auto`,widthB:`${no({initial:t.widthA,fallback:320,options:{minWidth:t.minWidthPx,maxWidth:t.maxWidthPx}})}px`}),{loading:_=!1}=t;return Ys(a,`mousedown`,e=>{p.current.x=e.pageX,p.current.y=e.pageY,f.current&&(clearTimeout(f.current),f.current=0),f.current=setTimeout(()=>{c(!0),d.current=!0},350)},[_]),Ys({current:typeof window<`u`?window:void 0},`mouseup`,()=>{let e=n.current;if(e&&d.current){let{x:n,width:r}=e.getBoundingClientRect(),i=t.marginLeft||0,a=Zs(r,.8,t.maxWidthPct,t.maxWidthPx)*r,s=Zs(r,.2,t.minWidthPct,t.minWidthPx)*r;if(t.left){let e=o.current*r-i;g({widthA:`${(1-o.current)*r-i}`,widthB:`${e>a?a:e<s?s:e}px`})}else{let e=1-o.current*r-i;g({widthA:`${e>a?a:e<s?s:e}px`,widthB:`${o.current*r-i}px`})}c(!1),d.current=!1,t.onDragEnd&&t.onDragEnd()}clearTimeout(f.current),f.current=0},[_]),Ys(n,`mousemove`,e=>{if(!d.current&&f.current&&Xs(p.current.x,p.current.y,e.pageX,e.pageY)>20&&(c(!0),d.current=!0,clearTimeout(f.current),f.current=0),d.current&&r.current){let i=n.current;if(i){let{x:n,width:a}=i.getBoundingClientRect(),s=t.marginLeft||0,c=t.left||!1,l=Zs(a,.8,t.maxWidthPct,t.maxWidthPx),u=Zs(a,.2,t.minWidthPct,t.minWidthPx);o.current=(a+n-e.pageX-5)/a,c&&(o.current=1-o.current),o.current=o.current<u?u:o.current,o.current=o.current>l?l:o.current,r.current.style.width=`${o.current*a-s}px`}}},[s,_]),{refs:{container:n,resizer:a,resizableDiv:r,otherDiv:i},setWidths:g,isDragging:s,widthA:m,widthB:h}}const q=`.manifest-editor.exhibition-focused &`,J=`[data-exhibition-theme="dark"] ${q}`,Y={pink:`#b84c74`,pinkHover:`#9f3f64`,lightApp:`#f4f1ec`,lightStage:`#dfdbd4`,lightPanel:`#fff`,lightPanelSoft:`#f8f6f3`,lightBorder:`#dcd5ce`,lightPanelBorder:`#ddd5ce`,lightText:`#25211f`,lightMuted:`#6a625c`,darkApp:`#18161d`,darkStage:`#0e0d12`,darkPanel:`#28222d`,darkPanelSoft:`#2f2934`,darkPanelHeader:`#25222b`,darkHover:`#312c34`,darkSelected:`#3a3440`,darkText:`#f6f1f4`,darkMuted:`#c8c0c6`,darkSubtle:`#999088`,darkLabel:`#d9d1da`,darkWarning:`#4a2636`,darkWarningBorder:`#7a3f59`,darkBorder:`rgba(246, 241, 244, 0.16)`,darkBorderSoft:`rgba(246, 241, 244, 0.14)`},$s=g.default.div`
720
735
  display: flex;
721
736
  flex: 1 1 0;
722
737
  min-height: 0;
@@ -730,7 +745,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
730
745
  ${J} {
731
746
  background: ${Y.darkApp};
732
747
  }
733
- `,Is=h.default.div`
748
+ `,ec=g.default.div`
734
749
  flex: 1 1 0;
735
750
  min-width: 0;
736
751
  min-height: 0;
@@ -846,12 +861,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
846
861
  background: ${Y.darkHover} !important;
847
862
  color: #fff !important;
848
863
  }
849
- `,Ls=h.default.div`
864
+ `,tc=g.default.div`
850
865
  display: flex;
851
866
  flex: 1;
852
867
  justify-content: center;
853
868
  align-items: center;
854
- `,Rs=h.default.div`
869
+ `,nc=g.default.div`
855
870
  position: absolute;
856
871
  top: 3rem;
857
872
  z-index: 40;
@@ -876,12 +891,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
876
891
  box-shadow: 0 12px 28px rgba(0, 0, 0, 0.36);
877
892
  }
878
893
 
879
- ${e=>e.$side===`left`?h.css`
894
+ ${e=>e.$side===`left`?g.css`
880
895
  left: 1rem;
881
- `:h.css`
896
+ `:g.css`
882
897
  right: 1rem;
883
898
  `}
884
- `,zs=h.default.button`
899
+ `,rc=g.default.button`
885
900
  width: 2.35rem;
886
901
  height: 2.35rem;
887
902
  border: 0;
@@ -936,16 +951,21 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
936
951
  width: 1.25em;
937
952
  height: 1.25em;
938
953
  }
939
- `,Bs=h.default.div`
954
+
955
+ @media (max-width: 1020px) {
956
+ width: 2.75rem;
957
+ height: 2.75rem;
958
+ }
959
+ `,ic=g.default.div`
940
960
  display: flex;
941
961
  flex-direction: column;
942
962
  gap: 0.25rem;
943
- `,Vs=h.default.div`
963
+ `,ac=g.default.div`
944
964
  width: 100%;
945
965
  height: 1px;
946
966
  margin: 0.25rem 0;
947
967
  background: rgba(15, 23, 42, 0.14);
948
- `,Hs=h.default.aside`
968
+ `,oc=g.default.aside`
949
969
  position: absolute;
950
970
  top: 3rem;
951
971
  bottom: 1rem;
@@ -958,7 +978,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
958
978
  border-radius: 6px;
959
979
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.18);
960
980
  overflow: hidden;
961
- opacity: ${e=>e.$open?1:0};
981
+ opacity: ${e=>+!!e.$open};
962
982
  pointer-events: ${e=>e.$open?`auto`:`none`};
963
983
  transition:
964
984
  opacity 180ms ease,
@@ -1000,7 +1020,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1000
1020
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.42);
1001
1021
  }
1002
1022
 
1003
- ${J} ${$a} {
1023
+ ${J} ${co} {
1004
1024
  background: ${Y.darkPanelHeader} !important;
1005
1025
  border-color: ${Y.darkBorder} !important;
1006
1026
  color: ${Y.darkText} !important;
@@ -1009,11 +1029,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1009
1029
  inset 0 1px 0 0 ${Y.darkBorder} !important;
1010
1030
  }
1011
1031
 
1012
- ${J} ${U} {
1032
+ ${J} ${lo} {
1013
1033
  color: ${Y.darkText} !important;
1014
1034
  }
1015
1035
 
1016
- ${J} ${U}:hover {
1036
+ ${J} ${lo}:hover {
1017
1037
  background: ${Y.darkHover} !important;
1018
1038
  color: #fff !important;
1019
1039
  }
@@ -1212,10 +1232,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1212
1232
  border-color: ${Y.darkBorder} !important;
1213
1233
  }
1214
1234
 
1215
- ${e=>e.$side===`left`?h.css`
1235
+ ${e=>e.$side===`left`?g.css`
1216
1236
  left: 4.5rem;
1217
1237
  transform: translateX(${e.$open?`0`:`-0.75rem`});
1218
- `:h.css`
1238
+ `:g.css`
1219
1239
  right: 4.5rem;
1220
1240
  transform: translateX(${e.$open?`0`:`0.75rem`});
1221
1241
  `}
@@ -1230,13 +1250,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1230
1250
  min-width: 0;
1231
1251
  transform: translateY(${e=>e.$open?`0`:`0.75rem`});
1232
1252
  }
1233
- `,Us=h.default.div`
1253
+ `,sc=g.default.div`
1234
1254
  display: flex;
1235
1255
  flex: 1;
1236
1256
  min-width: 0;
1237
1257
  height: 100%;
1238
1258
  overflow: hidden;
1239
- `,Ws=h.default.div`
1259
+ `,cc=g.default.div`
1240
1260
  display: flex;
1241
1261
  flex-direction: column;
1242
1262
  flex: 1;
@@ -1245,16 +1265,16 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1245
1265
  max-width: 100%;
1246
1266
  min-width: 0;
1247
1267
  overflow: hidden;
1248
- `,Gs=h.default.header`
1268
+ `,lc=g.default.header`
1249
1269
  //box-shadow: 0 3px 2px 0 rgba(0, 0, 0, 0.04), 0 1px 0 0 rgba(0, 0, 0, 0.17);
1250
1270
  z-index: 200;
1251
- `,Ks=h.default.div`
1271
+ `,uc=g.default.div`
1252
1272
  background: #fff;
1253
- `,qs=h.default.div`
1273
+ `,dc=g.default.div`
1254
1274
  display: flex;
1255
1275
  flex: 1 1 0;
1256
1276
  min-height: 0;
1257
- `,Js=h.default.div`
1277
+ `,fc=g.default.div`
1258
1278
  background: #fff;
1259
1279
  display: flex;
1260
1280
  flex-direction: column;
@@ -1262,18 +1282,18 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1262
1282
  max-width: 720px;
1263
1283
  align-items: flex-end;
1264
1284
 
1265
- ${e=>e.$motion?h.css`
1285
+ ${e=>e.$motion?g.css`
1266
1286
  transition: max-width 400ms;
1267
1287
  `:``}
1268
1288
 
1269
- ${e=>{switch(e.$state){case`entering`:return h.css`
1289
+ ${e=>{switch(e.$state){case`entering`:return g.css`
1270
1290
  max-width: ${e.$width};
1271
- `;case`exiting`:return h.css`
1291
+ `;case`exiting`:return g.css`
1272
1292
  max-width: 0;
1273
- `;case`unmounted`:case`exited`:return h.css`
1293
+ `;case`unmounted`:case`exited`:return g.css`
1274
1294
  max-width: 0;
1275
1295
  `}}}
1276
- `,Ys=h.default.div`
1296
+ `,pc=g.default.div`
1277
1297
  flex: 1 1 0;
1278
1298
  background: #e3e7f0;
1279
1299
  // background: #efefef;
@@ -1292,7 +1312,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1292
1312
  > * {
1293
1313
  min-width: 0;
1294
1314
  }
1295
- `,Xs=h.default.div`
1315
+ `,mc=g.default.div`
1296
1316
  background: #fff;
1297
1317
  display: flex;
1298
1318
  flex-direction: column;
@@ -1301,14 +1321,14 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1301
1321
 
1302
1322
  ${e=>e.$motion?`transition: max-width 400ms;`:``}
1303
1323
 
1304
- ${e=>{switch(e.$state){case`entering`:return h.css`
1324
+ ${e=>{switch(e.$state){case`entering`:return g.css`
1305
1325
  max-width: ${e.$width};
1306
- `;case`exiting`:return h.css`
1326
+ `;case`exiting`:return g.css`
1307
1327
  max-width: 0;
1308
- `;case`unmounted`:case`exited`:return h.css`
1328
+ `;case`unmounted`:case`exited`:return g.css`
1309
1329
  max-width: 0;
1310
1330
  `}}}
1311
- `,Zs=h.default.div`
1331
+ `,hc=g.default.div`
1312
1332
  display: flex;
1313
1333
  flex: 1;
1314
1334
  height: 100%;
@@ -1316,28 +1336,28 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1316
1336
  transition: min-width 400ms;
1317
1337
  overflow: hidden;
1318
1338
 
1319
- ${e=>{switch(e.$menu){case`top`:return h.css`
1339
+ ${e=>{switch(e.$menu){case`top`:return g.css`
1320
1340
  flex-direction: column;
1321
1341
  ${X} {
1322
1342
  flex-direction: column;
1323
1343
  }
1324
- `;case`left`:return h.css`
1344
+ `;case`left`:return g.css`
1325
1345
  flex-direction: row;
1326
1346
  ${X} {
1327
1347
  flex-direction: row;
1328
1348
  }
1329
- `;default:case`bottom`:return h.css`
1349
+ `;default:case`bottom`:return g.css`
1330
1350
  flex-direction: column-reverse;
1331
1351
  ${X} {
1332
1352
  flex-direction: column;
1333
1353
  }
1334
- `;case`right`:return h.css`
1354
+ `;case`right`:return g.css`
1335
1355
  flex-direction: row-reverse;
1336
1356
  ${X} {
1337
1357
  flex-direction: row;
1338
1358
  }
1339
1359
  `}}}
1340
- `,Qs=h.default.div`
1360
+ `;g.default.div`
1341
1361
  background: #fff;
1342
1362
  border-top: 1px solid #e3e7f0;
1343
1363
  border-right: 1px solid #e3e7f0;
@@ -1347,7 +1367,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1347
1367
  /* width: 3.35em;
1348
1368
  padding: 0.3em;
1349
1369
  gap: 0.3em; */
1350
- `,$s=h.default.button`
1370
+ `,g.default.button`
1351
1371
  cursor: pointer;
1352
1372
  aspect-ratio: 1;
1353
1373
  width: 3em;
@@ -1374,124 +1394,124 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1374
1394
  font-size: 1.5em;
1375
1395
  color: #999;
1376
1396
  }
1377
- `,X=h.default.div`
1397
+ `;const X=g.default.div`
1378
1398
  display: flex;
1379
1399
  box-shadow:
1380
1400
  0 -3px 2px 0 rgba(0, 0, 0, 0.04),
1381
1401
  0 -1px 0 0 rgba(0, 0, 0, 0.17);
1382
1402
 
1383
- ${e=>!e.$open&&(e.$position===`top`||e.$position===`bottom`)?h.css`
1403
+ ${e=>!e.$open&&(e.$position===`top`||e.$position===`bottom`)?g.css`
1384
1404
  display: none;
1385
1405
  `:``}
1386
- `,Z=h.default.div`
1406
+ `,Z=g.default.div`
1387
1407
  display: flex;
1388
1408
  flex-direction: column;
1389
1409
  flex: 1;
1390
1410
  min-width: 0;
1391
1411
  overflow: hidden;
1392
- `;function ec(e){let t=e?.resource;return t?.source?.type||t?.type||null}const tc=(0,l.memo)(function(e){let t=z(),n=Gn(),r=B(),i=fi(),{vault:a}=(0,l.useContext)(p.ReactVaultContext),o=a||void 0,s=(0,p.useVaultSelector)(e=>e.iiif),{loading:d,state:f,leftPanels:m,centerPanels:h,rightPanels:g,modals:_=[],actions:v}=i,y=e.isLoading||!1,b=(0,l.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:f,appState:n}),[r,o,t,f,n,s]),x=(0,l.useMemo)(()=>W(m,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}).filter(e=>!e.focusedMode?.hide),[m,b]),S=(0,l.useMemo)(()=>W(h,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[h,b]),C=(0,l.useMemo)(()=>W(g,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}).filter(e=>!e.focusedMode?.hide),[g,b]),w=(0,l.useMemo)(()=>W(_,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,b]),T=(0,l.useMemo)(()=>({...i,leftPanels:x,centerPanels:S,rightPanels:C,modals:w}),[i,x,S,C,w]),E=x.find(e=>e.id===f.leftPanel.current),D=C.find(e=>e.id===f.rightPanel.current),O=S.find(e=>e.id===f.centerPanel.current),k=w.find(e=>e.id===f.modal.current),A=f.pinnedRightPanel.pinned?C.find(e=>e.id===f.pinnedRightPanel.current):void 0,j=D&&(A?.id!==D.id||!(0,te.default)(f.pinnedRightPanel.state,f.rightPanel.state)),M=(0,l.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:f,appState:n,actions:v}),[r,o,t,f,n,v]),ne=e=>{e.focusedMode?.onSelect?.(M)},re=!E||E.focusedMode?.closeOnMainPanelClick!==!1,ie=(0,l.useMemo)(()=>(i.background||[]).map((e,t)=>(0,u.jsx)(l.Fragment,{children:e.render()},t)),[i.background]);(0,l.useLayoutEffect)(()=>{C.length&&v.rightPanel.change({id:C[0].id}),x.length&&v.leftPanel.change({id:x[0].id}),S.length&&v.centerPanel.change({id:S[0].id}),v.leftPanel.close(),v.rightPanel.close()},[]),(0,l.useLayoutEffect)(()=>{if(O&&O.onMount)return O.onMount(f.centerPanel.state||O.defaultState||{},{...T,current:v.centerPanel,vault:o},n)},[f.centerPanel.current,O?.id]),(0,l.useLayoutEffect)(()=>{if(!f.leftPanel.open||!f.leftPanel.current)return;let e=x.find(e=>e.id===f.leftPanel.current);e?.focusedMode?.onSelect&&ne(e)},[f.leftPanel.open,f.leftPanel.current,K(x)]),(0,l.useLayoutEffect)(()=>{if(f.leftPanel.current&&!E){let e=G(x,f.leftPanel.current);e?v.leftPanel.change({id:e}):v.leftPanel.close()}if(f.centerPanel.current&&!O){let e=G(S,f.centerPanel.current);e?v.centerPanel.change({id:e}):v.centerPanel.close()}if(f.rightPanel.current&&!D){let e=G(C,f.rightPanel.current);e?v.rightPanel.change({id:e}):v.rightPanel.close()}if(f.modal.current&&!k){let e=G(w,f.modal.current);e?v.modal.change({id:e}):v.modal.close()}},[f.leftPanel.current,f.centerPanel.current,f.rightPanel.current,f.modal.current,E?.id,O?.id,D?.id,k?.id,K(x),K(S),K(C),K(w)]),vs(`layout.edit`,e=>{ec(e)===`Canvas`&&!f.rightPanel.open||(C.find(e=>e.id===`@manifest-editor/editor`)?v.rightPanel.open({id:`@manifest-editor/editor`,stacked:!0}):D&&v.rightPanel.open())},[K(C),D?.id,f.rightPanel.open]);let N=`4.5rem`,P=`${Va({options:E?.options,fallback:340})}px`,ae=`${Va({options:D?.options,fallback:420})}px`,oe={"--manifest-editor-layout-left-sidebar-small":N,"--manifest-editor-layout-left-sidebar-large":f.leftPanel.open?`calc(${N} + ${P})`:N,"--manifest-editor-layout-right-sidebar-small":N,"--manifest-editor-layout-right-sidebar-large":f.rightPanel.open?`calc(${N} + ${ae})`:N};if((0,l.useLayoutEffect)(()=>{if(typeof document>`u`)return;let e=document.documentElement,t=Object.keys(oe).map(t=>[t,e.style.getPropertyValue(t)]);for(let[t,n]of Object.entries(oe))e.style.setProperty(t,n);return()=>{for(let[n,r]of t)r?e.style.setProperty(n,r):e.style.removeProperty(n)}},[P,ae,f.leftPanel.open,f.rightPanel.open]),d)return null;let F=(e,t,n)=>{if(!t.length)return null;let r=e===`left`?v.leftPanel:v.rightPanel;return(0,u.jsx)(Rs,{$side:e,"aria-label":`${e} panels`,children:t.map(t=>(0,u.jsxs)(c.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,u.jsx)(c.TooltipTrigger,{asChild:!0,children:(0,u.jsx)(zs,{type:`button`,"aria-label":t.label,"data-selected":n===t.id,onClick:()=>{n===t.id?r.toggle():r.open({id:t.id})},children:t.icon||t.label.slice(0,1)})}),(0,u.jsx)(c.DefaultTooltipContent,{children:t.label})]},t.id))})},se=()=>!S.length&&!x.length?null:(0,u.jsxs)(Rs,{$side:`left`,"aria-label":`Main and left panels`,children:[S.length?(0,u.jsx)(Bs,{"aria-label":`Main panels`,children:S.filter(e=>!e.focusedMode?.hide).map(e=>(0,u.jsxs)(c.Tooltip,{placement:`right`,children:[(0,u.jsx)(c.TooltipTrigger,{asChild:!0,children:(0,u.jsx)(zs,{type:`button`,"aria-label":e.label,"data-selected":f.centerPanel.current===e.id,onClick:()=>{v.centerPanel.open({id:e.id}),v.leftPanel.close(),v.rightPanel.close(),ne(e)},children:e.icon||e.label.slice(0,1)})}),(0,u.jsx)(c.DefaultTooltipContent,{children:e.label})]},e.id))}):null,S.length&&x.length?(0,u.jsx)(Vs,{}):null,x.length?(0,u.jsx)(Bs,{"aria-label":`Left panels`,children:x.map(e=>(0,u.jsxs)(c.Tooltip,{placement:`right`,children:[(0,u.jsx)(c.TooltipTrigger,{asChild:!0,children:(0,u.jsx)(zs,{type:`button`,"aria-label":e.label,"data-selected":f.leftPanel.current===e.id,onClick:()=>{f.leftPanel.current===e.id?v.leftPanel.toggle():v.leftPanel.open({id:e.id})},children:e.icon||e.label.slice(0,1)})}),(0,u.jsx)(c.DefaultTooltipContent,{children:e.label})]},e.id))}):null]}),ce=()=>!k||f.modal.open===!1?null:(0,u.jsx)(c.Modal,{title:k.label,onClose:()=>v.modal.close(),children:Ha(k.render(f.modal.state||k.defaultState||{},{...T,current:v.modal,vault:o},n))}),le=()=>(0,u.jsxs)(Zs,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,u.jsx)(X,{$open:f.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,u.jsx)(Z,{children:(0,u.jsx)(ee.ErrorBoundary,{resetKeys:[O?.id],FallbackComponent:za,children:y?(0,u.jsx)(Ls,{children:(0,u.jsx)(Os,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):f.centerPanel.open&&O?Ha(O.render(f.centerPanel.state||O.defaultState||{},{...T,current:v.centerPanel,vault:o},n)):null})})]}),ue=()=>(0,u.jsx)(Us,{children:y?(0,u.jsx)(Z,{children:(0,u.jsx)(As,{})}):(0,u.jsxs)(u.Fragment,{children:[e.leftPanelMenu?(0,u.jsx)(X,{$open:f.leftPanel.open,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,u.jsx)(Z,{children:E?(0,u.jsx)(ro,{isLeft:!0,panel:E,state:f.leftPanel,actions:v.leftPanel}):null})]})}),de=()=>(0,u.jsx)(Us,{children:y?(0,u.jsx)(Z,{children:(0,u.jsx)(As,{})}):(0,u.jsxs)(u.Fragment,{children:[e.rightPanelMenu?(0,u.jsx)(X,{$open:f.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,u.jsxs)(Z,{children:[j?(0,u.jsx)(ro,{panel:D,state:f.rightPanel,actions:v.rightPanel,pinActions:v.pinnedRightPanel,available:C}):null,A?(0,u.jsx)(ro,{panel:A,state:f.pinnedRightPanel,actions:v.pinnedRightPanel,close:v.rightPanel.close}):null]})]})});return(0,u.jsx)(si.Provider,{value:`focused`,children:(0,u.jsxs)(Ws,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,"data-layout-mode":`focused`,style:oe,children:[e.hideHeader?null:(0,u.jsxs)(Gs,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(Fs,{children:[(0,u.jsx)(Is,{onClick:()=>{re&&v.leftPanel.close()},children:le()}),se(),F(`right`,C,f.rightPanel.current),x.length>0?(0,u.jsx)(Hs,{$side:`left`,$open:f.leftPanel.open,style:{width:P,minWidth:E?.options?.minWidth,maxWidth:E?.options?.maxWidth},children:ue()}):null,C.length>0?(0,u.jsx)(Hs,{$side:`right`,$open:f.rightPanel.open,style:{width:ae,minWidth:D?.options?.minWidth,maxWidth:D?.options?.maxWidth},children:de()}):null]}),(0,u.jsx)(Ks,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ie}),(0,u.jsx)(ta,{}),(0,u.jsx)(na,{}),(0,u.jsx)(u.Fragment,{children:ce()})]})})}),nc=h.default.div`
1412
+ `;function gc(e,t,n){return e.filter(e=>{if(!e.supports)return!0;try{return e.supports(t)}catch(t){return n?.(e,t),!1}})}function _c(e,t){return t?e.some(e=>e.id===t)?t:e[0]?.id||null:null}function Q(e){return e.map(e=>e.id).join(`,`)}function vc(e){let t=e?.resource;return t?.source?.type||t?.type||null}const yc=(0,u.memo)(function(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),{loading:c,state:f,leftPanels:p,centerPanels:h,rightPanels:g,modals:_=[],actions:v}=i,y=e.isLoading||!1,b=(0,u.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:f,appState:n}),[r,o,t,f,n,s]),x=(0,u.useMemo)(()=>gc(p,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}).filter(e=>!e.focusedMode?.hide),[p,b]),S=(0,u.useMemo)(()=>gc(h,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[h,b]),w=(0,u.useMemo)(()=>gc(g,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}).filter(e=>!e.focusedMode?.hide),[g,b]),T=(0,u.useMemo)(()=>gc(_,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,b]),E=(0,u.useMemo)(()=>x.filter(e=>e.modal),[x]),D=(0,u.useMemo)(()=>x.filter(e=>!e.modal),[x]),O=(0,u.useMemo)(()=>[...T,...E],[T,E]),k=(0,u.useMemo)(()=>({...i,leftPanels:x,centerPanels:S,rightPanels:w,modals:O}),[i,x,S,w,O]),A=D.find(e=>e.id===f.leftPanel.current),j=w.find(e=>e.id===f.rightPanel.current),M=S.find(e=>e.id===f.centerPanel.current),N=O.find(e=>e.id===f.modal.current),P=f.modal.open&&E.some(e=>e.id===f.modal.current)?f.modal.current:f.leftPanel.current,F=f.pinnedRightPanel.pinned?w.find(e=>e.id===f.pinnedRightPanel.current):void 0,te=j&&(F?.id!==j.id||!(0,ee.default)(f.pinnedRightPanel.state,f.rightPanel.state)),ne=(0,u.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:f,appState:n,actions:v}),[r,o,t,f,n,v]),I=e=>{e.focusedMode?.onSelect?.(ne)},re=!A||A.focusedMode?.closeOnMainPanelClick!==!1,[L]=Ls([`(max-width: 1020px)`]),R=(0,u.useMemo)(()=>(i.background||[]).map((e,t)=>(0,d.jsx)(u.Fragment,{children:e.render()},t)),[i.background]);(0,u.useLayoutEffect)(()=>{w.length&&v.rightPanel.change({id:w[0].id}),D.length&&v.leftPanel.change({id:D[0].id}),S.length&&v.centerPanel.change({id:S[0].id}),v.leftPanel.close(),v.rightPanel.close()},[]),(0,u.useLayoutEffect)(()=>{if(M&&M.onMount)return M.onMount(f.centerPanel.state||M.defaultState||{},{...k,current:v.centerPanel,vault:o},n)},[f.centerPanel.current,M?.id]),(0,u.useLayoutEffect)(()=>{L&&f.leftPanel.open&&f.rightPanel.open&&v.rightPanel.close()},[L,f.leftPanel.open,f.rightPanel.open]),(0,u.useLayoutEffect)(()=>{if(!f.leftPanel.open||!f.leftPanel.current)return;let e=x.find(e=>e.id===f.leftPanel.current);e?.focusedMode?.onSelect&&I(e)},[f.leftPanel.open,f.leftPanel.current,Q(x)]),(0,u.useLayoutEffect)(()=>{if(f.leftPanel.current&&!A){let e=_c(D,f.leftPanel.current);e?v.leftPanel.change({id:e}):v.leftPanel.close()}if(f.centerPanel.current&&!M){let e=_c(S,f.centerPanel.current);e?v.centerPanel.change({id:e}):v.centerPanel.close()}if(f.rightPanel.current&&!j){let e=_c(w,f.rightPanel.current);e?v.rightPanel.change({id:e}):v.rightPanel.close()}if(f.modal.current&&!N){let e=_c(O,f.modal.current);e?v.modal.change({id:e}):v.modal.close()}},[f.leftPanel.current,f.centerPanel.current,f.rightPanel.current,f.modal.current,A?.id,M?.id,j?.id,N?.id,Q(D),Q(S),Q(w),Q(O)]),Is(`layout.edit`,e=>{vc(e)===`Canvas`&&!f.rightPanel.open||(w.find(e=>e.id===`@manifest-editor/editor`)?v.rightPanel.open({id:`@manifest-editor/editor`,stacked:!0}):j&&v.rightPanel.open())},[Q(w),j?.id,f.rightPanel.open]);let z=`4.5rem`,ie=`${no({options:A?.options,fallback:340})}px`,ae=`${no({options:j?.options,fallback:420})}px`,oe={"--manifest-editor-layout-left-sidebar-small":z,"--manifest-editor-layout-left-sidebar-large":f.leftPanel.open?`calc(${z} + ${ie})`:z,"--manifest-editor-layout-right-sidebar-small":z,"--manifest-editor-layout-right-sidebar-large":f.rightPanel.open?`calc(${z} + ${ae})`:z};return(0,u.useLayoutEffect)(()=>{if(typeof document>`u`)return;let e=document.documentElement,t=Object.keys(oe).map(t=>[t,e.style.getPropertyValue(t)]);for(let[t,n]of Object.entries(oe))e.style.setProperty(t,n);return()=>{for(let[n,r]of t)r?e.style.setProperty(n,r):e.style.removeProperty(n)}},[ie,ae,f.leftPanel.open,f.rightPanel.open]),c?null:(0,d.jsx)(ci.Provider,{value:`focused`,children:(0,d.jsxs)(cc,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,"data-layout-mode":`focused`,style:oe,children:[e.hideHeader?null:(0,d.jsxs)(lc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsxs)($s,{children:[(0,d.jsx)(ec,{onClick:()=>{re&&v.leftPanel.close()},children:(0,d.jsxs)(hc,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,d.jsx)(X,{$open:f.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,d.jsx)(Z,{children:(0,d.jsx)(C.ErrorBoundary,{resetKeys:[M?.id],FallbackComponent:io,children:y?(0,d.jsx)(tc,{children:(0,d.jsx)(Ks,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):f.centerPanel.open&&M?ro(M.render(f.centerPanel.state||M.defaultState||{},{...k,current:v.centerPanel,vault:o},n)):null})})]})}),!S.length&&!x.length?null:(0,d.jsxs)(nc,{$side:`left`,"aria-label":`Main and left panels`,children:[S.length?(0,d.jsx)(ic,{"aria-label":`Main panels`,children:S.filter(e=>!e.focusedMode?.hide).map(e=>(0,d.jsxs)(l.Tooltip,{placement:`right`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(rc,{type:`button`,"aria-label":e.label,"data-selected":f.centerPanel.current===e.id,onClick:()=>{v.centerPanel.open({id:e.id}),v.leftPanel.close(),v.rightPanel.close(),I(e)},children:e.icon||e.label.slice(0,1)})}),(0,d.jsx)(l.DefaultTooltipContent,{children:e.label})]},e.id))}):null,S.length&&x.length?(0,d.jsx)(ac,{}):null,x.length?(0,d.jsx)(ic,{"aria-label":`Left panels`,children:x.map(e=>(0,d.jsxs)(l.Tooltip,{placement:`right`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(rc,{type:`button`,"aria-label":e.label,"data-selected":P===e.id,onClick:()=>{if(e.modal){L&&v.rightPanel.close(),f.modal.open&&f.modal.current===e.id?v.modal.close():(v.modal.open({id:e.id,state:e.defaultState}),I(e));return}L&&v.rightPanel.close(),f.leftPanel.current===e.id?v.leftPanel.toggle():v.leftPanel.open({id:e.id})},children:e.icon||e.label.slice(0,1)})}),(0,d.jsx)(l.DefaultTooltipContent,{children:e.label})]},e.id))}):null]}),((e,t,n)=>{if(!t.length)return null;let r=e===`left`?v.leftPanel:v.rightPanel;return(0,d.jsx)(nc,{$side:e,"aria-label":`${e} panels`,children:t.map(t=>(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(rc,{type:`button`,"aria-label":t.label,"data-selected":n===t.id,onClick:()=>{L&&(e===`left`?v.rightPanel.close():v.leftPanel.close()),n===t.id?r.toggle():r.open({id:t.id})},children:t.icon||t.label.slice(0,1)})}),(0,d.jsx)(l.DefaultTooltipContent,{children:t.label})]},t.id))})})(`right`,w,f.rightPanel.current),D.length>0?(0,d.jsx)(oc,{$side:`left`,$open:f.leftPanel.open,style:{width:ie,minWidth:A?.options?.minWidth,maxWidth:A?.options?.maxWidth},children:(0,d.jsx)(sc,{children:y?(0,d.jsx)(Z,{children:(0,d.jsx)(Js,{})}):(0,d.jsxs)(d.Fragment,{children:[e.leftPanelMenu?(0,d.jsx)(X,{$open:f.leftPanel.open,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,d.jsx)(Z,{children:A?(0,d.jsx)(mo,{isLeft:!0,panel:A,state:f.leftPanel,actions:v.leftPanel}):null})]})})}):null,w.length>0?(0,d.jsx)(oc,{$side:`right`,$open:f.rightPanel.open,style:{width:ae,minWidth:j?.options?.minWidth,maxWidth:j?.options?.maxWidth},children:(0,d.jsx)(sc,{children:y?(0,d.jsx)(Z,{children:(0,d.jsx)(Js,{})}):(0,d.jsxs)(d.Fragment,{children:[e.rightPanelMenu?(0,d.jsx)(X,{$open:f.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,d.jsxs)(Z,{children:[te?(0,d.jsx)(mo,{panel:j,state:f.rightPanel,actions:v.rightPanel,pinActions:v.pinnedRightPanel,available:w}):null,F?(0,d.jsx)(mo,{panel:F,state:f.pinnedRightPanel,actions:v.pinnedRightPanel,close:v.rightPanel.close}):null]})]})})}):null]}),(0,d.jsx)(uc,{children:e.footer||null}),(0,d.jsx)(`div`,{className:`hidden`,children:R}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:N?(0,d.jsx)(l.Modal,{title:N.label,open:f.modal.open,onClose:()=>v.modal.close(),children:N.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:N,state:f.modal,actions:v.modal})}):ro(N.render(f.modal.state||N.defaultState||{},{...k,current:v.modal,vault:o,isModal:!0},n))}):null}),(0,d.jsx)(Da,{})]})})}),bc=g.default.div`
1393
1413
  position: relative;
1394
1414
  display: flex;
1395
1415
  flex: 1;
1396
1416
  overflow: hidden;
1397
1417
  flex-direction: column;
1398
- `,rc=h.default.div`
1418
+ `,xc=g.default.div`
1399
1419
  flex: 1;
1400
1420
  position: relative;
1401
1421
  z-index: 7;
1402
- `,ic=h.default.div`
1422
+ `,Sc=g.default.div`
1403
1423
  display: flex;
1404
- justify-content: space-around;
1424
+ gap: 0.5rem;
1405
1425
  width: 100%;
1406
1426
  background: #fff;
1407
- border-top: 1px solid #cbcbcb;
1408
- padding: 0.5em;
1409
- height: 3.4rem;
1410
- `,ac=h.default.button`
1411
- //background: red;
1412
- padding: 0.5em 1em;
1413
- width: 32%;
1414
-
1427
+ border-bottom: 1px solid #cbcbcb;
1428
+ padding: 0.5rem;
1429
+ min-height: 4rem;
1430
+ z-index: 9;
1431
+ `,Cc=g.default.button`
1432
+ flex: 1;
1433
+ min-width: 0;
1434
+ padding: 0.75rem 1rem;
1415
1435
  border-radius: 5px;
1416
- border: none;
1436
+ border: 1px solid #979797;
1417
1437
  background: #ffffff;
1418
- `,oc=h.default.button`
1419
- padding: 0.5em 1em;
1420
- width: 32%;
1421
-
1422
- border-radius: 5px;
1423
-
1424
- background: #5e59c2;
1425
- border: 1px solid rgba(0, 0, 0, 0.21);
1426
- color: #ffffff;
1427
- `,sc=h.default.div`
1428
- position: relative;
1429
- width: 32%;
1430
- margin: 0 0.75em;
1431
- z-index: 9;
1432
- `,cc=h.default.button`
1433
- padding: 0.4em 1em 0.65em;
1434
- position: absolute;
1438
+ font-size: 1rem;
1439
+ overflow: hidden;
1440
+ text-overflow: ellipsis;
1441
+ white-space: nowrap;
1442
+ `,wc=g.default.div`
1443
+ display: flex;
1444
+ flex: 1;
1445
+ min-width: 0;
1446
+ `,Tc=g.default.button`
1447
+ display: flex;
1448
+ align-items: center;
1449
+ justify-content: center;
1450
+ gap: 0.5rem;
1435
1451
  width: 100%;
1436
- bottom: 1em;
1452
+ min-width: 0;
1453
+ padding: 0.75rem 1rem;
1437
1454
  background: #ffffff;
1438
- box-shadow: 0 3px 18px 0 rgba(0, 0, 0, 0.04);
1439
1455
  border-radius: 5px;
1440
1456
  border: 1px solid #979797;
1441
- letter-spacing: -0.46px;
1457
+ font-size: 1rem;
1442
1458
  white-space: nowrap;
1443
1459
  overflow: hidden;
1444
1460
  text-overflow: ellipsis;
1445
1461
 
1446
1462
  svg {
1447
- display: block;
1448
- margin: auto;
1449
- font-size: 1.8em;
1463
+ flex: 0 0 auto;
1464
+ font-size: 1.25em;
1450
1465
  }
1451
- `,lc=h.default.div`
1466
+ `,Ec=g.default.div`
1452
1467
  background: #fff;
1453
1468
  display: flex;
1454
1469
  position: absolute;
1455
- transform: translateY(100%);
1470
+ transform: translateX(100%);
1456
1471
  overflow-y: auto;
1457
- left: 0;
1472
+ left: auto;
1458
1473
  right: 0;
1459
- top: 7em;
1474
+ top: 4rem;
1475
+ width: min(100%, 480px);
1460
1476
  z-index: 10;
1461
1477
  box-shadow:
1462
- 0 -5px 15px 0 rgba(0, 0, 0, 0),
1463
- 0 -3px 5px 0 rgba(0, 0, 0, 0);
1478
+ -5px 0 15px 0 rgba(0, 0, 0, 0),
1479
+ -3px 0 5px 0 rgba(0, 0, 0, 0);
1464
1480
  bottom: 0;
1465
1481
  transition:
1466
1482
  0.3s transform ease-in-out,
1467
1483
  0.3s box-shadow;
1468
- ${e=>e.$open&&h.css`
1484
+ ${e=>e.$open&&g.css`
1469
1485
  box-shadow:
1470
- 0 -5px 15px 0 rgba(0, 0, 0, 0.1),
1471
- 0 -3px 5px 0 rgba(0, 0, 0, 0.1);
1472
- transform: translateY(0);
1486
+ -5px 0 15px 0 rgba(0, 0, 0, 0.1),
1487
+ -3px 0 5px 0 rgba(0, 0, 0, 0.1);
1488
+ transform: translateX(0);
1473
1489
  `}
1474
1490
 
1475
- ${$a} {
1491
+ ${co} {
1476
1492
  box-shadow: none;
1477
1493
  padding-left: 0.5em;
1478
1494
  padding-right: 0.5em;
1479
1495
  font-size: 1.1em;
1480
1496
  }
1481
- `,uc=h.default.div`
1497
+ `,Dc=g.default.div`
1498
+ display: flex;
1499
+ flex-direction: column;
1482
1500
  position: absolute;
1483
1501
  transform: translateX(-100%);
1484
1502
  background: #fff;
1485
1503
  left: 0;
1486
- top: 0;
1504
+ top: 4rem;
1487
1505
  bottom: 0;
1506
+ width: min(90%, 420px);
1488
1507
  z-index: 10;
1489
- overflow-y: auto;
1508
+ overflow: hidden;
1490
1509
  transition: 0.5s transform;
1491
- ${e=>e.$open&&h.css`
1510
+ ${e=>e.$open&&g.css`
1492
1511
  transform: translateX(0);
1493
1512
  `}
1494
- `,dc=h.default.div`
1513
+ `,Oc=g.default.button`
1514
+ border: 0;
1495
1515
  background: rgba(0, 0, 0, 0.4);
1496
1516
  pointer-events: none;
1497
1517
  position: absolute;
@@ -1503,10 +1523,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1503
1523
  opacity: 0;
1504
1524
  transition: opacity 0.5s;
1505
1525
 
1506
- ${e=>e.$open&&h.css`
1526
+ ${e=>e.$open&&g.css`
1507
1527
  pointer-events: visible;
1508
1528
  opacity: 1;
1509
1529
  `}
1510
- `,fc=(0,l.memo)(function(e){if(e.layoutMode===`focused`)return(0,u.jsx)(tc,{...e});let t=z(),n=Gn(),r=B(),i=fi(),{vault:a}=(0,l.useContext)(p.ReactVaultContext),o=a||void 0,s=(0,p.useVaultSelector)(e=>e.iiif),d=(0,l.useRef)(null),f=(0,l.useRef)(null),{loading:m,state:h,leftPanels:g,centerPanels:_,rightPanels:v,modals:y=[],actions:b}=i,x=(0,l.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:h,appState:n}),[r,o,t,h,n,s]),S=(0,l.useMemo)(()=>W(g,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[g,x]),C=(0,l.useMemo)(()=>W(_,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,x]),w=(0,l.useMemo)(()=>W(v,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[v,x]),T=(0,l.useMemo)(()=>W(y,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[y,x]),E=(0,l.useMemo)(()=>({...i,leftPanels:S,centerPanels:C,rightPanels:w,modals:T}),[i,S,C,w,T]),O=S.find(e=>e.id===h.leftPanel.current),k=w.find(e=>e.id===h.rightPanel.current),A=C.find(e=>e.id===h.centerPanel.current),j=T.find(e=>e.id===h.modal.current),M=h.pinnedRightPanel.pinned?w.find(e=>e.id===h.pinnedRightPanel.current):void 0,[ne]=ys([`(max-width: 1020px)`]),re=e.isLoading||!1,ie=(0,l.useMemo)(()=>(i.background||[]).map((e,t)=>(0,u.jsx)(l.Fragment,{children:e.render()},t)),[i.background]),N=Ps(`left-panel/${O?.id}`,{left:!0,marginLeft:60,minWidthPx:O?.options?.minWidth||200,maxWidthPx:O?.options?.maxWidth||720,loading:m}),P=Ps(`right-panel/${k?.id}`,{left:!1,minWidthPx:k?.options?.minWidth||320,maxWidthPx:k?.options?.maxWidth||720,loading:m}),ae=k&&(M?.id!==k.id||!(0,te.default)(h.pinnedRightPanel.state,h.rightPanel.state)),oe=N.widthB===`auto`?void 0:()=>N.setWidths({widthA:`auto`,widthB:Va({options:O?.options,fallback:320})}),F=P.widthB===`auto`?void 0:()=>P.setWidths({widthA:`auto`,widthB:Va({options:k?.options,fallback:320})});if((0,l.useLayoutEffect)(()=>{ne&&h.leftPanel.open&&h.rightPanel.open&&(b.leftPanel.close(),b.rightPanel.close())},[ne]),(0,l.useLayoutEffect)(()=>{if(A&&A.onMount)return A.onMount(h.centerPanel.state||A.defaultState||{},{...E,current:b.centerPanel,vault:o},n)},[h.centerPanel.current,A?.id]),(0,l.useLayoutEffect)(()=>{if(h.leftPanel.current&&!O){let e=G(S,h.leftPanel.current);e?b.leftPanel.change({id:e}):b.leftPanel.close()}if(h.centerPanel.current&&!A){let e=G(C,h.centerPanel.current);e?b.centerPanel.change({id:e}):b.centerPanel.close()}if(h.rightPanel.current&&!k){let e=G(w,h.rightPanel.current);e?b.rightPanel.change({id:e}):b.rightPanel.close()}if(h.modal.current&&!j){let e=G(T,h.modal.current);e?b.modal.change({id:e}):b.modal.close()}},[h.leftPanel.current,h.centerPanel.current,h.rightPanel.current,h.modal.current,O?.id,A?.id,k?.id,j?.id,K(S),K(C),K(w),K(T)]),(0,l.useLayoutEffect)(()=>{w.length&&b.rightPanel.change({id:w[0].id}),S.length&&b.leftPanel.change({id:S[0].id}),C.length&&b.centerPanel.change({id:C[0].id})},[]),m)return null;let se=t=>(0,u.jsx)(Zs,{$menu:e.leftPanelMenuPosition||`bottom`,ref:N.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:h.leftPanel.open||t!==`exited`?N.widthB:void 0,minWidth:O?.options?.minWidth},children:re?(0,u.jsx)(Z,{children:(0,u.jsx)(As,{})}):(0,u.jsxs)(u.Fragment,{children:[e.leftPanelMenu?(0,u.jsx)(X,{$open:h.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,u.jsx)(Z,{children:h.leftPanel.open||t!==`exited`?(0,u.jsx)(u.Fragment,{children:O?(0,u.jsx)(ro,{isLeft:!0,noHeader:!0,transition:t,panel:O,state:h.leftPanel,actions:b.leftPanel}):null}):null})]})}),ce=()=>!j||h.modal.open===!1?null:(0,u.jsx)(c.Modal,{title:j.label,onClose:()=>b.modal.close(),children:Ha(j.render(h.modal.state||j.defaultState||{},{...E,current:b.modal,vault:o},n))}),le=()=>(0,u.jsxs)(Zs,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,u.jsx)(X,{$open:h.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,u.jsx)(Z,{children:(0,u.jsx)(ee.ErrorBoundary,{resetKeys:[A?.id],FallbackComponent:za,children:re?(0,u.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,u.jsx)(Os,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):h.centerPanel.open&&A?Ha(A.render(h.centerPanel.state||A.defaultState||{},{...E,current:b.centerPanel,vault:o},n)):null})})]}),ue=t=>(0,u.jsx)(Zs,{$menu:e.rightPanelMenuPosition||`bottom`,ref:P.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:h.rightPanel.open||t!==`exited`?P.widthB:void 0,minWidth:k?.options?.minWidth},children:re?(0,u.jsx)(Z,{children:(0,u.jsx)(As,{})}):(0,u.jsxs)(u.Fragment,{children:[e.rightPanelMenu?(0,u.jsx)(X,{$open:h.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,u.jsx)(Z,{children:h.rightPanel.open||t!==`exited`?(0,u.jsxs)(u.Fragment,{children:[ae?(0,u.jsx)(ro,{panel:k,state:h.rightPanel,actions:b.rightPanel,pinActions:b.pinnedRightPanel,available:w}):null,M?(0,u.jsx)(ro,{panel:M,state:h.pinnedRightPanel,actions:b.pinnedRightPanel,close:b.rightPanel.close}):null]}):null})]})});return ne?(0,u.jsxs)(Ws,{children:[e.hideHeader?null:(0,u.jsxs)(Gs,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsx)(qs,{children:(0,u.jsxs)(nc,{children:[(0,u.jsx)(rc,{children:le()}),(0,u.jsxs)(ic,{children:[S.length>0?(0,u.jsx)(ac,{onClick:b.leftPanel.toggle,children:O?.label}):null,w.length>0?(0,u.jsx)(sc,{children:(0,u.jsxs)(cc,{onClick:b.rightPanel.toggle,children:[(0,u.jsx)(or,{rotate:180}),k?.label]})}):null,(0,u.jsx)(oc,{children:`Preview`})]}),w.length>0?(0,u.jsx)(lc,{$open:h.rightPanel.open,children:ue()}):null,S.length>0?(0,u.jsx)(uc,{$open:h.leftPanel.open,children:se()}):null,S.length>0||w.length>0?(0,u.jsx)(dc,{$open:h.leftPanel.open||h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.close()}}):null]})})]}):(0,u.jsxs)(Ws,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,u.jsxs)(Gs,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(qs,{ref:e=>{N.refs.container.current=e,P.refs.container.current=e},children:[S.length>0?(0,u.jsx)(c.PanelSideMenu,{current:h.leftPanel.current,items:S.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,separator:e.separator,onClick:()=>{h.leftPanel.current===e.id?b.leftPanel.toggle():b.leftPanel.change({id:e.id})}})),open:h.leftPanel.open}):null,S.length>0?(0,u.jsx)(D.Transition,{nodeRef:d,in:h.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Js,{ref:d,$width:N.widthB,$state:e,$motion:!0,children:se(e)}),(0,u.jsx)(Ds,{ref:N.refs.resizer,reset:oe,dir:`left`,transition:e,open:h.leftPanel.open||e!==`exited`,actions:b.leftPanel})]})}):null,(0,u.jsx)(Ys,{children:le()}),w.length>0?(0,u.jsx)(D.Transition,{nodeRef:f,in:h.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ds,{ref:P.refs.resizer,dir:`right`,reset:F,open:h.rightPanel.open,actions:b.rightPanel}),(0,u.jsx)(Xs,{ref:f,$width:P.widthB,$state:e,$motion:!0,children:ue(e)})]})}):null]}),(0,u.jsx)(Ks,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ie}),(0,u.jsx)(ta,{}),(0,u.jsx)(na,{}),(0,u.jsx)(u.Fragment,{children:ce()})]})});function pc(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 u(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,l.useMemo)(()=>({popStack:n,change:r,open:i,close:a,toggle:o,minimise:s,maximise:c,setCustomWidth:u,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 hc(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(Ba(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;break}}const gc=(0,_.produce)((e,t)=>{switch(t.panel){case`centerPanel`:hc(e.centerPanel,t);break;case`leftPanel`:hc(e.leftPanel,t);break;case`rightPanel`:hc(e.rightPanel,t);break;case`modal`:hc(e.modal,t);break;case`pinnedRightPanel`:hc(e.pinnedRightPanel,t);break}});function _c(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function vc(){return{leftPanel:_c(),centerPanel:_c(),rightPanel:_c(),modal:_c(),pinnedRightPanel:{..._c(),pinnable:!0,pinned:!1}}}function yc({className:e,variant:t=`light`}){let n=(0,p.useManifest)(),r=(0,p.useVault)(),{edit:i}=li(),a=Jr(),o=Yr(),s=n?.items||[],c=n?.viewingDirection===`right-to-left`||n?.viewingDirection===`bottom-to-top`,d=n?.viewingDirection===`top-to-bottom`||n?.viewingDirection===`bottom-to-top`,f=bc(a)||o.map(bc).find(Boolean)||s[0]?.id||``,m=Math.max(0,s.findIndex(e=>e.id===f)),h=s[m]?.id||``,g=m+1,_=(0,l.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,u.jsx)(`div`,{});let y=s[m-1],x=s[m+1],S=t===`dark`;return(0,u.jsxs)(`nav`,{"aria-label":`Manifest pagination`,className:wc(`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,u.jsx)(xc,{ariaLabel:`Previous canvas`,disabled:!y,onClick:()=>y&&v(y.id),dark:S,children:(0,u.jsx)(Sc,{reverse:c,vertical:d})}),(0,u.jsxs)(`label`,{htmlFor:`manifest-pagination-page-select`,"aria-label":`Page ${g} of ${s.length}`,className:wc(`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,u.jsxs)(`span`,{children:[g,` / `,s.length]}),(0,u.jsx)(Cc,{className:wc(`shrink-0 text-base`,S?`text-white/60`:`text-me-gray-500`)}),(0,u.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,u.jsxs)(`option`,{value:e.id,children:[`Page `,e.pageNumber,` - `,e.labelText]},e.id))})]}),(0,u.jsx)(xc,{ariaLabel:`Next canvas`,disabled:!x,onClick:()=>x&&v(x.id),dark:S,children:(0,u.jsx)(Sc,{reverse:!c,vertical:d})})]})}function bc(e){let t=e?.resource?.source;return t?.type===`Canvas`?t.id:null}function xc({ariaLabel:e,children:t,dark:n,disabled:r,onClick:i}){return(0,u.jsx)(`button`,{type:`button`,"aria-label":e,disabled:r,onClick:i,className:wc(`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 Sc({reverse:e,vertical:t}){return(0,u.jsx)(e?c.ArrowRightIcon:c.BackIcon,{"aria-hidden":!0,className:wc(`block`,t&&`rotate-90`)})}function Cc(e){return(0,u.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,"aria-hidden":!0,...e,children:(0,u.jsx)(`path`,{fill:`currentColor`,d:`m7 10l5 5l5-5z`})})}function wc(...e){return e.filter(Boolean).join(` `)}const Tc=new WeakMap;function Ec(e,t){let n={port:t,lastActionId:`@genesis`},r=Dc(e);function i(e){t.postMessage(typeof e==`string`?e:JSON.stringify(e))}function a(){i({_id:Bt(),_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=kc(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,Tc.delete(e)),t.close()}}function Dc(e){let t=Tc.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)Oc(t,e);return t}),a={originalDispatch:n,patchedDispatch:i,targets:r};return e.dispatch=i,Tc.set(e,a),a}function Oc(e,t){let n={_id:Bt(),_type:`vault-action`,_lastActionId:e.lastActionId,action:t};e.lastActionId=n._id,e.port.postMessage(JSON.stringify(n))}function kc(e){try{if(typeof e==`string`)return JSON.parse(e);if(typeof e==`object`&&e)return e}catch{return null}return null}const Ac=(0,l.createContext)({resource:null});function jc(){return(0,l.useContext)(Ac)}function Mc(){let e=(0,p.useVault)(),{resource:t}=jc();M(t,`Nothing selected`);let{id:n,type:r}=t;return(0,p.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function Nc(){let{resource:e}=jc();return e}function Pc({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,u.jsx)(Ac.Provider,{value:(0,l.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}var Fc=class extends l.Component{constructor(...e){super(...e),V(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,u.jsx)(`h1`,{children:`Sorry.. there was an error`}):this.props.children}};function Ic(e,t){return typeof e==`string`?{id:e,state:t}:e}const Lc=(0,l.memo)(function(e){let t=z(),n=_s(),r=t.layout,[i,a]=(0,l.useReducer)(gc,void 0,vc),o={centerPanel:pc(`centerPanel`,a),leftPanel:pc(`leftPanel`,a),rightPanel:pc(`rightPanel`,a),pinnedRightPanel:pc(`pinnedRightPanel`,a),modal:pc(`modal`,a),editingStack:qr()};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,o.leftPanel];M(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Ic(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 d(e,t){let{id:r,state:i}=Ic(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}=Ic(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}=Ic(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function h(e,t){let{id:r}=Ic(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,m.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:h,stack:d,edit:g,create:_};return(0,u.jsx)(ai.Provider,{value:(0,l.useMemo)(()=>({...o,...v}),[r]),children:(0,u.jsx)(oi.Provider,{value:i,children:e.children})})}),Rc=[{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`}],zc=new O.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function Bc({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o,backgroundActionPersistence:s}){let c=Wn(),d=F(),f=(0,l.useMemo)(()=>P(d,{previews:e?.previews||(d.previews?.length?d.previews:Rc)},e),[d,e]),m=(0,l.useMemo)(()=>({appId:c.appId,instanceId:c.instanceId,rootResource:{id:a.id,type:a.type}}),[c.appId,c.instanceId,a.id,a.type]);return(0,u.jsx)(Fc,{children:(0,u.jsx)(p.ImageServiceLoaderContext.Provider,{value:zc,children:(0,u.jsx)(dr,{resource:a,children:(0,u.jsx)(uo,{children:(0,u.jsx)(h.ThemeProvider,{theme:r||xo,children:(0,u.jsxs)(ce,{config:f,saveConfig:t,children:[(0,u.jsx)(Bn,{config:f}),(0,u.jsx)(ri,{children:(0,u.jsx)(Lc,{children:(0,u.jsx)(Mt,{persistence:s,persistenceKey:m,children:(0,u.jsx)(Vo,{children:(0,u.jsx)(Ki,{children:(0,u.jsx)(Cr,{previews:i||[],configs:f.previews,children:(0,u.jsx)(p.AtlasStoreProvider,{children:n})})})})})})})]})})})})})})}const Vc=new Set([`Collection`,`Manifest`,`Canvas`,`Range`,`AnnotationPage`,`Annotation`,`ContentResource`,`Agent`]),Hc={satisfied:0,missing:0,invalid:0,disallowed:0,"not-applicable":0},Uc=new Set([`label`,`summary`,`language`,`navDate`,`provider`,`requiredStatement`,`rights`,`thumbnail`]);function Wc(e){return e?Array.isArray(e)?e.filter(Boolean):e.split(`.`).filter(Boolean):[]}function Gc(e,t){let n=Wc(e),r=Wc(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function Kc(e,t){let n=e;for(let e of Wc(t)){if(n==null)return;n=n[e]}return n}function qc(e,t,n){let r=Wc(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 Q(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=>Q(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])=>Q(e)):!0:!1}function Jc(e){return Array.isArray(e)?e.map(Jc):e&&typeof e==`object`?Object.keys(e).sort().reduce((t,n)=>(t[n]=Jc(e[n]),t),{}):e}function Yc(e,t){return JSON.stringify(Jc(e))===JSON.stringify(Jc(t))}function Xc(e,t,n,r){let i=Wc(n);for(let n of e||[])for(let e of n.terminology?.properties||[])if(!(e.entityType&&e.entityType!==t)&&Gc(e.path,i))return e.label;return r||Cl(i)}function Zc(e,t,n){let r=Wc(n),i=[],a,o,s=!1,c=!1;if(!t||!Vc.has(t.type))return{entityType:t?.type,path:r,label:Xc(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&&Gc(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:Xc(e,t.type,r),disallowed:s,required:c,fixedValue:a,fixedValueRule:o,rules:i}}function Qc(e,t,n){let r=e||[],i=$c(t,n),a=[];for(let e of r)for(let[n,r]of(e.rules||[]).entries())a.push(...el(e,r,n,i,t));return{specifications:r,results:a,counts:cl(a)}}function $c(e,t){let n=[],r=new Set;function i(t){let a=ul(t);if(!a)return;if(a.type===`SpecificResource`){i(t?.source);return}let o=ll(e,t)||ll(e,a);if(!o||!o.type)return;let s=`${o.type}:${o.id||JSON.stringify(a)}`;if(!r.has(s)){r.add(s),Vc.has(o.type)&&n.push({ref:{id:o.id,type:o.type},resource:o});for(let e of dl(o))i(e)}}return i(t),n}function el(e,t,n,r,i){switch(t.type){case`disallow-property`:case`require-non-empty`:case`fixed-value`:return tl(e,t,n,r);case`iiif:canvas-with-image-service`:return[nl(e,t,n,r,i)];case`iiif:thumbnail-from-body-service`:return rl(e,t,n,r,i);case`iiif:valid-rights`:return il(e,t,n,r);case`iiif:required-statement`:return al(e,t,n,r);case`iiif:metadata-template`:return ol(e,t,n,r);default:return[]}}function tl(e,t,n,r){let i=r.filter(e=>e.ref.type===t.entityType),a=Xc(e?[e]:[],t.entityType,t.path);return i.length?i.map(({ref:r,resource:i})=>{let o=Kc(i,t.path),s=Q(o);if(t.type===`disallow-property`)return $(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:sl(r,t.path)});if(t.type===`require-non-empty`)return $(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:sl(r,t.path)});let c=Yc(o,t.value);return $(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:sl(r,t.path)})}):[$(e,t,n,{status:`not-applicable`,displayLabel:a,message:`No ${t.entityType} resources were found for ${a}.`,path:t.path})]}function nl(e,t,n,r,i){let a=r.filter(e=>e.ref.type===`Canvas`),o=fl(t),s=a.find(({resource:e})=>pl(ml(e,i),o));return $(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?sl(s.ref,[`items`]):void 0})}function rl(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=>ml(e.resource,i)):ml(s,i),l=hl(s,c,i),u=Q(s.thumbnail);return $(e,t,n,{target:o,path:[`thumbnail`],status:l?`satisfied`:c.length?u?`invalid`:t.requireThumbnail===!1?`not-applicable`:`missing`:`not-applicable`,displayLabel:Xc([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:sl(o,[`thumbnail`])})}):[$(e,t,n,{status:`not-applicable`,displayLabel:`Thumbnail`,message:`No ${a} resources were found for thumbnail checks.`})]}function il(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=Q(a),c=typeof a==`string`&&o.map(yl).includes(yl(a));return $(e,t,n,{target:r,path:[`rights`],status:c?`satisfied`:!s&&t.required!==!1?`missing`:`invalid`,displayLabel:Xc([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:sl(r,[`rights`])})})}function al(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?bl(a?.label,t.label):Q(a?.label),s=t.value||t.valueRequired!==!1,c=t.value?bl(a?.value,t.value):!s||Q(a?.value),l=Q(a);return $(e,t,n,{target:r,path:[`requiredStatement`],status:o&&c?`satisfied`:l?`invalid`:`missing`,displayLabel:Xc([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:sl(r,[`requiredStatement`])})})}function ol(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=>bl(e?.label,i.label)),l=i.value?bl(c?.value,i.value):i.valueRequired?Q(c?.value):!0,u=c&&l?`satisfied`:c&&i.value?`invalid`:`missing`,d=Sl(i.label);o.push($(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:sl(r,[`metadata`])}))})}return o}function $(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 sl(e,t){let n=t[0];return{resource:e,propertyPath:t,selectedTab:n===`metadata`?`@manifest-editor/metadata`:n&&Uc.has(n)?`@manifest-editor/descriptive-properties`:void 0}}function cl(e){let t={...Hc};for(let n of e)t[n.status]+=1;return t}function ll(e,t){let n=ul(t);if(!n)return t;try{return e.get(n,{skipSelfReturn:!1})||t}catch{try{return e.get(n)||t}catch{return t}}}function ul(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 dl(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 fl(e){return[...e.serviceIds||[],...e.serviceId?[e.serviceId]:[]].filter(Boolean)}function pl(e,t){let n=new Set(e.filter(Boolean));return t.length?t.some(e=>n.has(e)):n.size>0}function ml(e,t){let n=vl(t,e?.items),r=[];for(let e of n){let n=vl(t,e?.items);for(let e of n)if((Array.isArray(e?.motivation)?e.motivation:[e?.motivation]).includes(`painting`))for(let n of gl(e?.body,t))r.push(..._l(n))}return Array.from(new Set(r))}function hl(e,t,n){let r=vl(n,e?.thumbnail);if(!r.length||!t.length)return!1;for(let e of r){let n=_l(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 gl(e,t){let n=ll(t,e);return n?Array.isArray(n)?n.flatMap(e=>gl(e,t)):n.type===`SpecificResource`?gl(n.source,t):n.type===`Choice`?n.items?.flatMap(e=>gl(e,t))||[]:[n]:[]}function _l(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 vl(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=>ll(e,t)).filter(Boolean)}function yl(e){return e.replace(/^https:/,`http:`).replace(/\/?$/,`/`)}function bl(e,t){return typeof t==`string`?xl(e).some(e=>e===t):Yc(e,t)}function xl(e){return e?typeof e==`string`?[e.trim()].filter(Boolean):Array.isArray(e)?e.flatMap(xl):typeof e==`object`?Object.values(e).flatMap(xl):[]:[]}function Sl(e){return typeof e==`string`?e:xl(e)[0]||``}function Cl(e){return(e[e.length-1]||`Property`).replace(/([A-Z])/g,` $1`).replace(/[-_]/g,` `).replace(/^./,e=>e.toUpperCase())}const wl=(0,l.createContext)([]);function Tl({children:e,specifications:t}){let n=(0,l.useMemo)(()=>t||[],[t]);return(0,u.jsx)(wl.Provider,{value:n,children:e})}function El(){return(0,l.useContext)(wl)}function Dl(e){let t=B(),n=El(),r=e||t;return(0,p.useVaultSelector)((e,t)=>Qc(n,t,r),[n,r.id,r.type])}function Ol(){let e=El();return(0,l.useMemo)(()=>({getLabel(t,n,r){return Xc(e,t,n,r)}}),[e])}function kl(e,t){let n=El();return(0,l.useMemo)(()=>Zc(n,e,t),[n,e?.id,e?.type,JSON.stringify(t)])}const Al={},jl=(0,l.createContext)(`global`);function Ml(){return(0,l.useContext)(jl)}function Nl(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Pl(e){let t=Ml(),[,n]=(0,l.useReducer)(e=>e+1,0),r=(0,l.useMemo)(()=>(Al[t]||(Al[t]={}),Al[t][e]||(Al[t][e]={name:e,emitter:(0,T.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),Al[t][e]),[t,e]);return Fl(r,`abort`,n),Fl(r,`error`,n),Fl(r,`complete`,n),Fl(r,`running`,n),r}function Fl(e,t,n){let r=(0,l.useCallback)(()=>n(e),[n]);(0,l.useEffect)(()=>{let n=e.emitter;return n.on(t,r),()=>n.off(t,r)},[t,r,e.emitter])}const Il=()=>void 0;function Ll(e,t){let n=Pl(e);return Fl(n,`complete`,t||Il),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=Nl();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 Rl(e,t){let n=Pl(e);return Fl(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 zl({children:e}){return(0,u.jsx)(jl.Provider,{value:(0,l.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function Bl(e){return!1}function Vl({as:e,reference:t,onReference:n,onLink:r,onAnalysis:i,onDropReference:a,onDropLink:o,onDropAnalysis:s,onPasteReference:c,onPasteLink:d,onPasteAnalysis:f,...p}){let m=e||`div`,h=a||n,g=c||n,_=d||r,v=f||i,y=(0,l.useMemo)(()=>t,[t?.id,t?.type]),b=(0,l.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,l.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(`
1511
- `);for(let t of e){if(v)try{let e=await Bl(t);if(e){v(e);continue}}catch{}_&&_(t)}}}p.onComplete&&p.onComplete()}},[]),S=(0,l.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}))))},[]);return(0,u.jsx)(m,{onCopy:b,onPaste:x,onDrop:(0,l.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}},[]),onDragOver:(0,l.useCallback)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`)},[]),onDragStart:S,tabIndex:-1,...p})}exports.AppHeader=_a,exports.AppMenuProvider=xa,exports.AppProvider=qn,exports.AppReactContext=Hn,exports.AppResourceInstanceProvider=ur,exports.AppResourceProvider=dr,exports.AppStateReactContext=Un,exports.AtlasStoreProvider=p.AtlasStoreProvider,exports.AtlasStoreReactContext=p.AtlasStoreReactContext,exports.BackgroundActionToasts=na,exports.BackgroundActionsMenu=ga,exports.BackgroundActionsMount=ta,exports.BackgroundActionsProvider=Mt,exports.BackgroundActionsReactContext=jt,exports.BaseAnnotationCreator=So,exports.BaseEditor=Eo,exports.BaseEditorBackButton=Co,exports.BaseEditorCloseButton=wo,exports.CANVAS_PROGRESS_META_NAMESPACE=le,exports.CANVAS_PROGRESS_STATUS_META_KEY=ue,exports.ConfigEditor=Ro,exports.ConfigProvider=ce,exports.ConfigReactContext=ae,exports.ContextMenuProvider=Vo,exports.ContextMenuReactContext=Bo,exports.CreatorInitialData=_o,exports.EditingStack=ri,exports.EditingStackContext=Gr,exports.EventEmitterProvider=gs,exports.ExportPanel=fs,exports.FLAG_TAG=hi,exports.HOMEPAGE_COLLECTION=co,exports.HandleContainer=Ss,exports.HandleControls=Ds,exports.InlineEditingStack=ii,exports.Layout=fc,exports.LayoutActionsReactContext=ai,exports.LayoutModeReactContext=si,exports.LayoutStateReactContext=oi,exports.ManifestEditorCanvasProgressOverlay=ke,exports.ManifestEditorTagBadge=Ri,exports.ManifestEditorTagIcon=Li,exports.ManifestEditorTagOverlay=zi,exports.ManifestPaginationNavigation=yc,Object.defineProperty(exports,`MessagePortClientVault`,{enumerable:!0,get:function(){return k.MessagePortClientVault}}),exports.ModularPanel=ro,exports.ModularPanelHeader=$a,exports.ModulePanelButton=U,exports.MultiAppProvider=Zn,exports.PanelError=za,exports.PluginConfigBridge=Bn,exports.PluginGlobalConfigReactContext=Dn,exports.PluginManager=Fo,exports.PluginProvider=On,exports.PluginReactContext=En,exports.PreviewButton=Vr,exports.PreviewProvider=Cr,exports.PreviewVaultBoundary=fo,exports.PreviewVaultContext=uo,exports.PrimeAppReactContext=Vn,exports.ReactEmitterContext=hs,exports.ResourceEditingProvider=Pc,exports.ResourceEditingReactContext=Ac,exports.SaveConfigReactContext=oe,exports.ShellProvider=Bc,exports.SpecificationProvider=Tl,exports.TAGS_META_KEY=mi,exports.TAGS_META_NAMESPACE=pi,exports.TaskBridge=zl,exports.ToastProvider=Ki,exports.UniversalCopyTarget=Vl,exports.addResourceTag=Oi,exports.analyse=Da,exports.analyseJson=ka,exports.applyPlugins=wn,exports.baseCreator=bo,exports.baseEditor=Do,exports.clearCanvasProgressStatus=ve,exports.clearCanvasProgressStatuses=be,exports.collectSpecificationResources=$c,exports.copyToClipboard=zt,exports.createActionIdentity=Lt,exports.createBackgroundActionsStore=St,exports.createDownload=Rt,exports.createIframeVaultBridge=Ec,exports.createLocalForageBackgroundActionPersistence=kt,exports.createManifestEditorCanvasProgressApi=xe,exports.createManifestEditorTagsApi=Pi,exports.createPluginRuntimeApi=vn,exports.createPluginStore=Tn,exports.createPreviewVault=io,exports.createTrackingCanvasProgressApi=Se,exports.detectMedia=Ea,exports.disablePluginInConfig=Zt,exports.editBasedOnResource=To,exports.enablePluginAndDependenciesInConfig=yn,exports.enablePluginInConfig=Xt,exports.evaluateSpecifications=Qc,exports.extendApp=Ht,exports.filterSupportedPanels=W,exports.getAvailableBackgroundActionGroups=Re,exports.getBackgroundActionInstanceKey=Me,exports.getCanvasProgressStatus=he,exports.getCanvasProgressStatusFromState=ge,exports.getDefaultLayoutState=vc,exports.getDefaultPanelState=_c,exports.getEffectivePluginSettings=_n,exports.getEmptyPluginState=Gt,exports.getEnabledPluginsForApp=fn,exports.getFormat=Ma,exports.getImageDimensions=Na,exports.getManifestNomalized=It,exports.getPluginCompatibilityReason=ln,exports.getPluginDefaultSettings=gn,exports.getPluginSelectionSource=dn,exports.getPluginSettingsFromConfig=pn,exports.getPropertyPolicy=Zc,exports.getResourceTag=ki,exports.getResourceTagGroups=ji,exports.getResourceTags=Ti,exports.getResourceTagsFromState=Ei,exports.getSupportedPanelFallback=G,exports.getTerminologyLabel=Xc,exports.getValueAtPath=Kc,exports.hasMeaningfulValue=Q,exports.hasResourceTag=Mi,exports.isLazyPlugin=rn,exports.isMappedPlugin=nn,exports.isPinnableState=Ba,exports.isPluginCompatible=cn,exports.isPluginSelected=un,exports.layoutReducer=gc,exports.mapApp=Vt,exports.mapLazyPlugin=tn,exports.mapPlugin=en,exports.mergeBackgroundActionDefinitions=Ne,exports.mergeConfig=P,exports.mergePartialConfig=N,exports.mergeProviderPlugins=sn,exports.normaliseBackgroundActionError=Fe,exports.normaliseJsonValue=Jc,exports.normalisePlugin=an,exports.normalisePluginAppConfig=Jt,exports.normalisePluginAppsConfig=Yt,exports.normalisePlugins=on,exports.normaliseSpecificationPath=Wc,exports.panelIds=K,exports.panelSizing=Va,exports.pluginAppConfigEquals=$t,exports.polygonToBoundingBox=Ca,exports.randomId=Bt,exports.removeResourceTag=Ai,exports.renderHelper=Ha,exports.resetPluginInConfig=Qt,exports.resetPluginSettingsInConfig=hn,exports.runBackgroundAction=Tt,exports.setCanvasProgressStatus=_e,exports.setCanvasProgressStatuses=ye,exports.setPluginSettingsInConfig=mn,exports.setResourceTags=Di,exports.setValueAtPath=qc,exports.sortBackgroundActionDefinitions=Pe,exports.specificationJsonEquals=Yc,exports.specificationPathEquals=Gc,exports.toggleResourceTag=Ni,exports.useAnnotationCreatorState=ps,exports.useAnnotationPageEditor=ei,exports.useApp=z,exports.useAppInstance=Wn,exports.useAppMenu=ya,exports.useAppMenuItem=ba,exports.useAppResource=B,exports.useAppResourceInstance=lr,exports.useAppState=Gn,exports.useApps=Yn,exports.useAtlasStore=Sa,exports.useAvailableBackgroundActions=ea,exports.useAvailableLayouts=di,exports.useBackgroundActionHistory=Ft,exports.useBackgroundActionInstance=Pt,exports.useBackgroundActionsStore=R,exports.useBackgroundActionsStoreApi=Nt,exports.useCanvasProgressActions=we,exports.useCanvasProgressStatus=Ce,exports.useCollectionEditor=Qr,exports.useConfig=F,exports.useCreatingResource=Xr,exports.useCreator=po,exports.useCustomContextMenu=Go,exports.useDecayState=Oo,exports.useEditingContext=jc,exports.useEditingResource=Jr,exports.useEditingResourceStack=Yr,exports.useEditingStack=qr,exports.useEditor=ti,exports.useEmitter=_s,exports.useEnabledPlugins=Nn,exports.useEvent=vs,exports.useGenericEditor=$r,exports.useHighlightedImageResource=Pa,exports.useHoverHighlightImageResource=Ia,exports.useInitialData=go,exports.useInlineCreator=mo,exports.useLayoutActions=li,exports.useLayoutMode=ui,exports.useLayoutProvider=fi,exports.useLayoutState=ci,exports.useLocalStorage=c.useLocalStorage,exports.useManifestEditor=Zr,exports.useMatchMedia=ys,exports.useOptionalLocalStorage=c.useOptionalLocalStorage,exports.useOptionalPluginStoreApi=kn,exports.useOptionalResource=Nc,exports.usePanelActions=pc,exports.usePluginActions=Pn,exports.usePluginConfigApi=Ln,exports.usePluginRuntimeApi=Fn,exports.usePluginSettings=In,exports.usePluginStoreApi=An,exports.usePlugins=Mn,exports.usePreviewContext=Tr,exports.usePreviewHistory=lo,exports.usePreviewVault=ao,exports.usePreviews=wr,exports.useResolvedPluginApp=Rn,exports.useResource=Mc,exports.useResourceContextMenuItems=Uo,exports.useResourceTagActions=Ii,exports.useResourceTags=Fi,exports.useSaveConfig=se,exports.useSaveVault=bs,exports.useSetCustomTitle=Za,exports.useSpecificationPropertyPolicy=kl,exports.useSpecificationReport=Dl,exports.useSpecificationTerminology=Ol,exports.useSpecifications=El,exports.useSvgTools=xs,exports.useTask=Pl,exports.useTaskDispatch=Ll,exports.useTaskEvent=Fl,exports.useTaskRunner=Rl,exports.useTemporaryHighlight=Fa,exports.useToasts=qi;
1530
+ `,kc=(0,u.memo)(function(e){if(e.layoutMode===`focused`)return(0,d.jsx)(yc,{...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)(()=>gc(g,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[g,x]),w=(0,u.useMemo)(()=>gc(_,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,x]),T=(0,u.useMemo)(()=>gc(v,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[v,x]),E=(0,u.useMemo)(()=>gc(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]=Ls([`(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=Qs(`left-panel/${M?.id}`,{left:!0,marginLeft:60,minWidthPx:M?.options?.minWidth||200,maxWidthPx:M?.options?.maxWidth||720,loading:p}),z=Qs(`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=_c(k,h.leftPanel.current);e?b.leftPanel.change({id:e}):b.leftPanel.close()}if(h.centerPanel.current&&!P){let e=_c(w,h.centerPanel.current);e?b.centerPanel.change({id:e}):b.centerPanel.close()}if(h.rightPanel.current&&!N){let e=_c(T,h.rightPanel.current);e?b.rightPanel.change({id:e}):b.rightPanel.close()}if(h.modal.current&&!F){let e=_c(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)(hc,{$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)(Js,{})}):(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)(hc,{$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)(Ks,{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)(hc,{$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)(Js,{})}):(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)(cc,{children:[e.hideHeader?null:(0,d.jsxs)(lc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsx)(dc,{children:(0,d.jsxs)(bc,{children:[(0,d.jsxs)(Sc,{children:[k.length>0?(0,d.jsx)(Cc,{type:`button`,"aria-expanded":h.leftPanel.open,onClick:()=>{b.rightPanel.close(),b.leftPanel.toggle()},children:M?.label}):null,T.length>0?(0,d.jsx)(wc,{children:(0,d.jsxs)(Tc,{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)(xc,{children:le()}),T.length>0?(0,d.jsx)(Ec,{$open:h.rightPanel.open,children:ue()}):null,k.length>0?(0,d.jsxs)(Dc,{$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)(Oc,{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)(cc,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,d.jsxs)(lc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsxs)(dc,{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)(fc,{ref:c,$width:R.widthB,$state:e,$motion:!0,children:se(e)}),(0,d.jsx)(Gs,{ref:R.refs.resizer,reset:ae,dir:`left`,transition:e,open:h.leftPanel.open||e!==`exited`,actions:b.leftPanel})]})}):null,(0,d.jsx)(pc,{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)(Gs,{ref:z.refs.resizer,dir:`right`,reset:oe,open:h.rightPanel.open,actions:b.rightPanel}),(0,d.jsx)(mc,{ref:f,$width:z.widthB,$state:e,$motion:!0,children:ue(e)})]})}):null]}),(0,d.jsx)(uc,{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 Ac(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 jc(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 Mc(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&&jc(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&&jc(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 Nc=(0,_.produce)((e,t)=>{switch(t.panel){case`centerPanel`:Mc(e.centerPanel,t);break;case`leftPanel`:Mc(e.leftPanel,t);break;case`rightPanel`:Mc(e.rightPanel,t);break;case`modal`:Mc(e.modal,t);break;case`pinnedRightPanel`:Mc(e.pinnedRightPanel,t)}});function Pc(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function Fc(){return{leftPanel:Pc(),centerPanel:Pc(),rightPanel:Pc(),modal:Pc(),pinnedRightPanel:{...Pc(),pinnable:!0,pinned:!1}}}function Ic({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=Lc(a)||o.map(Lc).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:Vc(`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)(Rc,{ariaLabel:`Previous canvas`,disabled:!y,onClick:()=>y&&v(y.id),dark:S,children:(0,d.jsx)(zc,{reverse:c,vertical:l})}),(0,d.jsxs)(`label`,{htmlFor:`manifest-pagination-page-select`,"aria-label":`Page ${g} of ${s.length}`,className:Vc(`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)(Bc,{className:Vc(`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)(Rc,{ariaLabel:`Next canvas`,disabled:!x,onClick:()=>x&&v(x.id),dark:S,children:(0,d.jsx)(zc,{reverse:!c,vertical:l})})]})}function Lc(e){let t=e?.resource?.source;return t?.type===`Canvas`?t.id:null}function Rc({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:Vc(`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 zc({reverse:e,vertical:t}){return(0,d.jsx)(e?l.ArrowRightIcon:l.BackIcon,{"aria-hidden":!0,className:Vc(`block`,t&&`rotate-90`)})}function Bc(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 Vc(...e){return e.filter(Boolean).join(` `)}const Hc=new WeakMap;function Uc(e,t){let n={port:t,lastActionId:`@genesis`},r=Wc(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=Kc(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,Hc.delete(e)),t.close()}}function Wc(e){let t=Hc.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)Gc(t,e);return t}),a={originalDispatch:n,patchedDispatch:i,targets:r};return e.dispatch=i,Hc.set(e,a),a}function Gc(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 Kc(e){try{if(typeof e==`string`)return JSON.parse(e);if(typeof e==`object`&&e)return e}catch{return null}return null}const qc=(0,u.createContext)(null);function Jc({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=Uc(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)(qc.Provider,{value:{open:l,update:f,focus:p,isClosed:o},children:e})}function Yc(){let e=(0,u.useContext)(qc);return N(e,`usePreviewWindow() can only be called from inside <PreviewWindowProvider />`),e}var Xc=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 Zc(e,t){return typeof e==`string`?{id:e,state:t}:e}const Qc=(0,u.memo)(function(e){let t=U(),n=Fs(),r=t.layout,[i,a]=(0,u.useReducer)(Nc,void 0,Fc),o={centerPanel:Ac(`centerPanel`,a),leftPanel:Ac(`leftPanel`,a),rightPanel:Ac(`rightPanel`,a),pinnedRightPanel:Ac(`pinnedRightPanel`,a),modal:Ac(`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}=Zc(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}=Zc(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}=Zc(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}=Zc(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function m(e,t){let{id:r}=Zc(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})})}),$c=[{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`}],el=new k.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function tl({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:$c);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)(Xc,{children:(0,d.jsx)(m.ImageServiceLoaderContext.Provider,{value:el,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)(Qc,{children:(0,d.jsx)(kt,{persistence:s,persistenceKey:p,children:(0,d.jsx)(as,{children:(0,d.jsx)(Gi,{children:(0,d.jsx)(xr,{previews:i||[],configs:f.previews,children:(0,d.jsx)(Jc,{children:(0,d.jsx)(m.AtlasStoreProvider,{children:n})})})})})})})})]})})})})})})}const nl=new Set([`Collection`,`Manifest`,`Canvas`,`Range`,`AnnotationPage`,`Annotation`,`ContentResource`,`Agent`]),rl={satisfied:0,missing:0,invalid:0,disallowed:0,"not-applicable":0},il=new Set([`label`,`summary`,`language`,`navDate`,`provider`,`requiredStatement`,`rights`,`thumbnail`]);function al(e){return e?Array.isArray(e)?e.filter(Boolean):e.split(`.`).filter(Boolean):[]}function ol(e,t){let n=al(e),r=al(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function sl(e,t){let n=e;for(let e of al(t)){if(n==null)return;n=n[e]}return n}function cl(e,t,n){let r=al(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 ll(e){return Array.isArray(e)?e.map(ll):e&&typeof e==`object`?Object.keys(e).sort().reduce((t,n)=>(t[n]=ll(e[n]),t),{}):e}function ul(e,t){return JSON.stringify(ll(e))===JSON.stringify(ll(t))}function dl(e,t,n,r){let i=al(n);for(let n of e||[])for(let e of n.terminology?.properties||[])if(!(e.entityType&&e.entityType!==t)&&ol(e.path,i))return e.label;return r||zl(i)}function fl(e,t,n){let r=al(n),i=[],a,o,s=!1,c=!1;if(!t||!nl.has(t.type))return{entityType:t?.type,path:r,label:dl(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&&ol(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:dl(e,t.type,r),disallowed:s,required:c,fixedValue:a,fixedValueRule:o,rules:i}}function pl(e,t,n){let r=e||[],i=ml(t,n),a=[];for(let e of r)for(let[n,r]of(e.rules||[]).entries())a.push(...hl(e,r,n,i,t));return{specifications:r,results:a,counts:wl(a)}}function ml(e,t){let n=[],r=new Set;function i(t){let a=El(t);if(!a)return;if(a.type===`SpecificResource`){i(t?.source);return}let o=Tl(e,t)||Tl(e,a);if(!o||!o.type)return;let s=`${o.type}:${o.id||JSON.stringify(a)}`;if(!r.has(s)){r.add(s),nl.has(o.type)&&n.push({ref:{id:o.id,type:o.type},resource:o});for(let e of Dl(o))i(e)}}return i(t),n}function hl(e,t,n,r,i){switch(t.type){case`disallow-property`:case`require-non-empty`:case`fixed-value`:return gl(e,t,n,r);case`iiif:canvas-with-image-service`:return[_l(e,t,n,r,i)];case`iiif:thumbnail-from-body-service`:return vl(e,t,n,r,i);case`iiif:valid-rights`:return yl(e,t,n,r);case`iiif:required-statement`:return bl(e,t,n,r);case`iiif:metadata-template`:return xl(e,t,n,r);default:return[]}}function gl(e,t,n,r){let i=r.filter(e=>e.ref.type===t.entityType),a=dl(e?[e]:[],t.entityType,t.path);return i.length?i.map(({ref:r,resource:i})=>{let o=sl(i,t.path),s=$(o);if(t.type===`disallow-property`)return Sl(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:Cl(r,t.path)});if(t.type===`require-non-empty`)return Sl(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:Cl(r,t.path)});let c=ul(o,t.value);return Sl(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:Cl(r,t.path)})}):[Sl(e,t,n,{status:`not-applicable`,displayLabel:a,message:`No ${t.entityType} resources were found for ${a}.`,path:t.path})]}function _l(e,t,n,r,i){let a=r.filter(e=>e.ref.type===`Canvas`),o=Ol(t),s=a.find(({resource:e})=>kl(Al(e,i),o));return Sl(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?Cl(s.ref,[`items`]):void 0})}function vl(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=>Al(e.resource,i)):Al(s,i),l=jl(s,c,i),u=$(s.thumbnail);return Sl(e,t,n,{target:o,path:[`thumbnail`],status:l?`satisfied`:c.length?u?`invalid`:t.requireThumbnail===!1?`not-applicable`:`missing`:`not-applicable`,displayLabel:dl([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:Cl(o,[`thumbnail`])})}):[Sl(e,t,n,{status:`not-applicable`,displayLabel:`Thumbnail`,message:`No ${a} resources were found for thumbnail checks.`})]}function yl(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(Fl).includes(Fl(a));return Sl(e,t,n,{target:r,path:[`rights`],status:c?`satisfied`:!s&&t.required!==!1?`missing`:`invalid`,displayLabel:dl([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:Cl(r,[`rights`])})})}function bl(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?Il(a?.label,t.label):$(a?.label),s=t.value||t.valueRequired!==!1,c=t.value?Il(a?.value,t.value):!s||$(a?.value),l=$(a);return Sl(e,t,n,{target:r,path:[`requiredStatement`],status:o&&c?`satisfied`:l?`invalid`:`missing`,displayLabel:dl([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:Cl(r,[`requiredStatement`])})})}function xl(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=>Il(e?.label,i.label)),l=i.value?Il(c?.value,i.value):!i.valueRequired||$(c?.value),u=c&&l?`satisfied`:c&&i.value?`invalid`:`missing`,d=Rl(i.label);o.push(Sl(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:Cl(r,[`metadata`])}))})}return o}function Sl(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 Cl(e,t){let n=t[0];return{resource:e,propertyPath:t,selectedTab:n===`metadata`?`@manifest-editor/metadata`:n&&il.has(n)?`@manifest-editor/descriptive-properties`:void 0}}function wl(e){let t={...rl};for(let n of e)t[n.status]+=1;return t}function Tl(e,t){let n=El(t);if(!n)return t;try{return e.get(n,{skipSelfReturn:!1})||t}catch{try{return e.get(n)||t}catch{return t}}}function El(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 Dl(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 Ol(e){return[...e.serviceIds||[],...e.serviceId?[e.serviceId]:[]].filter(Boolean)}function kl(e,t){let n=new Set(e.filter(Boolean));return t.length?t.some(e=>n.has(e)):n.size>0}function Al(e,t){let n=Pl(t,e?.items),r=[];for(let e of n){let n=Pl(t,e?.items);for(let e of n)if((Array.isArray(e?.motivation)?e.motivation:[e?.motivation]).includes(`painting`))for(let n of Ml(e?.body,t))r.push(...Nl(n))}return Array.from(new Set(r))}function jl(e,t,n){let r=Pl(n,e?.thumbnail);if(!r.length||!t.length)return!1;for(let e of r){let n=Nl(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 Ml(e,t){let n=Tl(t,e);return n?Array.isArray(n)?n.flatMap(e=>Ml(e,t)):n.type===`SpecificResource`?Ml(n.source,t):n.type===`Choice`?n.items?.flatMap(e=>Ml(e,t))||[]:[n]:[]}function Nl(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 Pl(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=>Tl(e,t)).filter(Boolean)}function Fl(e){return e.replace(/^https:/,`http:`).replace(/\/?$/,`/`)}function Il(e,t){return typeof t==`string`?Ll(e).some(e=>e===t):ul(e,t)}function Ll(e){return e?typeof e==`string`?[e.trim()].filter(Boolean):Array.isArray(e)?e.flatMap(Ll):typeof e==`object`?Object.values(e).flatMap(Ll):[]:[]}function Rl(e){return typeof e==`string`?e:Ll(e)[0]||``}function zl(e){return(e[e.length-1]||`Property`).replace(/([A-Z])/g,` $1`).replace(/[-_]/g,` `).replace(/^./,e=>e.toUpperCase())}const Bl=(0,u.createContext)([]);function Vl({children:e,specifications:t}){let n=(0,u.useMemo)(()=>t||[],[t]);return(0,d.jsx)(Bl.Provider,{value:n,children:e})}function Hl(){return(0,u.useContext)(Bl)}function Ul(e){let t=W(),n=Hl(),r=e||t;return(0,m.useVaultSelector)((e,t)=>pl(n,t,r),[n,r.id,r.type])}function Wl(){let e=Hl();return(0,u.useMemo)(()=>({getLabel(t,n,r){return dl(e,t,n,r)}}),[e])}function Gl(e,t){let n=Hl();return(0,u.useMemo)(()=>fl(n,e,t),[n,e?.id,e?.type,JSON.stringify(t)])}const Kl={},ql=(0,u.createContext)(`global`);function Jl(){return(0,u.useContext)(ql)}function Yl(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Xl(e){let t=Jl(),[,n]=(0,u.useReducer)(e=>e+1,0),r=(0,u.useMemo)(()=>(Kl[t]||(Kl[t]={}),Kl[t][e]||(Kl[t][e]={name:e,emitter:(0,E.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),Kl[t][e]),[t,e]);return Zl(r,`abort`,n),Zl(r,`error`,n),Zl(r,`complete`,n),Zl(r,`running`,n),r}function Zl(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 Ql=()=>void 0;function $l(e,t){let n=Xl(e);return Zl(n,`complete`,t||Ql),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=Yl();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 eu(e,t){let n=Xl(e);return Zl(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 tu({children:e}){return(0,d.jsx)(ql.Provider,{value:(0,u.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function nu(e){return!1}function ru({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
+ `);for(let t of e){if(v)try{let e=await nu(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=es,exports.ConfigProvider=ae,exports.ConfigReactContext=L,exports.ContextMenuProvider=as,exports.ContextMenuReactContext=is,exports.CreatorInitialData=Oo,exports.CreatorSettings=ns,exports.EditingStack=ii,exports.EditingStackContext=Kr,exports.EventEmitterProvider=Ps,exports.ExportPanel=As,exports.FLAG_TAG=gi,exports.HOMEPAGE_COLLECTION=yo,exports.HandleContainer=Bs,exports.HandleControls=Gs,exports.InlineEditingStack=ai,exports.Layout=kc,exports.LayoutActionsReactContext=oi,exports.LayoutModeReactContext=ci,exports.LayoutStateReactContext=si,exports.ManifestEditorCanvasProgressOverlay=Ee,exports.ManifestEditorTagBadge=zi,exports.ManifestEditorTagIcon=Ri,exports.ManifestEditorTagOverlay=Bi,exports.ManifestPaginationNavigation=Ic,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=Jc,exports.PrimeAppReactContext=zn,exports.ReactEmitterContext=Ns,exports.ResourceEditingProvider=Hr,exports.ResourceEditingReactContext=Rr,exports.SaveConfigReactContext=R,exports.ShellProvider=tl,exports.SpecificationProvider=Vl,exports.TAGS_META_KEY=hi,exports.TAGS_META_NAMESPACE=mi,exports.TaskBridge=tu,exports.ToastProvider=Gi,exports.UniversalCopyTarget=ru,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=ml,exports.copyToClipboard=It,exports.createActionIdentity=Pt,exports.createBackgroundActionsStore=yt,exports.createDownload=Ft,exports.createIframeVaultBridge=Uc,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=pl,exports.extendApp=Bt,exports.filterSupportedPanels=gc,exports.getAvailableBackgroundActionGroups=Fe,exports.getBackgroundActionInstanceKey=ke,exports.getCanvasProgressStatus=fe,exports.getCanvasProgressStatusFromState=pe,exports.getDefaultLayoutState=Fc,exports.getDefaultPanelState=Pc,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=fl,exports.getResourceTag=Ai,exports.getResourceTagGroups=Mi,exports.getResourceTags=Ei,exports.getResourceTagsFromState=Di,exports.getSelectedPresetTemplate=Wn,exports.getSupportedPanelFallback=_c,exports.getTerminologyLabel=dl,exports.getValueAtPath=sl,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=Nc,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=ll,exports.normalisePlugin=nn,exports.normalisePluginAppConfig=Kt,exports.normalisePluginAppsConfig=qt,exports.normalisePlugins=rn,exports.normaliseSpecificationPath=al,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=cl,exports.sortBackgroundActionDefinitions=je,exports.specificationJsonEquals=ul,exports.specificationPathEquals=ol,exports.toggleResourceTag=Pi,exports.useAnnotationCreatorState=js,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=ls,exports.useDecayState=Wo,exports.useEditingContext=zr,exports.useEditingResource=Yr,exports.useEditingResourceStack=Xr,exports.useEditingStack=Jr,exports.useEditor=ni,exports.useEmitter=Fs,exports.useEnabledPlugins=jn,exports.useEvent=Is,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=Ls,exports.useOpenPresetOnboarding=wa,exports.useOptionalLocalStorage=l.useOptionalLocalStorage,exports.useOptionalPluginStoreApi=Dn,exports.useOptionalResource=Vr,exports.usePanelActions=Ac,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=Yc,exports.usePreviews=Sr,exports.useResolvedPluginApp=In,exports.useResource=Br,exports.useResourceContextMenuItems=ss,exports.useResourceTagActions=Li,exports.useResourceTags=Ii,exports.useSaveConfig=ie,exports.useSaveVault=Rs,exports.useSetCustomTitle=oo,exports.useSpecificationPropertyPolicy=Gl,exports.useSpecificationReport=Ul,exports.useSpecificationTerminology=Wl,exports.useSpecifications=Hl,exports.useSvgTools=zs,exports.useTask=Xl,exports.useTaskDispatch=$l,exports.useTaskEvent=Zl,exports.useTaskRunner=eu,exports.useTemporaryHighlight=Ka,exports.useToasts=Ki;
1512
1532
  //# sourceMappingURL=index.cjs.map