@manifest-editor/shell 2.0.3-next.0.2c09e87 → 2.0.3-next.0.3782be7

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(`styled-components`);d=s(d);let f=require(`react-accessible-dropdown-menu-hook`);f=s(f);let p=require(`react-iiif-vault`),m=require(`immer`),h=require(`@iiif/helpers`),g=require(`@iiif/helpers/vault`);g=s(g);let _=require(`@iiif/parser`),v=require(`@manifest-editor/creator-api`),y=require(`zustand`),b=require(`react-error-boundary`),x=require(`@iiif/helpers/vault/actions`),S=require(`@iiif/helpers/vault/utility`),C=require(`@manifest-editor/editor-api`),w=require(`mitt`);w=s(w);let ee=require(`tiny-use-debounce`),te=require(`react-transition-group`),T=require(`shallowequal`);T=s(T);let ne=require(`@atlas-viewer/iiif-image-api`);var E=process.env.NODE_ENV===`production`,D=`Invariant failed`;function O(e,t){if(!e){if(E)throw Error(D);var n=typeof t==`function`?t():t,r=n?`${D}: ${n}`:D;throw Error(r)}}const k={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:[],export:{baseIdentifier:null,version:3}},A=(0,l.createContext)(k),j=(0,l.createContext)(()=>{});function M(){return(0,l.useContext)(A)}function re(){return(0,l.useContext)(j)}function N({children:e,config:t,saveConfig:n}){let[r,i]=(0,l.useState)(null),a=(0,l.useMemo)(()=>({...k,...t||{},...r||{},editorFeatureFlags:{...k.editorFeatureFlags,...t?.editorFeatureFlags||{},...r?.editorFeatureFlags}}),[t,r]),o=(0,l.useCallback)(e=>{i(e),n&&n(e)},[t]);return(0,u.jsx)(j.Provider,{value:o,children:(0,u.jsx)(A.Provider,{value:a,children:e})})}const ie=(0,l.createContext)(null),ae=(0,l.createContext)(null),oe=(0,l.createContext)({state:null,setState:()=>{}});function se(){let e=(0,l.useContext)(ae);return O(e,`Hook useAppInstance must be used inside <AppProvider />`),e}function P(){let e=(0,l.useContext)(ie);return O(e,`Hook useApp must be used inside <AppProvider />`),e}function ce(){return(0,l.useContext)(oe)}function le(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)(oe.Provider,{value:a,children:e.children})}function ue({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]);return(0,u.jsx)(N,{config:r.config||{},children:(0,u.jsx)(ie.Provider,{value:r,children:(0,u.jsx)(ae.Provider,{value:o,children:(0,u.jsx)(le,{instanceId:o.instanceId,appId:o.appId,args:o.args,initialState:s,children:i})})})})}const de=(0,l.createContext)(null);function fe(){let e=(0,l.useContext)(de);return O(e,`Hook useApps must be used inside <MultiAppProvider />`),e}function pe(e,t=!1){let[n,r]=(0,c.useOptionalLocalStorage)(`SelectedApplication`,e||{id:`splash`},!t);return[n,r]}function me({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]=pe(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)(ue,{appId:d.id,definition:h,instanceId:d.id+r,args:d.args,children:(0,u.jsx)(de.Provider,{value:m,children:i})})}const he=d.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
- `,ge=d.default.div`
6
+ `,$n=h.default.div`
7
7
  display: flex;
8
8
  padding: 0.25em;
9
9
  flex-direction: column;
10
- `,_e=d.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
- `,ve=d.default.div`
29
+ `,tr=h.default.div`
30
30
  flex: 1;
31
- `,ye=d.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
- `,be=d.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
- `,xe=d.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
- `,F=({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`})]}),Se=({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`})}),Ce=(0,l.createContext)(null),we=(0,l.createContext)(null);function Te(){let e=(0,l.useContext)(we),t=(0,l.useContext)(Ce),n=e||t?.id;return O(n,`useResourceInstance can only be called from inside <ResourceProvider />`),n}function I(){let e=(0,l.useContext)(Ce);return O(e,`useResource can only be called from inside <ResourceProvider />`),e}function Ee({id:e,children:t}){return e?(0,u.jsx)(we.Provider,{value:e,children:t}):t}function De({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)(Ce.Provider,{value:e,children:r})}function L(e){"@babel/helpers - typeof";return L=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},L(e)}function Oe(e,t){if(L(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(L(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function ke(e){var t=Oe(e,`string`);return L(t)==`symbol`?t:t+``}function R(e,t,n){return(t=ke(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ae=class{constructor({id:e,config:t,label:n}){R(this,`id`,void 0),R(this,`label`,void 0),R(this,`type`,`external-manifest-preview`),R(this,`focusable`,!0),R(this,`serviceUrl`,void 0),R(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])}},je=class{constructor({id:e,config:t,label:n}){R(this,`id`,void 0),R(this,`label`,void 0),R(this,`type`,`iiif-preview-service`),R(this,`focusable`,!1),R(this,`serviceUrl`,void 0),R(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)});O(i.ok,`Unknown error creating preview`);let a=await i.json();return O(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)});O(o.ok,`Unknown error updating preview`);let s=await o.json();O(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 Me(e,t,n,r,i){let a=I(),o=Te(),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;O(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 Ne(e){return(0,l.useMemo)(()=>{let t=[];for(let n of e)switch(n.type){case`iiif-preview-service`:t.push(new je(n));break;case`external-manifest-preview`:t.push(new Ae(n));break}return t},[])}const Pe=(0,m.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 Fe(){return{active:[],selected:null}}const Ie=(0,l.createContext)(null),Le=(0,l.createContext)([]),Re=(0,l.memo)(function({children:e,configs:t=[]}){let n=Te(),r=Ne(t),[i,a]=(0,c.useLocalStorage)(`preview-${n}`,[]),[o,s]=(0,l.useReducer)(Pe,void 0,Fe),d=Me(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)(Le.Provider,{value:i,children:(0,u.jsx)(Ie.Provider,{value:f,children:e})})});function ze(){return(0,l.useContext)(Le)}function Be(){let e=(0,l.useContext)(Ie);return O(e,`usePreviewContext() can only be called from inside <PreviewProvider />`),e}const Ve=d.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;
@@ -72,7 +72,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
72
72
  &:hover {
73
73
  color: inherit;
74
74
  }
75
- `,z=d.default.button`
75
+ `,H=h.default.button`
76
76
  padding: 0.5rem 1rem;
77
77
  color: ${e=>e.theme.color.main||`none`};
78
78
  background-color: ${e=>e.theme.color.white||`white`};
@@ -90,11 +90,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
90
90
  &:hover {
91
91
  background: #eee;
92
92
  }
93
- `,He=(0,d.default)(z)`
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
- `,Ue=(0,d.default)(z)`
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
- `,We=(0,d.default)(z)`
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
- `,Ge=d.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
- `,Ke=d.default.div`
135
+ `,jr=h.default.div`
136
136
  display: flex;
137
137
  position: relative;
138
138
  width: 10em;
139
- `,qe=(0,d.default)(Ve)`
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
- `,Je=(0,d.default)(Ve)`
160
+ `,Nr=(0,h.default)(Er)`
161
161
  background: #b84c74;
162
162
  border-top-right-radius: 5px;
163
163
  border-bottom-right-radius: 5px;
@@ -178,11 +178,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
178
178
  box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
179
179
  }
180
180
 
181
- ${e=>e.$open&&d.css`
181
+ ${e=>e.$open&&h.css`
182
182
  background: #892c4e;
183
183
  box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
184
184
  `}
185
- `,Ye=d.default.div`
185
+ `,Pr=h.default.div`
186
186
  position: absolute;
187
187
  opacity: 0;
188
188
  top: 100%;
@@ -196,39 +196,42 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
196
196
  0 0px 0px 1px rgba(0, 0, 0, 0.15),
197
197
  inset 0 0 0 1px rgba(255, 255, 255, 0.2);
198
198
  background: #fff;
199
+ color: #25211f;
199
200
  overflow: hidden;
200
201
 
201
- ${e=>e.$open&&d.css`
202
+ ${e=>e.$open&&h.css`
202
203
  opacity: 1;
203
204
  pointer-events: visible;
204
205
  `}
205
- `,Xe=d.default.div`
206
+ `,Fr=h.default.div`
206
207
  display: flex;
207
208
  background: #fff;
209
+ color: #25211f;
208
210
  padding: 0.4em;
209
211
  align-items: center;
210
212
 
211
213
  &:hover {
212
214
  background: #f9f9f9;
213
215
  }
214
- `,Ze={available:`#ddd`,configured:`#e37266`,active:`#4cb235`},Qe=d.default.div`
216
+ `,Ir={available:`#ddd`,configured:`#e37266`,active:`#4cb235`},Lr=h.default.div`
215
217
  margin: 0.2em 0.5em;
216
218
  width: 8px;
217
219
  height: 8px;
218
220
  border-radius: 50%;
219
- background-color: ${e=>Ze[e.$status]};
220
- `,$e=d.default.div`
221
+ background-color: ${e=>Ir[e.$status]};
222
+ `,Rr=h.default.div`
221
223
  flex: 1;
222
224
  font-size: 0.925em;
225
+ color: #25211f;
223
226
  padding: 0.2em;
224
227
  text-overflow: ellipsis;
225
228
  cursor: pointer;
226
229
  white-space: nowrap;
227
230
  overflow: hidden;
228
- `,et=d.default.div`
231
+ `,zr=h.default.div`
229
232
  background: #f9f9f9;
230
233
  font-size: 0.8em;
231
- `,tt=d.default.div`
234
+ `,Br=h.default.div`
232
235
  color: #999;
233
236
  font-size: 0.8em;
234
237
  padding: 0.6em 0.8em;
@@ -236,10 +239,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
236
239
  border-radius: 5px;
237
240
  user-select: none;
238
241
  cursor: not-allowed;
239
- `;function nt({downloadEnabled:e,fileName:t}){let{active:n,configs:r,actions:i,selected:a}=Be(),o=(0,p.useVault)(),s=M(),l=I(),d=r.filter(e=>e.type===`external-manifest-preview`),{isOpen:m,buttonProps:h,itemProps:g}=(0,f.default)(d.length);return d.length===0?(0,u.jsx)(tt,{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)(Ke,{children:[(0,u.jsx)(qe,{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)(Je,{$open:m,...h,children:(0,u.jsx)(Se,{})}),(0,u.jsx)(Ye,{$open:m,children:d.map((e,t)=>{let r=n.indexOf(e.id)===-1;return(0,u.jsxs)(Xe,{...g[t],children:[(0,u.jsx)(Qe,{$status:r?`available`:e.id===a?`active`:`configured`}),(0,u.jsx)($e,{onClick:()=>{i.selectPreview(e.id)},children:e.label}),r?null:(0,u.jsx)(et,{onClick:()=>i.deletePreview(e.id),children:(0,u.jsx)(F,{})})]},e.id)})})]})]})}const rt=(0,l.memo)(function(e){let[t]=(0,c.useLocalStorage)(`menu-hidden`);return(0,u.jsx)(ge,{children:(0,u.jsxs)(he,{children:[(0,u.jsx)(ye,{onClick:e.onClickLogo,children:(0,u.jsx)(c.ManifestEditorLogo,{})}),(0,u.jsx)(nt,{})]})})}),it=(0,l.createContext)(null);function at(){return(0,l.useContext)(it)||null}function ot(e,t){let n=at();return n?n[e][t]:null}function st({children:e,menu:t}){return(0,u.jsx)(it.Provider,{value:t,children:e})}function ct(){return(0,l.useContext)(p.AtlasStoreReactContext)}function lt(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 ut=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)}),dt=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 ft(){}async function pt(e,...t){if(!e)return;if(e.endsWith(`.mp3`)||e.endsWith(`.mp4`)||e.endsWith(`.m4a`)||e.endsWith(`.m4v`))try{let t=await dt(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{await fetch(e,{method:`HEAD`}),n=await fetch(e)}catch{return gt(e)}if(!n.ok&&(n=await fetch(e+`/info.json`),!n.ok))return gt(e);let r=n.headers.get(`Content-Type`);if(r?.includes(`image/`))return gt(e,r);let i=null;try{i=await n.json()}catch{return null}return await ht(i,e)}function mt(e){return e.protocol&&e.protocol===`http://iiif.io/api/image`?(e.type||(e.type=`ImageService`),e):null}async function ht(e,t){let n=mt(e);if(n)return n;if(!(e.id||e[`@id`]))return null;let r=await new g.Vault().load(t,e);if(r&&(r&&r?.type===`Manifest`||r?.type===`Collection`))return{id:t,type:r.type,label:(0,h.getValue)(r.label)}}async function gt(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 _t(n.slice(0,n.length-4).join(`/`)+`/info.json`);if(e&&e?.type&&e?.type?.startsWith(`ImageService`))return e}}try{let n=await ut(e);return{id:e,type:`Image`,width:n.width,height:n.height,format:await vt(e,t)}}catch{}return null}async function _t(e){try{let t=await fetch(e);return t.ok?await ht(await t.json(),e):null}catch(e){return console.log(e),null}}async function vt(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 yt(e){try{let t=await ut(e);if(t)return{width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}}catch{return null}return null}async function bt(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 xt(e,t,n){return`create_${e}_${t}_${(0,_.toRef)(n)?.type||`unknown`}`}function B(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 St(e){return navigator.clipboard.writeText(typeof e==`string`?e:JSON.stringify(e,null,2))}function Ct(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function wt(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 Tt(e,t,n){return{...e,metadata:t,config:{...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||[]],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 V=(0,y.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 Et(e){let t=(0,l.useMemo)(()=>Ct(),[]),n=V(e=>e.regions[t]),r=V(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 Dt(e){let t=V(e=>e.highlight),n=V(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 Ot=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`})]}),kt=({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`})]}),At=(0,l.createContext)(null),jt=(0,l.createContext)(null);function Mt(){return(0,l.useContext)(jt)}function H(){return(0,l.useContext)(At)}function Nt(){return P().layout}function Pt(){let e=P(),t=e.layout,n=(0,l.useContext)(At),r=(0,l.useContext)(jt);return(0,l.useMemo)(()=>({actions:n,state:r,...t}),[e,r])}function Ft(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)(We,{onClick:e.resetErrorBoundary,children:`Try again`})]})}function It(e){return e&&e.pinnable}function Lt({initial:e,fallback:t,options:n={}}){return Math.max(n.minWidth||0,Math.min(n.maxWidth||1/0,e||t))}function Rt(e){return typeof e==`string`?(0,l.createElement)(`div`,{dangerouslySetInnerHTML:{__html:e}}):e}const zt=d.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`
240
243
  position: relative;
241
244
  display: inline-block;
242
- `,Bt=d.default.div`
245
+ `,Wa=h.default.div`
243
246
  display: flex;
244
247
  flex-direction: column;
245
248
  position: absolute;
@@ -254,7 +257,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
254
257
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
255
258
  }
256
259
  }
