@manifest-editor/shell 2.1.1-next.0.96fdf30 → 2.2.1-cdn.1.2412bf12
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 +174 -154
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +9 -10
- package/dist/index.d.cts +297 -298
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +297 -298
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +178 -158
- package/dist/index.js.map +1 -1
- package/package.json +23 -22
- package/dist/index.css.map +0 -1
package/dist/index.cjs
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},s=(n,r,a)=>(a=n==null?{}:e(i(n)),o(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));let c=require(`@manifest-editor/components`),l=require(`react`);l=s(l);let u=require(`react/jsx-runtime`),d=require(`zustand`),f=require(`localforage`);f=s(f);let p=require(`react-iiif-vault`),m=require(`@iiif/parser`),h=require(`styled-components`);h=s(h);let g=require(`react-accessible-dropdown-menu-hook`);g=s(g);let _=require(`immer`),v=require(`@manifest-editor/editor-api`),y=require(`@react-stately/toast`),b=require(`@iiif/helpers`),x=require(`@iiif/helpers/vault`);x=s(x);let S=require(`@manifest-editor/creator-api`),ee=require(`react-error-boundary`),C=require(`@iiif/helpers/vault/actions`),w=require(`@iiif/helpers/vault/utility`),T=require(`mitt`);T=s(T);let E=require(`tiny-use-debounce`),D=require(`react-transition-group`),te=require(`shallowequal`);te=s(te);let O=require(`@atlas-viewer/iiif-image-api`),k=require(`@manifest-editor/client-vault`);var A=process.env.NODE_ENV===`production`,j=`Invariant failed`;function M(e,t){if(!e){if(A)throw Error(j);var n=typeof t==`function`?t():t,r=n?`${j}: ${n}`:j;throw Error(r)}}const ne={previews:[],behaviorPresets:[`auto-advance`,`no-auto-advance`,`repeat`,`no-repeat`,`unordered`,`individuals`,`continuous`,`paged`,`non-paged`,`facing-pages`,`multi-part`,`together`,`sequence`,`thumbnail-nav`,`no-nav`,`hidden`],defaultPreview:null,editorConfig:{},newTemplates:null,i18n:{advancedLanguageMode:!1,availableLanguages:[`en`,`cy`,`nl`,`fr`],defaultLanguage:`en`},editorFeatureFlags:{enableMultiImageCanvases:!0,enableMultiMediaCanvases:!0,annotationPopups:!1,rememberCanvasId:!0,manifestGridOptions:!1,rememberLeftPanelId:!1},uploadBackends:[],plugins:{apps:{}},export:{baseIdentifier:null,version:3}};function re(e,t){if(!e&&!t)return;let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{}};return n}function ie(e,t){if(!e&&!t)return;let n={...e?.apps||{}};for(let[e,r]of Object.entries(t?.apps||{})){let t=n[e]||{};n[e]={...t,...r,settings:{...t.settings||{},...r.settings||{}}}}return{apps:n}}function N(...e){let t={};for(let n of e)n&&(t={...t,...n,editorConfig:re(t.editorConfig,n.editorConfig),editorFeatureFlags:t.editorFeatureFlags||n.editorFeatureFlags?{...t.editorFeatureFlags||{},...n.editorFeatureFlags||{}}:void 0,i18n:t.i18n||n.i18n?{...t.i18n||{},...n.i18n||{}}:void 0,export:t.export||n.export?{...t.export||{},...n.export||{}}:void 0,plugins:ie(t.plugins,n.plugins)});return t}function P(...e){return N(ne,...e)}const ae=(0,l.createContext)(ne),oe=(0,l.createContext)(()=>{});function F(){return(0,l.useContext)(ae)}function se(){return(0,l.useContext)(oe)}function ce({children:e,config:t,saveConfig:n}){let[r,i]=(0,l.useState)(null),a=(0,l.useMemo)(()=>P(t,r),[t,r]),o=(0,l.useCallback)(e=>{i(t=>N(t,e)),n&&n(e)},[n]);return(0,u.jsx)(oe.Provider,{value:o,children:(0,u.jsx)(ae.Provider,{value:a,children:e})})}const le=`@manifest-editor/canvas-progress`,ue=`status`,de=new Set([`queued`,`pending`,`done`]);function fe(e){return typeof e==`string`?e:e?.id||null}function pe(e){return typeof e==`string`&&de.has(e)?e:`none`}function me(e){return typeof e==`string`&&de.has(e)}function he(e,t){let n=fe(t);return n?pe(e.getResourceMeta(n,le)?.[ue]):`none`}function ge(e,t){let n=fe(t);return n?pe(e?.iiif?.meta?.[n]?.[le]?.[ue]):`none`}function _e(e,t,n){let r=fe(t);if(!r)return`none`;let i=me(n)?n:void 0;return e.setMetaValue([r,le,ue],i),i||`none`}function ve(e,t){return _e(e,t,`none`)}function ye(e,t,n){let r={};for(let i of t){let t=fe(i);t&&(r[t]=_e(e,i,n))}return r}function be(e,t){return ye(e,t,`none`)}function xe(e){return{getStatus(t){return he(e,t)},setStatus(t,n){return _e(e,t,n)},clearStatus(t){return ve(e,t)},setStatuses(t,n){return ye(e,t,n)},clearStatuses(t){return be(e,t)}}}function Se(e,t=new Set){function n(e){let n=fe(e);n&&t.add(n)}function r(e){for(let t of e)n(t)}return{trackedResourceIds:t,getStatus(t){return e.getStatus(t)},setStatus(t,r){return n(t),e.setStatus(t,r)},clearStatus(t){return n(t),e.clearStatus(t)},setStatuses(t,n){return r(t),e.setStatuses(t,n)},clearStatuses(t){return r(t),e.clearStatuses(t)},clearTrackedStatuses(){e.clearStatuses(Array.from(t).map(e=>({id:e,type:`Canvas`}))),t.clear()}}}function Ce(e){let t=fe(e);return(0,p.useVaultSelector)(e=>t?ge(e,t):`none`,[t])}function we(e){let t=(0,p.useVault)(),n=fe(e),r=(0,l.useMemo)(()=>xe(t),[t]);return(0,l.useMemo)(()=>({setStatus(e){return r.setStatus(n,e)},clearStatus(){return r.clearStatus(n)},getStatus(){return r.getStatus(n)}}),[r,n])}const Te={queued:{label:`Queued`,stripClass:`bg-zinc-400/80`,badgeClass:`bg-zinc-500`,dimOverlay:!0},pending:{label:`In progress`,stripClass:`bg-amber-400/90 animate-pulse`,badgeClass:`bg-amber-500`},done:{label:`Done`,stripClass:`bg-me-primary-500`,badgeClass:`bg-me-primary-500`}};function Ee({className:e}){return(0,u.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,u.jsx)(`path`,{d:`M12 7v5l2.5 2.5`})]})}function De({className:e}){return(0,u.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,children:[(0,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeOpacity:`0.3`}),(0,u.jsx)(`path`,{d:`M12 3a9 9 0 0 1 9 9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`})]})}function Oe({className:e}){return(0,u.jsx)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,u.jsx)(`path`,{d:`M5 12l4 4 8-8`})})}function ke({resource:e,status:t,className:n}){return t?(0,u.jsx)(je,{status:t,className:n}):(0,u.jsx)(Ae,{resource:e,className:n})}function Ae({resource:e,className:t}){return(0,u.jsx)(je,{status:Ce(e),className:t})}function je({status:e,className:t}){if(e===`none`)return null;let n=Te[e];return(0,u.jsxs)(u.Fragment,{children:[n.dimOverlay&&(0,u.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0 z-10 bg-white/40`}),(0,u.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-x-0 top-0 z-10 h-[3px] rounded-t-sm ${n.stripClass} ${t||``}`}),(0,u.jsxs)(`div`,{className:`pointer-events-none absolute right-1.5 top-1.5 z-10 flex h-[18px] w-[18px] items-center justify-center rounded-full ${n.badgeClass} shadow-md ring-2 ring-white/70`,title:n.label,children:[(0,u.jsx)(`span`,{className:`sr-only`,children:n.label}),e===`queued`&&(0,u.jsx)(Ee,{className:`h-2.5 w-2.5 text-white`}),e===`pending`&&(0,u.jsx)(De,{className:`h-2.5 w-2.5 animate-spin text-white`}),e===`done`&&(0,u.jsx)(Oe,{className:`h-2.5 w-2.5 text-white`})]})]})}function Me(e,t){return`${e}::${t.type}::${t.id}`}function Ne(e=[],t=[]){let n=[],r=new Set;for(let e=t.length-1;e>=0;--e){let i=t[e];i&&!r.has(i.id)&&(r.add(i.id),n.unshift(i))}return[...e.filter(e=>!r.has(e.id)),...n]}function Pe(e){return[...e].sort((e,t)=>{let n=(e.section||``).localeCompare(t.section||``);if(n!==0)return n;let r=(e.order||0)-(t.order||0);if(r!==0)return r;let i=e.label.localeCompare(t.label);return i===0?e.id.localeCompare(t.id):i})}function Fe(e){return e instanceof Error?{message:e.message,stack:e.stack,detail:e}:{message:typeof e==`string`?e:`Background action failed`,detail:e}}function Ie(e){return e&&typeof e==`object`&&typeof e.message==`string`?{message:e.message,stack:typeof e.stack==`string`?e.stack:void 0,detail:e.detail}:Fe(e)}function Le(e,t){return e.resourceTypes?.length?e.resourceTypes.includes(t.type):!0}function Re({definitions:e,instances:t,systemContext:n,targets:r,onSupportsError:i}){let a=Pe(e),o=[];for(let e of r){let r=[];for(let o of a){if(!Le(o,e))continue;let a=Me(o.id,e),s={...n,definition:o,target:e,instanceKey:a,instance:t[a]};try{if(o.supports&&!o.supports(s))continue}catch(e){i?.(o,e);continue}r.push({definition:o,target:e,instanceKey:a,instance:t[a],context:s})}r.length&&o.push({id:`${e.scope}:${e.type}:${e.id}`,label:e.label,target:e,actions:r})}return o}let ze=0;function Be(e){return ze+=1,`${e}-${Date.now()}-${ze}`}function Ve(e,t,n,r=Date.now()){return{id:Be(`event`),createdAt:r,type:e,message:t,data:n}}function I(e,t,n,r,i=Date.now()){return{...e,events:[...e.events,Ve(t,n,r,i)]}}function He(e){return e.filter(e=>String(e.type)!==`progress`)}function Ue(e){return{...e,logs:[...e.logs],events:He(e.events),progress:e.progress?{...e.progress}:void 0}}function We(e,t,n){if(!Je(n.status))return e;let r=e[t]||[],i=Ue(n),a=r.findIndex(e=>e.runId===n.runId),o=a>=0?r.map((e,t)=>t===a?i:e):[...r,i];return{...e,[t]:o}}function L(e,t,n){let r=e.instances[t];if(!r)return{instances:e.instances,histories:e.histories};let i=n(r);return{instances:{...e.instances,[t]:i},histories:We(e.histories,t,i)}}function Ge(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function Ke(e){let t=e,n=typeof t.current==`number`&&Number.isFinite(t.current)?t.current:void 0,r=typeof t.total==`number`&&Number.isFinite(t.total)?t.total:void 0;return{percent:Ge(typeof t.percent==`number`&&Number.isFinite(t.percent)?t.percent:typeof n==`number`&&typeof r==`number`&&r>0?n/r*100:0),current:n,total:r,label:t.label}}function qe(e){return e===`preparing`||e===`running`}function Je(e){return e===`complete`||e===`error`||e===`cancelled`}function Ye(e){return e===`queued`||e===`running`||e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function Xe(e){return!e||e===`queued`||e===`running`}function Ze(e){return e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function Qe(e){if(e!==void 0)try{return JSON.parse(JSON.stringify(e))}catch{return}}function $e(e){return e&&{message:e.message,stack:e.stack,detail:Qe(e.detail)}}function et(e){return{...e,error:$e(e.error)||null,result:Qe(e.result),logs:e.logs.map(e=>({...e,data:Qe(e.data)})),events:He(e.events).map(e=>({...e,data:Qe(e.data)})),progress:e.progress?{...e.progress}:void 0}}function tt(e){return{...e,status:st(e.status),input:Qe(e.input),result:Qe(e.result),error:$e(e.error)||null}}function nt(e){return{version:1,data:Qe(e.data),tasks:e.tasks.map(tt)}}function rt(e){return{version:1,savedAt:Date.now(),instances:Object.fromEntries(Object.entries(e.instances).map(([e,t])=>[e,et(t)])),histories:Object.fromEntries(Object.entries(e.histories).map(([e,t])=>[e,t.map(et)])),plans:Object.fromEntries(Object.entries(e.plans).map(([e,t])=>[e,nt(t)]))}}function it(){return{version:1,savedAt:Date.now(),instances:{},histories:{},plans:{}}}function at(e,t){return{version:1,savedAt:t.savedAt,instances:{...e.instances,...t.instances},histories:{...e.histories,...t.histories},plans:{...e.plans,...t.plans}}}function ot(e){return!Object.keys(e.instances).length&&!Object.keys(e.histories).length&&!Object.keys(e.plans).length}function st(e){return Ye(e)?e:`queued`}function ct(e,t){let n=Date.now(),r=typeof e.id==`string`&&e.id?e.id:`task-${t+1}`;return{...e,id:r,label:typeof e.label==`string`&&e.label?e.label:r,status:st(e.status),error:e.error?Ie(e.error):null,createdAt:typeof e.createdAt==`number`?e.createdAt:n}}function lt(e){return!e||e.version!==1||!Array.isArray(e.tasks)?null:{version:1,data:e.data,tasks:e.tasks.map(ct)}}function ut(e){return{...e,tasks:e.tasks.map(e=>e.status===`running`?{...e,status:`queued`,statusText:`Queued after reload`,startedAt:void 0}:e)}}function dt(e,t=Date.now()){return{...e,tasks:e.tasks.map(e=>Xe(e.status)?{...e,status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:t}:e)}}function ft(e){return{...e,error:e.error?Ie(e.error):null,logs:Array.isArray(e.logs)?e.logs:[],events:He(Array.isArray(e.events)?e.events:[]),resultsAvailable:e.resultsAvailable===!0}}function pt(e){return!e||e.version!==1?it():{version:1,savedAt:typeof e.savedAt==`number`?e.savedAt:Date.now(),instances:e.instances||{},histories:e.histories||{},plans:e.plans||{}}}function mt(e,t,n){let r=e,i=t;if(qe(e.status))if(e.cancelRequestedAt){let t=Date.now();i=i&&dt(i,t),r=I({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:t,cancelledAt:t},`status`,`Cancelled`,{status:`cancelled`},t)}else if(n.resumable&&i)i=ut(i),r=I({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`});else{let t=Date.now();r=I({...e,status:`cancelled`,statusText:`Interrupted by page reload`,completedAt:t,cancelledAt:t},`status`,`Interrupted by page reload`,{status:`cancelled`},t)}return{instance:r,plan:i}}function ht(e,t){let n=pt(e),r=new Map(t.map(e=>[e.id,e])),i={},a={},o={},s=it();for(let[e,t]of Object.entries(n.histories)){let n=(Array.isArray(t)?t:[]).map(ft),i=n.filter(e=>r.has(e.actionId)),o=n.filter(e=>!r.has(e.actionId));i.length&&(a[e]=i),o.length&&(s.histories[e]=o)}for(let[e,t]of Object.entries(n.instances)){let c=ft(t),l=lt(n.plans[e]),u=r.get(c.actionId);if(!u){s.instances[e]=et(c),l&&(s.plans[e]=nt(l));continue}let d=mt(c,l,u);i[e]=d.instance,a=We(a,e,d.instance),d.plan&&(o[e]=d.plan)}return{instances:i,histories:a,plans:o,deferred:s}}function gt(e,t){let n=e.tasks.length;if(!n)return;let r=e.tasks.filter(e=>Ze(e.status)).length;return Ke({current:r,total:n,label:t})}function _t(e){return e&&typeof e==`object`&&`taskStatus`in e&&(e.taskStatus===`complete`||e.taskStatus===`skipped`)?{taskStatus:e.taskStatus,result:e.result,statusText:e.statusText}:{taskStatus:`complete`,result:e}}function vt(e,t){for(let n of t.tasks)!n.target||n.target.type!==`Canvas`||(n.status===`running`?e.setStatus(n.target,`pending`):n.status===`queued`&&e.setStatus(n.target,`queued`))}function yt(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i;function o(){return r.getState().plans[a]}function s(){return o()?.tasks||[]}function c(e=[`queued`,`running`]){let t=new Set(e);return s().filter(e=>t.has(st(e.status)))}function l(e,t,n=!1){r.getState().updateActionTask(a,e,t,n)}async function u(e,i={}){let u=c(i.statuses||[`queued`,`running`]),d=s().length,f=u.length,p=i.yieldEveryMs===!1?!1:i.yieldEveryMs??16,m=0;for(let[c,h]of u.entries()){if(t.aborted||bt(m,p)&&(await xt(),m=Date.now(),t.aborted))throw Error(`Background action cancelled.`);let u=s().find(e=>e.id===h.id)||h,g=s().findIndex(e=>e.id===u.id),_=i.progressLabel?.(u,g,d)||u.label||`Task ${g+1}/${d}`;u.target?.type===`Canvas`&&n.setStatus(u.target,`pending`),l(u.id,{status:`running`,statusText:_,error:null,startedAt:Date.now(),completedAt:void 0},!0),r.getState().setActionStatus(a,`running`,_),r.getState().setActionProgress(a,{current:s().filter(e=>Ze(e.status)).length,total:d,label:_});try{let r=await e(u,{index:g,total:d,pendingIndex:c,pendingTotal:f});if(t.aborted)throw Error(`Background action cancelled.`);let i=_t(r);l(u.id,{status:i.taskStatus,statusText:i.statusText||(i.taskStatus===`skipped`?`Skipped`:`Complete`),result:i.result,error:null,completedAt:Date.now()},!0),u.target?.type===`Canvas`&&n.setStatus(u.target,`done`)}catch(e){if(t.aborted||Et(e))throw l(u.id,{status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:Date.now()},!0),e;let n=Fe(e);l(u.id,{status:`error`,statusText:n.message,error:n,completedAt:Date.now()},!0),r.getState().appendActionLog(a,`Task failed: ${u.label}`,`warn`,{taskId:u.id,error:n.message})}finally{let e=o();e&&r.getState().setActionProgress(a,{current:e.tasks.filter(e=>Ze(e.status)).length,total:d,label:_})}}return s()}return{getAll:s,getPending:()=>c(),update:l,runEach:u}}function bt(e,t){return t!==!1&&(!e||Date.now()-e>=t)}function xt(){return new Promise(e=>{setTimeout(e,0)})}function St(e=[]){let t=null,n=null,r=null,i=it();return(0,d.createStore)((a,o)=>{function s(e,t){let n=Ne([],t),r=ht(i,n);return i=r.deferred,{definitions:n,instances:{...e.instances,...r.instances},histories:{...e.histories,...r.histories},plans:{...e.plans,...r.plans},controllers:Object.fromEntries(Object.entries(e.controllers).filter(([t,n])=>n&&e.instances[t]?.status&&qe(e.instances[t].status)))}}async function c(){if(r&&(clearTimeout(r),r=null),!t||!n||!o().hasHydrated)return;let e=at(i,rt(o()));if(ot(e)){await t.clear(n);return}await t.save(n,e)}function l(e=!1){if(!(!t||!n||!o().hasHydrated)){if(e){c();return}r&&clearTimeout(r),r=setTimeout(()=>{c()},300)}}return{definitions:Ne([],e),instances:{},histories:{},plans:{},controllers:{},hasHydrated:!0,setDefinitions(e){a(t=>s(t,e)),l()},setPersistence(e,r){t=e,n=e&&r?r:null,a({hasHydrated:!t})},hydrate(e){let t=ht(pt(e),o().definitions);i=t.deferred,a({instances:t.instances,histories:t.histories,plans:t.plans,controllers:{},hasHydrated:!0}),l(!0)},persist(e=!1){l(e)},flushPersistence:c,registerAction(e){return a(t=>s(t,Ne(t.definitions,[e]))),l(),()=>o().unregisterAction(e.id)},unregisterAction(e){a(t=>{let n={};for(let[r,i]of Object.entries(t.instances))i.actionId!==e&&(n[r]=i);let r={};for(let[n,i]of Object.entries(t.histories)){let t=i.filter(t=>t.actionId!==e);t.length&&(r[n]=t)}let i={...t.plans},a={...t.controllers};for(let[n,r]of Object.entries(t.instances))r.actionId===e&&(a[n]?.abort(),delete a[n],delete i[n]);return{definitions:t.definitions.filter(t=>t.id!==e),instances:n,histories:r,plans:i,controllers:a}}),l(!0)},resetAction(e){a(t=>{t.controllers[e]?.abort();let n={...t.instances},r={...t.histories},i={...t.plans},a={...t.controllers};return delete n[e],delete r[e],delete i[e],delete a[e],{instances:n,histories:r,plans:i,controllers:a}}),l(!0)},startAction(e,t,n,r){let i=Date.now();a(a=>{let o={...a.plans};return delete o[e],{instances:{...a.instances,[e]:{id:e,runId:Be(`run`),actionId:t.id,target:n,label:t.label,status:`preparing`,statusText:`Preparing`,error:null,result:void 0,resultsAvailable:!1,logs:[],events:[Ve(`started`,`Preparing`,{status:`preparing`},i)],progress:void 0,startedAt:i,completedAt:void 0,cancelRequestedAt:void 0,cancelledAt:void 0}},plans:o,controllers:r?{...a.controllers,[e]:r}:a.controllers}}),l(!0)},resumeAction(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`},n)),controllers:{...r.controllers,[e]:t}})),l(!0)},cancelAction(e){let t=o().controllers[e],n=o().instances[e];if(!n||!qe(n.status))return;let r=Date.now();a(t=>{let n=L(t,e,e=>I(I({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:r,cancelledAt:r,cancelRequestedAt:e.cancelRequestedAt||r},`cancel-requested`,`Cancelling`,void 0,r),`status`,`Cancelled`,{status:`cancelled`},r)),i=t.plans[e];return{...n,plans:i?{...t.plans,[e]:dt(i,r)}:t.plans,controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))}}),l(!0),t?.abort()},setActionLabel(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,label:t},`label`,t,{label:t},n))})),l()},setActionStatus(e,t,n){let r=Date.now(),i=Je(t)?r:void 0;a(a=>({...L(a,e,e=>I({...e,status:t,statusText:n,completedAt:i,cancelledAt:t===`cancelled`?r:void 0},`status`,n||t,{status:t},r)),controllers:qe(t)?a.controllers:Object.fromEntries(Object.entries(a.controllers).filter(([t])=>t!==e))})),l(Je(t))},setActionError(e,t,n){let r=Date.now(),i=Fe(t);a(t=>({...L(t,e,e=>I({...e,status:`error`,statusText:n,error:i,completedAt:r,cancelledAt:void 0},`error`,n||i.message,i,r)),controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))})),l(!0)},appendActionLog(e,t,n=`info`,r){let i=Date.now(),o={id:Be(`log`),createdAt:i,level:n,message:t,data:r};a(a=>({...L(a,e,e=>I({...e,logs:[...e.logs,o]},`log`,t,{level:n,data:r},i))})),l()},setActionProgress(e,t){let n=t?Ke(t):void 0;a(t=>({...L(t,e,e=>({...e,progress:n}))}))},setResult(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,result:t},`result`,`Result recorded`,void 0,n))})),l(!0)},setResultsAvailable(e,t){let n=Date.now();a(r=>({...L(r,e,e=>I({...e,resultsAvailable:t},`results-available`,t?`Results available`:`Results hidden`,{available:t},n))})),l(!0)},setActionPlan(e,t){let n=lt(t);n&&(a(t=>({...L(t,e,e=>({...e,progress:gt(n,`Queued`)})),plans:{...t.plans,[e]:n}})),l(!0))},updateActionTask(e,t,n,r=!1){a(r=>{let i=r.plans[e];if(!i)return r;let a=i.tasks.map(e=>e.id===t?ct({...e,...n,status:n.status?st(n.status):e.status,error:n.error?Ie(n.error):n.error===null?null:e.error},0):e),o={...i,tasks:a};return{...L(r,e,e=>({...e,progress:gt(o,n.statusText||n.label)})),plans:{...r.plans,[e]:o}}}),l(r)}}})}function Ct(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i,o=yt(e,t,n);return{...i,canvasProgress:n,instance:r.getState().instances[a],plan:r.getState().plans[a],tasks:o,signal:t,prepareData:e.prepareData,setActionLabel(e){r.getState().setActionLabel(a,e)},setActionStatus(e,t){r.getState().setActionStatus(a,e,t)},setActionError(e,t){r.getState().setActionError(a,e,t)},appendActionLog(e,t,n){r.getState().appendActionLog(a,e,t,n)},setActionProgress(e){r.getState().setActionProgress(a,e)},setResult(e){r.getState().setResult(a,e)},setResultsAvailable(e){r.getState().setResultsAvailable(a,e)}}}function wt(e){return!!e&&typeof e==`object`&&e.version===1&&Array.isArray(e.tasks)}async function Tt(e){let{store:t,context:n}=e,{definition:r,instanceKey:i,target:a}=n,o=t.getState().instances[i],s=t.getState().controllers[i];if((o?.status===`preparing`||o?.status===`running`)&&(!e.resume||s))return o;let c=new AbortController,l=c.signal,u=Se(n.canvasProgress),d=()=>c.abort();e.signal&&(e.signal.aborted?c.abort():e.signal.addEventListener(`abort`,d,{once:!0})),e.resume&&o&&qe(o.status)?t.getState().resumeAction(i,c):t.getState().startAction(i,r,a,c);let f=()=>{let e=t.getState().instances[i];e&&!Je(e.status)&&t.getState().setActionStatus(i,`cancelled`,`Cancelled`)};try{if(!e.resume&&r.prepare){let n=await r.prepare(Ct(e,l,u));if(l.aborted)return f(),t.getState().instances[i];if(n===!1)return t.getState().setActionStatus(i,`idle`),t.getState().instances[i];wt(n)&&t.getState().setActionPlan(i,n)}if(l.aborted)return f(),t.getState().instances[i];let n=t.getState().plans[i];n&&vt(u,n),t.getState().setActionStatus(i,`running`,e.resume?`Resuming`:`Running`);let a=await r.run(Ct(e,l,u));if(l.aborted)return f(),t.getState().instances[i];let o=t.getState().instances[i];a!==void 0&&o&&!Je(o.status)&&t.getState().setResult(i,a),o=t.getState().instances[i],o&&qe(o.status)&&((a!==void 0||o?.resultsAvailable)&&t.getState().setResultsAvailable(i,!0),t.getState().setActionStatus(i,`complete`,`Complete`))}catch(e){l.aborted||Et(e)?f():t.getState().setActionError(i,e,`Error`)}finally{u.clearTrackedStatuses(),e.signal?.removeEventListener(`abort`,d),await t.getState().flushPersistence()}return t.getState().instances[i]}function Et(e){return e instanceof Error&&(e.name===`AbortError`||e.message.toLowerCase().includes(`aborted`))}function Dt(e){return JSON.stringify([e.appId,e.instanceId,e.rootResource.type,e.rootResource.id])}let Ot;function kt(){if(typeof window>`u`)return null;let e=f.default.createInstance({name:`manifest-editor-background-actions-v1`,storeName:`background-actions`});return{async load(t){return e.getItem(Dt(t))},async save(t,n){await e.setItem(Dt(t),n)},async clear(t){await e.removeItem(Dt(t))}}}function At(){return Ot===void 0&&(Ot=kt()),Ot}const jt=(0,l.createContext)(null);function Mt({children:e,persistence:t,persistenceKey:n}){let r=z(),i=Wn(),a=(0,l.useMemo)(()=>St(),[]),o=r.layout.backgroundActions||[],s=(0,l.useMemo)(()=>t===!1?null:t||At(),[t]),c=(0,l.useMemo)(()=>n||null,[n]);return(0,l.useEffect)(()=>{a.getState().setDefinitions(o)},[a,o]),(0,l.useEffect)(()=>{let e=c||{appId:i.appId,instanceId:i.instanceId,rootResource:{id:`global`,type:`Manifest`}},t=!1;return a.getState().setPersistence(s,e),s?(s.load(e).then(e=>{t||a.getState().hydrate(e)}).catch(e=>{console.warn(`[manifest-editor/background-actions] Failed to load persisted actions`,e),t||a.getState().hydrate(null)}),()=>{t=!0,a.getState().flushPersistence()}):(a.getState().hydrate(null),()=>void 0)},[i.appId,i.instanceId,s,c?.appId,c?.instanceId,c?.rootResource.id,c?.rootResource.type,a]),(0,l.useEffect)(()=>{let e=()=>{a.getState().flushPersistence()};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[a]),(0,l.createElement)(jt.Provider,{value:a},e)}function Nt(){let e=(0,l.useContext)(jt);if(!e)throw Error(`useBackgroundActionsStore must be used within a BackgroundActionsProvider`);return e}function R(e=e=>e){return(0,d.useStore)(Nt(),e)}function Pt(e){return R(t=>t.instances[e])}function Ft(e){return R(t=>t.histories[e]||[])}async function It(e){let t;try{await fetch(e).then(e=>e.json().catch(e=>{console.error(`'${e}' happened!`)})).then(e=>{t={...e}})}catch(e){console.log(e)}return t}function Lt(e,t,n){return`create_${e}_${t}_${(0,m.toRef)(n)?.type||`unknown`}`}function Rt(e,t,n=`text/json`){let r=e instanceof Blob?e:new Blob([e],{type:n}),i=document.createElement(`a`);i.download=t,i.href=window.URL.createObjectURL(r);let a=new MouseEvent(`click`,{view:window,bubbles:!0,cancelable:!0});i.dispatchEvent(a),i.remove()}async function zt(e){return navigator.clipboard.writeText(typeof e==`string`?e:JSON.stringify(e,null,2))}function Bt(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function Vt(e,t){let{default:n,config:r,...i}=e,a={metadata:n,layout:{leftPanels:[],rightPanels:[],centerPanels:[],...i},config:r};return t?t(a):a}function Ht(e,t,n){return{...e,metadata:t,config:N(e.config||{},n.config||{}),layout:{...e.layout,leftPanels:[...(e.layout.leftPanels||[]).filter(e=>n?.leftPanelIds?n.leftPanelIds.includes(e.id):!0),...n?.leftPanels||[]],annotations:[...n?.annotations||[],...e.layout.annotations||[]],canvasEditors:[...n?.canvasEditors||[],...e.layout.canvasEditors||[]],creators:[...n?.creators||[],...e.layout.creators||[]],background:[...e.layout?.background||[],...n?.background||[]],backgroundActions:Ne(e.layout?.backgroundActions||[],n?.backgroundActions||[]),editors:[...n?.editors||[],...e.layout.editors||[]],rightPanels:[...e.layout.rightPanels||[],...n?.rightPanels||[]],centerPanels:[...e.layout.centerPanels||[],...n?.centerPanels||[]],modals:[...e.layout.modals||[],...n?.modalPanels||[]]}}}const Ut=[`leftPanels`,`centerPanels`,`rightPanels`,`modalPanels`,`annotations`,`canvasEditors`,`editors`,`creators`,`background`,`backgroundActions`],Wt={plugins:[],enabled:[],disabled:[],globalApps:{},apps:{}};function Gt(){return Wt}function Kt(e=[]){return Array.from(new Set(e.filter(Boolean)))}function qt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Jt(e={}){return{...e,enabled:Kt(e.enabled||[]),disabled:Kt(e.disabled||[]),settings:e.settings?{...e.settings}:void 0}}function Yt(e){let t={};for(let[n,r]of Object.entries(e?.apps||{}))t[n]=Jt(r);return t}function Xt(e={},t){return{...e,enabled:Kt([...(e.enabled||[]).filter(e=>e!==t),t]),disabled:(e.disabled||[]).filter(e=>e!==t)}}function Zt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:Kt([...(e.disabled||[]).filter(e=>e!==t),t])}}function Qt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:(e.disabled||[]).filter(e=>e!==t)}}function $t(e={},t={}){let n=e.enabled||[],r=t.enabled||[],i=e.disabled||[],a=t.disabled||[];return n.length===r.length&&n.every((e,t)=>e===r[t])&&i.length===a.length&&i.every((e,t)=>e===a[t])&&JSON.stringify(e.settings||{})===JSON.stringify(t.settings||{})}function en(e,t){let{default:n,config:r,settings:i,...a}=e,o={metadata:n,extension:{...a,config:r},settings:i};return t?t(o):o}function tn(e){return{metadata:e.default,extension:{},settings:e.settings,load:e.load,loadStatus:`idle`}}function nn(e){return!!e&&`metadata`in e&&`extension`in e}function rn(e){return!!e&&`load`in e&&`default`in e}function an(e){return nn(e)?e:rn(e)?tn(e):en(e)}function on(e=[]){return e.map(an)}function sn(e,t){let n=new Map(e.map(e=>[e.metadata.id,e]));return t.map(e=>{let t=n.get(e.metadata.id);return t?t.loadStatus===`loaded`&&e.load?{...t,metadata:e.metadata,load:e.load}:t.loadStatus===`loading`&&e.load?{...e,loadStatus:`loading`}:t.loadStatus===`error`&&e.load?{...e,loadStatus:`error`,loadError:t.loadError}:e:e})}function cn(e,t,n){let r=e.metadata.supports;if(!r)return!0;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return!1}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return!1}return!0}function ln(e,t,n){let r=e.metadata.supports;if(!r)return null;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return`This plugin does not support the current app.`}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return`This plugin does not support the current project type.`}return null}function un(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)?!1:r?.enabled?.includes(a)?!0:i?.disabled?.includes(a)?!1:i?.enabled?.includes(a)?!0:t.disabled.includes(a)?!1:t.enabled.includes(a)?!0:e.metadata.defaultEnabled===!0}function dn(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)||r?.enabled?.includes(a)?`workspace`:i?.disabled?.includes(a)||i?.enabled?.includes(a)?`global`:t.disabled.includes(a)||t.enabled.includes(a)?`provider`:`default`}function fn(e,t,n){let r=[],i=new Set,a=new Set,o=new Set(e.plugins.filter(r=>cn(r,t,n)&&un(r,e,n)).map(e=>e.metadata.id)),s=new Map(e.plugins.map(e=>[e.metadata.id,e])),c=new Set;function l(e){let u=e.metadata.id;if(i.has(u))return!0;if(a.has(u))return!1;if(c.has(u))return xn(`Plugin "${u}" was not enabled because its dependency graph contains a cycle.`),a.add(u),!1;c.add(u);for(let r of e.metadata.dependencies||[]){let e=s.get(r);if(!e||!o.has(r))return xn(`Plugin "${u}" was not enabled because dependency "${r}" is not enabled.`),c.delete(u),a.add(u),!1;if(!cn(e,t,n))return xn(`Plugin "${u}" was not enabled because dependency "${r}" is not compatible.`),c.delete(u),a.add(u),!1;if(!l(e))return c.delete(u),a.add(u),!1}return c.delete(u),r.push(e),i.add(u),!0}for(let r of e.plugins)cn(r,t,n)&&un(r,e,n)&&l(r);return r}function pn(e,t){let n=e?.settings?.[t];return qt(n)?n:{}}function mn(e={},t,n){return{...e,settings:{...e.settings||{},[t]:n}}}function hn(e={},t){let n={...e.settings||{}};return delete n[t],{...e,settings:n}}function gn(e){return{...e?.settings?.defaults||{}}}function _n(e,t,n){let r=e.plugins.find(e=>e.metadata.id===t),i=n?e.globalApps[n]:void 0,a=n?e.apps[n]:void 0;return{...gn(r),...pn(i,t),...pn(a,t)}}function vn(e,t){return{getSettings(n){return _n(e,n,t)}}}function yn(e,t,n,r,i){let a=new Map(t.plugins.map(e=>[e.metadata.id,e])),o=[],s=[],c=new Set,l=e;function u(e){let t=e.metadata.id;if(!o.includes(t)){if(c.has(t)){s.push(`${t} has a circular dependency`);return}c.add(t);for(let t of e.metadata.dependencies||[]){let e=a.get(t);if(!e){s.push(`${t} is not available`);continue}if(!cn(e,r,i)){s.push(`${e.metadata.label} is not compatible`);continue}u(e)}c.delete(t),l=Xt(l,t),o.push(t)}}return u(n),s.length?{config:e,enabledIds:[],blocked:s}:{config:l,enabledIds:o,blocked:s}}function bn(e,t){return t===`modalPanels`?e.layout.modals||[]:e.layout[t]||[]}function xn(e){globalThis.process?.env?.NODE_ENV!==`production`&&console.warn(`[manifest-editor/plugin] ${e}`)}function Sn(e,t,n,r){if(!r?.length)return;let i=[];for(let a of r){if(n.has(a.id)){xn(`Plugin "${e.metadata.id}" contribution "${a.id}" for "${t}" was skipped because that id already exists.`);continue}n.add(a.id),i.push(a)}return i.length?i:void 0}function Cn(e,t){let n=t.extension,r={config:n.config,disableSideEffects:n.disableSideEffects};for(let i of Ut){let a=Sn(t,i,new Set(bn(e,i).map(e=>e.id)),n[i]);a&&(r[i]=a)}return r}function wn(e,t,n){if(!t.length)return e;let r=e,i=new Set;for(let a of t){if(!cn(a,e,n))continue;let t=(a.metadata.dependencies||[]).filter(e=>!i.has(e));if(t.length){xn(`Plugin "${a.metadata.id}" was not applied because dependencies are missing or later in the plugin order: ${t.join(`, `)}`);continue}let o=Cn(r,a);r=Ht(r,r.metadata,o),i.add(a.metadata.id)}let a=new Set(e.layout.leftPanels.map(e=>e.id)),o=r.layout.leftPanels.filter(e=>e.divide),s=r.layout.leftPanels.filter(e=>!e.divide),c=!1,l=s.map(e=>!c&&!a.has(e.id)?(c=!0,{...e,separator:!0}):e);return{...r,config:N(e.config||{},...t.filter(e=>i.has(e.metadata.id)).map(e=>e.extension.config||{}),r.config||{}),layout:{...r.layout,leftPanels:[...l,...o],backgroundActions:Ne([],r.layout.backgroundActions||[])}}}function Tn({plugins:e=[],enabled:t=[],disabled:n=[],globalPluginConfig:r}={}){let i=(e=[])=>Array.from(new Set(e.filter(Boolean)));return(0,d.createStore)(a=>({plugins:e,enabled:i(t),disabled:i(n),globalApps:Yt(r),apps:{},setProviderState(e){a(t=>({...t,plugins:sn(t.plugins,e.plugins||[]),enabled:i(e.enabled||[]),disabled:i(e.disabled||[]),globalApps:Yt(e.globalPluginConfig)}))},setPluginLoading(e){a(t=>({...t,plugins:t.plugins.map(t=>t.metadata.id===e?{...t,loadStatus:`loading`,loadError:void 0}:t)}))},setPluginLoaded(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...t,metadata:{...n.metadata,...t.metadata},settings:t.settings||n.settings,load:n.load,loadStatus:`loaded`,loadError:void 0}:n)}))},setPluginLoadError(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...n,loadStatus:`error`,loadError:t}:n)}))},setAppConfig(e,t){let n=Jt(t);a(t=>$t(t.apps[e],n)?t:{...t,apps:{...t.apps,[e]:n}})},setGlobalConfig(e){a(t=>({...t,globalApps:Yt(e)}))},setGlobalAppConfig(e,t){let n=Jt(t);a(t=>$t(t.globalApps[e],n)?t:{...t,globalApps:{...t.globalApps,[e]:n}})},enable(e,t,n=`workspace`){a(r=>({...r,plugins:r.plugins.map(e=>e.metadata.id===t&&e.loadStatus===`error`?{...e,loadStatus:`idle`,loadError:void 0}:e),...n===`global`?{globalApps:{...r.globalApps,[e]:Xt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Xt(r.apps[e],t)}}}))},disable(e,t,n=`workspace`){a(r=>({...r,...n===`global`?{globalApps:{...r.globalApps,[e]:Zt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Zt(r.apps[e],t)}}}))}}))}const En=(0,l.createContext)(null),Dn=(0,l.createContext)({});function On({plugins:e,enabled:t,disabled:n,globalPluginConfig:r,saveGlobalPluginConfig:i,children:a}){let o=(0,l.useMemo)(()=>on(e),[e]),s=(0,l.useMemo)(()=>Tn({plugins:o,enabled:t,disabled:n,globalPluginConfig:r}),[]);(0,l.useEffect)(()=>{s.getState().setProviderState({plugins:o,enabled:t,disabled:n,globalPluginConfig:r})},[s,o,t,n,r]);let c=(0,l.useMemo)(()=>({globalPluginConfig:r,saveGlobalPluginConfig:i}),[r,i]);return(0,l.createElement)(Dn.Provider,{value:c},(0,l.createElement)(En.Provider,{value:s},a))}function kn(){return(0,l.useContext)(En)}function An(){let e=kn();if(!e)throw Error(`usePluginStoreApi must be used within <PluginProvider />`);return e}function jn(e){let t=kn();return t?(0,d.useStore)(t,e):e(Gt())}function Mn(){return jn(e=>({plugins:e.plugins,enabled:e.enabled,disabled:e.disabled,globalApps:e.globalApps,apps:e.apps}))}function Nn(e){let t=(0,l.useContext)(Hn),n=(0,l.useContext)(Vn),r=Mn(),i=e||t?.appId;return(0,l.useMemo)(()=>fn(r,n,i),[r,n,i])}function Pn(){let e=kn();return(0,l.useMemo)(()=>e?{enable(t,n,r){e.getState().enable(t,n,r||`workspace`)},disable(t,n,r){e.getState().disable(t,n,r||`workspace`)},setAppConfig(t,n){e.getState().setAppConfig(t,n)},setGlobalAppConfig(t,n){e.getState().setGlobalAppConfig(t,n)}}:{enable(){},disable(){},setAppConfig(){},setGlobalAppConfig(){}},[e])}function Fn(e){let t=(0,l.useContext)(Hn),n=Mn(),r=e||t?.appId;return(0,l.useMemo)(()=>vn(n,r),[n,r])}function In(e,t){let n=(0,l.useContext)(Hn),r=Mn(),i=t||n?.appId;return(0,l.useMemo)(()=>_n(r,e,i),[r,e,i])}function Ln(e,t){let n=(0,l.useContext)(Hn),r=kn(),i=Mn(),a=F(),o=se(),{saveGlobalPluginConfig:s}=(0,l.useContext)(Dn),c=t||n?.appId||``,u=i.plugins.find(t=>t.metadata.id===e)||null,d=c?i.globalApps[c]:void 0,f=c?i.apps[c]:void 0,p=(0,l.useMemo)(()=>gn(u||void 0),[u]),m=(0,l.useMemo)(()=>pn(d,e),[d,e]),h=(0,l.useMemo)(()=>pn(f,e),[f,e]),g=(0,l.useMemo)(()=>_n(i,e,c),[i,e,c]),_=(0,l.useCallback)(e=>{c&&(r?.getState().setAppConfig(c,e),o({plugins:{...a.plugins||{},apps:{...a.plugins?.apps||{},[c]:e}}}))},[a.plugins,c,o,r]),v=(0,l.useCallback)(t=>{_(mn(f||{},e,t))},[_,e,f]),y=(0,l.useCallback)(()=>{_(hn(f||{},e))},[_,e,f]),b=(0,l.useCallback)(async e=>{if(!c||!s)return;let t=i.globalApps[c]||{},n={apps:{...i.globalApps,[c]:e}};r?.getState().setGlobalAppConfig(c,e);try{await s(n)}catch(e){throw r?.getState().setGlobalAppConfig(c,t),e}},[c,s,i.globalApps,r]),x=(0,l.useCallback)(async t=>{await b(mn(d||{},e,t))},[d,b,e]),S=(0,l.useCallback)(async()=>{await b(hn(d||{},e))},[d,b,e]);return{plugin:u,appId:c,defaults:p,global:m,workspace:h,effective:g,canSaveGlobal:!!s,setWorkspaceSettings:v,resetWorkspaceSettings:y,setGlobalSettings:x,resetGlobalSettings:S}}function Rn(e,t){let n=Mn(),r=kn(),i=(0,l.useMemo)(()=>fn(n,e,t),[n,e,t]);return(0,l.useEffect)(()=>{if(r)for(let e of i)!e.load||e.loadStatus===`loading`||e.loadStatus===`loaded`||e.loadStatus===`error`||(r.getState().setPluginLoading(e.metadata.id),e.load().then(t=>{r.getState().setPluginLoaded(e.metadata.id,an(t))}).catch(t=>{r.getState().setPluginLoadError(e.metadata.id,zn(t))}))},[r,i]),(0,l.useMemo)(()=>wn(e,i.filter(e=>!e.load||e.loadStatus===`loaded`),t),[e,i,t])}function zn(e){return e instanceof Error?e.message:typeof e==`string`?e:`Plugin failed to load.`}function Bn({config:e}){let t=(0,l.useContext)(Hn),n=kn(),r=t?.appId,i=r?e?.plugins?.apps?.[r]:void 0;return(0,l.useEffect)(()=>{!n||!r||n.getState().setAppConfig(r,i||{})},[n,r,i]),null}const Vn=(0,l.createContext)(null),Hn=(0,l.createContext)(null),Un=(0,l.createContext)({state:null,setState:()=>{}});function Wn(){let e=(0,l.useContext)(Hn);return M(e,`Hook useAppInstance must be used inside <AppProvider />`),e}function z(){let e=(0,l.useContext)(Vn);return M(e,`Hook useApp must be used inside <AppProvider />`),e}function Gn(){return(0,l.useContext)(Un)}function Kn(e){let[t,n,r]=(0,c.useLocalStorage)(`app-state/${e.appId}/${e.instanceId}`,e.initialState||{}),i=(0,l.useCallback)(e=>{let t=r.current?JSON.parse(r.current||`{}`):{},i=(typeof e==`function`?e(t):e)||{};n({...t,...i})},[]);(0,l.useEffect)(()=>{e.args&&i(e.args)},[e.appId]);let a=(0,l.useMemo)(()=>({state:t||{},setState:i}),[i,t]);return(0,u.jsx)(Un.Provider,{value:a,children:e.children})}function qn({instanceId:e,appId:t,args:n,definition:r,children:i,initialState:a}){let o=(0,l.useMemo)(()=>({instanceId:e,appId:t,args:n}),[e,t,n]),s=(0,l.useMemo)(()=>a||{},[e]),c=Rn(r,t);return(0,u.jsx)(ce,{config:c.config||{},children:(0,u.jsx)(Vn.Provider,{value:c,children:(0,u.jsx)(Hn.Provider,{value:o,children:(0,u.jsx)(Kn,{instanceId:o.instanceId,appId:o.appId,args:o.args,initialState:s,children:i})})})})}const Jn=(0,l.createContext)(null);function Yn(){let e=(0,l.useContext)(Jn);return M(e,`Hook useApps must be used inside <MultiAppProvider />`),e}function Xn(e,t=!1){let[n,r]=(0,c.useOptionalLocalStorage)(`SelectedApplication`,e||{id:`splash`},!t);return[n,r]}function Zn({apps:e,initialApp:t,saveCurrentApp:n=!0,instanceId:r,children:i,config:a={}}){let{defaultApp:o=`splash`,collectionApp:s=`collection-editor`,manifestApp:c=`manifest-editor`}=a,[d,f]=Xn(t,n),p=e=>{e===`Manifest`&&f({id:c}),e===`Collection`&&f({id:s})},m=(0,l.useMemo)(()=>({currentApp:d||{id:o},initialApp:t||{id:o},apps:e,changeApp:f,changeProjectType:p}),[t,e,d]),h=e[m.currentApp.id];return!d||!h?null:(0,u.jsx)(qn,{appId:d.id,definition:h,instanceId:d.id+r,args:d.args,children:(0,u.jsx)(Jn.Provider,{value:m,children:i})})}const Qn=h.default.div`
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),s=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;l<u;l++)d=c[l],!a.call(e,d)&&d!==o&&t(e,d,{get:(e=>i[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},c=(n,r,o)=>(o=n==null?{}:e(i(n)),s(r||!n||!n.__esModule||!a.call(n,`default`)?t(o,`default`,{value:n,enumerable:!0}):o,n));let l=require("@manifest-editor/components"),u=require("react");u=c(u,1);let d=require("react/jsx-runtime"),f=require("zustand"),p=require("localforage");p=c(p,1);let m=require("react-iiif-vault"),h=require("@iiif/parser"),g=require("styled-components");g=c(g,1);let _=require("immer"),v=require("@manifest-editor/editor-api"),y=require("@react-stately/toast"),b=require("@iiif/helpers"),x=require("@iiif/helpers/vault");x=c(x,1);let S=require("@manifest-editor/creator-api"),C=require("react-error-boundary"),w=require("@iiif/helpers/vault/actions"),T=require("@iiif/helpers/vault/utility"),E=require("mitt");E=c(E,1);let D=require("tiny-use-debounce"),O=require("react-transition-group"),ee=require("shallowequal");ee=c(ee,1);let k=require("@atlas-viewer/iiif-image-api"),A=require("@manifest-editor/client-vault");var j=process.env.NODE_ENV===`production`,M=`Invariant failed`;function N(e,t){if(!e){if(j)throw Error(M);var n=typeof t==`function`?t():t,r=n?`${M}: ${n}`:M;throw Error(r)}}const P={previews:[],behaviorPresets:[`auto-advance`,`no-auto-advance`,`repeat`,`no-repeat`,`unordered`,`individuals`,`continuous`,`paged`,`non-paged`,`facing-pages`,`multi-part`,`together`,`sequence`,`thumbnail-nav`,`no-nav`,`hidden`],defaultPreview:null,editorConfig:{},newTemplates:null,i18n:{advancedLanguageMode:!1,availableLanguages:[`en`,`cy`,`nl`,`fr`],defaultLanguage:`en`},editorFeatureFlags:{enableMultiImageCanvases:!0,enableMultiMediaCanvases:!0,annotationPopups:!1,rememberCanvasId:!0,manifestGridOptions:!1,rememberLeftPanelId:!1},uploadBackends:[],plugins:{apps:{}},export:{baseIdentifier:null,version:3},creators:{"iiif-image-services":{compact:`with-dimensions`,includeSizes:!1,includeTiles:!1}}};function F(e,t){if(!e&&!t)return;let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{}};return n}function te(e,t){if(!e&&!t)return;let n={...e?.apps||{}};for(let[e,r]of Object.entries(t?.apps||{})){let t=n[e]||{};n[e]={...t,...r,settings:{...t.settings||{},...r.settings||{}}}}return{apps:n}}function ne(e,t){if(!e&&!t)return;let n={...e||{}};for(let[e,r]of Object.entries(t||{}))n[e]={...n[e]||{},...r||{}};return n}function I(...e){let t={};for(let n of e)n&&(t={...t,...n,editorConfig:F(t.editorConfig,n.editorConfig),editorFeatureFlags:t.editorFeatureFlags||n.editorFeatureFlags?{...t.editorFeatureFlags||{},...n.editorFeatureFlags||{}}:void 0,i18n:t.i18n||n.i18n?{...t.i18n||{},...n.i18n||{}}:void 0,export:t.export||n.export?{...t.export||{},...n.export||{}}:void 0,creators:ne(t.creators,n.creators),plugins:te(t.plugins,n.plugins)});return t}function re(...e){return I(P,...e)}const L=(0,u.createContext)(P),R=(0,u.createContext)(()=>{});function z(){return(0,u.useContext)(L)}function ie(){return(0,u.useContext)(R)}function ae({children:e,config:t,saveConfig:n}){let[r,i]=(0,u.useState)(null),a=(0,u.useMemo)(()=>re(t,r),[t,r]),o=(0,u.useCallback)(e=>{i(t=>I(t,e)),n&&n(e)},[n]);return(0,d.jsx)(R.Provider,{value:o,children:(0,d.jsx)(L.Provider,{value:a,children:e})})}const oe=`@manifest-editor/canvas-progress`,se=`status`,ce=new Set([`queued`,`pending`,`done`]);function le(e){return typeof e==`string`?e:e?.id||null}function ue(e){return typeof e==`string`&&ce.has(e)?e:`none`}function de(e){return typeof e==`string`&&ce.has(e)}function fe(e,t){let n=le(t);return n?ue(e.getResourceMeta(n,oe)?.[se]):`none`}function pe(e,t){let n=le(t);return n?ue(e?.iiif?.meta?.[n]?.[oe]?.[se]):`none`}function me(e,t,n){let r=le(t);if(!r)return`none`;let i=de(n)?n:void 0;return e.setMetaValue([r,oe,se],i),i||`none`}function he(e,t){return me(e,t,`none`)}function ge(e,t,n){let r={};for(let i of t){let t=le(i);t&&(r[t]=me(e,i,n))}return r}function _e(e,t){return ge(e,t,`none`)}function ve(e){return{getStatus(t){return fe(e,t)},setStatus(t,n){return me(e,t,n)},clearStatus(t){return he(e,t)},setStatuses(t,n){return ge(e,t,n)},clearStatuses(t){return _e(e,t)}}}function ye(e,t=new Set){function n(e){let n=le(e);n&&t.add(n)}function r(e){for(let t of e)n(t)}return{trackedResourceIds:t,getStatus(t){return e.getStatus(t)},setStatus(t,r){return n(t),e.setStatus(t,r)},clearStatus(t){return n(t),e.clearStatus(t)},setStatuses(t,n){return r(t),e.setStatuses(t,n)},clearStatuses(t){return r(t),e.clearStatuses(t)},clearTrackedStatuses(){e.clearStatuses(Array.from(t).map(e=>({id:e,type:`Canvas`}))),t.clear()}}}function be(e){let t=le(e);return(0,m.useVaultSelector)(e=>t?pe(e,t):`none`,[t])}function xe(e){let t=(0,m.useVault)(),n=le(e),r=(0,u.useMemo)(()=>ve(t),[t]);return(0,u.useMemo)(()=>({setStatus(e){return r.setStatus(n,e)},clearStatus(){return r.clearStatus(n)},getStatus(){return r.getStatus(n)}}),[r,n])}const Se={queued:{label:`Queued`,stripClass:`bg-zinc-400/80`,badgeClass:`bg-zinc-500`,dimOverlay:!0},pending:{label:`In progress`,stripClass:`bg-amber-400/90 animate-pulse`,badgeClass:`bg-amber-500`},done:{label:`Done`,stripClass:`bg-me-primary-500`,badgeClass:`bg-me-primary-500`}};function Ce({className:e}){return(0,d.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:[(0,d.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`}),(0,d.jsx)(`path`,{d:`M12 7v5l2.5 2.5`})]})}function we({className:e}){return(0,d.jsxs)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,children:[(0,d.jsx)(`circle`,{cx:`12`,cy:`12`,r:`9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeOpacity:`0.3`}),(0,d.jsx)(`path`,{d:`M12 3a9 9 0 0 1 9 9`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`})]})}function Te({className:e}){return(0,d.jsx)(`svg`,{className:e,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.5`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,d.jsx)(`path`,{d:`M5 12l4 4 8-8`})})}function Ee({resource:e,status:t,className:n}){return t?(0,d.jsx)(Oe,{status:t,className:n}):(0,d.jsx)(De,{resource:e,className:n})}function De({resource:e,className:t}){let n=be(e);return(0,d.jsx)(Oe,{status:n,className:t})}function Oe({status:e,className:t}){if(e===`none`)return null;let n=Se[e];return(0,d.jsxs)(d.Fragment,{children:[n.dimOverlay&&(0,d.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-0 z-10 bg-white/40`}),(0,d.jsx)(`div`,{"aria-hidden":`true`,className:`pointer-events-none absolute inset-x-0 top-0 z-10 h-[3px] rounded-t-sm ${n.stripClass} ${t||``}`}),(0,d.jsxs)(`div`,{className:`pointer-events-none absolute right-1.5 top-1.5 z-10 flex h-[18px] w-[18px] items-center justify-center rounded-full ${n.badgeClass} shadow-md ring-2 ring-white/70`,title:n.label,children:[(0,d.jsx)(`span`,{className:`sr-only`,children:n.label}),e===`queued`&&(0,d.jsx)(Ce,{className:`h-2.5 w-2.5 text-white`}),e===`pending`&&(0,d.jsx)(we,{className:`h-2.5 w-2.5 animate-spin text-white`}),e===`done`&&(0,d.jsx)(Te,{className:`h-2.5 w-2.5 text-white`})]})]})}function ke(e,t){return`${e}::${t.type}::${t.id}`}function Ae(e=[],t=[]){let n=[],r=new Set;for(let e=t.length-1;e>=0;--e){let i=t[e];i&&!r.has(i.id)&&(r.add(i.id),n.unshift(i))}return[...e.filter(e=>!r.has(e.id)),...n]}function je(e){return[...e].sort((e,t)=>{let n=(e.section||``).localeCompare(t.section||``);if(n!==0)return n;let r=(e.order||0)-(t.order||0);if(r!==0)return r;let i=e.label.localeCompare(t.label);return i===0?e.id.localeCompare(t.id):i})}function Me(e){return e instanceof Error?{message:e.message,stack:e.stack,detail:e}:{message:typeof e==`string`?e:`Background action failed`,detail:e}}function Ne(e){return e&&typeof e==`object`&&typeof e.message==`string`?{message:e.message,stack:typeof e.stack==`string`?e.stack:void 0,detail:e.detail}:Me(e)}function Pe(e,t){return!e.resourceTypes?.length||e.resourceTypes.includes(t.type)}function Fe({definitions:e,instances:t,systemContext:n,targets:r,onSupportsError:i}){let a=je(e),o=[];for(let e of r){let r=[];for(let o of a){if(!Pe(o,e))continue;let a=ke(o.id,e),s={...n,definition:o,target:e,instanceKey:a,instance:t[a]};try{if(o.supports&&!o.supports(s))continue}catch(e){i?.(o,e);continue}r.push({definition:o,target:e,instanceKey:a,instance:t[a],context:s})}r.length&&o.push({id:`${e.scope}:${e.type}:${e.id}`,label:e.label,target:e,actions:r})}return o}let Ie=0;function Le(e){return Ie+=1,`${e}-${Date.now()}-${Ie}`}function Re(e,t,n,r=Date.now()){return{id:Le(`event`),createdAt:r,type:e,message:t,data:n}}function B(e,t,n,r,i=Date.now()){return{...e,events:[...e.events,Re(t,n,r,i)]}}function ze(e){return e.filter(e=>String(e.type)!==`progress`)}function Be(e){return{...e,logs:[...e.logs],events:ze(e.events),progress:e.progress?{...e.progress}:void 0}}function Ve(e,t,n){if(!Ge(n.status))return e;let r=e[t]||[],i=Be(n),a=r.findIndex(e=>e.runId===n.runId),o=a>=0?r.map((e,t)=>t===a?i:e):[...r,i];return{...e,[t]:o}}function V(e,t,n){let r=e.instances[t];if(!r)return{instances:e.instances,histories:e.histories};let i=n(r);return{instances:{...e.instances,[t]:i},histories:Ve(e.histories,t,i)}}function He(e){return Number.isFinite(e)?Math.min(100,Math.max(0,e)):0}function Ue(e){let t=e,n=typeof t.current==`number`&&Number.isFinite(t.current)?t.current:void 0,r=typeof t.total==`number`&&Number.isFinite(t.total)?t.total:void 0;return{percent:He(typeof t.percent==`number`&&Number.isFinite(t.percent)?t.percent:typeof n==`number`&&typeof r==`number`&&r>0?n/r*100:0),current:n,total:r,label:t.label}}function We(e){return e===`preparing`||e===`running`}function Ge(e){return e===`complete`||e===`error`||e===`cancelled`}function Ke(e){return e===`queued`||e===`running`||e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function qe(e){return!e||e===`queued`||e===`running`}function Je(e){return e===`complete`||e===`skipped`||e===`error`||e===`cancelled`}function Ye(e){if(e!==void 0)try{return JSON.parse(JSON.stringify(e))}catch{return}}function Xe(e){return e&&{message:e.message,stack:e.stack,detail:Ye(e.detail)}}function Ze(e){return{...e,error:Xe(e.error)||null,result:Ye(e.result),logs:e.logs.map(e=>({...e,data:Ye(e.data)})),events:ze(e.events).map(e=>({...e,data:Ye(e.data)})),progress:e.progress?{...e.progress}:void 0}}function Qe(e){return{...e,status:it(e.status),input:Ye(e.input),result:Ye(e.result),error:Xe(e.error)||null}}function $e(e){return{version:1,data:Ye(e.data),tasks:e.tasks.map(Qe)}}function et(e){return{version:1,savedAt:Date.now(),instances:Object.fromEntries(Object.entries(e.instances).map(([e,t])=>[e,Ze(t)])),histories:Object.fromEntries(Object.entries(e.histories).map(([e,t])=>[e,t.map(Ze)])),plans:Object.fromEntries(Object.entries(e.plans).map(([e,t])=>[e,$e(t)]))}}function tt(){return{version:1,savedAt:Date.now(),instances:{},histories:{},plans:{}}}function nt(e,t){return{version:1,savedAt:t.savedAt,instances:{...e.instances,...t.instances},histories:{...e.histories,...t.histories},plans:{...e.plans,...t.plans}}}function rt(e){return!Object.keys(e.instances).length&&!Object.keys(e.histories).length&&!Object.keys(e.plans).length}function it(e){return Ke(e)?e:`queued`}function at(e,t){let n=Date.now(),r=typeof e.id==`string`&&e.id?e.id:`task-${t+1}`;return{...e,id:r,label:typeof e.label==`string`&&e.label?e.label:r,status:it(e.status),error:e.error?Ne(e.error):null,createdAt:typeof e.createdAt==`number`?e.createdAt:n}}function ot(e){return!e||e.version!==1||!Array.isArray(e.tasks)?null:{version:1,data:e.data,tasks:e.tasks.map(at)}}function st(e){return{...e,tasks:e.tasks.map(e=>e.status===`running`?{...e,status:`queued`,statusText:`Queued after reload`,startedAt:void 0}:e)}}function ct(e,t=Date.now()){return{...e,tasks:e.tasks.map(e=>qe(e.status)?{...e,status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:t}:e)}}function lt(e){return{...e,error:e.error?Ne(e.error):null,logs:Array.isArray(e.logs)?e.logs:[],events:ze(Array.isArray(e.events)?e.events:[]),resultsAvailable:e.resultsAvailable===!0}}function ut(e){return!e||e.version!==1?tt():{version:1,savedAt:typeof e.savedAt==`number`?e.savedAt:Date.now(),instances:e.instances||{},histories:e.histories||{},plans:e.plans||{}}}function dt(e,t,n){let r=e,i=t;if(We(e.status)){if(e.cancelRequestedAt){let t=Date.now();i=i&&ct(i,t),r=B({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:t,cancelledAt:t},`status`,`Cancelled`,{status:`cancelled`},t)}else if(n.resumable&&i)i=st(i),r=B({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`});else{let t=Date.now();r=B({...e,status:`cancelled`,statusText:`Interrupted by page reload`,completedAt:t,cancelledAt:t},`status`,`Interrupted by page reload`,{status:`cancelled`},t)}}return{instance:r,plan:i}}function ft(e,t){let n=ut(e),r=new Map(t.map(e=>[e.id,e])),i={},a={},o={},s=tt();for(let[e,t]of Object.entries(n.histories)){let n=(Array.isArray(t)?t:[]).map(lt),i=n.filter(e=>r.has(e.actionId)),o=n.filter(e=>!r.has(e.actionId));i.length&&(a[e]=i),o.length&&(s.histories[e]=o)}for(let[e,t]of Object.entries(n.instances)){let c=lt(t),l=ot(n.plans[e]),u=r.get(c.actionId);if(!u){s.instances[e]=Ze(c),l&&(s.plans[e]=$e(l));continue}let d=dt(c,l,u);i[e]=d.instance,a=Ve(a,e,d.instance),d.plan&&(o[e]=d.plan)}return{instances:i,histories:a,plans:o,deferred:s}}function pt(e,t){let n=e.tasks.length;if(!n)return;let r=e.tasks.filter(e=>Je(e.status)).length;return Ue({current:r,total:n,label:t})}function mt(e){return e&&typeof e==`object`&&`taskStatus`in e&&(e.taskStatus===`complete`||e.taskStatus===`skipped`)?{taskStatus:e.taskStatus,result:e.result,statusText:e.statusText}:{taskStatus:`complete`,result:e}}function ht(e,t){for(let n of t.tasks)!n.target||n.target.type!==`Canvas`||(n.status===`running`?e.setStatus(n.target,`pending`):n.status===`queued`&&e.setStatus(n.target,`queued`))}function gt(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i;function o(){return r.getState().plans[a]}function s(){return o()?.tasks||[]}function c(e=[`queued`,`running`]){let t=new Set(e);return s().filter(e=>t.has(it(e.status)))}function l(e,t,n=!1){r.getState().updateActionTask(a,e,t,n)}async function u(e,i={}){let u=c(i.statuses||[`queued`,`running`]),d=s().length,f=u.length,p=i.yieldEveryMs===!1?!1:i.yieldEveryMs??16,m=0;for(let[c,h]of u.entries()){if(t.aborted||_t(m,p)&&(await vt(),m=Date.now(),t.aborted))throw Error(`Background action cancelled.`);let u=s().find(e=>e.id===h.id)||h,g=s().findIndex(e=>e.id===u.id),_=i.progressLabel?.(u,g,d)||u.label||`Task ${g+1}/${d}`;u.target?.type===`Canvas`&&n.setStatus(u.target,`pending`),l(u.id,{status:`running`,statusText:_,error:null,startedAt:Date.now(),completedAt:void 0},!0),r.getState().setActionStatus(a,`running`,_),r.getState().setActionProgress(a,{current:s().filter(e=>Je(e.status)).length,total:d,label:_});try{let r=await e(u,{index:g,total:d,pendingIndex:c,pendingTotal:f});if(t.aborted)throw Error(`Background action cancelled.`);let i=mt(r);l(u.id,{status:i.taskStatus,statusText:i.statusText||(i.taskStatus===`skipped`?`Skipped`:`Complete`),result:i.result,error:null,completedAt:Date.now()},!0),u.target?.type===`Canvas`&&n.setStatus(u.target,`done`)}catch(e){if(t.aborted||Ct(e))throw l(u.id,{status:`cancelled`,statusText:`Cancelled`,error:null,completedAt:Date.now()},!0),e;let n=Me(e);l(u.id,{status:`error`,statusText:n.message,error:n,completedAt:Date.now()},!0),r.getState().appendActionLog(a,`Task failed: ${u.label}`,`warn`,{taskId:u.id,error:n.message})}finally{let e=o();e&&r.getState().setActionProgress(a,{current:e.tasks.filter(e=>Je(e.status)).length,total:d,label:_})}}return s()}return{getAll:s,getPending:()=>c(),update:l,runEach:u}}function _t(e,t){return t!==!1&&(!e||Date.now()-e>=t)}function vt(){return new Promise(e=>{setTimeout(e,0)})}function yt(e=[]){let t=null,n=null,r=null,i=tt();return(0,f.createStore)((a,o)=>{function s(e,t){let n=Ae([],t),r=ft(i,n);return i=r.deferred,{definitions:n,instances:{...e.instances,...r.instances},histories:{...e.histories,...r.histories},plans:{...e.plans,...r.plans},controllers:Object.fromEntries(Object.entries(e.controllers).filter(([t,n])=>n&&e.instances[t]?.status&&We(e.instances[t].status)))}}async function c(){if(r&&(clearTimeout(r),r=null),!t||!n||!o().hasHydrated)return;let e=nt(i,et(o()));if(rt(e)){await t.clear(n);return}await t.save(n,e)}function l(e=!1){if(!(!t||!n||!o().hasHydrated)){if(e){c();return}r&&clearTimeout(r),r=setTimeout(()=>{c()},300)}}return{definitions:Ae([],e),instances:{},histories:{},plans:{},controllers:{},hasHydrated:!0,setDefinitions(e){a(t=>s(t,e)),l()},setPersistence(e,r){t=e,n=e&&r?r:null,a({hasHydrated:!t})},hydrate(e){let t=ft(ut(e),o().definitions);i=t.deferred,a({instances:t.instances,histories:t.histories,plans:t.plans,controllers:{},hasHydrated:!0}),l(!0)},persist(e=!1){l(e)},flushPersistence:c,registerAction(e){return a(t=>s(t,Ae(t.definitions,[e]))),l(),()=>o().unregisterAction(e.id)},unregisterAction(e){a(t=>{let n={};for(let[r,i]of Object.entries(t.instances))i.actionId!==e&&(n[r]=i);let r={};for(let[n,i]of Object.entries(t.histories)){let t=i.filter(t=>t.actionId!==e);t.length&&(r[n]=t)}let i={...t.plans},a={...t.controllers};for(let[n,r]of Object.entries(t.instances))r.actionId===e&&(a[n]?.abort(),delete a[n],delete i[n]);return{definitions:t.definitions.filter(t=>t.id!==e),instances:n,histories:r,plans:i,controllers:a}}),l(!0)},resetAction(e){a(t=>{t.controllers[e]?.abort();let n={...t.instances},r={...t.histories},i={...t.plans},a={...t.controllers};return delete n[e],delete r[e],delete i[e],delete a[e],{instances:n,histories:r,plans:i,controllers:a}}),l(!0)},startAction(e,t,n,r){let i=Date.now();a(a=>{let o={...a.plans};return delete o[e],{instances:{...a.instances,[e]:{id:e,runId:Le(`run`),actionId:t.id,target:n,label:t.label,status:`preparing`,statusText:`Preparing`,error:null,result:void 0,resultsAvailable:!1,logs:[],events:[Re(`started`,`Preparing`,{status:`preparing`},i)],progress:void 0,startedAt:i,completedAt:void 0,cancelRequestedAt:void 0,cancelledAt:void 0}},plans:o,controllers:r?{...a.controllers,[e]:r}:a.controllers}}),l(!0)},resumeAction(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,status:`running`,statusText:`Resuming`,completedAt:void 0,cancelledAt:void 0},`status`,`Resuming`,{status:`running`},n)),controllers:{...r.controllers,[e]:t}})),l(!0)},cancelAction(e){let t=o().controllers[e],n=o().instances[e];if(!n||!We(n.status))return;let r=Date.now();a(t=>{let n=V(t,e,e=>B(B({...e,status:`cancelled`,statusText:`Cancelled`,completedAt:r,cancelledAt:r,cancelRequestedAt:e.cancelRequestedAt||r},`cancel-requested`,`Cancelling`,void 0,r),`status`,`Cancelled`,{status:`cancelled`},r)),i=t.plans[e];return{...n,plans:i?{...t.plans,[e]:ct(i,r)}:t.plans,controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))}}),l(!0),t?.abort()},setActionLabel(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,label:t},`label`,t,{label:t},n))})),l()},setActionStatus(e,t,n){let r=Date.now(),i=Ge(t)?r:void 0;a(a=>({...V(a,e,e=>B({...e,status:t,statusText:n,completedAt:i,cancelledAt:t===`cancelled`?r:void 0},`status`,n||t,{status:t},r)),controllers:We(t)?a.controllers:Object.fromEntries(Object.entries(a.controllers).filter(([t])=>t!==e))})),l(Ge(t))},setActionError(e,t,n){let r=Date.now(),i=Me(t);a(t=>({...V(t,e,e=>B({...e,status:`error`,statusText:n,error:i,completedAt:r,cancelledAt:void 0},`error`,n||i.message,i,r)),controllers:Object.fromEntries(Object.entries(t.controllers).filter(([t])=>t!==e))})),l(!0)},appendActionLog(e,t,n=`info`,r){let i=Date.now(),o={id:Le(`log`),createdAt:i,level:n,message:t,data:r};a(a=>({...V(a,e,e=>B({...e,logs:[...e.logs,o]},`log`,t,{level:n,data:r},i))})),l()},setActionProgress(e,t){let n=t?Ue(t):void 0;a(t=>({...V(t,e,e=>({...e,progress:n}))}))},setResult(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,result:t},`result`,`Result recorded`,void 0,n))})),l(!0)},setResultsAvailable(e,t){let n=Date.now();a(r=>({...V(r,e,e=>B({...e,resultsAvailable:t},`results-available`,t?`Results available`:`Results hidden`,{available:t},n))})),l(!0)},setActionPlan(e,t){let n=ot(t);n&&(a(t=>({...V(t,e,e=>({...e,progress:pt(n,`Queued`)})),plans:{...t.plans,[e]:n}})),l(!0))},updateActionTask(e,t,n,r=!1){a(r=>{let i=r.plans[e];if(!i)return r;let a=i.tasks.map(e=>e.id===t?at({...e,...n,status:n.status?it(n.status):e.status,error:n.error?Ne(n.error):n.error===null?null:e.error},0):e),o={...i,tasks:a};return{...V(r,e,e=>({...e,progress:pt(o,n.statusText||n.label)})),plans:{...r.plans,[e]:o}}}),l(r)}}})}function bt(e,t,n){let{store:r,context:i}=e,{instanceKey:a}=i,o=gt(e,t,n);return{...i,canvasProgress:n,instance:r.getState().instances[a],plan:r.getState().plans[a],tasks:o,signal:t,prepareData:e.prepareData,setActionLabel(e){r.getState().setActionLabel(a,e)},setActionStatus(e,t){r.getState().setActionStatus(a,e,t)},setActionError(e,t){r.getState().setActionError(a,e,t)},appendActionLog(e,t,n){r.getState().appendActionLog(a,e,t,n)},setActionProgress(e){r.getState().setActionProgress(a,e)},setResult(e){r.getState().setResult(a,e)},setResultsAvailable(e){r.getState().setResultsAvailable(a,e)}}}function xt(e){return!!e&&typeof e==`object`&&e.version===1&&Array.isArray(e.tasks)}async function St(e){let{store:t,context:n}=e,{definition:r,instanceKey:i,target:a}=n,o=t.getState().instances[i],s=t.getState().controllers[i];if((o?.status===`preparing`||o?.status===`running`)&&(!e.resume||s))return o;let c=new AbortController,l=c.signal,u=ye(n.canvasProgress),d=()=>c.abort();e.signal&&(e.signal.aborted?c.abort():e.signal.addEventListener(`abort`,d,{once:!0})),e.resume&&o&&We(o.status)?t.getState().resumeAction(i,c):t.getState().startAction(i,r,a,c);let f=()=>{let e=t.getState().instances[i];e&&!Ge(e.status)&&t.getState().setActionStatus(i,`cancelled`,`Cancelled`)};try{if(!e.resume&&r.prepare){let n=await r.prepare(bt(e,l,u));if(l.aborted)return f(),t.getState().instances[i];if(n===!1)return t.getState().setActionStatus(i,`idle`),t.getState().instances[i];xt(n)&&t.getState().setActionPlan(i,n)}if(l.aborted)return f(),t.getState().instances[i];let n=t.getState().plans[i];n&&ht(u,n),t.getState().setActionStatus(i,`running`,e.resume?`Resuming`:`Running`);let a=await r.run(bt(e,l,u));if(l.aborted)return f(),t.getState().instances[i];let o=t.getState().instances[i];a!==void 0&&o&&!Ge(o.status)&&t.getState().setResult(i,a),o=t.getState().instances[i],o&&We(o.status)&&((a!==void 0||o?.resultsAvailable)&&t.getState().setResultsAvailable(i,!0),t.getState().setActionStatus(i,`complete`,`Complete`))}catch(e){l.aborted||Ct(e)?f():t.getState().setActionError(i,e,`Error`)}finally{u.clearTrackedStatuses(),e.signal?.removeEventListener(`abort`,d),await t.getState().flushPersistence()}return t.getState().instances[i]}function Ct(e){return e instanceof Error&&(e.name===`AbortError`||e.message.toLowerCase().includes(`aborted`))}function wt(e){return JSON.stringify([e.appId,e.instanceId,e.rootResource.type,e.rootResource.id])}let Tt;function Et(){if(typeof window>`u`)return null;let e=p.default.createInstance({name:`manifest-editor-background-actions-v1`,storeName:`background-actions`});return{async load(t){return e.getItem(wt(t))},async save(t,n){await e.setItem(wt(t),n)},async clear(t){await e.removeItem(wt(t))}}}function Dt(){return Tt===void 0&&(Tt=Et()),Tt}const Ot=(0,u.createContext)(null);function kt({children:e,persistence:t,persistenceKey:n}){let r=U(),i=Hn(),a=(0,u.useMemo)(()=>yt(),[]),o=r.layout.backgroundActions||[],s=(0,u.useMemo)(()=>t===!1?null:t||Dt(),[t]),c=(0,u.useMemo)(()=>n||null,[n]);return(0,u.useEffect)(()=>{a.getState().setDefinitions(o)},[a,o]),(0,u.useEffect)(()=>{let e=c||{appId:i.appId,instanceId:i.instanceId,rootResource:{id:`global`,type:`Manifest`}},t=!1;return a.getState().setPersistence(s,e),s?(s.load(e).then(e=>{t||a.getState().hydrate(e)}).catch(e=>{console.warn(`[manifest-editor/background-actions] Failed to load persisted actions`,e),t||a.getState().hydrate(null)}),()=>{t=!0,a.getState().flushPersistence()}):(a.getState().hydrate(null),()=>void 0)},[i.appId,i.instanceId,s,c?.appId,c?.instanceId,c?.rootResource.id,c?.rootResource.type,a]),(0,u.useEffect)(()=>{let e=()=>{a.getState().flushPersistence()};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[a]),(0,u.createElement)(Ot.Provider,{value:a},e)}function At(){let e=(0,u.useContext)(Ot);if(!e)throw Error(`useBackgroundActionsStore must be used within a BackgroundActionsProvider`);return e}function H(e=e=>e){return(0,f.useStore)(At(),e)}function jt(e){return H(t=>t.instances[e])}function Mt(e){return H(t=>t.histories[e]||[])}async function Nt(e){let t;try{await fetch(e).then(e=>e.json().catch(e=>{console.error(`'${e}' happened!`)})).then(e=>{t={...e}})}catch(e){console.log(e)}return t}function Pt(e,t,n){return`create_${e}_${t}_${(0,h.toRef)(n)?.type||`unknown`}`}function Ft(e,t,n=`text/json`){let r=e instanceof Blob?e:new Blob([e],{type:n}),i=document.createElement(`a`);i.download=t,i.href=window.URL.createObjectURL(r);let a=new MouseEvent(`click`,{view:window,bubbles:!0,cancelable:!0});i.dispatchEvent(a),i.remove()}async function It(e){return navigator.clipboard.writeText(typeof e==`string`?e:JSON.stringify(e,null,2))}function Lt(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function Rt(e,t){let{default:n,config:r,preset:i,...a}=e,o={metadata:n,layout:{leftPanels:[],rightPanels:[],centerPanels:[],...a},config:r,preset:i},s=t?t(o):o;return{...s,preset:zt(void 0,s.preset)}}function zt(e,t){if(!e&&!t)return;let n=e?.templateFilter&&t?.templateFilter?n=>e.templateFilter(n)&&t.templateFilter(n):t?.templateFilter||e?.templateFilter,r=t?.templateStrategy===`replace`?t.templates||[]:[...e?.templates||[],...t?.templates||[]],i=e?.preview||t?.preview?{...e?.preview||{},...t?.preview||{},actions:[...e?.preview?.actions||[],...t?.preview?.actions||[]]}:void 0;return{...e||{},...t||{},templateFilter:n,templates:n?r.filter(n):r,preview:i}}function Bt(e,t,n){return{...e,metadata:t,config:I(e.config||{},n.config||{}),preset:zt(e.preset,n.preset),layout:{...e.layout,leftPanels:[...(e.layout.leftPanels||[]).filter(e=>!n?.leftPanelIds||n.leftPanelIds.includes(e.id)),...n?.leftPanels||[]],annotations:[...n?.annotations||[],...e.layout.annotations||[]],canvasEditors:[...n?.canvasEditors||[],...e.layout.canvasEditors||[]],creators:[...n?.creators||[],...e.layout.creators||[]],background:[...e.layout?.background||[],...n?.background||[]],backgroundActions:Ae(e.layout?.backgroundActions||[],n?.backgroundActions||[]),editors:[...n?.editors||[],...e.layout.editors||[]],rightPanels:[...e.layout.rightPanels||[],...n?.rightPanels||[]],centerPanels:[...e.layout.centerPanels||[],...n?.centerPanels||[]],modals:[...e.layout.modals||[],...n?.modalPanels||[]]}}}const Vt=[`leftPanels`,`centerPanels`,`rightPanels`,`modalPanels`,`annotations`,`canvasEditors`,`editors`,`creators`,`background`,`backgroundActions`],Ht={plugins:[],enabled:[],disabled:[],globalApps:{},apps:{}};function Ut(){return Ht}function Wt(e=[]){return Array.from(new Set(e.filter(Boolean)))}function Gt(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Kt(e={}){return{...e,enabled:Wt(e.enabled||[]),disabled:Wt(e.disabled||[]),settings:e.settings?{...e.settings}:void 0}}function qt(e){let t={};for(let[n,r]of Object.entries(e?.apps||{}))t[n]=Kt(r);return t}function Jt(e={},t){return{...e,enabled:Wt([...(e.enabled||[]).filter(e=>e!==t),t]),disabled:(e.disabled||[]).filter(e=>e!==t)}}function Yt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:Wt([...(e.disabled||[]).filter(e=>e!==t),t])}}function Xt(e={},t){return{...e,enabled:(e.enabled||[]).filter(e=>e!==t),disabled:(e.disabled||[]).filter(e=>e!==t)}}function Zt(e={},t={}){let n=e.enabled||[],r=t.enabled||[],i=e.disabled||[],a=t.disabled||[];return n.length===r.length&&n.every((e,t)=>e===r[t])&&i.length===a.length&&i.every((e,t)=>e===a[t])&&JSON.stringify(e.settings||{})===JSON.stringify(t.settings||{})}function Qt(e,t){let{default:n,config:r,settings:i,...a}=e,o={metadata:n,extension:{...a,config:r},settings:i};return t?t(o):o}function $t(e){return{metadata:e.default,extension:{},settings:e.settings,load:e.load,loadStatus:`idle`}}function en(e){return!!e&&`metadata`in e&&`extension`in e}function tn(e){return!!e&&`load`in e&&`default`in e}function nn(e){return en(e)?e:tn(e)?$t(e):Qt(e)}function rn(e=[]){return e.map(nn)}function an(e,t){let n=new Map(e.map(e=>[e.metadata.id,e]));return t.map(e=>{let t=n.get(e.metadata.id);return t?t.loadStatus===`loaded`&&e.load?{...t,metadata:e.metadata,load:e.load}:t.loadStatus===`loading`&&e.load?{...e,loadStatus:`loading`}:t.loadStatus===`error`&&e.load?{...e,loadStatus:`error`,loadError:t.loadError}:e:e})}function on(e,t,n){let r=e.metadata.supports;if(!r)return!0;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return!1}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return!1}return!0}function sn(e,t,n){let r=e.metadata.supports;if(!r)return null;if(r.apps?.length){let e=new Set([n,t?.metadata.id].filter(Boolean));if(!r.apps.some(t=>e.has(t)))return`This plugin does not support the current app.`}if(r.projectTypes?.length){let e=t?.metadata.projectType;if(!e||!r.projectTypes.includes(e))return`This plugin does not support the current project type.`}return null}function cn(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)?!1:r?.enabled?.includes(a)?!0:i?.disabled?.includes(a)?!1:i?.enabled?.includes(a)?!0:t.disabled.includes(a)?!1:t.enabled.includes(a)?!0:e.metadata.defaultEnabled===!0}function ln(e,t,n){let r=n?t.apps[n]:void 0,i=n?t.globalApps[n]:void 0,a=e.metadata.id;return r?.disabled?.includes(a)||r?.enabled?.includes(a)?`workspace`:i?.disabled?.includes(a)||i?.enabled?.includes(a)?`global`:t.disabled.includes(a)||t.enabled.includes(a)?`provider`:`default`}function un(e,t,n){let r=[],i=new Set,a=new Set,o=new Set(e.plugins.filter(r=>on(r,t,n)&&cn(r,e,n)).map(e=>e.metadata.id)),s=new Map(e.plugins.map(e=>[e.metadata.id,e])),c=new Set;function l(e){let u=e.metadata.id;if(i.has(u))return!0;if(a.has(u))return!1;if(c.has(u))return yn(`Plugin "${u}" was not enabled because its dependency graph contains a cycle.`),a.add(u),!1;c.add(u);for(let r of e.metadata.dependencies||[]){let e=s.get(r);if(!e||!o.has(r))return yn(`Plugin "${u}" was not enabled because dependency "${r}" is not enabled.`),c.delete(u),a.add(u),!1;if(!on(e,t,n))return yn(`Plugin "${u}" was not enabled because dependency "${r}" is not compatible.`),c.delete(u),a.add(u),!1;if(!l(e))return c.delete(u),a.add(u),!1}return c.delete(u),r.push(e),i.add(u),!0}for(let r of e.plugins)on(r,t,n)&&cn(r,e,n)&&l(r);return r}function dn(e,t){let n=e?.settings?.[t];return Gt(n)?n:{}}function fn(e={},t,n){return{...e,settings:{...e.settings||{},[t]:n}}}function pn(e={},t){let n={...e.settings||{}};return delete n[t],{...e,settings:n}}function mn(e){return{...e?.settings?.defaults||{}}}function hn(e,t,n){let r=e.plugins.find(e=>e.metadata.id===t),i=n?e.globalApps[n]:void 0,a=n?e.apps[n]:void 0;return{...mn(r),...dn(i,t),...dn(a,t)}}function gn(e,t){return{getSettings(n){return hn(e,n,t)}}}function _n(e,t,n,r,i){let a=new Map(t.plugins.map(e=>[e.metadata.id,e])),o=[],s=[],c=new Set,l=e;function u(e){let t=e.metadata.id;if(!o.includes(t)){if(c.has(t)){s.push(`${t} has a circular dependency`);return}c.add(t);for(let t of e.metadata.dependencies||[]){let e=a.get(t);if(!e){s.push(`${t} is not available`);continue}if(!on(e,r,i)){s.push(`${e.metadata.label} is not compatible`);continue}u(e)}c.delete(t),l=Jt(l,t),o.push(t)}}return u(n),s.length?{config:e,enabledIds:[],blocked:s}:{config:l,enabledIds:o,blocked:s}}function vn(e,t){return t===`modalPanels`?e.layout.modals||[]:e.layout[t]||[]}function yn(e){globalThis.process?.env?.NODE_ENV!==`production`&&console.warn(`[manifest-editor/plugin] ${e}`)}function bn(e,t,n,r){if(!r?.length)return;let i=[];for(let a of r){if(n.has(a.id)){yn(`Plugin "${e.metadata.id}" contribution "${a.id}" for "${t}" was skipped because that id already exists.`);continue}n.add(a.id),i.push(a)}return i.length?i:void 0}function xn(e,t){let n=t.extension,r={config:n.config,preset:n.preset,disableSideEffects:n.disableSideEffects};for(let i of Vt){let a=bn(t,i,new Set(vn(e,i).map(e=>e.id)),n[i]);a&&(r[i]=a)}return r}function Sn(e,t,n){if(!t.length)return e;let r=e,i=new Set;for(let a of t){if(!on(a,e,n))continue;let t=(a.metadata.dependencies||[]).filter(e=>!i.has(e));if(t.length){yn(`Plugin "${a.metadata.id}" was not applied because dependencies are missing or later in the plugin order: ${t.join(`, `)}`);continue}let o=xn(r,a);r=Bt(r,r.metadata,o),i.add(a.metadata.id)}let a=new Set(e.layout.leftPanels.map(e=>e.id)),o=r.layout.leftPanels.filter(e=>e.divide),s=r.layout.leftPanels.filter(e=>!e.divide),c=!1,l=s.map(e=>!c&&!a.has(e.id)?(c=!0,{...e,separator:!0}):e);return{...r,config:I(e.config||{},...t.filter(e=>i.has(e.metadata.id)).map(e=>e.extension.config||{}),r.config||{}),layout:{...r.layout,leftPanels:[...l,...o],backgroundActions:Ae([],r.layout.backgroundActions||[])}}}function Cn({plugins:e=[],enabled:t=[],disabled:n=[],globalPluginConfig:r}={}){let i=(e=[])=>Array.from(new Set(e.filter(Boolean)));return(0,f.createStore)(a=>({plugins:e,enabled:i(t),disabled:i(n),globalApps:qt(r),apps:{},setProviderState(e){a(t=>({...t,plugins:an(t.plugins,e.plugins||[]),enabled:i(e.enabled||[]),disabled:i(e.disabled||[]),globalApps:qt(e.globalPluginConfig)}))},setPluginLoading(e){a(t=>({...t,plugins:t.plugins.map(t=>t.metadata.id===e?{...t,loadStatus:`loading`,loadError:void 0}:t)}))},setPluginLoaded(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...t,metadata:{...n.metadata,...t.metadata},settings:t.settings||n.settings,load:n.load,loadStatus:`loaded`,loadError:void 0}:n)}))},setPluginLoadError(e,t){a(n=>({...n,plugins:n.plugins.map(n=>n.metadata.id===e?{...n,loadStatus:`error`,loadError:t}:n)}))},setAppConfig(e,t){let n=Kt(t);a(t=>Zt(t.apps[e],n)?t:{...t,apps:{...t.apps,[e]:n}})},setGlobalConfig(e){a(t=>({...t,globalApps:qt(e)}))},setGlobalAppConfig(e,t){let n=Kt(t);a(t=>Zt(t.globalApps[e],n)?t:{...t,globalApps:{...t.globalApps,[e]:n}})},enable(e,t,n=`workspace`){a(r=>({...r,plugins:r.plugins.map(e=>e.metadata.id===t&&e.loadStatus===`error`?{...e,loadStatus:`idle`,loadError:void 0}:e),...n===`global`?{globalApps:{...r.globalApps,[e]:Jt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Jt(r.apps[e],t)}}}))},disable(e,t,n=`workspace`){a(r=>({...r,...n===`global`?{globalApps:{...r.globalApps,[e]:Yt(r.globalApps[e],t)}}:{apps:{...r.apps,[e]:Yt(r.apps[e],t)}}}))}}))}const wn=(0,u.createContext)(null),Tn=(0,u.createContext)({});function En({plugins:e,enabled:t,disabled:n,globalPluginConfig:r,saveGlobalPluginConfig:i,children:a}){let o=(0,u.useMemo)(()=>rn(e),[e]),s=(0,u.useMemo)(()=>Cn({plugins:o,enabled:t,disabled:n,globalPluginConfig:r}),[]);(0,u.useEffect)(()=>{s.getState().setProviderState({plugins:o,enabled:t,disabled:n,globalPluginConfig:r})},[s,o,t,n,r]);let c=(0,u.useMemo)(()=>({globalPluginConfig:r,saveGlobalPluginConfig:i}),[r,i]);return(0,u.createElement)(Tn.Provider,{value:c},(0,u.createElement)(wn.Provider,{value:s},a))}function Dn(){return(0,u.useContext)(wn)}function On(){let e=Dn();if(!e)throw Error(`usePluginStoreApi must be used within <PluginProvider />`);return e}function kn(e){let t=Dn();return t?(0,f.useStore)(t,e):e(Ut())}function An(){return kn(e=>({plugins:e.plugins,enabled:e.enabled,disabled:e.disabled,globalApps:e.globalApps,apps:e.apps}))}function jn(e){let t=(0,u.useContext)(Bn),n=(0,u.useContext)(zn),r=An(),i=e||t?.appId;return(0,u.useMemo)(()=>un(r,n,i),[r,n,i])}function Mn(){let e=Dn();return(0,u.useMemo)(()=>e?{enable(t,n,r){e.getState().enable(t,n,r||`workspace`)},disable(t,n,r){e.getState().disable(t,n,r||`workspace`)},setAppConfig(t,n){e.getState().setAppConfig(t,n)},setGlobalAppConfig(t,n){e.getState().setGlobalAppConfig(t,n)}}:{enable(){},disable(){},setAppConfig(){},setGlobalAppConfig(){}},[e])}function Nn(e){let t=(0,u.useContext)(Bn),n=An(),r=e||t?.appId;return(0,u.useMemo)(()=>gn(n,r),[n,r])}function Pn(e,t){let n=(0,u.useContext)(Bn),r=An(),i=t||n?.appId;return(0,u.useMemo)(()=>hn(r,e,i),[r,e,i])}function Fn(e,t){let n=(0,u.useContext)(Bn),r=Dn(),i=An(),a=z(),o=ie(),{saveGlobalPluginConfig:s}=(0,u.useContext)(Tn),c=t||n?.appId||``,l=i.plugins.find(t=>t.metadata.id===e)||null,d=c?i.globalApps[c]:void 0,f=c?i.apps[c]:void 0,p=(0,u.useMemo)(()=>mn(l||void 0),[l]),m=(0,u.useMemo)(()=>dn(d,e),[d,e]),h=(0,u.useMemo)(()=>dn(f,e),[f,e]),g=(0,u.useMemo)(()=>hn(i,e,c),[i,e,c]),_=(0,u.useCallback)(e=>{c&&(r?.getState().setAppConfig(c,e),o({plugins:{...a.plugins||{},apps:{...a.plugins?.apps||{},[c]:e}}}))},[a.plugins,c,o,r]),v=(0,u.useCallback)(t=>{_(fn(f||{},e,t))},[_,e,f]),y=(0,u.useCallback)(()=>{_(pn(f||{},e))},[_,e,f]),b=(0,u.useCallback)(async e=>{if(!c||!s)return;let t=i.globalApps[c]||{},n={apps:{...i.globalApps,[c]:e}};r?.getState().setGlobalAppConfig(c,e);try{await s(n)}catch(e){throw r?.getState().setGlobalAppConfig(c,t),e}},[c,s,i.globalApps,r]),x=(0,u.useCallback)(async t=>{await b(fn(d||{},e,t))},[d,b,e]),S=(0,u.useCallback)(async()=>{await b(pn(d||{},e))},[d,b,e]);return{plugin:l,appId:c,defaults:p,global:m,workspace:h,effective:g,canSaveGlobal:!!s,setWorkspaceSettings:v,resetWorkspaceSettings:y,setGlobalSettings:x,resetGlobalSettings:S}}function In(e,t){let n=An(),r=Dn(),i=(0,u.useMemo)(()=>un(n,e,t),[n,e,t]);return(0,u.useEffect)(()=>{if(r)for(let e of i)!e.load||e.loadStatus===`loading`||e.loadStatus===`loaded`||e.loadStatus===`error`||(r.getState().setPluginLoading(e.metadata.id),e.load().then(t=>{r.getState().setPluginLoaded(e.metadata.id,nn(t))}).catch(t=>{r.getState().setPluginLoadError(e.metadata.id,Ln(t))}))},[r,i]),(0,u.useMemo)(()=>Sn(e,i.filter(e=>!e.load||e.loadStatus===`loaded`),t),[e,i,t])}function Ln(e){return e instanceof Error?e.message:typeof e==`string`?e:`Plugin failed to load.`}function Rn({config:e}){let t=(0,u.useContext)(Bn),n=Dn(),r=t?.appId,i=r?e?.plugins?.apps?.[r]:void 0;return(0,u.useEffect)(()=>{!n||!r||n.getState().setAppConfig(r,i||{})},[n,r,i]),null}const zn=(0,u.createContext)(null),Bn=(0,u.createContext)(null),Vn=(0,u.createContext)({state:null,setState:()=>{}});function Hn(){let e=(0,u.useContext)(Bn);return N(e,`Hook useAppInstance must be used inside <AppProvider />`),e}function U(){let e=(0,u.useContext)(zn);return N(e,`Hook useApp must be used inside <AppProvider />`),e}function Un(){return(0,u.useContext)(Vn)}function Wn(e,t){return e.find(e=>e.id===t)||null}function Gn(){let e=U(),{state:t,setState:n}=Un(),r=e.preset?.templates||[],i=typeof t?.presetTemplateId==`string`?t.presetTemplateId:null;return{templates:r,selectedTemplateId:i,selectedTemplate:(0,u.useMemo)(()=>Wn(r,i),[i,r]),setSelectedTemplateId:(0,u.useCallback)(e=>n({presetTemplateId:e}),[n])}}function Kn(e){let[t,n,r]=(0,l.useLocalStorage)(`app-state/${e.appId}/${e.instanceId}`,e.initialState||{}),i=(0,u.useCallback)(e=>{let t=r.current?JSON.parse(r.current||`{}`):{},i=(typeof e==`function`?e(t):e)||{};n({...t,...i})},[]);(0,u.useEffect)(()=>{e.args&&i(e.args)},[e.appId]);let a=(0,u.useMemo)(()=>({state:t||{},setState:i}),[i,t]);return(0,d.jsx)(Vn.Provider,{value:a,children:e.children})}function qn({instanceId:e,appId:t,args:n,definition:r,children:i,initialState:a}){let o=(0,u.useMemo)(()=>({instanceId:e,appId:t,args:n}),[e,t,n]),s=(0,u.useMemo)(()=>a||{},[e]),c=In(r,t);return(0,d.jsx)(ae,{config:c.config||{},children:(0,d.jsx)(zn.Provider,{value:c,children:(0,d.jsx)(Bn.Provider,{value:o,children:(0,d.jsx)(Kn,{instanceId:o.instanceId,appId:o.appId,args:o.args,initialState:s,children:i})})})})}const Jn=(0,u.createContext)(null);function Yn(){let e=(0,u.useContext)(Jn);return N(e,`Hook useApps must be used inside <MultiAppProvider />`),e}function Xn(e,t=!1){let[n,r]=(0,l.useOptionalLocalStorage)(`SelectedApplication`,e||{id:`splash`},!t);return[n,r]}function Zn({apps:e,initialApp:t,saveCurrentApp:n=!0,instanceId:r,children:i,config:a={}}){let{defaultApp:o=`splash`,collectionApp:s=`collection-editor`,manifestApp:c=`manifest-editor`}=a,[l,f]=Xn(t,n),p=e=>{e===`Manifest`&&f({id:c}),e===`Collection`&&f({id:s})},m=(0,u.useMemo)(()=>({currentApp:l||{id:o},initialApp:t||{id:o},apps:e,changeApp:f,changeProjectType:p}),[t,e,l]),h=e[m.currentApp.id];return!l||!h?null:(0,d.jsx)(qn,{appId:l.id,definition:h,instanceId:l.id+r,args:l.args,children:(0,d.jsx)(Jn.Provider,{value:m,children:i})})}const Qn=g.default.div`
|
|
2
2
|
display: flex;
|
|
3
3
|
align-items: center;
|
|
4
4
|
height: 3em;
|
|
5
5
|
padding: 0.5em;
|
|
6
|
-
`,$n=
|
|
6
|
+
`,$n=g.default.div`
|
|
7
7
|
display: flex;
|
|
8
8
|
padding: 0.25em;
|
|
9
9
|
flex-direction: column;
|
|
10
|
-
|
|
10
|
+
`;g.default.button`
|
|
11
11
|
height: 1.75em;
|
|
12
12
|
width: 1.75em;
|
|
13
13
|
background: #e9e9e9;
|
|
@@ -26,9 +26,9 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
26
26
|
fill: #fff;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
`,
|
|
29
|
+
`,g.default.div`
|
|
30
30
|
flex: 1;
|
|
31
|
-
|
|
31
|
+
`;const er=g.default.div`
|
|
32
32
|
color: #6e6e6e;
|
|
33
33
|
display: flex;
|
|
34
34
|
align-items: center;
|
|
@@ -39,7 +39,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
39
39
|
user-select: none;
|
|
40
40
|
cursor: pointer;
|
|
41
41
|
margin-right: 0.5em;
|
|
42
|
-
|
|
42
|
+
`;g.default.div`
|
|
43
43
|
margin: 0 auto;
|
|
44
44
|
padding: 3px;
|
|
45
45
|
background: #f4f4f4;
|
|
@@ -52,7 +52,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
52
52
|
@media (max-width: 450px) {
|
|
53
53
|
display: none;
|
|
54
54
|
}
|
|
55
|
-
`,
|
|
55
|
+
`,g.default.button`
|
|
56
56
|
background: #e7fff4;
|
|
57
57
|
border: 1px solid #c5e3cd;
|
|
58
58
|
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.06);
|
|
@@ -60,7 +60,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
60
60
|
color: #666666;
|
|
61
61
|
padding: 0.35em 0.7em;
|
|
62
62
|
letter-spacing: -0.42px;
|
|
63
|
-
`,ar=({height:e=16})=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:e,viewBox:`0 0 24 24`,width:`24px`,fill:`currentColor`,children:[(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})]}),or=({rotate:e=0,...t})=>(0,u.jsx)(`svg`,{version:`1.2`,xmlns:`http://www.w3.org/2000/svg`,overflow:`visible`,preserveAspectRatio:`none`,viewBox:`0 0 24 24`,width:`1em`,height:`1em`,style:{fill:`rgba(0, 0, 0, 0.6)`,transform:`rotate(${e}deg)`,transition:`transform 0.2s`},...t,children:(0,u.jsx)(`path`,{d:`M8.12 9.29 12 13.17l3.88-3.88a.996.996 0 1 1 1.41 1.41l-4.59 4.59a.996.996 0 0 1-1.41 0L6.7 10.7a.996.996 0 0 1 0-1.41c.39-.38 1.03-.39 1.42 0z`,fill:`currentColor`})}),sr=(0,l.createContext)(null),cr=(0,l.createContext)(null);function lr(){let e=(0,l.useContext)(cr),t=(0,l.useContext)(sr),n=e||t?.id;return M(n,`useResourceInstance can only be called from inside <ResourceProvider />`),n}function B(){let e=(0,l.useContext)(sr);return M(e,`useResource can only be called from inside <ResourceProvider />`),e}function ur({id:e,children:t}){return e?(0,u.jsx)(cr.Provider,{value:e,children:t}):t}function dr({resource:e,children:t}){let n=(0,p.useExistingVault)(),r=t;return e&&e.type===`Manifest`&&(r=(0,u.jsx)(p.VaultProvider,{vault:n||void 0,children:(0,u.jsx)(p.ManifestContext,{manifest:e.id||``,children:t})})),e&&e.type===`Collection`&&(r=(0,u.jsx)(p.VaultProvider,{vault:n||void 0,children:(0,u.jsx)(p.CollectionContext,{collection:e.id||``,children:t})})),(0,u.jsx)(sr.Provider,{value:e,children:r})}function fr(e){"@babel/helpers - typeof";return fr=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},fr(e)}function pr(e,t){if(fr(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(fr(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function mr(e){var t=pr(e,`string`);return fr(t)==`symbol`?t:t+``}function V(e,t,n){return(t=mr(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var hr=class{constructor({id:e,config:t,label:n}){V(this,`id`,void 0),V(this,`label`,void 0),V(this,`type`,`external-manifest-preview`),V(this,`focusable`,!0),V(this,`serviceUrl`,void 0),V(this,`windows`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}isPreviewValid(e){let t=this.windows[e];return!!(t&&t.window&&!t.window.closed)}getRequires(){return[`readOnlyManifest`]}getProvides(){return[]}async createPreview(e,t,n,r){let i=`${this.serviceUrl}`.replace(/\{manifestId}/,r.readOnlyManifest).replace(/\{time}/,`${Date.now()}`),a=window.open(i,this.id);return this.windows[e]={location:i,window:a},{id:this.id,type:`external-manifest-preview`,data:{url:i}}}async focus(e){let t=this.windows[e];t&&t.window&&t.window.focus()}async updatePreview(e,t,n,r){let i=this.windows[e];if(i)try{i.window?.close()}catch{}return this.createPreview(e,t,n,r)}async deletePreview(e){let t=this.windows[e];t&&t.window&&(t.window.close(),delete this.windows[e])}},gr=class{constructor({id:e,config:t,label:n}){V(this,`id`,void 0),V(this,`label`,void 0),V(this,`type`,`iiif-preview-service`),V(this,`focusable`,!1),V(this,`serviceUrl`,void 0),V(this,`cache`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}getRequires(){return[]}getProvides(){return[`readOnlyManifest`]}async isPreviewValid(e,t){if(this.cache[e])return!0;if(!t||!t.data||!t.data.readOnlyManifest)return!1;let n=t.data.readOnlyManifest;try{return(await fetch(n,{cache:`no-cache`})).ok}catch{return!1}}async createPreview(e,t,n){let r=n.toPresentation3(t),i=await fetch(this.serviceUrl,{method:`POST`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(r)});M(i.ok,`Unknown error creating preview`);let a=await i.json();return M(a.location,`Missing IIIF location while creating preview`),this.cache[e]={...a,time:Date.now()},{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${a.location}/${Date.now()}`}}}async focus(){}async updatePreview(e,t,n){let r=this.cache[e];if(!r||Date.now()>r.expirationTtl+r.time||!r.updateLocation)return this.createPreview(e,t,n);let i=r.updateLocation,a=n.toPresentation3(t),o=await fetch(i,{method:`PUT`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(a)});M(o.ok,`Unknown error updating preview`);let s=await o.json();M(s.location),s.updateLocation&&(r.updateLocation=s.updateLocation);let c=`${s.location}/${Date.now()}`;return await fetch(c,{cache:`no-cache`}),{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${s.location}/${Date.now()}`}}}async deletePreview(e){let t=this.cache[e];if(t&&t.deleteLocation)try{await fetch(t.deleteLocation,{method:`DELETE`,headers:{"Content-Type":`application/json`,Origin:`*`}})}catch{}}};function _r(e,t,n,r,i){let a=B(),o=lr(),s=(0,p.useVault)(),c=(0,l.useMemo)(()=>({setPreview:e=>{e&&i(t=>[...t.filter(t=>t.id!==e.id),e])},removePreview:e=>{i(t=>t.filter(t=>t.id!==e))}}),[i,o]),[u,d]=(0,l.useMemo)(()=>{let e={},t={};for(let r of n){e[r.id]=r;let n=r.getProvides();if(n.length)for(let e of n)t[e]||(t[e]=r.id)}return[e,t]},[n]);async function f(){let n=e.selected,i=r.find(e=>e.id===n);if(r&&r.length&&i){let e=u[i.id].getRequires(),n={};for(let i of r){let r=u[i.id];if(r){let i=r.getProvides();for(let l of i)if(e.indexOf(l)!==-1){let e=await r.updatePreview(o,a,s,n);e&&(c.setPreview(e),t({type:`activatePreview`,payload:e.id}),Object.assign(n,e.data||{}))}}}let l=u[i.id];if(l){let e=await l.updatePreview(o,a,s,n);e?c.setPreview(e):(c.removePreview(i.id),await l.deletePreview(o))}}}async function m(e){u[e]&&o&&(t({type:`selectPreview`,payload:e}),await v(e))}async function h(){let e=d.readOnlyManifest,t=e?u[e]:null;if(t&&o){let e=r.find(e=>e.type===`iiif-preview-service`);if(!e||!await t.isPreviewValid(o,e)){let e=await t.createPreview(o,a,s,{});if(e)return e.data.readOnlyManifest}}return null}function g(e){let n=u[e];n&&o&&(c.removePreview(e),n.deletePreview(o).then(()=>{t({type:`deletePreview`,payload:e})}))}async function _(e){let n=u[e];u[e]&&o&&n&&(await n.focus(o),t({type:`focusPreview`,payload:e}))}async function v(n){let i=u[n];if(i&&o){let l=r.find(e=>e.id===n);if(!l||!i.isPreviewValid(o,l)){let n={},l=i.getRequires();for(let i of l){let l=d[i],f=l?u[l]:null;M(f,`Missing handler for Preview requirement "${i}"`),r.find(e=>e.id===l),e.active.find(e=>e===l);{let e=await f.createPreview(o,a,s,n);Object.assign(n,e?.data||{}),c.setPreview(e),t({type:`activatePreview`,payload:e.id})}}let f=await i.createPreview(o,a,s,n);f&&(c.setPreview(f),t({type:`activatePreview`,payload:f.id}))}}}return(0,l.useMemo)(()=>({selectPreview:m,deletePreview:g,focusPreview:_,activatePreview:v,updatePreviews:f,getPreviewLink:h}),[u,o,s,e.selected,e.active,r])}function vr(e){return(0,l.useMemo)(()=>{let t=[];for(let n of e)switch(n.type){case`iiif-preview-service`:t.push(new gr(n));break;case`external-manifest-preview`:t.push(new hr(n));break}return t},[])}const yr=(0,_.produce)(function(e,t){switch(t.type){case`focusPreview`:break;case`deletePreview`:e.selected===t.payload&&(e.selected=null),e.active=e.active.filter(e=>e!==t.payload);break;case`activatePreview`:e.active.indexOf(t.payload)===-1&&e.active.push(t.payload);break;case`selectPreview`:e.selected=t.payload,e.active.indexOf(t.payload)===-1&&e.active.push(t.payload);break}});function br(){return{active:[],selected:null}}const xr=(0,l.createContext)(null),Sr=(0,l.createContext)([]),Cr=(0,l.memo)(function({children:e,configs:t=[]}){let n=lr(),r=vr(t),[i,a]=(0,c.useLocalStorage)(`preview-${n}`,[]),[o,s]=(0,l.useReducer)(yr,void 0,br),d=_r(o,s,r,i,a),f=(0,l.useMemo)(()=>({configs:t,actions:d,handlers:r,...o}),[d,t,r,o]);return(0,l.useEffect)(()=>{for(let e of i)if(!o.active.includes(e.id)){let t=r.find(t=>t.id===e.id);t&&Promise.resolve(t.isPreviewValid(n,e)).then(t=>{t?s({type:`activatePreview`,payload:e.id}):a(t=>t.filter(t=>t.id!==e.id))})}},[n]),(0,u.jsx)(Sr.Provider,{value:i,children:(0,u.jsx)(xr.Provider,{value:f,children:e})})});function wr(){return(0,l.useContext)(Sr)}function Tr(){let e=(0,l.useContext)(xr);return M(e,`usePreviewContext() can only be called from inside <PreviewProvider />`),e}const Er=h.default.button`
|
|
63
|
+
`;const tr=({height:e=16})=>(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:e,viewBox:`0 0 24 24`,width:`24px`,fill:`currentColor`,children:[(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`})]}),nr=({rotate:e=0,...t})=>(0,d.jsx)(`svg`,{version:`1.2`,xmlns:`http://www.w3.org/2000/svg`,overflow:`visible`,preserveAspectRatio:`none`,viewBox:`0 0 24 24`,width:`1em`,height:`1em`,style:{fill:`rgba(0, 0, 0, 0.6)`,transform:`rotate(${e}deg)`,transition:`transform 0.2s`},...t,children:(0,d.jsx)(`path`,{d:`M8.12 9.29 12 13.17l3.88-3.88a.996.996 0 1 1 1.41 1.41l-4.59 4.59a.996.996 0 0 1-1.41 0L6.7 10.7a.996.996 0 0 1 0-1.41c.39-.38 1.03-.39 1.42 0z`,fill:`currentColor`})});var rr=c(o((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=require("react");function n(e,n){let[r,i]=(0,t.useState)(!1),a=(0,t.useRef)(null),o=(0,t.useRef)(!0),s=(0,t.useRef)(!1),c=(0,t.useRef)(null),l=(0,t.useMemo)(()=>Array.from({length:e},()=>(0,t.createRef)()),[e]),u=e=>e.key!==void 0,d=e=>{var t;a.current=e,(t=l[e].current)==null||t.focus()};(0,t.useEffect)(()=>{if(o.current){o.current=!1;return}r&&(!s.current||n?.focusFirstItemOnClick)?d(0):r||(s.current=!1)},[r]),(0,t.useEffect)(()=>{if(!r)return;let e={removed:!1},t=e=>{setTimeout(()=>{e.target instanceof Element&&(e.target.closest(`[role="menu"]`)instanceof Element||i(!1))},10)};return setTimeout(()=>{e.removed||document.addEventListener(`click`,t)},1),()=>{e.removed=!0,document.removeEventListener(`click`,t)}},[r]),(0,t.useEffect)(()=>{let e=e=>{r&&(e.key===`ArrowDown`||e.key===`ArrowUp`)&&e.preventDefault()};return document.addEventListener(`keydown`,e),()=>document.removeEventListener(`keydown`,e)},[r]);let f=e=>{if(u(e)){let{key:t}=e;if(![`Enter`,` `,`Tab`,`ArrowDown`,`Escape`].includes(t))return;(t===`Tab`||t===`ArrowDown`)&&s.current&&r&&(e.preventDefault(),d(0)),(t===`Enter`||t===` `)&&(e.preventDefault(),i(!0)),t===`Escape`&&(e.preventDefault(),i(!1))}else n?.focusFirstItemOnClick||(s.current=!r),i(!r)},p=e=>{var t;let{key:n}=e;if([`Tab`,`Shift`,`Enter`,`Escape`,`ArrowUp`,`ArrowDown`,` `].includes(n)){let r=a.current;if(n===`Escape`){i(!1),(t=c.current)==null||t.focus();return}if(n===`Tab`){i(!1);return}if(n===`Enter`||n===` `){e.currentTarget.href||e.currentTarget.click(),i(!1);return}r!==null&&(n===`ArrowUp`?--r:n===`ArrowDown`&&(r+=1),r>l.length-1?r=0:r<0&&(r=l.length-1)),r!==null&&d(r);return}if(/[a-zA-Z0-9./<>?;:"'`!@#$%^&*()\\[\]{}_+=|\\-~,]/.test(n)){let e=l.findIndex(e=>(e.current?.innerText)?.toLowerCase().startsWith(n.toLowerCase())||(e.current?.textContent)?.toLowerCase().startsWith(n.toLowerCase())||(e.current?.getAttribute(`aria-label`))?.toLowerCase().startsWith(n.toLowerCase()));e!==-1&&d(e)}};return{buttonProps:{onKeyDown:f,onClick:f,tabIndex:0,ref:c,role:`button`,"aria-haspopup":!0,"aria-expanded":r},itemProps:Array.from({length:e},(e,t)=>({onKeyDown:p,tabIndex:-1,role:`menuitem`,ref:l[t]})),isOpen:r,setIsOpen:i,moveFocus:d}}e.default=n}))(),1);const ir=typeof rr.default==`object`&&rr.default!==null&&`default`in rr.default?rr.default.default:rr.default,ar=(0,u.createContext)(null),or=(0,u.createContext)(null);function sr(){let e=(0,u.useContext)(or),t=(0,u.useContext)(ar),n=e||t?.id;return N(n,`useResourceInstance can only be called from inside <ResourceProvider />`),n}function W(){let e=(0,u.useContext)(ar);return N(e,`useResource can only be called from inside <ResourceProvider />`),e}function cr({id:e,children:t}){return e?(0,d.jsx)(or.Provider,{value:e,children:t}):t}function lr({resource:e,children:t}){let n=(0,m.useExistingVault)(),r=t;return e&&e.type===`Manifest`&&(r=(0,d.jsx)(m.VaultProvider,{vault:n||void 0,children:(0,d.jsx)(m.ManifestContext,{manifest:e.id||``,children:t})})),e&&e.type===`Collection`&&(r=(0,d.jsx)(m.VaultProvider,{vault:n||void 0,children:(0,d.jsx)(m.CollectionContext,{collection:e.id||``,children:t})})),(0,d.jsx)(ar.Provider,{value:e,children:r})}function ur(e){"@babel/helpers - typeof";return ur=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},ur(e)}function dr(e,t){if(ur(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(ur(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function fr(e){var t=dr(e,`string`);return ur(t)==`symbol`?t:t+``}function G(e,t,n){return(t=fr(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var pr=class{constructor({id:e,config:t,label:n}){G(this,`id`,void 0),G(this,`label`,void 0),G(this,`type`,`external-manifest-preview`),G(this,`focusable`,!0),G(this,`serviceUrl`,void 0),G(this,`windows`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}isPreviewValid(e){let t=this.windows[e];return!!(t&&t.window&&!t.window.closed)}getRequires(){return[`readOnlyManifest`]}getProvides(){return[]}async createPreview(e,t,n,r){let i=`${this.serviceUrl}`.replace(/\{manifestId}/,r.readOnlyManifest).replace(/\{time}/,`${Date.now()}`),a=window.open(i,this.id);return this.windows[e]={location:i,window:a},{id:this.id,type:`external-manifest-preview`,data:{url:i}}}async focus(e){let t=this.windows[e];t&&t.window&&t.window.focus()}async updatePreview(e,t,n,r){let i=this.windows[e];if(i)try{i.window?.close()}catch{}return this.createPreview(e,t,n,r)}async deletePreview(e){let t=this.windows[e];t&&t.window&&(t.window.close(),delete this.windows[e])}},mr=class{constructor({id:e,config:t,label:n}){G(this,`id`,void 0),G(this,`label`,void 0),G(this,`type`,`iiif-preview-service`),G(this,`focusable`,!1),G(this,`serviceUrl`,void 0),G(this,`cache`,{}),this.id=e,this.label=n,this.serviceUrl=t.url}getRequires(){return[]}getProvides(){return[`readOnlyManifest`]}async isPreviewValid(e,t){if(this.cache[e])return!0;if(!t||!t.data||!t.data.readOnlyManifest)return!1;let n=t.data.readOnlyManifest;try{return(await fetch(n,{cache:`no-cache`})).ok}catch{return!1}}async createPreview(e,t,n){let r=n.toPresentation3(t),i=await fetch(this.serviceUrl,{method:`POST`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(r)});N(i.ok,`Unknown error creating preview`);let a=await i.json();return N(a.location,`Missing IIIF location while creating preview`),this.cache[e]={...a,time:Date.now()},{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${a.location}/${Date.now()}`}}}async focus(){}async updatePreview(e,t,n){let r=this.cache[e];if(!r||Date.now()>r.expirationTtl+r.time||!r.updateLocation)return this.createPreview(e,t,n);let i=r.updateLocation,a=n.toPresentation3(t),o=await fetch(i,{method:`PUT`,headers:{"Content-Type":`application/json`,Origin:`*`},body:JSON.stringify(a)});N(o.ok,`Unknown error updating preview`);let s=await o.json();N(s.location),s.updateLocation&&(r.updateLocation=s.updateLocation);let c=`${s.location}/${Date.now()}`;return await fetch(c,{cache:`no-cache`}),{id:this.id,type:`external-manifest-preview`,data:{readOnlyManifest:`${s.location}/${Date.now()}`}}}async deletePreview(e){let t=this.cache[e];if(t&&t.deleteLocation)try{await fetch(t.deleteLocation,{method:`DELETE`,headers:{"Content-Type":`application/json`,Origin:`*`}})}catch{}}};function hr(e,t,n,r,i){let a=W(),o=sr(),s=(0,m.useVault)(),c=(0,u.useMemo)(()=>({setPreview:e=>{e&&i(t=>[...t.filter(t=>t.id!==e.id),e])},removePreview:e=>{i(t=>t.filter(t=>t.id!==e))}}),[i,o]),[l,d]=(0,u.useMemo)(()=>{let e={},t={};for(let r of n){e[r.id]=r;let n=r.getProvides();if(n.length)for(let e of n)t[e]||(t[e]=r.id)}return[e,t]},[n]);async function f(){let n=e.selected,i=r.find(e=>e.id===n);if(r&&r.length&&i){let e=l[i.id].getRequires(),n={};for(let i of r){let r=l[i.id];if(r){let i=r.getProvides();for(let l of i)if(e.indexOf(l)!==-1){let e=await r.updatePreview(o,a,s,n);e&&(c.setPreview(e),t({type:`activatePreview`,payload:e.id}),Object.assign(n,e.data||{}))}}}let u=l[i.id];if(u){let e=await u.updatePreview(o,a,s,n);e?c.setPreview(e):(c.removePreview(i.id),await u.deletePreview(o))}}}async function p(e){l[e]&&o&&(t({type:`selectPreview`,payload:e}),await v(e))}async function h(){let e=d.readOnlyManifest,t=e?l[e]:null;if(t&&o){let e=r.find(e=>e.type===`iiif-preview-service`);if(!e||!await t.isPreviewValid(o,e)){let e=await t.createPreview(o,a,s,{});if(e)return e.data.readOnlyManifest}}return null}function g(e){let n=l[e];n&&o&&(c.removePreview(e),n.deletePreview(o).then(()=>{t({type:`deletePreview`,payload:e})}))}async function _(e){let n=l[e];l[e]&&o&&n&&(await n.focus(o),t({type:`focusPreview`,payload:e}))}async function v(n){let i=l[n];if(i&&o){let u=r.find(e=>e.id===n);if(!u||!i.isPreviewValid(o,u)){let n={},u=i.getRequires();for(let i of u){let u=d[i],f=u?l[u]:null;N(f,`Missing handler for Preview requirement "${i}"`),r.find(e=>e.id===u),e.active.find(e=>e===u);{let e=await f.createPreview(o,a,s,n);Object.assign(n,e?.data||{}),c.setPreview(e),t({type:`activatePreview`,payload:e.id})}}let f=await i.createPreview(o,a,s,n);f&&(c.setPreview(f),t({type:`activatePreview`,payload:f.id}))}}}return(0,u.useMemo)(()=>({selectPreview:p,deletePreview:g,focusPreview:_,activatePreview:v,updatePreviews:f,getPreviewLink:h}),[l,o,s,e.selected,e.active,r])}function gr(e){return(0,u.useMemo)(()=>{let t=[];for(let n of e)switch(n.type){case`iiif-preview-service`:t.push(new mr(n));break;case`external-manifest-preview`:t.push(new pr(n))}return t},[])}const _r=(0,_.produce)(function(e,t){switch(t.type){case`focusPreview`:break;case`deletePreview`:e.selected===t.payload&&(e.selected=null),e.active=e.active.filter(e=>e!==t.payload);break;case`activatePreview`:e.active.indexOf(t.payload)===-1&&e.active.push(t.payload);break;case`selectPreview`:e.selected=t.payload,e.active.indexOf(t.payload)===-1&&e.active.push(t.payload)}});function vr(){return{active:[],selected:null}}const yr=(0,u.createContext)(null),br=(0,u.createContext)([]),xr=(0,u.memo)(function({children:e,configs:t=[]}){let n=sr(),r=gr(t),[i,a]=(0,l.useLocalStorage)(`preview-${n}`,[]),[o,s]=(0,u.useReducer)(_r,void 0,vr),c=hr(o,s,r,i,a),f=(0,u.useMemo)(()=>({configs:t,actions:c,handlers:r,...o}),[c,t,r,o]);return(0,u.useEffect)(()=>{for(let e of i)if(!o.active.includes(e.id)){let t=r.find(t=>t.id===e.id);t&&Promise.resolve(t.isPreviewValid(n,e)).then(t=>{t?s({type:`activatePreview`,payload:e.id}):a(t=>t.filter(t=>t.id!==e.id))})}},[n]),(0,d.jsx)(br.Provider,{value:i,children:(0,d.jsx)(yr.Provider,{value:f,children:e})})});function Sr(){return(0,u.useContext)(br)}function Cr(){let e=(0,u.useContext)(yr);return N(e,`usePreviewContext() can only be called from inside <PreviewProvider />`),e}const wr=g.default.button`
|
|
64
64
|
border: none;
|
|
65
65
|
outline: none;
|
|
66
66
|
background-color: transparent;
|
|
@@ -72,7 +72,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
72
72
|
&:hover {
|
|
73
73
|
color: inherit;
|
|
74
74
|
}
|
|
75
|
-
`,
|
|
75
|
+
`,K=g.default.button`
|
|
76
76
|
padding: 0.5rem 1rem;
|
|
77
77
|
color: ${e=>e.theme.color.main||`none`};
|
|
78
78
|
background-color: ${e=>e.theme.color.white||`white`};
|
|
@@ -90,11 +90,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
90
90
|
&:hover {
|
|
91
91
|
background: #eee;
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
`;(0,g.default)(K)`
|
|
94
94
|
padding: 0.25em ${e=>e.theme.padding.xs||`0.4em`};
|
|
95
95
|
height: unset;
|
|
96
96
|
background: none;
|
|
97
|
-
`,
|
|
97
|
+
`,(0,g.default)(K)`
|
|
98
98
|
{
|
|
99
99
|
padding: 0 ${e=>e.theme.padding.medium||`1rem`};
|
|
100
100
|
color: ${e=>e.theme.color.main||`#B84C74;`};
|
|
@@ -113,7 +113,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
113
113
|
cursor: not-allowed;
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
|
-
|
|
116
|
+
`;const Tr=(0,g.default)(K)`
|
|
117
117
|
padding: 0 ${e=>e.theme.padding.medium||`1rem`};
|
|
118
118
|
color: ${e=>e.theme.color.white||`white`};
|
|
119
119
|
background-color: ${e=>e.theme.color.main||`#B84C74;`};
|
|
@@ -126,17 +126,17 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
126
126
|
&:hover {
|
|
127
127
|
background-color: ${e=>e.theme.color.mainHover||`#B84C74;`};
|
|
128
128
|
}
|
|
129
|
-
|
|
129
|
+
`;g.default.div`
|
|
130
130
|
display: flex;
|
|
131
131
|
flex-direction: row;
|
|
132
132
|
flex-wrap: wrap;
|
|
133
133
|
align-items: flex-start;
|
|
134
134
|
justify-content: ${e=>e.$right?`flex-end`:`flex-start`};
|
|
135
|
-
|
|
135
|
+
`;const Er=g.default.div`
|
|
136
136
|
display: flex;
|
|
137
137
|
position: relative;
|
|
138
138
|
width: 10em;
|
|
139
|
-
`,
|
|
139
|
+
`,Dr=(0,g.default)(wr)`
|
|
140
140
|
flex: 1;
|
|
141
141
|
padding: 0.5em 0.8em;
|
|
142
142
|
background: #b84c74;
|
|
@@ -157,7 +157,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
157
157
|
background: #892c4e;
|
|
158
158
|
box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
|
|
159
159
|
}
|
|
160
|
-
`,
|
|
160
|
+
`,Or=(0,g.default)(wr)`
|
|
161
161
|
background: #b84c74;
|
|
162
162
|
border-top-right-radius: 5px;
|
|
163
163
|
border-bottom-right-radius: 5px;
|
|
@@ -178,11 +178,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
178
178
|
box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
|
|
179
179
|
}
|
|
180
180
|
|
|
181
|
-
${e=>e.$open&&
|
|
181
|
+
${e=>e.$open&&g.css`
|
|
182
182
|
background: #892c4e;
|
|
183
183
|
box-shadow: inset 0 2px 8px 0 rgba(0, 0, 0, 0.15);
|
|
184
184
|
`}
|
|
185
|
-
`,
|
|
185
|
+
`,kr=g.default.div`
|
|
186
186
|
position: absolute;
|
|
187
187
|
opacity: 0;
|
|
188
188
|
top: 100%;
|
|
@@ -199,11 +199,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
199
199
|
color: #25211f;
|
|
200
200
|
overflow: hidden;
|
|
201
201
|
|
|
202
|
-
${e=>e.$open&&
|
|
202
|
+
${e=>e.$open&&g.css`
|
|
203
203
|
opacity: 1;
|
|
204
204
|
pointer-events: visible;
|
|
205
205
|
`}
|
|
206
|
-
`,
|
|
206
|
+
`,Ar=g.default.div`
|
|
207
207
|
display: flex;
|
|
208
208
|
background: #fff;
|
|
209
209
|
color: #25211f;
|
|
@@ -213,13 +213,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
213
213
|
&:hover {
|
|
214
214
|
background: #f9f9f9;
|
|
215
215
|
}
|
|
216
|
-
`,
|
|
216
|
+
`,jr={available:`#ddd`,configured:`#e37266`,active:`#4cb235`},Mr=g.default.div`
|
|
217
217
|
margin: 0.2em 0.5em;
|
|
218
218
|
width: 8px;
|
|
219
219
|
height: 8px;
|
|
220
220
|
border-radius: 50%;
|
|
221
|
-
background-color: ${e=>
|
|
222
|
-
`,
|
|
221
|
+
background-color: ${e=>jr[e.$status]};
|
|
222
|
+
`,Nr=g.default.div`
|
|
223
223
|
flex: 1;
|
|
224
224
|
font-size: 0.925em;
|
|
225
225
|
color: #25211f;
|
|
@@ -228,10 +228,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
228
228
|
cursor: pointer;
|
|
229
229
|
white-space: nowrap;
|
|
230
230
|
overflow: hidden;
|
|
231
|
-
`,
|
|
231
|
+
`,Pr=g.default.div`
|
|
232
232
|
background: #f9f9f9;
|
|
233
233
|
font-size: 0.8em;
|
|
234
|
-
`,
|
|
234
|
+
`,Fr=g.default.div`
|
|
235
235
|
color: #999;
|
|
236
236
|
font-size: 0.8em;
|
|
237
237
|
padding: 0.6em 0.8em;
|
|
@@ -239,10 +239,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
239
239
|
border-radius: 5px;
|
|
240
240
|
user-select: none;
|
|
241
241
|
cursor: not-allowed;
|
|
242
|
-
`;function Vr({downloadEnabled:e,fileName:t}){let{active:n,configs:r,actions:i,selected:a}=Tr(),o=(0,p.useVault)(),s=F(),l=B(),d=r.filter(e=>e.type===`external-manifest-preview`),{isOpen:f,buttonProps:m,itemProps:h}=(0,g.default)(d.length);return d.length===0?(0,u.jsx)(Br,{children:`Preview not available`}):(0,u.jsxs)(u.Fragment,{children:[e?(0,u.jsx)(`div`,{className:`mr-4`,children:(0,u.jsx)(c.DownloadButton,{fileName:t||`manifest.json`,label:`Download manifest`,getData:()=>s.export&&s.export.version===2?JSON.stringify(o.toPresentation2(l),null,2):JSON.stringify(o.toPresentation3(l),null,2)})}):null,(0,u.jsxs)(jr,{children:[(0,u.jsx)(Mr,{onClick:()=>{if(!a){let e=s.defaultPreview;if(e){let t=r.find(t=>t.id===e);if(t){i.selectPreview(t.id);return}}i.selectPreview(r[0].id)}i.updatePreviews()},children:`Preview`}),(0,u.jsx)(Nr,{$open:f,...m,children:(0,u.jsx)(or,{})}),(0,u.jsx)(Pr,{$open:f,children:d.map((e,t)=>{let r=n.indexOf(e.id)===-1;return(0,u.jsxs)(Fr,{...h[t],children:[(0,u.jsx)(Lr,{$status:r?`available`:e.id===a?`active`:`configured`}),(0,u.jsx)(Rr,{onClick:()=>{i.selectPreview(e.id)},children:e.label}),r?null:(0,u.jsx)(zr,{onClick:()=>i.deletePreview(e.id),children:(0,u.jsx)(ar,{})})]},e.id)})})]})]})}function Hr(e,t){switch(t.type){case`setStack`:return{...e,stack:t.payload.resources,current:t.payload.resources[0]||null};case`edit`:{let n=t.payload.reset;return(t.payload.resource?.resource.source?.type===`Manifest`||t.payload.resource?.resource.source?.type===`Canvas`)&&(n=!0),e.current?.resource.source.id===t.payload.resource?.resource.source.id?{...e,current:t.payload.resource}:{...e,current:t.payload.resource,stack:n?[]:e.current?[e.current,...e.stack]:e.stack}}case`syncRemoval`:{let n=(0,m.toRef)(t.payload.resource.resource);if(!n||!e.stack.find(e=>(0,m.toRef)(e.resource)?.id===n.id))return e;let r=e.current?.resource.id===n.id?null:e.current,i=Ur(e.stack.filter(e=>(0,m.toRef)(e.resource)?.id!==n.id),r);return{...e,stack:i,current:r}}case`updateCurrent`:return{...e,current:t.payload.resource};case`back`:{let t=e.stack[0];return{...e,stack:e.stack.slice(1),current:t||null}}case`close`:return{...e,stack:[],current:null};case`create`:return t.payload.resource===null?{...e,create:null}:{...e,create:t.payload}}return e}function Ur(e,t){let n=[],r=null;for(let t of e)r?.resource.id!==t.resource.id&&(n.push(t),r=t);return r&&r.resource.id===t?.resource.id?n.slice(0,n.length-1):n}const Wr={stack:[],current:null,create:null},Gr=(0,l.createContext)(Wr),Kr=(0,l.createContext)({edit(){},close(){},back(){},setStack(){},updateCurrent(){},create(){return()=>{}}});function qr(){return(0,l.useContext)(Kr)}function Jr(){return(0,l.useContext)(Gr).current}function Yr(){return(0,l.useContext)(Gr).stack}function Xr(){return(0,l.useContext)(Gr).create}function Zr(){let{manifest:e}=(0,p.useResourceContext)(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);M(e,`Manifest not found`);let i=(0,l.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Manifest`},vault:t}),[e,t]);return(0,l.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function Qr(){let{collection:e}=(0,p.useResourceContext)(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);M(e,`Collection not found`);let i=(0,l.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Collection`},vault:t}),[e,t]);return(0,l.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function $r(e,t={}){let n=(0,p.useVault)(),[r,i]=(0,l.useReducer)(e=>e+1,0);!t.allowNull&&M(e,`Resource not found`);let a=(0,l.useMemo)(()=>t.allowNull&&!e?null:new v.EditorInstance({reference:(0,m.toRef)(e),vault:n,context:{resource:e,parent:t.parent,index:t.index,parentProperty:t.parentProperty}}),[e,n]);return(0,l.useEffect)(()=>a?.observe.start(i),[a]),a&&(a.observe.key=`${r}`,a.observe.reset()),a}function ei(){let{annotationPage:e}=(0,p.useResourceContext)();return M(e,`Annotation page not found`),$r({id:e,type:`AnnotationPage`})}function ti(){let e=Jr(),t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(e=>e+1,0);M(e,`No resource selected`);let i=(0,l.useMemo)(()=>new v.EditorInstance({reference:e.resource.source||e.resource,vault:t}),[e,t]);return(0,l.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function ni(e){let t=(0,p.useVault)(),[n,r]=(0,l.useReducer)(Hr,e),i=(0,l.useCallback)(e=>{r(e)},[]);(0,l.useEffect)(()=>t.on(`@iiif/REMOVE_REFERENCE`,e=>{let t=e.action,n={id:t.payload.id,type:t.payload.type},i=t.payload.reference;r({type:`syncRemoval`,payload:{resource:{parent:n,resource:i}}})}),[t]);let a=(0,l.useCallback)((e,t=!1)=>i({type:`edit`,payload:{resource:e,reset:t}}),[]),o=(0,l.useCallback)(e=>i({type:`setStack`,payload:{resources:e}}),[]),s=(0,l.useCallback)(e=>i({type:`updateCurrent`,payload:{resource:e}}),[]),c=(0,l.useCallback)(()=>i({type:`close`}),[]),u=(0,l.useCallback)(()=>i({type:`back`}),[]),d=(0,l.useCallback)((e,t)=>(i({type:`create`,payload:{resource:e,options:t}}),()=>{i({type:`create`,payload:{resource:null}})}),[]);return[n,(0,l.useMemo)(()=>({edit:a,updateCurrent:s,close:c,back:u,create:d,setStack:o}),[])]}function ri(e){let{instanceId:t}=Wn(),[n,r]=ni(e.initialState||Wr);return(0,u.jsx)(Kr.Provider,{value:r,children:(0,u.jsx)(Gr.Provider,{value:n,children:e.children})},t)}function ii({resource:e,children:t}){let{instanceId:n}=Wn(),[r,i]=ni((0,l.useMemo)(()=>({create:null,stack:[],current:{resource:{type:`SpecificResource`,source:{id:e.id,type:e.type}}}}),[]));return(0,u.jsx)(Kr.Provider,{value:i,children:(0,u.jsx)(Gr.Provider,{value:r,children:t})},n)}const ai=(0,l.createContext)(null),oi=(0,l.createContext)(null),si=(0,l.createContext)(`default`);function ci(){return(0,l.useContext)(oi)}function li(){return(0,l.useContext)(ai)}function ui(){return(0,l.useContext)(si)}function di(){return z().layout}function fi(){let e=z(),t=e.layout,n=(0,l.useContext)(ai),r=(0,l.useContext)(oi);return(0,l.useMemo)(()=>({actions:n,state:r,...t}),[e,r])}const pi=`@manifest-editor/tags`,mi=`tags`,hi={type:`flag`,id:`flag`,label:`Flag`,backgroundColor:`#b91c1c`,textColor:`#ffffff`,icon:`flag`},gi=[];function _i(e){return typeof e==`string`?e:e?.id||null}function vi(e){return e.type||e.id}function yi(e){return`${e.type}:${e.id}`}function bi(e){if(!Array.isArray(e))return gi;let t=new Map;for(let n of e){if(!n?.id)continue;let e=vi(n);t.set(e,{...n,type:e})}return Array.from(t.values())}function xi(e){return e.label||e.id||e.type}function Si(e,t){return e===hi.type&&(!t||t===hi.id)}function Ci(e,t){return Si(e.type,e.id)?-1:Si(t.type,t.id)?1:xi(e.tag).localeCompare(xi(t.tag))||e.type.localeCompare(t.type)||e.id.localeCompare(t.id)}function wi(e,t){return Si(e.type)?-1:Si(t.type)?1:e.type.localeCompare(t.type)}function Ti(e,t){let n=_i(t);return n?bi(e.getResourceMeta(n,pi)?.[mi]):gi}function Ei(e,t){let n=_i(t);return n?bi(e?.iiif?.meta?.[n]?.[pi]?.[mi]):gi}function Di(e,t,n){let r=_i(t);if(!r)return gi;let i=bi(n);return e.setMetaValue([r,pi,mi],i),i}function Oi(e,t,n){return Di(e,t,[...Ti(e,t),n])}function ki(e,t,n){return Ti(e,t).find(e=>e.type===n)}function Ai(e,t,n,r){return Di(e,t,Ti(e,t).filter(e=>e.type!==n||(r?e.id!==r:!1)))}function ji(e,t){let n=new Map;for(let r of t){let t=_i(r);if(t)for(let i of Ti(e,r)){let e=i.type,r=yi(i),a=n.get(e);a||(a={key:e,type:i.type,rows:[],canvasIds:[],canvasCount:0,tagCount:0},n.set(e,a));let o=a.rows.find(e=>e.key===r);o||(o={key:r,type:i.type,id:i.id,tag:i,canvasIds:[],canvasCount:0},a.rows.push(o)),o.canvasIds.push(t),o.canvasCount=o.canvasIds.length,a.tagCount+=1}}for(let e of n.values())e.rows.sort(Ci),e.canvasIds=Array.from(new Set(e.rows.flatMap(e=>e.canvasIds))),e.canvasCount=e.canvasIds.length;return Array.from(n.values()).sort(wi)}function Mi(e,t,n,r){let i=ki(e,t,n);return r?i?.id===r:!!i}function Ni(e,t,n){return Mi(e,t,n.type,n.id)?Ai(e,t,n.type):Oi(e,t,n)}function Pi(e){return{getTags(t){return Ti(e,t)},setTags(t,n){return Di(e,t,n)},addTag(t,n){return Oi(e,t,n)},upsertTag(t,n){return Oi(e,t,n)},getTag(t,n){return ki(e,t,n)},removeTag(t,n,r){return Ai(e,t,n,r)},hasTag(t,n,r){return Mi(e,t,n,r)},toggleTag(t,n){return Ni(e,t,n)}}}function Fi(e){let t=_i(e);return(0,p.useVaultSelector)(e=>t?Ei(e,t):gi,[t])}function Ii(e){let t=(0,p.useVault)(),n=_i(e),r=(0,l.useMemo)(()=>Pi(t),[t]);return(0,l.useMemo)(()=>({setTags(e){return r.setTags(n,e)},addTag(e){return r.addTag(n,e)},getTag(e){return r.getTag(n,e)},removeTag(e,t){return r.removeTag(n,e,t)},toggleTag(e){return r.toggleTag(n,e)},hasTag(e,t){return r.hasTag(n,e,t)}}),[r,n])}function Li({icon:e,title:t,...n}){return e===`flag`?(0,u.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`1em`,height:`1em`,"aria-hidden":t?void 0:!0,...n,children:[t?(0,u.jsx)(`title`,{children:t}):null,(0,u.jsx)(`path`,{fill:`currentColor`,d:`M5 21a1 1 0 0 1-1-1V5.6c0-.42.26-.8.65-.94C6.7 3.9 8.65 4 10.5 4.7c1.55.58 3.05.7 4.5.36l3.75-.88A1 1 0 0 1 20 5.15v9.25c0 .46-.31.86-.75.97l-3.79.9c-1.85.43-3.76.28-5.66-.43-1.28-.48-2.55-.59-3.8-.33V20a1 1 0 0 1-1 1Z`})]}):null}function Ri({tag:e,showIcon:t=!0,className:n,style:r}){return(0,u.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-0.5 rounded px-1 py-0.5 font-medium shadow-sm ${n||``}`,style:{backgroundColor:e.backgroundColor||`#e5e7eb`,color:e.textColor||`#111827`,fontSize:9,lineHeight:`11px`,...r},children:[t&&e.icon?(0,u.jsx)(Li,{icon:e.icon,className:`h-2.5 w-2.5 flex-shrink-0`}):null,(0,u.jsx)(`span`,{className:`min-w-0 truncate`,children:xi(e)})]})}function zi({resource:e,tags:t,className:n}){return t?(0,u.jsx)(Vi,{tags:t,className:n}):(0,u.jsx)(Bi,{resource:e,className:n})}function Bi({resource:e,className:t}){return(0,u.jsx)(Vi,{tags:Fi(e),className:t})}function Vi({tags:e,className:t}){let n=e;return n.length?(0,u.jsx)(`div`,{className:`pointer-events-none absolute bottom-1 right-1 z-10 flex max-w-full flex-wrap justify-end gap-0.5 ${t||``}`,children:n.map(e=>(0,u.jsx)(Ri,{tag:e},e.type))}):null}const Hi=5e3,Ui=8e3,Wi=(0,l.createContext)(null);function Gi(e){return e===`error`?8e3:5e3}function Ki({children:e,maxVisibleToasts:t=3}){let n=(0,y.useToastState)({maxVisibleToasts:t}),r=(0,l.useMemo)(()=>{let e=(e,t)=>n.add(e,{...t,timeout:t?.timeout??Gi(e.variant)}),t=(t,n,r)=>e({...n,variant:t},r);return{add:e,info:(e,n)=>t(`info`,e,n),success:(e,n)=>t(`success`,e,n),warning:(e,n)=>t(`warning`,e,n),error:(e,n)=>t(`error`,e,n),close:n.close}},[n]);return(0,u.jsxs)(Wi.Provider,{value:r,children:[e,(0,u.jsx)(c.ToastRegion,{state:n})]})}function qi(){let e=(0,l.useContext)(Wi);if(!e)throw Error(`useToasts must be used within a ToastProvider`);return e}function Ji(e){return e.status!==`complete`&&e.status!==`error`||!e.completedAt?null:`${e.id}:${e.status}:${e.completedAt}`}function Yi(e,t,n){let r=t.label||e.label;return t.status===`complete`?{variant:`success`,title:`${r} complete`,description:t.resultsAvailable?`Results are ready.`:void 0,action:t.resultsAvailable&&n?{label:`Results`,onPress:n}:void 0}:t.status===`error`?{variant:`error`,title:`${r} failed`,description:t.error?.message||t.statusText||`Action failed`}:null}function Xi(e){return{id:e.id,type:e.type,label:e.type,scope:`root`}}function Zi(e){if(!(!e||!e.id||e.type!==`Canvas`))return{id:e.id,type:`Canvas`,label:`Current canvas`,scope:`canvas`}}function Qi(){let e=Jr(),t=Yr();return(0,l.useMemo)(()=>Zi([e,...t].find(e=>e?.resource?.source?.type===`Canvas`)?.resource?.source),[e,t])}function $i(){let e=B(),t=Qi(),n=(0,p.useVault)(),r=(0,l.useMemo)(()=>Pi(n),[n]),i=(0,l.useMemo)(()=>xe(n),[n]),a=Fn(),o=F(),s=ci(),c=li();return(0,l.useMemo)(()=>({rootResource:e,currentCanvas:t,vault:n,tags:r,canvasProgress:i,plugins:a,config:o,layoutState:s,layoutActions:c}),[e,t,n,r,i,a,o,s,c])}function ea(){let e=R(e=>e.definitions),t=R(e=>e.instances),n=$i(),r=(0,l.useMemo)(()=>Xi(n.rootResource),[n.rootResource]);return(0,l.useMemo)(()=>Re({definitions:e,instances:t,systemContext:n,targets:[r,...n.currentCanvas?[n.currentCanvas]:[]],onSupportsError:(e,t)=>{console.error(`Background action "${e.id}" failed support check`,t)}}),[e,t,r,n])}function ta(){let e=Nt(),t=R(e=>e.definitions),n=R(e=>e.instances),r=R(e=>e.plans),i=R(e=>e.controllers),a=R(e=>e.hasHydrated),o=$i(),s=(0,l.useRef)(new Set);return(0,l.useEffect)(()=>{if(!a)return;let c=new Map(t.map(e=>[e.id,e]));for(let[t,a]of Object.entries(n)){let n=c.get(a.actionId),l=`${t}:${a.runId}`;!n?.resumable||!ra(a)||!r[t]||i[t]||s.current.has(l)||(s.current.add(l),Tt({store:e,resume:!0,context:{...o,definition:n,target:a.target,instanceKey:t,instance:a}}))}},[i,t,a,n,r,e,o]),(0,u.jsx)(u.Fragment,{children:t.map(e=>e.render?(0,u.jsx)(l.Fragment,{children:e.render({...o,definition:e})},e.id):null)})}function na(){let e=R(e=>e.definitions),t=R(e=>e.instances),n=$i(),r=qi(),i=(0,l.useRef)(new Set),a=(0,l.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]);return(0,l.useEffect)(()=>{for(let e of Object.values(t)){let t=Ji(e);if(!t||i.current.has(t))continue;let o=a.get(e.actionId);if(!o)continue;let s={...n,definition:o,target:e.target,instanceKey:e.id,instance:e},c=Yi(o,e,e.resultsAvailable&&o.onResults?()=>{o.onResults?.(s)}:void 0);c&&(r.add(c),i.current.add(t))}},[a,t,n,r]),null}function ra(e){return e?.status===`preparing`||e?.status===`running`}function ia(e){return!e||e.status===`idle`?``:e.status===`error`?e.error?.message||e.statusText||`Error`:e.status===`complete`&&e.resultsAvailable?`Results ready`:e.status===`cancelled`?`Cancelled`:e.statusText||e.status}function aa(e){return e?new Date(e).toLocaleString():`Not recorded`}function oa(e){return e?new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):`--:--:--`}function sa(e){if(!e.startedAt)return`Not recorded`;let t=e.completedAt||Date.now(),n=Math.max(0,Math.round((t-e.startedAt)/1e3)),r=Math.floor(n/60),i=n%60;return r?`${r}m ${i}s`:`${i}s`}function ca(e){if(e===void 0)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function la({label:e,value:t}){return(0,u.jsxs)(`div`,{className:`min-w-0`,children:[(0,u.jsx)(`dt`,{className:`text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:e}),(0,u.jsx)(`dd`,{className:`mt-1 break-words text-sm text-zinc-800`,children:t})]})}const ua={debug:{label:`DBG`,className:`text-zinc-500`},verbose:{label:`VRB`,className:`text-zinc-500`},info:{label:`INF`,className:`text-sky-400`},log:{label:`LOG`,className:`text-zinc-300`},warn:{label:`WRN`,className:`text-amber-400`},warning:{label:`WRN`,className:`text-amber-400`},error:{label:`ERR`,className:`text-red-400`}};function da(e){return ua[e?.toLowerCase()]??{label:e?.toUpperCase().slice(0,3)??`LOG`,className:`text-zinc-300`}}const fa={error:`bg-red-100 text-red-700`,failed:`bg-red-100 text-red-700`,completed:`bg-green-100 text-green-700`,success:`bg-green-100 text-green-700`,started:`bg-sky-100 text-sky-700`,cancelled:`bg-zinc-100 text-zinc-600`,warning:`bg-amber-100 text-amber-700`,warn:`bg-amber-100 text-amber-700`};function pa(e){return fa[e?.toLowerCase()]??`bg-zinc-100 text-zinc-600`}function ma(e){return e?.toLowerCase()in fa}function ha({definition:e,instance:t,onClose:n}){let[r,i]=(0,l.useState)(`overview`),a=(0,l.useRef)(null),o=t.logs.length;(0,l.useEffect)(()=>{r===`logs`&&a.current?.scrollIntoView({behavior:`instant`})},[r]);let s={idle:`bg-zinc-100 text-zinc-600`,preparing:`bg-orange-100 text-orange-700`,running:`bg-orange-100 text-orange-700`,complete:`bg-green-100 text-green-700`,error:`bg-red-100 text-red-700`,cancelled:`bg-zinc-100 text-zinc-500`},d=t.events.filter(e=>ma(e.type)),f=[{id:`overview`,label:`Overview`},{id:`logs`,label:`Logs`,count:o}];return(0,u.jsxs)(c.Modal,{title:t.label||e.label,onClose:n,className:`max-w-3xl`,children:[(0,u.jsx)(`div`,{className:`sticky top-0 z-10 border-b border-zinc-200 bg-white px-2`,children:(0,u.jsx)(`div`,{className:`flex gap-0.5`,children:f.map(e=>(0,u.jsxs)(`button`,{type:`button`,onClick:()=>i(e.id),className:[`flex items-center gap-1.5 border-b-2 px-3 py-2.5 text-sm transition-colors -mb-px`,r===e.id?`border-me-primary-500 font-semibold text-me-primary-600`:`border-transparent text-zinc-500 hover:text-zinc-800`].join(` `),children:[e.label,e.count?(0,u.jsx)(`span`,{className:`rounded-full bg-zinc-100 px-1.5 py-0.5 text-[10px] font-medium text-zinc-500`,children:e.count}):null]},e.id))})}),r===`overview`&&(0,u.jsxs)(`div`,{className:`flex flex-col gap-5 p-5`,children:[(0,u.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,u.jsx)(`span`,{className:[`inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-semibold uppercase tracking-wide`,s[t.status]??`bg-zinc-100 text-zinc-600`].join(` `),children:t.status}),t.statusText?(0,u.jsx)(`span`,{className:`text-sm text-zinc-500`,children:t.statusText}):null]}),(0,u.jsxs)(`dl`,{className:`grid gap-x-6 gap-y-4 sm:grid-cols-2`,children:[(0,u.jsx)(la,{label:`Target`,value:`${t.target.label} (${t.target.type})`}),(0,u.jsx)(la,{label:`Run ID`,value:t.runId}),(0,u.jsx)(la,{label:`Started`,value:aa(t.startedAt)}),(0,u.jsx)(la,{label:`Finished`,value:aa(t.completedAt)}),(0,u.jsx)(la,{label:`Duration`,value:sa(t)}),t.progress?(0,u.jsx)(la,{label:`Progress`,value:`${Math.round(t.progress.percent)}%${t.progress.label?` — ${t.progress.label}`:``}`}):null]}),t.progress?(0,u.jsxs)(`div`,{children:[(0,u.jsx)(c.BackgroundActionMenuProgressBar,{percent:t.progress.percent,label:t.progress.label||`Background action progress`}),typeof t.progress.current==`number`&&typeof t.progress.total==`number`?(0,u.jsxs)(`div`,{className:`mt-1 text-xs text-zinc-500`,children:[t.progress.current,` of `,t.progress.total,` items`]}):null]}):null,t.error?(0,u.jsxs)(`div`,{className:`rounded-lg border border-red-200 bg-red-50`,children:[(0,u.jsx)(`div`,{className:`border-b border-red-200 px-4 py-2.5`,children:(0,u.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-widest text-red-600`,children:`Error`})}),(0,u.jsxs)(`div`,{className:`p-4`,children:[(0,u.jsx)(`div`,{className:`text-sm font-medium text-red-800`,children:t.error.message}),t.error.stack?(0,u.jsx)(`pre`,{className:`mt-3 max-h-40 overflow-auto rounded bg-red-100 p-3 text-xs text-red-700 leading-relaxed whitespace-pre-wrap`,children:t.error.stack}):null]})]}):null,d.length>0?(0,u.jsxs)(`div`,{children:[(0,u.jsx)(`h3`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:`Key events`}),(0,u.jsx)(`div`,{className:`divide-y divide-zinc-100 rounded-lg border border-zinc-200`,children:d.map(e=>(0,u.jsxs)(`div`,{className:`flex items-baseline gap-3 px-3 py-2`,children:[(0,u.jsx)(`span`,{className:[`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,pa(e.type)].join(` `),children:e.type}),(0,u.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm text-zinc-700`,children:e.message||e.type}),(0,u.jsx)(`time`,{className:`shrink-0 text-xs text-zinc-400`,children:oa(e.createdAt)})]},e.id))})]}):null]}),r===`logs`&&(0,u.jsx)(`div`,{className:`p-5`,children:o===0?(0,u.jsx)(`div`,{className:`rounded-lg border border-zinc-200 p-6 text-center text-sm text-zinc-400`,children:`No logs recorded.`}):(0,u.jsxs)(`div`,{className:`overflow-hidden rounded-lg bg-zinc-950 shadow-inner`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-white/10 px-3 py-2`,children:[(0,u.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,u.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,u.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,u.jsxs)(`span`,{className:`ml-2 text-[10px] text-zinc-500 font-mono`,children:[o,` `,o===1?`entry`:`entries`]})]}),(0,u.jsxs)(`div`,{className:`max-h-[50vh] overflow-y-auto p-1 font-mono text-xs`,children:[t.logs.map(e=>{let t=da(e.level);return(0,u.jsxs)(`div`,{className:`group flex gap-0 hover:bg-white/5 rounded px-2 py-1 leading-relaxed`,children:[(0,u.jsx)(`time`,{className:`w-20 shrink-0 text-zinc-600 select-none pr-2`,children:oa(e.createdAt)}),(0,u.jsx)(`span`,{className:[`w-10 shrink-0 select-none font-bold pr-2`,t.className].join(` `),children:t.label}),(0,u.jsxs)(`span`,{className:`min-w-0 flex-1 text-zinc-200 break-words`,children:[e.message,e.data===void 0?null:(0,u.jsx)(`span`,{className:`block mt-0.5 text-zinc-500 whitespace-pre-wrap`,children:ca(e.data)})]})]},e.id)}),(0,u.jsx)(`div`,{ref:a})]})]})})]})}function ga(){let e=Nt(),t=ea(),[n,r]=(0,l.useState)(null),i=t.reduce((e,t)=>e+t.actions.length,0),a=t.reduce((e,t)=>e+t.actions.filter(e=>ra(e.instance)).length,0),o=t.reduce((e,t)=>e+t.actions.filter(e=>e.instance?.status===`error`).length,0),{isOpen:s,buttonProps:d,itemProps:f,setIsOpen:p}=(0,g.default)(i);if(!i)return null;let m=n?t.flatMap(e=>e.actions).find(e=>e.instanceKey===n):void 0,h=0;return(0,u.jsxs)(c.BackgroundActionMenuRoot,{children:[(0,u.jsx)(c.BackgroundActionMenuButton,{active:s,runningCount:a,errorCount:o,"aria-label":`Actions menu`,...d}),(0,u.jsx)(c.BackgroundActionMenuPanel,{open:s,role:`menu`,children:(0,u.jsx)(`div`,{className:`py-1.5`,children:t.map((t,n)=>(0,u.jsxs)(l.Fragment,{children:[n?(0,u.jsx)(c.BackgroundActionMenuDivider,{}):null,(0,u.jsx)(c.BackgroundActionMenuSection,{children:t.label}),t.actions.map(t=>{let{onKeyDown:n,...i}=f[h++]||{},a=ia(t.instance),o=ra(t.instance),s=()=>{o||(Tt({store:e,context:t.context}),p(!0))},l=()=>{o&&(e.getState().cancelAction(t.instanceKey),p(!0))};return(0,u.jsxs)(c.BackgroundActionMenuItem,{status:t.instance?.status||`idle`,children:[(0,u.jsx)(c.BackgroundActionMenuTrigger,{running:o,...i,"aria-label":o?`Cancel ${t.definition.label}`:`Run ${t.definition.label}`,onMouseDown:e=>{e.preventDefault()},onClick:e=>{e.stopPropagation(),o?l():s()},onKeyDown:e=>{e.key===`Enter`||e.key===` `?(e.preventDefault(),e.stopPropagation(),o?l():s()):n?.(e)},children:(0,u.jsxs)(c.BackgroundActionMenuText,{children:[(0,u.jsx)(c.BackgroundActionMenuLabel,{running:o,children:t.instance?.label||t.definition.label}),a?(0,u.jsx)(c.BackgroundActionMenuMeta,{variant:t.instance?.status===`error`?`error`:`default`,children:a}):null,t.definition.summary&&!a?(0,u.jsx)(c.BackgroundActionMenuMeta,{children:t.definition.summary}):null,o&&t.instance?.progress?(0,u.jsx)(c.BackgroundActionMenuProgressBar,{percent:t.instance.progress.percent,label:t.instance.progress.label||a||t.definition.label}):null]})}),t.instance?.resultsAvailable&&t.definition.onResults?(0,u.jsx)(c.BackgroundActionMenuInlineAction,{onClick:e=>{e.stopPropagation(),t.definition.onResults?.(t.context)},children:`Results`}):null,t.instance?(0,u.jsx)(c.BackgroundActionMenuInfoButton,{"aria-label":`View ${t.definition.label} details`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r(t.instanceKey),p(!0)}}):null]},t.instanceKey)})]},t.id))})}),m?.instance?(0,u.jsx)(ha,{definition:m.definition,instance:m.instance,onClose:()=>r(null)}):null]})}const _a=(0,l.memo)(function(e){let[t]=(0,c.useLocalStorage)(`menu-hidden`);return(0,u.jsx)($n,{children:(0,u.jsxs)(Qn,{children:[(0,u.jsx)(nr,{onClick:e.onClickLogo,children:(0,u.jsx)(c.ManifestEditorLogo,{})}),(0,u.jsx)(Vr,{}),(0,u.jsx)(ga,{})]})})}),va=(0,l.createContext)(null);function ya(){return(0,l.useContext)(va)||null}function ba(e,t){let n=ya();return n?n[e][t]:null}function xa({children:e,menu:t}){return(0,u.jsx)(va.Provider,{value:t,children:e})}function Sa(){return(0,l.useContext)(p.AtlasStoreReactContext)}function Ca(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(e=>e[0])),n=Math.min(...e.points.map(e=>e[1])),r=Math.max(0,...e.points.map(e=>e[0])),i=Math.max(0,...e.points.map(e=>e[1]));return{x:t,y:n,width:r-t,height:i-n}}return null}const wa=async e=>new Promise((t,n)=>{let r=document.createElement(`img`);r.onload=()=>t(r),r.onerror=()=>n(),r.src=e,r.complete&&t(r)}),Ta=async e=>new Promise((t,n)=>{let r=document.createElement(`video`);r.onloadedmetadata=()=>t(r),r.onerror=()=>n(),r.preload=`metadata`,r.src=e});async function Ea(){}async function Da(e,...t){if(!e)return;if(e.endsWith(`.mp3`)||e.endsWith(`.mp4`)||e.endsWith(`.m4a`)||e.endsWith(`.m4v`))try{let t=await Ta(e);if(t){let n=t.videoWidth===0;return{id:e,type:t.videoWidth===0?`Sound`:`Video`,width:t.videoWidth||void 0,height:t.videoHeight||void 0,duration:t.duration,format:n?`audio/mp4`:`video/mp4`}}}catch{}let n=null;try{n=await fetch(e)}catch{return Aa(e)}if(!n.ok&&(n=await fetch(e+`/info.json`),!n.ok))return Aa(e);let r=n.headers.get(`Content-Type`);if(r?.includes(`image/`))return Aa(e,r);let i=null;try{i=await n.json()}catch{return null}return await ka(i,e)}function Oa(e){return e.protocol&&e.protocol===`http://iiif.io/api/image`?(e.type||(e.type=`ImageService`),e):null}async function ka(e,t){let n=Oa(e);if(n)return n;if(!(e.id||e[`@id`]))return null;let r=await new x.Vault().load(t,e);if(r&&(r&&r?.type===`Manifest`||r?.type===`Collection`))return{id:t,type:r.type,label:(0,b.getValue)(r.label)}}async function Aa(e,t){let n=e.split(`/`);if(n.length>=8){let e=n.slice(-4);if(e[3].split(`.`).length===2&&(e[2][0]===`!`||e[2]===e[2])){let e=await ja(n.slice(0,n.length-4).join(`/`)+`/info.json`);if(e&&e?.type&&e?.type?.startsWith(`ImageService`))return e}}try{let n=await wa(e);return{id:e,type:`Image`,width:n.width,height:n.height,format:await Ma(e,t)}}catch{}return null}async function ja(e){try{let t=await fetch(e);return t.ok?await ka(await t.json(),e):null}catch(e){return console.log(e),null}}async function Ma(e,t){if(t)return t;try{let t=(await fetch(e,{method:`HEAD`,mode:`no-cors`})).headers.get(`Content-type`);if(t)return t}catch{}let n=e.toLowerCase();return n.endsWith(`jpg`)||n.endsWith(`jpeg`)?`image/jpeg`:n.endsWith(`png`)?`image/png`:`image/jpeg`}async function Na(e){try{let t=await wa(e);if(t)return{width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}}catch{return null}return null}const Pa=(0,d.create)(e=>({regions:{},resources:[],setRegion:(t,n)=>{e(e=>({...e.regions,regions:{[t]:n||null}}))},setHighlight:t=>{e({resources:Array.isArray(t)?t:[t]})},highlight:t=>{e(e=>e.resources.indexOf(t)===-1?{resources:[...e.resources,t]}:e)},clearHighlight:t=>{e(e=>({resources:e.resources.filter(e=>e!==t)}))}}));function Fa(e){let t=(0,l.useMemo)(()=>Bt(),[]),n=Pa(e=>e.regions[t]),r=Pa(e=>e.setRegion);(0,l.useEffect)(()=>{n&&e?n!==e&&(n.x!==e.x||n.y!==e.y||n.width!==e.width||n.height!==e.height)&&r(t,e||null):r(t,e||null)},[n]),(0,l.useEffect)(()=>()=>r(t,null),[])}function Ia(e){let t=Pa(e=>e.highlight),n=Pa(e=>e.clearHighlight);return(0,l.useEffect)(()=>()=>{e&&n(e)},[n,e]),(0,l.useMemo)(()=>({onMouseEnter(){e&&t(e)},onMouseLeave(){e&&n(e)}}),[e,t,n])}const La=e=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`0 0 24 24`,...e,children:[(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z`,fill:`currentColor`})]}),Ra=({style:e})=>(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`1rem`,fill:`#000000`,style:e,children:[(0,u.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,u.jsx)(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`})]});function za(e){let t=e.error.toString(),[n,r]=(0,l.useState)(!1);return(0,u.jsxs)(c.PaddedSidebarContainer,{children:[(0,u.jsx)(c.ErrorMessage,{className:`mb-2`,children:t}),(0,u.jsx)(kr,{onClick:e.resetErrorBoundary,children:`Try again`})]})}function Ba(e){return e&&e.pinnable}function Va({initial:e,fallback:t,options:n={}}){return Math.max(n.minWidth||0,Math.min(n.maxWidth||1/0,e||t))}function Ha(e){return typeof e==`string`?(0,l.createElement)(`div`,{dangerouslySetInnerHTML:{__html:e}}):e}const Ua=h.default.div`
|
|
242
|
+
`;function Ir(e,t){return e>0||!!t?.mainAction||!!t?.actions?.length}function Lr({downloadEnabled:e,fileName:t,preview:n}){let{active:r,configs:i,actions:a,selected:o}=Cr(),s=(0,m.useVault)(),c=z(),u=W(),f=i.filter(e=>e.type===`external-manifest-preview`),p=n?.actions||[],{isOpen:h,buttonProps:g,itemProps:_}=ir(f.length+p.length);return Ir(f.length,n)?(0,d.jsxs)(d.Fragment,{children:[e?(0,d.jsx)(`div`,{className:`mr-4`,children:(0,d.jsx)(l.DownloadButton,{fileName:t||`manifest.json`,label:`Download manifest`,getData:()=>c.export&&c.export.version===2?JSON.stringify(s.toPresentation2(u),null,2):JSON.stringify(s.toPresentation3(u),null,2)})}):null,(0,d.jsxs)(Er,{children:[(0,d.jsx)(Dr,{"data-preview-action":n?.mainAction?.id,disabled:n?.mainAction?.disabled||!n?.mainAction&&f.length===0,onClick:()=>{if(n?.mainAction){n.mainAction.onClick();return}if(f.length){if(!o){let e=c.defaultPreview;if(e){let t=i.find(t=>t.id===e);if(t){a.selectPreview(t.id);return}}a.selectPreview(i[0].id)}a.updatePreviews()}},children:n?.mainAction?.label||`Preview`}),f.length+p.length>0?(0,d.jsx)(Or,{$open:h,...g,"aria-label":`Choose preview`,children:(0,d.jsx)(nr,{"aria-hidden":!0})}):null,(0,d.jsxs)(kr,{$open:h,role:`menu`,children:[f.map((e,t)=>{let n=r.indexOf(e.id)===-1;return(0,d.jsxs)(Ar,{..._[t],children:[(0,d.jsx)(Mr,{$status:n?`available`:e.id===o?`active`:`configured`}),(0,d.jsx)(Nr,{onClick:()=>{a.selectPreview(e.id)},children:e.label}),n?null:(0,d.jsx)(Pr,{onClick:()=>a.deletePreview(e.id),children:(0,d.jsx)(tr,{})})]},e.id)}),p.map((e,t)=>(0,d.jsxs)(Ar,{..._[f.length+t],"aria-disabled":e.disabled||void 0,onClick:()=>{e.disabled||e.onClick()},children:[(0,d.jsx)(Mr,{$status:e.status||`available`}),(0,d.jsx)(Nr,{children:e.label})]},e.id))]})]})]}):(0,d.jsx)(Fr,{children:`Preview not available`})}const Rr=(0,u.createContext)({resource:null});function zr(){return(0,u.useContext)(Rr)}function Br(){let e=(0,m.useVault)(),{resource:t}=zr();N(t,`Nothing selected`);let{id:n,type:r}=t;return(0,m.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function Vr(){let{resource:e}=zr();return e}function Hr({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,d.jsx)(Rr.Provider,{value:(0,u.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}function Ur(e,t){switch(t.type){case`setStack`:return{...e,stack:t.payload.resources,current:t.payload.resources[0]||null};case`edit`:{let n=t.payload.reset;return(t.payload.resource?.resource.source?.type===`Manifest`||t.payload.resource?.resource.source?.type===`Canvas`)&&(n=!0),e.current?.resource.source.id===t.payload.resource?.resource.source.id?{...e,current:t.payload.resource}:{...e,current:t.payload.resource,stack:n?[]:e.current?[e.current,...e.stack]:e.stack}}case`syncRemoval`:{let n=(0,h.toRef)(t.payload.resource.resource);if(!n||!e.stack.find(e=>(0,h.toRef)(e.resource)?.id===n.id))return e;let r=e.current?.resource.id===n.id?null:e.current,i=Wr(e.stack.filter(e=>(0,h.toRef)(e.resource)?.id!==n.id),r);return{...e,stack:i,current:r}}case`updateCurrent`:return{...e,current:t.payload.resource};case`back`:{let t=e.stack[0];return{...e,stack:e.stack.slice(1),current:t||null}}case`close`:return{...e,stack:[],current:null};case`create`:return t.payload.resource===null?{...e,create:null}:{...e,create:t.payload}}return e}function Wr(e,t){let n=[],r=null;for(let t of e)r?.resource.id!==t.resource.id&&(n.push(t),r=t);return r&&r.resource.id===t?.resource.id?n.slice(0,n.length-1):n}const Gr={stack:[],current:null,create:null},Kr=(0,u.createContext)(Gr),qr=(0,u.createContext)({edit(){},close(){},back(){},setStack(){},updateCurrent(){},create(){return()=>{}}});function Jr(){return(0,u.useContext)(qr)}function Yr(){return(0,u.useContext)(Kr).current}function Xr(){return(0,u.useContext)(Kr).stack}function Zr(){return(0,u.useContext)(Kr).create}function Qr(){let{manifest:e}=(0,m.useResourceContext)(),t=(0,m.useVault)(),[n,r]=(0,u.useReducer)(e=>e+1,0);N(e,`Manifest not found`);let i=(0,u.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Manifest`},vault:t}),[e,t]);return(0,u.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function $r(){let{collection:e}=(0,m.useResourceContext)(),t=(0,m.useVault)(),[n,r]=(0,u.useReducer)(e=>e+1,0);N(e,`Collection not found`);let i=(0,u.useMemo)(()=>new v.EditorInstance({reference:{id:e,type:`Collection`},vault:t}),[e,t]);return(0,u.useEffect)(()=>i.observe.start(r),[i]),i.observe.key=`${n}`,i.observe.reset(),i}function ei(e,t={}){let n=(0,m.useVault)(),[r,i]=(0,u.useReducer)(e=>e+1,0);!t.allowNull&&N(e,`Resource not found`);let a=(0,u.useMemo)(()=>t.allowNull&&!e?null:new v.EditorInstance({reference:(0,h.toRef)(e),vault:n,context:{resource:e,parent:t.parent,index:t.index,parentProperty:t.parentProperty}}),[e,n]);return(0,u.useEffect)(()=>a?.observe.start(i),[a]),a&&(a.observe.key=`${r}`,a.observe.reset()),a}function ti(){let{annotationPage:e}=(0,m.useResourceContext)();return N(e,`Annotation page not found`),ei({id:e,type:`AnnotationPage`})}function ni(){let e=Yr(),{resource:t}=zr(),n=(0,m.useVault)(),[r,i]=(0,u.useReducer)(e=>e+1,0);N(e,`No resource selected`);let a=(0,u.useMemo)(()=>new v.EditorInstance({reference:t||e.resource.source||e.resource,vault:n}),[t,e,n]);return(0,u.useEffect)(()=>a.observe.start(i),[a]),a.observe.key=`${r}`,a.observe.reset(),a}function ri(e){let t=(0,m.useVault)(),[n,r]=(0,u.useReducer)(Ur,e),i=(0,u.useCallback)(e=>{r(e)},[]);(0,u.useEffect)(()=>t.on(`@iiif/REMOVE_REFERENCE`,e=>{let t=e.action,n={id:t.payload.id,type:t.payload.type},i=t.payload.reference;r({type:`syncRemoval`,payload:{resource:{parent:n,resource:i}}})}),[t]);let a=(0,u.useCallback)((e,t=!1)=>i({type:`edit`,payload:{resource:e,reset:t}}),[]),o=(0,u.useCallback)(e=>i({type:`setStack`,payload:{resources:e}}),[]),s=(0,u.useCallback)(e=>i({type:`updateCurrent`,payload:{resource:e}}),[]),c=(0,u.useCallback)(()=>i({type:`close`}),[]),l=(0,u.useCallback)(()=>i({type:`back`}),[]),d=(0,u.useCallback)((e,t)=>(i({type:`create`,payload:{resource:e,options:t}}),()=>{i({type:`create`,payload:{resource:null}})}),[]);return[n,(0,u.useMemo)(()=>({edit:a,updateCurrent:s,close:c,back:l,create:d,setStack:o}),[])]}function ii(e){let{instanceId:t}=Hn(),[n,r]=ri(e.initialState||Gr);return(0,d.jsx)(qr.Provider,{value:r,children:(0,d.jsx)(Kr.Provider,{value:n,children:e.children})},t)}function ai({resource:e,children:t}){let{instanceId:n}=Hn(),[r,i]=ri((0,u.useMemo)(()=>({create:null,stack:[],current:{resource:{type:`SpecificResource`,source:{id:e.id,type:e.type}}}}),[]));return(0,d.jsx)(qr.Provider,{value:i,children:(0,d.jsx)(Kr.Provider,{value:r,children:t})},n)}const oi=(0,u.createContext)(null),si=(0,u.createContext)(null),ci=(0,u.createContext)(`default`);function li(){return(0,u.useContext)(si)}function ui(){return(0,u.useContext)(oi)}function di(){return(0,u.useContext)(ci)}function fi(){return U().layout}function pi(){let e=U(),t=e.layout,n=(0,u.useContext)(oi),r=(0,u.useContext)(si);return(0,u.useMemo)(()=>({actions:n,state:r,...t}),[e,r])}const mi=`@manifest-editor/tags`,hi=`tags`,gi={type:`flag`,id:`flag`,label:`Flag`,backgroundColor:`#b91c1c`,textColor:`#ffffff`,icon:`flag`},_i=[];function vi(e){return typeof e==`string`?e:e?.id||null}function yi(e){return e.type||e.id}function bi(e){return`${e.type}:${e.id}`}function xi(e){if(!Array.isArray(e))return _i;let t=new Map;for(let n of e){if(!n?.id)continue;let e=yi(n);t.set(e,{...n,type:e})}return Array.from(t.values())}function Si(e){return e.label||e.id||e.type}function Ci(e,t){return e===gi.type&&(!t||t===gi.id)}function wi(e,t){return Ci(e.type,e.id)?-1:Ci(t.type,t.id)?1:Si(e.tag).localeCompare(Si(t.tag))||e.type.localeCompare(t.type)||e.id.localeCompare(t.id)}function Ti(e,t){return Ci(e.type)?-1:Ci(t.type)?1:e.type.localeCompare(t.type)}function Ei(e,t){let n=vi(t);return n?xi(e.getResourceMeta(n,mi)?.[hi]):_i}function Di(e,t){let n=vi(t);return n?xi(e?.iiif?.meta?.[n]?.[mi]?.[hi]):_i}function Oi(e,t,n){let r=vi(t);if(!r)return _i;let i=xi(n);return e.setMetaValue([r,mi,hi],i),i}function ki(e,t,n){return Oi(e,t,[...Ei(e,t),n])}function Ai(e,t,n){return Ei(e,t).find(e=>e.type===n)}function ji(e,t,n,r){return Oi(e,t,Ei(e,t).filter(e=>e.type!==n||(r?e.id!==r:!1)))}function Mi(e,t){let n=new Map;for(let r of t){let t=vi(r);if(t)for(let i of Ei(e,r)){let e=i.type,r=bi(i),a=n.get(e);a||(a={key:e,type:i.type,rows:[],canvasIds:[],canvasCount:0,tagCount:0},n.set(e,a));let o=a.rows.find(e=>e.key===r);o||(o={key:r,type:i.type,id:i.id,tag:i,canvasIds:[],canvasCount:0},a.rows.push(o)),o.canvasIds.push(t),o.canvasCount=o.canvasIds.length,a.tagCount+=1}}for(let e of n.values())e.rows.sort(wi),e.canvasIds=Array.from(new Set(e.rows.flatMap(e=>e.canvasIds))),e.canvasCount=e.canvasIds.length;return Array.from(n.values()).sort(Ti)}function Ni(e,t,n,r){let i=Ai(e,t,n);return r?i?.id===r:!!i}function Pi(e,t,n){return Ni(e,t,n.type,n.id)?ji(e,t,n.type):ki(e,t,n)}function Fi(e){return{getTags(t){return Ei(e,t)},setTags(t,n){return Oi(e,t,n)},addTag(t,n){return ki(e,t,n)},upsertTag(t,n){return ki(e,t,n)},getTag(t,n){return Ai(e,t,n)},removeTag(t,n,r){return ji(e,t,n,r)},hasTag(t,n,r){return Ni(e,t,n,r)},toggleTag(t,n){return Pi(e,t,n)}}}function Ii(e){let t=vi(e);return(0,m.useVaultSelector)(e=>t?Di(e,t):_i,[t])}function Li(e){let t=(0,m.useVault)(),n=vi(e),r=(0,u.useMemo)(()=>Fi(t),[t]);return(0,u.useMemo)(()=>({setTags(e){return r.setTags(n,e)},addTag(e){return r.addTag(n,e)},getTag(e){return r.getTag(n,e)},removeTag(e,t){return r.removeTag(n,e,t)},toggleTag(e){return r.toggleTag(n,e)},hasTag(e,t){return r.hasTag(n,e,t)}}),[r,n])}function Ri({icon:e,title:t,...n}){return e===`flag`?(0,d.jsxs)(`svg`,{viewBox:`0 0 24 24`,width:`1em`,height:`1em`,"aria-hidden":!t||void 0,...n,children:[t?(0,d.jsx)(`title`,{children:t}):null,(0,d.jsx)(`path`,{fill:`currentColor`,d:`M5 21a1 1 0 0 1-1-1V5.6c0-.42.26-.8.65-.94C6.7 3.9 8.65 4 10.5 4.7c1.55.58 3.05.7 4.5.36l3.75-.88A1 1 0 0 1 20 5.15v9.25c0 .46-.31.86-.75.97l-3.79.9c-1.85.43-3.76.28-5.66-.43-1.28-.48-2.55-.59-3.8-.33V20a1 1 0 0 1-1 1Z`})]}):null}function zi({tag:e,showIcon:t=!0,className:n,style:r}){return(0,d.jsxs)(`span`,{className:`inline-flex max-w-full items-center gap-0.5 rounded px-1 py-0.5 font-medium shadow-sm ${n||``}`,style:{backgroundColor:e.backgroundColor||`#e5e7eb`,color:e.textColor||`#111827`,fontSize:9,lineHeight:`11px`,...r},children:[t&&e.icon?(0,d.jsx)(Ri,{icon:e.icon,className:`h-2.5 w-2.5 flex-shrink-0`}):null,(0,d.jsx)(`span`,{className:`min-w-0 truncate`,children:Si(e)})]})}function Bi({resource:e,tags:t,className:n}){return t?(0,d.jsx)(Hi,{tags:t,className:n}):(0,d.jsx)(Vi,{resource:e,className:n})}function Vi({resource:e,className:t}){let n=Ii(e);return(0,d.jsx)(Hi,{tags:n,className:t})}function Hi({tags:e,className:t}){let n=e;return n.length?(0,d.jsx)(`div`,{className:`pointer-events-none absolute bottom-1 right-1 z-10 flex max-w-full flex-wrap justify-end gap-0.5 ${t||``}`,children:n.map(e=>(0,d.jsx)(zi,{tag:e},e.type))}):null}const Ui=(0,u.createContext)(null);function Wi(e){return e===`error`?8e3:5e3}function Gi({children:e,maxVisibleToasts:t=3}){let n=(0,y.useToastState)({maxVisibleToasts:t}),r=(0,u.useMemo)(()=>{let e=(e,t)=>n.add(e,{...t,timeout:t?.timeout??Wi(e.variant)}),t=(t,n,r)=>e({...n,variant:t},r);return{add:e,info:(e,n)=>t(`info`,e,n),success:(e,n)=>t(`success`,e,n),warning:(e,n)=>t(`warning`,e,n),error:(e,n)=>t(`error`,e,n),close:n.close}},[n]);return(0,d.jsxs)(Ui.Provider,{value:r,children:[e,(0,d.jsx)(l.ToastRegion,{state:n})]})}function Ki(){let e=(0,u.useContext)(Ui);if(!e)throw Error(`useToasts must be used within a ToastProvider`);return e}function qi(e){return e.status!==`complete`&&e.status!==`error`||!e.completedAt?null:`${e.id}:${e.status}:${e.completedAt}`}function Ji(e,t,n){let r=t.label||e.label;return t.status===`complete`?{variant:`success`,title:`${r} complete`,description:t.resultsAvailable?`Results are ready.`:void 0,action:t.resultsAvailable&&n?{label:`Results`,onPress:n}:void 0}:t.status===`error`?{variant:`error`,title:`${r} failed`,description:t.error?.message||t.statusText||`Action failed`}:null}function Yi(e){return{id:e.id,type:e.type,label:e.type,scope:`root`}}function Xi(e){if(!(!e||!e.id||e.type!==`Canvas`))return{id:e.id,type:`Canvas`,label:`Current canvas`,scope:`canvas`}}function Zi(){let e=Yr(),t=Xr();return(0,u.useMemo)(()=>Xi([e,...t].find(e=>e?.resource?.source?.type===`Canvas`)?.resource?.source),[e,t])}function Qi(){let e=W(),t=Zi(),n=(0,m.useVault)(),r=(0,u.useMemo)(()=>Fi(n),[n]),i=(0,u.useMemo)(()=>ve(n),[n]),a=Nn(),o=z(),s=li(),c=ui();return(0,u.useMemo)(()=>({rootResource:e,currentCanvas:t,vault:n,tags:r,canvasProgress:i,plugins:a,config:o,layoutState:s,layoutActions:c}),[e,t,n,r,i,a,o,s,c])}function $i(){let e=H(e=>e.definitions),t=H(e=>e.instances),n=Qi(),r=(0,u.useMemo)(()=>Yi(n.rootResource),[n.rootResource]);return(0,u.useMemo)(()=>{let i=[r,...n.currentCanvas?[n.currentCanvas]:[]];return Fe({definitions:e,instances:t,systemContext:n,targets:i,onSupportsError:(e,t)=>{console.error(`Background action "${e.id}" failed support check`,t)}})},[e,t,r,n])}function ea(){let e=At(),t=H(e=>e.definitions),n=H(e=>e.instances),r=H(e=>e.plans),i=H(e=>e.controllers),a=H(e=>e.hasHydrated),o=Qi(),s=(0,u.useRef)(new Set);return(0,u.useEffect)(()=>{if(!a)return;let c=new Map(t.map(e=>[e.id,e]));for(let[t,a]of Object.entries(n)){let n=c.get(a.actionId),l=`${t}:${a.runId}`;!n?.resumable||!na(a)||!r[t]||i[t]||s.current.has(l)||(s.current.add(l),St({store:e,resume:!0,context:{...o,definition:n,target:a.target,instanceKey:t,instance:a}}))}},[i,t,a,n,r,e,o]),(0,d.jsx)(d.Fragment,{children:t.map(e=>e.render?(0,d.jsx)(u.Fragment,{children:e.render({...o,definition:e})},e.id):null)})}function ta(){let e=H(e=>e.definitions),t=H(e=>e.instances),n=Qi(),r=Ki(),i=(0,u.useRef)(new Set),a=(0,u.useMemo)(()=>new Map(e.map(e=>[e.id,e])),[e]);return(0,u.useEffect)(()=>{for(let e of Object.values(t)){let t=qi(e);if(!t||i.current.has(t))continue;let o=a.get(e.actionId);if(!o)continue;let s={...n,definition:o,target:e.target,instanceKey:e.id,instance:e},c=Ji(o,e,e.resultsAvailable&&o.onResults?()=>{o.onResults?.(s)}:void 0);c&&(r.add(c),i.current.add(t))}},[a,t,n,r]),null}function na(e){return e?.status===`preparing`||e?.status===`running`}function ra(e){return!e||e.status===`idle`?``:e.status===`error`?e.error?.message||e.statusText||`Error`:e.status===`complete`&&e.resultsAvailable?`Results ready`:e.status===`cancelled`?`Cancelled`:e.statusText||e.status}function ia(e){return e?new Date(e).toLocaleString():`Not recorded`}function aa(e){return e?new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`}):`--:--:--`}function oa(e){if(!e.startedAt)return`Not recorded`;let t=e.completedAt||Date.now(),n=Math.max(0,Math.round((t-e.startedAt)/1e3)),r=Math.floor(n/60),i=n%60;return r?`${r}m ${i}s`:`${i}s`}function sa(e){if(e===void 0)return``;if(typeof e==`string`)return e;try{return JSON.stringify(e,null,2)}catch{return String(e)}}function ca({label:e,value:t}){return(0,d.jsxs)(`div`,{className:`min-w-0`,children:[(0,d.jsx)(`dt`,{className:`text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:e}),(0,d.jsx)(`dd`,{className:`mt-1 break-words text-sm text-zinc-800`,children:t})]})}const la={debug:{label:`DBG`,className:`text-zinc-500`},verbose:{label:`VRB`,className:`text-zinc-500`},info:{label:`INF`,className:`text-sky-400`},log:{label:`LOG`,className:`text-zinc-300`},warn:{label:`WRN`,className:`text-amber-400`},warning:{label:`WRN`,className:`text-amber-400`},error:{label:`ERR`,className:`text-red-400`}};function ua(e){return la[e?.toLowerCase()]??{label:e?.toUpperCase().slice(0,3)??`LOG`,className:`text-zinc-300`}}const da={error:`bg-red-100 text-red-700`,failed:`bg-red-100 text-red-700`,completed:`bg-green-100 text-green-700`,success:`bg-green-100 text-green-700`,started:`bg-sky-100 text-sky-700`,cancelled:`bg-zinc-100 text-zinc-600`,warning:`bg-amber-100 text-amber-700`,warn:`bg-amber-100 text-amber-700`};function fa(e){return da[e?.toLowerCase()]??`bg-zinc-100 text-zinc-600`}function pa(e){return e?.toLowerCase()in da}function ma({definition:e,instance:t,onClose:n}){let[r,i]=(0,u.useState)(`overview`),a=(0,u.useRef)(null),o=t.logs.length;(0,u.useEffect)(()=>{r===`logs`&&a.current?.scrollIntoView({behavior:`instant`})},[r]);let s={idle:`bg-zinc-100 text-zinc-600`,preparing:`bg-orange-100 text-orange-700`,running:`bg-orange-100 text-orange-700`,complete:`bg-green-100 text-green-700`,error:`bg-red-100 text-red-700`,cancelled:`bg-zinc-100 text-zinc-500`},c=t.events.filter(e=>pa(e.type)),f=[{id:`overview`,label:`Overview`},{id:`logs`,label:`Logs`,count:o}];return(0,d.jsxs)(l.Modal,{title:t.label||e.label,onClose:n,className:`max-w-3xl`,children:[(0,d.jsx)(`div`,{className:`sticky top-0 z-10 border-b border-zinc-200 bg-white px-2`,children:(0,d.jsx)(`div`,{className:`flex gap-0.5`,children:f.map(e=>(0,d.jsxs)(`button`,{type:`button`,onClick:()=>i(e.id),className:[`flex items-center gap-1.5 border-b-2 px-3 py-2.5 text-sm transition-colors -mb-px`,r===e.id?`border-me-primary-500 font-semibold text-me-primary-600`:`border-transparent text-zinc-500 hover:text-zinc-800`].join(` `),children:[e.label,e.count?(0,d.jsx)(`span`,{className:`rounded-full bg-zinc-100 px-1.5 py-0.5 text-[10px] font-medium text-zinc-500`,children:e.count}):null]},e.id))})}),r===`overview`&&(0,d.jsxs)(`div`,{className:`flex flex-col gap-5 p-5`,children:[(0,d.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,d.jsx)(`span`,{className:[`inline-flex items-center gap-1.5 rounded-full px-3 py-1 text-xs font-semibold uppercase tracking-wide`,s[t.status]??`bg-zinc-100 text-zinc-600`].join(` `),children:t.status}),t.statusText?(0,d.jsx)(`span`,{className:`text-sm text-zinc-500`,children:t.statusText}):null]}),(0,d.jsxs)(`dl`,{className:`grid gap-x-6 gap-y-4 sm:grid-cols-2`,children:[(0,d.jsx)(ca,{label:`Target`,value:`${t.target.label} (${t.target.type})`}),(0,d.jsx)(ca,{label:`Run ID`,value:t.runId}),(0,d.jsx)(ca,{label:`Started`,value:ia(t.startedAt)}),(0,d.jsx)(ca,{label:`Finished`,value:ia(t.completedAt)}),(0,d.jsx)(ca,{label:`Duration`,value:oa(t)}),t.progress?(0,d.jsx)(ca,{label:`Progress`,value:`${Math.round(t.progress.percent)}%${t.progress.label?` — ${t.progress.label}`:``}`}):null]}),t.progress?(0,d.jsxs)(`div`,{children:[(0,d.jsx)(l.BackgroundActionMenuProgressBar,{percent:t.progress.percent,label:t.progress.label||`Background action progress`}),typeof t.progress.current==`number`&&typeof t.progress.total==`number`?(0,d.jsxs)(`div`,{className:`mt-1 text-xs text-zinc-500`,children:[t.progress.current,` of `,t.progress.total,` items`]}):null]}):null,t.error?(0,d.jsxs)(`div`,{className:`rounded-lg border border-red-200 bg-red-50`,children:[(0,d.jsx)(`div`,{className:`border-b border-red-200 px-4 py-2.5`,children:(0,d.jsx)(`span`,{className:`text-xs font-semibold uppercase tracking-widest text-red-600`,children:`Error`})}),(0,d.jsxs)(`div`,{className:`p-4`,children:[(0,d.jsx)(`div`,{className:`text-sm font-medium text-red-800`,children:t.error.message}),t.error.stack?(0,d.jsx)(`pre`,{className:`mt-3 max-h-40 overflow-auto rounded bg-red-100 p-3 text-xs text-red-700 leading-relaxed whitespace-pre-wrap`,children:t.error.stack}):null]})]}):null,c.length>0?(0,d.jsxs)(`div`,{children:[(0,d.jsx)(`h3`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-widest text-zinc-400`,children:`Key events`}),(0,d.jsx)(`div`,{className:`divide-y divide-zinc-100 rounded-lg border border-zinc-200`,children:c.map(e=>(0,d.jsxs)(`div`,{className:`flex items-baseline gap-3 px-3 py-2`,children:[(0,d.jsx)(`span`,{className:[`shrink-0 rounded px-1.5 py-0.5 text-[10px] font-semibold uppercase tracking-wide`,fa(e.type)].join(` `),children:e.type}),(0,d.jsx)(`span`,{className:`min-w-0 flex-1 truncate text-sm text-zinc-700`,children:e.message||e.type}),(0,d.jsx)(`time`,{className:`shrink-0 text-xs text-zinc-400`,children:aa(e.createdAt)})]},e.id))})]}):null]}),r===`logs`&&(0,d.jsx)(`div`,{className:`p-5`,children:o===0?(0,d.jsx)(`div`,{className:`rounded-lg border border-zinc-200 p-6 text-center text-sm text-zinc-400`,children:`No logs recorded.`}):(0,d.jsxs)(`div`,{className:`overflow-hidden rounded-lg bg-zinc-950 shadow-inner`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-1.5 border-b border-white/10 px-3 py-2`,children:[(0,d.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,d.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,d.jsx)(`div`,{className:`h-2.5 w-2.5 rounded-full bg-zinc-700`}),(0,d.jsxs)(`span`,{className:`ml-2 text-[10px] text-zinc-500 font-mono`,children:[o,` `,o===1?`entry`:`entries`]})]}),(0,d.jsxs)(`div`,{className:`max-h-[50vh] overflow-y-auto p-1 font-mono text-xs`,children:[t.logs.map(e=>{let t=ua(e.level);return(0,d.jsxs)(`div`,{className:`group flex gap-0 hover:bg-white/5 rounded px-2 py-1 leading-relaxed`,children:[(0,d.jsx)(`time`,{className:`w-20 shrink-0 text-zinc-600 select-none pr-2`,children:aa(e.createdAt)}),(0,d.jsx)(`span`,{className:[`w-10 shrink-0 select-none font-bold pr-2`,t.className].join(` `),children:t.label}),(0,d.jsxs)(`span`,{className:`min-w-0 flex-1 text-zinc-200 break-words`,children:[e.message,e.data===void 0?null:(0,d.jsx)(`span`,{className:`block mt-0.5 text-zinc-500 whitespace-pre-wrap`,children:sa(e.data)})]})]},e.id)}),(0,d.jsx)(`div`,{ref:a})]})]})})]})}function ha(){let e=At(),t=$i(),[n,r]=(0,u.useState)(null),i=t.reduce((e,t)=>e+t.actions.length,0),a=t.reduce((e,t)=>e+t.actions.filter(e=>na(e.instance)).length,0),o=t.reduce((e,t)=>e+t.actions.filter(e=>e.instance?.status===`error`).length,0),{isOpen:s,buttonProps:c,itemProps:f,setIsOpen:p}=ir(i);if(!i)return null;let m=n?t.flatMap(e=>e.actions).find(e=>e.instanceKey===n):void 0,h=0;return(0,d.jsxs)(l.BackgroundActionMenuRoot,{children:[(0,d.jsx)(l.BackgroundActionMenuButton,{active:s,runningCount:a,errorCount:o,"aria-label":`Actions menu`,...c}),(0,d.jsx)(l.BackgroundActionMenuPanel,{open:s,role:`menu`,"aria-hidden":!s,inert:!s,children:(0,d.jsx)(`div`,{className:`py-1.5`,children:t.map((t,n)=>(0,d.jsxs)(u.Fragment,{children:[n?(0,d.jsx)(l.BackgroundActionMenuDivider,{}):null,(0,d.jsx)(l.BackgroundActionMenuSection,{children:t.label}),t.actions.map(t=>{let{onKeyDown:n,...i}=f[h++]||{},a=ra(t.instance),o=na(t.instance),s=()=>{o||(St({store:e,context:t.context}),p(!0))},c=()=>{o&&(e.getState().cancelAction(t.instanceKey),p(!0))};return(0,d.jsxs)(l.BackgroundActionMenuItem,{status:t.instance?.status||`idle`,children:[(0,d.jsx)(l.BackgroundActionMenuTrigger,{running:o,...i,"aria-label":o?`Cancel ${t.definition.label}`:`Run ${t.definition.label}`,onMouseDown:e=>{e.preventDefault()},onClick:e=>{e.stopPropagation(),o?c():s()},onKeyDown:e=>{e.key===`Enter`||e.key===` `?(e.preventDefault(),e.stopPropagation(),o?c():s()):n?.(e)},children:(0,d.jsxs)(l.BackgroundActionMenuText,{children:[(0,d.jsx)(l.BackgroundActionMenuLabel,{running:o,children:t.instance?.label||t.definition.label}),a?(0,d.jsx)(l.BackgroundActionMenuMeta,{variant:t.instance?.status===`error`?`error`:`default`,children:a}):null,t.definition.summary&&!a?(0,d.jsx)(l.BackgroundActionMenuMeta,{children:t.definition.summary}):null,o&&t.instance?.progress?(0,d.jsx)(l.BackgroundActionMenuProgressBar,{percent:t.instance.progress.percent,label:t.instance.progress.label||a||t.definition.label}):null]})}),t.instance?.resultsAvailable&&t.definition.onResults?(0,d.jsx)(l.BackgroundActionMenuInlineAction,{onClick:e=>{e.stopPropagation(),t.definition.onResults?.(t.context)},children:`Results`}):null,t.instance?(0,d.jsx)(l.BackgroundActionMenuInfoButton,{"aria-label":`View ${t.definition.label} details`,onClick:e=>{e.preventDefault(),e.stopPropagation(),r(t.instanceKey),p(!0)}}):null]},t.instanceKey)})]},t.id))})}),m?.instance?(0,d.jsx)(ma,{definition:m.definition,instance:m.instance,onClose:()=>r(null)}):null]})}const ga=new Set([`fullpage`,`slideshow`,`scroll`]);function _a(e,t){return[...e.filter(e=>!e.startsWith(`template-`)&&!ga.has(e)),t.type,`template-${t.id}`]}function va(e,t=[]){let n=t.find(e=>e.startsWith(`template-`))?.slice(9);return e.find(e=>e.id===n)||e.find(e=>t.includes(e.type))||null}function ya(e,t,n=[]){return va(e,n)||e.find(e=>e.id===t)||e[0]||null}const ba=`manifest-editor:preset-onboarding:open`;function xa(e){return typeof window<`u`&&window.localStorage.getItem(e)===`true`}function Sa(e){typeof window<`u`&&window.localStorage.setItem(e,`true`)}function Ca(e,t){return e.mode===`global`||!t?`preset-onboarding/${e.id}`:`preset-onboarding/${e.id}/${t.type}/${t.id}`}function wa(){let e=U(),t=W(),n=e.preset?.onboarding,r=n?Ca(n,t):null;return()=>window.dispatchEvent(new CustomEvent(ba,{detail:r}))}function Ta({className:e}){let t=U().preset?.onboarding,n=wa();return t?(0,d.jsx)(l.ActionButton,{className:e,onPress:n,children:t.openLabel||`Open guide`}):null}function Ea(e){let t=U(),n=W(),{state:r,setState:i}=Un(),a=t.preset?.onboarding,o=t.preset?.onboarding?.renderPreviewButton,s=a?Ca(a,n):null,c=!!s&&r?.presetOnboardingPreviewHintKey===s;return o?o({...e,preview:t.preset?.preview,showOnboardingPreviewHint:c,onOnboardingPreviewHintClose:()=>{c&&i({presetOnboardingPreviewHintKey:null})}}):(0,d.jsx)(Lr,{...e,preview:t.preset?.preview})}function Da(){let e=U(),t=W(),n=e.preset?.onboarding,{setState:r}=Un(),i=Gn(),a=(0,m.useManifest)(),o=(0,m.useVault)(),s=a?.behavior||[],c=va(i.templates,s),f=ya(i.templates,i.selectedTemplateId,s),p=(0,u.useRef)(f?.id||null);p.current=f?.id||null;let h=(0,u.useMemo)(()=>n?Ca(n,t):null,[n,t]),[g,_]=(0,u.useState)(!1),[v,y]=(0,u.useState)(!1);if((0,u.useEffect)(()=>{if(!h)return;let e=!c&&!xa(h);_(e),y(e)},[c,h]),(0,u.useEffect)(()=>{let e=e=>{e.detail===h&&(r({presetOnboardingPreviewHintKey:null}),_(!!n),y(!1))};return window.addEventListener(ba,e),()=>window.removeEventListener(ba,e)},[h,n,r]),!n||!h)return null;let b=()=>{i.setSelectedTemplateId(ya(i.templates,p.current)?.id||null),Sa(h),v&&r({presetOnboardingPreviewHintKey:h}),_(!1),y(!1)},x=e=>{p.current=e,i.setSelectedTemplateId(e);let t=i.templates.find(t=>t.id===e);if(!a||!t)return;let n=a.behavior||[],r=_a(n,t);r.length===n.length&&r.every((e,t)=>e===n[t])||o.modifyEntityField(a,`behavior`,r)};return(0,d.jsx)(l.Modal,{title:n.title,open:g,onClose:b,actions:(0,d.jsxs)(`div`,{className:`flex gap-2`,children:[(0,d.jsx)(l.ActionButton,{onPress:b,children:n.dismissLabel||`Dismiss`}),f?(0,d.jsx)(l.ActionButton,{primary:!0,onPress:()=>{x(p.current),b()},children:n.primaryLabel||`Continue`}):null]}),children:(0,d.jsxs)(`div`,{className:`flex flex-col gap-4 p-6`,children:[n.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-600`,children:n.summary}):null,n.renderBody({...i,selectedTemplateId:f?.id||null,selectedTemplate:f,setSelectedTemplateId:x,dismiss:b})]})})}const Oa=(0,u.memo)(function(e){let[t]=(0,l.useLocalStorage)(`menu-hidden`);return(0,d.jsx)($n,{children:(0,d.jsxs)(Qn,{children:[(0,d.jsx)(er,{onClick:e.onClickLogo,children:(0,d.jsx)(l.ManifestEditorLogo,{})}),(0,d.jsx)(Lr,{}),(0,d.jsx)(Ta,{}),(0,d.jsx)(ha,{})]})})}),ka=(0,u.createContext)(null);function Aa(){return(0,u.useContext)(ka)||null}function ja(e,t){let n=Aa();return n?n[e][t]:null}function Ma({children:e,menu:t}){return(0,d.jsx)(ka.Provider,{value:t,children:e})}function Na(){return(0,u.useContext)(m.AtlasStoreReactContext)}function Pa(e){if(!e)return null;if(e.points.length>2){let t=Math.min(...e.points.map(e=>e[0])),n=Math.min(...e.points.map(e=>e[1])),r=Math.max(0,...e.points.map(e=>e[0])),i=Math.max(0,...e.points.map(e=>e[1]));return{x:t,y:n,width:r-t,height:i-n}}return null}const Fa=async e=>new Promise((t,n)=>{let r=document.createElement(`img`);r.onload=()=>t(r),r.onerror=()=>n(),r.src=e,r.complete&&t(r)}),Ia=async e=>new Promise((t,n)=>{let r=document.createElement(`video`);r.onloadedmetadata=()=>t(r),r.onerror=()=>n(),r.preload=`metadata`,r.src=e});async function La(){}async function Ra(e,...t){if(!e)return;if(e.endsWith(`.mp3`)||e.endsWith(`.mp4`)||e.endsWith(`.m4a`)||e.endsWith(`.m4v`))try{let t=await Ia(e);if(t){let n=t.videoWidth===0;return{id:e,type:t.videoWidth===0?`Sound`:`Video`,width:t.videoWidth||void 0,height:t.videoHeight||void 0,duration:t.duration,format:n?`audio/mp4`:`video/mp4`}}}catch{}let n=null;try{n=await fetch(e)}catch{return Va(e)}if(!n.ok&&(n=await fetch(e+`/info.json`),!n.ok))return Va(e);let r=n.headers.get(`Content-Type`);if(r?.includes(`image/`))return Va(e,r);let i=null;try{i=await n.json()}catch{return null}return await Ba(i,e)}function za(e){return e.protocol&&e.protocol===`http://iiif.io/api/image`?(e.type||(e.type=`ImageService`),e):null}async function Ba(e,t){let n=za(e);if(n)return n;if(!(e.id||e[`@id`]))return null;let r=await new x.Vault().load(t,e);if(r&&(r&&r?.type===`Manifest`||r?.type===`Collection`))return{id:t,type:r.type,label:(0,b.getValue)(r.label)}}async function Va(e,t){let n=e.split(`/`);if(n.length>=8){let e=n.slice(-4);if(e[3].split(`.`).length===2&&(e[2][0]===`!`||e[2]===e[2])){let e=await Ha(n.slice(0,n.length-4).join(`/`)+`/info.json`);if(e&&e?.type&&e?.type?.startsWith(`ImageService`))return e}}try{let n=await Fa(e);return{id:e,type:`Image`,width:n.width,height:n.height,format:await Ua(e,t)}}catch{}return null}async function Ha(e){try{let t=await fetch(e);return t.ok?await Ba(await t.json(),e):null}catch(e){return console.log(e),null}}async function Ua(e,t){if(t)return t;try{let t=(await fetch(e,{method:`HEAD`,mode:`no-cors`})).headers.get(`Content-type`);if(t)return t}catch{}let n=e.toLowerCase();return n.endsWith(`jpg`)||n.endsWith(`jpeg`)?`image/jpeg`:n.endsWith(`png`)?`image/png`:`image/jpeg`}async function Wa(e){try{let t=await Fa(e);if(t)return{width:t.naturalWidth||t.width,height:t.naturalHeight||t.height}}catch{return null}return null}const Ga=(0,f.create)(e=>({regions:{},resources:[],setRegion:(t,n)=>{e(e=>({...e.regions,regions:{[t]:n||null}}))},setHighlight:t=>{e({resources:Array.isArray(t)?t:[t]})},highlight:t=>{e(e=>e.resources.indexOf(t)===-1?{resources:[...e.resources,t]}:e)},clearHighlight:t=>{e(e=>({resources:e.resources.filter(e=>e!==t)}))}}));function Ka(e){let t=(0,u.useMemo)(()=>Lt(),[]),n=Ga(e=>e.regions[t]),r=Ga(e=>e.setRegion);(0,u.useEffect)(()=>{n&&e?n!==e&&(n.x!==e.x||n.y!==e.y||n.width!==e.width||n.height!==e.height)&&r(t,e||null):r(t,e||null)},[n]),(0,u.useEffect)(()=>()=>r(t,null),[])}function qa(e){let t=Ga(e=>e.highlight),n=Ga(e=>e.clearHighlight);return(0,u.useEffect)(()=>()=>{e&&n(e)},[n,e]),(0,u.useMemo)(()=>({onMouseEnter(){e&&t(e)},onMouseLeave(){e&&n(e)}}),[e,t,n])}const Ja=g.default.div`
|
|
243
243
|
position: relative;
|
|
244
244
|
display: inline-block;
|
|
245
|
-
|
|
245
|
+
`;g.default.div`
|
|
246
246
|
display: flex;
|
|
247
247
|
flex-direction: column;
|
|
248
248
|
position: absolute;
|
|
@@ -257,7 +257,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
257
257
|
background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
|
|
258
258
|
}
|
|
259
259
|
}
|
|
260
|
-
|
|
260
|
+
`;const Ya=g.default.button`
|
|
261
261
|
padding: 0 ${e=>e.theme.padding.small||`0.5rem`};
|
|
262
262
|
color: ${e=>e.theme.color.main||`none`};
|
|
263
263
|
background-color: ${e=>e.theme.color.white||`white`};
|
|
@@ -276,7 +276,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
276
276
|
background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
|
|
277
277
|
}
|
|
278
278
|
|
|
279
|
-
${e=>e.$active&&
|
|
279
|
+
${e=>e.$active&&g.css`
|
|
280
280
|
background: #b84c74;
|
|
281
281
|
color: #fff;
|
|
282
282
|
&:hover {
|
|
@@ -284,7 +284,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
284
284
|
color: #fff;
|
|
285
285
|
}
|
|
286
286
|
`}
|
|
287
|
-
`,
|
|
287
|
+
`,Xa=g.default.div`
|
|
288
288
|
display: none;
|
|
289
289
|
flex-direction: column;
|
|
290
290
|
position: absolute;
|
|
@@ -302,26 +302,26 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
302
302
|
overflow: hidden;
|
|
303
303
|
padding-bottom: 3px;
|
|
304
304
|
|
|
305
|
-
${
|
|
305
|
+
${K} {
|
|
306
306
|
&:hover {
|
|
307
307
|
background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
|
|
308
308
|
}
|
|
309
309
|
}
|
|
310
310
|
|
|
311
|
-
${e=>e.$open&&
|
|
311
|
+
${e=>e.$open&&g.css`
|
|
312
312
|
display: flex;
|
|
313
313
|
`}
|
|
314
|
-
`,
|
|
314
|
+
`,Za=g.default.div`
|
|
315
315
|
color: #999;
|
|
316
316
|
text-transform: uppercase;
|
|
317
317
|
font-weight: 600;
|
|
318
318
|
padding: 0.7em;
|
|
319
319
|
font-size: 0.875em;
|
|
320
|
-
`,
|
|
320
|
+
`,Qa=g.default.div`
|
|
321
321
|
height: 1px;
|
|
322
322
|
margin: 0 0.5em;
|
|
323
323
|
background: #eee;
|
|
324
|
-
`,
|
|
324
|
+
`,$a=({style:e})=>(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`1rem`,fill:`#000000`,style:e,children:[(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M20 11H7.83l5.59-5.59L12 4l-8 8 8 8 1.41-1.41L7.83 13H20v-2z`})]}),eo=e=>(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`0 0 24 24`,...e,children:[(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,d.jsx)(`path`,{d:`M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z`,fill:`currentColor`})]});function to(e){return e&&e.pinnable}function no({initial:e,fallback:t,options:n={}}){return Math.max(n.minWidth||0,Math.min(n.maxWidth||1/0,e||t))}function ro(e){return typeof e==`string`?(0,u.createElement)(`div`,{dangerouslySetInnerHTML:{__html:e}}):e}function io(e){let t=e.error.toString(),[n,r]=(0,u.useState)(!1);return(0,d.jsxs)(l.PaddedSidebarContainer,{children:[(0,d.jsx)(l.ErrorMessage,{className:`mb-2`,children:t}),(0,d.jsx)(Tr,{onClick:e.resetErrorBoundary,children:`Try again`})]})}const ao=(0,u.createContext)(null);function oo(){return(0,u.useContext)(ao)}const so=g.default.div`
|
|
325
325
|
display: flex;
|
|
326
326
|
flex-direction: column;
|
|
327
327
|
position: relative;
|
|
@@ -333,6 +333,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
333
333
|
border-top: 1px solid #e4e7f0;
|
|
334
334
|
}
|
|
335
335
|
|
|
336
|
+
&[data-modal="true"] {
|
|
337
|
+
width: 100%;
|
|
338
|
+
}
|
|
339
|
+
|
|
336
340
|
&[data-floating="true"] {
|
|
337
341
|
margin: 10px;
|
|
338
342
|
border-radius: 5px;
|
|
@@ -373,7 +377,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
373
377
|
&[data-state="unmounted"] {
|
|
374
378
|
transform: translateX(100%);
|
|
375
379
|
}
|
|
376
|
-
|
|
380
|
+
`,co=g.default.div`
|
|
377
381
|
background: #fff;
|
|
378
382
|
display: flex;
|
|
379
383
|
height: 2.8em;
|
|
@@ -395,27 +399,38 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
395
399
|
background: #ffc2d2;
|
|
396
400
|
box-shadow: inset 0 -5px 10px 0 rgba(255, 255, 255, 0.5);
|
|
397
401
|
}
|
|
398
|
-
`,
|
|
402
|
+
`,lo=g.default.button`
|
|
399
403
|
border: none;
|
|
400
404
|
background: transparent;
|
|
401
405
|
padding: 0 0.4em;
|
|
402
406
|
margin: 0.3em;
|
|
407
|
+
min-width: 24px;
|
|
408
|
+
height: 24px;
|
|
409
|
+
display: inline-flex;
|
|
410
|
+
align-items: center;
|
|
411
|
+
justify-content: center;
|
|
403
412
|
border-radius: 3px;
|
|
413
|
+
&:focus-visible {
|
|
414
|
+
outline: 2px solid #b84c74;
|
|
415
|
+
outline-offset: 2px;
|
|
416
|
+
}
|
|
404
417
|
&:hover {
|
|
405
418
|
background: #eee;
|
|
406
419
|
}
|
|
407
420
|
svg {
|
|
408
421
|
font-size: 1.2em;
|
|
409
422
|
}
|
|
410
|
-
`,
|
|
423
|
+
`,uo=g.default.div`
|
|
411
424
|
flex: 1 1 0px;
|
|
412
|
-
`,
|
|
425
|
+
`,fo=g.default.h2`
|
|
413
426
|
font-size: 0.875em;
|
|
427
|
+
font-weight: 400;
|
|
428
|
+
margin: 0;
|
|
414
429
|
flex: 1 1 0px;
|
|
415
430
|
padding-left: 1em;
|
|
416
431
|
text-align: center;
|
|
417
432
|
align-self: center;
|
|
418
|
-
`,
|
|
433
|
+
`,po=g.default.div`
|
|
419
434
|
flex: 1 1 0px;
|
|
420
435
|
display: flex;
|
|
421
436
|
|
|
@@ -426,13 +441,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
426
441
|
> * {
|
|
427
442
|
min-width: 0;
|
|
428
443
|
}
|
|
429
|
-
`;function ro({panel:e,state:t,actions:n,isLeft:r,pinActions:i=n,transition:a,close:o,available:s=[],style:c,noHeader:d}){let f=(0,l.useContext)(p.ReactVaultContext)||null,[m,h]=(0,l.useState)(!1),_=Gn(),v=fi(),{tabs:y,pinnable:b,hideHeader:x}=e?.options||{},S=[_.state.canvasId,e?.id],C=(0,l.useMemo)(()=>(s||[]).filter(e=>!e.requiresState),[s]),{itemProps:w,isOpen:T,setIsOpen:E}=(0,g.default)(C.length),[D,te]=(0,l.useState)(``),O=(0,l.useRef)(void 0);(0,l.useEffect)(()=>h(!1),S),(0,l.useEffect)(()=>te(``),[e]),(0,l.useEffect)(()=>(O.current=te,()=>{O.current=void 0}),[]);let k=(0,l.useCallback)(e=>{O.current&&O.current(e)},[]),A=(0,l.useCallback)(r=>{let i=e?t.stack.length?n.popStack:e.backAction?()=>e&&e.backAction&&e.backAction(t,{...v,current:n},_):null:null;r&&(!i||r.metaKey)&&C.length?(r.preventDefault(),E(!0)):i&&i()},[n,_,v,e,E,t,C.length]),j=r=>{n.change({id:r.id,state:r.defaultState,stacked:!!(t.stack.length||e?.backAction)})};if(!e||!t.current)return null;let M=e.backAction||t.stack.length?(0,u.jsx)(U,{onClick:A,children:(0,u.jsx)(Ra,{})}):null,ne=(0,u.jsx)(U,{onClick:o||n.close,children:(0,u.jsx)(ar,{})});return(0,u.jsx)(Xa.Provider,{value:k,children:(0,u.jsxs)(Qa,{"data-state":a,"data-flipped":r,style:c,"data-header":!d,children:[d?null:(0,u.jsxs)($a,{"data-tabs":!!y,"data-error":m,children:[(0,u.jsxs)(Ua,{style:{display:`flex`,height:`100%`},children:[e.renderBackAction?e.renderBackAction({backAction:A,fallback:M}):M,C.length?(0,u.jsxs)(Ka,{$open:T,style:{left:`0.5em`},children:[(0,u.jsx)(qa,{children:`All panels`}),(0,u.jsx)(Ja,{}),C.map((t,n)=>(0,u.jsx)(Ga,{...w[n],onClick:()=>j(t),$active:e.id===t.id,children:t.label},n))]}):null]}),D?(0,u.jsx)(to,{children:D}):x?(0,u.jsx)(eo,{}):(0,u.jsx)(to,{children:e.label}),b?t.pinned?(0,u.jsx)(U,{onClick:i.unpin,children:(0,u.jsx)(La,{fill:`orange`})}):(0,u.jsx)(U,{onClick:()=>i.pin({id:e.id,state:t.state}),children:(0,u.jsx)(La,{fill:`#ddd`})}):null,e.renderCloseAction?e.renderCloseAction({closeAction:o||n.close,fallback:ne}):ne]}),(0,u.jsx)(no,{className:`OverrideScrollbar`,children:(0,u.jsx)(ee.ErrorBoundary,{onError:()=>h(!0),FallbackComponent:za,resetKeys:S,onReset:()=>h(!1),children:Ha(e.render(t.state||e.defaultState||{},{...v,current:n,vault:f,transition:a},_))})})]})})}function io(e=`vault://homepage-collection.json`){let t=new x.Vault,n=window.localStorage.getItem(`preview-vault-collection`),r=!1;if(n)try{let i=JSON.parse(n);if(i.id&&i.id===e){t.dispatch((0,C.requestResource)({id:i.id}));let e=(0,w.actionListFromResource)(i.id,i);t.dispatch((0,C.batchActions)({actions:e})),r=!0}}catch{}if(!r){let n=(0,w.actionListFromResource)(e,{"@context":`http://iiif.io/api/presentation/3/context.json`,id:e,type:`Collection`,label:{en:[`Recent items`]},items:[]});t.dispatch((0,C.requestResource)({id:e})),t.dispatch((0,C.batchActions)({actions:n}))}return t.on(`after:@iiif/REMOVE_REFERENCE`,n=>{n.action.payload.id===e&&window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}),{vault:t,unsubscribe:()=>{},addHistory:(n,r)=>{let i=t.getState();if(n&&r&&(r===`Collection`||r===`Manifest`)){let a=i.iiif.entities.Collection[e];if(a){let i=a.items.findIndex(e=>e.id===n);i===-1?t.dispatch((0,C.addReference)({id:e,type:`Collection`,reference:{id:n,type:r},key:`items`,index:0})):t.dispatch((0,C.reorderEntityField)({id:e,type:`Collection`,key:`items`,startIndex:i,endIndex:0})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}},clearHistory:()=>{t.dispatch((0,C.modifyEntityField)({id:e,type:`Collection`,key:`items`,value:[]})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}}function ao(){return(0,l.useContext)(oo)}const oo=(0,l.createContext)(new x.Vault),so=(0,l.createContext)({addHistory:(e,t)=>{},clearHistory:()=>{}}),co=`manifest-editor://homepage-collection.json`;function lo(){return(0,l.useContext)(so)}function uo(e){let{vault:t,unsubscribe:n,addHistory:r,clearHistory:i}=(0,l.useMemo)(()=>io(co),[]);return(0,l.useEffect)(()=>n,[]),(0,u.jsx)(so.Provider,{value:{addHistory:r,clearHistory:i},children:(0,u.jsx)(oo.Provider,{value:t,children:e.children})})}function fo({children:e}){return(0,u.jsx)(p.VaultProvider,{vault:ao(),children:e})}function po(e,t,n,r,i){let a=(0,p.useVault)(),o=z(),{create:s,edit:c}=li(),u=(0,l.useMemo)(()=>(0,S.matchBasedOnResource)({type:n,parent:e,index:0,property:t},o.layout.creators||[],{vault:a}),[e,t,o.layout.creators,n,a]),d=e&&u.length!==0,f=(0,l.useCallback)((a,o)=>{if(e)return s({type:n,parent:(0,m.toRef)(e),property:t,index:a,target:r,initialData:o,...i||{}})},[s,e,t,n,i,r]),h=(0,l.useCallback)((a,o,c)=>{if(e)return s({type:n,filter:a,parent:(0,m.toRef)(e),property:t,index:o,target:r,initialData:c,...i||{}})},[s,e,t,n,i,r]);return[d,{create:f,edit:(0,l.useCallback)((n,r)=>{c(n,e?{parent:(0,m.toRef)(e),property:t,index:r}:void 0)},[c,e,t]),createFiltered:h,creator:(0,l.useCallback)((a,o)=>{if(e)return s({type:n,initialCreator:a,parent:(0,m.toRef)(e),property:t,target:r,initialData:o,...i||{}})},[n,t,e,r,s,i]),buttonProps:(0,l.useMemo)(()=>({"data-action-id":Lt(n,t,e)}),[n,t,e])}]}function mo(){let e=(0,p.useVault)(),t=ao(),n=z();return(0,l.useMemo)(()=>new S.Creator(e,n.layout.creators||[],t),[n.layout.creators,e])}const ho=(0,l.createContext)({});function go(e){return(0,l.useContext)(ho)[e]||{}}function _o(e){let t=(0,l.useContext)(ho),n=(0,l.useMemo)(()=>({...t,[e.id]:e.data}),[t,e.id,e.data]);return(0,u.jsx)(ho.Provider,{value:n,children:e.children})}const vo=(0,l.memo)(function(e){let t=(0,p.useVault)(),{edit:n,modal:r}=li(),[i,a]=(0,l.useState)(!1),[o,s]=(0,l.useState)(null),d=mo(),f=(0,l.useRef)(!1),h=e.resource.initialData?.selector;Fa(h);let g=go(e.creator.id),_={targetType:e.resource.type,parent:e.resource.parent?{property:e.resource.property,atIndex:e.resource.index,resource:e.resource.parent}:void 0,target:e.resource.target,initialData:{...g,...e.resource.initialData||{}}},v=t=>{try{if(i||f.current)return;a(!0),f.current=!0,d.create(e.creator.id,t,_).catch(e=>(s(e?.message||`Unknown error`),null)).then(async t=>{if(e.onCreate?.(),e.resource.initialData?.skipEditingOnCreate){a(!1),r.popStack(),r.close();return}if(e.skipEditingOnCreate||!t)return;let i=Array.isArray(t)?t[0]:t;a(!1),r.popStack(),r.close(),i&&n(i,{parent:(0,m.toRef)(e.resource.parent),property:e.resource.property,index:e.resource.index})})}catch(e){s(e?.message||`Unknown error`)}},y=async()=>!0;if((0,l.useEffect)(()=>{e.resource.initialData?.showEmptyForm||!e.creator.render&&!i&&v({})},[e.creator]),o)return(0,u.jsx)(`div`,{className:`flex flex-col items-center p-4`,children:(0,u.jsx)(c.ErrorMessage,{children:o})});let b=(0,u.jsx)(`div`,{className:`flex flex-col items-center py-8`,children:(0,u.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,u.jsx)(c.Spinner,{}),` `,(0,u.jsx)(`span`,{children:`Loading`})]})});return i?b:e.creator.render?(0,u.jsx)(u.Fragment,{children:(0,u.jsx)(l.Suspense,{fallback:b,children:e.creator.render({vault:t,runCreate:v,validate:y,options:_})})}):(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(c.EmptyState,{children:`No options available`}),(0,u.jsx)(c.ActionButton,{primary:!0,onPress:()=>v({}),children:e.creator.actionButton||`Create`})]})});function yo(e){let t=z(),n=(0,p.useVault)(),[r,i]=(0,l.useState)(e.resource.initialCreator||``),a=Za(),o=(0,l.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,t.layout.creators||[],{vault:n}),[e.resource,t.layout.creators,n]);o.length===1&&!r&&i(o[0].id);let s=o.find(e=>e.id===r);if((0,l.useEffect)(()=>{s&&a?.(s.label)}),o.length===0)return(0,u.jsx)(c.EmptyState,{children:`Not currently supported`});let d=(0,u.jsx)(c.ModalBackSlot,{children:(0,u.jsx)(c.IconButton,{root:document.getElementById(`headlessui-portal-root`)||void 0,label:`Back to Add content options`,className:`group`,placement:`right`,onPress:()=>i(``),children:(0,u.jsx)(c.GridIcon,{className:`text-2xl opacity-50 group-hover:opacity-70`})})});return s?s.hiddenModal?(0,u.jsxs)(u.Fragment,{children:[d,(0,u.jsx)(vo,{creator:s,resource:e.resource})]}):(0,u.jsxs)(`div`,{children:[d,(0,u.jsx)(`div`,{className:`p-2 py-6`,children:(0,u.jsx)(vo,{creator:s,resource:e.resource})})]}):(0,u.jsx)(c.CreatorGrid,{label:`Select a type`,items:o.map(e=>({id:e.id,title:e.label,description:e.summary||``,icon:e.icon,onClick:()=>i(e.id)}))})}const bo={id:`@manifest-editor/creator`,label:`Add content`,options:{hideHeader:!0,tabs:!1},render(e){return(0,u.jsx)(yo,{resource:e})}},xo={color:{main:`#B84C74`,mainHover:`#4a89ff`,logoPink:`#E94581`,white:`white`,grey:`grey`,black:`black`,lightgrey:`#F8F9FA`,mediumgrey:`#dddddd`,danger:`#a90e21`,warning:`#e38627`,lightdanger:`#ffeaea`,lightsuccess:`#c5e8c5`,success:`#6ccd55`,greyOverlay:`rgba(0, 0, 0, 0.2)`,highlight:`#faeed7`},iiifColor:{manifest:`rgba(0, 0, 0, 0.2)`,canvas:`rgba(255, 222, 219, 0.8)`,service:`rgba(13, 110, 253, 0.8)`,annotation:`rgba(247, 226, 173, 0.8)`,contentResource:`rgba(207, 247, 255, 0.8)`,ranges:`rgba(144, 213, 157, 0.8)`},padding:{xs:`0.25rem`,small:`0.5rem`,medium:`1rem`,large:`2rem`},device:{mobile:`375px`,tablet:`768px`,laptop:`992px`,desktop:`1200px`},shadows:{standard:`rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.05) 0px 5px 15px 0px`,bottom:`rgba(0, 0, 0, 0.1) 0px 4px 2px -2px`}};function So(e){let{}=e,t=(0,p.useVault)(),n=z(),r=(0,l.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,n.layout.creators||[],{vault:t}),[e.resource,n.layout.creators,t]);return r.length===0?(0,u.jsx)(`div`,{children:`No supported creators found`}):(0,u.jsx)(`div`,{children:(0,u.jsxs)(c.Tabs,{className:`w-full flex-1 overflow-hidden flex flex-col`,children:[(0,u.jsx)(c.TabList,{className:`flex-1 overflow-hidden w-full flex text-sm whitespace-nowrap`,items:r,children:e=>(0,u.jsx)(c.Tab,{id:e.id,children:e.label})}),r.map(t=>(0,u.jsx)(c.TabPanel,{id:t.id,className:`p-2`,children:(0,u.jsx)(h.ThemeProvider,{theme:xo,children:(0,u.jsx)(vo,{creator:t,resource:e.resource,onCreate:e.onCreate,skipEditingOnCreate:!0})})},t.id))]})})}function Co({fallback:e,backAction:t}){let n=Yr(),{back:r}=qr();return n.length?(0,u.jsx)(U,{onClick:r,children:(0,u.jsx)(Ra,{})}):e}function wo({closeAction:e,fallback:t}){let n=Yr();return Jr()||n.length?(0,u.jsx)(U,{onClick:()=>{e()},children:(0,u.jsx)(ar,{})}):t}function To(e,t,n,r){let i=t.filter(t=>t.resourceType===e.resource.source.type);if(i.length===0)return null;for(let t of i){let i=[],a={},o=(t.editors||[]).filter(t=>{if(r.hideTabs&&r.hideTabs.includes(t.id)||r.onlyTabs&&!r.onlyTabs.includes(t.id))return!1;if(t.supports.sortKey){if(i.includes(t.supports.sortKey))return!1;t.supports.sortFallback&&(a[t.supports.sortKey]=t)}return n.edit&&!t.supports.edit||t.supports.custom&&t.supports.custom(e,n.vault)===!1?!1:(t.supports.sortKey&&i.push(t.supports.sortKey),!0)}),s=Object.keys(a);for(let e of s)!i.includes(e)&&a[e]&&!o.includes(a[e])&&o.push(a[e]);if(o.length)return{...t,editors:o}}return null}function Eo({currentTab:e=void 0}){let t=Jr(),n=(0,l.useContext)(p.ResourceReactContext),r=z(),i=B(),a=(0,p.useVault)(),{change:o}=li(),s=Za(),{editorConfig:d}=F(),f=t?.resource.source?.id,m=t?.resource.source?.type,h=f!==i.id;f&&h&&i.type===`Collection`&&m===`Collection`&&(m=`EmbeddedCollection`);let g=(m?d[m]:d.All)||{},_=(0,l.useMemo)(()=>{let e={...n},r=t?.resource.source.id,i=t?.resource.source.type,a={Collection:`collection`,Manifest:`manifest`,Range:`range`,Canvas:`canvas`,Annotation:`annotation`,AnnotationPage:`annotationPage`};return i&&a[i]&&(e[a[i]]=r),e},[t,n]);function v(e){return t?(0,u.jsx)(p.ResourceReactContext.Provider,{value:_,children:e}):e}let y=(0,l.useMemo)(()=>{if(!t)return null;let e=r.layout.editors||[];return To(t,(r.layout.resources||[]).map(t=>typeof t==`string`?{id:`@default/`+t,label:t,resourceType:t,auto:!0,editors:e.filter(e=>e.supports.resourceTypes.includes(t))}:t),{edit:!0,vault:a},g)},[t,r]);(0,l.useEffect)(()=>{s(y?.label||``)},[y]),(0,l.useEffect)(()=>{let t=y?.editors.map(e=>e.id)||[];t.find(t=>t===e)||o(`@manifest-editor/editor`,{currentTab:t[0]})},[y?.editors,e,o]);let b=(0,l.useMemo)(()=>(y?.editors||[]).map(e=>({id:e.id,label:e.label,renderComponent:()=>e.component(g)})),[y?.editors,g]);if(!t||!y)return null;if(g.singleTab){let e=(y?.editors||[]).find(e=>e.id===g.singleTab);if(e)return v((0,u.jsx)(`div`,{className:`w-full`,children:e.component(g)},t.resource.source?.id))}return v((0,u.jsx)(c.SidebarTabs,{isNested:h,rootResource:i,menuId:t.resource.source.id,menu:b,selectedKey:e,onSelectionChange:e=>{o(`@manifest-editor/editor`,{currentTab:e})}},t.resource.source?.id))}const Do={id:`@manifest-editor/editor`,label:`Editor`,options:{hideHeader:!0,tabs:!0,minWidth:400},renderBackAction:({backAction:e,fallback:t})=>(0,u.jsx)(Co,{backAction:e,fallback:t}),renderCloseAction:({closeAction:e,fallback:t})=>(0,u.jsx)(wo,{closeAction:e,fallback:t}),render({currentTab:e}){return(0,u.jsx)(Eo,{currentTab:e})}};function Oo(e){let[t,n]=(0,l.useState)(!1),r=(0,l.useRef)(null),i=(0,l.useRef)(0);function a(t){i.current--,!(t&&i.current!==0)&&(r.current&&(clearTimeout(r.current),r.current=0),r.current=setTimeout(()=>{n(!1)},e))}function o(){i.current++,r.current&&clearTimeout(r.current),n(!0)}return(0,l.useMemo)(()=>[t,{set:o,clear:a}],[t])}function ko(e){return e?typeof e==`string`?{src:e,alt:``}:e:null}function Ao(e){return e?typeof e==`string`?e:e.name:null}function jo(e){let t=e.extension,n=t.leftPanels?.[0]||t.centerPanels?.[0]||t.rightPanels?.[0]||t.modalPanels?.[0];return n?{id:n.id,label:n.label||`Open plugin`,modal:t.modalPanels?.some(e=>e.id===n.id)||!1}:null}function Mo(e){return e instanceof Error?e.message:`Plugin configuration could not be saved.`}function No(e){return(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,u.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,u.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})}function Po(e){return(0,u.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,u.jsx)(`path`,{d:`M7 7h10v10`}),(0,u.jsx)(`path`,{d:`M7 17 17 7`})]})}function Fo(){let e=z(),{appId:t}=Wn(),n=F(),r=se(),i=Mn(),a=Pn(),o=li(),{saveGlobalPluginConfig:s}=(0,l.useContext)(Dn),[d,f]=(0,l.useState)(!1),[p,m]=(0,l.useState)(``),[h,g]=(0,l.useState)(null),[_,v]=(0,l.useState)(null),[y,b]=(0,l.useState)(null),x=(0,l.useMemo)(()=>new Set(fn(i,e,t).map(e=>e.metadata.id)),[i,e,t]),S=(0,l.useMemo)(()=>{let n=p.trim().toLowerCase();return i.plugins.filter(r=>{let i=cn(r,e,t);return!d&&!i?!1:n?[r.metadata.label,r.metadata.id,r.metadata.description,Ao(r.metadata.author),...r.metadata.tags||[]].filter(Boolean).join(` `).toLowerCase().includes(n):!0})},[e,t,i.plugins,p,d]),ee=h&&i.plugins.find(e=>e.metadata.id===h)||null;if(!i.plugins.length)return null;function C(e){a.setAppConfig(t,e),r({plugins:{...n.plugins||{},apps:{...n.plugins?.apps||{},[t]:e}}})}async function w(e){if(!s){b(`Global plugin settings are not available in this host.`);return}let n=i.globalApps[t]||{},r={apps:{...i.globalApps,[t]:e}};a.setGlobalAppConfig(t,e);try{await s(r)}catch(e){a.setGlobalAppConfig(t,n),b(Mo(e))}}async function T(n,r,a){b(null),v(`${a}:${n.metadata.id}`);let o=a===`global`?i.globalApps[t]||{}:i.apps[t]||{},s=r?yn(o,i,n,e,t):{config:Zt(o,n.metadata.id),blocked:[]};if(s.blocked.length){v(null),b(`Cannot enable ${n.metadata.label}: ${s.blocked.join(`, `)}.`);return}a===`global`?await w(s.config):C(s.config),v(null)}function E(e){let t=jo(e);if(t){if(t.modal){o.modal.open({id:t.id});return}o.open(t.id)}}return(0,u.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-gray-200 pt-4 mt-4`,children:[(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,u.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,u.jsx)(`h3`,{className:`font-semibold text-sm text-gray-900`,children:`Plugins`})}),(0,u.jsx)(`button`,{type:`button`,className:`rounded border border-gray-200 bg-white px-2 py-1 text-xs text-gray-500 hover:text-gray-700 hover:border-gray-300 transition-colors`,onClick:()=>f(e=>!e),children:d?`Compatible only`:`Show all`})]}),(0,u.jsx)(`input`,{className:`rounded border border-gray-200 px-2.5 py-1.5 text-xs focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`,type:`search`,placeholder:`Search plugins…`,value:p,onChange:e=>m(e.currentTarget.value)}),y?(0,u.jsx)(`div`,{className:`rounded border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:y}):null,(0,u.jsx)(`div`,{className:`flex flex-col gap-2`,children:S.map(n=>{let r=un(n,i,t),a=x.has(n.metadata.id),o=r&&n.loadStatus===`loading`,s=r&&n.loadStatus===`error`?n.loadError:null,l=ko(n.metadata.image),d=r&&!a&&!o&&!s,f=cn(n,e,t),p=ln(n,e,t),m=jo(n),h=!!n.settings,v=_===`workspace:${n.metadata.id}`;return(0,u.jsxs)(`article`,{className:`flex gap-2.5 rounded-lg border bg-white p-3 text-sm transition-colors ${a?`border-gray-200`:`border-gray-100 opacity-60`} ${f?``:`opacity-40`}`,children:[l?(0,u.jsx)(`img`,{className:`h-9 w-9 rounded object-cover flex-none mt-0.5`,src:l.src,alt:l.alt||n.metadata.label}):(0,u.jsx)(`div`,{className:`h-9 w-9 rounded flex items-center justify-center flex-none mt-0.5 text-lg ${a?`bg-me-primary-50 text-me-primary-500`:`bg-gray-100 text-gray-400`}`,children:(0,u.jsx)(No,{className:`w-4 h-4`})}),(0,u.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,u.jsxs)(`div`,{className:`flex items-start justify-between gap-1`,children:[(0,u.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 min-w-0`,children:[(0,u.jsx)(`span`,{className:`font-medium text-gray-900 text-xs`,children:n.metadata.label}),n.metadata.official?(0,u.jsxs)(`span`,{className:`rounded-full text-me-primary-500 px-1.5 py-0 text-[9px] font-bold inline-flex items-center gap-1`,children:[(0,u.jsx)(c.CheckIcon,{className:`w-3 h-3`}),` Verified`]}):null,n.metadata.version?(0,u.jsx)(`span`,{className:`text-[10px] text-gray-400`,children:n.metadata.version}):null]}),(0,u.jsxs)(`div`,{className:`flex items-center gap-1 flex-none`,children:[h?(0,u.jsx)(`button`,{type:`button`,title:`Configure plugin`,className:`rounded p-1 text-gray-400 hover:text-gray-700 hover:bg-gray-100 transition-colors`,onClick:()=>g(n.metadata.id),children:(0,u.jsx)(No,{className:`w-3.5 h-3.5`})}):null,a&&m?(0,u.jsx)(`button`,{type:`button`,title:`Open ${m.label}`,className:`rounded p-1 text-me-primary-500 hover:bg-me-primary-50 transition-colors`,onClick:()=>E(n),children:(0,u.jsx)(Po,{className:`w-3.5 h-3.5`})}):null,(0,u.jsx)(`button`,{type:`button`,disabled:!f||v,onClick:()=>T(n,!r,`workspace`),className:`relative inline-flex h-5 w-9 flex-none items-center rounded-full transition-colors disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-me-primary-500/30 ${r?`bg-me-primary-500`:`bg-gray-200`}`,title:r?`Disable plugin`:`Enable plugin`,"aria-label":r?`Disable plugin`:`Enable plugin`,children:(0,u.jsx)(`span`,{className:`inline-block h-3.5 w-3.5 transform rounded-full bg-white shadow transition-transform ${r?`translate-x-4`:`translate-x-0.5`}`})})]})]}),n.metadata.description?(0,u.jsx)(`p`,{className:`text-xs text-gray-500 leading-relaxed`,children:n.metadata.description}):null,o?(0,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Loading plugin…`}):null,s?(0,u.jsx)(`span`,{className:`text-xs text-red-600`,children:s}):null,d?(0,u.jsx)(`span`,{className:`text-xs text-amber-600`,children:`Waiting for required dependencies`}):null,!f&&p?(0,u.jsx)(`span`,{className:`text-xs text-gray-400`,children:p}):null]})]},n.metadata.id)})}),S.length?null:(0,u.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-xs text-gray-500`,children:`No plugins found.`}),ee?(0,u.jsx)(c.Modal,{title:`Configure ${ee.metadata.label}`,onClose:()=>g(null),width:`560px`,children:(0,u.jsx)(Io,{plugin:ee,onClose:()=>g(null),canSaveGlobal:!!s})}):null]})}function Io({plugin:e,onClose:t,canSaveGlobal:n}){let r=Ln(e.metadata.id),[i,a]=(0,l.useState)(`workspace`),[o,s]=(0,l.useState)({}),[c,d]=(0,l.useState)(!1),[f,p]=(0,l.useState)(!1),[m,h]=(0,l.useState)(null),g=i===`global`?r.global:r.workspace;(0,l.useEffect)(()=>{s({...g}),h(null),p(!1)},[e.metadata.id,i]);async function _(){let t=e.settings?.validate?.(o);if(t){h(t);return}d(!0),h(null);try{i===`global`?await r.setGlobalSettings(o):r.setWorkspaceSettings(o),p(!0),setTimeout(()=>p(!1),2e3)}catch(e){h(Mo(e))}finally{d(!1)}}async function v(){d(!0),h(null);try{i===`global`?await r.resetGlobalSettings():r.resetWorkspaceSettings(),s({})}catch(e){h(Mo(e))}finally{d(!1)}}return(0,u.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[n&&r.canSaveGlobal?(0,u.jsxs)(`div`,{className:`flex items-center gap-1 px-5 pt-4 pb-3 border-b border-gray-100`,children:[(0,u.jsx)(`span`,{className:`text-xs text-gray-500 mr-2`,children:`Scope:`}),(0,u.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`workspace`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`workspace`),children:`This workspace`}),(0,u.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`global`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`global`),children:`All workspaces`})]}):null,m?(0,u.jsx)(`div`,{className:`mx-5 mt-4 rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:m}):null,(0,u.jsx)(`div`,{className:`flex-1 overflow-y-auto p-5`,children:(0,u.jsx)(`div`,{className:`flex flex-col gap-3`,children:e.settings?.render?e.settings.render({plugin:e,appId:r.appId,scope:i,value:o,defaults:r.defaults,effective:r.effective,onChange:s}):e.settings?.fields?.length?e.settings.fields.map(e=>(0,u.jsx)(Lo,{field:e,draft:o,setDraft:s},e.id)):(0,u.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-sm text-gray-500`,children:`This plugin has no configurable settings.`})})}),(0,u.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-gray-100 px-5 py-4`,children:[(0,u.jsx)(`button`,{type:`button`,className:`text-xs text-gray-400 hover:text-gray-600 transition-colors disabled:opacity-40`,disabled:c,onClick:v,children:`Reset to defaults`}),(0,u.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f?(0,u.jsx)(`span`,{className:`text-xs text-green-600`,children:`✓ Saved`}):null,(0,u.jsx)(`button`,{type:`button`,className:`rounded-lg bg-me-primary-500 px-4 py-2 text-sm font-medium text-white hover:bg-me-primary-600 disabled:opacity-50 transition-colors`,disabled:c,onClick:_,children:c?`Saving…`:`Save ${i}`})]})]})]})}function Lo({field:e,draft:t,setDraft:n}){let r=t[e.id],i=`plugin-setting-${e.id}`;function a(r){n({...t,[e.id]:r})}let o=(0,u.jsx)(`label`,{className:`text-sm font-medium text-gray-900`,htmlFor:i,children:e.label}),s=`rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`;return e.type===`boolean`?(0,u.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[(0,u.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[o,e.description?(0,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null]}),(0,u.jsx)(`input`,{id:i,type:`checkbox`,checked:r===!0,onChange:e=>a(e.currentTarget.checked),className:`h-4 w-4 rounded border-gray-300 text-me-primary-500 focus:ring-me-primary-500`})]}):e.type===`textarea`?(0,u.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,u.jsx)(`textarea`,{id:i,className:`${s} min-h-24 resize-y`,value:typeof r==`string`?r:``,placeholder:e.placeholder,onChange:e=>a(e.currentTarget.value)})]}):e.type===`select`?(0,u.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,u.jsxs)(`select`,{id:i,className:s,value:r===void 0?``:String(r),onChange:t=>{let n=e.options?.find(e=>String(e.value)===t.currentTarget.value);a(n?n.value:t.currentTarget.value)},children:[(0,u.jsx)(`option`,{value:``,children:`Default`}),(e.options||[]).map(e=>(0,u.jsx)(`option`,{value:String(e.value),children:e.label},String(e.value)))]})]}):(0,u.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,u.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,u.jsx)(`input`,{id:i,className:s,type:e.type===`number`?`number`:`text`,value:typeof r==`string`||typeof r==`number`?r:``,placeholder:e.placeholder,onChange:t=>{a(e.type===`number`?Number(t.currentTarget.value):t.currentTarget.value)}})]})}function Ro(){let e=Tr(),t=B(),n=F(),r=se(),[i,a]=Oo(2e3);function o(e){e.preventDefault();let t=new FormData(e.target);r({defaultPreview:t.get(`defaultPreview`),i18n:{...n.i18n||{},advancedLanguageMode:t.get(`advancedLanguageMode`)===`on`,availableLanguages:(t.get(`availableLanguages`)||``).split(`,`).map(e=>e.trim()),defaultLanguage:t.get(`defaultLanguage`)},export:{...n.export||{},version:t.get(`isVersion2`)===`on`?2:3,baseIdentifier:t.get(`base`)||null},plugins:n.plugins,editorFeatureFlags:{...n.editorFeatureFlags||{},rememberCanvasId:t.get(`rememberCanvasId`)===`on`,rememberLeftPanelId:t.get(`rememberLeftPanelId`)===`on`,annotationPopups:t.get(`annotationPopups`)===`on`,manifestGridOptions:t.get(`manifestGridOptions`)===`on`,enableMultiImageCanvases:t.get(`enableMultiImageCanvases`)===`on`,enableMultiMediaCanvases:t.get(`enableMultiMediaCanvases`)===`on`}}),a.set(),a.clear()}return(0,u.jsxs)(c.Sidebar,{children:[(0,u.jsx)(c.SidebarHeader,{title:`Workspace configuration`}),i?(0,u.jsx)(`div`,{className:`bg-me-primary-500 text-white p-3 text-sm`,children:`Changes saved`}):null,(0,u.jsx)(c.SidebarContent,{className:`p-4`,children:(0,u.jsxs)(c.Form.Form,{onSubmit:o,className:`flex flex-col gap-3`,children:[(0,u.jsxs)(c.Form.InputContainer,{children:[(0,u.jsx)(c.Form.Label,{htmlFor:`defaultLanguage`,children:`Default Language`}),(0,u.jsx)(c.Form.Input,{type:`text`,name:`defaultLanguage`,id:`defaultLanguage`,defaultValue:n.i18n?.defaultLanguage||``})]}),(0,u.jsxs)(c.Form.InputContainer,{children:[(0,u.jsx)(c.Form.Label,{htmlFor:`availableLanguages`,children:`Available Languages`}),(0,u.jsx)(c.Form.Input,{type:`text`,name:`availableLanguages`,id:`availableLanguages`,defaultValue:(n.i18n?.availableLanguages||[]).join(`, `)})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`advancedLanguageMode`,id:`advancedLanguageMode`,defaultChecked:n.i18n?.advancedLanguageMode||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`advancedLanguageMode`,children:`Advanced Language Mode`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`textGranularityEnabled`,id:`textGranularityEnabled`,defaultChecked:n.i18n?.textGranularityEnabled||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`textGranularityEnabled`,children:`Enable text granularity`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`rememberCanvasId`,id:`rememberCanvasId`,defaultChecked:n.editorFeatureFlags?.rememberCanvasId||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`rememberCanvasId`,children:`Remember Canvas ID`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`rememberLeftPanelId`,id:`rememberLeftPanelId`,defaultChecked:n.editorFeatureFlags?.rememberLeftPanelId||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`rememberLeftPanelId`,children:`Remember Left panel`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`manifestGridOptions`,id:`manifestGridOptions`,defaultChecked:n.editorFeatureFlags?.manifestGridOptions||!1}),(0,u.jsx)(c.Form.Label,{htmlFor:`manifestGridOptions`,children:`Manifest Grid Options`})]}),(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,u.jsx)(c.Form.Input,{type:`checkbox`,name:`isVersion2`,id:`isVersion2`,defaultChecked:n.export?.version===2}),(0,u.jsxs)(c.Form.Label,{htmlFor:`isVersion2`,children:[`Export Presentation 2 `,t.type,`s`]})]}),(0,u.jsxs)(c.Form.InputContainer,{children:[(0,u.jsx)(c.Form.Label,{htmlFor:`defaultPreview`,children:`Default preview`}),(0,u.jsx)(`div`,{children:e.configs.map((e,t)=>e.type===`iiif-preview-service`?null:(0,u.jsxs)(c.Form.InputContainer,{horizontal:!0,children:[(0,u.jsx)(c.Form.Input,{type:`radio`,id:e.id,name:`defaultPreview`,value:e.id,defaultChecked:n.defaultPreview?n.defaultPreview===e.id:t===0}),(0,u.jsx)(`label`,{htmlFor:e.id,children:e.label})]},e.id))})]}),t.type===`Manifest`?(0,u.jsx)(`a`,{className:`text-sm text-me-primary-500 hover:underline hover:text-me-primary-600`,href:window.location.pathname.includes(`/exhibition`)?window.location.pathname.replace(`/exhibition`,``)||`/`:`${window.location.pathname}/exhibition`,children:window.location.pathname.includes(`/exhibition`)?`Return to Manifest Editor`:`Go to Exhibition Editor`}):null,(0,u.jsx)(Fo,{}),(0,u.jsx)(`div`,{className:`mt-5`,children:(0,u.jsx)(c.ActionButton,{type:`submit`,children:`Save changes`})})]})})]})}function zo(){return(0,d.createStore)((e,t)=>({specificMenus:{},resourceMenus:{},hookMenuItem(t){let n=Bt(),r=t.resource?.id||``,i=t.resource?.type;return i?r?(e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:void 0}}}}))}):(e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:void 0}}}}))}):()=>{}}}))}const Bo=(0,l.createContext)(null);function Vo({children:e}){let t=(0,l.useMemo)(()=>zo(),[]);return(0,u.jsx)(Bo.Provider,{value:t,children:e})}function Ho(){let e=(0,l.useContext)(Bo);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function Uo(e){let t=Ho(),n=(0,d.useStore)(t,e=>e.resourceMenus),r=(0,d.useStore)(t,e=>e.specificMenus);return(0,l.useMemo)(()=>{let t=r[e.id||``]?.menus||{},i=n[e.type]?.menus||{},a=Object.values(t).flat(),o=[...Object.values(i).flat(),...a].filter(e=>e!==void 0),s=[],c=[];for(let e of o){let t=[];for(let n of e.items||[])n.id&&s.includes(n.id)||(s.push(n.id),t.push(n));t.length&&c.push({...e,items:t})}return Wo(c)},[r,n,e.id,e.type])}function Wo(e){let t={},n=[];e.forEach(e=>{if(!e)return;let r=e.sectionTitle;if(!r){n.push(...e.items||[]);return}t[r]||(t[r]=[]),t[r].push(...e.items)});let r=Object.entries(t).map(([e,t])=>({sectionTitle:e,items:t}));return n.length&&r.push({items:n}),r}function Go(e,t=[]){let n=(0,d.useStore)(Ho(),e=>e.hookMenuItem);(0,l.useEffect)(()=>n(e),[n,e.resource?.id,e.resource?.type,...t])}var Ko={};function qo(e){return(0,u.jsxs)(`div`,{className:Ko.CenterPanelContainer,children:[e.title||e.close?(0,u.jsxs)(`div`,{className:Ko.CenterPanelHeader,children:[e.title?(0,u.jsx)(`h2`,{className:Ko.CenterPanelTitle,children:e.title}):null,e.close?(0,u.jsx)(H,{className:Ko.CenterPanelClose,onClick:e.close,children:(0,u.jsx)(ar,{})}):null]}):null,e.children]})}const Jo=h.default.div`
|
|
444
|
+
`;function mo({panel:e,state:t,actions:n,isLeft:r,pinActions:i=n,transition:a,close:o,available:s=[],style:c,noHeader:l,isModal:f}){let p=(0,u.useContext)(m.ReactVaultContext)||null,[h,g]=(0,u.useState)(!1),_=Un(),v=pi(),{tabs:y,pinnable:b,hideHeader:x}=e?.options||{},S=(0,u.useMemo)(()=>(s||[]).filter(e=>!e.requiresState),[s]),{itemProps:w,isOpen:T,setIsOpen:E}=ir(S.length),[D,O]=(0,u.useState)(``),ee=(0,u.useRef)(void 0);(0,u.useEffect)(()=>g(!1),[_.state.canvasId,e?.id]),(0,u.useEffect)(()=>O(``),[e]),(0,u.useEffect)(()=>(ee.current=O,()=>{ee.current=void 0}),[]);let k=(0,u.useCallback)(e=>{ee.current&&ee.current(e)},[]),A=(0,u.useCallback)(r=>{let i=e?t.stack.length?n.popStack:e.backAction?()=>e&&e.backAction&&e.backAction(t,{...v,current:n},_):null:null;r&&(!i||r.metaKey)&&S.length?(r.preventDefault(),E(!0)):i?.()},[n,_,v,e,E,t,S.length]),j=r=>{n.change({id:r.id,state:r.defaultState,stacked:!!(t.stack.length||e?.backAction)})};if(!e||!t.current)return null;let M=e.backAction||t.stack.length?(0,d.jsx)(lo,{"aria-label":`Back`,onClick:A,children:(0,d.jsx)($a,{"aria-hidden":`true`})}):null,N=(0,d.jsx)(lo,{"aria-label":`Close panel`,onClick:o||n.close,children:(0,d.jsx)(tr,{"aria-hidden":`true`})});return(0,d.jsx)(ao.Provider,{value:k,children:(0,d.jsxs)(so,{"data-modal":f,"data-state":a,"data-flipped":r,style:c,"data-header":!l,children:[l?null:(0,d.jsxs)(co,{"data-tabs":!!y,"data-error":h,children:[(0,d.jsxs)(Ja,{style:{display:`flex`,height:`100%`},children:[e.renderBackAction?e.renderBackAction({backAction:A,fallback:M}):M,S.length?(0,d.jsxs)(Xa,{$open:T,role:`menu`,style:{left:`0.5em`},children:[(0,d.jsx)(Za,{children:`All panels`}),(0,d.jsx)(Qa,{}),S.map((t,n)=>(0,d.jsx)(Ya,{...w[n],onClick:()=>j(t),$active:e.id===t.id,children:t.label},n))]}):null]}),D?(0,d.jsx)(fo,{as:r?`h1`:`h2`,children:D}):x?(0,d.jsx)(uo,{}):(0,d.jsx)(fo,{as:r?`h1`:`h2`,children:e.label}),b?t.pinned?(0,d.jsx)(lo,{"aria-label":`Unpin panel`,onClick:i.unpin,children:(0,d.jsx)(eo,{"aria-hidden":`true`,fill:`orange`})}):(0,d.jsx)(lo,{"aria-label":`Pin panel`,onClick:()=>i.pin({id:e.id,state:t.state}),children:(0,d.jsx)(eo,{"aria-hidden":`true`,fill:`#ddd`})}):null,e.renderCloseAction?e.renderCloseAction({closeAction:o||n.close,fallback:N}):N]}),(0,d.jsx)(po,{className:`OverrideScrollbar`,children:(0,d.jsx)(C.ErrorBoundary,{onError:()=>g(!0),FallbackComponent:io,resetKeys:[_.state.canvasId,e?.id],onReset:()=>g(!1),children:ro(e.render(t.state||e.defaultState||{},{...v,current:n,vault:p,transition:a,isModal:f},_))})})]})})}function ho(e=`vault://homepage-collection.json`){let t=new x.Vault,n=window.localStorage.getItem(`preview-vault-collection`),r=!1;if(n)try{let i=JSON.parse(n);if(i.id&&i.id===e){t.dispatch((0,w.requestResource)({id:i.id}));let e=(0,T.actionListFromResource)(i.id,i);t.dispatch((0,w.batchActions)({actions:e})),r=!0}}catch{}if(!r){let n=(0,T.actionListFromResource)(e,{"@context":`http://iiif.io/api/presentation/3/context.json`,id:e,type:`Collection`,label:{en:[`Recent items`]},items:[]});t.dispatch((0,w.requestResource)({id:e})),t.dispatch((0,w.batchActions)({actions:n}))}return t.on(`after:@iiif/REMOVE_REFERENCE`,n=>{n.action.payload.id===e&&window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}),{vault:t,unsubscribe:()=>{},addHistory:(n,r)=>{let i=t.getState();if(n&&r&&(r===`Collection`||r===`Manifest`)){let a=i.iiif.entities.Collection[e];if(a){let i=a.items.findIndex(e=>e.id===n);i===-1?t.dispatch((0,w.addReference)({id:e,type:`Collection`,reference:{id:n,type:r},key:`items`,index:0})):t.dispatch((0,w.reorderEntityField)({id:e,type:`Collection`,key:`items`,startIndex:i,endIndex:0})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}},clearHistory:()=>{t.dispatch((0,w.modifyEntityField)({id:e,type:`Collection`,key:`items`,value:[]})),window.localStorage.setItem(`preview-vault-collection`,JSON.stringify(t.toPresentation3({id:e,type:`Collection`})))}}}function go(){return(0,u.useContext)(_o)}const _o=(0,u.createContext)(new x.Vault),vo=(0,u.createContext)({addHistory:(e,t)=>{},clearHistory:()=>{}}),yo=`manifest-editor://homepage-collection.json`;function bo(){return(0,u.useContext)(vo)}function xo(e){let{vault:t,unsubscribe:n,addHistory:r,clearHistory:i}=(0,u.useMemo)(()=>ho(yo),[]);return(0,u.useEffect)(()=>n,[]),(0,d.jsx)(vo.Provider,{value:{addHistory:r,clearHistory:i},children:(0,d.jsx)(_o.Provider,{value:t,children:e.children})})}function So({children:e}){let t=go();return(0,d.jsx)(m.VaultProvider,{vault:t,children:e})}function Co(e,t,n,r,i){let a=(0,m.useVault)(),o=U(),{create:s,edit:c}=ui(),l=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)({type:n,parent:e,index:0,property:t},o.layout.creators||[],{vault:a}),[e,t,o.layout.creators,n,a]),d=e&&l.length!==0,f=(0,u.useCallback)((a,o)=>{if(e)return s({type:n,parent:(0,h.toRef)(e),property:t,index:a,target:r,initialData:o,...i||{}})},[s,e,t,n,i,r]),p=(0,u.useCallback)((a,o,c)=>{if(e)return s({type:n,filter:a,parent:(0,h.toRef)(e),property:t,index:o,target:r,initialData:c,...i||{}})},[s,e,t,n,i,r]);return[d,{create:f,edit:(0,u.useCallback)((n,r)=>{c(n,e?{parent:(0,h.toRef)(e),property:t,index:r}:void 0)},[c,e,t]),createFiltered:p,creator:(0,u.useCallback)((a,o)=>{if(e)return s({type:n,initialCreator:a,parent:(0,h.toRef)(e),property:t,target:r,initialData:o,...i||{}})},[n,t,e,r,s,i]),buttonProps:(0,u.useMemo)(()=>({"data-action-id":Pt(n,t,e)}),[n,t,e])}]}function wo(){let e=(0,m.useVault)(),t=go(),n=U(),r=z();return(0,u.useMemo)(()=>new S.Creator(e,n.layout.creators||[],t,r.creators),[n.layout.creators,r.creators,t,e])}async function To(e){let t=await e.create(),n=Array.isArray(t)?t[0]:t;return n?(e.onCreate?.(),e.close?.(),e.edit?.(n),!0):!1}const Eo=(0,u.createContext)({});function Do(e){return(0,u.useContext)(Eo)[e]||{}}function Oo(e){let t=(0,u.useContext)(Eo),n=(0,u.useMemo)(()=>({...t,[e.id]:e.data}),[t,e.id,e.data]);return(0,d.jsx)(Eo.Provider,{value:n,children:e.children})}const ko=(0,u.memo)(function(e){let t=(0,m.useVault)(),{edit:n,modal:r}=ui(),[i,a]=(0,u.useState)(!1),[o,s]=(0,u.useState)(null),c=wo(),f=z(),p=(0,u.useRef)(!1),g=e.resource.initialData?.selector;Ka(g);let _=Do(e.creator.id),v={targetType:e.resource.type,parent:e.resource.parent?{property:e.resource.property,atIndex:e.resource.index,resource:e.resource.parent}:void 0,target:e.resource.target,initialData:{..._,...e.resource.initialData||{},...e.initialData||{}}},y=async t=>{if(!(i||p.current)){a(!0),p.current=!0;try{await To({create:()=>c.create(e.creator.id,t,v),onCreate:e.onCreate,close:e.skipEditingOnCreate?void 0:()=>{r.popStack(),r.close()},edit:e.skipEditingOnCreate||e.resource.initialData?.skipEditingOnCreate?void 0:t=>n(t,{parent:(0,h.toRef)(e.resource.parent),property:e.resource.property,index:e.resource.index})})}catch(e){s(e?.message||`Unknown error`)}finally{a(!1),p.current=!1}}},b=async()=>!0;if((0,u.useEffect)(()=>{e.resource.initialData?.showEmptyForm||!e.creator.render&&!i&&y({})},[e.creator]),o)return(0,d.jsx)(`div`,{className:`flex flex-col items-center p-4`,children:(0,d.jsx)(l.ErrorMessage,{children:o})});let x=(0,d.jsx)(`div`,{className:`flex flex-col items-center py-8`,children:(0,d.jsxs)(`div`,{className:`flex gap-2 items-center`,children:[(0,d.jsx)(l.Spinner,{}),` `,(0,d.jsx)(`span`,{children:`Loading`})]})});return i?x:e.creator.render?(0,d.jsx)(d.Fragment,{children:(0,d.jsx)(u.Suspense,{fallback:x,children:e.creator.render({vault:t,runCreate:y,validate:b,options:v,config:f.creators?.[(0,S.getCreatorConfigKey)(e.creator)]||{}})})}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(l.EmptyState,{children:`No options available`}),(0,d.jsx)(l.ActionButton,{primary:!0,onPress:()=>y({}),children:e.creator.actionButton||`Create`})]})});function Ao(e){let t=U(),n=(0,m.useVault)(),[r,i]=(0,u.useState)(e.resource.initialCreator||``),[a,o]=(0,u.useState)(),[s,c]=(0,u.useState)(``),[f,p]=(0,u.useState)(!1),[h,g]=(0,u.useState)(``),[_,v]=(0,u.useState)(null),y=(0,u.useRef)(null),b=oo(),x=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,t.layout.creators||[],{vault:n}),[e.resource,t.layout.creators,n]),C=x.some(e=>e.supportsResource);(0,u.useEffect)(()=>{x.length===1&&!r&&!C&&i(x[0].id)},[C,r,x]),(0,u.useEffect)(()=>{C&&!r&&y.current?.focus()},[C,r]);let w=x.find(e=>e.id===r);if((0,u.useEffect)(()=>{w&&b?.(w.label)}),x.length===0)return(0,d.jsx)(l.EmptyState,{children:`Not currently supported`});let T=(e,t)=>{o(t||Po(s)),i(e.id)},E=async t=>{t.preventDefault();let r=s.trim();if(!r||f)return;p(!0),g(``),v(null);let i=Fo(),a=await Promise.all(x.map(async t=>{if(!t.supportsResource)return null;try{let a=await t.supportsResource(r,i,{vault:n,resource:e.resource});return a?{creator:t,initialData:No(r,a).initialData}:null}catch(e){return{creator:t,error:e?.message||`Could not check this link`}}})),o=a.filter(jo),c=a.filter(Mo);if(p(!1),o.length===1){T(o[0].creator,o[0].initialData);return}if(o.length>1){v(o),g(`Multiple creators can use this link. Choose one below.`);return}g(c[0]?.error||`No creator recognised this link. Choose one below.`)},D=(0,d.jsx)(l.ModalBackSlot,{children:(0,d.jsx)(l.IconButton,{root:document.getElementById(`headlessui-portal-root`)||void 0,label:`Back to Add content options`,className:`group`,placement:`right`,onPress:()=>{i(``),o(void 0)},children:(0,d.jsx)(l.GridIcon,{className:`text-2xl opacity-50 group-hover:opacity-70`})})});if(w)return w.hiddenModal?(0,d.jsxs)(d.Fragment,{children:[D,(0,d.jsx)(ko,{creator:w,resource:e.resource,initialData:a})]}):(0,d.jsxs)(`div`,{children:[D,(0,d.jsx)(`div`,{className:`p-2 py-6`,children:(0,d.jsx)(ko,{creator:w,resource:e.resource,initialData:a})})]});let O=_?.length?_.map(e=>e.creator):x,ee=new Map(_?.map(e=>[e.creator.id,e.initialData]));return(0,d.jsxs)(d.Fragment,{children:[C?(0,d.jsxs)(`form`,{className:`p-4 pb-0`,onSubmit:E,children:[(0,d.jsx)(`label`,{className:`block text-sm font-medium text-gray-700`,htmlFor:`creator-resource-link`,children:`Paste a link`}),(0,d.jsxs)(`div`,{className:`mt-1 flex gap-2`,children:[(0,d.jsx)(`input`,{ref:y,id:`creator-resource-link`,className:`min-w-0 flex-1 rounded border border-gray-300 px-3 py-2 text-sm`,value:s,onChange:e=>{c(e.currentTarget.value),g(``),v(null)},placeholder:`https://example.org/resource`,type:`url`}),(0,d.jsx)(l.ActionButton,{primary:!0,type:`submit`,isDisabled:!s.trim()||f,children:f?`Checking`:`Use link`})]}),h?(0,d.jsx)(`div`,{className:`mt-2 text-sm text-gray-600`,role:`status`,children:h}):null]}):null,(0,d.jsx)(l.CreatorGrid,{label:`Select a type`,items:O.map(e=>({id:e.id,title:e.label,description:e.summary||``,icon:e.icon,onClick:()=>T(e,ee.get(e.id))}))})]})}function jo(e){return!!e&&!(`error`in e)}function Mo(e){return!!e&&`error`in e}function No(e,t){return typeof t==`object`?t:{initialData:Po(e)}}function Po(e){let t=e.trim();return t?{url:t,youtubeUrl:t}:void 0}function Fo(){let e=new Map,t=new Map,n=new Map,r=t=>(e.has(t)||e.set(t,fetch(t).then(e=>{if(!e.ok)throw Error(`Could not load ${t}`);return e.text()})),e.get(t)),i=e=>(n.has(e)||n.set(e,fetch(e,{method:`HEAD`}).then(t=>{if(!t.ok)throw Error(`Could not check ${e}`);return t})),n.get(e));return{text:r,head:i,json(e){return t.has(e)||t.set(e,r(e).then(e=>JSON.parse(e))),t.get(e)},async contentType(e){return(await i(e)).headers.get(`content-type`)||``}}}const Io={id:`@manifest-editor/creator`,label:`Add content`,options:{hideHeader:!0,tabs:!1},render(e){return(0,d.jsx)(Ao,{resource:e})}},Lo={color:{main:`#B84C74`,mainHover:`#4a89ff`,logoPink:`#E94581`,white:`white`,grey:`grey`,black:`black`,lightgrey:`#F8F9FA`,mediumgrey:`#dddddd`,danger:`#a90e21`,warning:`#e38627`,lightdanger:`#ffeaea`,lightsuccess:`#c5e8c5`,success:`#6ccd55`,greyOverlay:`rgba(0, 0, 0, 0.2)`,highlight:`#faeed7`},iiifColor:{manifest:`rgba(0, 0, 0, 0.2)`,canvas:`rgba(255, 222, 219, 0.8)`,service:`rgba(13, 110, 253, 0.8)`,annotation:`rgba(247, 226, 173, 0.8)`,contentResource:`rgba(207, 247, 255, 0.8)`,ranges:`rgba(144, 213, 157, 0.8)`},padding:{xs:`0.25rem`,small:`0.5rem`,medium:`1rem`,large:`2rem`},device:{mobile:`375px`,tablet:`768px`,laptop:`992px`,desktop:`1200px`},shadows:{standard:`rgba(0, 0, 0, 0.1) 0px 1px 3px 0px, rgba(0, 0, 0, 0.05) 0px 5px 15px 0px`,bottom:`rgba(0, 0, 0, 0.1) 0px 4px 2px -2px`}};function Ro(e){let{}=e,t=(0,m.useVault)(),n=U(),r=(0,u.useMemo)(()=>(0,S.matchBasedOnResource)(e.resource,n.layout.creators||[],{vault:t}),[e.resource,n.layout.creators,t]);return r.length===0?(0,d.jsx)(`div`,{children:`No supported creators found`}):(0,d.jsx)(`div`,{children:(0,d.jsxs)(l.Tabs,{className:`w-full flex-1 overflow-hidden flex flex-col`,children:[(0,d.jsx)(l.TabList,{className:`flex-1 overflow-hidden w-full flex text-sm whitespace-nowrap`,items:r,children:e=>(0,d.jsx)(l.Tab,{id:e.id,children:e.label})}),r.map(t=>(0,d.jsx)(l.TabPanel,{id:t.id,className:`p-2`,children:(0,d.jsx)(g.ThemeProvider,{theme:Lo,children:(0,d.jsx)(ko,{creator:t,resource:e.resource,onCreate:e.onCreate,skipEditingOnCreate:!0})})},t.id))]})})}function zo({fallback:e,backAction:t}){let n=Xr(),{back:r}=Jr();return n.length?(0,d.jsx)(lo,{"aria-label":`Back`,onClick:r,children:(0,d.jsx)($a,{"aria-hidden":`true`})}):e}function Bo({closeAction:e,fallback:t}){let n=Xr();return Yr()||n.length?(0,d.jsx)(lo,{"aria-label":`Close panel`,onClick:()=>{e()},children:(0,d.jsx)(tr,{"aria-hidden":`true`})}):t}function Vo(e,t,n,r){let i=t.filter(t=>t.resourceType===e.resource.source.type);if(i.length===0)return null;for(let t of i){let i=[],a={},o=e.property===`partOf`,s=(t.editors||[]).filter(t=>{if(o&&t.id!==`@manifest-editor/part-of-reference`||r.hideTabs&&r.hideTabs.includes(t.id)||r.onlyTabs&&!r.onlyTabs.includes(t.id))return!1;if(t.supports.sortKey){if(i.includes(t.supports.sortKey))return!1;t.supports.sortFallback&&(a[t.supports.sortKey]=t)}return n.edit&&!t.supports.edit||t.supports.custom&&t.supports.custom(e,n.vault)===!1?!1:(t.supports.sortKey&&i.push(t.supports.sortKey),!0)}),c=Object.keys(a);for(let e of c)!i.includes(e)&&a[e]&&!s.includes(a[e])&&s.push(a[e]);if(s.length)return{...t,editors:s}}return null}function Ho({currentTab:e=void 0}){let t=Yr(),n=(0,u.useContext)(m.ResourceReactContext),r=U(),i=W(),a=(0,m.useVault)(),{change:o}=ui(),s=oo(),{editorConfig:c}=z(),f=t?.resource.source?.id,p=t?.resource.source?.type,h=f!==i.id;f&&h&&i.type===`Collection`&&p===`Collection`&&(p=`EmbeddedCollection`);let g=(p?c[p]:c.All)||{},_=(0,u.useMemo)(()=>{let e={...n},r=t?.resource.source.id,i=t?.resource.source.type,a={Collection:`collection`,Manifest:`manifest`,Range:`range`,Canvas:`canvas`,Annotation:`annotation`,AnnotationPage:`annotationPage`};return i&&a[i]&&(e[a[i]]=r),e},[t,n]);function v(e){return t?(0,d.jsx)(m.ResourceReactContext.Provider,{value:_,children:e}):e}let y=(0,u.useMemo)(()=>{if(!t)return null;let e=r.layout.editors||[],n=(r.layout.resources||[]).map(t=>typeof t==`string`?{id:`@default/`+t,label:t,resourceType:t,auto:!0,editors:e.filter(e=>e.supports.resourceTypes.includes(t))}:t);return Vo(t,n,{edit:!0,vault:a},g)},[t,r]);(0,u.useEffect)(()=>{s(y?.label||``)},[y]),(0,u.useEffect)(()=>{let t=y?.editors.map(e=>e.id)||[];t.find(t=>t===e)||o(`@manifest-editor/editor`,{currentTab:t[0]})},[y?.editors,e,o]);let b=(0,u.useMemo)(()=>(y?.editors||[]).map(e=>({id:e.id,label:e.label,renderComponent:()=>e.component(g)})),[y?.editors,g]);if(!t||!y)return null;if(g.singleTab){let e=(y?.editors||[]).find(e=>e.id===g.singleTab);if(e)return v((0,d.jsx)(`div`,{className:`w-full`,children:e.component(g)},t.resource.source?.id))}return v((0,d.jsx)(l.SidebarTabs,{isNested:h,rootResource:i,menuId:t.resource.source.id,menu:b,selectedKey:e,onSelectionChange:e=>{o(`@manifest-editor/editor`,{currentTab:e})}},t.resource.source?.id))}const Uo={id:`@manifest-editor/editor`,label:`Editor`,options:{hideHeader:!0,tabs:!0,minWidth:400},renderBackAction:({backAction:e,fallback:t})=>(0,d.jsx)(zo,{backAction:e,fallback:t}),renderCloseAction:({closeAction:e,fallback:t})=>(0,d.jsx)(Bo,{closeAction:e,fallback:t}),render({currentTab:e}){return(0,d.jsx)(Ho,{currentTab:e})}};function Wo(e){let[t,n]=(0,u.useState)(!1),r=(0,u.useRef)(null),i=(0,u.useRef)(0);function a(t){i.current--,!(t&&i.current!==0)&&(r.current&&(clearTimeout(r.current),r.current=0),r.current=setTimeout(()=>{n(!1)},e))}function o(){i.current++,r.current&&clearTimeout(r.current),n(!0)}return(0,u.useMemo)(()=>[t,{set:o,clear:a}],[t])}function Go(e){return e?typeof e==`string`?{src:e,alt:``}:e:null}function Ko(e){return e?typeof e==`string`?e:e.name:null}function qo(e){let t=e.extension,n=t.leftPanels?.[0]||t.centerPanels?.[0]||t.rightPanels?.[0]||t.modalPanels?.[0];return n?{id:n.id,label:n.label||`Open plugin`,modal:t.modalPanels?.some(e=>e.id===n.id)||!1}:null}function Jo(e){return e instanceof Error?e.message:`Plugin configuration could not be saved.`}function Yo(e){return(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,d.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`}),(0,d.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`})]})}function Xo(e){return(0,d.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,...e,children:[(0,d.jsx)(`path`,{d:`M7 7h10v10`}),(0,d.jsx)(`path`,{d:`M7 17 17 7`})]})}function Zo(){let e=U(),{appId:t}=Hn(),n=z(),r=ie(),i=An(),a=Mn(),o=ui(),{saveGlobalPluginConfig:s}=(0,u.useContext)(Tn),[c,f]=(0,u.useState)(!1),[p,m]=(0,u.useState)(``),[h,g]=(0,u.useState)(null),[_,v]=(0,u.useState)(null),[y,b]=(0,u.useState)(null),x=(0,u.useMemo)(()=>new Set(un(i,e,t).map(e=>e.metadata.id)),[i,e,t]),S=(0,u.useMemo)(()=>{let n=p.trim().toLowerCase();return i.plugins.filter(r=>{let i=on(r,e,t);return!c&&!i?!1:!n||[r.metadata.label,r.metadata.id,r.metadata.description,Ko(r.metadata.author),...r.metadata.tags||[]].filter(Boolean).join(` `).toLowerCase().includes(n)})},[e,t,i.plugins,p,c]),C=h&&i.plugins.find(e=>e.metadata.id===h)||null;if(!i.plugins.length)return null;function w(e){a.setAppConfig(t,e),r({plugins:{...n.plugins||{},apps:{...n.plugins?.apps||{},[t]:e}}})}async function T(e){if(!s){b(`Global plugin settings are not available in this host.`);return}let n=i.globalApps[t]||{},r={apps:{...i.globalApps,[t]:e}};a.setGlobalAppConfig(t,e);try{await s(r)}catch(e){a.setGlobalAppConfig(t,n),b(Jo(e))}}async function E(n,r,a){b(null),v(`${a}:${n.metadata.id}`);let o=a===`global`?i.globalApps[t]||{}:i.apps[t]||{},s=r?_n(o,i,n,e,t):{config:Yt(o,n.metadata.id),blocked:[]};if(s.blocked.length){v(null),b(`Cannot enable ${n.metadata.label}: ${s.blocked.join(`, `)}.`);return}a===`global`?await T(s.config):w(s.config),v(null)}function D(e){let t=qo(e);if(t){if(t.modal){o.modal.open({id:t.id});return}o.open(t.id)}}return(0,d.jsxs)(`section`,{className:`flex flex-col gap-3 border-t border-gray-200 pt-4 mt-4`,children:[(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,d.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,d.jsx)(`h3`,{className:`font-semibold text-sm text-gray-900`,children:`Plugins`})}),(0,d.jsx)(`button`,{type:`button`,className:`rounded border border-gray-200 bg-white px-2 py-1 text-xs text-gray-500 hover:text-gray-700 hover:border-gray-300 transition-colors`,onClick:()=>f(e=>!e),children:c?`Compatible only`:`Show all`})]}),(0,d.jsx)(`input`,{"aria-label":`Search plugins`,className:`rounded border border-gray-200 px-2.5 py-1.5 text-xs focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`,type:`search`,placeholder:`Search plugins…`,value:p,onChange:e=>m(e.currentTarget.value)}),y?(0,d.jsx)(`div`,{className:`rounded border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:y}):null,(0,d.jsx)(`div`,{className:`flex flex-col gap-2`,children:S.map(n=>{let r=cn(n,i,t),a=x.has(n.metadata.id),o=r&&n.loadStatus===`loading`,s=r&&n.loadStatus===`error`?n.loadError:null,c=Go(n.metadata.image),u=r&&!a&&!o&&!s,f=on(n,e,t),p=sn(n,e,t),m=qo(n),h=!!n.settings,v=_===`workspace:${n.metadata.id}`;return(0,d.jsxs)(`article`,{className:`flex gap-2.5 rounded-lg border bg-white p-3 text-sm transition-colors ${a?`border-gray-200`:`border-gray-100 bg-gray-50`} ${f?``:`bg-gray-100`}`,children:[c?(0,d.jsx)(`img`,{className:`h-9 w-9 rounded object-cover flex-none mt-0.5`,src:c.src,alt:c.alt||n.metadata.label}):(0,d.jsx)(`div`,{className:`h-9 w-9 rounded flex items-center justify-center flex-none mt-0.5 text-lg ${a?`bg-me-primary-50 text-me-primary-500`:`bg-gray-100 text-gray-600`}`,children:(0,d.jsx)(Yo,{className:`w-4 h-4`})}),(0,d.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-1`,children:[(0,d.jsxs)(`div`,{className:`flex items-start justify-between gap-1`,children:[(0,d.jsxs)(`div`,{className:`flex flex-wrap items-center gap-1.5 min-w-0`,children:[(0,d.jsx)(`span`,{className:`font-medium text-gray-900 text-xs`,children:n.metadata.label}),n.metadata.official?(0,d.jsxs)(`span`,{className:`rounded-full text-me-primary-500 px-1.5 py-0 text-[9px] font-bold inline-flex items-center gap-1`,children:[(0,d.jsx)(l.CheckIcon,{className:`w-3 h-3`}),` Verified`]}):null,n.metadata.version?(0,d.jsx)(`span`,{className:`text-[10px] text-gray-600`,children:n.metadata.version}):null]}),(0,d.jsxs)(`div`,{className:`flex items-center gap-1 flex-none`,children:[h?(0,d.jsx)(`button`,{type:`button`,title:`Configure plugin`,"aria-label":`Configure ${n.metadata.label}`,className:`rounded p-1 text-gray-600 hover:text-gray-700 hover:bg-gray-100 transition-colors`,onClick:()=>g(n.metadata.id),children:(0,d.jsx)(Yo,{className:`w-3.5 h-3.5`})}):null,a&&m?(0,d.jsx)(`button`,{type:`button`,title:`Open ${m.label}`,"aria-label":`Open ${m.label}`,className:`rounded p-1 text-me-primary-500 hover:bg-me-primary-50 transition-colors`,onClick:()=>D(n),children:(0,d.jsx)(Xo,{className:`w-3.5 h-3.5`})}):null,(0,d.jsx)(`button`,{type:`button`,disabled:!f||v,onClick:()=>E(n,!r,`workspace`),className:`relative inline-flex h-5 w-9 flex-none items-center rounded-full transition-colors disabled:opacity-40 focus:outline-none focus:ring-2 focus:ring-me-primary-500/30 ${r?`bg-me-primary-500`:`bg-gray-200`}`,title:r?`Disable plugin`:`Enable plugin`,"aria-label":`${r?`Disable`:`Enable`} ${n.metadata.label}`,children:(0,d.jsx)(`span`,{className:`inline-block h-3.5 w-3.5 transform rounded-full bg-white shadow transition-transform ${r?`translate-x-4`:`translate-x-0.5`}`})})]})]}),n.metadata.description?(0,d.jsx)(`p`,{className:`text-xs text-gray-500 leading-relaxed`,children:n.metadata.description}):null,o?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:`Loading plugin…`}):null,s?(0,d.jsx)(`span`,{className:`text-xs text-red-600`,children:s}):null,u?(0,d.jsx)(`span`,{className:`text-xs text-amber-600`,children:`Waiting for required dependencies`}):null,!f&&p?(0,d.jsx)(`span`,{className:`text-xs text-gray-600`,children:p}):null]})]},n.metadata.id)})}),S.length?null:(0,d.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-xs text-gray-500`,children:`No plugins found.`}),C?(0,d.jsx)(l.Modal,{title:`Configure ${C.metadata.label}`,onClose:()=>g(null),width:`560px`,children:(0,d.jsx)(Qo,{plugin:C,onClose:()=>g(null),canSaveGlobal:!!s})}):null]})}function Qo({plugin:e,onClose:t,canSaveGlobal:n}){let r=Fn(e.metadata.id),[i,a]=(0,u.useState)(`workspace`),[o,s]=(0,u.useState)({}),[c,l]=(0,u.useState)(!1),[f,p]=(0,u.useState)(!1),[m,h]=(0,u.useState)(null),g=i===`global`?r.global:r.workspace;(0,u.useEffect)(()=>{s({...g}),h(null),p(!1)},[e.metadata.id,i]);async function _(){let t=e.settings?.validate?.(o);if(t){h(t);return}l(!0),h(null);try{i===`global`?await r.setGlobalSettings(o):r.setWorkspaceSettings(o),p(!0),setTimeout(()=>p(!1),2e3)}catch(e){h(Jo(e))}finally{l(!1)}}async function v(){l(!0),h(null);try{i===`global`?await r.resetGlobalSettings():r.resetWorkspaceSettings(),s({})}catch(e){h(Jo(e))}finally{l(!1)}}let y=n&&r.canSaveGlobal;return(0,d.jsxs)(`div`,{className:`flex flex-col flex-1 min-h-0`,children:[y?(0,d.jsxs)(`div`,{className:`flex items-center gap-1 px-5 pt-4 pb-3 border-b border-gray-100`,children:[(0,d.jsx)(`span`,{className:`text-xs text-gray-500 mr-2`,children:`Scope:`}),(0,d.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`workspace`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`workspace`),children:`This workspace`}),(0,d.jsx)(`button`,{type:`button`,className:`rounded-full px-3 py-1 text-xs font-medium transition-colors ${i===`global`?`bg-me-primary-500 text-white`:`bg-gray-100 text-gray-600 hover:bg-gray-200`}`,onClick:()=>a(`global`),children:`All workspaces`})]}):null,m?(0,d.jsx)(`div`,{className:`mx-5 mt-4 rounded-lg border border-red-200 bg-red-50 px-3 py-2 text-xs text-red-700`,children:m}):null,(0,d.jsx)(`div`,{className:`flex-1 overflow-y-auto p-5`,children:(0,d.jsx)(`div`,{className:`flex flex-col gap-3`,children:e.settings?.render?e.settings.render({plugin:e,appId:r.appId,scope:i,value:o,defaults:r.defaults,effective:r.effective,onChange:s}):e.settings?.fields?.length?e.settings.fields.map(e=>(0,d.jsx)($o,{field:e,draft:o,setDraft:s},e.id)):(0,d.jsx)(`div`,{className:`rounded-lg border border-gray-100 bg-gray-50 p-4 text-center text-sm text-gray-500`,children:`This plugin has no configurable settings.`})})}),(0,d.jsxs)(`div`,{className:`flex items-center justify-between gap-3 border-t border-gray-100 px-5 py-4`,children:[(0,d.jsx)(`button`,{type:`button`,className:`text-xs text-gray-600 hover:text-gray-700 transition-colors disabled:opacity-40`,disabled:c,onClick:v,children:`Reset to defaults`}),(0,d.jsxs)(`div`,{className:`flex items-center gap-2`,children:[f?(0,d.jsx)(`span`,{className:`text-xs text-green-600`,children:`✓ Saved`}):null,(0,d.jsx)(`button`,{type:`button`,className:`rounded-lg bg-me-primary-500 px-4 py-2 text-sm font-medium text-white hover:bg-me-primary-600 disabled:opacity-50 transition-colors`,disabled:c,onClick:_,children:c?`Saving…`:`Save ${i}`})]})]})]})}function $o({field:e,draft:t,setDraft:n}){let r=t[e.id],i=`plugin-setting-${e.id}`;function a(r){n({...t,[e.id]:r})}let o=(0,d.jsx)(`label`,{className:`text-sm font-medium text-gray-900`,htmlFor:i,children:e.label}),s=`rounded-lg border border-gray-200 bg-white px-3 py-2 text-sm focus:border-me-primary-500 focus:ring-2 focus:ring-me-primary-500/20 focus:outline-none`;return e.type===`boolean`?(0,d.jsxs)(`div`,{className:`flex items-center justify-between rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-0.5`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null]}),(0,d.jsx)(`input`,{id:i,type:`checkbox`,checked:r===!0,onChange:e=>a(e.currentTarget.checked),className:`h-4 w-4 rounded border-gray-300 text-me-primary-500 focus:ring-me-primary-500`})]}):e.type===`textarea`?(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsx)(`textarea`,{id:i,className:`${s} min-h-24 resize-y`,value:typeof r==`string`?r:``,placeholder:e.placeholder,onChange:e=>a(e.currentTarget.value)})]}):e.type===`select`?(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsxs)(`select`,{id:i,className:s,value:r===void 0?``:String(r),onChange:t=>{let n=e.options?.find(e=>String(e.value)===t.currentTarget.value);a(n?n.value:t.currentTarget.value)},children:[(0,d.jsx)(`option`,{value:``,children:`Default`}),(e.options||[]).map(e=>(0,d.jsx)(`option`,{value:String(e.value),children:e.label},String(e.value)))]})]}):(0,d.jsxs)(`div`,{className:`flex flex-col gap-2 rounded-lg border border-gray-100 bg-white px-4 py-3`,children:[o,e.description?(0,d.jsx)(`span`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,d.jsx)(`input`,{id:i,className:s,type:e.type===`number`?`number`:`text`,value:typeof r==`string`||typeof r==`number`?r:``,placeholder:e.placeholder,onChange:t=>{a(e.type===`number`?Number(t.currentTarget.value):t.currentTarget.value)}})]})}function es(){let e=z(),t=ie(),n=e.creators[`iiif-image-services`]||{};return(0,d.jsxs)(l.Form.Form,{className:`flex max-w-3xl flex-col gap-4`,onChange:e=>{let n=new FormData(e.currentTarget);t({creators:{"iiif-image-services":{compact:n.get(`compact`)===`compact`?`compact`:`with-dimensions`,includeSizes:n.get(`includeSizes`)===`on`,includeTiles:n.get(`includeTiles`)===`on`}}})},onSubmit:e=>e.preventDefault(),children:[(0,d.jsx)(`h2`,{className:`text-xl font-semibold text-gray-900`,children:`IIIF Options`}),(0,d.jsxs)(`fieldset`,{className:`flex flex-col gap-4`,children:[(0,d.jsx)(`legend`,{className:`mb-3 text-base font-semibold`,children:`Image services`}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`compactImageServices`,children:`Compact services`}),(0,d.jsxs)(`select`,{id:`compactImageServices`,name:`compact`,className:`rounded border border-gray-300 p-2`,defaultValue:n.compact===`compact`?`compact`:`with-dimensions`,children:[(0,d.jsx)(`option`,{value:`with-dimensions`,children:`id, type, profile, width, height (default)`}),(0,d.jsx)(`option`,{value:`compact`,children:`id, type, profile (compact)`})]})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{id:`includeSizes`,name:`includeSizes`,type:`checkbox`,defaultChecked:n.includeSizes===!0}),(0,d.jsx)(l.Form.Label,{htmlFor:`includeSizes`,children:`Include sizes`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{id:`includeTiles`,name:`includeTiles`,type:`checkbox`,defaultChecked:n.includeTiles===!0}),(0,d.jsx)(l.Form.Label,{htmlFor:`includeTiles`,children:`Include tiles`})]}),(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:`Applies to newly added images. Thumbnails always include available sizes and tiles.`})]})]})}function ts(){let e=Cr(),t=W(),n=z(),r=ie(),[i,a]=Wo(2e3);function o(e){e.preventDefault();let t=new FormData(e.target),i={defaultPreview:t.get(`defaultPreview`),i18n:{...n.i18n||{},advancedLanguageMode:t.get(`advancedLanguageMode`)===`on`,availableLanguages:(t.get(`availableLanguages`)||``).split(`,`).map(e=>e.trim()),defaultLanguage:t.get(`defaultLanguage`)},export:{...n.export||{},version:t.get(`isVersion2`)===`on`?2:3,baseIdentifier:t.get(`base`)||null},plugins:n.plugins,editorFeatureFlags:{...n.editorFeatureFlags||{},rememberCanvasId:t.get(`rememberCanvasId`)===`on`,rememberLeftPanelId:t.get(`rememberLeftPanelId`)===`on`,annotationPopups:t.get(`annotationPopups`)===`on`,manifestGridOptions:t.get(`manifestGridOptions`)===`on`,enableMultiImageCanvases:t.get(`enableMultiImageCanvases`)===`on`,enableMultiMediaCanvases:t.get(`enableMultiMediaCanvases`)===`on`}};r(i),a.set(),a.clear()}return(0,d.jsxs)(l.Sidebar,{children:[(0,d.jsx)(l.SidebarHeader,{title:`Workspace configuration`}),i?(0,d.jsx)(`div`,{className:`bg-me-primary-500 text-white p-3 text-sm`,children:`Changes saved`}):null,(0,d.jsxs)(l.SidebarContent,{className:`p-4`,children:[(0,d.jsx)(es,{}),(0,d.jsxs)(l.Form.Form,{onSubmit:o,className:`flex flex-col gap-3`,children:[(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`defaultLanguage`,children:`Default Language`}),(0,d.jsx)(l.Form.Input,{type:`text`,name:`defaultLanguage`,id:`defaultLanguage`,defaultValue:n.i18n?.defaultLanguage||``})]}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`availableLanguages`,children:`Available Languages`}),(0,d.jsx)(l.Form.Input,{type:`text`,name:`availableLanguages`,id:`availableLanguages`,defaultValue:(n.i18n?.availableLanguages||[]).join(`, `)})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`advancedLanguageMode`,id:`advancedLanguageMode`,defaultChecked:n.i18n?.advancedLanguageMode||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`advancedLanguageMode`,children:`Advanced Language Mode`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`textGranularityEnabled`,id:`textGranularityEnabled`,defaultChecked:n.i18n?.textGranularityEnabled||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`textGranularityEnabled`,children:`Enable text granularity`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`rememberCanvasId`,id:`rememberCanvasId`,defaultChecked:n.editorFeatureFlags?.rememberCanvasId||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`rememberCanvasId`,children:`Remember Canvas ID`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`rememberLeftPanelId`,id:`rememberLeftPanelId`,defaultChecked:n.editorFeatureFlags?.rememberLeftPanelId||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`rememberLeftPanelId`,children:`Remember Left panel`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`manifestGridOptions`,id:`manifestGridOptions`,defaultChecked:n.editorFeatureFlags?.manifestGridOptions||!1}),(0,d.jsx)(l.Form.Label,{htmlFor:`manifestGridOptions`,children:`Manifest Grid Options`})]}),(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-3`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:`isVersion2`,id:`isVersion2`,defaultChecked:n.export?.version===2}),(0,d.jsxs)(l.Form.Label,{htmlFor:`isVersion2`,children:[`Export Presentation 2 `,t.type,`s`]})]}),(0,d.jsxs)(l.Form.InputContainer,{children:[(0,d.jsx)(l.Form.Label,{htmlFor:`defaultPreview`,children:`Default preview`}),(0,d.jsx)(`div`,{children:e.configs.map((e,t)=>e.type===`iiif-preview-service`?null:(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,children:[(0,d.jsx)(l.Form.Input,{type:`radio`,id:e.id,name:`defaultPreview`,value:e.id,defaultChecked:n.defaultPreview?n.defaultPreview===e.id:t===0}),(0,d.jsx)(`label`,{htmlFor:e.id,children:e.label})]},e.id))})]}),t.type===`Manifest`?(0,d.jsx)(`a`,{className:`text-sm text-me-primary-500 hover:underline hover:text-me-primary-600`,href:window.location.pathname.includes(`/exhibition`)?window.location.pathname.replace(`/exhibition`,``)||`/`:`${window.location.pathname}/exhibition`,children:window.location.pathname.includes(`/exhibition`)?`Return to Manifest Editor`:`Go to Exhibition Editor`}):null,(0,d.jsx)(Zo,{}),(0,d.jsx)(`div`,{className:`mt-5`,children:(0,d.jsx)(l.ActionButton,{type:`submit`,children:`Save changes`})})]})]})]})}function ns(e){let t=new Map;for(let n of e){if(!n.configuration?.fields.length)continue;let e=(0,S.getCreatorConfigKey)(n);(!t.has(e)||n.id===e)&&t.set(e,n)}return Array.from(t.values())}function rs(){let e=U(),t=z(),n=ie(),r=(0,u.useMemo)(()=>ns(e.layout.creators||[]),[e.layout.creators]);function i(e,t){let r=(0,S.getCreatorConfigKey)(e),i=new FormData(t),a={};for(let t of e.configuration?.fields||[])t.type===`checkbox`&&(a[t.id]=i.get(t.id)===`on`);n({creators:{[r]:a}})}return r.length?(0,d.jsx)(`div`,{className:`flex max-w-3xl flex-col gap-6`,children:r.map(e=>(0,d.jsxs)(l.Form.Form,{className:`flex flex-col gap-3 border-b border-gray-100 pb-5 last:border-b-0`,onChange:t=>i(e,t.currentTarget),children:[(0,d.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,d.jsx)(`h3`,{className:`text-base font-semibold text-gray-900`,children:e.label}),e.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:e.summary}):null]}),e.configuration?.fields.map(n=>{let r=(0,S.getCreatorConfigKey)(e),i=t.creators?.[r]?.[n.id],a=`${r}-${n.id}`;return n.type===`checkbox`?(0,d.jsxs)(l.Form.InputContainer,{horizontal:!0,className:`my-1 items-start`,children:[(0,d.jsx)(l.Form.Input,{type:`checkbox`,name:n.id,id:a,defaultChecked:typeof i==`boolean`?i:n.defaultValue||!1}),(0,d.jsxs)(`div`,{className:`flex flex-col gap-1`,children:[(0,d.jsx)(l.Form.Label,{htmlFor:a,children:n.label}),n.summary?(0,d.jsx)(`p`,{className:`text-sm text-gray-500`,children:n.summary}):null]})]},n.id):null})]},(0,S.getCreatorConfigKey)(e)))}):(0,d.jsx)(l.EmptyState,{children:`No creator settings available`})}function is(){return(0,f.createStore)((e,t)=>({specificMenus:{},resourceMenus:{},hookMenuItem(t){let n=Lt(),r=t.resource?.id||``,i=t.resource?.type;return i?r?(e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({specificMenus:{...e.specificMenus,[r]:{...e.specificMenus[r]||{},menus:{...e.specificMenus[r]?.menus||{},[n]:void 0}}}}))}):(e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:{sectionTitle:t.sectionTitle,items:t.items}}}}})),()=>{e(e=>({resourceMenus:{...e.resourceMenus,[i]:{...e.resourceMenus[i]||{},menus:{...e.resourceMenus[i]?.menus||{},[n]:void 0}}}}))}):()=>{}}}))}const as=(0,u.createContext)(null);function os({children:e}){let t=(0,u.useMemo)(()=>is(),[]);return(0,d.jsx)(as.Provider,{value:t,children:e})}function ss(){let e=(0,u.useContext)(as);if(!e)throw Error(`useContextMenuStore must be used within a ContextMenuProvider`);return e}function cs(e){let t=ss(),n=(0,f.useStore)(t,e=>e.resourceMenus),r=(0,f.useStore)(t,e=>e.specificMenus);return(0,u.useMemo)(()=>{let t=r[e.id||``]?.menus||{},i=n[e.type]?.menus||{},a=Object.values(t).flat(),o=[...Object.values(i).flat(),...a].filter(e=>e!==void 0),s=[],c=[];for(let e of o){let t=[];for(let n of e.items||[])n.id&&s.includes(n.id)||(s.push(n.id),t.push(n));t.length&&c.push({...e,items:t})}return ls(c)},[r,n,e.id,e.type])}function ls(e){let t={},n=[];e.forEach(e=>{if(!e)return;let r=e.sectionTitle;if(!r){n.push(...e.items||[]);return}t[r]||(t[r]=[]),t[r].push(...e.items)});let r=Object.entries(t).map(([e,t])=>({sectionTitle:e,items:t}));return n.length&&r.push({items:n}),r}function us(e,t=[]){let n=ss(),r=(0,f.useStore)(n,e=>e.hookMenuItem);(0,u.useEffect)(()=>r(e),[r,e.resource?.id,e.resource?.type,...t])}var ds={CenterPanelContainer:`_CenterPanelContainer_1sbe6_1`,CenterPanelHeader:`_CenterPanelHeader_1sbe6_16`,CenterPanelClose:`_CenterPanelClose_1sbe6_23`,CenterPanelTitle:`_CenterPanelTitle_1sbe6_28`};function fs(e){return(0,d.jsxs)(`div`,{className:ds.CenterPanelContainer,children:[e.title||e.close?(0,d.jsxs)(`div`,{className:ds.CenterPanelHeader,children:[e.title?(0,d.jsx)(`h2`,{className:ds.CenterPanelTitle,children:e.title}):null,e.close?(0,d.jsx)(K,{className:ds.CenterPanelClose,onClick:e.close,children:(0,d.jsx)(tr,{})}):null]}):null,e.children]})}const ps=g.default.div`
|
|
430
445
|
flex: 1;
|
|
431
446
|
display: flex;
|
|
432
447
|
width: 100%;
|
|
433
448
|
flex-direction: column;
|
|
434
449
|
position: relative;
|
|
435
|
-
`,
|
|
450
|
+
`,ms=g.default.div`
|
|
436
451
|
background: #fff;
|
|
437
452
|
position: relative;
|
|
438
453
|
border-bottom: 1px solid #d0d0d0;
|
|
@@ -450,11 +465,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
450
465
|
//flex-direction: column;
|
|
451
466
|
//justify-content: center;
|
|
452
467
|
}
|
|
453
|
-
`,
|
|
468
|
+
`,hs=g.default.p`
|
|
454
469
|
font-size: 0.9em;
|
|
455
470
|
color: #777;
|
|
456
471
|
font-weight: 400;
|
|
457
|
-
`,
|
|
472
|
+
`,gs=g.default.button`
|
|
458
473
|
color: inherit;
|
|
459
474
|
text-rendering: geometricPrecision;
|
|
460
475
|
border: none;
|
|
@@ -496,7 +511,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
496
511
|
margin-top: 0.5em;
|
|
497
512
|
}
|
|
498
513
|
}
|
|
499
|
-
`,
|
|
514
|
+
`,_s=g.default.div`
|
|
500
515
|
font-size: 1.4em;
|
|
501
516
|
padding-right: 0.3em;
|
|
502
517
|
display: flex;
|
|
@@ -505,7 +520,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
505
520
|
[data-large="true"] & {
|
|
506
521
|
font-size: 2em;
|
|
507
522
|
}
|
|
508
|
-
|
|
523
|
+
`,vs=g.default.div`
|
|
509
524
|
width: 2em;
|
|
510
525
|
align-items: center;
|
|
511
526
|
//padding-top: 0.5em;
|
|
@@ -518,11 +533,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
518
533
|
fill: #999;
|
|
519
534
|
color: #999;
|
|
520
535
|
}
|
|
521
|
-
`,
|
|
536
|
+
`,ys=g.default.div`
|
|
522
537
|
min-height: 0;
|
|
523
538
|
overflow: visible;
|
|
524
539
|
display: flex;
|
|
525
|
-
`,
|
|
540
|
+
`,bs=g.default.div`
|
|
526
541
|
min-height: 0;
|
|
527
542
|
overflow: visible;
|
|
528
543
|
flex: 1;
|
|
@@ -535,7 +550,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
535
550
|
&[data-max-height="true"] {
|
|
536
551
|
overflow-y: auto;
|
|
537
552
|
}
|
|
538
|
-
`,
|
|
553
|
+
`,xs=g.default.section`
|
|
539
554
|
display: grid;
|
|
540
555
|
grid-template-rows: 0fr;
|
|
541
556
|
overflow: hidden;
|
|
@@ -563,7 +578,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
563
578
|
&[data-scrolled="true"] {
|
|
564
579
|
box-shadow: inset 0px 2px 0px 0 rgba(0, 0, 0, 0.1);
|
|
565
580
|
}
|
|
566
|
-
`,
|
|
581
|
+
`,Ss=g.default.div`
|
|
567
582
|
position: sticky;
|
|
568
583
|
display: flex;
|
|
569
584
|
top: 0;
|
|
@@ -599,7 +614,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
599
614
|
right: 0.5em;
|
|
600
615
|
}
|
|
601
616
|
}
|
|
602
|
-
`,
|
|
617
|
+
`,Cs=(()=>void 0);let ws=0;function Ts(){return(0,u.useMemo)(()=>ws++,[])}function Es(e,t=!1){let[n,r]=(0,u.useState)([]),i=(0,u.useRef)(-1),a=t=>{let r=document.activeElement,i=n.findIndex(e=>e.current?.button?.current===r);if(i!==-1)switch(t.code){case`Home`:n[0]&&n[0].current?.focus();break;case`End`:{let t=e-1;n[t]&&n[t].current?.focus();break}case`ArrowDown`:if(i!==e-1){let e=i+1;n[e]&&n[e].current?.focus()}break;case`ArrowUp`:if(i!==0){let e=i-1;n[e]&&n[e].current?.focus()}break;case`ArrowLeft`:{let e=n[i];e&&e.current&&e.current.close();break}case`ArrowRight`:{let e=n[i];e&&e.current&&e.current.open();break}}},o=(e,r)=>{if(t&&r&&e!==i.current){i.current=e;for(let t=0;t<n.length;t++){let r=n[t];t!==e&&r.current?.close()}}};return(0,u.useEffect)(()=>{r(t=>Array(e).fill(0).map((e,n)=>t[n]||(0,u.createRef)()))},[e]),{open:e=>{let t=n[e];t&&t.current&&t.current.open()},close:e=>{let t=n[e];t&&t.current&&t.current.close()},toggle:e=>{let t=n[e];t&&t.current&&t.current.toggle()},focus:e=>{let t=n[e];t&&t.current&&t.current.focus()},openAll:()=>{for(let e=0;e<n.length;e++)n[e].current?.open()},closeAll:()=>{for(let e=0;e<n.length;e++)n[e].current?.close()},onKeyDown:a,getItemProps:e=>({ref:n[e],onChange:t=>o(e,t)})}}const Ds=(0,u.forwardRef)(function(e,t){let n=(0,u.useRef)(null),r=(0,u.useRef)(null),i=Ts(),[a,o]=(0,u.useState)(e.initialOpen||!1),s=e.onChange||Cs,c=()=>{s(!a),o(e=>!e)},l=e.maxHeight,[f,p]=(0,u.useState)(!1);return(0,u.useImperativeHandle)(t,()=>({open(){s(!0),o(!0)},close(){s(!1),o(!1)},toggle(){c()},focus(){r.current&&r.current.focus()},button:r})),(0,d.jsxs)(ms,{"data-large":e.large,"data-open":a,children:[(0,d.jsxs)(Ss,{"data-open":a,children:[e.icon?(0,d.jsx)(vs,{onClick:c,children:e.icon}):null,(0,d.jsxs)(gs,{ref:r,onClick:c,"aria-expanded":a,"aria-controls":`accordion-${i}`,children:[e.label,e.description?(0,d.jsx)(hs,{children:e.description}):null]}),(0,d.jsx)(_s,{onClick:c,children:(0,d.jsx)(nr,{width:`1em`,height:`1em`,rotate:a?0:180})})]}),(0,d.jsx)(xs,{"aria-labelledby":`accordion-${i}`,"aria-hidden":!a,"data-overflow":!!e.overflow,"data-has-icon":!!e.icon,onScroll:e=>{e.target.scrollTop>0?p(!0):p(!1)},ref:n,$initial:!a,"data-scrolled":f,hidden:!a,children:(0,d.jsx)(ys,{children:(0,d.jsx)(bs,{"data-max-height":!!l,"data-full":e.fullWidth,style:{maxHeight:l||void 0},children:e.children})})})]})});function Os(e){let{getItemProps:t,onKeyDown:n}=Es(e.items.length,e.singleMode);return(0,d.jsx)(ps,{onKeyDown:n,children:e.items.map((n,r)=>(0,d.jsx)(Ds,{overflow:e.overflow,maxHeight:e.maxHeight,...n,...t(r),children:n.children},r))})}function ks(){return(0,d.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`48`,viewBox:`0 -960 960 960`,width:`48`,children:(0,d.jsx)(`path`,{d:`M220-160q-24 0-42-18t-18-42v-143h60v143h520v-143h60v143q0 24-18 42t-42 18H220Zm260-153L287-506l43-43 120 120v-371h60v371l120-120 43 43-193 193Z`})})}const As=g.default.div`
|
|
603
618
|
padding: 0.3em;
|
|
604
619
|
|
|
605
620
|
display: flex;
|
|
@@ -621,12 +636,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
621
636
|
position: sticky;
|
|
622
637
|
bottom: 0;
|
|
623
638
|
}
|
|
624
|
-
`;function
|
|
639
|
+
`;function js(e){let t=(0,m.useManifest)(),n=(0,m.useVault)(),r=ui(),i=(0,u.useMemo)(()=>JSON.stringify(n.toPresentation3(t),null,2),[t,n]),a=(0,u.useMemo)(()=>JSON.stringify(n.toPresentation2(t),null,2),[t,n]);return(0,d.jsx)(fs,{title:`Export manifest`,close:r.centerPanel.popStack,children:(0,d.jsx)(`div`,{style:{flex:1,overflowY:`auto`},children:(0,d.jsx)(Os,{items:[{label:`Presentation 3`,description:`Download this version by clicking the "Download" button.`,maxHeight:400,large:!0,initialOpen:!0,overflow:!0,icon:(0,d.jsx)(K,{onClick:()=>Ft(i,`manifest.json`),children:(0,d.jsx)(ks,{})}),children:(0,d.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,d.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`},children:JSON.stringify(n.toPresentation3(t),null,2)}),(0,d.jsxs)(As,{"data-sticky":`true`,children:[(0,d.jsx)(K,{onClick:()=>It(i),children:`Copy to clipboard`}),(0,d.jsx)(K,{onClick:()=>Ft(i,`manifest.json`),children:`Download`})]})]})},{label:`Presentation 2`,description:`Download this version by clicking the "Download" button.`,maxHeight:400,large:!0,icon:(0,d.jsx)(K,{onClick:()=>Ft(a,`manifest.json`),children:(0,d.jsx)(ks,{})}),children:(0,d.jsxs)(`div`,{style:{maxWidth:`100%`},children:[(0,d.jsx)(`pre`,{style:{whiteSpace:`pre-wrap`},children:JSON.stringify(n.toPresentation2(t),null,2)}),(0,d.jsxs)(As,{"data-sticky":`true`,children:[(0,d.jsx)(K,{onClick:()=>It(a),children:`Copy to clipboard`}),(0,d.jsx)(K,{onClick:()=>Ft(a,`manifest.json`),children:`Download`})]})]})}]})})})}function Ms({key:e,initialValue:t,requestId:n,getInitialValue:r}){let[i,a]=(0,m.useCurrentAnnotationMetadata)({requestId:n}),[o,s]=(0,u.useState)(r&&r(i)||i[e]||t);return[o,(0,u.useCallback)(t=>{a({[e]:t}),s(t)},[])]}const Ns=(0,E.default)(),Ps=(0,u.createContext)(Ns);function Fs({children:e,emitter:t}){return(0,d.jsx)(Ps.Provider,{value:t,children:e})}function Is(){return(0,u.useContext)(Ps)}function Ls(e,t,n=[]){let r=(0,u.useContext)(Ps);(0,u.useEffect)(()=>{let n=e=>{t(e)};return r.on(e,n),()=>{r.off(e,n)}},[r,e,...n])}function Rs(e,t=[]){let n=t.length?t:Array(e.length).fill(!1);if(typeof window>`u`)return n;let r=e.map(e=>window.matchMedia(e)),i=()=>r.map(e=>e.matches),[a,o]=(0,u.useState)(i);return(0,u.useLayoutEffect)(()=>{let e=()=>o(i);return r.forEach(t=>t.addListener(e)),()=>r.forEach(t=>t.removeListener(e))},[]),a}function zs(e,t,n,r=!0){let i=(0,D.useDebounce)(t,n);(0,u.useEffect)(()=>typeof window>`u`?()=>void 0:(window.addEventListener(`beforeunload`,t,!1),()=>{t(),window.removeEventListener(`beforeunload`,t)}),[t]),(0,u.useEffect)(()=>{if(e&&r)return e.subscribe(i,!0)},[i,e,r])}function Bs(){let e=(0,m.useAtlasStore)(),t=(0,f.useStore)(e,e=>e.switchTool),n=(0,f.useStore)(e,e=>e.polygonState.currentTool),r=(0,f.useStore)(e,e=>e.polygonState.selectedStamp),i=(0,f.useStore)(e,e=>e.polygonState.showBoundingBox);return(0,u.useMemo)(()=>({currentTool:n,selectedStamp:r,draw:{active:n===`pencil`,enable:t.draw},polygon:{active:n===`pen`,enable:t.pen},line:{active:n===`line`,enable:t.line},lineBox:{active:n===`lineBox`,enable:t.lineBox},square:{active:n===`box`,enable:t.box},triangle:{active:r?.id===`triangle`,enable:t.triangle},hexagon:{active:r?.id===`hexagon`,enable:t.hexagon},circle:{active:r?.id===`circle`,enable:t.circle},remove:{active:i,enable:t.remove}}),[i,r,n,t])}const Vs=g.default.div`
|
|
625
640
|
position: relative;
|
|
626
641
|
width: 1px;
|
|
627
642
|
background: rgba(0, 0, 0, 0.2);
|
|
628
643
|
z-index: 50;
|
|
629
|
-
`,
|
|
644
|
+
`,Hs=(0,g.default)(wr)`
|
|
630
645
|
transition:
|
|
631
646
|
opacity 300ms,
|
|
632
647
|
transform 300ms;
|
|
@@ -638,7 +653,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
638
653
|
&:focus {
|
|
639
654
|
outline: 2px solid salmon;
|
|
640
655
|
}
|
|
641
|
-
`;(0,
|
|
656
|
+
`;(0,g.default)(Hs)`
|
|
642
657
|
background: #fff;
|
|
643
658
|
width: 30px;
|
|
644
659
|
height: 30px;
|
|
@@ -652,7 +667,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
652
667
|
svg {
|
|
653
668
|
fill: #9999;
|
|
654
669
|
}
|
|
655
|
-
`;const
|
|
670
|
+
`;const Us=(0,g.default)(Hs)`
|
|
656
671
|
position: relative;
|
|
657
672
|
display: flex;
|
|
658
673
|
opacity: 1;
|
|
@@ -679,7 +694,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
679
694
|
svg {
|
|
680
695
|
font-size: 1.5em;
|
|
681
696
|
}
|
|
682
|
-
`,
|
|
697
|
+
`,Ws=g.default.div`
|
|
683
698
|
background: rgba(0, 0, 0, 0);
|
|
684
699
|
position: absolute;
|
|
685
700
|
width: 16px;
|
|
@@ -702,12 +717,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
702
717
|
&:hover {
|
|
703
718
|
transform: scaleX(100%);
|
|
704
719
|
background: rgba(0, 0, 0, 0.1);
|
|
705
|
-
${
|
|
720
|
+
${Hs} {
|
|
706
721
|
transform: scaleX(100%);
|
|
707
722
|
opacity: 1;
|
|
708
723
|
}
|
|
709
724
|
}
|
|
710
|
-
`,
|
|
725
|
+
`,Gs=g.default.div`
|
|
711
726
|
background: rgba(0, 0, 0, 0);
|
|
712
727
|
position: absolute;
|
|
713
728
|
pointer-events: none;
|
|
@@ -716,7 +731,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
716
731
|
top: 0;
|
|
717
732
|
bottom: 0;
|
|
718
733
|
z-index: 51; // This will always be quite high.
|
|
719
|
-
`,
|
|
734
|
+
`,Ks=(0,u.forwardRef)(function({dir:e,open:t,actions:n,reset:r},i){let[a,o]=(0,u.useState)(!0),s=`mt-[calc(50vh+8px)]`,c=e===`left`?`${s} ml-[13px]`:`${s} ml-[3px]`;return(0,d.jsxs)(Vs,{onClick:()=>n.open(),children:[(0,d.jsx)(Gs,{$open:t,$dir:e,className:`group`,children:t?null:(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{"aria-label":`Open ${e} panel`,as:Us,$dir:e,onClick:e=>n.open(),children:(0,d.jsx)(nr,{"aria-hidden":`true`,className:`text-2xl`,rotate:e===`right`?90:270})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Open`})]})}),(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(`div`,{children:(0,d.jsxs)(Ws,{ref:i,$open:t,$dir:e,className:`group`,children:[t?(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{"aria-label":`Close ${e} panel`,as:l.IconHandle,onPress:()=>n.close(),children:(0,d.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,d.jsx)(tr,{"aria-hidden":`true`})})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Close`})]}):null,r&&t?(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{"aria-label":`Reset ${e} panel size`,as:l.IconHandle,onPress:()=>r(),children:(0,d.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,d.jsx)(l.ResetIcon,{"aria-hidden":`true`})})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Reset`})]}):null,t?(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(`div`,{onMouseOut:()=>{o(!0)},onMouseOver:()=>{o(!1)},children:(0,d.jsx)(l.ResizeHandle,{"aria-label":`Resize panel`})})}),(0,d.jsx)(l.DefaultTooltipContent,{children:`Resize panel`})]}):null]})})}),a&&(0,d.jsx)(l.DefaultTooltipContent,{className:c,children:`Resize panel`})]})]})});function qs(e){return(0,d.jsx)(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 42 42`,xmlns:`http://www.w3.org/2000/svg`,stroke:`currentColor`,...e,children:(0,d.jsxs)(`g`,{transform:`translate(2 2)`,strokeWidth:5,fill:`none`,fillRule:`evenodd`,children:[(0,d.jsx)(`circle`,{strokeOpacity:.5,cx:18,cy:18,r:18}),(0,d.jsx)(`path`,{d:`M36 18c0-9.94-8.06-18-18-18`,children:(0,d.jsx)(`animateTransform`,{attributeName:`transform`,type:`rotate`,from:`0 18 18`,to:`360 18 18`,dur:`1s`,repeatCount:`indefinite`})})]})})}var Js={ghostLoadingBlock:`_ghostLoadingBlock_1i1t4_1`,"ghost-loading":`_ghost-loading_1i1t4_1`,ghostLoading:`_ghost-loading_1i1t4_1`,ghostBlockList:`_ghostBlockList_1i1t4_28`};function Ys(){return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(`div`,{"data-header":`true`,className:Js.ghostLoadingBlock}),(0,d.jsxs)(`div`,{className:Js.ghostBlockList,children:[(0,d.jsx)(`div`,{className:Js.ghostLoadingBlock}),(0,d.jsx)(`div`,{className:Js.ghostLoadingBlock}),(0,d.jsx)(`div`,{className:Js.ghostLoadingBlock}),(0,d.jsx)(`div`,{className:Js.ghostLoadingBlock})]})]})}function Xs(e,t,n,r=[]){(0,u.useLayoutEffect)(()=>{let r=e.current;if(r)return r.addEventListener(t,n),()=>{r.removeEventListener(t,n)}},[t,...r])}function Zs(e,t,n,r){return Math.sqrt(Math.abs(n-e)**2+Math.abs(r-t)**2)}function Qs(e,t,n,r){return n||(r?r/e:t)}function $s(e,t={}){let n=(0,u.useRef)(null),r=(0,u.useRef)(null),i=(0,u.useRef)(null),a=(0,u.useRef)(null),o=(0,u.useRef)(.5),[s,c]=(0,u.useState)(!1),d=(0,u.useRef)(!1),f=(0,u.useRef)(0),p=(0,u.useRef)({x:0,y:0}),[{widthA:m,widthB:h},g]=(0,l.useLocalStorage)(`resize-layout/${e}`,{widthA:`auto`,widthB:`${no({initial:t.widthA,fallback:320,options:{minWidth:t.minWidthPx,maxWidth:t.maxWidthPx}})}px`}),{loading:_=!1}=t;return Xs(a,`mousedown`,e=>{p.current.x=e.pageX,p.current.y=e.pageY,f.current&&(clearTimeout(f.current),f.current=0),f.current=setTimeout(()=>{c(!0),d.current=!0},350)},[_]),Xs({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=Qs(r,.8,t.maxWidthPct,t.maxWidthPx)*r,s=Qs(r,.2,t.minWidthPct,t.minWidthPx)*r;if(t.left){let e=o.current*r-i;g({widthA:`${(1-o.current)*r-i}`,widthB:`${e>a?a:e<s?s:e}px`})}else{let e=1-o.current*r-i;g({widthA:`${e>a?a:e<s?s:e}px`,widthB:`${o.current*r-i}px`})}c(!1),d.current=!1,t.onDragEnd&&t.onDragEnd()}clearTimeout(f.current),f.current=0},[_]),Xs(n,`mousemove`,e=>{if(!d.current&&f.current&&Zs(p.current.x,p.current.y,e.pageX,e.pageY)>20&&(c(!0),d.current=!0,clearTimeout(f.current),f.current=0),d.current&&r.current){let i=n.current;if(i){let{x:n,width:a}=i.getBoundingClientRect(),s=t.marginLeft||0,c=t.left||!1,l=Qs(a,.8,t.maxWidthPct,t.maxWidthPx),u=Qs(a,.2,t.minWidthPct,t.minWidthPx);o.current=(a+n-e.pageX-5)/a,c&&(o.current=1-o.current),o.current=o.current<u?u:o.current,o.current=o.current>l?l:o.current,r.current.style.width=`${o.current*a-s}px`}}},[s,_]),{refs:{container:n,resizer:a,resizableDiv:r,otherDiv:i},setWidths:g,isDragging:s,widthA:m,widthB:h}}const q=`.manifest-editor.exhibition-focused &`,J=`[data-exhibition-theme="dark"] ${q}`,Y={pink:`#b84c74`,pinkHover:`#9f3f64`,lightApp:`#f4f1ec`,lightStage:`#dfdbd4`,lightPanel:`#fff`,lightPanelSoft:`#f8f6f3`,lightBorder:`#dcd5ce`,lightPanelBorder:`#ddd5ce`,lightText:`#25211f`,lightMuted:`#6a625c`,darkApp:`#18161d`,darkStage:`#0e0d12`,darkPanel:`#28222d`,darkPanelSoft:`#2f2934`,darkPanelHeader:`#25222b`,darkHover:`#312c34`,darkSelected:`#3a3440`,darkText:`#f6f1f4`,darkMuted:`#c8c0c6`,darkSubtle:`#999088`,darkLabel:`#d9d1da`,darkWarning:`#4a2636`,darkWarningBorder:`#7a3f59`,darkBorder:`rgba(246, 241, 244, 0.16)`,darkBorderSoft:`rgba(246, 241, 244, 0.14)`},ec=g.default.div`
|
|
720
735
|
display: flex;
|
|
721
736
|
flex: 1 1 0;
|
|
722
737
|
min-height: 0;
|
|
@@ -730,7 +745,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
730
745
|
${J} {
|
|
731
746
|
background: ${Y.darkApp};
|
|
732
747
|
}
|
|
733
|
-
`,
|
|
748
|
+
`,tc=g.default.div`
|
|
734
749
|
flex: 1 1 0;
|
|
735
750
|
min-width: 0;
|
|
736
751
|
min-height: 0;
|
|
@@ -846,12 +861,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
846
861
|
background: ${Y.darkHover} !important;
|
|
847
862
|
color: #fff !important;
|
|
848
863
|
}
|
|
849
|
-
`,
|
|
864
|
+
`,nc=g.default.div`
|
|
850
865
|
display: flex;
|
|
851
866
|
flex: 1;
|
|
852
867
|
justify-content: center;
|
|
853
868
|
align-items: center;
|
|
854
|
-
`,
|
|
869
|
+
`,rc=g.default.div`
|
|
855
870
|
position: absolute;
|
|
856
871
|
top: 3rem;
|
|
857
872
|
z-index: 40;
|
|
@@ -876,12 +891,12 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
876
891
|
box-shadow: 0 12px 28px rgba(0, 0, 0, 0.36);
|
|
877
892
|
}
|
|
878
893
|
|
|
879
|
-
${e=>e.$side===`left`?
|
|
894
|
+
${e=>e.$side===`left`?g.css`
|
|
880
895
|
left: 1rem;
|
|
881
|
-
`:
|
|
896
|
+
`:g.css`
|
|
882
897
|
right: 1rem;
|
|
883
898
|
`}
|
|
884
|
-
`,
|
|
899
|
+
`,ic=g.default.button`
|
|
885
900
|
width: 2.35rem;
|
|
886
901
|
height: 2.35rem;
|
|
887
902
|
border: 0;
|
|
@@ -936,16 +951,21 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
936
951
|
width: 1.25em;
|
|
937
952
|
height: 1.25em;
|
|
938
953
|
}
|
|
939
|
-
|
|
954
|
+
|
|
955
|
+
@media (max-width: 1020px) {
|
|
956
|
+
width: 2.75rem;
|
|
957
|
+
height: 2.75rem;
|
|
958
|
+
}
|
|
959
|
+
`,ac=g.default.div`
|
|
940
960
|
display: flex;
|
|
941
961
|
flex-direction: column;
|
|
942
962
|
gap: 0.25rem;
|
|
943
|
-
`,
|
|
963
|
+
`,oc=g.default.div`
|
|
944
964
|
width: 100%;
|
|
945
965
|
height: 1px;
|
|
946
966
|
margin: 0.25rem 0;
|
|
947
967
|
background: rgba(15, 23, 42, 0.14);
|
|
948
|
-
`,
|
|
968
|
+
`,sc=g.default.aside`
|
|
949
969
|
position: absolute;
|
|
950
970
|
top: 3rem;
|
|
951
971
|
bottom: 1rem;
|
|
@@ -958,7 +978,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
958
978
|
border-radius: 6px;
|
|
959
979
|
box-shadow: 0 16px 40px rgba(15, 23, 42, 0.18);
|
|
960
980
|
overflow: hidden;
|
|
961
|
-
opacity: ${e
|
|
981
|
+
opacity: ${e=>+!!e.$open};
|
|
962
982
|
pointer-events: ${e=>e.$open?`auto`:`none`};
|
|
963
983
|
transition:
|
|
964
984
|
opacity 180ms ease,
|
|
@@ -1000,7 +1020,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1000
1020
|
box-shadow: 0 20px 50px rgba(0, 0, 0, 0.42);
|
|
1001
1021
|
}
|
|
1002
1022
|
|
|
1003
|
-
${J} ${
|
|
1023
|
+
${J} ${co} {
|
|
1004
1024
|
background: ${Y.darkPanelHeader} !important;
|
|
1005
1025
|
border-color: ${Y.darkBorder} !important;
|
|
1006
1026
|
color: ${Y.darkText} !important;
|
|
@@ -1009,11 +1029,11 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1009
1029
|
inset 0 1px 0 0 ${Y.darkBorder} !important;
|
|
1010
1030
|
}
|
|
1011
1031
|
|
|
1012
|
-
${J} ${
|
|
1032
|
+
${J} ${lo} {
|
|
1013
1033
|
color: ${Y.darkText} !important;
|
|
1014
1034
|
}
|
|
1015
1035
|
|
|
1016
|
-
${J} ${
|
|
1036
|
+
${J} ${lo}:hover {
|
|
1017
1037
|
background: ${Y.darkHover} !important;
|
|
1018
1038
|
color: #fff !important;
|
|
1019
1039
|
}
|
|
@@ -1212,10 +1232,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1212
1232
|
border-color: ${Y.darkBorder} !important;
|
|
1213
1233
|
}
|
|
1214
1234
|
|
|
1215
|
-
${e=>e.$side===`left`?
|
|
1235
|
+
${e=>e.$side===`left`?g.css`
|
|
1216
1236
|
left: 4.5rem;
|
|
1217
1237
|
transform: translateX(${e.$open?`0`:`-0.75rem`});
|
|
1218
|
-
`:
|
|
1238
|
+
`:g.css`
|
|
1219
1239
|
right: 4.5rem;
|
|
1220
1240
|
transform: translateX(${e.$open?`0`:`0.75rem`});
|
|
1221
1241
|
`}
|
|
@@ -1230,13 +1250,13 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1230
1250
|
min-width: 0;
|
|
1231
1251
|
transform: translateY(${e=>e.$open?`0`:`0.75rem`});
|
|
1232
1252
|
}
|
|
1233
|
-
`,
|
|
1253
|
+
`,cc=g.default.div`
|
|
1234
1254
|
display: flex;
|
|
1235
1255
|
flex: 1;
|
|
1236
1256
|
min-width: 0;
|
|
1237
1257
|
height: 100%;
|
|
1238
1258
|
overflow: hidden;
|
|
1239
|
-
`,
|
|
1259
|
+
`,lc=g.default.div`
|
|
1240
1260
|
display: flex;
|
|
1241
1261
|
flex-direction: column;
|
|
1242
1262
|
flex: 1;
|
|
@@ -1245,16 +1265,16 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1245
1265
|
max-width: 100%;
|
|
1246
1266
|
min-width: 0;
|
|
1247
1267
|
overflow: hidden;
|
|
1248
|
-
`,
|
|
1268
|
+
`,uc=g.default.header`
|
|
1249
1269
|
//box-shadow: 0 3px 2px 0 rgba(0, 0, 0, 0.04), 0 1px 0 0 rgba(0, 0, 0, 0.17);
|
|
1250
1270
|
z-index: 200;
|
|
1251
|
-
`,
|
|
1271
|
+
`,dc=g.default.div`
|
|
1252
1272
|
background: #fff;
|
|
1253
|
-
`,
|
|
1273
|
+
`,fc=g.default.div`
|
|
1254
1274
|
display: flex;
|
|
1255
1275
|
flex: 1 1 0;
|
|
1256
1276
|
min-height: 0;
|
|
1257
|
-
`,
|
|
1277
|
+
`,pc=g.default.div`
|
|
1258
1278
|
background: #fff;
|
|
1259
1279
|
display: flex;
|
|
1260
1280
|
flex-direction: column;
|
|
@@ -1262,18 +1282,18 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1262
1282
|
max-width: 720px;
|
|
1263
1283
|
align-items: flex-end;
|
|
1264
1284
|
|
|
1265
|
-
${e=>e.$motion?
|
|
1285
|
+
${e=>e.$motion?g.css`
|
|
1266
1286
|
transition: max-width 400ms;
|
|
1267
1287
|
`:``}
|
|
1268
1288
|
|
|
1269
|
-
${e=>{switch(e.$state){case`entering`:return
|
|
1289
|
+
${e=>{switch(e.$state){case`entering`:return g.css`
|
|
1270
1290
|
max-width: ${e.$width};
|
|
1271
|
-
`;case`exiting`:return
|
|
1291
|
+
`;case`exiting`:return g.css`
|
|
1272
1292
|
max-width: 0;
|
|
1273
|
-
`;case`unmounted`:case`exited`:return
|
|
1293
|
+
`;case`unmounted`:case`exited`:return g.css`
|
|
1274
1294
|
max-width: 0;
|
|
1275
1295
|
`}}}
|
|
1276
|
-
`,
|
|
1296
|
+
`,mc=g.default.div`
|
|
1277
1297
|
flex: 1 1 0;
|
|
1278
1298
|
background: #e3e7f0;
|
|
1279
1299
|
// background: #efefef;
|
|
@@ -1292,7 +1312,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1292
1312
|
> * {
|
|
1293
1313
|
min-width: 0;
|
|
1294
1314
|
}
|
|
1295
|
-
`,
|
|
1315
|
+
`,hc=g.default.div`
|
|
1296
1316
|
background: #fff;
|
|
1297
1317
|
display: flex;
|
|
1298
1318
|
flex-direction: column;
|
|
@@ -1301,14 +1321,14 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1301
1321
|
|
|
1302
1322
|
${e=>e.$motion?`transition: max-width 400ms;`:``}
|
|
1303
1323
|
|
|
1304
|
-
${e=>{switch(e.$state){case`entering`:return
|
|
1324
|
+
${e=>{switch(e.$state){case`entering`:return g.css`
|
|
1305
1325
|
max-width: ${e.$width};
|
|
1306
|
-
`;case`exiting`:return
|
|
1326
|
+
`;case`exiting`:return g.css`
|
|
1307
1327
|
max-width: 0;
|
|
1308
|
-
`;case`unmounted`:case`exited`:return
|
|
1328
|
+
`;case`unmounted`:case`exited`:return g.css`
|
|
1309
1329
|
max-width: 0;
|
|
1310
1330
|
`}}}
|
|
1311
|
-
`,
|
|
1331
|
+
`,gc=g.default.div`
|
|
1312
1332
|
display: flex;
|
|
1313
1333
|
flex: 1;
|
|
1314
1334
|
height: 100%;
|
|
@@ -1316,28 +1336,28 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1316
1336
|
transition: min-width 400ms;
|
|
1317
1337
|
overflow: hidden;
|
|
1318
1338
|
|
|
1319
|
-
${e=>{switch(e.$menu){case`top`:return
|
|
1339
|
+
${e=>{switch(e.$menu){case`top`:return g.css`
|
|
1320
1340
|
flex-direction: column;
|
|
1321
1341
|
${X} {
|
|
1322
1342
|
flex-direction: column;
|
|
1323
1343
|
}
|
|
1324
|
-
`;case`left`:return
|
|
1344
|
+
`;case`left`:return g.css`
|
|
1325
1345
|
flex-direction: row;
|
|
1326
1346
|
${X} {
|
|
1327
1347
|
flex-direction: row;
|
|
1328
1348
|
}
|
|
1329
|
-
`;default:case`bottom`:return
|
|
1349
|
+
`;default:case`bottom`:return g.css`
|
|
1330
1350
|
flex-direction: column-reverse;
|
|
1331
1351
|
${X} {
|
|
1332
1352
|
flex-direction: column;
|
|
1333
1353
|
}
|
|
1334
|
-
`;case`right`:return
|
|
1354
|
+
`;case`right`:return g.css`
|
|
1335
1355
|
flex-direction: row-reverse;
|
|
1336
1356
|
${X} {
|
|
1337
1357
|
flex-direction: row;
|
|
1338
1358
|
}
|
|
1339
1359
|
`}}}
|
|
1340
|
-
|
|
1360
|
+
`;g.default.div`
|
|
1341
1361
|
background: #fff;
|
|
1342
1362
|
border-top: 1px solid #e3e7f0;
|
|
1343
1363
|
border-right: 1px solid #e3e7f0;
|
|
@@ -1347,7 +1367,7 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1347
1367
|
/* width: 3.35em;
|
|
1348
1368
|
padding: 0.3em;
|
|
1349
1369
|
gap: 0.3em; */
|
|
1350
|
-
|
|
1370
|
+
`,g.default.button`
|
|
1351
1371
|
cursor: pointer;
|
|
1352
1372
|
aspect-ratio: 1;
|
|
1353
1373
|
width: 3em;
|
|
@@ -1374,124 +1394,124 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1374
1394
|
font-size: 1.5em;
|
|
1375
1395
|
color: #999;
|
|
1376
1396
|
}
|
|
1377
|
-
|
|
1397
|
+
`;const X=g.default.div`
|
|
1378
1398
|
display: flex;
|
|
1379
1399
|
box-shadow:
|
|
1380
1400
|
0 -3px 2px 0 rgba(0, 0, 0, 0.04),
|
|
1381
1401
|
0 -1px 0 0 rgba(0, 0, 0, 0.17);
|
|
1382
1402
|
|
|
1383
|
-
${e=>!e.$open&&(e.$position===`top`||e.$position===`bottom`)?
|
|
1403
|
+
${e=>!e.$open&&(e.$position===`top`||e.$position===`bottom`)?g.css`
|
|
1384
1404
|
display: none;
|
|
1385
1405
|
`:``}
|
|
1386
|
-
`,Z=
|
|
1406
|
+
`,Z=g.default.div`
|
|
1387
1407
|
display: flex;
|
|
1388
1408
|
flex-direction: column;
|
|
1389
1409
|
flex: 1;
|
|
1390
1410
|
min-width: 0;
|
|
1391
1411
|
overflow: hidden;
|
|
1392
|
-
`;function
|
|
1412
|
+
`;function _c(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 vc(e,t){return t?e.some(e=>e.id===t)?t:e[0]?.id||null:null}function Q(e){return e.map(e=>e.id).join(`,`)}function yc(e){let t=e?.resource;return t?.source?.type||t?.type||null}const bc=(0,u.memo)(function(e){let t=U(),n=Un(),r=W(),i=pi(),{vault:a}=(0,u.useContext)(m.ReactVaultContext),o=a||void 0,s=(0,m.useVaultSelector)(e=>e.iiif),{loading:c,state:f,leftPanels:p,centerPanels:h,rightPanels:g,modals:_=[],actions:v}=i,y=e.isLoading||!1,b=(0,u.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:f,appState:n}),[r,o,t,f,n,s]),x=(0,u.useMemo)(()=>_c(p,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}).filter(e=>!e.focusedMode?.hide),[p,b]),S=(0,u.useMemo)(()=>_c(h,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[h,b]),w=(0,u.useMemo)(()=>_c(g,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}).filter(e=>!e.focusedMode?.hide),[g,b]),T=(0,u.useMemo)(()=>_c(_,b,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,b]),E=(0,u.useMemo)(()=>x.filter(e=>e.modal),[x]),D=(0,u.useMemo)(()=>x.filter(e=>!e.modal),[x]),O=(0,u.useMemo)(()=>[...T,...E],[T,E]),k=(0,u.useMemo)(()=>({...i,leftPanels:x,centerPanels:S,rightPanels:w,modals:O}),[i,x,S,w,O]),A=D.find(e=>e.id===f.leftPanel.current),j=w.find(e=>e.id===f.rightPanel.current),M=S.find(e=>e.id===f.centerPanel.current),N=O.find(e=>e.id===f.modal.current),P=f.modal.open&&E.some(e=>e.id===f.modal.current)?f.modal.current:f.leftPanel.current,F=f.pinnedRightPanel.pinned?w.find(e=>e.id===f.pinnedRightPanel.current):void 0,te=j&&(F?.id!==j.id||!(0,ee.default)(f.pinnedRightPanel.state,f.rightPanel.state)),ne=(0,u.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:f,appState:n,actions:v}),[r,o,t,f,n,v]),I=e=>{e.focusedMode?.onSelect?.(ne)},re=!A||A.focusedMode?.closeOnMainPanelClick!==!1,[L]=Rs([`(max-width: 1020px)`]),R=(0,u.useMemo)(()=>(i.background||[]).map((e,t)=>(0,d.jsx)(u.Fragment,{children:e.render()},t)),[i.background]);(0,u.useLayoutEffect)(()=>{w.length&&v.rightPanel.change({id:w[0].id}),D.length&&v.leftPanel.change({id:D[0].id}),S.length&&v.centerPanel.change({id:S[0].id}),v.leftPanel.close(),v.rightPanel.close()},[]),(0,u.useLayoutEffect)(()=>{if(M&&M.onMount)return M.onMount(f.centerPanel.state||M.defaultState||{},{...k,current:v.centerPanel,vault:o},n)},[f.centerPanel.current,M?.id]),(0,u.useLayoutEffect)(()=>{L&&f.leftPanel.open&&f.rightPanel.open&&v.rightPanel.close()},[L,f.leftPanel.open,f.rightPanel.open]),(0,u.useLayoutEffect)(()=>{if(!f.leftPanel.open||!f.leftPanel.current)return;let e=x.find(e=>e.id===f.leftPanel.current);e?.focusedMode?.onSelect&&I(e)},[f.leftPanel.open,f.leftPanel.current,Q(x)]),(0,u.useLayoutEffect)(()=>{if(f.leftPanel.current&&!A){let e=vc(D,f.leftPanel.current);e?v.leftPanel.change({id:e}):v.leftPanel.close()}if(f.centerPanel.current&&!M){let e=vc(S,f.centerPanel.current);e?v.centerPanel.change({id:e}):v.centerPanel.close()}if(f.rightPanel.current&&!j){let e=vc(w,f.rightPanel.current);e?v.rightPanel.change({id:e}):v.rightPanel.close()}if(f.modal.current&&!N){let e=vc(O,f.modal.current);e?v.modal.change({id:e}):v.modal.close()}},[f.leftPanel.current,f.centerPanel.current,f.rightPanel.current,f.modal.current,A?.id,M?.id,j?.id,N?.id,Q(D),Q(S),Q(w),Q(O)]),Ls(`layout.edit`,e=>{yc(e)===`Canvas`&&!f.rightPanel.open||(w.find(e=>e.id===`@manifest-editor/editor`)?v.rightPanel.open({id:`@manifest-editor/editor`,stacked:!0}):j&&v.rightPanel.open())},[Q(w),j?.id,f.rightPanel.open]);let z=`4.5rem`,ie=`${no({options:A?.options,fallback:340})}px`,ae=`${no({options:j?.options,fallback:420})}px`,oe={"--manifest-editor-layout-left-sidebar-small":z,"--manifest-editor-layout-left-sidebar-large":f.leftPanel.open?`calc(${z} + ${ie})`:z,"--manifest-editor-layout-right-sidebar-small":z,"--manifest-editor-layout-right-sidebar-large":f.rightPanel.open?`calc(${z} + ${ae})`:z};return(0,u.useLayoutEffect)(()=>{if(typeof document>`u`)return;let e=document.documentElement,t=Object.keys(oe).map(t=>[t,e.style.getPropertyValue(t)]);for(let[t,n]of Object.entries(oe))e.style.setProperty(t,n);return()=>{for(let[n,r]of t)r?e.style.setProperty(n,r):e.style.removeProperty(n)}},[ie,ae,f.leftPanel.open,f.rightPanel.open]),c?null:(0,d.jsx)(ci.Provider,{value:`focused`,children:(0,d.jsxs)(lc,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,"data-layout-mode":`focused`,style:oe,children:[e.hideHeader?null:(0,d.jsxs)(uc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsxs)(ec,{children:[(0,d.jsx)(tc,{onClick:()=>{re&&v.leftPanel.close()},children:(0,d.jsxs)(gc,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,d.jsx)(X,{$open:f.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,d.jsx)(Z,{children:(0,d.jsx)(C.ErrorBoundary,{resetKeys:[M?.id],FallbackComponent:io,children:y?(0,d.jsx)(nc,{children:(0,d.jsx)(qs,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):f.centerPanel.open&&M?ro(M.render(f.centerPanel.state||M.defaultState||{},{...k,current:v.centerPanel,vault:o},n)):null})})]})}),!S.length&&!x.length?null:(0,d.jsxs)(rc,{$side:`left`,"aria-label":`Main and left panels`,children:[S.length?(0,d.jsx)(ac,{"aria-label":`Main panels`,children:S.filter(e=>!e.focusedMode?.hide).map(e=>(0,d.jsxs)(l.Tooltip,{placement:`right`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(ic,{type:`button`,"aria-label":e.label,"data-selected":f.centerPanel.current===e.id,onClick:()=>{v.centerPanel.open({id:e.id}),v.leftPanel.close(),v.rightPanel.close(),I(e)},children:e.icon||e.label.slice(0,1)})}),(0,d.jsx)(l.DefaultTooltipContent,{children:e.label})]},e.id))}):null,S.length&&x.length?(0,d.jsx)(oc,{}):null,x.length?(0,d.jsx)(ac,{"aria-label":`Left panels`,children:x.map(e=>(0,d.jsxs)(l.Tooltip,{placement:`right`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(ic,{type:`button`,"aria-label":e.label,"data-selected":P===e.id,onClick:()=>{if(e.modal){L&&v.rightPanel.close(),f.modal.open&&f.modal.current===e.id?v.modal.close():(v.modal.open({id:e.id,state:e.defaultState}),I(e));return}L&&v.rightPanel.close(),f.leftPanel.current===e.id?v.leftPanel.toggle():v.leftPanel.open({id:e.id})},children:e.icon||e.label.slice(0,1)})}),(0,d.jsx)(l.DefaultTooltipContent,{children:e.label})]},e.id))}):null]}),((e,t,n)=>{if(!t.length)return null;let r=e===`left`?v.leftPanel:v.rightPanel;return(0,d.jsx)(rc,{$side:e,"aria-label":`${e} panels`,children:t.map(t=>(0,d.jsxs)(l.Tooltip,{placement:e===`left`?`right`:`left`,children:[(0,d.jsx)(l.TooltipTrigger,{asChild:!0,children:(0,d.jsx)(ic,{type:`button`,"aria-label":t.label,"data-selected":n===t.id,onClick:()=>{L&&(e===`left`?v.rightPanel.close():v.leftPanel.close()),n===t.id?r.toggle():r.open({id:t.id})},children:t.icon||t.label.slice(0,1)})}),(0,d.jsx)(l.DefaultTooltipContent,{children:t.label})]},t.id))})})(`right`,w,f.rightPanel.current),D.length>0?(0,d.jsx)(sc,{$side:`left`,$open:f.leftPanel.open,style:{width:ie,minWidth:A?.options?.minWidth,maxWidth:A?.options?.maxWidth},children:(0,d.jsx)(cc,{children:y?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.leftPanelMenu?(0,d.jsx)(X,{$open:f.leftPanel.open,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,d.jsx)(Z,{children:A?(0,d.jsx)(mo,{isLeft:!0,panel:A,state:f.leftPanel,actions:v.leftPanel}):null})]})})}):null,w.length>0?(0,d.jsx)(sc,{$side:`right`,$open:f.rightPanel.open,style:{width:ae,minWidth:j?.options?.minWidth,maxWidth:j?.options?.maxWidth},children:(0,d.jsx)(cc,{children:y?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.rightPanelMenu?(0,d.jsx)(X,{$open:f.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,d.jsxs)(Z,{children:[te?(0,d.jsx)(mo,{panel:j,state:f.rightPanel,actions:v.rightPanel,pinActions:v.pinnedRightPanel,available:w}):null,F?(0,d.jsx)(mo,{panel:F,state:f.pinnedRightPanel,actions:v.pinnedRightPanel,close:v.rightPanel.close}):null]})]})})}):null]}),(0,d.jsx)(dc,{children:e.footer||null}),(0,d.jsx)(`div`,{className:`hidden`,children:R}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:N?(0,d.jsx)(l.Modal,{title:N.label,open:f.modal.open,onClose:()=>v.modal.close(),children:N.modal?(0,d.jsx)(`div`,{className:`h-[70vh] min-h-[60vh] max-h-full flex w-full`,children:(0,d.jsx)(mo,{isLeft:!0,isModal:!0,noHeader:!0,panel:N,state:f.modal,actions:v.modal})}):ro(N.render(f.modal.state||N.defaultState||{},{...k,current:v.modal,vault:o,isModal:!0},n))}):null}),(0,d.jsx)(Da,{})]})})}),xc=g.default.div`
|
|
1393
1413
|
position: relative;
|
|
1394
1414
|
display: flex;
|
|
1395
1415
|
flex: 1;
|
|
1396
1416
|
overflow: hidden;
|
|
1397
1417
|
flex-direction: column;
|
|
1398
|
-
`,
|
|
1418
|
+
`,Sc=g.default.div`
|
|
1399
1419
|
flex: 1;
|
|
1400
1420
|
position: relative;
|
|
1401
1421
|
z-index: 7;
|
|
1402
|
-
`,
|
|
1422
|
+
`,Cc=g.default.div`
|
|
1403
1423
|
display: flex;
|
|
1404
|
-
|
|
1424
|
+
gap: 0.5rem;
|
|
1405
1425
|
width: 100%;
|
|
1406
1426
|
background: #fff;
|
|
1407
|
-
border-
|
|
1408
|
-
padding: 0.
|
|
1409
|
-
height:
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
width:
|
|
1414
|
-
|
|
1427
|
+
border-bottom: 1px solid #cbcbcb;
|
|
1428
|
+
padding: 0.5rem;
|
|
1429
|
+
min-height: 4rem;
|
|
1430
|
+
z-index: 9;
|
|
1431
|
+
`,wc=g.default.button`
|
|
1432
|
+
flex: 1;
|
|
1433
|
+
min-width: 0;
|
|
1434
|
+
padding: 0.75rem 1rem;
|
|
1415
1435
|
border-radius: 5px;
|
|
1416
|
-
border:
|
|
1436
|
+
border: 1px solid #979797;
|
|
1417
1437
|
background: #ffffff;
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
z-index: 9;
|
|
1432
|
-
`,cc=h.default.button`
|
|
1433
|
-
padding: 0.4em 1em 0.65em;
|
|
1434
|
-
position: absolute;
|
|
1438
|
+
font-size: 1rem;
|
|
1439
|
+
overflow: hidden;
|
|
1440
|
+
text-overflow: ellipsis;
|
|
1441
|
+
white-space: nowrap;
|
|
1442
|
+
`,Tc=g.default.div`
|
|
1443
|
+
display: flex;
|
|
1444
|
+
flex: 1;
|
|
1445
|
+
min-width: 0;
|
|
1446
|
+
`,Ec=g.default.button`
|
|
1447
|
+
display: flex;
|
|
1448
|
+
align-items: center;
|
|
1449
|
+
justify-content: center;
|
|
1450
|
+
gap: 0.5rem;
|
|
1435
1451
|
width: 100%;
|
|
1436
|
-
|
|
1452
|
+
min-width: 0;
|
|
1453
|
+
padding: 0.75rem 1rem;
|
|
1437
1454
|
background: #ffffff;
|
|
1438
|
-
box-shadow: 0 3px 18px 0 rgba(0, 0, 0, 0.04);
|
|
1439
1455
|
border-radius: 5px;
|
|
1440
1456
|
border: 1px solid #979797;
|
|
1441
|
-
|
|
1457
|
+
font-size: 1rem;
|
|
1442
1458
|
white-space: nowrap;
|
|
1443
1459
|
overflow: hidden;
|
|
1444
1460
|
text-overflow: ellipsis;
|
|
1445
1461
|
|
|
1446
1462
|
svg {
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
font-size: 1.8em;
|
|
1463
|
+
flex: 0 0 auto;
|
|
1464
|
+
font-size: 1.25em;
|
|
1450
1465
|
}
|
|
1451
|
-
`,
|
|
1466
|
+
`,Dc=g.default.div`
|
|
1452
1467
|
background: #fff;
|
|
1453
1468
|
display: flex;
|
|
1454
1469
|
position: absolute;
|
|
1455
|
-
transform:
|
|
1470
|
+
transform: translateX(100%);
|
|
1456
1471
|
overflow-y: auto;
|
|
1457
|
-
left:
|
|
1472
|
+
left: auto;
|
|
1458
1473
|
right: 0;
|
|
1459
|
-
top:
|
|
1474
|
+
top: 4rem;
|
|
1475
|
+
width: min(100%, 480px);
|
|
1460
1476
|
z-index: 10;
|
|
1461
1477
|
box-shadow:
|
|
1462
|
-
|
|
1463
|
-
|
|
1478
|
+
-5px 0 15px 0 rgba(0, 0, 0, 0),
|
|
1479
|
+
-3px 0 5px 0 rgba(0, 0, 0, 0);
|
|
1464
1480
|
bottom: 0;
|
|
1465
1481
|
transition:
|
|
1466
1482
|
0.3s transform ease-in-out,
|
|
1467
1483
|
0.3s box-shadow;
|
|
1468
|
-
${e=>e.$open&&
|
|
1484
|
+
${e=>e.$open&&g.css`
|
|
1469
1485
|
box-shadow:
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
transform:
|
|
1486
|
+
-5px 0 15px 0 rgba(0, 0, 0, 0.1),
|
|
1487
|
+
-3px 0 5px 0 rgba(0, 0, 0, 0.1);
|
|
1488
|
+
transform: translateX(0);
|
|
1473
1489
|
`}
|
|
1474
1490
|
|
|
1475
|
-
${
|
|
1491
|
+
${co} {
|
|
1476
1492
|
box-shadow: none;
|
|
1477
1493
|
padding-left: 0.5em;
|
|
1478
1494
|
padding-right: 0.5em;
|
|
1479
1495
|
font-size: 1.1em;
|
|
1480
1496
|
}
|
|
1481
|
-
`,
|
|
1497
|
+
`,Oc=g.default.div`
|
|
1498
|
+
display: flex;
|
|
1499
|
+
flex-direction: column;
|
|
1482
1500
|
position: absolute;
|
|
1483
1501
|
transform: translateX(-100%);
|
|
1484
1502
|
background: #fff;
|
|
1485
1503
|
left: 0;
|
|
1486
|
-
top:
|
|
1504
|
+
top: 4rem;
|
|
1487
1505
|
bottom: 0;
|
|
1506
|
+
width: min(90%, 420px);
|
|
1488
1507
|
z-index: 10;
|
|
1489
|
-
overflow
|
|
1508
|
+
overflow: hidden;
|
|
1490
1509
|
transition: 0.5s transform;
|
|
1491
|
-
${e=>e.$open&&
|
|
1510
|
+
${e=>e.$open&&g.css`
|
|
1492
1511
|
transform: translateX(0);
|
|
1493
1512
|
`}
|
|
1494
|
-
`,
|
|
1513
|
+
`,kc=g.default.button`
|
|
1514
|
+
border: 0;
|
|
1495
1515
|
background: rgba(0, 0, 0, 0.4);
|
|
1496
1516
|
pointer-events: none;
|
|
1497
1517
|
position: absolute;
|
|
@@ -1503,10 +1523,10 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
|
|
|
1503
1523
|
opacity: 0;
|
|
1504
1524
|
transition: opacity 0.5s;
|
|
1505
1525
|
|
|
1506
|
-
${e=>e.$open&&
|
|
1526
|
+
${e=>e.$open&&g.css`
|
|
1507
1527
|
pointer-events: visible;
|
|
1508
1528
|
opacity: 1;
|
|
1509
1529
|
`}
|
|
1510
|
-
`,fc=(0,l.memo)(function(e){if(e.layoutMode===`focused`)return(0,u.jsx)(tc,{...e});let t=z(),n=Gn(),r=B(),i=fi(),{vault:a}=(0,l.useContext)(p.ReactVaultContext),o=a||void 0,s=(0,p.useVaultSelector)(e=>e.iiif),d=(0,l.useRef)(null),f=(0,l.useRef)(null),{loading:m,state:h,leftPanels:g,centerPanels:_,rightPanels:v,modals:y=[],actions:b}=i,x=(0,l.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:h,appState:n}),[r,o,t,h,n,s]),S=(0,l.useMemo)(()=>W(g,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[g,x]),C=(0,l.useMemo)(()=>W(_,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,x]),w=(0,l.useMemo)(()=>W(v,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[v,x]),T=(0,l.useMemo)(()=>W(y,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[y,x]),E=(0,l.useMemo)(()=>({...i,leftPanels:S,centerPanels:C,rightPanels:w,modals:T}),[i,S,C,w,T]),O=S.find(e=>e.id===h.leftPanel.current),k=w.find(e=>e.id===h.rightPanel.current),A=C.find(e=>e.id===h.centerPanel.current),j=T.find(e=>e.id===h.modal.current),M=h.pinnedRightPanel.pinned?w.find(e=>e.id===h.pinnedRightPanel.current):void 0,[ne]=ys([`(max-width: 1020px)`]),re=e.isLoading||!1,ie=(0,l.useMemo)(()=>(i.background||[]).map((e,t)=>(0,u.jsx)(l.Fragment,{children:e.render()},t)),[i.background]),N=Ps(`left-panel/${O?.id}`,{left:!0,marginLeft:60,minWidthPx:O?.options?.minWidth||200,maxWidthPx:O?.options?.maxWidth||720,loading:m}),P=Ps(`right-panel/${k?.id}`,{left:!1,minWidthPx:k?.options?.minWidth||320,maxWidthPx:k?.options?.maxWidth||720,loading:m}),ae=k&&(M?.id!==k.id||!(0,te.default)(h.pinnedRightPanel.state,h.rightPanel.state)),oe=N.widthB===`auto`?void 0:()=>N.setWidths({widthA:`auto`,widthB:Va({options:O?.options,fallback:320})}),F=P.widthB===`auto`?void 0:()=>P.setWidths({widthA:`auto`,widthB:Va({options:k?.options,fallback:320})});if((0,l.useLayoutEffect)(()=>{ne&&h.leftPanel.open&&h.rightPanel.open&&(b.leftPanel.close(),b.rightPanel.close())},[ne]),(0,l.useLayoutEffect)(()=>{if(A&&A.onMount)return A.onMount(h.centerPanel.state||A.defaultState||{},{...E,current:b.centerPanel,vault:o},n)},[h.centerPanel.current,A?.id]),(0,l.useLayoutEffect)(()=>{if(h.leftPanel.current&&!O){let e=G(S,h.leftPanel.current);e?b.leftPanel.change({id:e}):b.leftPanel.close()}if(h.centerPanel.current&&!A){let e=G(C,h.centerPanel.current);e?b.centerPanel.change({id:e}):b.centerPanel.close()}if(h.rightPanel.current&&!k){let e=G(w,h.rightPanel.current);e?b.rightPanel.change({id:e}):b.rightPanel.close()}if(h.modal.current&&!j){let e=G(T,h.modal.current);e?b.modal.change({id:e}):b.modal.close()}},[h.leftPanel.current,h.centerPanel.current,h.rightPanel.current,h.modal.current,O?.id,A?.id,k?.id,j?.id,K(S),K(C),K(w),K(T)]),(0,l.useLayoutEffect)(()=>{w.length&&b.rightPanel.change({id:w[0].id}),S.length&&b.leftPanel.change({id:S[0].id}),C.length&&b.centerPanel.change({id:C[0].id})},[]),m)return null;let se=t=>(0,u.jsx)(Zs,{$menu:e.leftPanelMenuPosition||`bottom`,ref:N.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:h.leftPanel.open||t!==`exited`?N.widthB:void 0,minWidth:O?.options?.minWidth},children:re?(0,u.jsx)(Z,{children:(0,u.jsx)(As,{})}):(0,u.jsxs)(u.Fragment,{children:[e.leftPanelMenu?(0,u.jsx)(X,{$open:h.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,u.jsx)(Z,{children:h.leftPanel.open||t!==`exited`?(0,u.jsx)(u.Fragment,{children:O?(0,u.jsx)(ro,{isLeft:!0,noHeader:!0,transition:t,panel:O,state:h.leftPanel,actions:b.leftPanel}):null}):null})]})}),ce=()=>!j||h.modal.open===!1?null:(0,u.jsx)(c.Modal,{title:j.label,onClose:()=>b.modal.close(),children:Ha(j.render(h.modal.state||j.defaultState||{},{...E,current:b.modal,vault:o},n))}),le=()=>(0,u.jsxs)(Zs,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,u.jsx)(X,{$open:h.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,u.jsx)(Z,{children:(0,u.jsx)(ee.ErrorBoundary,{resetKeys:[A?.id],FallbackComponent:za,children:re?(0,u.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,u.jsx)(Os,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):h.centerPanel.open&&A?Ha(A.render(h.centerPanel.state||A.defaultState||{},{...E,current:b.centerPanel,vault:o},n)):null})})]}),ue=t=>(0,u.jsx)(Zs,{$menu:e.rightPanelMenuPosition||`bottom`,ref:P.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:h.rightPanel.open||t!==`exited`?P.widthB:void 0,minWidth:k?.options?.minWidth},children:re?(0,u.jsx)(Z,{children:(0,u.jsx)(As,{})}):(0,u.jsxs)(u.Fragment,{children:[e.rightPanelMenu?(0,u.jsx)(X,{$open:h.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,u.jsx)(Z,{children:h.rightPanel.open||t!==`exited`?(0,u.jsxs)(u.Fragment,{children:[ae?(0,u.jsx)(ro,{panel:k,state:h.rightPanel,actions:b.rightPanel,pinActions:b.pinnedRightPanel,available:w}):null,M?(0,u.jsx)(ro,{panel:M,state:h.pinnedRightPanel,actions:b.pinnedRightPanel,close:b.rightPanel.close}):null]}):null})]})});return ne?(0,u.jsxs)(Ws,{children:[e.hideHeader?null:(0,u.jsxs)(Gs,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsx)(qs,{children:(0,u.jsxs)(nc,{children:[(0,u.jsx)(rc,{children:le()}),(0,u.jsxs)(ic,{children:[S.length>0?(0,u.jsx)(ac,{onClick:b.leftPanel.toggle,children:O?.label}):null,w.length>0?(0,u.jsx)(sc,{children:(0,u.jsxs)(cc,{onClick:b.rightPanel.toggle,children:[(0,u.jsx)(or,{rotate:180}),k?.label]})}):null,(0,u.jsx)(oc,{children:`Preview`})]}),w.length>0?(0,u.jsx)(lc,{$open:h.rightPanel.open,children:ue()}):null,S.length>0?(0,u.jsx)(uc,{$open:h.leftPanel.open,children:se()}):null,S.length>0||w.length>0?(0,u.jsx)(dc,{$open:h.leftPanel.open||h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.close()}}):null]})})]}):(0,u.jsxs)(Ws,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,u.jsxs)(Gs,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(qs,{ref:e=>{N.refs.container.current=e,P.refs.container.current=e},children:[S.length>0?(0,u.jsx)(c.PanelSideMenu,{current:h.leftPanel.current,items:S.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,separator:e.separator,onClick:()=>{h.leftPanel.current===e.id?b.leftPanel.toggle():b.leftPanel.change({id:e.id})}})),open:h.leftPanel.open}):null,S.length>0?(0,u.jsx)(D.Transition,{nodeRef:d,in:h.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Js,{ref:d,$width:N.widthB,$state:e,$motion:!0,children:se(e)}),(0,u.jsx)(Ds,{ref:N.refs.resizer,reset:oe,dir:`left`,transition:e,open:h.leftPanel.open||e!==`exited`,actions:b.leftPanel})]})}):null,(0,u.jsx)(Ys,{children:le()}),w.length>0?(0,u.jsx)(D.Transition,{nodeRef:f,in:h.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ds,{ref:P.refs.resizer,dir:`right`,reset:F,open:h.rightPanel.open,actions:b.rightPanel}),(0,u.jsx)(Xs,{ref:f,$width:P.widthB,$state:e,$motion:!0,children:ue(e)})]})}):null]}),(0,u.jsx)(Ks,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ie}),(0,u.jsx)(ta,{}),(0,u.jsx)(na,{}),(0,u.jsx)(u.Fragment,{children:ce()})]})});function pc(e,t){function n(){t({type:`popStack`,panel:e,payload:void 0})}function r(n){t({type:`change`,panel:e,payload:n})}function i(n){t({type:`open`,panel:e,payload:n})}function a(){t({type:`close`,panel:e,payload:void 0})}function o(){t({type:`toggle`,panel:e,payload:void 0})}function s(){t({type:`minimise`,panel:e,payload:void 0})}function c(n){t({type:`maximise`,panel:e,payload:n})}function u(n){t({type:`setCustomWidth`,panel:e,payload:n})}function d(){t({type:`resetSize`,panel:e,payload:void 0})}function f(n){t({type:`pin`,panel:e,payload:n})}function p(){t({type:`unpin`,panel:e,payload:void 0})}return(0,l.useMemo)(()=>({popStack:n,change:r,open:i,close:a,toggle:o,minimise:s,maximise:c,setCustomWidth:u,resetSize:d,pin:f,unpin:p}),[])}function mc(e,t){if(t.payload&&t.payload.stacked){if(e.current){let n=e.stack[e.stack.length-1];if(n&&n.id===e.current)return;t.payload.unique&&(e.stack=e.stack.filter(t=>t.id!==e.current)),e.stack.push({id:e.current,state:e.state?{...(0,_.original)(e.state)}:{}})}}else e.stack=[]}function hc(e,t){switch(t.type){case`popStack`:if(e.stack.length){let t=e.stack[e.stack.length-1];t&&(e.current=t.id,e.state=t.state),e.stack=e.stack.slice(0,-1)}break;case`change`:t.payload.id!==e.current&&mc(e,t),e.state=t.payload.state,e.current=t.payload.id;break;case`close`:e.open=!1;break;case`open`:e.open=!0,t.payload&&(t.payload.id!==e.current&&mc(e,t),e.state=t.payload.state,e.current=t.payload.id);break;case`toggle`:e.open=!e.open;break;case`maximise`:e.minimised=!1,t.payload&&(e.state=t.payload.state,e.current=t.payload.id);break;case`minimise`:e.minimised=!0;break;case`setCustomWidth`:e.customWidth=t.payload;break;case`resetSize`:e.customWidth=void 0}if(Ba(e))switch(t.type){case`pin`:e.pinned=!0,e.state=t.payload.state,e.current=t.payload.id;break;case`unpin`:e.pinned=!1,e.state=void 0;break}}const gc=(0,_.produce)((e,t)=>{switch(t.panel){case`centerPanel`:hc(e.centerPanel,t);break;case`leftPanel`:hc(e.leftPanel,t);break;case`rightPanel`:hc(e.rightPanel,t);break;case`modal`:hc(e.modal,t);break;case`pinnedRightPanel`:hc(e.pinnedRightPanel,t);break}});function _c(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function vc(){return{leftPanel:_c(),centerPanel:_c(),rightPanel:_c(),modal:_c(),pinnedRightPanel:{..._c(),pinnable:!0,pinned:!1}}}function yc({className:e,variant:t=`light`}){let n=(0,p.useManifest)(),r=(0,p.useVault)(),{edit:i}=li(),a=Jr(),o=Yr(),s=n?.items||[],c=n?.viewingDirection===`right-to-left`||n?.viewingDirection===`bottom-to-top`,d=n?.viewingDirection===`top-to-bottom`||n?.viewingDirection===`bottom-to-top`,f=bc(a)||o.map(bc).find(Boolean)||s[0]?.id||``,m=Math.max(0,s.findIndex(e=>e.id===f)),h=s[m]?.id||``,g=m+1,_=(0,l.useMemo)(()=>s.map((e,t)=>{let n=r.get({id:e.id,type:`Canvas`});return{id:e.id,pageNumber:t+1,labelText:(0,b.getValue)(n?.label)||`Page ${t+1}`}}),[s,r]),v=e=>{let t=s.findIndex(t=>t.id===e),r=s[t];!r||!n||i({id:r.id,type:`Canvas`},{parent:{id:n.id,type:`Manifest`},property:`items`,index:t},{forceOpen:!1})};if(!n||s.length<2)return(0,u.jsx)(`div`,{});let y=s[m-1],x=s[m+1],S=t===`dark`;return(0,u.jsxs)(`nav`,{"aria-label":`Manifest pagination`,className:wc(`inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-1`,`focus-within:ring-2 focus-within:ring-me-primary-500/40`,c&&`flex-row-reverse`,S?`border-white/20 bg-white/10 text-white`:`border-me-gray-300 bg-white text-me-gray-900`,e),children:[(0,u.jsx)(xc,{ariaLabel:`Previous canvas`,disabled:!y,onClick:()=>y&&v(y.id),dark:S,children:(0,u.jsx)(Sc,{reverse:c,vertical:d})}),(0,u.jsxs)(`label`,{htmlFor:`manifest-pagination-page-select`,"aria-label":`Page ${g} of ${s.length}`,className:wc(`relative inline-flex min-h-8 cursor-pointer select-none items-center gap-0.5`,`whitespace-nowrap rounded-full border px-2.5 text-xs font-semibold leading-none`,`focus-within:outline-none focus-within:ring-2 focus-within:ring-me-primary-500/40`,S?`border-white/20 bg-white/10 text-white hover:bg-white/15`:`border-me-gray-300 bg-me-gray-100 text-me-gray-900 hover:bg-me-primary-50`),children:[(0,u.jsxs)(`span`,{children:[g,` / `,s.length]}),(0,u.jsx)(Cc,{className:wc(`shrink-0 text-base`,S?`text-white/60`:`text-me-gray-500`)}),(0,u.jsx)(`select`,{id:`manifest-pagination-page-select`,"aria-label":`Jump to canvas`,value:h,onChange:e=>v(e.target.value),className:`absolute inset-0 cursor-pointer appearance-none border-0 bg-white opacity-0`,children:_.map(e=>(0,u.jsxs)(`option`,{value:e.id,children:[`Page `,e.pageNumber,` - `,e.labelText]},e.id))})]}),(0,u.jsx)(xc,{ariaLabel:`Next canvas`,disabled:!x,onClick:()=>x&&v(x.id),dark:S,children:(0,u.jsx)(Sc,{reverse:!c,vertical:d})})]})}function bc(e){let t=e?.resource?.source;return t?.type===`Canvas`?t.id:null}function xc({ariaLabel:e,children:t,dark:n,disabled:r,onClick:i}){return(0,u.jsx)(`button`,{type:`button`,"aria-label":e,disabled:r,onClick:i,className:wc(`inline-flex h-8 w-8 items-center justify-center rounded-full border-0 bg-transparent p-0`,`text-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-me-primary-500/50`,n?`text-white hover:bg-white/15 disabled:text-white/40 disabled:hover:bg-transparent`:`text-me-gray-900 hover:bg-me-primary-50 disabled:text-me-gray-500 disabled:hover:bg-transparent`,`disabled:cursor-not-allowed`),children:t})}function Sc({reverse:e,vertical:t}){return(0,u.jsx)(e?c.ArrowRightIcon:c.BackIcon,{"aria-hidden":!0,className:wc(`block`,t&&`rotate-90`)})}function Cc(e){return(0,u.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,"aria-hidden":!0,...e,children:(0,u.jsx)(`path`,{fill:`currentColor`,d:`m7 10l5 5l5-5z`})})}function wc(...e){return e.filter(Boolean).join(` `)}const Tc=new WeakMap;function Ec(e,t){let n={port:t,lastActionId:`@genesis`},r=Dc(e);function i(e){t.postMessage(typeof e==`string`?e:JSON.stringify(e))}function a(){i({_id:Bt(),_type:`init-response`,_lastActionId:n.lastActionId,data:e.getState()})}function o(e){i({_id:e,_type:`vault-action-rejection`,_lastActionId:n.lastActionId,action:e})}function s(e){let t=kc(e.data);if(t){if(t._type===`init-request`){a();return}t._type===`vault-action`&&o(t._id)}}return r.targets.add(n),t.addEventListener(`message`,s),t.start(),()=>{t.removeEventListener(`message`,s),r.targets.delete(n),r.targets.size===0&&e.dispatch===r.patchedDispatch&&(e.dispatch=r.originalDispatch,Tc.delete(e)),t.close()}}function Dc(e){let t=Tc.get(e);if(t)return t;let n=e.dispatch.bind(e),r=new Set,i=(e=>{let t=n(e);for(let t of r)Oc(t,e);return t}),a={originalDispatch:n,patchedDispatch:i,targets:r};return e.dispatch=i,Tc.set(e,a),a}function Oc(e,t){let n={_id:Bt(),_type:`vault-action`,_lastActionId:e.lastActionId,action:t};e.lastActionId=n._id,e.port.postMessage(JSON.stringify(n))}function kc(e){try{if(typeof e==`string`)return JSON.parse(e);if(typeof e==`object`&&e)return e}catch{return null}return null}const Ac=(0,l.createContext)({resource:null});function jc(){return(0,l.useContext)(Ac)}function Mc(){let e=(0,p.useVault)(),{resource:t}=jc();M(t,`Nothing selected`);let{id:n,type:r}=t;return(0,p.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function Nc(){let{resource:e}=jc();return e}function Pc({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,u.jsx)(Ac.Provider,{value:(0,l.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}var Fc=class extends l.Component{constructor(...e){super(...e),V(this,`state`,{hasError:!1})}static getDerivedStateFromError(e){return console.error(e),{hasError:!0}}componentDidCatch(e,t){console.error(`Uncaught error:`,e,t)}render(){return this.state.hasError?(0,u.jsx)(`h1`,{children:`Sorry.. there was an error`}):this.props.children}};function Ic(e,t){return typeof e==`string`?{id:e,state:t}:e}const Lc=(0,l.memo)(function(e){let t=z(),n=_s(),r=t.layout,[i,a]=(0,l.useReducer)(gc,void 0,vc),o={centerPanel:pc(`centerPanel`,a),leftPanel:pc(`leftPanel`,a),rightPanel:pc(`rightPanel`,a),pinnedRightPanel:pc(`pinnedRightPanel`,a),modal:pc(`modal`,a),editingStack:qr()};function s(e){let t=r.rightPanels.find(t=>t.id===e);if(t)return[t,o.rightPanel,o.pinnedRightPanel];let n=r.centerPanels.find(t=>t.id===e);if(n)return[n,o.centerPanel];let i=r.leftPanels.find(t=>t.id===e);if(i)return[i,o.leftPanel];M(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Ic(e,t),[o,c,l]=s(r);if(l&&o.options?.openPinned)l.pin({id:r,state:{...o.defaultState||{},...i||{}}});else{let e={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.open`,e),c.open(e)}}function d(e,t){let{id:r,state:i}=Ic(e,t),[a,o]=s(r),c={id:r,state:{...a.defaultState||{},...i||{}},stacked:!0};n.emit(`layout.open`,c),o.open(c)}function f(e,t){let{id:r,state:i,stacked:a}=Ic(e,t),[o,c]=s(r),l={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.change`,l),c.change(l)}function p(e,t){let{id:r}=Ic(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function h(e,t){let{id:r}=Ic(e,t),[,i]=s(r);n.emit(`layout.toggle`,{id:r}),i.toggle()}function g(e,t={},{reset:i,property:a,stacked:s,forceOpen:c,selectedTab:l}={}){let u={resource:(0,m.isSpecificResource)(e)?e:{type:`SpecificResource`,source:e},...t};n.emit(`layout.edit`,u),o.editingStack.edit(u,i),r.rightPanels.find(e=>e.id===`@manifest-editor/editor`)&&(c?o.rightPanel.open({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}):o.rightPanel.change({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}))}async function _(e){o.editingStack.create(e,{}),n.emit(`layout.create`,e),r.modals?.find(e=>e.id===`@manifest-editor/creator`)?o.modal.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e}):r.rightPanels.find(e=>e.id===`@manifest-editor/creator`)&&o.rightPanel.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e})}let v={open:c,change:f,close:p,toggle:h,stack:d,edit:g,create:_};return(0,u.jsx)(ai.Provider,{value:(0,l.useMemo)(()=>({...o,...v}),[r]),children:(0,u.jsx)(oi.Provider,{value:i,children:e.children})})}),Rc=[{id:`universal-viewer`,config:{url:`https://universalviewer.dev/#?iiifManifestId={manifestId}`},type:`external-manifest-preview`,label:`Universal viewer`},{id:`mirador-3`,type:`external-manifest-preview`,label:`Mirador 3`,config:{url:`https://tomcrane.github.io/scratch/mirador3/?iiif-content={manifestId}`}},{id:`annona`,type:`external-manifest-preview`,label:`Annona`,config:{url:`https://ncsu-libraries.github.io/annona/tools/#/display?url={manifestId}&viewtype=iiif-storyboard&settings=%7B%22fullpage%22%3Atrue%7D`}},{id:`iiif-preview`,config:{url:`https://iiif-preview.digirati.services/store`},type:`iiif-preview-service`,label:`IIIF Preview`}],zc=new O.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function Bc({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o,backgroundActionPersistence:s}){let c=Wn(),d=F(),f=(0,l.useMemo)(()=>P(d,{previews:e?.previews||(d.previews?.length?d.previews:Rc)},e),[d,e]),m=(0,l.useMemo)(()=>({appId:c.appId,instanceId:c.instanceId,rootResource:{id:a.id,type:a.type}}),[c.appId,c.instanceId,a.id,a.type]);return(0,u.jsx)(Fc,{children:(0,u.jsx)(p.ImageServiceLoaderContext.Provider,{value:zc,children:(0,u.jsx)(dr,{resource:a,children:(0,u.jsx)(uo,{children:(0,u.jsx)(h.ThemeProvider,{theme:r||xo,children:(0,u.jsxs)(ce,{config:f,saveConfig:t,children:[(0,u.jsx)(Bn,{config:f}),(0,u.jsx)(ri,{children:(0,u.jsx)(Lc,{children:(0,u.jsx)(Mt,{persistence:s,persistenceKey:m,children:(0,u.jsx)(Vo,{children:(0,u.jsx)(Ki,{children:(0,u.jsx)(Cr,{previews:i||[],configs:f.previews,children:(0,u.jsx)(p.AtlasStoreProvider,{children:n})})})})})})})]})})})})})})}const Vc=new Set([`Collection`,`Manifest`,`Canvas`,`Range`,`AnnotationPage`,`Annotation`,`ContentResource`,`Agent`]),Hc={satisfied:0,missing:0,invalid:0,disallowed:0,"not-applicable":0},Uc=new Set([`label`,`summary`,`language`,`navDate`,`provider`,`requiredStatement`,`rights`,`thumbnail`]);function Wc(e){return e?Array.isArray(e)?e.filter(Boolean):e.split(`.`).filter(Boolean):[]}function Gc(e,t){let n=Wc(e),r=Wc(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function Kc(e,t){let n=e;for(let e of Wc(t)){if(n==null)return;n=n[e]}return n}function qc(e,t,n){let r=Wc(t);if(!r.length)return n;let i=Array.isArray(e)?[...e]:{...e||{}},a=i;return r.forEach((e,t)=>{if(t===r.length-1){a[e]=n;return}let i=a[e];a[e]=Array.isArray(i)?[...i]:{...i||{}},a=a[e]}),i}function Q(e){if(e==null)return!1;if(typeof e==`string`)return e.trim().length>0;if(typeof e==`number`||typeof e==`boolean`)return!0;if(Array.isArray(e))return e.some(e=>Q(e));if(typeof e!=`object`)return!1;let t=Object.entries(e);return t.length?t.every(([,e])=>typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`))?t.some(([,e])=>Q(e)):!0:!1}function Jc(e){return Array.isArray(e)?e.map(Jc):e&&typeof e==`object`?Object.keys(e).sort().reduce((t,n)=>(t[n]=Jc(e[n]),t),{}):e}function Yc(e,t){return JSON.stringify(Jc(e))===JSON.stringify(Jc(t))}function Xc(e,t,n,r){let i=Wc(n);for(let n of e||[])for(let e of n.terminology?.properties||[])if(!(e.entityType&&e.entityType!==t)&&Gc(e.path,i))return e.label;return r||Cl(i)}function Zc(e,t,n){let r=Wc(n),i=[],a,o,s=!1,c=!1;if(!t||!Vc.has(t.type))return{entityType:t?.type,path:r,label:Xc(e,t?.type,r),disallowed:!1,required:!1,rules:i};for(let n of e||[])for(let e of n.rules||[])!(`entityType`in e)||!(`path`in e)||e.entityType===t.type&&Gc(e.path,r)&&(i.push(e),e.type===`disallow-property`&&(s=!0),e.type===`require-non-empty`&&(c=!0),e.type===`fixed-value`&&!o&&(a=e.value,o=e,c=!0));return{entityType:t.type,path:r,label:Xc(e,t.type,r),disallowed:s,required:c,fixedValue:a,fixedValueRule:o,rules:i}}function Qc(e,t,n){let r=e||[],i=$c(t,n),a=[];for(let e of r)for(let[n,r]of(e.rules||[]).entries())a.push(...el(e,r,n,i,t));return{specifications:r,results:a,counts:cl(a)}}function $c(e,t){let n=[],r=new Set;function i(t){let a=ul(t);if(!a)return;if(a.type===`SpecificResource`){i(t?.source);return}let o=ll(e,t)||ll(e,a);if(!o||!o.type)return;let s=`${o.type}:${o.id||JSON.stringify(a)}`;if(!r.has(s)){r.add(s),Vc.has(o.type)&&n.push({ref:{id:o.id,type:o.type},resource:o});for(let e of dl(o))i(e)}}return i(t),n}function el(e,t,n,r,i){switch(t.type){case`disallow-property`:case`require-non-empty`:case`fixed-value`:return tl(e,t,n,r);case`iiif:canvas-with-image-service`:return[nl(e,t,n,r,i)];case`iiif:thumbnail-from-body-service`:return rl(e,t,n,r,i);case`iiif:valid-rights`:return il(e,t,n,r);case`iiif:required-statement`:return al(e,t,n,r);case`iiif:metadata-template`:return ol(e,t,n,r);default:return[]}}function tl(e,t,n,r){let i=r.filter(e=>e.ref.type===t.entityType),a=Xc(e?[e]:[],t.entityType,t.path);return i.length?i.map(({ref:r,resource:i})=>{let o=Kc(i,t.path),s=Q(o);if(t.type===`disallow-property`)return $(e,t,n,{target:r,path:t.path,status:s?`disallowed`:`satisfied`,displayLabel:a,actual:o,message:s?`${a} is present but is not allowed.`:`${a} is not present.`,editorTarget:sl(r,t.path)});if(t.type===`require-non-empty`)return $(e,t,n,{target:r,path:t.path,status:s?`satisfied`:`missing`,displayLabel:a,actual:o,message:s?`${a} has a value.`:`${a} must be filled in.`,editorTarget:sl(r,t.path)});let c=Yc(o,t.value);return $(e,t,n,{target:r,path:t.path,status:c?`satisfied`:s?`invalid`:`missing`,displayLabel:a,expected:t.value,actual:o,message:c?`${a} matches the required value.`:s?`${a} does not match the required value.`:`${a} must use the required value.`,editorTarget:sl(r,t.path)})}):[$(e,t,n,{status:`not-applicable`,displayLabel:a,message:`No ${t.entityType} resources were found for ${a}.`,path:t.path})]}function nl(e,t,n,r,i){let a=r.filter(e=>e.ref.type===`Canvas`),o=fl(t),s=a.find(({resource:e})=>pl(ml(e,i),o));return $(e,t,n,{target:s?.ref,status:s?`satisfied`:`missing`,displayLabel:t.label||`Canvas image service`,expected:o,message:s?`A canvas contains the required image service.`:o.length?`A canvas must contain one of the required image services: ${o.join(`, `)}.`:`A canvas must contain a painting body with an image service.`,editorTarget:s?sl(s.ref,[`items`]):void 0})}function rl(e,t,n,r,i){let a=t.entityType||`Canvas`,o=r.filter(e=>e.ref.type===a);return o.length?o.map(({ref:o,resource:s})=>{let c=a===`Manifest`?r.filter(e=>e.ref.type===`Canvas`).flatMap(e=>ml(e.resource,i)):ml(s,i),l=hl(s,c,i),u=Q(s.thumbnail);return $(e,t,n,{target:o,path:[`thumbnail`],status:l?`satisfied`:c.length?u?`invalid`:t.requireThumbnail===!1?`not-applicable`:`missing`:`not-applicable`,displayLabel:Xc([e],o.type,[`thumbnail`],`Thumbnail`),expected:c,actual:s.thumbnail,message:l?`Thumbnail uses the same image service as the painting content.`:c.length?u?`Thumbnail does not use the same image service as the painting content.`:`Thumbnail must be created from the painting image service.`:`No painting image service was found to compare against.`,editorTarget:sl(o,[`thumbnail`])})}):[$(e,t,n,{status:`not-applicable`,displayLabel:`Thumbnail`,message:`No ${a} resources were found for thumbnail checks.`})]}function il(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=t.allowed||[];return a.map(({ref:r,resource:i})=>{let a=i.rights,s=Q(a),c=typeof a==`string`&&o.map(yl).includes(yl(a));return $(e,t,n,{target:r,path:[`rights`],status:c?`satisfied`:!s&&t.required!==!1?`missing`:`invalid`,displayLabel:Xc([e],r.type,[`rights`],`Rights`),expected:o,actual:a,message:c?`Rights uses an allowed URI.`:!s&&t.required!==!1?`Rights must use an allowed URI.`:`Rights is not one of the allowed URIs.`,editorTarget:sl(r,[`rights`])})})}function al(e,t,n,r){let i=t.entityType||`Manifest`;return r.filter(e=>e.ref.type===i).map(({ref:r,resource:i})=>{let a=i.requiredStatement,o=t.label?bl(a?.label,t.label):Q(a?.label),s=t.value||t.valueRequired!==!1,c=t.value?bl(a?.value,t.value):!s||Q(a?.value),l=Q(a);return $(e,t,n,{target:r,path:[`requiredStatement`],status:o&&c?`satisfied`:l?`invalid`:`missing`,displayLabel:Xc([e],r.type,[`requiredStatement`],`Required statement`),expected:t.value||t.label,actual:a,message:o&&c?`Required statement is complete.`:l?`Required statement does not match the specification.`:`Required statement must be filled in.`,editorTarget:sl(r,[`requiredStatement`])})})}function ol(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=[];for(let{ref:r,resource:i}of a){let a=Array.isArray(i.metadata)?i.metadata:[];t.items.forEach((i,s)=>{let c=a.find(e=>bl(e?.label,i.label)),l=i.value?bl(c?.value,i.value):i.valueRequired?Q(c?.value):!0,u=c&&l?`satisfied`:c&&i.value?`invalid`:`missing`,d=Sl(i.label);o.push($(e,t,n,{idSuffix:`metadata-${s}`,target:r,path:[`metadata`],status:u,displayLabel:d||`Metadata`,expected:i.value||i.label,actual:c,message:c&&l?`${d||`Metadata`} is present.`:c?`${d||`Metadata`} needs a value.`:`${d||`Metadata`} metadata must be added.`,editorTarget:sl(r,[`metadata`])}))})}return o}function $(e,t,n,r){let i=t.id||`${t.type}-${n}`,a=r.idSuffix?`-${r.idSuffix}`:``;return{id:`${e.id}-${i}-${r.target?.type||`root`}-${r.target?.id||`none`}${a}`,specificationId:e.id,specificationLabel:e.label,ruleId:i,ruleType:t.type,ruleLabel:t.label||r.displayLabel,ruleIndex:n,target:r.target,path:r.path,status:r.status,displayLabel:r.displayLabel,message:t.message||r.message,expected:r.expected,actual:r.actual,editorTarget:r.editorTarget}}function sl(e,t){let n=t[0];return{resource:e,propertyPath:t,selectedTab:n===`metadata`?`@manifest-editor/metadata`:n&&Uc.has(n)?`@manifest-editor/descriptive-properties`:void 0}}function cl(e){let t={...Hc};for(let n of e)t[n.status]+=1;return t}function ll(e,t){let n=ul(t);if(!n)return t;try{return e.get(n,{skipSelfReturn:!1})||t}catch{try{return e.get(n)||t}catch{return t}}}function ul(e){return!e||typeof e!=`object`?null:e.type===`SpecificResource`?{id:e.id||e.source?.id||``,type:`SpecificResource`}:typeof e.id==`string`&&typeof e.type==`string`?{id:e.id,type:e.type}:null}function dl(e){if(!e||typeof e!=`object`)return[];let t=[];for(let n of[`items`,`structures`,`annotations`,`thumbnail`,`provider`,`homepage`,`rendering`,`seeAlso`,`body`,`target`,`source`]){let r=e[n];Array.isArray(r)?t.push(...r):r&&t.push(r)}return t}function fl(e){return[...e.serviceIds||[],...e.serviceId?[e.serviceId]:[]].filter(Boolean)}function pl(e,t){let n=new Set(e.filter(Boolean));return t.length?t.some(e=>n.has(e)):n.size>0}function ml(e,t){let n=vl(t,e?.items),r=[];for(let e of n){let n=vl(t,e?.items);for(let e of n)if((Array.isArray(e?.motivation)?e.motivation:[e?.motivation]).includes(`painting`))for(let n of gl(e?.body,t))r.push(..._l(n))}return Array.from(new Set(r))}function hl(e,t,n){let r=vl(n,e?.thumbnail);if(!r.length||!t.length)return!1;for(let e of r){let n=_l(e),r=typeof e?.id==`string`?e.id:``;if(n.some(e=>t.includes(e))||t.some(e=>r.startsWith(e)))return!0}return!1}function gl(e,t){let n=ll(t,e);return n?Array.isArray(n)?n.flatMap(e=>gl(e,t)):n.type===`SpecificResource`?gl(n.source,t):n.type===`Choice`?n.items?.flatMap(e=>gl(e,t))||[]:[n]:[]}function _l(e){let t=e?.service||e?.services,n=Array.isArray(t)?t:t?[t]:[],r=[];for(let e of n){let t=typeof e==`string`?e:e?.id||e?.[`@id`];typeof t==`string`&&t&&r.push(t)}return Array.from(new Set(r))}function vl(e,t){if(!t)return[];let n=Array.isArray(t)?t:[t];try{let t=e.get(n);if(Array.isArray(t))return t.filter(Boolean)}catch{}return n.map(t=>ll(e,t)).filter(Boolean)}function yl(e){return e.replace(/^https:/,`http:`).replace(/\/?$/,`/`)}function bl(e,t){return typeof t==`string`?xl(e).some(e=>e===t):Yc(e,t)}function xl(e){return e?typeof e==`string`?[e.trim()].filter(Boolean):Array.isArray(e)?e.flatMap(xl):typeof e==`object`?Object.values(e).flatMap(xl):[]:[]}function Sl(e){return typeof e==`string`?e:xl(e)[0]||``}function Cl(e){return(e[e.length-1]||`Property`).replace(/([A-Z])/g,` $1`).replace(/[-_]/g,` `).replace(/^./,e=>e.toUpperCase())}const wl=(0,l.createContext)([]);function Tl({children:e,specifications:t}){let n=(0,l.useMemo)(()=>t||[],[t]);return(0,u.jsx)(wl.Provider,{value:n,children:e})}function El(){return(0,l.useContext)(wl)}function Dl(e){let t=B(),n=El(),r=e||t;return(0,p.useVaultSelector)((e,t)=>Qc(n,t,r),[n,r.id,r.type])}function Ol(){let e=El();return(0,l.useMemo)(()=>({getLabel(t,n,r){return Xc(e,t,n,r)}}),[e])}function kl(e,t){let n=El();return(0,l.useMemo)(()=>Zc(n,e,t),[n,e?.id,e?.type,JSON.stringify(t)])}const Al={},jl=(0,l.createContext)(`global`);function Ml(){return(0,l.useContext)(jl)}function Nl(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Pl(e){let t=Ml(),[,n]=(0,l.useReducer)(e=>e+1,0),r=(0,l.useMemo)(()=>(Al[t]||(Al[t]={}),Al[t][e]||(Al[t][e]={name:e,emitter:(0,T.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),Al[t][e]),[t,e]);return Fl(r,`abort`,n),Fl(r,`error`,n),Fl(r,`complete`,n),Fl(r,`running`,n),r}function Fl(e,t,n){let r=(0,l.useCallback)(()=>n(e),[n]);(0,l.useEffect)(()=>{let n=e.emitter;return n.on(t,r),()=>n.off(t,r)},[t,r,e.emitter])}const Il=()=>void 0;function Ll(e,t){let n=Pl(e);return Fl(n,`complete`,t||Il),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=Nl();t.promise.then(()=>n.emitter.emit(`complete`)).catch(()=>n.emitter.emit(`error`)),n.status=`running`,n.request=e,n.promise=t.promise,n.resolve=t.resolve,n.reject=t.reject,n.emitter.emit(`running`)},n]}function Rl(e,t){let n=Pl(e);return Fl(n,`running`,t),[e=>{n.status===`running`&&(n.response=e,n.status=`complete`,n.resolve())},n,(e,t)=>{n.status===`running`&&(n.error=t||e,n.status=`error`,n.reject(e))}]}function zl({children:e}){return(0,u.jsx)(jl.Provider,{value:(0,l.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function Bl(e){return!1}function Vl({as:e,reference:t,onReference:n,onLink:r,onAnalysis:i,onDropReference:a,onDropLink:o,onDropAnalysis:s,onPasteReference:c,onPasteLink:d,onPasteAnalysis:f,...p}){let m=e||`div`,h=a||n,g=c||n,_=d||r,v=f||i,y=(0,l.useMemo)(()=>t,[t?.id,t?.type]),b=(0,l.useCallback)(function(e){e.defaultPrevented||(e.preventDefault(),e.clipboardData&&y&&y.id&&y.type&&e.clipboardData.setData(`application/json+vault`,JSON.stringify({id:y.id,type:y.type})))},[y]),x=(0,l.useCallback)(async function(e){if(!e.defaultPrevented&&(e.preventDefault(),e.clipboardData)){if(p.onLoading&&p.onLoading(),g){let t=e.clipboardData.getData(`application/json+vault`);if(t)try{let e=JSON.parse(t);e&&e.id&&e.type&&g(e)}catch{}}if(_||v){let t=e.clipboardData.getData(`text`);if(t.startsWith(`http`)){let e=t.split(`
|
|
1511
|
-
`);for(let t of e){if(v)try{let e=await
|
|
1530
|
+
`,Ac=(0,u.memo)(function(e){if(e.layoutMode===`focused`)return(0,d.jsx)(bc,{...e});let t=U(),n=Un(),r=W(),i=pi(),{vault:a}=(0,u.useContext)(m.ReactVaultContext),o=a||void 0,s=(0,m.useVaultSelector)(e=>e.iiif),c=(0,u.useRef)(null),f=(0,u.useRef)(null),{loading:p,state:h,leftPanels:g,centerPanels:_,rightPanels:v,modals:y=[],actions:b}=i,x=(0,u.useMemo)(()=>({rootResource:r,vault:o,app:t,layoutState:h,appState:n}),[r,o,t,h,n,s]),S=(0,u.useMemo)(()=>_c(g,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[g,x]),w=(0,u.useMemo)(()=>_c(_,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[_,x]),T=(0,u.useMemo)(()=>_c(v,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[v,x]),E=(0,u.useMemo)(()=>_c(y,x,(e,t)=>{console.error(`Layout panel "${e.id}" failed support check`,t)}),[y,x]),D=(0,u.useMemo)(()=>S.filter(e=>e.modal),[S]),k=(0,u.useMemo)(()=>S.filter(e=>!e.modal),[S]),A=(0,u.useMemo)(()=>[...E,...D],[E,D]),j=(0,u.useMemo)(()=>({...i,leftPanels:S,centerPanels:w,rightPanels:T,modals:A}),[i,S,w,T,A]),M=k.find(e=>e.id===h.leftPanel.current),N=T.find(e=>e.id===h.rightPanel.current),P=w.find(e=>e.id===h.centerPanel.current),F=A.find(e=>e.id===h.modal.current),te=h.modal.open&&D.some(e=>e.id===h.modal.current)?h.modal.current:h.leftPanel.current,ne=h.pinnedRightPanel.pinned?T.find(e=>e.id===h.pinnedRightPanel.current):void 0,[I]=Rs([`(max-width: 1020px)`]),re=e.isLoading||!1,L=(0,u.useMemo)(()=>(i.background||[]).map((e,t)=>(0,d.jsx)(u.Fragment,{children:e.render()},t)),[i.background]),R=$s(`left-panel/${M?.id}`,{left:!0,marginLeft:60,minWidthPx:M?.options?.minWidth||200,maxWidthPx:M?.options?.maxWidth||720,loading:p}),z=$s(`right-panel/${N?.id}`,{left:!1,minWidthPx:N?.options?.minWidth||320,maxWidthPx:N?.options?.maxWidth||720,loading:p}),ie=N&&(ne?.id!==N.id||!(0,ee.default)(h.pinnedRightPanel.state,h.rightPanel.state)),ae=R.widthB===`auto`?void 0:()=>R.setWidths({widthA:`auto`,widthB:no({options:M?.options,fallback:320})}),oe=z.widthB===`auto`?void 0:()=>z.setWidths({widthA:`auto`,widthB:no({options:N?.options,fallback:320})});if((0,u.useLayoutEffect)(()=>{I&&h.leftPanel.open&&h.rightPanel.open&&(b.leftPanel.close(),b.rightPanel.close())},[I]),(0,u.useLayoutEffect)(()=>{if(P&&P.onMount)return P.onMount(h.centerPanel.state||P.defaultState||{},{...j,current:b.centerPanel,vault:o},n)},[h.centerPanel.current,P?.id]),(0,u.useLayoutEffect)(()=>{if(h.leftPanel.current&&!M){let e=vc(k,h.leftPanel.current);e?b.leftPanel.change({id:e}):b.leftPanel.close()}if(h.centerPanel.current&&!P){let e=vc(w,h.centerPanel.current);e?b.centerPanel.change({id:e}):b.centerPanel.close()}if(h.rightPanel.current&&!N){let e=vc(T,h.rightPanel.current);e?b.rightPanel.change({id:e}):b.rightPanel.close()}if(h.modal.current&&!F){let e=vc(A,h.modal.current);e?b.modal.change({id:e}):b.modal.close()}},[h.leftPanel.current,h.centerPanel.current,h.rightPanel.current,h.modal.current,M?.id,P?.id,N?.id,F?.id,Q(k),Q(w),Q(T),Q(A)]),(0,u.useLayoutEffect)(()=>{T.length&&b.rightPanel.change({id:T[0].id}),k.length&&b.leftPanel.change({id:k[0].id}),w.length&&b.centerPanel.change({id:w[0].id})},[]),p)return null;let se=t=>(0,d.jsx)(gc,{$menu:e.leftPanelMenuPosition||`bottom`,ref:R.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:h.leftPanel.open||t!==`exited`?R.widthB:void 0,minWidth:M?.options?.minWidth},children:re?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.leftPanelMenu?(0,d.jsx)(X,{$open:h.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,d.jsx)(Z,{children:h.leftPanel.open||t!==`exited`?(0,d.jsx)(d.Fragment,{children:M?(0,d.jsx)(mo,{isLeft:!0,noHeader:!0,transition:t,panel:M,state:h.leftPanel,actions:b.leftPanel}):null}):null})]})}),ce=()=>F?(0,d.jsx)(l.Modal,{title:F.label,open:h.modal.open,onClose:()=>b.modal.close(),children:F.modal?(0,d.jsx)(`div`,{className:`h-[70vh] min-h-[60vh] max-h-full flex w-full`,children:(0,d.jsx)(mo,{isLeft:!0,isModal:!0,noHeader:!0,panel:F,state:h.modal,actions:b.modal})}):ro(F.render(h.modal.state||F.defaultState||{},{...j,current:b.modal,vault:o,isModal:!0},n))}):null,le=()=>(0,d.jsxs)(gc,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,d.jsx)(X,{$open:h.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,d.jsx)(Z,{children:(0,d.jsx)(C.ErrorBoundary,{resetKeys:[P?.id],FallbackComponent:io,children:re?(0,d.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,d.jsx)(qs,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):h.centerPanel.open&&P?ro(P.render(h.centerPanel.state||P.defaultState||{},{...j,current:b.centerPanel,vault:o},n)):null})})]}),ue=t=>(0,d.jsx)(gc,{$menu:e.rightPanelMenuPosition||`bottom`,ref:z.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:h.rightPanel.open||t!==`exited`?z.widthB:void 0,minWidth:N?.options?.minWidth},children:re?(0,d.jsx)(Z,{children:(0,d.jsx)(Ys,{})}):(0,d.jsxs)(d.Fragment,{children:[e.rightPanelMenu?(0,d.jsx)(X,{$open:h.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,d.jsx)(Z,{children:h.rightPanel.open||t!==`exited`?(0,d.jsxs)(d.Fragment,{children:[ie?(0,d.jsx)(mo,{panel:N,state:h.rightPanel,actions:b.rightPanel,pinActions:b.pinnedRightPanel,available:T}):null,ne?(0,d.jsx)(mo,{panel:ne,state:h.pinnedRightPanel,actions:b.pinnedRightPanel,close:b.rightPanel.close}):null]}):null})]})});return I?(0,d.jsxs)(lc,{children:[e.hideHeader?null:(0,d.jsxs)(uc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsx)(fc,{children:(0,d.jsxs)(xc,{children:[(0,d.jsxs)(Cc,{children:[k.length>0?(0,d.jsx)(wc,{type:`button`,"aria-expanded":h.leftPanel.open,onClick:()=>{b.rightPanel.close(),b.leftPanel.toggle()},children:M?.label}):null,T.length>0?(0,d.jsx)(Tc,{children:(0,d.jsxs)(Ec,{type:`button`,"aria-expanded":h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.toggle()},children:[(0,d.jsx)(nr,{"aria-hidden":`true`,rotate:90}),N?.label]})}):null]}),(0,d.jsx)(Sc,{children:le()}),T.length>0?(0,d.jsx)(Dc,{$open:h.rightPanel.open,children:ue()}):null,k.length>0?(0,d.jsxs)(Oc,{$open:h.leftPanel.open,children:[(0,d.jsx)(`nav`,{"aria-label":`Left panel tabs`,className:`flex flex-none overflow-x-auto border-b border-gray-300`,children:k.map(e=>(0,d.jsxs)(`button`,{type:`button`,"aria-pressed":h.leftPanel.current===e.id,className:`flex flex-1 shrink-0 items-center justify-center gap-1.5 border-0 border-b-[3px] p-3 text-gray-700 [&>svg]:shrink-0 [&>svg]:text-xl ${h.leftPanel.current===e.id?`border-b-[#b83265] bg-[#f9e8ef]`:`border-b-transparent bg-white`}`,onClick:()=>{b.rightPanel.close(),b.leftPanel.open({id:e.id,state:e.defaultState})},children:[e.icon,e.label]},e.id))}),se()]}):null,S.length>0||T.length>0?(0,d.jsx)(kc,{type:`button`,"aria-label":`Close panels`,$open:h.leftPanel.open||h.rightPanel.open,onClick:()=>{b.leftPanel.close(),b.rightPanel.close()}}):null]})}),(0,d.jsx)(`div`,{className:`hidden`,children:L}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:ce()}),(0,d.jsx)(Da,{})]}):(0,d.jsxs)(lc,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,d.jsxs)(uc,{children:[e.header||null,e.menu?(0,d.jsx)(`menu`,{children:e.menu}):null]}),(0,d.jsxs)(fc,{ref:e=>{R.refs.container.current=e,z.refs.container.current=e},children:[S.length>0?(0,d.jsx)(l.PanelSideMenu,{current:te,items:S.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,separator:e.separator,onClick:()=>{if(e.modal){h.modal.open&&h.modal.current===e.id?b.modal.close():b.modal.open({id:e.id,state:e.defaultState});return}h.leftPanel.current===e.id?b.leftPanel.toggle():b.leftPanel.change({id:e.id})}})),open:h.leftPanel.open}):null,k.length>0?(0,d.jsx)(O.Transition,{nodeRef:c,in:h.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(pc,{ref:c,$width:R.widthB,$state:e,$motion:!0,children:se(e)}),(0,d.jsx)(Ks,{ref:R.refs.resizer,reset:ae,dir:`left`,transition:e,open:h.leftPanel.open||e!==`exited`,actions:b.leftPanel})]})}):null,(0,d.jsx)(mc,{children:le()}),T.length>0?(0,d.jsx)(O.Transition,{nodeRef:f,in:h.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(Ks,{ref:z.refs.resizer,dir:`right`,reset:oe,open:h.rightPanel.open,actions:b.rightPanel}),(0,d.jsx)(hc,{ref:f,$width:z.widthB,$state:e,$motion:!0,children:ue(e)})]})}):null]}),(0,d.jsx)(dc,{children:e.footer||null}),(0,d.jsx)(`div`,{className:`hidden`,children:L}),(0,d.jsx)(ea,{}),(0,d.jsx)(ta,{}),(0,d.jsx)(d.Fragment,{children:ce()}),(0,d.jsx)(Da,{})]})});function jc(e,t){function n(){t({type:`popStack`,panel:e,payload:void 0})}function r(n){t({type:`change`,panel:e,payload:n})}function i(n){t({type:`open`,panel:e,payload:n})}function a(){t({type:`close`,panel:e,payload:void 0})}function o(){t({type:`toggle`,panel:e,payload:void 0})}function s(){t({type:`minimise`,panel:e,payload:void 0})}function c(n){t({type:`maximise`,panel:e,payload:n})}function l(n){t({type:`setCustomWidth`,panel:e,payload:n})}function d(){t({type:`resetSize`,panel:e,payload:void 0})}function f(n){t({type:`pin`,panel:e,payload:n})}function p(){t({type:`unpin`,panel:e,payload:void 0})}return(0,u.useMemo)(()=>({popStack:n,change:r,open:i,close:a,toggle:o,minimise:s,maximise:c,setCustomWidth:l,resetSize:d,pin:f,unpin:p}),[])}function Mc(e,t){if(t.payload&&t.payload.stacked){if(e.current){let n=e.stack[e.stack.length-1];if(n&&n.id===e.current)return;t.payload.unique&&(e.stack=e.stack.filter(t=>t.id!==e.current)),e.stack.push({id:e.current,state:e.state?{...(0,_.original)(e.state)}:{}})}}else e.stack=[]}function Nc(e,t){switch(t.type){case`popStack`:if(e.stack.length){let t=e.stack[e.stack.length-1];t&&(e.current=t.id,e.state=t.state),e.stack=e.stack.slice(0,-1)}break;case`change`:t.payload.id!==e.current&&Mc(e,t),e.state=t.payload.state,e.current=t.payload.id;break;case`close`:e.open=!1;break;case`open`:e.open=!0,t.payload&&(t.payload.id!==e.current&&Mc(e,t),e.state=t.payload.state,e.current=t.payload.id);break;case`toggle`:e.open=!e.open;break;case`maximise`:e.minimised=!1,t.payload&&(e.state=t.payload.state,e.current=t.payload.id);break;case`minimise`:e.minimised=!0;break;case`setCustomWidth`:e.customWidth=t.payload;break;case`resetSize`:e.customWidth=void 0}if(to(e))switch(t.type){case`pin`:e.pinned=!0,e.state=t.payload.state,e.current=t.payload.id;break;case`unpin`:e.pinned=!1,e.state=void 0}}const Pc=(0,_.produce)((e,t)=>{switch(t.panel){case`centerPanel`:Nc(e.centerPanel,t);break;case`leftPanel`:Nc(e.leftPanel,t);break;case`rightPanel`:Nc(e.rightPanel,t);break;case`modal`:Nc(e.modal,t);break;case`pinnedRightPanel`:Nc(e.pinnedRightPanel,t)}});function Fc(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function Ic(){return{leftPanel:Fc(),centerPanel:Fc(),rightPanel:Fc(),modal:Fc(),pinnedRightPanel:{...Fc(),pinnable:!0,pinned:!1}}}function Lc({className:e,variant:t=`light`}){let n=(0,m.useManifest)(),r=(0,m.useVault)(),{edit:i}=ui(),a=Yr(),o=Xr(),s=n?.items||[],c=n?.viewingDirection===`right-to-left`||n?.viewingDirection===`bottom-to-top`,l=n?.viewingDirection===`top-to-bottom`||n?.viewingDirection===`bottom-to-top`,f=Rc(a)||o.map(Rc).find(Boolean)||s[0]?.id||``,p=Math.max(0,s.findIndex(e=>e.id===f)),h=s[p]?.id||``,g=p+1,_=(0,u.useMemo)(()=>s.map((e,t)=>{let n=r.get({id:e.id,type:`Canvas`});return{id:e.id,pageNumber:t+1,labelText:(0,b.getValue)(n?.label)||`Page ${t+1}`}}),[s,r]),v=e=>{let t=s.findIndex(t=>t.id===e),r=s[t];!r||!n||i({id:r.id,type:`Canvas`},{parent:{id:n.id,type:`Manifest`},property:`items`,index:t},{forceOpen:!1})};if(!n||s.length<2)return(0,d.jsx)(`div`,{});let y=s[p-1],x=s[p+1],S=t===`dark`;return(0,d.jsxs)(`nav`,{"aria-label":`Manifest pagination`,className:Hc(`inline-flex shrink-0 items-center gap-1 rounded-full border px-1.5 py-1`,`focus-within:ring-2 focus-within:ring-me-primary-500/40`,c&&`flex-row-reverse`,S?`border-white/20 bg-white/10 text-white`:`border-me-gray-300 bg-white text-me-gray-900`,e),children:[(0,d.jsx)(zc,{ariaLabel:`Previous canvas`,disabled:!y,onClick:()=>y&&v(y.id),dark:S,children:(0,d.jsx)(Bc,{reverse:c,vertical:l})}),(0,d.jsxs)(`label`,{htmlFor:`manifest-pagination-page-select`,"aria-label":`Page ${g} of ${s.length}`,className:Hc(`relative inline-flex min-h-8 cursor-pointer select-none items-center gap-0.5`,`whitespace-nowrap rounded-full border px-2.5 text-xs font-semibold leading-none`,`focus-within:outline-none focus-within:ring-2 focus-within:ring-me-primary-500/40`,S?`border-white/20 bg-white/10 text-white hover:bg-white/15`:`border-me-gray-300 bg-me-gray-100 text-me-gray-900 hover:bg-me-primary-50`),children:[(0,d.jsxs)(`span`,{children:[g,` / `,s.length]}),(0,d.jsx)(Vc,{className:Hc(`shrink-0 text-base`,S?`text-white/60`:`text-me-gray-500`)}),(0,d.jsx)(`select`,{id:`manifest-pagination-page-select`,"aria-label":`Jump to canvas`,value:h,onChange:e=>v(e.target.value),className:`absolute inset-0 cursor-pointer appearance-none border-0 bg-white opacity-0`,children:_.map(e=>(0,d.jsxs)(`option`,{value:e.id,children:[`Page `,e.pageNumber,` - `,e.labelText]},e.id))})]}),(0,d.jsx)(zc,{ariaLabel:`Next canvas`,disabled:!x,onClick:()=>x&&v(x.id),dark:S,children:(0,d.jsx)(Bc,{reverse:!c,vertical:l})})]})}function Rc(e){let t=e?.resource?.source;return t?.type===`Canvas`?t.id:null}function zc({ariaLabel:e,children:t,dark:n,disabled:r,onClick:i}){return(0,d.jsx)(`button`,{type:`button`,"aria-label":e,disabled:r,onClick:i,className:Hc(`inline-flex h-8 w-8 items-center justify-center rounded-full border-0 bg-transparent p-0`,`text-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-me-primary-500/50`,n?`text-white hover:bg-white/15 disabled:text-white/40 disabled:hover:bg-transparent`:`text-me-gray-900 hover:bg-me-primary-50 disabled:text-me-gray-500 disabled:hover:bg-transparent`,`disabled:cursor-not-allowed`),children:t})}function Bc({reverse:e,vertical:t}){return(0,d.jsx)(e?l.ArrowRightIcon:l.BackIcon,{"aria-hidden":!0,className:Hc(`block`,t&&`rotate-90`)})}function Vc(e){return(0,d.jsx)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,width:`1em`,height:`1em`,viewBox:`0 0 24 24`,"aria-hidden":!0,...e,children:(0,d.jsx)(`path`,{fill:`currentColor`,d:`m7 10l5 5l5-5z`})})}function Hc(...e){return e.filter(Boolean).join(` `)}const Uc=new WeakMap;function Wc(e,t){let n={port:t,lastActionId:`@genesis`},r=Gc(e);function i(e){t.postMessage(typeof e==`string`?e:JSON.stringify(e))}function a(){i({_id:Lt(),_type:`init-response`,_lastActionId:n.lastActionId,data:e.getState()})}function o(e){i({_id:e,_type:`vault-action-rejection`,_lastActionId:n.lastActionId,action:e})}function s(e){let t=qc(e.data);if(t){if(t._type===`init-request`){a();return}t._type===`vault-action`&&o(t._id)}}return r.targets.add(n),t.addEventListener(`message`,s),t.start(),()=>{t.removeEventListener(`message`,s),r.targets.delete(n),r.targets.size===0&&e.dispatch===r.patchedDispatch&&(e.dispatch=r.originalDispatch,Uc.delete(e)),t.close()}}function Gc(e){let t=Uc.get(e);if(t)return t;let n=e.dispatch.bind(e),r=new Set,i=(e=>{let t=n(e);for(let t of r)Kc(t,e);return t}),a={originalDispatch:n,patchedDispatch:i,targets:r};return e.dispatch=i,Uc.set(e,a),a}function Kc(e,t){let n={_id:Lt(),_type:`vault-action`,_lastActionId:e.lastActionId,action:t};e.lastActionId=n._id,e.port.postMessage(JSON.stringify(n))}function qc(e){try{if(typeof e==`string`)return JSON.parse(e);if(typeof e==`object`&&e)return e}catch{return null}return null}const Jc=(0,u.createContext)(null);function Yc({children:e}){let t=(0,m.useVault)(),n=(0,u.useRef)(null),r=(0,u.useRef)(null),i=(0,u.useRef)(null),a=(0,u.useRef)(!1),[o,s]=(0,u.useState)(!0),c=(0,u.useCallback)(()=>{if(!n.current||n.current.closed||!r.current)return;i.current?.();let e=new MessageChannel;i.current=Wc(t,e.port1),n.current.postMessage({_type:`manifest-editor:iframe-preview:connect`,resource:r.current.resource,canvasId:r.current.canvasId||null,annotationId:r.current.annotationId||void 0},new URL(r.current.url).origin,[e.port2]),a.current=!0},[t]);(0,u.useEffect)(()=>{let e=e=>{!r.current||e.source!==n.current||e.origin===new URL(r.current.url).origin&&e.data?._type===`manifest-editor:iframe-preview:ready`&&c()},t=window.setInterval(()=>{n.current?.closed&&(i.current?.(),i.current=null,a.current=!1,n.current=null,s(!0))},1e3);return window.addEventListener(`message`,e),()=>{window.removeEventListener(`message`,e),window.clearInterval(t),i.current?.()}},[c]);let l=(0,u.useCallback)(e=>{r.current=e;let t=n.current;if(t&&!t.closed){t.focus();return}i.current?.(),i.current=null,a.current=!1,n.current=window.open(e.url,e.name||`manifest-editor-preview`,e.features||`popup,width=1200,height=900`),s(!n.current)},[]),f=(0,u.useCallback)(e=>{let t=r.current;r.current=e;let o=n.current;if(!(!o||o.closed)){if(t&&(t.url!==e.url||t.reloadKey!==e.reloadKey)){i.current?.(),i.current=null,a.current=!1,o.location.href=e.url;return}a.current&&o.postMessage({_type:`manifest-editor:iframe-preview:selection`,resource:e.resource,canvasId:e.canvasId||null,annotationId:e.annotationId||void 0},new URL(e.url).origin)}},[]),p=(0,u.useCallback)(()=>{n.current&&!n.current.closed&&n.current.focus()},[]);return(0,d.jsx)(Jc.Provider,{value:{open:l,update:f,focus:p,isClosed:o},children:e})}function Xc(){let e=(0,u.useContext)(Jc);return N(e,`usePreviewWindow() can only be called from inside <PreviewWindowProvider />`),e}var Zc=class extends u.Component{constructor(...e){super(...e),G(this,`state`,{hasError:!1})}static getDerivedStateFromError(e){return console.error(e),{hasError:!0}}componentDidCatch(e,t){console.error(`Uncaught error:`,e,t)}render(){return this.state.hasError?(0,d.jsx)(`h1`,{children:`Sorry.. there was an error`}):this.props.children}};function Qc(e,t){return typeof e==`string`?{id:e,state:t}:e}const $c=(0,u.memo)(function(e){let t=U(),n=Is(),r=t.layout,[i,a]=(0,u.useReducer)(Pc,void 0,Ic),o={centerPanel:jc(`centerPanel`,a),leftPanel:jc(`leftPanel`,a),rightPanel:jc(`rightPanel`,a),pinnedRightPanel:jc(`pinnedRightPanel`,a),modal:jc(`modal`,a),editingStack:Jr()};function s(e){let t=r.rightPanels.find(t=>t.id===e);if(t)return[t,o.rightPanel,o.pinnedRightPanel];let n=r.centerPanels.find(t=>t.id===e);if(n)return[n,o.centerPanel];let i=r.leftPanels.find(t=>t.id===e);if(i)return i.modal?[i,o.modal]:[i,o.leftPanel];N(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Qc(e,t),[o,c,l]=s(r);if(l&&o.options?.openPinned)l.pin({id:r,state:{...o.defaultState||{},...i||{}}});else{let e={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.open`,e),c.open(e)}}function l(e,t){let{id:r,state:i}=Qc(e,t),[a,o]=s(r),c={id:r,state:{...a.defaultState||{},...i||{}},stacked:!0};n.emit(`layout.open`,c),o.open(c)}function f(e,t){let{id:r,state:i,stacked:a}=Qc(e,t),[o,c]=s(r),l={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.change`,l),c.change(l)}function p(e,t){let{id:r}=Qc(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function m(e,t){let{id:r}=Qc(e,t),[,i]=s(r);n.emit(`layout.toggle`,{id:r}),i.toggle()}function g(e,t={},{reset:i,property:a,stacked:s,forceOpen:c,selectedTab:l}={}){let u={resource:(0,h.isSpecificResource)(e)?e:{type:`SpecificResource`,source:e},...t};n.emit(`layout.edit`,u),o.editingStack.edit(u,i),r.rightPanels.find(e=>e.id===`@manifest-editor/editor`)&&(c?o.rightPanel.open({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}):o.rightPanel.change({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a,currentTab:l},unique:!0}))}async function _(e){o.editingStack.create(e,{}),n.emit(`layout.create`,e),r.modals?.find(e=>e.id===`@manifest-editor/creator`)?o.modal.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e}):r.rightPanels.find(e=>e.id===`@manifest-editor/creator`)&&o.rightPanel.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e})}let v={open:c,change:f,close:p,toggle:m,stack:l,edit:g,create:_};return(0,d.jsx)(oi.Provider,{value:(0,u.useMemo)(()=>({...o,...v}),[r]),children:(0,d.jsx)(si.Provider,{value:i,children:e.children})})}),el=[{id:`universal-viewer`,config:{url:`https://universalviewer.dev/#?iiifManifestId={manifestId}`},type:`external-manifest-preview`,label:`Universal viewer`},{id:`mirador-3`,type:`external-manifest-preview`,label:`Mirador 3`,config:{url:`https://tomcrane.github.io/scratch/mirador3/?iiif-content={manifestId}`}},{id:`annona`,type:`external-manifest-preview`,label:`Annona`,config:{url:`https://ncsu-libraries.github.io/annona/tools/#/display?url={manifestId}&viewtype=iiif-storyboard&settings=%7B%22fullpage%22%3Atrue%7D`}},{id:`iiif-preview`,config:{url:`https://iiif-preview.digirati.services/store`},type:`iiif-preview-service`,label:`IIIF Preview`}],tl=new k.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function nl({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o,backgroundActionPersistence:s}){let c=Hn(),l=z(),f=(0,u.useMemo)(()=>{let t=e?.previews||(l.previews?.length?l.previews:el);return re(l,{previews:t},e)},[l,e]),p=(0,u.useMemo)(()=>({appId:c.appId,instanceId:c.instanceId,rootResource:{id:a.id,type:a.type}}),[c.appId,c.instanceId,a.id,a.type]);return(0,d.jsx)(Zc,{children:(0,d.jsx)(m.ImageServiceLoaderContext.Provider,{value:tl,children:(0,d.jsx)(lr,{resource:a,children:(0,d.jsx)(xo,{children:(0,d.jsx)(g.ThemeProvider,{theme:r||Lo,children:(0,d.jsxs)(ae,{config:f,saveConfig:t,children:[(0,d.jsx)(Rn,{config:f}),(0,d.jsx)(ii,{children:(0,d.jsx)($c,{children:(0,d.jsx)(kt,{persistence:s,persistenceKey:p,children:(0,d.jsx)(os,{children:(0,d.jsx)(Gi,{children:(0,d.jsx)(xr,{previews:i||[],configs:f.previews,children:(0,d.jsx)(Yc,{children:(0,d.jsx)(m.AtlasStoreProvider,{children:n})})})})})})})})]})})})})})})}const rl=new Set([`Collection`,`Manifest`,`Canvas`,`Range`,`AnnotationPage`,`Annotation`,`ContentResource`,`Agent`]),il={satisfied:0,missing:0,invalid:0,disallowed:0,"not-applicable":0},al=new Set([`label`,`summary`,`language`,`navDate`,`provider`,`requiredStatement`,`rights`,`thumbnail`]);function ol(e){return e?Array.isArray(e)?e.filter(Boolean):e.split(`.`).filter(Boolean):[]}function sl(e,t){let n=ol(e),r=ol(t);return n.length===r.length&&n.every((e,t)=>e===r[t])}function cl(e,t){let n=e;for(let e of ol(t)){if(n==null)return;n=n[e]}return n}function ll(e,t,n){let r=ol(t);if(!r.length)return n;let i=Array.isArray(e)?[...e]:{...e||{}},a=i;return r.forEach((e,t)=>{if(t===r.length-1){a[e]=n;return}let i=a[e];a[e]=Array.isArray(i)?[...i]:{...i||{}},a=a[e]}),i}function $(e){if(e==null)return!1;if(typeof e==`string`)return e.trim().length>0;if(typeof e==`number`||typeof e==`boolean`)return!0;if(Array.isArray(e))return e.some(e=>$(e));if(typeof e!=`object`)return!1;let t=Object.entries(e);return t.length?!t.every(([,e])=>typeof e==`string`||Array.isArray(e)&&e.every(e=>typeof e==`string`))||t.some(([,e])=>$(e)):!1}function ul(e){return Array.isArray(e)?e.map(ul):e&&typeof e==`object`?Object.keys(e).sort().reduce((t,n)=>(t[n]=ul(e[n]),t),{}):e}function dl(e,t){return JSON.stringify(ul(e))===JSON.stringify(ul(t))}function fl(e,t,n,r){let i=ol(n);for(let n of e||[])for(let e of n.terminology?.properties||[])if(!(e.entityType&&e.entityType!==t)&&sl(e.path,i))return e.label;return r||Bl(i)}function pl(e,t,n){let r=ol(n),i=[],a,o,s=!1,c=!1;if(!t||!rl.has(t.type))return{entityType:t?.type,path:r,label:fl(e,t?.type,r),disallowed:!1,required:!1,rules:i};for(let n of e||[])for(let e of n.rules||[])!(`entityType`in e)||!(`path`in e)||e.entityType===t.type&&sl(e.path,r)&&(i.push(e),e.type===`disallow-property`&&(s=!0),e.type===`require-non-empty`&&(c=!0),e.type===`fixed-value`&&!o&&(a=e.value,o=e,c=!0));return{entityType:t.type,path:r,label:fl(e,t.type,r),disallowed:s,required:c,fixedValue:a,fixedValueRule:o,rules:i}}function ml(e,t,n){let r=e||[],i=hl(t,n),a=[];for(let e of r)for(let[n,r]of(e.rules||[]).entries())a.push(...gl(e,r,n,i,t));return{specifications:r,results:a,counts:Tl(a)}}function hl(e,t){let n=[],r=new Set;function i(t){let a=Dl(t);if(!a)return;if(a.type===`SpecificResource`){i(t?.source);return}let o=El(e,t)||El(e,a);if(!o||!o.type)return;let s=`${o.type}:${o.id||JSON.stringify(a)}`;if(!r.has(s)){r.add(s),rl.has(o.type)&&n.push({ref:{id:o.id,type:o.type},resource:o});for(let e of Ol(o))i(e)}}return i(t),n}function gl(e,t,n,r,i){switch(t.type){case`disallow-property`:case`require-non-empty`:case`fixed-value`:return _l(e,t,n,r);case`iiif:canvas-with-image-service`:return[vl(e,t,n,r,i)];case`iiif:thumbnail-from-body-service`:return yl(e,t,n,r,i);case`iiif:valid-rights`:return bl(e,t,n,r);case`iiif:required-statement`:return xl(e,t,n,r);case`iiif:metadata-template`:return Sl(e,t,n,r);default:return[]}}function _l(e,t,n,r){let i=r.filter(e=>e.ref.type===t.entityType),a=fl(e?[e]:[],t.entityType,t.path);return i.length?i.map(({ref:r,resource:i})=>{let o=cl(i,t.path),s=$(o);if(t.type===`disallow-property`)return Cl(e,t,n,{target:r,path:t.path,status:s?`disallowed`:`satisfied`,displayLabel:a,actual:o,message:s?`${a} is present but is not allowed.`:`${a} is not present.`,editorTarget:wl(r,t.path)});if(t.type===`require-non-empty`)return Cl(e,t,n,{target:r,path:t.path,status:s?`satisfied`:`missing`,displayLabel:a,actual:o,message:s?`${a} has a value.`:`${a} must be filled in.`,editorTarget:wl(r,t.path)});let c=dl(o,t.value);return Cl(e,t,n,{target:r,path:t.path,status:c?`satisfied`:s?`invalid`:`missing`,displayLabel:a,expected:t.value,actual:o,message:c?`${a} matches the required value.`:s?`${a} does not match the required value.`:`${a} must use the required value.`,editorTarget:wl(r,t.path)})}):[Cl(e,t,n,{status:`not-applicable`,displayLabel:a,message:`No ${t.entityType} resources were found for ${a}.`,path:t.path})]}function vl(e,t,n,r,i){let a=r.filter(e=>e.ref.type===`Canvas`),o=kl(t),s=a.find(({resource:e})=>Al(jl(e,i),o));return Cl(e,t,n,{target:s?.ref,status:s?`satisfied`:`missing`,displayLabel:t.label||`Canvas image service`,expected:o,message:s?`A canvas contains the required image service.`:o.length?`A canvas must contain one of the required image services: ${o.join(`, `)}.`:`A canvas must contain a painting body with an image service.`,editorTarget:s?wl(s.ref,[`items`]):void 0})}function yl(e,t,n,r,i){let a=t.entityType||`Canvas`,o=r.filter(e=>e.ref.type===a);return o.length?o.map(({ref:o,resource:s})=>{let c=a===`Manifest`?r.filter(e=>e.ref.type===`Canvas`).flatMap(e=>jl(e.resource,i)):jl(s,i),l=Ml(s,c,i),u=$(s.thumbnail);return Cl(e,t,n,{target:o,path:[`thumbnail`],status:l?`satisfied`:c.length?u?`invalid`:t.requireThumbnail===!1?`not-applicable`:`missing`:`not-applicable`,displayLabel:fl([e],o.type,[`thumbnail`],`Thumbnail`),expected:c,actual:s.thumbnail,message:l?`Thumbnail uses the same image service as the painting content.`:c.length?u?`Thumbnail does not use the same image service as the painting content.`:`Thumbnail must be created from the painting image service.`:`No painting image service was found to compare against.`,editorTarget:wl(o,[`thumbnail`])})}):[Cl(e,t,n,{status:`not-applicable`,displayLabel:`Thumbnail`,message:`No ${a} resources were found for thumbnail checks.`})]}function bl(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=t.allowed||[];return a.map(({ref:r,resource:i})=>{let a=i.rights,s=$(a),c=typeof a==`string`&&o.map(Il).includes(Il(a));return Cl(e,t,n,{target:r,path:[`rights`],status:c?`satisfied`:!s&&t.required!==!1?`missing`:`invalid`,displayLabel:fl([e],r.type,[`rights`],`Rights`),expected:o,actual:a,message:c?`Rights uses an allowed URI.`:!s&&t.required!==!1?`Rights must use an allowed URI.`:`Rights is not one of the allowed URIs.`,editorTarget:wl(r,[`rights`])})})}function xl(e,t,n,r){let i=t.entityType||`Manifest`;return r.filter(e=>e.ref.type===i).map(({ref:r,resource:i})=>{let a=i.requiredStatement,o=t.label?Ll(a?.label,t.label):$(a?.label),s=t.value||t.valueRequired!==!1,c=t.value?Ll(a?.value,t.value):!s||$(a?.value),l=$(a);return Cl(e,t,n,{target:r,path:[`requiredStatement`],status:o&&c?`satisfied`:l?`invalid`:`missing`,displayLabel:fl([e],r.type,[`requiredStatement`],`Required statement`),expected:t.value||t.label,actual:a,message:o&&c?`Required statement is complete.`:l?`Required statement does not match the specification.`:`Required statement must be filled in.`,editorTarget:wl(r,[`requiredStatement`])})})}function Sl(e,t,n,r){let i=t.entityType||`Manifest`,a=r.filter(e=>e.ref.type===i),o=[];for(let{ref:r,resource:i}of a){let a=Array.isArray(i.metadata)?i.metadata:[];t.items.forEach((i,s)=>{let c=a.find(e=>Ll(e?.label,i.label)),l=i.value?Ll(c?.value,i.value):!i.valueRequired||$(c?.value),u=c&&l?`satisfied`:c&&i.value?`invalid`:`missing`,d=zl(i.label);o.push(Cl(e,t,n,{idSuffix:`metadata-${s}`,target:r,path:[`metadata`],status:u,displayLabel:d||`Metadata`,expected:i.value||i.label,actual:c,message:c&&l?`${d||`Metadata`} is present.`:c?`${d||`Metadata`} needs a value.`:`${d||`Metadata`} metadata must be added.`,editorTarget:wl(r,[`metadata`])}))})}return o}function Cl(e,t,n,r){let i=t.id||`${t.type}-${n}`,a=r.idSuffix?`-${r.idSuffix}`:``;return{id:`${e.id}-${i}-${r.target?.type||`root`}-${r.target?.id||`none`}${a}`,specificationId:e.id,specificationLabel:e.label,ruleId:i,ruleType:t.type,ruleLabel:t.label||r.displayLabel,ruleIndex:n,target:r.target,path:r.path,status:r.status,displayLabel:r.displayLabel,message:t.message||r.message,expected:r.expected,actual:r.actual,editorTarget:r.editorTarget}}function wl(e,t){let n=t[0];return{resource:e,propertyPath:t,selectedTab:n===`metadata`?`@manifest-editor/metadata`:n&&al.has(n)?`@manifest-editor/descriptive-properties`:void 0}}function Tl(e){let t={...il};for(let n of e)t[n.status]+=1;return t}function El(e,t){let n=Dl(t);if(!n)return t;try{return e.get(n,{skipSelfReturn:!1})||t}catch{try{return e.get(n)||t}catch{return t}}}function Dl(e){return!e||typeof e!=`object`?null:e.type===`SpecificResource`?{id:e.id||e.source?.id||``,type:`SpecificResource`}:typeof e.id==`string`&&typeof e.type==`string`?{id:e.id,type:e.type}:null}function Ol(e){if(!e||typeof e!=`object`)return[];let t=[];for(let n of[`items`,`structures`,`annotations`,`thumbnail`,`provider`,`homepage`,`rendering`,`seeAlso`,`body`,`target`,`source`]){let r=e[n];Array.isArray(r)?t.push(...r):r&&t.push(r)}return t}function kl(e){return[...e.serviceIds||[],...e.serviceId?[e.serviceId]:[]].filter(Boolean)}function Al(e,t){let n=new Set(e.filter(Boolean));return t.length?t.some(e=>n.has(e)):n.size>0}function jl(e,t){let n=Fl(t,e?.items),r=[];for(let e of n){let n=Fl(t,e?.items);for(let e of n)if((Array.isArray(e?.motivation)?e.motivation:[e?.motivation]).includes(`painting`))for(let n of Nl(e?.body,t))r.push(...Pl(n))}return Array.from(new Set(r))}function Ml(e,t,n){let r=Fl(n,e?.thumbnail);if(!r.length||!t.length)return!1;for(let e of r){let n=Pl(e),r=typeof e?.id==`string`?e.id:``;if(n.some(e=>t.includes(e))||t.some(e=>r.startsWith(e)))return!0}return!1}function Nl(e,t){let n=El(t,e);return n?Array.isArray(n)?n.flatMap(e=>Nl(e,t)):n.type===`SpecificResource`?Nl(n.source,t):n.type===`Choice`?n.items?.flatMap(e=>Nl(e,t))||[]:[n]:[]}function Pl(e){let t=e?.service||e?.services,n=Array.isArray(t)?t:t?[t]:[],r=[];for(let e of n){let t=typeof e==`string`?e:e?.id||e?.[`@id`];typeof t==`string`&&t&&r.push(t)}return Array.from(new Set(r))}function Fl(e,t){if(!t)return[];let n=Array.isArray(t)?t:[t];try{let t=e.get(n);if(Array.isArray(t))return t.filter(Boolean)}catch{}return n.map(t=>El(e,t)).filter(Boolean)}function Il(e){return e.replace(/^https:/,`http:`).replace(/\/?$/,`/`)}function Ll(e,t){return typeof t==`string`?Rl(e).some(e=>e===t):dl(e,t)}function Rl(e){return e?typeof e==`string`?[e.trim()].filter(Boolean):Array.isArray(e)?e.flatMap(Rl):typeof e==`object`?Object.values(e).flatMap(Rl):[]:[]}function zl(e){return typeof e==`string`?e:Rl(e)[0]||``}function Bl(e){return(e[e.length-1]||`Property`).replace(/([A-Z])/g,` $1`).replace(/[-_]/g,` `).replace(/^./,e=>e.toUpperCase())}const Vl=(0,u.createContext)([]);function Hl({children:e,specifications:t}){let n=(0,u.useMemo)(()=>t||[],[t]);return(0,d.jsx)(Vl.Provider,{value:n,children:e})}function Ul(){return(0,u.useContext)(Vl)}function Wl(e){let t=W(),n=Ul(),r=e||t;return(0,m.useVaultSelector)((e,t)=>ml(n,t,r),[n,r.id,r.type])}function Gl(){let e=Ul();return(0,u.useMemo)(()=>({getLabel(t,n,r){return fl(e,t,n,r)}}),[e])}function Kl(e,t){let n=Ul();return(0,u.useMemo)(()=>pl(n,e,t),[n,e?.id,e?.type,JSON.stringify(t)])}const ql={},Jl=(0,u.createContext)(`global`);function Yl(){return(0,u.useContext)(Jl)}function Xl(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function Zl(e){let t=Yl(),[,n]=(0,u.useReducer)(e=>e+1,0),r=(0,u.useMemo)(()=>(ql[t]||(ql[t]={}),ql[t][e]||(ql[t][e]={name:e,emitter:(0,E.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),ql[t][e]),[t,e]);return Ql(r,`abort`,n),Ql(r,`error`,n),Ql(r,`complete`,n),Ql(r,`running`,n),r}function Ql(e,t,n){let r=(0,u.useCallback)(()=>n(e),[n]);(0,u.useEffect)(()=>{let n=e.emitter;return n.on(t,r),()=>n.off(t,r)},[t,r,e.emitter])}const $l=()=>void 0;function eu(e,t){let n=Zl(e);return Ql(n,`complete`,t||$l),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=Xl();t.promise.then(()=>n.emitter.emit(`complete`)).catch(()=>n.emitter.emit(`error`)),n.status=`running`,n.request=e,n.promise=t.promise,n.resolve=t.resolve,n.reject=t.reject,n.emitter.emit(`running`)},n]}function tu(e,t){let n=Zl(e);return Ql(n,`running`,t),[e=>{n.status===`running`&&(n.response=e,n.status=`complete`,n.resolve())},n,(e,t)=>{n.status===`running`&&(n.error=t||e,n.status=`error`,n.reject(e))}]}function nu({children:e}){return(0,d.jsx)(Jl.Provider,{value:(0,u.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function ru(e){return!1}function iu({as:e,reference:t,onReference:n,onLink:r,onAnalysis:i,onDropReference:a,onDropLink:o,onDropAnalysis:s,onPasteReference:c,onPasteLink:l,onPasteAnalysis:f,...p}){let m=e||`div`,h=a||n,g=c||n,_=l||r,v=f||i,y=(0,u.useMemo)(()=>t,[t?.id,t?.type]),b=(0,u.useCallback)(function(e){e.defaultPrevented||(e.preventDefault(),e.clipboardData&&y&&y.id&&y.type&&e.clipboardData.setData(`application/json+vault`,JSON.stringify({id:y.id,type:y.type})))},[y]),x=(0,u.useCallback)(async function(e){if(!e.defaultPrevented&&(e.preventDefault(),e.clipboardData)){if(p.onLoading&&p.onLoading(),g){let t=e.clipboardData.getData(`application/json+vault`);if(t)try{let e=JSON.parse(t);e&&e.id&&e.type&&g(e)}catch{}}if(_||v){let t=e.clipboardData.getData(`text`);if(t.startsWith(`http`)){let e=t.split(`
|
|
1531
|
+
`);for(let t of e){if(v)try{let e=await ru(t);if(e){v(e);continue}}catch{}_&&_(t)}}}p.onComplete&&p.onComplete()}},[]),S=(0,u.useCallback)(function(e){e.defaultPrevented||(e.preventDefault(),e.dataTransfer&&p.draggable&&(e.dataTransfer.effectAllowed=`all`,y&&y.id&&y.type&&e.dataTransfer.setData(`application/json+vault`,JSON.stringify({id:y.id,type:y.type}))))},[]),C=(0,u.useCallback)(async function(e){if(e.preventDefault(),e.dataTransfer){if(h){let t=e.dataTransfer.getData(`application/json+vault`);if(t)try{let n=JSON.parse(t);n&&n.id&&n.type&&h(n,e)}catch{return}}let t=e.dataTransfer.getData(`application/json`);if(t){JSON.parse(t);return}if(e.dataTransfer.getData(`text/plain`))return}},[]),w=(0,u.useCallback)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`)},[]);return(0,d.jsx)(m,{onCopy:b,onPaste:x,onDrop:C,onDragOver:w,onDragStart:S,tabIndex:-1,...p})}exports.AppHeader=Oa,exports.AppMenuProvider=Ma,exports.AppProvider=qn,exports.AppReactContext=Bn,exports.AppResourceInstanceProvider=cr,exports.AppResourceProvider=lr,exports.AppStateReactContext=Vn,exports.AtlasStoreProvider=m.AtlasStoreProvider,exports.AtlasStoreReactContext=m.AtlasStoreReactContext,exports.BackgroundActionToasts=ta,exports.BackgroundActionsMenu=ha,exports.BackgroundActionsMount=ea,exports.BackgroundActionsProvider=kt,exports.BackgroundActionsReactContext=Ot,exports.BaseAnnotationCreator=Ro,exports.BaseEditor=Ho,exports.BaseEditorBackButton=zo,exports.BaseEditorCloseButton=Bo,exports.ButtonChange=Or,exports.ButtonContainer=Er,exports.ButtonEmpty=Fr,exports.ButtonMain=Dr,exports.CANVAS_PROGRESS_META_NAMESPACE=oe,exports.CANVAS_PROGRESS_STATUS_META_KEY=se,exports.ConfigEditor=ts,exports.ConfigProvider=ae,exports.ConfigReactContext=L,exports.ContextMenuProvider=os,exports.ContextMenuReactContext=as,exports.CreatorInitialData=Oo,exports.CreatorSettings=rs,exports.EditingStack=ii,exports.EditingStackContext=Kr,exports.EventEmitterProvider=Fs,exports.ExportPanel=js,exports.FLAG_TAG=gi,exports.HOMEPAGE_COLLECTION=yo,exports.HandleContainer=Vs,exports.HandleControls=Ks,exports.IIIFOptions=es,exports.InlineEditingStack=ai,exports.Layout=Ac,exports.LayoutActionsReactContext=oi,exports.LayoutModeReactContext=ci,exports.LayoutStateReactContext=si,exports.ManifestEditorCanvasProgressOverlay=Ee,exports.ManifestEditorTagBadge=zi,exports.ManifestEditorTagIcon=Ri,exports.ManifestEditorTagOverlay=Bi,exports.ManifestPaginationNavigation=Lc,exports.MenuContainer=kr,exports.MenuItem=Ar,exports.MenuItemClose=Pr,exports.MenuItemLabel=Nr,exports.MenuItemStatus=Mr,Object.defineProperty(exports,"MessagePortClientVault",{enumerable:!0,get:function(){return A.MessagePortClientVault}}),exports.ModularPanel=mo,exports.ModularPanelHeader=co,exports.ModulePanelButton=lo,exports.MultiAppProvider=Zn,exports.PanelError=io,exports.PluginConfigBridge=Rn,exports.PluginGlobalConfigReactContext=Tn,exports.PluginManager=Zo,exports.PluginProvider=En,exports.PluginReactContext=wn,exports.PresetOnboarding=Da,exports.PresetOnboardingButton=Ta,exports.PresetPreviewButton=Ea,exports.PreviewButton=Lr,exports.PreviewProvider=xr,exports.PreviewVaultBoundary=So,exports.PreviewVaultContext=xo,exports.PreviewWindowProvider=Yc,exports.PrimeAppReactContext=zn,exports.ReactEmitterContext=Ps,exports.ResourceEditingProvider=Hr,exports.ResourceEditingReactContext=Rr,exports.SaveConfigReactContext=R,exports.ShellProvider=nl,exports.SpecificationProvider=Hl,exports.TAGS_META_KEY=hi,exports.TAGS_META_NAMESPACE=mi,exports.TaskBridge=nu,exports.ToastProvider=Gi,exports.UniversalCopyTarget=iu,exports.addResourceTag=ki,exports.analyse=Ra,exports.analyseJson=Ba,exports.applyPlugins=Sn,exports.baseCreator=Io,exports.baseEditor=Uo,exports.clearCanvasProgressStatus=he,exports.clearCanvasProgressStatuses=_e,exports.collectSpecificationResources=hl,exports.copyToClipboard=It,exports.createActionIdentity=Pt,exports.createBackgroundActionsStore=yt,exports.createDownload=Ft,exports.createIframeVaultBridge=Wc,exports.createLocalForageBackgroundActionPersistence=Et,exports.createManifestEditorCanvasProgressApi=ve,exports.createManifestEditorTagsApi=Fi,exports.createPluginRuntimeApi=gn,exports.createPluginStore=Cn,exports.createPreviewVault=ho,exports.createTrackingCanvasProgressApi=ye,exports.detectMedia=La,exports.disablePluginInConfig=Yt,exports.editBasedOnResource=Vo,exports.enablePluginAndDependenciesInConfig=_n,exports.enablePluginInConfig=Jt,exports.evaluateSpecifications=ml,exports.extendApp=Bt,exports.filterSupportedPanels=_c,exports.getAvailableBackgroundActionGroups=Fe,exports.getBackgroundActionInstanceKey=ke,exports.getCanvasProgressStatus=fe,exports.getCanvasProgressStatusFromState=pe,exports.getDefaultLayoutState=Ic,exports.getDefaultPanelState=Fc,exports.getEffectivePluginSettings=hn,exports.getEmptyPluginState=Ut,exports.getEnabledPluginsForApp=un,exports.getFormat=Ua,exports.getImageDimensions=Wa,exports.getManifestNomalized=Nt,exports.getPluginCompatibilityReason=sn,exports.getPluginDefaultSettings=mn,exports.getPluginSelectionSource=ln,exports.getPluginSettingsFromConfig=dn,exports.getPresetOnboardingDismissalKey=Ca,exports.getPropertyPolicy=pl,exports.getResourceTag=Ai,exports.getResourceTagGroups=Mi,exports.getResourceTags=Ei,exports.getResourceTagsFromState=Di,exports.getSelectedPresetTemplate=Wn,exports.getSupportedPanelFallback=vc,exports.getTerminologyLabel=fl,exports.getValueAtPath=cl,exports.hasMeaningfulValue=$,exports.hasPreviewOption=Ir,exports.hasResourceTag=Ni,exports.isLazyPlugin=tn,exports.isMappedPlugin=en,exports.isPinnableState=to,exports.isPluginCompatible=on,exports.isPluginSelected=cn,exports.layoutReducer=Pc,exports.mapApp=Rt,exports.mapLazyPlugin=$t,exports.mapPlugin=Qt,exports.mergeBackgroundActionDefinitions=Ae,exports.mergeConfig=re,exports.mergePartialConfig=I,exports.mergePresetConfig=zt,exports.mergeProviderPlugins=an,exports.normaliseBackgroundActionError=Me,exports.normaliseJsonValue=ul,exports.normalisePlugin=nn,exports.normalisePluginAppConfig=Kt,exports.normalisePluginAppsConfig=qt,exports.normalisePlugins=rn,exports.normaliseSpecificationPath=ol,exports.panelIds=Q,exports.panelSizing=no,exports.pluginAppConfigEquals=Zt,exports.polygonToBoundingBox=Pa,exports.randomId=Lt,exports.removeResourceTag=ji,exports.renderHelper=ro,exports.resetPluginInConfig=Xt,exports.resetPluginSettingsInConfig=pn,exports.runBackgroundAction=St,exports.setCanvasProgressStatus=me,exports.setCanvasProgressStatuses=ge,exports.setPluginSettingsInConfig=fn,exports.setResourceTags=Oi,exports.setValueAtPath=ll,exports.sortBackgroundActionDefinitions=je,exports.specificationJsonEquals=dl,exports.specificationPathEquals=sl,exports.toggleResourceTag=Pi,exports.useAnnotationCreatorState=Ms,exports.useAnnotationPageEditor=ti,exports.useApp=U,exports.useAppInstance=Hn,exports.useAppMenu=Aa,exports.useAppMenuItem=ja,exports.useAppResource=W,exports.useAppResourceInstance=sr,exports.useAppState=Un,exports.useApps=Yn,exports.useAtlasStore=Na,exports.useAvailableBackgroundActions=$i,exports.useAvailableLayouts=fi,exports.useBackgroundActionHistory=Mt,exports.useBackgroundActionInstance=jt,exports.useBackgroundActionsStore=H,exports.useBackgroundActionsStoreApi=At,exports.useCanvasProgressActions=xe,exports.useCanvasProgressStatus=be,exports.useCollectionEditor=$r,exports.useConfig=z,exports.useCreatingResource=Zr,exports.useCreator=Co,exports.useCustomContextMenu=us,exports.useDecayState=Wo,exports.useEditingContext=zr,exports.useEditingResource=Yr,exports.useEditingResourceStack=Xr,exports.useEditingStack=Jr,exports.useEditor=ni,exports.useEmitter=Is,exports.useEnabledPlugins=jn,exports.useEvent=Ls,exports.useGenericEditor=ei,exports.useHighlightedImageResource=Ga,exports.useHoverHighlightImageResource=qa,exports.useInitialData=Do,exports.useInlineCreator=wo,exports.useLayoutActions=ui,exports.useLayoutMode=di,exports.useLayoutProvider=pi,exports.useLayoutState=li,exports.useLocalStorage=l.useLocalStorage,exports.useManifestEditor=Qr,exports.useMatchMedia=Rs,exports.useOpenPresetOnboarding=wa,exports.useOptionalLocalStorage=l.useOptionalLocalStorage,exports.useOptionalPluginStoreApi=Dn,exports.useOptionalResource=Vr,exports.usePanelActions=jc,exports.usePluginActions=Mn,exports.usePluginConfigApi=Fn,exports.usePluginRuntimeApi=Nn,exports.usePluginSettings=Pn,exports.usePluginStoreApi=On,exports.usePlugins=An,exports.usePresetTemplateSelection=Gn,exports.usePreviewContext=Cr,exports.usePreviewHistory=bo,exports.usePreviewVault=go,exports.usePreviewWindow=Xc,exports.usePreviews=Sr,exports.useResolvedPluginApp=In,exports.useResource=Br,exports.useResourceContextMenuItems=cs,exports.useResourceTagActions=Li,exports.useResourceTags=Ii,exports.useSaveConfig=ie,exports.useSaveVault=zs,exports.useSetCustomTitle=oo,exports.useSpecificationPropertyPolicy=Kl,exports.useSpecificationReport=Wl,exports.useSpecificationTerminology=Gl,exports.useSpecifications=Ul,exports.useSvgTools=Bs,exports.useTask=Zl,exports.useTaskDispatch=eu,exports.useTaskEvent=Ql,exports.useTaskRunner=tu,exports.useTemporaryHighlight=Ka,exports.useToasts=Ki;
|
|
1512
1532
|
//# sourceMappingURL=index.cjs.map
|