@manifest-editor/shell 2.0.3-next.0.f58cbd8 → 2.1.1-next.0.96fdf30

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:at(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(e){return!Object.keys(e.instances).length&&!Object.keys(e.histories).length&&!Object.keys(e.plans).length}function at(e){return Ye(e)?e:`queued`}function ot(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:at(e.status),error:e.error?Ie(e.error):null,createdAt:typeof e.createdAt==`number`?e.createdAt:n}}function st(e){return!e||e.version!==1||!Array.isArray(e.tasks)?null:{version:1,data:e.data,tasks:e.tasks.map(ot)}}function ct(e){return{...e,tasks:e.tasks.map(e=>e.status===`running`?{...e,status:`queued`,statusText:`Queued after reload`,startedAt:void 0}:e)}}function lt(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 ut(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 dt(e){return!e||e.version!==1?{version:1,savedAt:Date.now(),instances:{},histories:{},plans:{}}:{version:1,savedAt:typeof e.savedAt==`number`?e.savedAt:Date.now(),instances:e.instances||{},histories:e.histories||{},plans:e.plans||{}}}function ft(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 pt(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 mt(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 ht(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(at(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||gt(m,p)&&(await _t(),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=pt(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||St(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 gt(e,t){return t!==!1&&(!e||Date.now()-e>=t)}function _t(){return new Promise(e=>{setTimeout(e,0)})}function vt(e=[]){let t=null,n=null,r=null;return(0,d.createStore)((i,a)=>{async function o(){if(r&&(clearTimeout(r),r=null),!t||!n||!a().hasHydrated)return;let e=rt(a());if(it(e)){await t.clear(n);return}await t.save(n,e)}function s(e=!1){if(!(!t||!n||!a().hasHydrated)){if(e){o();return}r&&clearTimeout(r),r=setTimeout(()=>{o()},300)}}return{definitions:Ne([],e),instances:{},histories:{},plans:{},controllers:{},hasHydrated:!0,setDefinitions(e){i(t=>{let n=Ne([],e),r=new Set(n.map(e=>e.id)),i={},a={},o={};for(let[e,n]of Object.entries(t.instances))r.has(n.actionId)&&(i[e]=n);for(let[e,n]of Object.entries(t.histories)){let t=n.filter(e=>r.has(e.actionId));t.length&&(a[e]=t)}for(let[e,n]of Object.entries(t.plans))i[e]&&(o[e]=n);return{definitions:n,instances:i,histories:a,plans:o,controllers:Object.fromEntries(Object.entries(t.controllers).filter(([e])=>i[e]?.status&&qe(i[e].status)))}}),s()},setPersistence(e,r){t=e,n=e&&r?r:null,i({hasHydrated:!t})},hydrate(e){let t=dt(e),n=new Map(a().definitions.map(e=>[e.id,e])),r={},o={},c={};for(let[e,r]of Object.entries(t.histories)){let t=(Array.isArray(r)?r:[]).map(ut).filter(e=>n.has(e.actionId));t.length&&(o[e]=t)}for(let[e,i]of Object.entries(t.instances)){let a=ut(i),s=n.get(a.actionId);if(!s)continue;let l=a,u=st(t.plans[e]);if(qe(a.status))if(a.cancelRequestedAt){let e=Date.now();u=u&&lt(u,e),l=I({...a,status:`cancelled`,statusText:`Cancelled`,completedAt:e,cancelledAt:e},`status`,`Cancelled`,{status:`cancelled`},e)}else if(s.resumable&&u)u=ct(u),l=I({...a,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`});else{let e=Date.now();l=I({...a,status:`cancelled`,statusText:`Interrupted by page reload`,completedAt:e,cancelledAt:e},`status`,`Interrupted by page reload`,{status:`cancelled`},e)}r[e]=l,o=We(o,e,l),u&&(c[e]=u)}i({instances:r,histories:o,plans:c,controllers:{},hasHydrated:!0}),s(!0)},persist(e=!1){s(e)},flushPersistence:o,registerAction(e){return i(t=>({definitions:Ne(t.definitions,[e])})),s(),()=>a().unregisterAction(e.id)},unregisterAction(e){i(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}}),s(!0)},resetAction(e){i(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}}),s(!0)},startAction(e,t,n,r){let a=Date.now();i(i=>{let o={...i.plans};return delete o[e],{instances:{...i.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`},a)],progress:void 0,startedAt:a,completedAt:void 0,cancelRequestedAt:void 0,cancelledAt:void 0}},plans:o,controllers:r?{...i.controllers,[e]:r}:i.controllers}}),s(!0)},resumeAction(e,t){let n=Date.now();i(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}})),s(!0)},cancelAction(e){let t=a().controllers[e],n=a().instances[e];if(!n||!qe(n.status))return;let r=Date.now();i(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]:lt(i,r)}:t.plans,controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))}}),s(!0),t?.abort()},setActionLabel(e,t){let n=Date.now();i(r=>({...L(r,e,e=>I({...e,label:t},`label`,t,{label:t},n))})),s()},setActionStatus(e,t,n){let r=Date.now(),a=Je(t)?r:void 0;i(i=>({...L(i,e,e=>I({...e,status:t,statusText:n,completedAt:a,cancelledAt:t===`cancelled`?r:void 0},`status`,n||t,{status:t},r)),controllers:qe(t)?i.controllers:Object.fromEntries(Object.entries(i.controllers).filter(([t])=>t!==e))})),s(Je(t))},setActionError(e,t,n){let r=Date.now(),a=Fe(t);i(t=>({...L(t,e,e=>I({...e,status:`error`,statusText:n,error:a,completedAt:r,cancelledAt:void 0},`error`,n||a.message,a,r)),controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))})),s(!0)},appendActionLog(e,t,n=`info`,r){let a=Date.now(),o={id:Be(`log`),createdAt:a,level:n,message:t,data:r};i(i=>({...L(i,e,e=>I({...e,logs:[...e.logs,o]},`log`,t,{level:n,data:r},a))})),s()},setActionProgress(e,t){let n=t?Ke(t):void 0;i(t=>({...L(t,e,e=>({...e,progress:n}))}))},setResult(e,t){let n=Date.now();i(r=>({...L(r,e,e=>I({...e,result:t},`result`,`Result recorded`,void 0,n))})),s(!0)},setResultsAvailable(e,t){let n=Date.now();i(r=>({...L(r,e,e=>I({...e,resultsAvailable:t},`results-available`,t?`Results available`:`Results hidden`,{available:t},n))})),s(!0)},setActionPlan(e,t){let n=st(t);n&&(i(t=>({...L(t,e,e=>({...e,progress:ft(n,`Queued`)})),plans:{...t.plans,[e]:n}})),s(!0))},updateActionTask(e,t,n,r=!1){i(r=>{let i=r.plans[e];if(!i)return r;let a=i.tasks.map(e=>e.id===t?ot({...e,...n,status:n.status?at(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:ft(o,n.statusText||n.label)})),plans:{...r.plans,[e]:o}}}),s(r)}}})}function yt(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i,o=ht(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 bt(e){return!!e&&typeof e==`object`&&e.version===1&&Array.isArray(e.tasks)}async function xt(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(yt(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];bt(n)&&t.getState().setActionPlan(i,n)}if(l.aborted)return f(),t.getState().instances[i];let n=t.getState().plans[i];n&&mt(u,n),t.getState().setActionStatus(i,`running`,e.resume?`Resuming`:`Running`);let a=await r.run(yt(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||St(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 St(e){return e instanceof Error&&(e.name===`AbortError`||e.message.toLowerCase().includes(`aborted`))}function Ct(e){return JSON.stringify([e.appId,e.instanceId,e.rootResource.type,e.rootResource.id])}let wt;function Tt(){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(Ct(t))},async save(t,n){await e.setItem(Ct(t),n)},async clear(t){await e.removeItem(Ct(t))}}}function Et(){return wt===void 0&&(wt=Tt()),wt}const Dt=(0,l.createContext)(null);function Ot({children:e,persistence:t,persistenceKey:n}){let r=z(),i=In(),a=(0,l.useMemo)(()=>vt(),[]),o=r.layout.backgroundActions||[],s=(0,l.useMemo)(()=>t===!1?null:t||Et(),[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)(Dt.Provider,{value:a},e)}function kt(){let e=(0,l.useContext)(Dt);if(!e)throw Error(`useBackgroundActionsStore must be used within a BackgroundActionsProvider`);return e}function R(e=e=>e){return(0,d.useStore)(kt(),e)}function At(e){return R(t=>t.instances[e])}function jt(e){return R(t=>t.histories[e]||[])}async function Mt(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 Nt(e,t,n){return`create_${e}_${t}_${(0,m.toRef)(n)?.type||`unknown`}`}function Pt(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 Ft(e){return navigator.clipboard.writeText(typeof e==`string`?e:JSON.stringify(e,null,2))}function It(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function Lt(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 Rt(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 zt=[`leftPanels`,`centerPanels`,`rightPanels`,`modalPanels`,`annotations`,`canvasEditors`,`editors`,`creators`,`background`,`backgroundActions`],Bt={plugins:[],enabled:[],disabled:[],globalApps:{},apps:{}};function Vt(){return Bt}function Ht(e=[]){return Array.from(new Set(e.filter(Boolean)))}function Ut(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Wt(e={}){return{...e,enabled:Ht(e.enabled||[]),disabled:Ht(e.disabled||[]),settings:e.settings?{...e.settings}:void 0}}function Gt(e){let t={};for(let[n,r]of Object.entries(e?.apps||{}))t[n]=Wt(r);return t}function Kt(e={},t){return{...e,enabled:Ht([...(e.enabled||[]).filter(e=>e!==t),t]),disabled:(e.disabled||[]).filter(e=>e!==t)}}function qt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:Ht([...(e.disabled||[]).filter(e=>e!==t),t])}}function Jt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:(e.disabled||[]).filter(e=>e!==t)}}function Yt(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 Xt(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 Zt(e){return!!e&&`metadata`in e&&`extension`in e}function Qt(e){return Zt(e)?e:Xt(e)}function $t(e=[]){return e.map(Qt)}function en(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 tn(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 nn(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 rn(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 an(e,t,n){let r=[],i=new Set,a=new Set,o=new Set(e.plugins.filter(r=>en(r,t,n)&&nn(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 mn(`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 mn(`Plugin "${u}" was not enabled because dependency "${r}" is not enabled.`),c.delete(u),a.add(u),!1;if(!en(e,t,n))return mn(`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)en(r,t,n)&&nn(r,e,n)&&l(r);return r}function on(e,t){let n=e?.settings?.[t];return Ut(n)?n:{}}function sn(e={},t,n){return{...e,settings:{...e.settings||{},[t]:n}}}function cn(e={},t){let n={...e.settings||{}};return delete n[t],{...e,settings:n}}function ln(e){return{...e?.settings?.defaults||{}}}function un(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{...ln(r),...on(i,t),...on(a,t)}}function dn(e,t){return{getSettings(n){return un(e,n,t)}}}function fn(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(!en(e,r,i)){s.push(`${e.metadata.label} is not compatible`);continue}u(e)}c.delete(t),l=Kt(l,t),o.push(t)}}return u(n),s.length?{config:e,enabledIds:[],blocked:s}:{config:l,enabledIds:o,blocked:s}}function pn(e,t){return t===`modalPanels`?e.layout.modals||[]:e.layout[t]||[]}function mn(e){globalThis.process?.env?.NODE_ENV!==`production`&&console.warn(`[manifest-editor/plugin] ${e}`)}function hn(e,t,n,r){if(!r?.length)return;let i=[];for(let a of r){if(n.has(a.id)){mn(`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 gn(e,t){let n=t.extension,r={config:n.config,disableSideEffects:n.disableSideEffects};for(let i of zt){let a=hn(t,i,new Set(pn(e,i).map(e=>e.id)),n[i]);a&&(r[i]=a)}return r}function _n(e,t,n){if(!t.length)return e;let r=e,i=new Set;for(let a of t){if(!en(a,e,n))continue;let t=(a.metadata.dependencies||[]).filter(e=>!i.has(e));if(t.length){mn(`Plugin "${a.metadata.id}" was not applied because dependencies are missing or later in the plugin order: ${t.join(`, `)}`);continue}let o=gn(r,a);r=Rt(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 vn({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:Gt(r),apps:{},setProviderState(e){a(t=>({...t,plugins:e.plugins||[],enabled:i(e.enabled||[]),disabled:i(e.disabled||[]),globalApps:Gt(e.globalPluginConfig)}))},setAppConfig(e,t){let n=Wt(t);a(t=>Yt(t.apps[e],n)?t:{...t,apps:{...t.apps,[e]:n}})},setGlobalConfig(e){a(t=>({...t,globalApps:Gt(e)}))},setGlobalAppConfig(e,t){let n=Wt(t);a(t=>Yt(t.globalApps[e],n)?t:{...t,globalApps:{...t.globalApps,[e]:n}})},enable(e,t,n=`workspace`){a(r=>({...r,...n===`global`?{globalApps:{...r.globalApps,[e]:Kt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Kt(r.apps[e],t)}}}))},disable(e,t,n=`workspace`){a(r=>({...r,...n===`global`?{globalApps:{...r.globalApps,[e]:qt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:qt(r.apps[e],t)}}}))}}))}const yn=(0,l.createContext)(null),bn=(0,l.createContext)({});function xn({plugins:e,enabled:t,disabled:n,globalPluginConfig:r,saveGlobalPluginConfig:i,children:a}){let o=(0,l.useMemo)(()=>$t(e),[e]),s=(0,l.useMemo)(()=>vn({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)(bn.Provider,{value:c},(0,l.createElement)(yn.Provider,{value:s},a))}function Sn(){return(0,l.useContext)(yn)}function Cn(){let e=Sn();if(!e)throw Error(`usePluginStoreApi must be used within <PluginProvider />`);return e}function wn(e){let t=Sn();return t?(0,d.useStore)(t,e):e(Vt())}function Tn(){return wn(e=>({plugins:e.plugins,enabled:e.enabled,disabled:e.disabled,globalApps:e.globalApps,apps:e.apps}))}function En(e){let t=(0,l.useContext)(Pn),n=(0,l.useContext)(Nn),r=Tn(),i=e||t?.appId;return(0,l.useMemo)(()=>an(r,n,i),[r,n,i])}function Dn(){let e=Sn();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 On(e){let t=(0,l.useContext)(Pn),n=Tn(),r=e||t?.appId;return(0,l.useMemo)(()=>dn(n,r),[n,r])}function kn(e,t){let n=(0,l.useContext)(Pn),r=Tn(),i=t||n?.appId;return(0,l.useMemo)(()=>un(r,e,i),[r,e,i])}function An(e,t){let n=(0,l.useContext)(Pn),r=Sn(),i=Tn(),a=F(),o=se(),{saveGlobalPluginConfig:s}=(0,l.useContext)(bn),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)(()=>ln(u||void 0),[u]),m=(0,l.useMemo)(()=>on(d,e),[d,e]),h=(0,l.useMemo)(()=>on(f,e),[f,e]),g=(0,l.useMemo)(()=>un(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=>{_(sn(f||{},e,t))},[_,e,f]),y=(0,l.useCallback)(()=>{_(cn(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(sn(d||{},e,t))},[d,b,e]),S=(0,l.useCallback)(async()=>{await b(cn(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 jn(e,t){let n=Tn(),r=(0,l.useMemo)(()=>an(n,e,t),[n,e,t]);return(0,l.useMemo)(()=>_n(e,r,t),[e,r,t])}function Mn({config:e}){let t=(0,l.useContext)(Pn),n=Sn(),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 Nn=(0,l.createContext)(null),Pn=(0,l.createContext)(null),Fn=(0,l.createContext)({state:null,setState:()=>{}});function In(){let e=(0,l.useContext)(Pn);return M(e,`Hook useAppInstance must be used inside <AppProvider />`),e}function z(){let e=(0,l.useContext)(Nn);return M(e,`Hook useApp must be used inside <AppProvider />`),e}function Ln(){return(0,l.useContext)(Fn)}function Rn(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)(Fn.Provider,{value:a,children:e.children})}function zn({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=jn(r,t);return(0,u.jsx)(ce,{config:c.config||{},children:(0,u.jsx)(Nn.Provider,{value:c,children:(0,u.jsx)(Pn.Provider,{value:o,children:(0,u.jsx)(Rn,{instanceId:o.instanceId,appId:o.appId,args:o.args,initialState:s,children:i})})})})}const Bn=(0,l.createContext)(null);function Vn(){let e=(0,l.useContext)(Bn);return M(e,`Hook useApps must be used inside <MultiAppProvider />`),e}function Hn(e,t=!1){let[n,r]=(0,c.useOptionalLocalStorage)(`SelectedApplication`,e||{id:`splash`},!t);return[n,r]}function Un({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]=Hn(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)(zn,{appId:d.id,definition:h,instanceId:d.id+r,args:d.args,children:(0,u.jsx)(Bn.Provider,{value:m,children:i})})}const Wn=h.default.div`
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`
2
2
  display: flex;
3
3
  align-items: center;
4
4
  height: 3em;
5
5
  padding: 0.5em;
6
- `,Gn=h.default.div`
6
+ `,$n=h.default.div`
7
7
  display: flex;
8
8
  padding: 0.25em;
9
9
  flex-direction: column;
10
- `,Kn=h.default.button`
10
+ `,er=h.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
- `,qn=h.default.div`
29
+ `,tr=h.default.div`
30
30
  flex: 1;
31
- `,Jn=h.default.div`
31
+ `,nr=h.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
- `,Yn=h.default.div`
42
+ `,rr=h.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
- `,Xn=h.default.button`
55
+ `,ir=h.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
- `,Zn=({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`})]}),Qn=({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`})}),$n=(0,l.createContext)(null),er=(0,l.createContext)(null);function tr(){let e=(0,l.useContext)(er),t=(0,l.useContext)($n),n=e||t?.id;return M(n,`useResourceInstance can only be called from inside <ResourceProvider />`),n}function B(){let e=(0,l.useContext)($n);return M(e,`useResource can only be called from inside <ResourceProvider />`),e}function nr({id:e,children:t}){return e?(0,u.jsx)(er.Provider,{value:e,children:t}):t}function rr({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)($n.Provider,{value:e,children:r})}function ir(e){"@babel/helpers - typeof";return ir=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},ir(e)}function ar(e,t){if(ir(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(ir(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function or(e){var t=ar(e,`string`);return ir(t)==`symbol`?t:t+``}function V(e,t,n){return(t=or(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var sr=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])}},cr=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 lr(e,t,n,r,i){let a=B(),o=tr(),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 ur(e){return(0,l.useMemo)(()=>{let t=[];for(let n of e)switch(n.type){case`iiif-preview-service`:t.push(new cr(n));break;case`external-manifest-preview`:t.push(new sr(n));break}return t},[])}const dr=(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 fr(){return{active:[],selected:null}}const pr=(0,l.createContext)(null),mr=(0,l.createContext)([]),hr=(0,l.memo)(function({children:e,configs:t=[]}){let n=tr(),r=ur(t),[i,a]=(0,c.useLocalStorage)(`preview-${n}`,[]),[o,s]=(0,l.useReducer)(dr,void 0,fr),d=lr(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)(mr.Provider,{value:i,children:(0,u.jsx)(pr.Provider,{value:f,children:e})})});function gr(){return(0,l.useContext)(mr)}function _r(){let e=(0,l.useContext)(pr);return M(e,`usePreviewContext() can only be called from inside <PreviewProvider />`),e}const vr=h.default.button`
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`
64
64
  border: none;
65
65
  outline: none;
66
66
  background-color: transparent;
@@ -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
- `,yr=(0,h.default)(H)`
93
+ `,Dr=(0,h.default)(H)`
94
94
  padding: 0.25em ${e=>e.theme.padding.xs||`0.4em`};
95
95
  height: unset;
96
96
  background: none;
97
- `,br=(0,h.default)(H)`
97
+ `,Or=(0,h.default)(H)`
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
- `,xr=(0,h.default)(H)`
116
+ `,kr=(0,h.default)(H)`
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
- `,Sr=h.default.div`
129
+ `,Ar=h.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
- `,Cr=h.default.div`
135
+ `,jr=h.default.div`
136
136
  display: flex;
137
137
  position: relative;
138
138
  width: 10em;
139
- `,wr=(0,h.default)(vr)`
139
+ `,Mr=(0,h.default)(Er)`
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
- `,Tr=(0,h.default)(vr)`
160
+ `,Nr=(0,h.default)(Er)`
161
161
  background: #b84c74;
162
162
  border-top-right-radius: 5px;
163
163
  border-bottom-right-radius: 5px;
@@ -182,7 +182,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
182
182
  background: #892c4e;
183
183
  box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
184
184
  `}
185
- `,Er=h.default.div`
185
+ `,Pr=h.default.div`
186
186
  position: absolute;
187
187
  opacity: 0;
188
188
  top: 100%;
@@ -203,7 +203,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
203
203
  opacity: 1;
204
204
  pointer-events: visible;
205
205
  `}
206
- `,Dr=h.default.div`
206
+ `,Fr=h.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
- `,Or={available:`#ddd`,configured:`#e37266`,active:`#4cb235`},kr=h.default.div`
216
+ `,Ir={available:`#ddd`,configured:`#e37266`,active:`#4cb235`},Lr=h.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=>Or[e.$status]};
222
- `,Ar=h.default.div`
221
+ background-color: ${e=>Ir[e.$status]};
222
+ `,Rr=h.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
- `,jr=h.default.div`
231
+ `,zr=h.default.div`
232
232
  background: #f9f9f9;
233
233
  font-size: 0.8em;
234
- `,Mr=h.default.div`
234
+ `,Br=h.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 Nr({downloadEnabled:e,fileName:t}){let{active:n,configs:r,actions:i,selected:a}=_r(),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)(Mr,{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)(Cr,{children:[(0,u.jsx)(wr,{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)(Tr,{$open:f,...m,children:(0,u.jsx)(Qn,{})}),(0,u.jsx)(Er,{$open:f,children:d.map((e,t)=>{let r=n.indexOf(e.id)===-1;return(0,u.jsxs)(Dr,{...h[t],children:[(0,u.jsx)(kr,{$status:r?`available`:e.id===a?`active`:`configured`}),(0,u.jsx)(Ar,{onClick:()=>{i.selectPreview(e.id)},children:e.label}),r?null:(0,u.jsx)(jr,{onClick:()=>i.deletePreview(e.id),children:(0,u.jsx)(Zn,{})})]},e.id)})})]})]})}function Pr(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=Fr(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 Fr(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 Ir={stack:[],current:null,create:null},Lr=(0,l.createContext)(Ir),Rr=(0,l.createContext)({edit(){},close(){},back(){},setStack(){},updateCurrent(){},create(){return()=>{}}});function zr(){return(0,l.useContext)(Rr)}function Br(){return(0,l.useContext)(Lr).current}function Vr(){return(0,l.useContext)(Lr).stack}function Hr(){return(0,l.useContext)(Lr).create}function Ur(){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 Wr(){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 Gr(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 Kr(){let{annotationPage:e}=(0,p.useResourceContext)();return M(e,`Annotation page not found`),Gr({id:e,type:`AnnotationPage`})}function qr(){let e=Br(),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 Jr(e){let t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(Pr,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 Yr(e){let{instanceId:t}=In(),[n,r]=Jr(e.initialState||Ir);return(0,u.jsx)(Rr.Provider,{value:r,children:(0,u.jsx)(Lr.Provider,{value:n,children:e.children})},t)}function Xr({resource:e,children:t}){let{instanceId:n}=In(),[r,i]=Jr((0,l.useMemo)(()=>({create:null,stack:[],current:{resource:{type:`SpecificResource`,source:{id:e.id,type:e.type}}}}),[]));return(0,u.jsx)(Rr.Provider,{value:i,children:(0,u.jsx)(Lr.Provider,{value:r,children:t})},n)}const Zr=(0,l.createContext)(null),Qr=(0,l.createContext)(null),$r=(0,l.createContext)(`default`);function ei(){return(0,l.useContext)(Qr)}function ti(){return(0,l.useContext)(Zr)}function ni(){return(0,l.useContext)($r)}function ri(){return z().layout}function ii(){let e=z(),t=e.layout,n=(0,l.useContext)(Zr),r=(0,l.useContext)(Qr);return(0,l.useMemo)(()=>({actions:n,state:r,...t}),[e,r])}const ai=`@manifest-editor/tags`,oi=`tags`,si={type:`flag`,id:`flag`,label:`Flag`,backgroundColor:`#b91c1c`,textColor:`#ffffff`,icon:`flag`},ci=[];function li(e){return typeof e==`string`?e:e?.id||null}function ui(e){return e.type||e.id}function di(e){return`${e.type}:${e.id}`}function fi(e){if(!Array.isArray(e))return ci;let t=new Map;for(let n of e){if(!n?.id)continue;let e=ui(n);t.set(e,{...n,type:e})}return Array.from(t.values())}function pi(e){return e.label||e.id||e.type}function mi(e,t){return e===si.type&&(!t||t===si.id)}function hi(e,t){return mi(e.type,e.id)?-1:mi(t.type,t.id)?1:pi(e.tag).localeCompare(pi(t.tag))||e.type.localeCompare(t.type)||e.id.localeCompare(t.id)}function gi(e,t){return mi(e.type)?-1:mi(t.type)?1:e.type.localeCompare(t.type)}function _i(e,t){let n=li(t);return n?fi(e.getResourceMeta(n,ai)?.[oi]):ci}function vi(e,t){let n=li(t);return n?fi(e?.iiif?.meta?.[n]?.[ai]?.[oi]):ci}function yi(e,t,n){let r=li(t);if(!r)return ci;let i=fi(n);return e.setMetaValue([r,ai,oi],i),i}function bi(e,t,n){return yi(e,t,[..._i(e,t),n])}function xi(e,t,n){return _i(e,t).find(e=>e.type===n)}function Si(e,t,n,r){return yi(e,t,_i(e,t).filter(e=>e.type!==n||(r?e.id!==r:!1)))}function Ci(e,t){let n=new Map;for(let r of t){let t=li(r);if(t)for(let i of _i(e,r)){let e=i.type,r=di(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(hi),e.canvasIds=Array.from(new Set(e.rows.flatMap(e=>e.canvasIds))),e.canvasCount=e.canvasIds.length;return Array.from(n.values()).sort(gi)}function wi(e,t,n,r){let i=xi(e,t,n);return r?i?.id===r:!!i}function Ti(e,t,n){return wi(e,t,n.type,n.id)?Si(e,t,n.type):bi(e,t,n)}function Ei(e){return{getTags(t){return _i(e,t)},setTags(t,n){return yi(e,t,n)},addTag(t,n){return bi(e,t,n)},upsertTag(t,n){return bi(e,t,n)},getTag(t,n){return xi(e,t,n)},removeTag(t,n,r){return Si(e,t,n,r)},hasTag(t,n,r){return wi(e,t,n,r)},toggleTag(t,n){return Ti(e,t,n)}}}function Di(e){let t=li(e);return(0,p.useVaultSelector)(e=>t?vi(e,t):ci,[t])}function Oi(e){let t=(0,p.useVault)(),n=li(e),r=(0,l.useMemo)(()=>Ei(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 ki({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 Ai({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)(ki,{icon:e.icon,className:`h-2.5 w-2.5 flex-shrink-0`}):null,(0,u.jsx)(`span`,{className:`min-w-0 truncate`,children:pi(e)})]})}function ji({resource:e,tags:t,className:n}){return t?(0,u.jsx)(Ni,{tags:t,className:n}):(0,u.jsx)(Mi,{resource:e,className:n})}function Mi({resource:e,className:t}){return(0,u.jsx)(Ni,{tags:Di(e),className:t})}function Ni({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)(Ai,{tag:e},e.type))}):null}const Pi=5e3,Fi=8e3,Ii=(0,l.createContext)(null);function Li(e){return e===`error`?8e3:5e3}function Ri({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??Li(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)(Ii.Provider,{value:r,children:[e,(0,u.jsx)(c.ToastRegion,{state:n})]})}function zi(){let e=(0,l.useContext)(Ii);if(!e)throw Error(`useToasts must be used within a ToastProvider`);return e}function Bi(e){return e.status!==`complete`&&e.status!==`error`||!e.completedAt?null:`${e.id}:${e.status}:${e.completedAt}`}function Vi(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 Hi(e){return{id:e.id,type:e.type,label:e.type,scope:`root`}}function Ui(e){if(!(!e||!e.id||e.type!==`Canvas`))return{id:e.id,type:`Canvas`,label:`Current canvas`,scope:`canvas`}}function Wi(){let e=Br(),t=Vr();return(0,l.useMemo)(()=>Ui([e,...t].find(e=>e?.resource?.source?.type===`Canvas`)?.resource?.source),[e,t])}function Gi(){let e=B(),t=Wi(),n=(0,p.useVault)(),r=(0,l.useMemo)(()=>Ei(n),[n]),i=(0,l.useMemo)(()=>xe(n),[n]),a=On(),o=F(),s=ei(),c=ti();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 Ki(){let e=R(e=>e.definitions),t=R(e=>e.instances),n=Gi(),r=(0,l.useMemo)(()=>Hi(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 qi(){let e=kt(),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=Gi(),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||!Yi(a)||!r[t]||i[t]||s.current.has(l)||(s.current.add(l),xt({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 Ji(){let e=R(e=>e.definitions),t=R(e=>e.instances),n=Gi(),r=zi(),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=Bi(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=Vi(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 Yi(e){return e?.status===`preparing`||e?.status===`running`}function Xi(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 Zi(e){return e?new Date(e).toLocaleString():`Not recorded`}function Qi(e){return e?new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):`--:--:--`}function $i(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 ea(e){if(e===void 0)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ta({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 na={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 ra(e){return na[e?.toLowerCase()]??{label:e?.toUpperCase().slice(0,3)??`LOG`,className:`text-zinc-300`}}const ia={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 aa(e){return ia[e?.toLowerCase()]??`bg-zinc-100 text-zinc-600`}function oa(e){return e?.toLowerCase()in ia}function sa({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=>oa(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)(ta,{label:`Target`,value:`${t.target.label} (${t.target.type})`}),(0,u.jsx)(ta,{label:`Run ID`,value:t.runId}),(0,u.jsx)(ta,{label:`Started`,value:Zi(t.startedAt)}),(0,u.jsx)(ta,{label:`Finished`,value:Zi(t.completedAt)}),(0,u.jsx)(ta,{label:`Duration`,value:$i(t)}),t.progress?(0,u.jsx)(ta,{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`,aa(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:Qi(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=ra(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:Qi(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:ea(e.data)})]})]},e.id)}),(0,u.jsx)(`div`,{ref:a})]})]})})]})}function ca(){let e=kt(),t=Ki(),[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=>Yi(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=Xi(t.instance),o=Yi(t.instance),s=()=>{o||(xt({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)(sa,{definition:m.definition,instance:m.instance,onClose:()=>r(null)}):null]})}const la=(0,l.memo)(function(e){let[t]=(0,c.useLocalStorage)(`menu-hidden`);return(0,u.jsx)(Gn,{children:(0,u.jsxs)(Wn,{children:[(0,u.jsx)(Jn,{onClick:e.onClickLogo,children:(0,u.jsx)(c.ManifestEditorLogo,{})}),(0,u.jsx)(Nr,{}),(0,u.jsx)(ca,{})]})})}),ua=(0,l.createContext)(null);function da(){return(0,l.useContext)(ua)||null}function fa(e,t){let n=da();return n?n[e][t]:null}function pa({children:e,menu:t}){return(0,u.jsx)(ua.Provider,{value:t,children:e})}function ma(){return(0,l.useContext)(p.AtlasStoreReactContext)}function ha(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 ga=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)}),_a=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 va(){}async function ya(e,...t){if(!e)return;if(e.endsWith(`.mp3`)||e.endsWith(`.mp4`)||e.endsWith(`.m4a`)||e.endsWith(`.m4v`))try{let t=await _a(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 Sa(e)}if(!n.ok&&(n=await fetch(e+`/info.json`),!n.ok))return Sa(e);let r=n.headers.get(`Content-Type`);if(r?.includes(`image/`))return Sa(e,r);let i=null;try{i=await n.json()}catch{return null}return await xa(i,e)}function ba(e){return e.protocol&&e.protocol===`http://iiif.io/api/image`?(e.type||(e.type=`ImageService`),e):null}async function xa(e,t){let n=ba(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 Sa(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 Ca(n.slice(0,n.length-4).join(`/`)+`/info.json`);if(e&&e?.type&&e?.type?.startsWith(`ImageService`))return e}}try{let n=await ga(e);return{id:e,type:`Image`,width:n.width,height:n.height,format:await wa(e,t)}}catch{}return null}async function Ca(e){try{let t=await fetch(e);return t.ok?await xa(await t.json(),e):null}catch(e){return console.log(e),null}}async function wa(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 Ta(e){try{let t=await ga(e);if(t)return{width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}}catch{return null}return null}const Ea=(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 Da(e){let t=(0,l.useMemo)(()=>It(),[]),n=Ea(e=>e.regions[t]),r=Ea(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 Oa(e){let t=Ea(e=>e.highlight),n=Ea(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 ka=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`})]}),Aa=({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 ja(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)(xr,{onClick:e.resetErrorBoundary,children:`Try again`})]})}function Ma(e){return e&&e.pinnable}function Na({initial:e,fallback:t,options:n={}}){return Math.max(n.minWidth||0,Math.min(n.maxWidth||1/0,e||t))}function Pa(e){return typeof e==`string`?(0,l.createElement)(`div`,{dangerouslySetInnerHTML:{__html:e}}):e}const Fa=h.default.div`
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`
243
243
  position: relative;
244
244
  display: inline-block;
245
- `,Ia=h.default.div`
245
+ `,Wa=h.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
- `,La=h.default.button`
260
+ `,Ga=h.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`};
@@ -284,7 +284,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
284
284
  color: #fff;
285
285
  }
286
286
  `}
287
- `,Ra=h.default.div`
287
+ `,Ka=h.default.div`
288
288
  display: none;
289
289
  flex-direction: column;
290
290
  position: absolute;
@@ -311,17 +311,17 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
311
311
  ${e=>e.$open&&h.css`
312
312
  display: flex;
313
313
  `}
314
- `,za=h.default.div`
314
+ `,qa=h.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
- `,Ba=h.default.div`
320
+ `,Ja=h.default.div`
321
321
  height: 1px;
322
322
  margin: 0 0.5em;
323
323
  background: #eee;
324
- `,Va=`OverrideScrollbar`,Ha=(0,l.createContext)(null);function Ua(){return(0,l.useContext)(Ha)}const Wa=h.default.div`
324
+ `,Ya=`OverrideScrollbar`,Xa=(0,l.createContext)(null);function Za(){return(0,l.useContext)(Xa)}const Qa=h.default.div`
325
325
  display: flex;
326
326
  flex-direction: column;
327
327
  position: relative;
@@ -373,7 +373,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
373
373
  &[data-state="unmounted"] {
374
374
  transform: translateX(100%);
375
375
  }
376
- `,Ga=h.default.div`
376
+ `,$a=h.default.div`
377
377
  background: #fff;
378
378
  display: flex;
379
379
  height: 2.8em;
@@ -407,15 +407,15 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
407
407
  svg {
408
408
  font-size: 1.2em;
409
409
  }
410
- `,Ka=h.default.div`
410
+ `,eo=h.default.div`
411
411
  flex: 1 1 0px;
412
- `,qa=h.default.div`
412
+ `,to=h.default.div`
413
413
  font-size: 0.875em;
414
414
  flex: 1 1 0px;
415
415
  padding-left: 1em;
416
416
  text-align: center;
417
417
  align-self: center;
418
- `,Ja=h.default.div`
418
+ `,no=h.default.div`
419
419
  flex: 1 1 0px;
420
420
  display: flex;
421
421
 
@@ -426,13 +426,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
426
426
  > * {
427
427
  min-width: 0;
428
428
  }
429
- `;function Ya({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),_=Ln(),v=ii(),{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)(Aa,{})}):null,ne=(0,u.jsx)(U,{onClick:o||n.close,children:(0,u.jsx)(Zn,{})});return(0,u.jsx)(Ha.Provider,{value:k,children:(0,u.jsxs)(Wa,{"data-state":a,"data-flipped":r,style:c,"data-header":!d,children:[d?null:(0,u.jsxs)(Ga,{"data-tabs":!!y,"data-error":m,children:[(0,u.jsxs)(Fa,{style:{display:`flex`,height:`100%`},children:[e.renderBackAction?e.renderBackAction({backAction:A,fallback:M}):M,C.length?(0,u.jsxs)(Ra,{$open:T,style:{left:`0.5em`},children:[(0,u.jsx)(za,{children:`All panels`}),(0,u.jsx)(Ba,{}),C.map((t,n)=>(0,u.jsx)(La,{...w[n],onClick:()=>j(t),$active:e.id===t.id,children:t.label},n))]}):null]}),D?(0,u.jsx)(qa,{children:D}):x?(0,u.jsx)(Ka,{}):(0,u.jsx)(qa,{children:e.label}),b?t.pinned?(0,u.jsx)(U,{onClick:i.unpin,children:(0,u.jsx)(ka,{fill:`orange`})}):(0,u.jsx)(U,{onClick:()=>i.pin({id:e.id,state:t.state}),children:(0,u.jsx)(ka,{fill:`#ddd`})}):null,e.renderCloseAction?e.renderCloseAction({closeAction:o||n.close,fallback:ne}):ne]}),(0,u.jsx)(Ja,{className:`OverrideScrollbar`,children:(0,u.jsx)(ee.ErrorBoundary,{onError:()=>h(!0),FallbackComponent:ja,resetKeys:S,onReset:()=>h(!1),children:Pa(e.render(t.state||e.defaultState||{},{...v,current:n,vault:f,transition:a},_))})})]})})}function Xa(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 Za(){return(0,l.useContext)(Qa)}const Qa=(0,l.createContext)(new x.Vault),$a=(0,l.createContext)({addHistory:(e,t)=>{},clearHistory:()=>{}}),eo=`manifest-editor://homepage-collection.json`;function to(){return(0,l.useContext)($a)}function no(e){let{vault:t,unsubscribe:n,addHistory:r,clearHistory:i}=(0,l.useMemo)(()=>Xa(eo),[]);return(0,l.useEffect)(()=>n,[]),(0,u.jsx)($a.Provider,{value:{addHistory:r,clearHistory:i},children:(0,u.jsx)(Qa.Provider,{value:t,children:e.children})})}function ro({children:e}){return(0,u.jsx)(p.VaultProvider,{vault:Za(),children:e})}function io(e,t,n,r,i){let a=(0,p.useVault)(),o=z(),{create:s,edit:c}=ti(),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":Nt(n,t,e)}),[n,t,e])}]}function ao(){let e=(0,p.useVault)(),t=Za(),n=z();return(0,l.useMemo)(()=>new S.Creator(e,n.layout.creators||[],t),[n.layout.creators,e])}const oo=(0,l.createContext)({});function so(e){return(0,l.useContext)(oo)[e]||{}}function co(e){let t=(0,l.useContext)(oo),n=(0,l.useMemo)(()=>({...t,[e.id]:e.data}),[t,e.id,e.data]);return(0,u.jsx)(oo.Provider,{value:n,children:e.children})}const lo=(0,l.memo)(function(e){let t=(0,p.useVault)(),{edit:n,modal:r}=ti(),[i,a]=(0,l.useState)(!1),[o,s]=(0,l.useState)(null),d=ao(),f=(0,l.useRef)(!1),h=e.resource.initialData?.selector;Da(h);let g=so(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 uo(e){let t=z(),n=(0,p.useVault)(),[r,i]=(0,l.useState)(e.resource.initialCreator||``),a=Ua(),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)(lo,{creator:s,resource:e.resource})]}):(0,u.jsxs)(`div`,{children:[d,(0,u.jsx)(`div`,{className:`p-2 py-6`,children:(0,u.jsx)(lo,{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 fo={id:`@manifest-editor/creator`,label:`Add content`,options:{hideHeader:!0,tabs:!1},render(e){return(0,u.jsx)(uo,{resource:e})}},po={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 mo(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:po,children:(0,u.jsx)(lo,{creator:t,resource:e.resource,onCreate:e.onCreate,skipEditingOnCreate:!0})})},t.id))]})})}function ho({fallback:e,backAction:t}){let n=Vr(),{back:r}=zr();return n.length?(0,u.jsx)(U,{onClick:r,children:(0,u.jsx)(Aa,{})}):e}function go({closeAction:e,fallback:t}){let n=Vr();return Br()||n.length?(0,u.jsx)(U,{onClick:()=>{e()},children:(0,u.jsx)(Zn,{})}):t}function _o(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 vo({currentTab:e=void 0}){let t=Br(),n=(0,l.useContext)(p.ResourceReactContext),r=z(),i=B(),a=(0,p.useVault)(),{change:o}=ti(),s=Ua(),{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 _o(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 yo={id:`@manifest-editor/editor`,label:`Editor`,options:{hideHeader:!0,tabs:!0,minWidth:400},renderBackAction:({backAction:e,fallback:t})=>(0,u.jsx)(ho,{backAction:e,fallback:t}),renderCloseAction:({closeAction:e,fallback:t})=>(0,u.jsx)(go,{closeAction:e,fallback:t}),render({currentTab:e}){return(0,u.jsx)(vo,{currentTab:e})}};function bo(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 xo(e){return e?typeof e==`string`?{src:e,alt:``}:e:null}function So(e){return e?typeof e==`string`?e:e.name:null}function Co(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 wo(e){return e instanceof Error?e.message:`Plugin configuration could not be saved.`}function To(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 Eo(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 Do(){let e=z(),{appId:t}=In(),n=F(),r=se(),i=Tn(),a=Dn(),o=ti(),{saveGlobalPluginConfig:s}=(0,l.useContext)(bn),[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(an(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=en(r,e,t);return!d&&!i?!1:n?[r.metadata.label,r.metadata.id,r.metadata.description,So(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(wo(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?fn(o,i,n,e,t):{config:qt(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=Co(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=nn(n,i,t),a=x.has(n.metadata.id),o=xo(n.metadata.image),s=r&&!a,l=en(n,e,t),d=tn(n,e,t),f=Co(n),p=!!n.settings,m=_===`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`} ${l?``:`opacity-40`}`,children:[o?(0,u.jsx)(`img`,{className:`h-9 w-9 rounded object-cover flex-none mt-0.5`,src:o.src,alt:o.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)(To,{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:[p?(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)(To,{className:`w-3.5 h-3.5`})}):null,a&&f?(0,u.jsx)(`button`,{type:`button`,title:`Open ${f.label}`,className:`rounded p-1 text-me-primary-500 hover:bg-me-primary-50 transition-colors`,onClick:()=>E(n),children:(0,u.jsx)(Eo,{className:`w-3.5 h-3.5`})}):null,(0,u.jsx)(`button`,{type:`button`,disabled:!l||m,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,s?(0,u.jsx)(`span`,{className:`text-xs text-amber-600`,children:`Waiting for required dependencies`}):null,!l&&d?(0,u.jsx)(`span`,{className:`text-xs text-gray-400`,children:d}):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)(Oo,{plugin:ee,onClose:()=>g(null),canSaveGlobal:!!s})}):null]})}function Oo({plugin:e,onClose:t,canSaveGlobal:n}){let r=An(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(wo(e))}finally{d(!1)}}async function v(){d(!0),h(null);try{i===`global`?await r.resetGlobalSettings():r.resetWorkspaceSettings(),s({})}catch(e){h(wo(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)(ko,{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 ko({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 Ao(){let e=_r(),t=B(),n=F(),r=se(),[i,a]=bo(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)(Do,{}),(0,u.jsx)(`div`,{className:`mt-5`,children:(0,u.jsx)(c.ActionButton,{type:`submit`,children:`Save changes`})})]})})]})}function jo(){return(0,d.createStore)((e,t)=>({specificMenus:{},resourceMenus:{},hookMenuItem(t){let n=It(),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 Mo=(0,l.createContext)(null);function No({children:e}){let t=(0,l.useMemo)(()=>jo(),[]);return(0,u.jsx)(Mo.Provider,{value:t,children:e})}function Po(){let e=(0,l.useContext)(Mo);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function Fo(e){let t=Po(),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 Io(c)},[r,n,e.id,e.type])}function Io(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 Lo(e,t=[]){let n=(0,d.useStore)(Po(),e=>e.hookMenuItem);(0,l.useEffect)(()=>n(e),[n,e.resource?.id,e.resource?.type,...t])}var Ro={};function zo(e){return(0,u.jsxs)(`div`,{className:Ro.CenterPanelContainer,children:[e.title||e.close?(0,u.jsxs)(`div`,{className:Ro.CenterPanelHeader,children:[e.title?(0,u.jsx)(`h2`,{className:Ro.CenterPanelTitle,children:e.title}):null,e.close?(0,u.jsx)(H,{className:Ro.CenterPanelClose,onClick:e.close,children:(0,u.jsx)(Zn,{})}):null]}):null,e.children]})}const Bo=h.default.div`
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`
430
430
  flex: 1;
431
431
  display: flex;
432
432
  width: 100%;
433
433
  flex-direction: column;
434
434
  position: relative;
435
- `,Vo=h.default.div`
435
+ `,Yo=h.default.div`
436
436
  background: #fff;
437
437
  position: relative;
438
438
  border-bottom: 1px solid #d0d0d0;
@@ -450,11 +450,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
450
450
  //flex-direction: column;
451
451
  //justify-content: center;
452
452
  }
453
- `,Ho=h.default.p`
453
+ `,Xo=h.default.p`
454
454
  font-size: 0.9em;
455
455
  color: #777;
456
456
  font-weight: 400;
457
- `,Uo=h.default.button`
457
+ `,Zo=h.default.button`
458
458
  color: inherit;
459
459
  text-rendering: geometricPrecision;
460
460
  border: none;
@@ -496,7 +496,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
496
496
  margin-top: 0.5em;
497
497
  }
498
498
  }
499
- `,Wo=h.default.div`
499
+ `,Qo=h.default.div`
500
500
  font-size: 1.4em;
501
501
  padding-right: 0.3em;
502
502
  display: flex;
@@ -505,7 +505,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
505
505
  [data-large="true"] & {
506
506
  font-size: 2em;
507
507
  }
508
- `,Go=h.default.div`
508
+ `,$o=h.default.div`
509
509
  width: 2em;
510
510
  align-items: center;
511
511
  //padding-top: 0.5em;
@@ -518,11 +518,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
518
518
  fill: #999;
519
519
  color: #999;
520
520
  }
521
- `,Ko=h.default.div`
521
+ `,es=h.default.div`
522
522
  min-height: 0;
523
523
  overflow: visible;
524
524
  display: flex;
525
- `,qo=h.default.div`
525
+ `,ts=h.default.div`
526
526
  min-height: 0;
527
527
  overflow: visible;
528
528
  flex: 1;
@@ -535,7 +535,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
535
535
  &[data-max-height="true"] {
536
536
  overflow-y: auto;
537
537
  }
538
- `,Jo=h.default.section`
538
+ `,ns=h.default.section`
539
539
  display: grid;
540
540
  grid-template-rows: 0fr;
541
541
  overflow: hidden;
@@ -563,7 +563,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
563
563
  &[data-scrolled="true"] {
564
564
  box-shadow: inset 0px 2px 0px 0 rgba(0, 0, 0, 0.1);
565
565
  }
566
- `,Yo=h.default.div`
566
+ `,rs=h.default.div`
567
567
  position: sticky;
568
568
  display: flex;
569
569
  top: 0;
@@ -599,7 +599,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
599
599
  right: 0.5em;
600
600
  }
601
601
  }
602
- `,Xo=(()=>void 0);let Zo=0;function Qo(){return(0,l.useMemo)(()=>Zo++,[])}function $o(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 es=(0,l.forwardRef)(function(e,t){let n=(0,l.useRef)(null),r=(0,l.useRef)(null),i=Qo(),[a,o]=(0,l.useState)(e.initialOpen||!1),s=e.onChange||Xo,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)(Vo,{"data-large":e.large,"data-open":a,children:[(0,u.jsxs)(Yo,{"data-open":a,children:[e.icon?(0,u.jsx)(Go,{onClick:c,children:e.icon}):null,(0,u.jsxs)(Uo,{ref:r,onClick:c,"aria-expanded":a,"aria-controls":`accordion-${i}`,children:[e.label,e.description?(0,u.jsx)(Ho,{children:e.description}):null]}),(0,u.jsx)(Wo,{onClick:c,children:(0,u.jsx)(Qn,{width:`1em`,height:`1em`,rotate:a?0:180})})]}),(0,u.jsx)(Jo,{"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)(Ko,{children:(0,u.jsx)(qo,{"data-max-height":!!d,"data-full":e.fullWidth,style:{maxHeight:d||void 0},children:e.children})})})]})});function ts(e){let{getItemProps:t,onKeyDown:n}=$o(e.items.length,e.singleMode);return(0,u.jsx)(Bo,{onKeyDown:n,children:e.items.map((n,r)=>(0,u.jsx)(es,{overflow:e.overflow,maxHeight:e.maxHeight,...n,...t(r),children:n.children},r))})}function ns(){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 rs=h.default.div`
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`
603
603
  padding: 0.3em;
604
604
 
605
605
  display: flex;
@@ -621,12 +621,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
621
621
  position: sticky;
622
622
  bottom: 0;
623
623
  }
624
- `;function is(e){let t=(0,p.useManifest)(),n=(0,p.useVault)(),r=ti(),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)(zo,{title:`Export manifest`,close:r.centerPanel.popStack,children:(0,u.jsx)(`div`,{style:{flex:1,overflowY:`auto`},children:(0,u.jsx)(ts,{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:()=>Pt(i,`manifest.json`),children:(0,u.jsx)(ns,{})}),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)(rs,{"data-sticky":`true`,children:[(0,u.jsx)(H,{onClick:()=>Ft(i),children:`Copy to clipboard`}),(0,u.jsx)(H,{onClick:()=>Pt(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:()=>Pt(a,`manifest.json`),children:(0,u.jsx)(ns,{})}),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)(rs,{"data-sticky":`true`,children:[(0,u.jsx)(H,{onClick:()=>Ft(a),children:`Copy to clipboard`}),(0,u.jsx)(H,{onClick:()=>Pt(a,`manifest.json`),children:`Download`})]})]})}]})})})}function as({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 os=(0,T.default)(),ss=(0,l.createContext)(os);function cs({children:e,emitter:t}){return(0,u.jsx)(ss.Provider,{value:t,children:e})}function ls(){return(0,l.useContext)(ss)}function us(e,t,n=[]){let r=(0,l.useContext)(ss);(0,l.useEffect)(()=>{let n=e=>{t(e)};return r.on(e,n),()=>{r.off(e,n)}},[r,e,...n])}function ds(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 fs(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 ps(){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 ms=h.default.div`
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`
625
625
  position: relative;
626
626
  width: 1px;
627
627
  background: rgba(0, 0, 0, 0.2);
628
628
  z-index: 50;
629
- `,hs=(0,h.default)(vr)`
629
+ `,Cs=(0,h.default)(Er)`
630
630
  transition:
631
631
  opacity 300ms,
632
632
  transform 300ms;
@@ -638,7 +638,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
638
638
  &:focus {
639
639
  outline: 2px solid salmon;
640
640
  }
641
- `;(0,h.default)(hs)`
641
+ `;(0,h.default)(Cs)`
642
642
  background: #fff;
643
643
  width: 30px;
644
644
  height: 30px;
@@ -652,7 +652,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
652
652
  svg {
653
653
  fill: #9999;
654
654
  }
655
- `;const gs=(0,h.default)(hs)`
655
+ `;const ws=(0,h.default)(Cs)`
656
656
  position: relative;
657
657
  display: flex;
658
658
  opacity: 1;
@@ -679,7 +679,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
679
679
  svg {
680
680
  font-size: 1.5em;
681
681
  }
682
- `,_s=h.default.div`
682
+ `,Ts=h.default.div`
683
683
  background: rgba(0, 0, 0, 0);
684
684
  position: absolute;
685
685
  width: 16px;
@@ -702,12 +702,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
702
702
  &:hover {
703
703
  transform: scaleX(100%);
704
704
  background: rgba(0, 0, 0, 0.1);
705
- ${hs} {
705
+ ${Cs} {
706
706
  transform: scaleX(100%);
707
707
  opacity: 1;
708
708
  }
709
709
  }
710
- `,vs=h.default.div`
710
+ `,Es=h.default.div`
711
711
  background: rgba(0, 0, 0, 0);
712
712
  position: absolute;
713
713
  pointer-events: none;
@@ -716,7 +716,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
716
716
  top: 0;
717
717
  bottom: 0;
718
718
  z-index: 51; // This will always be quite high.
719
- `,ys=(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)(ms,{onClick:()=>n.open(),children:[(0,u.jsx)(vs,{$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:gs,$dir:e,onClick:e=>n.open(),children:(0,u.jsx)(Qn,{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)(_s,{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)(Zn,{})})}),(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 bs(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 xs={};function Ss(){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{"data-header":`true`,className:xs.ghostLoadingBlock}),(0,u.jsxs)(`div`,{className:xs.ghostBlockList,children:[(0,u.jsx)(`div`,{className:xs.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:xs.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:xs.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:xs.ghostLoadingBlock})]})]})}function Cs(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 ws(e,t,n,r){return Math.sqrt(Math.abs(n-e)**2+Math.abs(r-t)**2)}function Ts(e,t,n,r){return n||(r?r/e:t)}function Es(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:`${Na({initial:t.widthA,fallback:320,options:{minWidth:t.minWidthPx,maxWidth:t.maxWidthPx}})}px`}),{loading:_=!1}=t;return Cs(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)},[_]),Cs({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=Ts(r,.8,t.maxWidthPct,t.maxWidthPx)*r,s=Ts(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},[_]),Cs(n,`mousemove`,e=>{if(!d.current&&f.current&&ws(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=Ts(a,.8,t.maxWidthPct,t.maxWidthPx),u=Ts(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)`},Ds=h.default.div`
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`
720
720
  display: flex;
721
721
  flex: 1 1 0;
722
722
  min-height: 0;
@@ -730,7 +730,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
730
730
  ${J} {
731
731
  background: ${Y.darkApp};
732
732
  }
733
- `,Os=h.default.div`
733
+ `,Is=h.default.div`
734
734
  flex: 1 1 0;
735
735
  min-width: 0;
736
736
  min-height: 0;
@@ -846,12 +846,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
846
846
  background: ${Y.darkHover} !important;
847
847
  color: #fff !important;
848
848
  }
849
- `,ks=h.default.div`
849
+ `,Ls=h.default.div`
850
850
  display: flex;
851
851
  flex: 1;
852
852
  justify-content: center;
853
853
  align-items: center;
854
- `,As=h.default.div`
854
+ `,Rs=h.default.div`
855
855
  position: absolute;
856
856
  top: 3rem;
857
857
  z-index: 40;
@@ -881,7 +881,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
881
881
  `:h.css`
882
882
  right: 1rem;
883
883
  `}
884
- `,js=h.default.button`
884
+ `,zs=h.default.button`
885
885
  width: 2.35rem;
886
886
  height: 2.35rem;
887
887
  border: 0;
@@ -936,16 +936,16 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
936
936
  width: 1.25em;
937
937
  height: 1.25em;
938
938
  }
939
- `,Ms=h.default.div`
939
+ `,Bs=h.default.div`
940
940
  display: flex;
941
941
  flex-direction: column;
942
942
  gap: 0.25rem;
943
- `,Ns=h.default.div`
943
+ `,Vs=h.default.div`
944
944
  width: 100%;
945
945
  height: 1px;
946
946
  margin: 0.25rem 0;
947
947
  background: rgba(15, 23, 42, 0.14);
948
- `,Ps=h.default.aside`
948
+ `,Hs=h.default.aside`
949
949
  position: absolute;
950
950
  top: 3rem;
951
951
  bottom: 1rem;
@@ -1000,7 +1000,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1000
1000
  box-shadow: 0 20px 50px rgba(0, 0, 0, 0.42);
1001
1001
  }
1002
1002
 
1003
- ${J} ${Ga} {
1003
+ ${J} ${$a} {
1004
1004
  background: ${Y.darkPanelHeader} !important;
1005
1005
  border-color: ${Y.darkBorder} !important;
1006
1006
  color: ${Y.darkText} !important;
@@ -1230,13 +1230,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1230
1230
  min-width: 0;
1231
1231
  transform: translateY(${e=>e.$open?`0`:`0.75rem`});
1232
1232
  }
1233
- `,Fs=h.default.div`
1233
+ `,Us=h.default.div`
1234
1234
  display: flex;
1235
1235
  flex: 1;
1236
1236
  min-width: 0;
1237
1237
  height: 100%;
1238
1238
  overflow: hidden;
1239
- `,Is=h.default.div`
1239
+ `,Ws=h.default.div`
1240
1240
  display: flex;
1241
1241
  flex-direction: column;
1242
1242
  flex: 1;
@@ -1245,16 +1245,16 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1245
1245
  max-width: 100%;
1246
1246
  min-width: 0;
1247
1247
  overflow: hidden;
1248
- `,Ls=h.default.header`
1248
+ `,Gs=h.default.header`
1249
1249
  //box-shadow: 0 3px 2px 0 rgba(0, 0, 0, 0.04), 0 1px 0 0 rgba(0, 0, 0, 0.17);
1250
1250
  z-index: 200;
1251
- `,Rs=h.default.div`
1251
+ `,Ks=h.default.div`
1252
1252
  background: #fff;
1253
- `,zs=h.default.div`
1253
+ `,qs=h.default.div`
1254
1254
  display: flex;
1255
1255
  flex: 1 1 0;
1256
1256
  min-height: 0;
1257
- `,Bs=h.default.div`
1257
+ `,Js=h.default.div`
1258
1258
  background: #fff;
1259
1259
  display: flex;
1260
1260
  flex-direction: column;
@@ -1273,7 +1273,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1273
1273
  `;case`unmounted`:case`exited`:return h.css`
1274
1274
  max-width: 0;
1275
1275
  `}}}
1276
- `,Vs=h.default.div`
1276
+ `,Ys=h.default.div`
1277
1277
  flex: 1 1 0;
1278
1278
  background: #e3e7f0;
1279
1279
  // background: #efefef;
@@ -1292,7 +1292,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1292
1292
  > * {
1293
1293
  min-width: 0;
1294
1294
  }
1295
- `,Hs=h.default.div`
1295
+ `,Xs=h.default.div`
1296
1296
  background: #fff;
1297
1297
  display: flex;
1298
1298
  flex-direction: column;
@@ -1308,7 +1308,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1308
1308
  `;case`unmounted`:case`exited`:return h.css`
1309
1309
  max-width: 0;
1310
1310
  `}}}
1311
- `,Us=h.default.div`
1311
+ `,Zs=h.default.div`
1312
1312
  display: flex;
1313
1313
  flex: 1;
1314
1314
  height: 100%;
@@ -1337,7 +1337,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1337
1337
  flex-direction: row;
1338
1338
  }
1339
1339
  `}}}
1340
- `,Ws=h.default.div`
1340
+ `,Qs=h.default.div`
1341
1341
  background: #fff;
1342
1342
  border-top: 1px solid #e3e7f0;
1343
1343
  border-right: 1px solid #e3e7f0;
@@ -1347,7 +1347,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1347
1347
  /* width: 3.35em;
1348
1348
  padding: 0.3em;
1349
1349
  gap: 0.3em; */
1350
- `,Gs=h.default.button`
1350
+ `,$s=h.default.button`
1351
1351
  cursor: pointer;
1352
1352
  aspect-ratio: 1;
1353
1353
  width: 3em;
@@ -1389,17 +1389,17 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1389
1389
  flex: 1;
1390
1390
  min-width: 0;
1391
1391
  overflow: hidden;
1392
- `;function Ks(e){let t=e?.resource;return t?.source?.type||t?.type||null}const qs=(0,l.memo)(function(e){let t=z(),n=Ln(),r=B(),i=ii(),{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)]),us(`layout.edit`,e=>{Ks(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=`${Na({options:E?.options,fallback:340})}px`,ae=`${Na({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)(As,{$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)(js,{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)(As,{$side:`left`,"aria-label":`Main and left panels`,children:[S.length?(0,u.jsx)(Ms,{"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)(js,{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)(Ns,{}):null,x.length?(0,u.jsx)(Ms,{"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)(js,{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:Pa(k.render(f.modal.state||k.defaultState||{},{...T,current:v.modal,vault:o},n))}),le=()=>(0,u.jsxs)(Us,{$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:ja,children:y?(0,u.jsx)(ks,{children:(0,u.jsx)(bs,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):f.centerPanel.open&&O?Pa(O.render(f.centerPanel.state||O.defaultState||{},{...T,current:v.centerPanel,vault:o},n)):null})})]}),ue=()=>(0,u.jsx)(Fs,{children:y?(0,u.jsx)(Z,{children:(0,u.jsx)(Ss,{})}):(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)(Ya,{isLeft:!0,panel:E,state:f.leftPanel,actions:v.leftPanel}):null})]})}),de=()=>(0,u.jsx)(Fs,{children:y?(0,u.jsx)(Z,{children:(0,u.jsx)(Ss,{})}):(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)(Ya,{panel:D,state:f.rightPanel,actions:v.rightPanel,pinActions:v.pinnedRightPanel,available:C}):null,A?(0,u.jsx)(Ya,{panel:A,state:f.pinnedRightPanel,actions:v.pinnedRightPanel,close:v.rightPanel.close}):null]})]})});return(0,u.jsx)($r.Provider,{value:`focused`,children:(0,u.jsxs)(Is,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,"data-layout-mode":`focused`,style:oe,children:[e.hideHeader?null:(0,u.jsxs)(Ls,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(Ds,{children:[(0,u.jsx)(Os,{onClick:()=>{re&&v.leftPanel.close()},children:le()}),se(),F(`right`,C,f.rightPanel.current),x.length>0?(0,u.jsx)(Ps,{$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)(Ps,{$side:`right`,$open:f.rightPanel.open,style:{width:ae,minWidth:D?.options?.minWidth,maxWidth:D?.options?.maxWidth},children:de()}):null]}),(0,u.jsx)(Rs,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ie}),(0,u.jsx)(qi,{}),(0,u.jsx)(Ji,{}),(0,u.jsx)(u.Fragment,{children:ce()})]})})}),Js=h.default.div`
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`
1393
1393
  position: relative;
1394
1394
  display: flex;
1395
1395
  flex: 1;
1396
1396
  overflow: hidden;
1397
1397
  flex-direction: column;
1398
- `,Ys=h.default.div`
1398
+ `,rc=h.default.div`
1399
1399
  flex: 1;
1400
1400
  position: relative;
1401
1401
  z-index: 7;
1402
- `,Xs=h.default.div`
1402
+ `,ic=h.default.div`
1403
1403
  display: flex;
1404
1404
  justify-content: space-around;
1405
1405
  width: 100%;
@@ -1407,7 +1407,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1407
1407
  border-top: 1px solid #cbcbcb;
1408
1408
  padding: 0.5em;
1409
1409
  height: 3.4rem;
1410
- `,Zs=h.default.button`
1410
+ `,ac=h.default.button`
1411
1411
  //background: red;
1412
1412
  padding: 0.5em 1em;
1413
1413
  width: 32%;
@@ -1415,7 +1415,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1415
1415
  border-radius: 5px;
1416
1416
  border: none;
1417
1417
  background: #ffffff;
1418
- `,Qs=h.default.button`
1418
+ `,oc=h.default.button`
1419
1419
  padding: 0.5em 1em;
1420
1420
  width: 32%;
1421
1421
 
@@ -1424,12 +1424,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1424
1424
  background: #5e59c2;
1425
1425
  border: 1px solid rgba(0, 0, 0, 0.21);
1426
1426
  color: #ffffff;
1427
- `,$s=h.default.div`
1427
+ `,sc=h.default.div`
1428
1428
  position: relative;
1429
1429
  width: 32%;
1430
1430
  margin: 0 0.75em;
1431
1431
  z-index: 9;
1432
- `,ec=h.default.button`
1432
+ `,cc=h.default.button`
1433
1433
  padding: 0.4em 1em 0.65em;
1434
1434
  position: absolute;
1435
1435
  width: 100%;
@@ -1448,7 +1448,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1448
1448
  margin: auto;
1449
1449
  font-size: 1.8em;
1450
1450
  }
1451
- `,tc=h.default.div`
1451
+ `,lc=h.default.div`
1452
1452
  background: #fff;
1453
1453
  display: flex;
1454
1454
  position: absolute;
@@ -1472,13 +1472,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1472
1472
  transform: translateY(0);
1473
1473
  `}
1474
1474
 
1475
- ${Ga} {
1475
+ ${$a} {
1476
1476
  box-shadow: none;
1477
1477
  padding-left: 0.5em;
1478
1478
  padding-right: 0.5em;
1479
1479
  font-size: 1.1em;
1480
1480
  }
1481
- `,nc=h.default.div`
1481
+ `,uc=h.default.div`
1482
1482
  position: absolute;
1483
1483
  transform: translateX(-100%);
1484
1484
  background: #fff;
@@ -1491,7 +1491,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1491
1491
  ${e=>e.$open&&h.css`
1492
1492
  transform: translateX(0);
1493
1493
  `}
1494
- `,rc=h.default.div`
1494
+ `,dc=h.default.div`
1495
1495
  background: rgba(0, 0, 0, 0.4);
1496
1496
  pointer-events: none;
1497
1497
  position: absolute;
@@ -1507,6 +1507,6 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
1507
1507
  pointer-events: visible;
1508
1508
  opacity: 1;
1509
1509
  `}
1510
- `,ic=(0,l.memo)(function(e){if(e.layoutMode===`focused`)return(0,u.jsx)(qs,{...e});let t=z(),n=Ln(),r=B(),i=ii(),{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]=ds([`(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=Es(`left-panel/${O?.id}`,{left:!0,marginLeft:60,minWidthPx:O?.options?.minWidth||200,maxWidthPx:O?.options?.maxWidth||720,loading:m}),P=Es(`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:Na({options:O?.options,fallback:320})}),F=P.widthB===`auto`?void 0:()=>P.setWidths({widthA:`auto`,widthB:Na({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)(Us,{$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)(Ss,{})}):(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)(Ya,{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:Pa(j.render(h.modal.state||j.defaultState||{},{...E,current:b.modal,vault:o},n))}),le=()=>(0,u.jsxs)(Us,{$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:ja,children:re?(0,u.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,u.jsx)(bs,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):h.centerPanel.open&&A?Pa(A.render(h.centerPanel.state||A.defaultState||{},{...E,current:b.centerPanel,vault:o},n)):null})})]}),ue=t=>(0,u.jsx)(Us,{$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)(Ss,{})}):(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)(Ya,{panel:k,state:h.rightPanel,actions:b.rightPanel,pinActions:b.pinnedRightPanel,available:w}):null,M?(0,u.jsx)(Ya,{panel:M,state:h.pinnedRightPanel,actions:b.pinnedRightPanel,close:b.rightPanel.close}):null]}):null})]})});return ne?(0,u.jsxs)(Is,{children:[e.hideHeader?null:(0,u.jsxs)(Ls,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsx)(zs,{children:(0,u.jsxs)(Js,{children:[(0,u.jsx)(Ys,{children:le()}),(0,u.jsxs)(Xs,{children:[S.length>0?(0,u.jsx)(Zs,{onClick:b.leftPanel.toggle,children:O?.label}):null,w.length>0?(0,u.jsx)($s,{children:(0,u.jsxs)(ec,{onClick:b.rightPanel.toggle,children:[(0,u.jsx)(Qn,{rotate:180}),k?.label]})}):null,(0,u.jsx)(Qs,{children:`Preview`})]}),w.length>0?(0,u.jsx)(tc,{$open:h.rightPanel.open,children:ue()}):null,S.length>0?(0,u.jsx)(nc,{$open:h.leftPanel.open,children:se()}):null,S.length>0||w.length>0?(0,u.jsx)(rc,{$open:h.leftPanel.open||h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.close()}}):null]})})]}):(0,u.jsxs)(Is,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,u.jsxs)(Ls,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(zs,{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)(Bs,{ref:d,$width:N.widthB,$state:e,$motion:!0,children:se(e)}),(0,u.jsx)(ys,{ref:N.refs.resizer,reset:oe,dir:`left`,transition:e,open:h.leftPanel.open||e!==`exited`,actions:b.leftPanel})]})}):null,(0,u.jsx)(Vs,{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)(ys,{ref:P.refs.resizer,dir:`right`,reset:F,open:h.rightPanel.open,actions:b.rightPanel}),(0,u.jsx)(Hs,{ref:f,$width:P.widthB,$state:e,$motion:!0,children:ue(e)})]})}):null]}),(0,u.jsx)(Rs,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ie}),(0,u.jsx)(qi,{}),(0,u.jsx)(Ji,{}),(0,u.jsx)(u.Fragment,{children:ce()})]})});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 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 oc(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 sc(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&&oc(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&&oc(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(Ma(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 cc=(0,_.produce)((e,t)=>{switch(t.panel){case`centerPanel`:sc(e.centerPanel,t);break;case`leftPanel`:sc(e.leftPanel,t);break;case`rightPanel`:sc(e.rightPanel,t);break;case`modal`:sc(e.modal,t);break;case`pinnedRightPanel`:sc(e.pinnedRightPanel,t);break}});function lc(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function uc(){return{leftPanel:lc(),centerPanel:lc(),rightPanel:lc(),modal:lc(),pinnedRightPanel:{...lc(),pinnable:!0,pinned:!1}}}function dc({className:e,variant:t=`light`}){let n=(0,p.useManifest)(),r=(0,p.useVault)(),{edit:i}=ti(),a=Br(),o=Vr(),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=fc(a)||o.map(fc).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:gc(`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)(pc,{ariaLabel:`Previous canvas`,disabled:!y,onClick:()=>y&&v(y.id),dark:S,children:(0,u.jsx)(mc,{reverse:c,vertical:d})}),(0,u.jsxs)(`label`,{htmlFor:`manifest-pagination-page-select`,"aria-label":`Page ${g} of ${s.length}`,className:gc(`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)(hc,{className:gc(`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)(pc,{ariaLabel:`Next canvas`,disabled:!x,onClick:()=>x&&v(x.id),dark:S,children:(0,u.jsx)(mc,{reverse:!c,vertical:d})})]})}function fc(e){let t=e?.resource?.source;return t?.type===`Canvas`?t.id:null}function pc({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:gc(`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 mc({reverse:e,vertical:t}){return(0,u.jsx)(e?c.ArrowRightIcon:c.BackIcon,{"aria-hidden":!0,className:gc(`block`,t&&`rotate-90`)})}function hc(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 gc(...e){return e.filter(Boolean).join(` `)}const _c=new WeakMap;function vc(e,t){let n={port:t,lastActionId:`@genesis`},r=yc(e);function i(e){t.postMessage(typeof e==`string`?e:JSON.stringify(e))}function a(){i({_id:It(),_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=xc(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,_c.delete(e)),t.close()}}function yc(e){let t=_c.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)bc(t,e);return t}),a={originalDispatch:n,patchedDispatch:i,targets:r};return e.dispatch=i,_c.set(e,a),a}function bc(e,t){let n={_id:It(),_type:`vault-action`,_lastActionId:e.lastActionId,action:t};e.lastActionId=n._id,e.port.postMessage(JSON.stringify(n))}function xc(e){try{if(typeof e==`string`)return JSON.parse(e);if(typeof e==`object`&&e)return e}catch{return null}return null}const Sc=(0,l.createContext)({resource:null});function Cc(){return(0,l.useContext)(Sc)}function wc(){let e=(0,p.useVault)(),{resource:t}=Cc();M(t,`Nothing selected`);let{id:n,type:r}=t;return(0,p.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function Tc(){let{resource:e}=Cc();return e}function Ec({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,u.jsx)(Sc.Provider,{value:(0,l.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}var Dc=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 Oc(e,t){return typeof e==`string`?{id:e,state:t}:e}const kc=(0,l.memo)(function(e){let t=z(),n=ls(),r=t.layout,[i,a]=(0,l.useReducer)(cc,void 0,uc),o={centerPanel:ac(`centerPanel`,a),leftPanel:ac(`leftPanel`,a),rightPanel:ac(`rightPanel`,a),pinnedRightPanel:ac(`pinnedRightPanel`,a),modal:ac(`modal`,a),editingStack:zr()};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}=Oc(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}=Oc(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}=Oc(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}=Oc(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function h(e,t){let{id:r}=Oc(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)(Zr.Provider,{value:(0,l.useMemo)(()=>({...o,...v}),[r]),children:(0,u.jsx)(Qr.Provider,{value:i,children:e.children})})}),Ac=[{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`}],jc=new O.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function Mc({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o,backgroundActionPersistence:s}){let c=In(),d=F(),f=(0,l.useMemo)(()=>P(d,{previews:e?.previews||(d.previews?.length?d.previews:Ac)},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)(Dc,{children:(0,u.jsx)(p.ImageServiceLoaderContext.Provider,{value:jc,children:(0,u.jsx)(rr,{resource:a,children:(0,u.jsx)(no,{children:(0,u.jsx)(h.ThemeProvider,{theme:r||po,children:(0,u.jsxs)(ce,{config:f,saveConfig:t,children:[(0,u.jsx)(Mn,{config:f}),(0,u.jsx)(Yr,{children:(0,u.jsx)(kc,{children:(0,u.jsx)(Ot,{persistence:s,persistenceKey:m,children:(0,u.jsx)(No,{children:(0,u.jsx)(Ri,{children:(0,u.jsx)(hr,{previews:i||[],configs:f.previews,children:(0,u.jsx)(p.AtlasStoreProvider,{children:n})})})})})})})]})})})})})})}const Nc=new Set([`Collection`,`Manifest`,`Canvas`,`Range`,`AnnotationPage`,`Annotation`,`ContentResource`,`Agent`]),Pc={satisfied:0,missing:0,invalid:0,disallowed:0,"not-applicable":0},Fc=new Set([`label`,`summary`,`language`,`navDate`,`provider`,`requiredStatement`,`rights`,`thumbnail`]);function Ic(e){return e?Array.isArray(e)?e.filter(Boolean):e.split(`.`).filter(Boolean):[]}function Lc(e,t){let n=Ic(e),r=Ic(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function Rc(e,t){let n=e;for(let e of Ic(t)){if(n==null)return;n=n[e]}return n}function zc(e,t,n){let r=Ic(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 Bc(e){return Array.isArray(e)?e.map(Bc):e&&typeof e==`object`?Object.keys(e).sort().reduce((t,n)=>(t[n]=Bc(e[n]),t),{}):e}function Vc(e,t){return JSON.stringify(Bc(e))===JSON.stringify(Bc(t))}function Hc(e,t,n,r){let i=Ic(n);for(let n of e||[])for(let e of n.terminology?.properties||[])if(!(e.entityType&&e.entityType!==t)&&Lc(e.path,i))return e.label;return r||hl(i)}function Uc(e,t,n){let r=Ic(n),i=[],a,o,s=!1,c=!1;if(!t||!Nc.has(t.type))return{entityType:t?.type,path:r,label:Hc(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&&Lc(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:Hc(e,t.type,r),disallowed:s,required:c,fixedValue:a,fixedValueRule:o,rules:i}}function Wc(e,t,n){let r=e||[],i=Gc(t,n),a=[];for(let e of r)for(let[n,r]of(e.rules||[]).entries())a.push(...Kc(e,r,n,i,t));return{specifications:r,results:a,counts:el(a)}}function Gc(e,t){let n=[],r=new Set;function i(t){let a=nl(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),Nc.has(o.type)&&n.push({ref:{id:o.id,type:o.type},resource:o});for(let e of rl(o))i(e)}}return i(t),n}function Kc(e,t,n,r,i){switch(t.type){case`disallow-property`:case`require-non-empty`:case`fixed-value`:return qc(e,t,n,r);case`iiif:canvas-with-image-service`:return[Jc(e,t,n,r,i)];case`iiif:thumbnail-from-body-service`:return Yc(e,t,n,r,i);case`iiif:valid-rights`:return Xc(e,t,n,r);case`iiif:required-statement`:return Zc(e,t,n,r);case`iiif:metadata-template`:return Qc(e,t,n,r);default:return[]}}function qc(e,t,n,r){let i=r.filter(e=>e.ref.type===t.entityType),a=Hc(e?[e]:[],t.entityType,t.path);return i.length?i.map(({ref:r,resource:i})=>{let o=Rc(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:$c(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:$c(r,t.path)});let c=Vc(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:$c(r,t.path)})}):[$(e,t,n,{status:`not-applicable`,displayLabel:a,message:`No ${t.entityType} resources were found for ${a}.`,path:t.path})]}function Jc(e,t,n,r,i){let a=r.filter(e=>e.ref.type===`Canvas`),o=il(t),s=a.find(({resource:e})=>al(ol(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?$c(s.ref,[`items`]):void 0})}function Yc(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=>ol(e.resource,i)):ol(s,i),l=sl(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:Hc([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:$c(o,[`thumbnail`])})}):[$(e,t,n,{status:`not-applicable`,displayLabel:`Thumbnail`,message:`No ${a} resources were found for thumbnail checks.`})]}function Xc(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(dl).includes(dl(a));return $(e,t,n,{target:r,path:[`rights`],status:c?`satisfied`:!s&&t.required!==!1?`missing`:`invalid`,displayLabel:Hc([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:$c(r,[`rights`])})})}function Zc(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?fl(a?.label,t.label):Q(a?.label),s=t.value||t.valueRequired!==!1,c=t.value?fl(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:Hc([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:$c(r,[`requiredStatement`])})})}function Qc(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=>fl(e?.label,i.label)),l=i.value?fl(c?.value,i.value):i.valueRequired?Q(c?.value):!0,u=c&&l?`satisfied`:c&&i.value?`invalid`:`missing`,d=ml(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:$c(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 $c(e,t){let n=t[0];return{resource:e,propertyPath:t,selectedTab:n===`metadata`?`@manifest-editor/metadata`:n&&Fc.has(n)?`@manifest-editor/descriptive-properties`:void 0}}function el(e){let t={...Pc};for(let n of e)t[n.status]+=1;return t}function tl(e,t){let n=nl(t);if(!n)return t;try{return e.get(n,{skipSelfReturn:!1})||t}catch{try{return e.get(n)||t}catch{return t}}}function nl(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 rl(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 il(e){return[...e.serviceIds||[],...e.serviceId?[e.serviceId]:[]].filter(Boolean)}function al(e,t){let n=new Set(e.filter(Boolean));return t.length?t.some(e=>n.has(e)):n.size>0}function ol(e,t){let n=ul(t,e?.items),r=[];for(let e of n){let n=ul(t,e?.items);for(let e of n)if((Array.isArray(e?.motivation)?e.motivation:[e?.motivation]).includes(`painting`))for(let n of cl(e?.body,t))r.push(...ll(n))}return Array.from(new Set(r))}function sl(e,t,n){let r=ul(n,e?.thumbnail);if(!r.length||!t.length)return!1;for(let e of r){let n=ll(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 cl(e,t){let n=tl(t,e);return n?Array.isArray(n)?n.flatMap(e=>cl(e,t)):n.type===`SpecificResource`?cl(n.source,t):n.type===`Choice`?n.items?.flatMap(e=>cl(e,t))||[]:[n]:[]}function ll(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 ul(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 dl(e){return e.replace(/^https:/,`http:`).replace(/\/?$/,`/`)}function fl(e,t){return typeof t==`string`?pl(e).some(e=>e===t):Vc(e,t)}function pl(e){return e?typeof e==`string`?[e.trim()].filter(Boolean):Array.isArray(e)?e.flatMap(pl):typeof e==`object`?Object.values(e).flatMap(pl):[]:[]}function ml(e){return typeof e==`string`?e:pl(e)[0]||``}function hl(e){return(e[e.length-1]||`Property`).replace(/([A-Z])/g,` $1`).replace(/[-_]/g,` `).replace(/^./,e=>e.toUpperCase())}const gl=(0,l.createContext)([]);function _l({children:e,specifications:t}){let n=(0,l.useMemo)(()=>t||[],[t]);return(0,u.jsx)(gl.Provider,{value:n,children:e})}function vl(){return(0,l.useContext)(gl)}function yl(e){let t=B(),n=vl(),r=e||t;return(0,p.useVaultSelector)((e,t)=>Wc(n,t,r),[n,r.id,r.type])}function bl(){let e=vl();return(0,l.useMemo)(()=>({getLabel(t,n,r){return Hc(e,t,n,r)}}),[e])}function xl(e,t){let n=vl();return(0,l.useMemo)(()=>Uc(n,e,t),[n,e?.id,e?.type,JSON.stringify(t)])}const Sl={},Cl=(0,l.createContext)(`global`);function wl(){return(0,l.useContext)(Cl)}function Tl(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function El(e){let t=wl(),[,n]=(0,l.useReducer)(e=>e+1,0),r=(0,l.useMemo)(()=>(Sl[t]||(Sl[t]={}),Sl[t][e]||(Sl[t][e]={name:e,emitter:(0,T.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),Sl[t][e]),[t,e]);return Dl(r,`abort`,n),Dl(r,`error`,n),Dl(r,`complete`,n),Dl(r,`running`,n),r}function Dl(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 Ol=()=>void 0;function kl(e,t){let n=El(e);return Dl(n,`complete`,t||Ol),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=Tl();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 Al(e,t){let n=El(e);return Dl(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 jl({children:e}){return(0,u.jsx)(Cl.Provider,{value:(0,l.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function Ml(e){return!1}function Nl({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 Ml(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=la,exports.AppMenuProvider=pa,exports.AppProvider=zn,exports.AppReactContext=Pn,exports.AppResourceInstanceProvider=nr,exports.AppResourceProvider=rr,exports.AppStateReactContext=Fn,exports.AtlasStoreProvider=p.AtlasStoreProvider,exports.AtlasStoreReactContext=p.AtlasStoreReactContext,exports.BackgroundActionToasts=Ji,exports.BackgroundActionsMenu=ca,exports.BackgroundActionsMount=qi,exports.BackgroundActionsProvider=Ot,exports.BackgroundActionsReactContext=Dt,exports.BaseAnnotationCreator=mo,exports.BaseEditor=vo,exports.BaseEditorBackButton=ho,exports.BaseEditorCloseButton=go,exports.CANVAS_PROGRESS_META_NAMESPACE=le,exports.CANVAS_PROGRESS_STATUS_META_KEY=ue,exports.ConfigEditor=Ao,exports.ConfigProvider=ce,exports.ConfigReactContext=ae,exports.ContextMenuProvider=No,exports.ContextMenuReactContext=Mo,exports.CreatorInitialData=co,exports.EditingStack=Yr,exports.EditingStackContext=Lr,exports.EventEmitterProvider=cs,exports.ExportPanel=is,exports.FLAG_TAG=si,exports.HOMEPAGE_COLLECTION=eo,exports.HandleContainer=ms,exports.HandleControls=ys,exports.InlineEditingStack=Xr,exports.Layout=ic,exports.LayoutActionsReactContext=Zr,exports.LayoutModeReactContext=$r,exports.LayoutStateReactContext=Qr,exports.ManifestEditorCanvasProgressOverlay=ke,exports.ManifestEditorTagBadge=Ai,exports.ManifestEditorTagIcon=ki,exports.ManifestEditorTagOverlay=ji,exports.ManifestPaginationNavigation=dc,Object.defineProperty(exports,`MessagePortClientVault`,{enumerable:!0,get:function(){return k.MessagePortClientVault}}),exports.ModularPanel=Ya,exports.ModularPanelHeader=Ga,exports.ModulePanelButton=U,exports.MultiAppProvider=Un,exports.PanelError=ja,exports.PluginConfigBridge=Mn,exports.PluginGlobalConfigReactContext=bn,exports.PluginManager=Do,exports.PluginProvider=xn,exports.PluginReactContext=yn,exports.PreviewButton=Nr,exports.PreviewProvider=hr,exports.PreviewVaultBoundary=ro,exports.PreviewVaultContext=no,exports.PrimeAppReactContext=Nn,exports.ReactEmitterContext=ss,exports.ResourceEditingProvider=Ec,exports.ResourceEditingReactContext=Sc,exports.SaveConfigReactContext=oe,exports.ShellProvider=Mc,exports.SpecificationProvider=_l,exports.TAGS_META_KEY=oi,exports.TAGS_META_NAMESPACE=ai,exports.TaskBridge=jl,exports.ToastProvider=Ri,exports.UniversalCopyTarget=Nl,exports.addResourceTag=bi,exports.analyse=ya,exports.analyseJson=xa,exports.applyPlugins=_n,exports.baseCreator=fo,exports.baseEditor=yo,exports.clearCanvasProgressStatus=ve,exports.clearCanvasProgressStatuses=be,exports.collectSpecificationResources=Gc,exports.copyToClipboard=Ft,exports.createActionIdentity=Nt,exports.createBackgroundActionsStore=vt,exports.createDownload=Pt,exports.createIframeVaultBridge=vc,exports.createLocalForageBackgroundActionPersistence=Tt,exports.createManifestEditorCanvasProgressApi=xe,exports.createManifestEditorTagsApi=Ei,exports.createPluginRuntimeApi=dn,exports.createPluginStore=vn,exports.createPreviewVault=Xa,exports.createTrackingCanvasProgressApi=Se,exports.detectMedia=va,exports.disablePluginInConfig=qt,exports.editBasedOnResource=_o,exports.enablePluginAndDependenciesInConfig=fn,exports.enablePluginInConfig=Kt,exports.evaluateSpecifications=Wc,exports.extendApp=Rt,exports.filterSupportedPanels=W,exports.getAvailableBackgroundActionGroups=Re,exports.getBackgroundActionInstanceKey=Me,exports.getCanvasProgressStatus=he,exports.getCanvasProgressStatusFromState=ge,exports.getDefaultLayoutState=uc,exports.getDefaultPanelState=lc,exports.getEffectivePluginSettings=un,exports.getEmptyPluginState=Vt,exports.getEnabledPluginsForApp=an,exports.getFormat=wa,exports.getImageDimensions=Ta,exports.getManifestNomalized=Mt,exports.getPluginCompatibilityReason=tn,exports.getPluginDefaultSettings=ln,exports.getPluginSelectionSource=rn,exports.getPluginSettingsFromConfig=on,exports.getPropertyPolicy=Uc,exports.getResourceTag=xi,exports.getResourceTagGroups=Ci,exports.getResourceTags=_i,exports.getResourceTagsFromState=vi,exports.getSupportedPanelFallback=G,exports.getTerminologyLabel=Hc,exports.getValueAtPath=Rc,exports.hasMeaningfulValue=Q,exports.hasResourceTag=wi,exports.isMappedPlugin=Zt,exports.isPinnableState=Ma,exports.isPluginCompatible=en,exports.isPluginSelected=nn,exports.layoutReducer=cc,exports.mapApp=Lt,exports.mapPlugin=Xt,exports.mergeBackgroundActionDefinitions=Ne,exports.mergeConfig=P,exports.mergePartialConfig=N,exports.normaliseBackgroundActionError=Fe,exports.normaliseJsonValue=Bc,exports.normalisePlugin=Qt,exports.normalisePluginAppConfig=Wt,exports.normalisePluginAppsConfig=Gt,exports.normalisePlugins=$t,exports.normaliseSpecificationPath=Ic,exports.panelIds=K,exports.panelSizing=Na,exports.pluginAppConfigEquals=Yt,exports.polygonToBoundingBox=ha,exports.randomId=It,exports.removeResourceTag=Si,exports.renderHelper=Pa,exports.resetPluginInConfig=Jt,exports.resetPluginSettingsInConfig=cn,exports.runBackgroundAction=xt,exports.setCanvasProgressStatus=_e,exports.setCanvasProgressStatuses=ye,exports.setPluginSettingsInConfig=sn,exports.setResourceTags=yi,exports.setValueAtPath=zc,exports.sortBackgroundActionDefinitions=Pe,exports.specificationJsonEquals=Vc,exports.specificationPathEquals=Lc,exports.toggleResourceTag=Ti,exports.useAnnotationCreatorState=as,exports.useAnnotationPageEditor=Kr,exports.useApp=z,exports.useAppInstance=In,exports.useAppMenu=da,exports.useAppMenuItem=fa,exports.useAppResource=B,exports.useAppResourceInstance=tr,exports.useAppState=Ln,exports.useApps=Vn,exports.useAtlasStore=ma,exports.useAvailableBackgroundActions=Ki,exports.useAvailableLayouts=ri,exports.useBackgroundActionHistory=jt,exports.useBackgroundActionInstance=At,exports.useBackgroundActionsStore=R,exports.useBackgroundActionsStoreApi=kt,exports.useCanvasProgressActions=we,exports.useCanvasProgressStatus=Ce,exports.useCollectionEditor=Wr,exports.useConfig=F,exports.useCreatingResource=Hr,exports.useCreator=io,exports.useCustomContextMenu=Lo,exports.useDecayState=bo,exports.useEditingContext=Cc,exports.useEditingResource=Br,exports.useEditingResourceStack=Vr,exports.useEditingStack=zr,exports.useEditor=qr,exports.useEmitter=ls,exports.useEnabledPlugins=En,exports.useEvent=us,exports.useGenericEditor=Gr,exports.useHighlightedImageResource=Ea,exports.useHoverHighlightImageResource=Oa,exports.useInitialData=so,exports.useInlineCreator=ao,exports.useLayoutActions=ti,exports.useLayoutMode=ni,exports.useLayoutProvider=ii,exports.useLayoutState=ei,exports.useLocalStorage=c.useLocalStorage,exports.useManifestEditor=Ur,exports.useMatchMedia=ds,exports.useOptionalLocalStorage=c.useOptionalLocalStorage,exports.useOptionalPluginStoreApi=Sn,exports.useOptionalResource=Tc,exports.usePanelActions=ac,exports.usePluginActions=Dn,exports.usePluginConfigApi=An,exports.usePluginRuntimeApi=On,exports.usePluginSettings=kn,exports.usePluginStoreApi=Cn,exports.usePlugins=Tn,exports.usePreviewContext=_r,exports.usePreviewHistory=to,exports.usePreviewVault=Za,exports.usePreviews=gr,exports.useResolvedPluginApp=jn,exports.useResource=wc,exports.useResourceContextMenuItems=Fo,exports.useResourceTagActions=Oi,exports.useResourceTags=Di,exports.useSaveConfig=se,exports.useSaveVault=fs,exports.useSetCustomTitle=Ua,exports.useSpecificationPropertyPolicy=xl,exports.useSpecificationReport=yl,exports.useSpecificationTerminology=bl,exports.useSpecifications=vl,exports.useSvgTools=ps,exports.useTask=El,exports.useTaskDispatch=kl,exports.useTaskEvent=Dl,exports.useTaskRunner=Al,exports.useTemporaryHighlight=Da,exports.useToasts=zi;
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;
1512
1512
  //# sourceMappingURL=index.cjs.map