257
- `,Vt=d.default.button`
260
+ `,Ga=h.default.button`
258
261
  padding: 0 ${e=>e.theme.padding.small||`0.5rem`};
259
262
  color: ${e=>e.theme.color.main||`none`};
260
263
  background-color: ${e=>e.theme.color.white||`white`};
@@ -273,7 +276,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
273
276
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
274
277
  }
275
278
 
276
- ${e=>e.$active&&d.css`
279
+ ${e=>e.$active&&h.css`
277
280
  background: #b84c74;
278
281
  color: #fff;
279
282
  &:hover {
@@ -281,7 +284,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
281
284
  color: #fff;
282
285
  }
283
286
  `}
284
- `,Ht=d.default.div`
287
+ `,Ka=h.default.div`
285
288
  display: none;
286
289
  flex-direction: column;
287
290
  position: absolute;
@@ -299,26 +302,26 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
299
302
  overflow: hidden;
300
303
  padding-bottom: 3px;
301
304
 
302
- ${z} {
305
+ ${H} {
303
306
  &:hover {
304
307
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
305
308
  }
306
309
  }
307
310
 
308
- ${e=>e.$open&&d.css`
311
+ ${e=>e.$open&&h.css`
309
312
  display: flex;
310
313
  `}
311
- `,Ut=d.default.div`
314
+ `,qa=h.default.div`
312
315
  color: #999;
313
316
  text-transform: uppercase;
314
317
  font-weight: 600;
315
318
  padding: 0.7em;
316
319
  font-size: 0.875em;
317
- `,Wt=d.default.div`
320
+ `,Ja=h.default.div`
318
321
  height: 1px;
319
322
  margin: 0 0.5em;
320
323
  background: #eee;
321
- `,Gt=`OverrideScrollbar`,Kt=(0,l.createContext)(null);function qt(){return(0,l.useContext)(Kt)}const Jt=d.default.div`
324
+ `,Ya=`OverrideScrollbar`,Xa=(0,l.createContext)(null);function Za(){return(0,l.useContext)(Xa)}const Qa=h.default.div`
322
325
  display: flex;
323
326
  flex-direction: column;
324
327
  position: relative;
@@ -370,7 +373,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
370
373
  &[data-state="unmounted"] {
371
374
  transform: translateX(100%);
372
375
  }
373
- `,Yt=d.default.div`
376
+ `,$a=h.default.div`
374
377
  background: #fff;
375
378
  display: flex;
376
379
  height: 2.8em;
@@ -392,7 +395,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
392
395
  background: #ffc2d2;
393
396
  box-shadow: inset 0 -5px 10px 0 rgba(255, 255, 255, 0.5);
394
397
  }
395
- `,U=d.default.button`
398
+ `,U=h.default.button`
396
399
  border: none;
397
400
  background: transparent;
398
401
  padding: 0 0.4em;
@@ -404,15 +407,15 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
404
407
  svg {
405
408
  font-size: 1.2em;
406
409
  }
407
- `,Xt=d.default.div`
410
+ `,eo=h.default.div`
408
411
  flex: 1 1 0px;
409
- `,Zt=d.default.div`
412
+ `,to=h.default.div`
410
413
  font-size: 0.875em;
411
414
  flex: 1 1 0px;
412
415
  padding-left: 1em;
413
416
  text-align: center;
414
417
  align-self: center;
415
- `,Qt=d.default.div`
418
+ `,no=h.default.div`
416
419
  flex: 1 1 0px;
417
420
  display: flex;
418
421
 
@@ -423,13 +426,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
423
426
  > * {
424
427
  min-width: 0;
425
428
  }
426
- `;function $t({panel:e,state:t,actions:n,isLeft:r,pinActions:i=n,transition:a,close:o,available:s=[],style:c,noHeader:d}){let m=(0,l.useContext)(p.ReactVaultContext)||null,[h,g]=(0,l.useState)(!1),_=ce(),v=Pt(),{tabs:y,pinnable:x,hideHeader:S}=e?.options||{},C=[_.state.canvasId,e?.id],w=(0,l.useMemo)(()=>(s||[]).filter(e=>!e.requiresState),[s]),{itemProps:ee,isOpen:te,setIsOpen:T}=(0,f.default)(w.length),[ne,E]=(0,l.useState)(``),D=(0,l.useRef)();(0,l.useEffect)(()=>g(!1),C),(0,l.useEffect)(()=>E(``),[e]),(0,l.useEffect)(()=>(D.current=E,()=>{D.current=void 0}),[]);let O=(0,l.useCallback)(e=>{D.current&&D.current(e)},[]),k=(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)&&w.length?(r.preventDefault(),T(!0)):i&&i()},[n,_,v,e,T,t,w.length]),A=r=>{n.change({id:r.id,state:r.defaultState,stacked:!!(t.stack.length||e?.backAction)})};if(!e||!t.current)return null;let j=e.backAction||t.stack.length?(0,u.jsx)(U,{onClick:k,children:(0,u.jsx)(kt,{})}):null,M=(0,u.jsx)(U,{onClick:o||n.close,children:(0,u.jsx)(F,{})});return(0,u.jsx)(Kt.Provider,{value:O,children:(0,u.jsxs)(Jt,{"data-state":a,"data-flipped":r,style:c,"data-header":!d,children:[d?null:(0,u.jsxs)(Yt,{"data-tabs":!!y,"data-error":h,children:[(0,u.jsxs)(zt,{style:{display:`flex`,height:`100%`},children:[e.renderBackAction?e.renderBackAction({backAction:k,fallback:j}):j,w.length?(0,u.jsxs)(Ht,{$open:te,style:{left:`0.5em`},children:[(0,u.jsx)(Ut,{children:`All panels`}),(0,u.jsx)(Wt,{}),w.map((t,n)=>(0,u.jsx)(Vt,{...ee[n],onClick:()=>A(t),$active:e.id===t.id,children:t.label},n))]}):null]}),ne?(0,u.jsx)(Zt,{children:ne}):S?(0,u.jsx)(Xt,{}):(0,u.jsx)(Zt,{children:e.label}),x?t.pinned?(0,u.jsx)(U,{onClick:i.unpin,children:(0,u.jsx)(Ot,{fill:`orange`})}):(0,u.jsx)(U,{onClick:()=>i.pin({id:e.id,state:t.state}),children:(0,u.jsx)(Ot,{fill:`#ddd`})}):null,e.renderCloseAction?e.renderCloseAction({closeAction:o||n.close,fallback:M}):M]}),(0,u.jsx)(Qt,{className:`OverrideScrollbar`,children:(0,u.jsx)(b.ErrorBoundary,{onError:()=>g(!0),FallbackComponent:Ft,resetKeys:C,onReset:()=>g(!1),children:Rt(e.render(t.state||e.defaultState||{},{...v,current:n,vault:m,transition:a},_))})})]})})}function en(e=`vault://homepage-collection.json`){let t=new g.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,x.requestResource)({id:i.id}));let e=(0,S.actionListFromResource)(i.id,i);t.dispatch((0,x.batchActions)({actions:e})),r=!0}}catch{}if(!r){let n=(0,S.actionListFromResource)(e,{"@context":`http://iiif.io/api/presentation/3/context.json`,id:e,type:`Collection`,label:{en:[`Recent items`]},items:[]});t.dispatch((0,x.requestResource)({id:e})),t.dispatch((0,x.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,x.addReference)({id:e,type:`Collection`,reference:{id:n,type:r},key:`items`,index:0})):t.dispatch((0,x.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,x.modifyEntityField)({id:e,type:`Collection`,key:`items`,value:[]})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}}function tn(){return(0,l.useContext)(nn)}const nn=(0,l.createContext)(new g.Vault),rn=(0,l.createContext)({addHistory:(e,t)=>{},clearHistory:()=>{}}),an=`manifest-editor://homepage-collection.json`;function on(){return(0,l.useContext)(rn)}function sn(e){let{vault:t,unsubscribe:n,addHistory:r,clearHistory:i}=(0,l.useMemo)(()=>en(an),[]);return(0,l.useEffect)(()=>n,[]),(0,u.jsx)(rn.Provider,{value:{addHistory:r,clearHistory:i},children:(0,u.jsx)(nn.Provider,{value:t,children:e.children})})}function cn({children:e}){return(0,u.jsx)(p.VaultProvider,{vault:tn(),children:e})}function ln(e,t,n,r,i){let a=(0,p.useVault)(),o=P(),{create:s,edit:c}=H(),u=(0,l.useMemo)(()=>(0,v.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,_.toRef)(e),property:t,index:a,target:r,initialData:o,...i||{}})},[s,e,t,n,i,r]),m=(0,l.useCallback)((a,o,c)=>{if(e)return s({type:n,filter:a,parent:(0,_.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,_.toRef)(e),property:t,index:r}:void 0)},[c,e,t]),createFiltered:m,creator:(0,l.useCallback)((a,o)=>{if(e)return s({type:n,initialCreator:a,parent:(0,_.toRef)(e),property:t,target:r,initialData:o,...i||{}})},[n,t,e,r,s,i]),buttonProps:(0,l.useMemo)(()=>({"data-action-id":xt(n,t,e)}),[n,t,e])}]}function un(){let e=(0,p.useVault)(),t=tn(),n=P();return(0,l.useMemo)(()=>new v.Creator(e,n.layout.creators||[],t),[n.layout.creators,e])}const dn=(0,l.createContext)({});function fn(e){return(0,l.useContext)(dn)[e]||{}}function pn(e){let t=(0,l.useContext)(dn),n=(0,l.useMemo)(()=>({...t,[e.id]:e.data}),[t,e.id,e.data]);return(0,u.jsx)(dn.Provider,{value:n,children:e.children})}const mn=(0,l.memo)(function(e){let t=(0,p.useVault)(),{edit:n,modal:r}=H(),[i,a]=(0,l.useState)(!1),[o,s]=(0,l.useState)(null),d=un(),f=(0,l.useRef)(!1),m=e.resource.initialData?.selector;Et(m);let h=fn(e.creator.id),g={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:{...h,...e.resource.initialData||{}}},v=t=>{try{if(i||f.current)return;a(!0),f.current=!0,d.create(e.creator.id,t,g).catch(e=>(s(e?.message||`Unknown error`),null)).then(async t=>{if(e.onCreate?.(),e.skipEditingOnCreate||!t)return;let i=Array.isArray(t)?t[0]:t;a(!1),r.popStack(),r.close(),i&&n(i,{parent:(0,_.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:g})})}):(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 hn(e){let t=P(),n=(0,p.useVault)(),[r,i]=(0,l.useState)(e.resource.initialCreator||``),a=qt(),o=(0,l.useMemo)(()=>(0,v.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)(mn,{creator:s,resource:e.resource})]}):(0,u.jsxs)(`div`,{children:[d,(0,u.jsx)(`div`,{className:`p-2 py-6`,children:(0,u.jsx)(mn,{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 gn={id:`@manifest-editor/creator`,label:`Add content`,options:{hideHeader:!0,tabs:!1},render(e){return(0,u.jsx)(hn,{resource:e})}},_n={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 vn(e){let{}=e,t=(0,p.useVault)(),n=P(),r=(0,l.useMemo)(()=>(0,v.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)(d.ThemeProvider,{theme:_n,children:(0,u.jsx)(mn,{creator:t,resource:e.resource,onCreate:e.onCreate,skipEditingOnCreate:!0})})},t.id))]})})}function yn(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,_.toRef)(t.payload.resource.resource);if(!n||!e.stack.find(e=>(0,_.toRef)(e.resource)?.id===n.id))return e;let r=e.current?.resource.id===n.id?null:e.current,i=bn(e.stack.filter(e=>(0,_.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 bn(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 xn={stack:[],current:null,create:null},W=(0,l.createContext)(xn),Sn=(0,l.createContext)({edit(){},close(){},back(){},setStack(){},updateCurrent(){},create(){return()=>{}}});function Cn(){return(0,l.useContext)(Sn)}function wn(){return(0,l.useContext)(W).current}function Tn(){return(0,l.useContext)(W).stack}function En(){return(0,l.useContext)(W).create}function Dn(){let{manifest:e}=(0,p.useResourceContext)(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);O(e,`Manifest not found`);let i=(0,l.useMemo)(()=>new C.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 On(){let{collection:e}=(0,p.useResourceContext)(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);O(e,`Collection not found`);let i=(0,l.useMemo)(()=>new C.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 kn(e,t={}){let n=(0,p.useVault)(),[r,i]=(0,l.useReducer)(e=>e+1,0);!t.allowNull&&O(e,`Resource not found`);let a=(0,l.useMemo)(()=>t.allowNull&&!e?null:new C.EditorInstance({reference:(0,_.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 An(){let{annotationPage:e}=(0,p.useResourceContext)();return O(e,`Annotation page not found`),kn({id:e,type:`AnnotationPage`})}function jn(){let e=wn(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);O(e,`No resource selected`);let i=(0,l.useMemo)(()=>new C.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 Mn(e){let t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(yn,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 Nn(e){let{instanceId:t}=se(),[n,r]=Mn(e.initialState||xn);return(0,u.jsx)(Sn.Provider,{value:r,children:(0,u.jsx)(W.Provider,{value:n,children:e.children})},t)}function Pn({resource:e,children:t}){let{instanceId:n}=se(),[r,i]=Mn((0,l.useMemo)(()=>({create:null,stack:[],current:{resource:{type:`SpecificResource`,source:{id:e.id,type:e.type}}}}),[]));return(0,u.jsx)(Sn.Provider,{value:i,children:(0,u.jsx)(W.Provider,{value:r,children:t})},n)}function Fn({fallback:e,backAction:t}){let n=Tn(),{back:r}=Cn();return n.length?(0,u.jsx)(U,{onClick:r,children:(0,u.jsx)(kt,{})}):e}function In({closeAction:e,fallback:t}){let n=Tn();return wn()||n.length?(0,u.jsx)(U,{onClick:()=>{e()},children:(0,u.jsx)(F,{})}):t}function Ln(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 Rn({currentTab:e=void 0}){let t=wn(),n=(0,l.useContext)(p.ResourceReactContext),r=P(),i=I(),a=(0,p.useVault)(),{change:o}=H(),s=qt(),{editorConfig:d}=M(),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 Ln(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]);if((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]),!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:(y?.editors||[]).map((e,t)=>({id:e.id,label:e.label,renderComponent:()=>e.component(g)})),selectedKey:e,onSelectionChange:e=>{o(`@manifest-editor/editor`,{currentTab:e})}},t.resource.source?.id))}const zn={id:`@manifest-editor/editor`,label:`Editor`,options:{hideHeader:!0,tabs:!0,minWidth:400},renderBackAction:({backAction:e,fallback:t})=>(0,u.jsx)(Fn,{backAction:e,fallback:t}),renderCloseAction:({closeAction:e,fallback:t})=>(0,u.jsx)(In,{closeAction:e,fallback:t}),render({currentTab:e}){return(0,u.jsx)(Rn,{currentTab:e})}};function Bn(e){let[t,n]=(0,l.useState)(!1),r=(0,l.useRef)(),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 Vn(){let e=Be(),t=I(),n=M(),r=re(),[i,a]=Bn(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},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)(`div`,{className:`mt-5`,children:(0,u.jsx)(c.ActionButton,{type:`submit`,children:`Save changes`})})]})})]})}function Hn(){return(0,y.createStore)((e,t)=>({specificMenus:{},resourceMenus:{},hookMenuItem(t){let n=Ct(),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 Un=(0,l.createContext)(null);function Wn({children:e}){let t=(0,l.useMemo)(()=>Hn(),[]);return(0,u.jsx)(Un.Provider,{value:t,children:e})}function Gn(){let e=(0,l.useContext)(Un);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function Kn(e){let t=Gn(),n=(0,y.useStore)(t,e=>e.resourceMenus),r=(0,y.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 qn(c)},[r,n,e.id,e.type])}function qn(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 Jn(e,t=[]){let n=(0,y.useStore)(Gn(),e=>e.hookMenuItem);(0,l.useEffect)(()=>n(e),[n,e.resource?.id,e.resource?.type,...t])}var Yn={};function Xn(e){return(0,u.jsxs)(`div`,{className:Yn.CenterPanelContainer,children:[e.title||e.close?(0,u.jsxs)(`div`,{className:Yn.CenterPanelHeader,children:[e.title?(0,u.jsx)(`h2`,{className:Yn.CenterPanelTitle,children:e.title}):null,e.close?(0,u.jsx)(z,{className:Yn.CenterPanelClose,onClick:e.close,children:(0,u.jsx)(F,{})}):null]}):null,e.children]})}const Zn=d.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`
427
430
  flex: 1;
428
431
  display: flex;
429
432
  width: 100%;
430
433
  flex-direction: column;
431
434
  position: relative;
432
- `,Qn=d.default.div`
435
+ `,Yo=h.default.div`
433
436
  background: #fff;
434
437
  position: relative;
435
438
  border-bottom: 1px solid #d0d0d0;
@@ -447,11 +450,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
447
450
  //flex-direction: column;
448
451
  //justify-content: center;
449
452
  }
450
- `,$n=d.default.p`
453
+ `,Xo=h.default.p`
451
454
  font-size: 0.9em;
452
455
  color: #777;
453
456
  font-weight: 400;
454
- `,er=d.default.button`
457
+ `,Zo=h.default.button`
455
458
  color: inherit;
456
459
  text-rendering: geometricPrecision;
457
460
  border: none;
@@ -493,7 +496,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
493
496
  margin-top: 0.5em;
494
497
  }
495
498
  }
496
- `,tr=d.default.div`
499
+ `,Qo=h.default.div`
497
500
  font-size: 1.4em;
498
501
  padding-right: 0.3em;
499
502
  display: flex;
@@ -502,7 +505,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
502
505
  [data-large="true"] & {
503
506
  font-size: 2em;
504
507
  }
505
- `,nr=d.default.div`
508
+ `,$o=h.default.div`
506
509
  width: 2em;
507
510
  align-items: center;
508
511
  //padding-top: 0.5em;
@@ -515,11 +518,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
515
518
  fill: #999;
516
519
  color: #999;
517
520
  }
518
- `,rr=d.default.div`
521
+ `,es=h.default.div`
519
522
  min-height: 0;
520
523
  overflow: visible;
521
524
  display: flex;
522
- `,ir=d.default.div`
525
+ `,ts=h.default.div`
523
526
  min-height: 0;
524
527
  overflow: visible;
525
528
  flex: 1;
@@ -532,7 +535,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
532
535
  &[data-max-height="true"] {
533
536
  overflow-y: auto;
534
537
  }
535
- `,ar=d.default.section`
538
+ `,ns=h.default.section`
536
539
  display: grid;
537
540
  grid-template-rows: 0fr;
538
541
  overflow: hidden;
@@ -560,7 +563,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
560
563
  &[data-scrolled="true"] {
561
564
  box-shadow: inset 0px 2px 0px 0 rgba(0, 0, 0, 0.1);
562
565
  }
563
- `,or=d.default.div`
566
+ `,rs=h.default.div`
564
567
  position: sticky;
565
568
  display: flex;
566
569
  top: 0;
@@ -596,7 +599,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
596
599
  right: 0.5em;
597
600
  }
598
601
  }
599
- `,sr=(()=>void 0);let cr=0;function lr(){return(0,l.useMemo)(()=>cr++,[])}function ur(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 dr=(0,l.forwardRef)(function(e,t){let n=(0,l.useRef)(null),r=(0,l.useRef)(null),i=lr(),[a,o]=(0,l.useState)(e.initialOpen||!1),s=e.onChange||sr,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)(Qn,{"data-large":e.large,"data-open":a,children:[(0,u.jsxs)(or,{"data-open":a,children:[e.icon?(0,u.jsx)(nr,{onClick:c,children:e.icon}):null,(0,u.jsxs)(er,{ref:r,onClick:c,"aria-expanded":a,"aria-controls":`accordion-${i}`,children:[e.label,e.description?(0,u.jsx)($n,{children:e.description}):null]}),(0,u.jsx)(tr,{onClick:c,children:(0,u.jsx)(Se,{width:`1em`,height:`1em`,rotate:a?0:180})})]}),(0,u.jsx)(ar,{"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)(rr,{children:(0,u.jsx)(ir,{"data-max-height":!!d,"data-full":e.fullWidth,style:{maxHeight:d||void 0},children:e.children})})})]})});function fr(e){let{getItemProps:t,onKeyDown:n}=ur(e.items.length,e.singleMode);return(0,u.jsx)(Zn,{onKeyDown:n,children:e.items.map((n,r)=>(0,u.jsx)(dr,{overflow:e.overflow,maxHeight:e.maxHeight,...n,...t(r),children:n.children},r))})}function pr(){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 mr=d.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`
600
603
  padding: 0.3em;
601
604
 
602
605
  display: flex;
@@ -618,12 +621,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
618
621
  position: sticky;
619
622
  bottom: 0;
620
623
  }
621
- `;function hr(e){let t=(0,p.useManifest)(),n=(0,p.useVault)(),r=H(),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)(Xn,{title:`Export manifest`,close:r.centerPanel.popStack,children:(0,u.jsx)(`div`,{style:{flex:1,overflowY:`auto`},children:(0,u.jsx)(fr,{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)(z,{onClick:()=>B(i,`manifest.json`),children:(0,u.jsx)(pr,{})}),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)(mr,{"data-sticky":`true`,children:[(0,u.jsx)(z,{onClick:()=>St(i),children:`Copy to clipboard`}),(0,u.jsx)(z,{onClick:()=>B(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)(z,{onClick:()=>B(a,`manifest.json`),children:(0,u.jsx)(pr,{})}),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)(mr,{"data-sticky":`true`,children:[(0,u.jsx)(z,{onClick:()=>St(a),children:`Copy to clipboard`}),(0,u.jsx)(z,{onClick:()=>B(a,`manifest.json`),children:`Download`})]})]})}]})})})}function gr({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 _r=(0,w.default)(),vr=(0,l.createContext)(_r);function yr({children:e,emitter:t}){return(0,u.jsx)(vr.Provider,{value:t,children:e})}function br(){return(0,l.useContext)(vr)}function xr(e,t,n=[]){let r=(0,l.useContext)(vr);(0,l.useEffect)(()=>{let n=e=>{t(e)};return r.on(e,n),()=>{r.off(e,n)}},[r,e,...n])}function Sr(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 Cr(e,t,n,r=!0){let i=(0,ee.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 wr(){let e=(0,p.useAtlasStore)(),t=(0,y.useStore)(e,e=>e.switchTool),n=(0,y.useStore)(e,e=>e.polygonState.currentTool),r=(0,y.useStore)(e,e=>e.polygonState.selectedStamp),i=(0,y.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 Tr=d.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`
622
625
  position: relative;
623
626
  width: 1px;
624
627
  background: rgba(0, 0, 0, 0.2);
625
628
  z-index: 50;
626
- `,Er=(0,d.default)(Ve)`
629
+ `,Cs=(0,h.default)(Er)`
627
630
  transition:
628
631
  opacity 300ms,
629
632
  transform 300ms;
@@ -635,7 +638,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
635
638
  &:focus {
636
639
  outline: 2px solid salmon;
637
640
  }
638
- `;(0,d.default)(Er)`
641
+ `;(0,h.default)(Cs)`
639
642
  background: #fff;
640
643
  width: 30px;
641
644
  height: 30px;
@@ -649,7 +652,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
649
652
  svg {
650
653
  fill: #9999;
651
654
  }
652
- `;const Dr=(0,d.default)(Er)`
655
+ `;const ws=(0,h.default)(Cs)`
653
656
  position: relative;
654
657
  display: flex;
655
658
  opacity: 1;
@@ -676,7 +679,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
676
679
  svg {
677
680
  font-size: 1.5em;
678
681
  }
679
- `,Or=d.default.div`
682
+ `,Ts=h.default.div`
680
683
  background: rgba(0, 0, 0, 0);
681
684
  position: absolute;
682
685
  width: 16px;
@@ -699,12 +702,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
699
702
  &:hover {
700
703
  transform: scaleX(100%);
701
704
  background: rgba(0, 0, 0, 0.1);
702
- ${Er} {
705
+ ${Cs} {
703
706
  transform: scaleX(100%);
704
707
  opacity: 1;
705
708
  }
706
709
  }
707
- `,kr=d.default.div`
710
+ `,Es=h.default.div`
708
711
  background: rgba(0, 0, 0, 0);
709
712
  position: absolute;
710
713
  pointer-events: none;
@@ -713,125 +716,527 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
713
716
  top: 0;
714
717
  bottom: 0;
715
718
  z-index: 51; // This will always be quite high.
716
- `,Ar=(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)(Tr,{onClick:()=>n.open(),children:[(0,u.jsx)(kr,{$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:Dr,$dir:e,onClick:e=>n.open(),children:(0,u.jsx)(Se,{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)(Or,{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)(F,{})})}),(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 jr(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 G={};function Mr(){return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(`div`,{"data-header":`true`,className:G.ghostLoadingBlock}),(0,u.jsxs)(`div`,{className:G.ghostBlockList,children:[(0,u.jsx)(`div`,{className:G.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:G.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:G.ghostLoadingBlock}),(0,u.jsx)(`div`,{className:G.ghostLoadingBlock})]})]})}function Nr(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 Pr(e,t,n,r){return Math.sqrt(Math.abs(n-e)**2+Math.abs(r-t)**2)}function Fr(e,t,n,r){return n||(r?r/e:t)}function Ir(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:`${Lt({initial:t.widthA,fallback:320,options:{minWidth:t.minWidthPx,maxWidth:t.maxWidthPx}})}px`}),{loading:_=!1}=t;return Nr(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)},[_]),Nr({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=Fr(r,.8,t.maxWidthPct,t.maxWidthPx)*r,s=Fr(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},[_]),Nr(n,`mousemove`,e=>{if(!d.current&&f.current&&Pr(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=Fr(a,.8,t.maxWidthPct,t.maxWidthPx),u=Fr(a,.2,t.minWidthPct,t.minWidthPx);o.current=(a+n-e.pageX-5)/a,c&&(o.current=1-o.current),o.current=o.current<u?u:o.current,o.current=o.current>l?l:o.current,r.current.style.width=`${o.current*a-s}px`}}},[s,_]),{refs:{container:n,resizer:a,resizableDiv:r,otherDiv:i},setWidths:g,isDragging:s,widthA:m,widthB:h}}const Lr=d.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
+ display: flex;
721
+ flex: 1 1 0;
722
+ min-height: 0;
717
723
  position: relative;
724
+ overflow: hidden;
725
+
726
+ ${q} {
727
+ background: ${Y.lightApp};
728
+ }
729
+
730
+ ${J} {
731
+ background: ${Y.darkApp};
732
+ }
733
+ `,Is=h.default.div`
734
+ flex: 1 1 0;
735
+ min-width: 0;
736
+ min-height: 0;
718
737
  display: flex;
719
- flex: 1;
738
+ background: #e3e7f0;
739
+ padding-top: 1px;
720
740
  overflow: hidden;
721
- flex-direction: column;
722
- `,Rr=d.default.div`
741
+
742
+ ${q} {
743
+ background: ${Y.lightApp};
744
+ }
745
+
746
+ ${J} {
747
+ background: ${Y.darkApp};
748
+ }
749
+
750
+ > * {
751
+ min-width: 0;
752
+ }
753
+
754
+ ${q} > .delft-exhibition {
755
+ background: ${Y.lightStage};
756
+ color: ${Y.lightText};
757
+ }
758
+
759
+ ${q} .atlas-container {
760
+ --atlas-background: ${Y.lightStage} !important;
761
+ background: ${Y.lightStage} !important;
762
+ }
763
+
764
+ ${q} .atlas-canvas {
765
+ background: ${Y.lightStage} !important;
766
+ }
767
+
768
+ ${J} > .delft-exhibition {
769
+ background: ${Y.darkStage};
770
+ color: ${Y.darkText};
771
+ }
772
+
773
+ ${J} .atlas-container {
774
+ --atlas-background: ${Y.darkStage} !important;
775
+ background: ${Y.darkStage} !important;
776
+ }
777
+
778
+ ${J} .atlas-canvas {
779
+ background: ${Y.darkStage} !important;
780
+ }
781
+
782
+ ${J} [class*="CanvasContainer"],
783
+ ${J} [class*="ViewerContainer"] {
784
+ background: ${Y.darkStage} !important;
785
+ }
786
+
787
+ ${J} .exhibition-slideshow-workbench,
788
+ ${J} .exhibition-slideshow-current-canvas {
789
+ background: ${Y.darkApp} !important;
790
+ color: ${Y.darkText} !important;
791
+ }
792
+
793
+ ${J} .exhibition-slideshow-current-viewport,
794
+ ${J} .exhibition-slideshow-preview-frame {
795
+ background: ${Y.darkStage} !important;
796
+ }
797
+
798
+ ${J} .exhibition-slideshow-heading {
799
+ color: ${Y.darkText} !important;
800
+ }
801
+
802
+ ${J} .exhibition-slideshow-muted {
803
+ color: ${Y.darkMuted} !important;
804
+ }
805
+
806
+ ${J} .exhibition-slideshow-preview-card,
807
+ ${J} .exhibition-slideshow-slide-strip,
808
+ ${J} .exhibition-slideshow-slide-card,
809
+ ${J} .exhibition-slideshow-content-item,
810
+ ${J} .exhibition-slideshow-content-empty,
811
+ ${J} .exhibition-slideshow-navigation,
812
+ ${J} .exhibition-slideshow-current-preview {
813
+ background: ${Y.darkPanel} !important;
814
+ border-color: ${Y.darkBorder} !important;
815
+ color: ${Y.darkText} !important;
816
+ }
817
+
818
+ ${J} .exhibition-slideshow-content-item-selected {
819
+ background: ${Y.darkSelected} !important;
820
+ border-color: ${Y.pink} !important;
821
+ }
822
+
823
+ ${J} .exhibition-slideshow-toolbar,
824
+ ${J} .exhibition-slideshow-current-toolbar {
825
+ background: ${Y.darkPanelHeader} !important;
826
+ border-color: ${Y.darkBorder} !important;
827
+ color: ${Y.darkText} !important;
828
+ }
829
+
830
+ ${J} .exhibition-slideshow-navigation button,
831
+ ${J} .exhibition-slideshow-navigation-current,
832
+ ${J} .exhibition-slideshow-toolbar button,
833
+ ${J} .exhibition-slideshow-slide-card button,
834
+ ${J} .exhibition-slideshow-content-item button,
835
+ ${J} .exhibition-slideshow-current-control {
836
+ background: ${Y.darkPanelSoft} !important;
837
+ border-color: ${Y.darkBorder} !important;
838
+ color: ${Y.darkText} !important;
839
+ }
840
+
841
+ ${J} .exhibition-slideshow-navigation button:not(:disabled):hover,
842
+ ${J} .exhibition-slideshow-toolbar button:not(:disabled):hover,
843
+ ${J} .exhibition-slideshow-slide-card button:not(:disabled):hover,
844
+ ${J} .exhibition-slideshow-content-item button:not(:disabled):hover,
845
+ ${J} .exhibition-slideshow-current-control:not(:disabled):hover {
846
+ background: ${Y.darkHover} !important;
847
+ color: #fff !important;
848
+ }
849
+ `,Ls=h.default.div`
850
+ display: flex;
723
851
  flex: 1;
724
- position: relative;
725
- z-index: 7;
726
- `,zr=d.default.div`
852
+ justify-content: center;
853
+ align-items: center;
854
+ `,Rs=h.default.div`
855
+ position: absolute;
856
+ top: 3rem;
857
+ z-index: 40;
727
858
  display: flex;
728
- justify-content: space-around;
729
- width: 100%;
730
- background: #fff;
731
- border-top: 1px solid #cbcbcb;
732
- padding: 0.5em;
733
- height: 3.4rem;
734
- `,Br=d.default.button`
735
- //background: red;
736
- padding: 0.5em 1em;
737
- width: 32%;
859
+ flex-direction: column;
860
+ gap: 0.25rem;
861
+ padding: 0.25rem;
862
+ border: 1px solid rgba(15, 23, 42, 0.16);
863
+ border-radius: 6px;
864
+ background: rgba(255, 255, 255, 0.94);
865
+ box-shadow: 0 8px 22px rgba(15, 23, 42, 0.12);
866
+
867
+ ${q} {
868
+ border-color: ${Y.lightBorder};
869
+ background: rgba(255, 255, 255, 0.96);
870
+ box-shadow: 0 8px 22px rgba(38, 33, 42, 0.12);
871
+ }
738
872
 
739
- border-radius: 5px;
740
- border: none;
741
- background: #ffffff;
742
- `,Vr=d.default.button`
743
- padding: 0.5em 1em;
744
- width: 32%;
873
+ ${J} {
874
+ border-color: ${Y.darkBorder};
875
+ background: rgba(38, 33, 42, 0.94);
876
+ box-shadow: 0 12px 28px rgba(0, 0, 0, 0.36);
877
+ }
745
878
 
746
- border-radius: 5px;
879
+ ${e=>e.$side===`left`?h.css`
880
+ left: 1rem;
881
+ `:h.css`
882
+ right: 1rem;
883
+ `}
884
+ `,zs=h.default.button`
885
+ width: 2.35rem;
886
+ height: 2.35rem;
887
+ border: 0;
888
+ border-radius: 4px;
889
+ background: transparent;
890
+ color: #555;
891
+ display: flex;
892
+ align-items: center;
893
+ justify-content: center;
894
+ font-size: 1.2rem;
895
+ cursor: pointer;
747
896
 
748
- background: #5e59c2;
749
- border: 1px solid rgba(0, 0, 0, 0.21);
750
- color: #ffffff;
751
- `,Hr=d.default.div`
752
- position: relative;
753
- width: 32%;
754
- margin: 0 0.75em;
755
- z-index: 9;
756
- `,Ur=d.default.button`
757
- padding: 0.4em 1em 0.65em;
758
- position: absolute;
759
- width: 100%;
760
- bottom: 1em;
761
- background: #ffffff;
762
- box-shadow: 0 3px 18px 0 rgba(0, 0, 0, 0.04);
763
- border-radius: 5px;
764
- border: 1px solid #979797;
765
- letter-spacing: -0.46px;
766
- white-space: nowrap;
767
- overflow: hidden;
768
- text-overflow: ellipsis;
897
+ &:hover {
898
+ background: #f2f3f6;
899
+ color: #111827;
900
+ }
901
+
902
+ &[data-selected="true"] {
903
+ background: ${Y.pink};
904
+ color: #fff;
905
+ }
906
+
907
+ ${q} {
908
+ color: ${Y.lightMuted};
909
+ }
910
+
911
+ ${q}:hover {
912
+ background: #f5eaf0;
913
+ color: ${Y.lightText};
914
+ }
915
+
916
+ ${q}[data-selected="true"] {
917
+ background: ${Y.pink};
918
+ color: #fff;
919
+ }
920
+
921
+ ${J} {
922
+ color: #efe8ed;
923
+ }
924
+
925
+ ${J}:hover {
926
+ background: rgba(255, 255, 255, 0.1);
927
+ color: #fff;
928
+ }
929
+
930
+ ${J}[data-selected="true"] {
931
+ background: ${Y.pink};
932
+ color: #fff;
933
+ }
769
934
 
770
935
  svg {
771
- display: block;
772
- margin: auto;
773
- font-size: 1.8em;
936
+ width: 1.25em;
937
+ height: 1.25em;
774
938
  }
775
- `,Wr=d.default.div`
776
- background: #fff;
939
+ `,Bs=h.default.div`
777
940
  display: flex;
941
+ flex-direction: column;
942
+ gap: 0.25rem;
943
+ `,Vs=h.default.div`
944
+ width: 100%;
945
+ height: 1px;
946
+ margin: 0.25rem 0;
947
+ background: rgba(15, 23, 42, 0.14);
948
+ `,Hs=h.default.aside`
778
949
  position: absolute;
779
- transform: translateY(100%);
780
- overflow-y: auto;
781
- left: 0;
782
- right: 0;
783
- top: 7em;
784
- z-index: 10;
785
- box-shadow:
786
- 0 -5px 15px 0 rgba(0, 0, 0, 0),
787
- 0 -3px 5px 0 rgba(0, 0, 0, 0);
788
- bottom: 0;
950
+ top: 3rem;
951
+ bottom: 1rem;
952
+ z-index: 35;
953
+ display: flex;
954
+ min-width: min(320px, calc(100vw - 2rem));
955
+ max-width: min(720px, calc(100vw - 2rem));
956
+ background: #fff;
957
+ border: 1px solid rgba(15, 23, 42, 0.16);
958
+ border-radius: 6px;
959
+ box-shadow: 0 16px 40px rgba(15, 23, 42, 0.18);
960
+ overflow: hidden;
961
+ opacity: ${e=>e.$open?1:0};
962
+ pointer-events: ${e=>e.$open?`auto`:`none`};
789
963
  transition:
790
- 0.3s transform ease-in-out,
791
- 0.3s box-shadow;
792
- ${e=>e.$open&&d.css`
793
- box-shadow:
794
- 0 -5px 15px 0 rgba(0, 0, 0, 0.1),
795
- 0 -3px 5px 0 rgba(0, 0, 0, 0.1);
796
- transform: translateY(0);
797
- `}
964
+ opacity 180ms ease,
965
+ transform 180ms ease;
966
+
967
+ ${q} {
968
+ background: ${Y.lightPanel};
969
+ border-color: ${Y.lightPanelBorder};
970
+ border-radius: 10px;
971
+ color: ${Y.lightText};
972
+ box-shadow: 0 18px 42px rgba(38, 33, 42, 0.14);
973
+ }
798
974
 
799
- ${Yt} {
800
- box-shadow: none;
801
- padding-left: 0.5em;
802
- padding-right: 0.5em;
803
- font-size: 1.1em;
975
+ ${q} [class~="bg-white"] {
976
+ background-color: ${Y.lightPanel} !important;
804
977
  }
805
- `,Gr=d.default.div`
806
- position: absolute;
807
- transform: translateX(-100%);
808
- background: #fff;
809
- left: 0;
810
- top: 0;
811
- bottom: 0;
812
- z-index: 10;
813
- overflow-y: auto;
814
- transition: 0.5s transform;
815
- ${e=>e.$open&&d.css`
816
- transform: translateX(0);
817
- `}
818
- `,Kr=d.default.div`
819
- background: rgba(0, 0, 0, 0.4);
820
- pointer-events: none;
821
- position: absolute;
822
- z-index: 8;
823
- top: 0;
824
- left: 0;
825
- right: 0;
826
- bottom: 0;
827
- opacity: 0;
828
- transition: opacity 0.5s;
829
978
 
830
- ${e=>e.$open&&d.css`
831
- pointer-events: visible;
832
- opacity: 1;
833
- `}
834
- `,qr=d.default.div`
979
+ ${q} [class*="bg-[#f8f6f3]"] {
980
+ background-color: ${Y.lightPanelSoft} !important;
981
+ }
982
+
983
+ ${q} [class*="border-[#dcd5ce]"] {
984
+ border-color: ${Y.lightBorder} !important;
985
+ }
986
+
987
+ ${J} {
988
+ --exhibition-primary: ${Y.pink};
989
+ --exhibition-field-bg: ${Y.darkPanelSoft};
990
+ --exhibition-field-border: ${Y.darkBorder};
991
+ --exhibition-text: ${Y.darkText};
992
+ --exhibition-muted: ${Y.darkMuted};
993
+ --exhibition-button-bg: ${Y.darkPanelSoft};
994
+ --exhibition-button-text: #fff;
995
+ --exhibition-inactive-button-text: ${Y.darkText};
996
+
997
+ background: ${Y.darkPanel};
998
+ border-color: ${Y.darkBorderSoft};
999
+ color: ${Y.darkText};
1000
+ box-shadow: 0 20px 50px rgba(0, 0, 0, 0.42);
1001
+ }
1002
+
1003
+ ${J} ${$a} {
1004
+ background: ${Y.darkPanelHeader} !important;
1005
+ border-color: ${Y.darkBorder} !important;
1006
+ color: ${Y.darkText} !important;
1007
+ box-shadow:
1008
+ inset 0 -1px 0 0 ${Y.darkBorder},
1009
+ inset 0 1px 0 0 ${Y.darkBorder} !important;
1010
+ }
1011
+
1012
+ ${J} ${U} {
1013
+ color: ${Y.darkText} !important;
1014
+ }
1015
+
1016
+ ${J} ${U}:hover {
1017
+ background: ${Y.darkHover} !important;
1018
+ color: #fff !important;
1019
+ }
1020
+
1021
+ ${J} [class~="bg-white"],
1022
+ ${J} [class*="bg-[#f8f6f3]"] {
1023
+ background-color: ${Y.darkPanelSoft} !important;
1024
+ }
1025
+
1026
+ ${J} [class*="bg-gray-200"],
1027
+ ${J} [class*="bg-gray-100"],
1028
+ ${J} [class*="bg-me-gray-100"] {
1029
+ background-color: ${Y.darkPanelHeader} !important;
1030
+ color: ${Y.darkText} !important;
1031
+ }
1032
+
1033
+ ${J} [class*="hover:bg-gray-100"]:hover,
1034
+ ${J} [class*="hover:bg-gray-200"]:hover,
1035
+ ${J} [class*="hover:bg-gray-300"]:hover,
1036
+ ${J} [class*="hover:bg-me-gray-100"]:hover,
1037
+ ${J} [class*="hover:bg-me-gray-300"]:hover,
1038
+ ${J} [class*="hover:bg-me-50"]:hover,
1039
+ ${J} [class*="hover:bg-me-100"]:hover,
1040
+ ${J} [class*="hover:bg-me-primary-50"]:hover,
1041
+ ${J} [class*="hover:bg-me-primary-100"]:hover {
1042
+ background-color: ${Y.darkHover} !important;
1043
+ color: #fff !important;
1044
+ }
1045
+
1046
+ ${J} [class*="hover:text-black"]:hover,
1047
+ ${J} [class*="hover:text-gray-"]:hover,
1048
+ ${J} [class*="hover:text-me-"]:hover {
1049
+ color: #fff !important;
1050
+ }
1051
+
1052
+ ${J} label {
1053
+ background-color: transparent !important;
1054
+ color: ${Y.darkLabel} !important;
1055
+ }
1056
+
1057
+ ${q} .exhibition-workbench-muted {
1058
+ color: ${Y.lightMuted} !important;
1059
+ }
1060
+
1061
+ ${J} .exhibition-workbench-muted {
1062
+ color: ${Y.darkMuted} !important;
1063
+ }
1064
+
1065
+ ${J} .exhibition-workbench-tab[class*="text-me-primary"] {
1066
+ color: ${Y.darkText} !important;
1067
+ }
1068
+
1069
+ ${J} fieldset {
1070
+ background-color: ${Y.darkPanelSoft} !important;
1071
+ border-color: ${Y.darkBorder} !important;
1072
+ color: ${Y.darkText} !important;
1073
+ }
1074
+
1075
+ ${J} [class*="bg-me-50"],
1076
+ ${J} [class*="bg-me-100"],
1077
+ ${J} [class*="bg-me-primary-50"],
1078
+ ${J} [class*="bg-me-primary-100"] {
1079
+ background-color: ${Y.darkSelected} !important;
1080
+ color: ${Y.darkText} !important;
1081
+ }
1082
+
1083
+ ${J} [class*="text-me-700"],
1084
+ ${J} [class*="text-me-500"],
1085
+ ${J} [class*="text-me-primary-500"],
1086
+ ${J} [class*="text-me-primary-600"],
1087
+ ${J} [class*="text-me-primary-700"] {
1088
+ color: ${Y.darkText} !important;
1089
+ }
1090
+
1091
+ ${J} [class*="bg-me-gray-100"] {
1092
+ background-color: ${Y.darkPanelHeader} !important;
1093
+ color: ${Y.darkText} !important;
1094
+ }
1095
+
1096
+ ${J} [class*="border-b-me-gray-300"] {
1097
+ border-bottom-color: ${Y.darkSelected} !important;
1098
+ }
1099
+
1100
+ ${J} [class*="hover:bg-me-gray-300"]:hover,
1101
+ ${J} [class*="bg-me-gray-300"] {
1102
+ background-color: ${Y.darkHover} !important;
1103
+ color: #fff !important;
1104
+ }
1105
+
1106
+ ${J} [data-active],
1107
+ ${J} [data-selected],
1108
+ ${J} [aria-selected="true"],
1109
+ ${J} [data-canvas-selected="true"] {
1110
+ color: #fff !important;
1111
+ }
1112
+
1113
+ ${J} [data-active="true"],
1114
+ ${J} [data-selected="true"],
1115
+ ${J} [aria-selected="true"] {
1116
+ background-color: ${Y.pink} !important;
1117
+ }
1118
+
1119
+ ${J} [class*="bg-me-primary-500"],
1120
+ ${J} [class*="bg-me-500"],
1121
+ ${J} [class*="bg-me-700"] {
1122
+ background-color: ${Y.pink} !important;
1123
+ color: #fff !important;
1124
+ }
1125
+
1126
+ ${J} [class*="hover:bg-me-primary-500"]:hover,
1127
+ ${J} [class*="hover:bg-me-primary-600"]:hover,
1128
+ ${J} [class*="hover:bg-me-600"]:hover,
1129
+ ${J} [class*="hover:bg-me-800"]:hover {
1130
+ background-color: ${Y.pinkHover} !important;
1131
+ color: #fff !important;
1132
+ }
1133
+
1134
+ ${J} [class*="text-[#25211f]"],
1135
+ ${J} [class*="text-black"] {
1136
+ color: ${Y.darkText} !important;
1137
+ }
1138
+
1139
+ ${J} [class*="text-black/40"],
1140
+ ${J} [class*="text-black/50"],
1141
+ ${J} [class*="text-black/60"] {
1142
+ color: ${Y.darkMuted} !important;
1143
+ }
1144
+
1145
+ ${J} [class*="border-[#dcd5ce]"],
1146
+ ${J} [class*="border-[#e4ddd6]"],
1147
+ ${J} .border,
1148
+ ${J} .border-b {
1149
+ border-color: ${Y.darkBorder} !important;
1150
+ }
1151
+
1152
+ ${J} select,
1153
+ ${J} input,
1154
+ ${J} textarea {
1155
+ background-color: ${Y.darkPanelSoft} !important;
1156
+ border-color: rgba(246, 241, 244, 0.18) !important;
1157
+ color: ${Y.darkText} !important;
1158
+ }
1159
+
1160
+ ${J} input::placeholder,
1161
+ ${J} textarea::placeholder {
1162
+ color: ${Y.darkSubtle} !important;
1163
+ }
1164
+
1165
+ ${J} .exhibition-tour-step-card {
1166
+ background-color: ${Y.darkPanelSoft} !important;
1167
+ border-color: ${Y.darkBorder} !important;
1168
+ color: ${Y.darkText} !important;
1169
+ }
1170
+
1171
+ ${J} .exhibition-tour-step-body,
1172
+ ${J} .exhibition-tour-step-body * {
1173
+ background-color: transparent !important;
1174
+ color: ${Y.darkText} !important;
1175
+ }
1176
+
1177
+ ${J} a,
1178
+ ${J} button {
1179
+ color: inherit;
1180
+ }
1181
+
1182
+ ${J} .exhibition-aspect-warning {
1183
+ background-color: ${Y.darkWarning} !important;
1184
+ border-color: ${Y.darkWarningBorder} !important;
1185
+ color: ${Y.darkText} !important;
1186
+ }
1187
+
1188
+ ${J} .exhibition-aspect-warning [class*="text-me-"],
1189
+ ${J} .exhibition-aspect-warning [class*="text-black"] {
1190
+ color: ${Y.darkText} !important;
1191
+ }
1192
+
1193
+ ${J} fieldset button {
1194
+ color: ${Y.darkText} !important;
1195
+ }
1196
+
1197
+ ${J} fieldset button:hover {
1198
+ background-color: ${Y.darkHover} !important;
1199
+ color: #fff !important;
1200
+ }
1201
+
1202
+ ${J} fieldset button[data-active="true"] {
1203
+ background-color: ${Y.pink} !important;
1204
+ color: #fff !important;
1205
+ }
1206
+
1207
+ ${J} [role="menu"],
1208
+ ${J} [class*="DropdownMenu"],
1209
+ ${J} [class*="DropdownContent"] {
1210
+ background-color: ${Y.darkPanelHeader} !important;
1211
+ color: ${Y.darkText} !important;
1212
+ border-color: ${Y.darkBorder} !important;
1213
+ }
1214
+
1215
+ ${e=>e.$side===`left`?h.css`
1216
+ left: 4.5rem;
1217
+ transform: translateX(${e.$open?`0`:`-0.75rem`});
1218
+ `:h.css`
1219
+ right: 4.5rem;
1220
+ transform: translateX(${e.$open?`0`:`0.75rem`});
1221
+ `}
1222
+
1223
+ @media (max-width: 760px) {
1224
+ top: 4.25rem;
1225
+ bottom: 1rem;
1226
+ left: 1rem;
1227
+ right: 1rem;
1228
+ width: auto !important;
1229
+ max-width: none;
1230
+ min-width: 0;
1231
+ transform: translateY(${e=>e.$open?`0`:`0.75rem`});
1232
+ }
1233
+ `,Us=h.default.div`
1234
+ display: flex;
1235
+ flex: 1;
1236
+ min-width: 0;
1237
+ height: 100%;
1238
+ overflow: hidden;
1239
+ `,Ws=h.default.div`
835
1240
  display: flex;
836
1241
  flex-direction: column;
837
1242
  flex: 1;
@@ -840,16 +1245,16 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
840
1245
  max-width: 100%;
841
1246
  min-width: 0;
842
1247
  overflow: hidden;
843
- `,Jr=d.default.header`
1248
+ `,Gs=h.default.header`
844
1249
  //box-shadow: 0 3px 2px 0 rgba(0, 0, 0, 0.04), 0 1px 0 0 rgba(0, 0, 0, 0.17);
845
1250
  z-index: 200;
846
- `,Yr=d.default.div`
1251
+ `,Ks=h.default.div`
847
1252
  background: #fff;
848
- `,Xr=d.default.div`
1253
+ `,qs=h.default.div`
849
1254
  display: flex;
850
1255
  flex: 1 1 0;
851
1256
  min-height: 0;
852
- `,Zr=d.default.div`
1257
+ `,Js=h.default.div`
853
1258
  background: #fff;
854
1259
  display: flex;
855
1260
  flex-direction: column;
@@ -857,18 +1262,18 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
857
1262
  max-width: 720px;
858
1263
  align-items: flex-end;
859
1264
 
860
- ${e=>e.$motion?d.css`
1265
+ ${e=>e.$motion?h.css`
861
1266
  transition: max-width 400ms;
862
1267
  `:``}
863
1268
 
864
- ${e=>{switch(e.$state){case`entering`:return d.css`
1269
+ ${e=>{switch(e.$state){case`entering`:return h.css`
865
1270
  max-width: ${e.$width};
866
- `;case`exiting`:return d.css`
1271
+ `;case`exiting`:return h.css`
867
1272
  max-width: 0;
868
- `;case`unmounted`:case`exited`:return d.css`
1273
+ `;case`unmounted`:case`exited`:return h.css`
869
1274
  max-width: 0;
870
1275
  `}}}
871
- `,Qr=d.default.div`
1276
+ `,Ys=h.default.div`
872
1277
  flex: 1 1 0;
873
1278
  background: #e3e7f0;
874
1279
  // background: #efefef;
@@ -887,7 +1292,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
887
1292
  > * {
888
1293
  min-width: 0;
889
1294
  }
890
- `,$r=d.default.div`
1295
+ `,Xs=h.default.div`
891
1296
  background: #fff;
892
1297
  display: flex;
893
1298
  flex-direction: column;
@@ -896,14 +1301,14 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
896
1301
 
897
1302
  ${e=>e.$motion?`transition: max-width 400ms;`:``}
898
1303
 
899
- ${e=>{switch(e.$state){case`entering`:return d.css`
1304
+ ${e=>{switch(e.$state){case`entering`:return h.css`
900
1305
  max-width: ${e.$width};
901
- `;case`exiting`:return d.css`
1306
+ `;case`exiting`:return h.css`
902
1307
  max-width: 0;
903
- `;case`unmounted`:case`exited`:return d.css`
1308
+ `;case`unmounted`:case`exited`:return h.css`
904
1309
  max-width: 0;
905
1310
  `}}}
906
- `,ei=d.default.div`
1311
+ `,Zs=h.default.div`
907
1312
  display: flex;
908
1313
  flex: 1;
909
1314
  height: 100%;
@@ -911,28 +1316,28 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
911
1316
  transition: min-width 400ms;
912
1317
  overflow: hidden;
913
1318
 
914
- ${e=>{switch(e.$menu){case`top`:return d.css`
1319
+ ${e=>{switch(e.$menu){case`top`:return h.css`
915
1320
  flex-direction: column;
916
- ${K} {
1321
+ ${X} {
917
1322
  flex-direction: column;
918
1323
  }
919
- `;case`left`:return d.css`
1324
+ `;case`left`:return h.css`
920
1325
  flex-direction: row;
921
- ${K} {
1326
+ ${X} {
922
1327
  flex-direction: row;
923
1328
  }
924
- `;default:case`bottom`:return d.css`
1329
+ `;default:case`bottom`:return h.css`
925
1330
  flex-direction: column-reverse;
926
- ${K} {
1331
+ ${X} {
927
1332
  flex-direction: column;
928
1333
  }
929
- `;case`right`:return d.css`
1334
+ `;case`right`:return h.css`
930
1335
  flex-direction: row-reverse;
931
- ${K} {
1336
+ ${X} {
932
1337
  flex-direction: row;
933
1338
  }
934
1339
  `}}}
935
- `,ti=d.default.div`
1340
+ `,Qs=h.default.div`
936
1341
  background: #fff;
937
1342
  border-top: 1px solid #e3e7f0;
938
1343
  border-right: 1px solid #e3e7f0;
@@ -942,7 +1347,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
942
1347
  /* width: 3.35em;
943
1348
  padding: 0.3em;
944
1349
  gap: 0.3em; */
945
- `,ni=d.default.button`
1350
+ `,$s=h.default.button`
946
1351
  cursor: pointer;
947
1352
  aspect-ratio: 1;
948
1353
  width: 3em;
@@ -969,21 +1374,139 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
969
1374
  font-size: 1.5em;
970
1375
  color: #999;
971
1376
  }
972
- `,K=d.default.div`
1377
+ `,X=h.default.div`
973
1378
  display: flex;
974
1379
  box-shadow:
975
1380
  0 -3px 2px 0 rgba(0, 0, 0, 0.04),
976
1381
  0 -1px 0 0 rgba(0, 0, 0, 0.17);
977
1382
 
978
- ${e=>!e.$open&&(e.$position===`top`||e.$position===`bottom`)?d.css`
1383
+ ${e=>!e.$open&&(e.$position===`top`||e.$position===`bottom`)?h.css`
979
1384
  display: none;
980
1385
  `:``}
981
- `,q=d.default.div`
1386
+ `,Z=h.default.div`
982
1387
  display: flex;
983
1388
  flex-direction: column;
984
1389
  flex: 1;
985
1390
  min-width: 0;
986
1391
  overflow: hidden;
987
- `,ri=(0,l.memo)(function(e){let t=ce(),n=Pt(),{vault:r}=(0,l.useContext)(p.ReactVaultContext),i=r||void 0,a=(0,l.useRef)(null),o=(0,l.useRef)(null),{loading:s,state:d,leftPanels:f,centerPanels:m,rightPanels:h,modals:g=[],actions:_}=n,v=f.find(e=>e.id===d.leftPanel.current),y=h.find(e=>e.id===d.rightPanel.current),x=m.find(e=>e.id===d.centerPanel.current),S=g.find(e=>e.id===d.modal.current),C=d.pinnedRightPanel.pinned?h.find(e=>e.id===d.pinnedRightPanel.current):void 0,[w]=Sr([`(max-width: 1020px)`]),ee=e.isLoading||!1,ne=(0,l.useMemo)(()=>(n.background||[]).map((e,t)=>(0,u.jsx)(l.Fragment,{children:e.render()},t)),[n.background]),E=Ir(`left-panel/${v?.id}`,{left:!0,marginLeft:60,minWidthPx:v?.options?.minWidth||200,maxWidthPx:v?.options?.maxWidth||720,loading:s}),D=Ir(`right-panel/${y?.id}`,{left:!1,minWidthPx:y?.options?.minWidth||320,maxWidthPx:y?.options?.maxWidth||720,loading:s}),O=y&&(C?.id!==y.id||!(0,T.default)(d.pinnedRightPanel.state,d.rightPanel.state)),k=E.widthB===`auto`?void 0:()=>E.setWidths({widthA:`auto`,widthB:Lt({options:v?.options,fallback:320})}),A=D.widthB===`auto`?void 0:()=>D.setWidths({widthA:`auto`,widthB:Lt({options:y?.options,fallback:320})});if((0,l.useLayoutEffect)(()=>{w&&d.leftPanel.open&&d.rightPanel.open&&(_.leftPanel.close(),_.rightPanel.close())},[w]),(0,l.useLayoutEffect)(()=>{if(x&&x.onMount)return x.onMount(d.centerPanel.state||x.defaultState||{},{...n,current:_.centerPanel,vault:i},t)},[d.centerPanel.current]),(0,l.useLayoutEffect)(()=>{h.length&&_.rightPanel.change({id:h[0].id}),f.length&&_.leftPanel.change({id:f[0].id}),m.length&&_.centerPanel.change({id:m[0].id})},[]),s)return null;let j=t=>(0,u.jsx)(ei,{$menu:e.leftPanelMenuPosition||`bottom`,ref:E.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:d.leftPanel.open||t!==`exited`?E.widthB:void 0,minWidth:v?.options?.minWidth},children:ee?(0,u.jsx)(q,{children:(0,u.jsx)(Mr,{})}):(0,u.jsxs)(u.Fragment,{children:[e.leftPanelMenu?(0,u.jsx)(K,{$open:d.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,u.jsx)(q,{children:d.leftPanel.open||t!==`exited`?(0,u.jsx)(u.Fragment,{children:v?(0,u.jsx)($t,{isLeft:!0,noHeader:!0,transition:t,panel:v,state:d.leftPanel,actions:_.leftPanel}):null}):null})]})}),M=()=>!S||d.modal.open===!1?null:(0,u.jsx)(c.Modal,{title:S.label,onClose:()=>_.modal.close(),children:Rt(S.render(d.modal.state||S.defaultState||{},{...n,current:_.modal,vault:i},t))}),re=()=>(0,u.jsxs)(ei,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,u.jsx)(K,{$open:d.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,u.jsx)(q,{children:(0,u.jsx)(b.ErrorBoundary,{resetKeys:[x?.id],FallbackComponent:Ft,children:ee?(0,u.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,u.jsx)(jr,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):d.centerPanel.open&&x?Rt(x.render(d.centerPanel.state||x.defaultState||{},{...n,current:_.centerPanel,vault:i},t)):null})})]}),N=t=>(0,u.jsx)(ei,{$menu:e.rightPanelMenuPosition||`bottom`,ref:D.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:d.rightPanel.open||t!==`exited`?D.widthB:void 0,minWidth:y?.options?.minWidth},children:ee?(0,u.jsx)(q,{children:(0,u.jsx)(Mr,{})}):(0,u.jsxs)(u.Fragment,{children:[e.rightPanelMenu?(0,u.jsx)(K,{$open:d.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,u.jsx)(q,{children:d.rightPanel.open||t!==`exited`?(0,u.jsxs)(u.Fragment,{children:[O?(0,u.jsx)($t,{panel:y,state:d.rightPanel,actions:_.rightPanel,pinActions:_.pinnedRightPanel,available:h}):null,C?(0,u.jsx)($t,{panel:C,state:d.pinnedRightPanel,actions:_.pinnedRightPanel,close:_.rightPanel.close}):null]}):null})]})});return w?(0,u.jsxs)(qr,{children:[e.hideHeader?null:(0,u.jsxs)(Jr,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsx)(Xr,{children:(0,u.jsxs)(Lr,{children:[(0,u.jsx)(Rr,{children:re()}),(0,u.jsxs)(zr,{children:[f.length>0?(0,u.jsx)(Br,{onClick:_.leftPanel.toggle,children:v?.label}):null,h.length>0?(0,u.jsx)(Hr,{children:(0,u.jsxs)(Ur,{onClick:_.rightPanel.toggle,children:[(0,u.jsx)(Se,{rotate:180}),y?.label]})}):null,(0,u.jsx)(Vr,{children:`Preview`})]}),h.length>0?(0,u.jsx)(Wr,{$open:d.rightPanel.open,children:N()}):null,f.length>0?(0,u.jsx)(Gr,{$open:d.leftPanel.open,children:j()}):null,f.length>0||h.length>0?(0,u.jsx)(Kr,{$open:d.leftPanel.open||d.rightPanel.open,onClick:()=>{_.leftPanel.close(),_.rightPanel.close()}}):null]})})]}):(0,u.jsxs)(qr,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,u.jsxs)(Jr,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(Xr,{ref:e=>{E.refs.container.current=e,D.refs.container.current=e},children:[f.length>0?(0,u.jsx)(c.PanelSideMenu,{current:d.leftPanel.current,items:f.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,onClick:()=>{d.leftPanel.current===e.id?_.leftPanel.toggle():_.leftPanel.change({id:e.id})}})),open:d.leftPanel.open}):null,f.length>0?(0,u.jsx)(te.Transition,{nodeRef:a,in:d.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Zr,{ref:a,$width:E.widthB,$state:e,$motion:!0,children:j(e)}),(0,u.jsx)(Ar,{ref:E.refs.resizer,reset:k,dir:`left`,transition:e,open:d.leftPanel.open||e!==`exited`,actions:_.leftPanel})]})}):null,(0,u.jsx)(Qr,{children:re()}),h.length>0?(0,u.jsx)(te.Transition,{nodeRef:o,in:d.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ar,{ref:D.refs.resizer,dir:`right`,reset:A,open:d.rightPanel.open,actions:_.rightPanel}),(0,u.jsx)($r,{ref:o,$width:D.widthB,$state:e,$motion:!0,children:N(e)})]})}):null]}),(0,u.jsx)(Yr,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ne}),(0,u.jsx)(u.Fragment,{children:M()})]})});function J(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 ii(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,m.original)(e.state)}:{}})}}else e.stack=[]}function Y(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&&ii(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&&ii(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(It(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 ai=(0,m.produce)((e,t)=>{switch(t.panel){case`centerPanel`:Y(e.centerPanel,t);break;case`leftPanel`:Y(e.leftPanel,t);break;case`rightPanel`:Y(e.rightPanel,t);break;case`modal`:Y(e.modal,t);break;case`pinnedRightPanel`:Y(e.pinnedRightPanel,t);break}});function X(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function oi(){return{leftPanel:X(),centerPanel:X(),rightPanel:X(),modal:X(),pinnedRightPanel:{...X(),pinnable:!0,pinned:!1}}}const si=(0,l.createContext)({resource:null});function ci(){return(0,l.useContext)(si)}function li(){let e=(0,p.useVault)(),{resource:t}=ci();O(t,`Nothing selected`);let{id:n,type:r}=t;return(0,p.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function ui(){let{resource:e}=ci();return e}function di({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,u.jsx)(si.Provider,{value:(0,l.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}var fi=class extends l.Component{constructor(...e){super(...e),R(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 Z(e,t){return typeof e==`string`?{id:e,state:t}:e}const pi=(0,l.memo)(function(e){let t=P(),n=br(),r=t.layout,[i,a]=(0,l.useReducer)(ai,void 0,oi),o={centerPanel:J(`centerPanel`,a),leftPanel:J(`leftPanel`,a),rightPanel:J(`rightPanel`,a),pinnedRightPanel:J(`pinnedRightPanel`,a),modal:J(`modal`,a),editingStack:Cn()};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];O(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Z(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}=Z(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}=Z(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}=Z(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function m(e,t){let{id:r}=Z(e,t),[,i]=s(r);n.emit(`layout.toggle`,{id:r}),i.toggle()}function h(e,t={},{reset:i,property:a,stacked:s,forceOpen:c}={}){let l={resource:(0,_.isSpecificResource)(e)?e:{type:`SpecificResource`,source:e},...t};n.emit(`layout.edit`,l),o.editingStack.edit(l,i),r.rightPanels.find(e=>e.id===`@manifest-editor/editor`)&&(c?o.rightPanel.open({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a},unique:!0}):o.rightPanel.change({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a},unique:!0}))}function g(e){o.editingStack.create(e,{}),n.emit(`layout.create`,e),r.modals?.find(e=>e.id===`@manifest-editor/creator`)?o.modal.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e}):r.rightPanels.find(e=>e.id===`@manifest-editor/creator`)&&o.rightPanel.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e})}let v={open:c,change:f,close:p,toggle:m,stack:d,edit:h,create:g};return(0,u.jsx)(At.Provider,{value:(0,l.useMemo)(()=>({...o,...v}),[r]),children:(0,u.jsx)(jt.Provider,{value:i,children:e.children})})}),mi=[{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`}],hi=new ne.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function gi({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o}){let s=M(),c=(0,l.useMemo)(()=>({...s,...e,previews:e?.previews||s.previews||mi}),[s,e]);return(0,u.jsx)(fi,{children:(0,u.jsx)(p.ImageServiceLoaderContext.Provider,{value:hi,children:(0,u.jsx)(De,{resource:a,children:(0,u.jsx)(sn,{children:(0,u.jsx)(d.ThemeProvider,{theme:r||_n,children:(0,u.jsx)(N,{config:c,saveConfig:t,children:(0,u.jsx)(Nn,{children:(0,u.jsx)(pi,{children:(0,u.jsx)(Wn,{children:(0,u.jsx)(Re,{previews:i||[],configs:c.previews,children:(0,u.jsx)(p.AtlasStoreProvider,{children:n})})})})})})})})})})})}const Q={},_i=(0,l.createContext)(`global`);function vi(){return(0,l.useContext)(_i)}function yi(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function bi(e){let t=vi(),[,n]=(0,l.useReducer)(e=>e+1,0),r=(0,l.useMemo)(()=>(Q[t]||(Q[t]={}),Q[t][e]||(Q[t][e]={name:e,emitter:(0,w.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),Q[t][e]),[t,e]);return $(r,`abort`,n),$(r,`error`,n),$(r,`complete`,n),$(r,`running`,n),r}function $(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 xi=()=>void 0;function Si(e,t){let n=bi(e);return $(n,`complete`,t||xi),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=yi();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 Ci(e,t){let n=bi(e);return $(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 wi({children:e}){return(0,u.jsx)(_i.Provider,{value:(0,l.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function Ti(e){return!1}function Ei({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(`
988
- `);for(let t of e){if(v)try{let e=await Ti(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=rt,exports.AppMenuProvider=st,exports.AppProvider=ue,exports.AppReactContext=ae,exports.AppResourceInstanceProvider=Ee,exports.AppResourceProvider=De,exports.AppStateReactContext=oe,exports.AtlasStoreProvider=p.AtlasStoreProvider,exports.AtlasStoreReactContext=p.AtlasStoreReactContext,exports.BaseAnnotationCreator=vn,exports.BaseEditor=Rn,exports.BaseEditorBackButton=Fn,exports.BaseEditorCloseButton=In,exports.ConfigEditor=Vn,exports.ConfigProvider=N,exports.ConfigReactContext=A,exports.ContextMenuProvider=Wn,exports.ContextMenuReactContext=Un,exports.CreatorInitialData=pn,exports.EditingStack=Nn,exports.EditingStackContext=W,exports.EventEmitterProvider=yr,exports.ExportPanel=hr,exports.HOMEPAGE_COLLECTION=an,exports.HandleContainer=Tr,exports.HandleControls=Ar,exports.InlineEditingStack=Pn,exports.Layout=ri,exports.LayoutActionsReactContext=At,exports.LayoutStateReactContext=jt,exports.ModularPanel=$t,exports.ModularPanelHeader=Yt,exports.ModulePanelButton=U,exports.MultiAppProvider=me,exports.PanelError=Ft,exports.PreviewButton=nt,exports.PreviewProvider=Re,exports.PreviewVaultBoundary=cn,exports.PreviewVaultContext=sn,exports.PrimeAppReactContext=ie,exports.ReactEmitterContext=vr,exports.ResourceEditingProvider=di,exports.ResourceEditingReactContext=si,exports.SaveConfigReactContext=j,exports.ShellProvider=gi,exports.TaskBridge=wi,exports.UniversalCopyTarget=Ei,exports.analyse=pt,exports.analyseJson=ht,exports.baseCreator=gn,exports.baseEditor=zn,exports.copyToClipboard=St,exports.createActionIdentity=xt,exports.createDownload=B,exports.createPreviewVault=en,exports.detectMedia=ft,exports.editBasedOnResource=Ln,exports.extendApp=Tt,exports.getDefaultLayoutState=oi,exports.getDefaultPanelState=X,exports.getFormat=vt,exports.getImageDimensions=yt,exports.getManifestNomalized=bt,exports.isPinnableState=It,exports.layoutReducer=ai,exports.mapApp=wt,exports.panelSizing=Lt,exports.polygonToBoundingBox=lt,exports.randomId=Ct,exports.renderHelper=Rt,exports.useAnnotationCreatorState=gr,exports.useAnnotationPageEditor=An,exports.useApp=P,exports.useAppInstance=se,exports.useAppMenu=at,exports.useAppMenuItem=ot,exports.useAppResource=I,exports.useAppResourceInstance=Te,exports.useAppState=ce,exports.useApps=fe,exports.useAtlasStore=ct,exports.useAvailableLayouts=Nt,exports.useCollectionEditor=On,exports.useConfig=M,exports.useCreatingResource=En,exports.useCreator=ln,exports.useCustomContextMenu=Jn,exports.useDecayState=Bn,exports.useEditingContext=ci,exports.useEditingResource=wn,exports.useEditingResourceStack=Tn,exports.useEditingStack=Cn,exports.useEditor=jn,exports.useEmitter=br,exports.useEvent=xr,exports.useGenericEditor=kn,exports.useHighlightedImageResource=V,exports.useHoverHighlightImageResource=Dt,exports.useInitialData=fn,exports.useInlineCreator=un,exports.useLayoutActions=H,exports.useLayoutProvider=Pt,exports.useLayoutState=Mt,exports.useLocalStorage=c.useLocalStorage,exports.useManifestEditor=Dn,exports.useMatchMedia=Sr,exports.useOptionalLocalStorage=c.useOptionalLocalStorage,exports.useOptionalResource=ui,exports.usePanelActions=J,exports.usePreviewContext=Be,exports.usePreviewHistory=on,exports.usePreviewVault=tn,exports.usePreviews=ze,exports.useResource=li,exports.useResourceContextMenuItems=Kn,exports.useSaveConfig=re,exports.useSaveVault=Cr,exports.useSetCustomTitle=qt,exports.useSvgTools=wr,exports.useTask=bi,exports.useTaskDispatch=Si,exports.useTaskEvent=$,exports.useTaskRunner=Ci,exports.useTemporaryHighlight=Et;
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
+ position: relative;
1394
+ display: flex;
1395
+ flex: 1;
1396
+ overflow: hidden;
1397
+ flex-direction: column;
1398
+ `,rc=h.default.div`
1399
+ flex: 1;
1400
+ position: relative;
1401
+ z-index: 7;
1402
+ `,ic=h.default.div`
1403
+ display: flex;
1404
+ justify-content: space-around;
1405
+ width: 100%;
1406
+ background: #fff;
1407
+ border-top: 1px solid #cbcbcb;
1408
+ padding: 0.5em;
1409
+ height: 3.4rem;
1410
+ `,ac=h.default.button`
1411
+ //background: red;
1412
+ padding: 0.5em 1em;
1413
+ width: 32%;
1414
+
1415
+ border-radius: 5px;
1416
+ border: none;
1417
+ background: #ffffff;
1418
+ `,oc=h.default.button`
1419
+ padding: 0.5em 1em;
1420
+ width: 32%;
1421
+
1422
+ border-radius: 5px;
1423
+
1424
+ background: #5e59c2;
1425
+ border: 1px solid rgba(0, 0, 0, 0.21);
1426
+ color: #ffffff;
1427
+ `,sc=h.default.div`
1428
+ position: relative;
1429
+ width: 32%;
1430
+ margin: 0 0.75em;
1431
+ z-index: 9;
1432
+ `,cc=h.default.button`
1433
+ padding: 0.4em 1em 0.65em;
1434
+ position: absolute;
1435
+ width: 100%;
1436
+ bottom: 1em;
1437
+ background: #ffffff;
1438
+ box-shadow: 0 3px 18px 0 rgba(0, 0, 0, 0.04);
1439
+ border-radius: 5px;
1440
+ border: 1px solid #979797;
1441
+ letter-spacing: -0.46px;
1442
+ white-space: nowrap;
1443
+ overflow: hidden;
1444
+ text-overflow: ellipsis;
1445
+
1446
+ svg {
1447
+ display: block;
1448
+ margin: auto;
1449
+ font-size: 1.8em;
1450
+ }
1451
+ `,lc=h.default.div`
1452
+ background: #fff;
1453
+ display: flex;
1454
+ position: absolute;
1455
+ transform: translateY(100%);
1456
+ overflow-y: auto;
1457
+ left: 0;
1458
+ right: 0;
1459
+ top: 7em;
1460
+ z-index: 10;
1461
+ box-shadow:
1462
+ 0 -5px 15px 0 rgba(0, 0, 0, 0),
1463
+ 0 -3px 5px 0 rgba(0, 0, 0, 0);
1464
+ bottom: 0;
1465
+ transition:
1466
+ 0.3s transform ease-in-out,
1467
+ 0.3s box-shadow;
1468
+ ${e=>e.$open&&h.css`
1469
+ box-shadow:
1470
+ 0 -5px 15px 0 rgba(0, 0, 0, 0.1),
1471
+ 0 -3px 5px 0 rgba(0, 0, 0, 0.1);
1472
+ transform: translateY(0);
1473
+ `}
1474
+
1475
+ ${$a} {
1476
+ box-shadow: none;
1477
+ padding-left: 0.5em;
1478
+ padding-right: 0.5em;
1479
+ font-size: 1.1em;
1480
+ }
1481
+ `,uc=h.default.div`
1482
+ position: absolute;
1483
+ transform: translateX(-100%);
1484
+ background: #fff;
1485
+ left: 0;
1486
+ top: 0;
1487
+ bottom: 0;
1488
+ z-index: 10;
1489
+ overflow-y: auto;
1490
+ transition: 0.5s transform;
1491
+ ${e=>e.$open&&h.css`
1492
+ transform: translateX(0);
1493
+ `}
1494
+ `,dc=h.default.div`
1495
+ background: rgba(0, 0, 0, 0.4);
1496
+ pointer-events: none;
1497
+ position: absolute;
1498
+ z-index: 8;
1499
+ top: 0;
1500
+ left: 0;
1501
+ right: 0;
1502
+ bottom: 0;
1503
+ opacity: 0;
1504
+ transition: opacity 0.5s;
1505
+
1506
+ ${e=>e.$open&&h.css`
1507
+ pointer-events: visible;
1508
+ opacity: 1;
1509
+ `}
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;
989
1512
  //# sourceMappingURL=index.cjs.map