@manifest-editor/shell 2.0.1-next.0.ede7d58 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -984,6 +984,6 @@ var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=
984
984
  flex: 1;
985
985
  min-width: 0;
986
986
  overflow: hidden;
987
- `,ei=(0,l.memo)(function(e){let t=ce(),n=Pt(),{vault:r}=(0,l.useContext)(p.ReactVaultContext),i=r||void 0,a=(0,l.useRef)(null),o=(0,l.useRef)(null),{loading:s,state:d,leftPanels:f,centerPanels:m,rightPanels:h,modals:g=[],actions:_}=n,v=f.find(e=>e.id===d.leftPanel.current),y=h.find(e=>e.id===d.rightPanel.current),b=m.find(e=>e.id===d.centerPanel.current),x=g.find(e=>e.id===d.modal.current),S=d.pinnedRightPanel.pinned?h.find(e=>e.id===d.pinnedRightPanel.current):void 0,[C]=vr([`(max-width: 1020px)`]),w=e.isLoading||!1,ne=(0,l.useMemo)(()=>(n.background||[]).map((e,t)=>(0,u.jsx)(l.Fragment,{children:e.render()},t)),[n.background]),E=Nr(`left-panel/${v?.id}`,{left:!0,marginLeft:60,minWidthPx:v?.options?.minWidth||200,maxWidthPx:v?.options?.maxWidth||720,loading:s}),D=Nr(`right-panel/${y?.id}`,{left:!1,minWidthPx:y?.options?.minWidth||320,maxWidthPx:y?.options?.maxWidth||720,loading:s}),O=y&&(S?.id!==y.id||!(0,T.default)(d.pinnedRightPanel.state,d.rightPanel.state)),k=E.widthB===`auto`?void 0:()=>E.setWidths({widthA:`auto`,widthB:Lt({options:v?.options,fallback:320})}),A=D.widthB===`auto`?void 0:()=>D.setWidths({widthA:`auto`,widthB:Lt({options:y?.options,fallback:320})});if((0,l.useLayoutEffect)(()=>{C&&d.leftPanel.open&&d.rightPanel.open&&(_.leftPanel.close(),_.rightPanel.close())},[C]),(0,l.useLayoutEffect)(()=>{if(b&&b.onMount)return b.onMount(d.centerPanel.state||b.defaultState||{},{...n,current:_.centerPanel,vault:i},t)},[d.centerPanel.current]),(0,l.useLayoutEffect)(()=>{h.length&&_.rightPanel.change({id:h[0].id}),f.length&&_.leftPanel.change({id:f[0].id}),m.length&&_.centerPanel.change({id:m[0].id})},[]),s)return null;let j=t=>(0,u.jsx)(Zr,{$menu:e.leftPanelMenuPosition||`bottom`,ref:E.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:d.leftPanel.open||t!==`exited`?E.widthB:void 0,minWidth:v?.options?.minWidth},children:w?(0,u.jsx)(q,{children:(0,u.jsx)(kr,{})}):(0,u.jsxs)(u.Fragment,{children:[e.leftPanelMenu?(0,u.jsx)(K,{$open:d.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,u.jsx)(q,{children:d.leftPanel.open||t!==`exited`?(0,u.jsx)(u.Fragment,{children:v?(0,u.jsx)($t,{isLeft:!0,noHeader:!0,transition:t,panel:v,state:d.leftPanel,actions:_.leftPanel}):null}):null})]})}),M=()=>!x||d.modal.open===!1?null:(0,u.jsx)(c.Modal,{title:x.label,onClose:()=>_.modal.close(),children:Rt(x.render(d.modal.state||x.defaultState||{},{...n,current:_.modal,vault:i},t))}),re=()=>(0,u.jsxs)(Zr,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,u.jsx)(K,{$open:d.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,u.jsx)(q,{children:(0,u.jsx)(ee.ErrorBoundary,{resetKeys:[b?.id],FallbackComponent:Ft,children:w?(0,u.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,u.jsx)(Or,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):d.centerPanel.open&&b?Rt(b.render(d.centerPanel.state||b.defaultState||{},{...n,current:_.centerPanel,vault:i},t)):null})})]}),N=t=>(0,u.jsx)(Zr,{$menu:e.rightPanelMenuPosition||`bottom`,ref:D.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:d.rightPanel.open||t!==`exited`?D.widthB:void 0,minWidth:y?.options?.minWidth},children:w?(0,u.jsx)(q,{children:(0,u.jsx)(kr,{})}):(0,u.jsxs)(u.Fragment,{children:[e.rightPanelMenu?(0,u.jsx)(K,{$open:d.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,u.jsx)(q,{children:d.rightPanel.open||t!==`exited`?(0,u.jsxs)(u.Fragment,{children:[O?(0,u.jsx)($t,{panel:y,state:d.rightPanel,actions:_.rightPanel,pinActions:_.pinnedRightPanel,available:h}):null,S?(0,u.jsx)($t,{panel:S,state:d.pinnedRightPanel,actions:_.pinnedRightPanel,close:_.rightPanel.close}):null]}):null})]})});return C?(0,u.jsxs)(Wr,{children:[e.hideHeader?null:(0,u.jsxs)(Gr,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsx)(qr,{children:(0,u.jsxs)(Pr,{children:[(0,u.jsx)(Fr,{children:re()}),(0,u.jsxs)(Ir,{children:[f.length>0?(0,u.jsx)(Lr,{onClick:_.leftPanel.toggle,children:v?.label}):null,h.length>0?(0,u.jsx)(zr,{children:(0,u.jsxs)(Br,{onClick:_.rightPanel.toggle,children:[(0,u.jsx)(Se,{rotate:180}),y?.label]})}):null,(0,u.jsx)(Rr,{children:`Preview`})]}),h.length>0?(0,u.jsx)(Vr,{$open:d.rightPanel.open,children:N()}):null,f.length>0?(0,u.jsx)(Hr,{$open:d.leftPanel.open,children:j()}):null,f.length>0||h.length>0?(0,u.jsx)(Ur,{$open:d.leftPanel.open||d.rightPanel.open,onClick:()=>{_.leftPanel.close(),_.rightPanel.close()}}):null]})})]}):(0,u.jsxs)(Wr,{className:`manifest-editor ${e.className}`,children:[e.hideHeader?null:(0,u.jsxs)(Gr,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(qr,{ref:e=>{E.refs.container.current=e,D.refs.container.current=e},children:[f.length>0?(0,u.jsx)(c.PanelSideMenu,{current:d.leftPanel.current,items:f.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,onClick:()=>{d.leftPanel.current===e.id?_.leftPanel.toggle():_.leftPanel.change({id:e.id})}})),open:d.leftPanel.open}):null,f.length>0?(0,u.jsx)(te.Transition,{nodeRef:a,in:d.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Jr,{ref:a,$width:E.widthB,$state:e,$motion:!0,children:j(e)}),(0,u.jsx)(Dr,{ref:E.refs.resizer,reset:k,dir:`left`,transition:e,open:d.leftPanel.open||e!==`exited`,actions:_.leftPanel})]})}):null,(0,u.jsx)(Yr,{children:re()}),h.length>0?(0,u.jsx)(te.Transition,{nodeRef:o,in:d.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Dr,{ref:D.refs.resizer,dir:`right`,reset:A,open:d.rightPanel.open,actions:_.rightPanel}),(0,u.jsx)(Xr,{ref:o,$width:D.widthB,$state:e,$motion:!0,children:N(e)})]})}):null]}),(0,u.jsx)(Kr,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ne}),(0,u.jsx)(u.Fragment,{children:M()})]})});function J(e,t){function n(){t({type:`popStack`,panel:e,payload:void 0})}function r(n){t({type:`change`,panel:e,payload:n})}function i(n){t({type:`open`,panel:e,payload:n})}function a(){t({type:`close`,panel:e,payload:void 0})}function o(){t({type:`toggle`,panel:e,payload:void 0})}function s(){t({type:`minimise`,panel:e,payload:void 0})}function c(n){t({type:`maximise`,panel:e,payload:n})}function u(n){t({type:`setCustomWidth`,panel:e,payload:n})}function d(){t({type:`resetSize`,panel:e,payload:void 0})}function f(n){t({type:`pin`,panel:e,payload:n})}function p(){t({type:`unpin`,panel:e,payload:void 0})}return(0,l.useMemo)(()=>({popStack:n,change:r,open:i,close:a,toggle:o,minimise:s,maximise:c,setCustomWidth:u,resetSize:d,pin:f,unpin:p}),[])}function ti(e,t){if(t.payload&&t.payload.stacked){if(e.current){let n=e.stack[e.stack.length-1];if(n&&n.id===e.current)return;t.payload.unique&&(e.stack=e.stack.filter(t=>t.id!==e.current)),e.stack.push({id:e.current,state:e.state?{...(0,m.original)(e.state)}:{}})}}else e.stack=[]}function Y(e,t){switch(t.type){case`popStack`:if(e.stack.length){let t=e.stack[e.stack.length-1];t&&(e.current=t.id,e.state=t.state),e.stack=e.stack.slice(0,-1)}break;case`change`:t.payload.id!==e.current&&ti(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&&ti(e,t),e.state=t.payload.state,e.current=t.payload.id);break;case`toggle`:e.open=!e.open;break;case`maximise`:e.minimised=!1,t.payload&&(e.state=t.payload.state,e.current=t.payload.id);break;case`minimise`:e.minimised=!0;break;case`setCustomWidth`:e.customWidth=t.payload;break;case`resetSize`:e.customWidth=void 0}if(It(e))switch(t.type){case`pin`:e.pinned=!0,e.state=t.payload.state,e.current=t.payload.id;break;case`unpin`:e.pinned=!1,e.state=void 0;break}}const ni=(0,m.produce)((e,t)=>{switch(t.panel){case`centerPanel`:Y(e.centerPanel,t);break;case`leftPanel`:Y(e.leftPanel,t);break;case`rightPanel`:Y(e.rightPanel,t);break;case`modal`:Y(e.modal,t);break;case`pinnedRightPanel`:Y(e.pinnedRightPanel,t);break}});function X(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function ri(){return{leftPanel:X(),centerPanel:X(),rightPanel:X(),modal:X(),pinnedRightPanel:{...X(),pinnable:!0,pinned:!1}}}const ii=(0,l.createContext)({resource:null});function ai(){return(0,l.useContext)(ii)}function oi(){let e=(0,p.useVault)(),{resource:t}=ai();O(t,`Nothing selected`);let{id:n,type:r}=t;return(0,p.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function si(){let{resource:e}=ai();return e}function ci({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,u.jsx)(ii.Provider,{value:(0,l.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}var li=class extends l.Component{constructor(...e){super(...e),R(this,`state`,{hasError:!1})}static getDerivedStateFromError(e){return console.error(e),{hasError:!0}}componentDidCatch(e,t){console.error(`Uncaught error:`,e,t)}render(){return this.state.hasError?(0,u.jsx)(`h1`,{children:`Sorry.. there was an error`}):this.props.children}};function Z(e,t){return typeof e==`string`?{id:e,state:t}:e}const ui=(0,l.memo)(function(e){let t=P(),n=gr(),r=t.layout,[i,a]=(0,l.useReducer)(ni,void 0,ri),o={centerPanel:J(`centerPanel`,a),leftPanel:J(`leftPanel`,a),rightPanel:J(`rightPanel`,a),pinnedRightPanel:J(`pinnedRightPanel`,a),modal:J(`modal`,a),editingStack:vn()};function s(e){let t=r.rightPanels.find(t=>t.id===e);if(t)return[t,o.rightPanel,o.pinnedRightPanel];let n=r.centerPanels.find(t=>t.id===e);if(n)return[n,o.centerPanel];let i=r.leftPanels.find(t=>t.id===e);if(i)return[i,o.leftPanel];O(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Z(e,t),[o,c,l]=s(r);if(l&&o.options?.openPinned)l.pin({id:r,state:{...o.defaultState||{},...i||{}}});else{let e={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.open`,e),c.open(e)}}function d(e,t){let{id:r,state:i}=Z(e,t),[a,o]=s(r),c={id:r,state:{...a.defaultState||{},...i||{}},stacked:!0};n.emit(`layout.open`,c),o.open(c)}function f(e,t){let{id:r,state:i,stacked:a}=Z(e,t),[o,c]=s(r),l={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.change`,l),c.change(l)}function p(e,t){let{id:r}=Z(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function m(e,t){let{id:r}=Z(e,t),[,i]=s(r);n.emit(`layout.toggle`,{id:r}),i.toggle()}function h(e,t={},{reset:i,property:a,stacked:s,forceOpen:c}={}){let l={resource:(0,_.isSpecificResource)(e)?e:{type:`SpecificResource`,source:e},...t};n.emit(`layout.edit`,l),o.editingStack.edit(l,i),r.rightPanels.find(e=>e.id===`@manifest-editor/editor`)&&(c?o.rightPanel.open({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a},unique:!0}):o.rightPanel.change({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a},unique:!0}))}function g(e){o.editingStack.create(e,{}),n.emit(`layout.create`,e),r.modals?.find(e=>e.id===`@manifest-editor/creator`)?o.modal.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e}):r.rightPanels.find(e=>e.id===`@manifest-editor/creator`)&&o.rightPanel.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e})}let v={open:c,change:f,close:p,toggle:m,stack:d,edit:h,create:g};return(0,u.jsx)(At.Provider,{value:(0,l.useMemo)(()=>({...o,...v}),[r]),children:(0,u.jsx)(jt.Provider,{value:i,children:e.children})})}),di=[{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`}],fi=new ne.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function pi({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o}){let s=M(),c=(0,l.useMemo)(()=>({...s,...e,previews:e?.previews||s.previews||di}),[s,e]);return(0,u.jsx)(li,{children:(0,u.jsx)(p.ImageServiceLoaderContext.Provider,{value:fi,children:(0,u.jsx)(De,{resource:a,children:(0,u.jsx)(sn,{children:(0,u.jsx)(d.ThemeProvider,{theme:r||Fn,children:(0,u.jsx)(N,{config:c,saveConfig:t,children:(0,u.jsx)(On,{children:(0,u.jsx)(ui,{children:(0,u.jsx)(Vn,{children:(0,u.jsx)(Re,{previews:i||[],configs:c.previews,children:(0,u.jsx)(p.AtlasStoreProvider,{children:n})})})})})})})})})})})}const Q={},mi=(0,l.createContext)(`global`);function hi(){return(0,l.useContext)(mi)}function gi(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _i(e){let t=hi(),[,n]=(0,l.useReducer)(e=>e+1,0),r=(0,l.useMemo)(()=>(Q[t]||(Q[t]={}),Q[t][e]||(Q[t][e]={name:e,emitter:(0,C.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),Q[t][e]),[t,e]);return $(r,`abort`,n),$(r,`error`,n),$(r,`complete`,n),$(r,`running`,n),r}function $(e,t,n){let r=(0,l.useCallback)(()=>n(e),[n]);(0,l.useEffect)(()=>{let n=e.emitter;return n.on(t,r),()=>n.off(t,r)},[t,r,e.emitter])}const vi=()=>void 0;function yi(e,t){let n=_i(e);return $(n,`complete`,t||vi),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=gi();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 bi(e,t){let n=_i(e);return $(n,`running`,t),[e=>{n.status===`running`&&(n.response=e,n.status=`complete`,n.resolve())},n,(e,t)=>{n.status===`running`&&(n.error=t||e,n.status=`error`,n.reject(e))}]}function xi({children:e}){return(0,u.jsx)(mi.Provider,{value:(0,l.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function Si(e){return!1}function Ci({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]),ee=(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]),b=(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(`
987
+ `,ei=(0,l.memo)(function(e){let t=ce(),n=Pt(),{vault:r}=(0,l.useContext)(p.ReactVaultContext),i=r||void 0,a=(0,l.useRef)(null),o=(0,l.useRef)(null),{loading:s,state:d,leftPanels:f,centerPanels:m,rightPanels:h,modals:g=[],actions:_}=n,v=f.find(e=>e.id===d.leftPanel.current),y=h.find(e=>e.id===d.rightPanel.current),b=m.find(e=>e.id===d.centerPanel.current),x=g.find(e=>e.id===d.modal.current),S=d.pinnedRightPanel.pinned?h.find(e=>e.id===d.pinnedRightPanel.current):void 0,[C]=vr([`(max-width: 1020px)`]),w=e.isLoading||!1,ne=(0,l.useMemo)(()=>(n.background||[]).map((e,t)=>(0,u.jsx)(l.Fragment,{children:e.render()},t)),[n.background]),E=Nr(`left-panel/${v?.id}`,{left:!0,marginLeft:60,minWidthPx:v?.options?.minWidth||200,maxWidthPx:v?.options?.maxWidth||720,loading:s}),D=Nr(`right-panel/${y?.id}`,{left:!1,minWidthPx:y?.options?.minWidth||320,maxWidthPx:y?.options?.maxWidth||720,loading:s}),O=y&&(S?.id!==y.id||!(0,T.default)(d.pinnedRightPanel.state,d.rightPanel.state)),k=E.widthB===`auto`?void 0:()=>E.setWidths({widthA:`auto`,widthB:Lt({options:v?.options,fallback:320})}),A=D.widthB===`auto`?void 0:()=>D.setWidths({widthA:`auto`,widthB:Lt({options:y?.options,fallback:320})});if((0,l.useLayoutEffect)(()=>{C&&d.leftPanel.open&&d.rightPanel.open&&(_.leftPanel.close(),_.rightPanel.close())},[C]),(0,l.useLayoutEffect)(()=>{if(b&&b.onMount)return b.onMount(d.centerPanel.state||b.defaultState||{},{...n,current:_.centerPanel,vault:i},t)},[d.centerPanel.current]),(0,l.useLayoutEffect)(()=>{h.length&&_.rightPanel.change({id:h[0].id}),f.length&&_.leftPanel.change({id:f[0].id}),m.length&&_.centerPanel.change({id:m[0].id})},[]),s)return null;let j=t=>(0,u.jsx)(Zr,{$menu:e.leftPanelMenuPosition||`bottom`,ref:E.refs.resizableDiv,className:[`manifest-editor`,t?`transition transition-${t}`:``].join(` `),style:{width:d.leftPanel.open||t!==`exited`?E.widthB:void 0,minWidth:v?.options?.minWidth},children:w?(0,u.jsx)(q,{children:(0,u.jsx)(kr,{})}):(0,u.jsxs)(u.Fragment,{children:[e.leftPanelMenu?(0,u.jsx)(K,{$open:d.leftPanel.open&&t!==`exited`,$position:e.leftPanelMenuPosition||`bottom`,children:e.leftPanelMenu}):null,(0,u.jsx)(q,{children:d.leftPanel.open||t!==`exited`?(0,u.jsx)(u.Fragment,{children:v?(0,u.jsx)($t,{isLeft:!0,noHeader:!0,transition:t,panel:v,state:d.leftPanel,actions:_.leftPanel}):null}):null})]})}),M=()=>!x||d.modal.open===!1?null:(0,u.jsx)(c.Modal,{title:x.label,onClose:()=>_.modal.close(),children:Rt(x.render(d.modal.state||x.defaultState||{},{...n,current:_.modal,vault:i},t))}),re=()=>(0,u.jsxs)(Zr,{$menu:e.centerPanelMenuPosition||`top`,children:[e.centerPanelMenu?(0,u.jsx)(K,{$open:d.centerPanel.open,$position:e.centerPanelMenuPosition||`top`,children:e.centerPanelMenu}):null,(0,u.jsx)(q,{children:(0,u.jsx)(ee.ErrorBoundary,{resetKeys:[b?.id],FallbackComponent:Ft,children:w?(0,u.jsx)(`div`,{style:{display:`flex`,flex:1,justifyContent:`center`,alignItems:`center`},children:(0,u.jsx)(Or,{stroke:`rgba(0,0,0,.3)`,fontSize:`2em`})}):d.centerPanel.open&&b?Rt(b.render(d.centerPanel.state||b.defaultState||{},{...n,current:_.centerPanel,vault:i},t)):null})})]}),N=t=>(0,u.jsx)(Zr,{$menu:e.rightPanelMenuPosition||`bottom`,ref:D.refs.resizableDiv,className:t?`transition transition-${t}`:``,style:{width:d.rightPanel.open||t!==`exited`?D.widthB:void 0,minWidth:y?.options?.minWidth},children:w?(0,u.jsx)(q,{children:(0,u.jsx)(kr,{})}):(0,u.jsxs)(u.Fragment,{children:[e.rightPanelMenu?(0,u.jsx)(K,{$open:d.rightPanel.open,$position:e.rightPanelMenuPosition||`bottom`,children:e.rightPanelMenu}):null,(0,u.jsx)(q,{children:d.rightPanel.open||t!==`exited`?(0,u.jsxs)(u.Fragment,{children:[O?(0,u.jsx)($t,{panel:y,state:d.rightPanel,actions:_.rightPanel,pinActions:_.pinnedRightPanel,available:h}):null,S?(0,u.jsx)($t,{panel:S,state:d.pinnedRightPanel,actions:_.pinnedRightPanel,close:_.rightPanel.close}):null]}):null})]})});return C?(0,u.jsxs)(Wr,{children:[e.hideHeader?null:(0,u.jsxs)(Gr,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsx)(qr,{children:(0,u.jsxs)(Pr,{children:[(0,u.jsx)(Fr,{children:re()}),(0,u.jsxs)(Ir,{children:[f.length>0?(0,u.jsx)(Lr,{onClick:_.leftPanel.toggle,children:v?.label}):null,h.length>0?(0,u.jsx)(zr,{children:(0,u.jsxs)(Br,{onClick:_.rightPanel.toggle,children:[(0,u.jsx)(Se,{rotate:180}),y?.label]})}):null,(0,u.jsx)(Rr,{children:`Preview`})]}),h.length>0?(0,u.jsx)(Vr,{$open:d.rightPanel.open,children:N()}):null,f.length>0?(0,u.jsx)(Hr,{$open:d.leftPanel.open,children:j()}):null,f.length>0||h.length>0?(0,u.jsx)(Ur,{$open:d.leftPanel.open||d.rightPanel.open,onClick:()=>{_.leftPanel.close(),_.rightPanel.close()}}):null]})})]}):(0,u.jsxs)(Wr,{id:e.htmlId||`manifest-editor-container`,className:`manifest-editor ${e.className||``}`,children:[e.hideHeader?null:(0,u.jsxs)(Gr,{children:[e.header||null,e.menu?(0,u.jsx)(`menu`,{children:e.menu}):null]}),(0,u.jsxs)(qr,{ref:e=>{E.refs.container.current=e,D.refs.container.current=e},children:[f.length>0?(0,u.jsx)(c.PanelSideMenu,{current:d.leftPanel.current,items:f.map(e=>({id:e.id,label:e.label,icon:e.icon,divide:e.divide,onClick:()=>{d.leftPanel.current===e.id?_.leftPanel.toggle():_.leftPanel.change({id:e.id})}})),open:d.leftPanel.open}):null,f.length>0?(0,u.jsx)(te.Transition,{nodeRef:a,in:d.leftPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Jr,{ref:a,$width:E.widthB,$state:e,$motion:!0,children:j(e)}),(0,u.jsx)(Dr,{ref:E.refs.resizer,reset:k,dir:`left`,transition:e,open:d.leftPanel.open||e!==`exited`,actions:_.leftPanel})]})}):null,(0,u.jsx)(Yr,{children:re()}),h.length>0?(0,u.jsx)(te.Transition,{nodeRef:o,in:d.rightPanel.open,timeout:400,unmountOnExit:!1,children:e=>(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Dr,{ref:D.refs.resizer,dir:`right`,reset:A,open:d.rightPanel.open,actions:_.rightPanel}),(0,u.jsx)(Xr,{ref:o,$width:D.widthB,$state:e,$motion:!0,children:N(e)})]})}):null]}),(0,u.jsx)(Kr,{children:e.footer||null}),(0,u.jsx)(`div`,{className:`hidden`,children:ne}),(0,u.jsx)(u.Fragment,{children:M()})]})});function J(e,t){function n(){t({type:`popStack`,panel:e,payload:void 0})}function r(n){t({type:`change`,panel:e,payload:n})}function i(n){t({type:`open`,panel:e,payload:n})}function a(){t({type:`close`,panel:e,payload:void 0})}function o(){t({type:`toggle`,panel:e,payload:void 0})}function s(){t({type:`minimise`,panel:e,payload:void 0})}function c(n){t({type:`maximise`,panel:e,payload:n})}function u(n){t({type:`setCustomWidth`,panel:e,payload:n})}function d(){t({type:`resetSize`,panel:e,payload:void 0})}function f(n){t({type:`pin`,panel:e,payload:n})}function p(){t({type:`unpin`,panel:e,payload:void 0})}return(0,l.useMemo)(()=>({popStack:n,change:r,open:i,close:a,toggle:o,minimise:s,maximise:c,setCustomWidth:u,resetSize:d,pin:f,unpin:p}),[])}function ti(e,t){if(t.payload&&t.payload.stacked){if(e.current){let n=e.stack[e.stack.length-1];if(n&&n.id===e.current)return;t.payload.unique&&(e.stack=e.stack.filter(t=>t.id!==e.current)),e.stack.push({id:e.current,state:e.state?{...(0,m.original)(e.state)}:{}})}}else e.stack=[]}function Y(e,t){switch(t.type){case`popStack`:if(e.stack.length){let t=e.stack[e.stack.length-1];t&&(e.current=t.id,e.state=t.state),e.stack=e.stack.slice(0,-1)}break;case`change`:t.payload.id!==e.current&&ti(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&&ti(e,t),e.state=t.payload.state,e.current=t.payload.id);break;case`toggle`:e.open=!e.open;break;case`maximise`:e.minimised=!1,t.payload&&(e.state=t.payload.state,e.current=t.payload.id);break;case`minimise`:e.minimised=!0;break;case`setCustomWidth`:e.customWidth=t.payload;break;case`resetSize`:e.customWidth=void 0}if(It(e))switch(t.type){case`pin`:e.pinned=!0,e.state=t.payload.state,e.current=t.payload.id;break;case`unpin`:e.pinned=!1,e.state=void 0;break}}const ni=(0,m.produce)((e,t)=>{switch(t.panel){case`centerPanel`:Y(e.centerPanel,t);break;case`leftPanel`:Y(e.leftPanel,t);break;case`rightPanel`:Y(e.rightPanel,t);break;case`modal`:Y(e.modal,t);break;case`pinnedRightPanel`:Y(e.pinnedRightPanel,t);break}});function X(){return{customWidth:void 0,minimised:!1,open:!0,current:null,state:null,stack:[]}}function ri(){return{leftPanel:X(),centerPanel:X(),rightPanel:X(),modal:X(),pinnedRightPanel:{...X(),pinnable:!0,pinned:!1}}}const ii=(0,l.createContext)({resource:null});function ai(){return(0,l.useContext)(ii)}function oi(){let e=(0,p.useVault)(),{resource:t}=ai();O(t,`Nothing selected`);let{id:n,type:r}=t;return(0,p.useVaultSelector)(()=>e.get({id:n,type:r}),[n,r])}function si(){let{resource:e}=ai();return e}function ci({resource:e,children:t}){let{id:n,type:r}=e||{};return(0,u.jsx)(ii.Provider,{value:(0,l.useMemo)(()=>({resource:n&&r?{id:n,type:r}:null}),[n,r]),children:t})}var li=class extends l.Component{constructor(...e){super(...e),R(this,`state`,{hasError:!1})}static getDerivedStateFromError(e){return console.error(e),{hasError:!0}}componentDidCatch(e,t){console.error(`Uncaught error:`,e,t)}render(){return this.state.hasError?(0,u.jsx)(`h1`,{children:`Sorry.. there was an error`}):this.props.children}};function Z(e,t){return typeof e==`string`?{id:e,state:t}:e}const ui=(0,l.memo)(function(e){let t=P(),n=gr(),r=t.layout,[i,a]=(0,l.useReducer)(ni,void 0,ri),o={centerPanel:J(`centerPanel`,a),leftPanel:J(`leftPanel`,a),rightPanel:J(`rightPanel`,a),pinnedRightPanel:J(`pinnedRightPanel`,a),modal:J(`modal`,a),editingStack:vn()};function s(e){let t=r.rightPanels.find(t=>t.id===e);if(t)return[t,o.rightPanel,o.pinnedRightPanel];let n=r.centerPanels.find(t=>t.id===e);if(n)return[n,o.centerPanel];let i=r.leftPanels.find(t=>t.id===e);if(i)return[i,o.leftPanel];O(!1,`Was not able to find panel with id "${e}"`)}function c(e,t){let{id:r,state:i,stacked:a}=Z(e,t),[o,c,l]=s(r);if(l&&o.options?.openPinned)l.pin({id:r,state:{...o.defaultState||{},...i||{}}});else{let e={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.open`,e),c.open(e)}}function d(e,t){let{id:r,state:i}=Z(e,t),[a,o]=s(r),c={id:r,state:{...a.defaultState||{},...i||{}},stacked:!0};n.emit(`layout.open`,c),o.open(c)}function f(e,t){let{id:r,state:i,stacked:a}=Z(e,t),[o,c]=s(r),l={id:r,state:{...o.defaultState||{},...i||{}},stacked:a};n.emit(`layout.change`,l),c.change(l)}function p(e,t){let{id:r}=Z(e,t),[,i]=s(r);n.emit(`layout.close`,{id:r}),i.close()}function m(e,t){let{id:r}=Z(e,t),[,i]=s(r);n.emit(`layout.toggle`,{id:r}),i.toggle()}function h(e,t={},{reset:i,property:a,stacked:s,forceOpen:c}={}){let l={resource:(0,_.isSpecificResource)(e)?e:{type:`SpecificResource`,source:e},...t};n.emit(`layout.edit`,l),o.editingStack.edit(l,i),r.rightPanels.find(e=>e.id===`@manifest-editor/editor`)&&(c?o.rightPanel.open({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a},unique:!0}):o.rightPanel.change({id:`@manifest-editor/editor`,stacked:s!==!1,state:{property:a},unique:!0}))}function g(e){o.editingStack.create(e,{}),n.emit(`layout.create`,e),r.modals?.find(e=>e.id===`@manifest-editor/creator`)?o.modal.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e}):r.rightPanels.find(e=>e.id===`@manifest-editor/creator`)&&o.rightPanel.open({id:`@manifest-editor/creator`,stacked:!0,unique:!0,state:e})}let v={open:c,change:f,close:p,toggle:m,stack:d,edit:h,create:g};return(0,u.jsx)(At.Provider,{value:(0,l.useMemo)(()=>({...o,...v}),[r]),children:(0,u.jsx)(jt.Provider,{value:i,children:e.children})})}),di=[{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`}],fi=new ne.ImageServiceLoader({approximateServices:!0,verificationsRequired:8,enableFetching:!0});function pi({config:e,saveConfig:t,children:n,theme:r,previews:i,resource:a,editing:o}){let s=M(),c=(0,l.useMemo)(()=>({...s,...e,previews:e?.previews||s.previews||di}),[s,e]);return(0,u.jsx)(li,{children:(0,u.jsx)(p.ImageServiceLoaderContext.Provider,{value:fi,children:(0,u.jsx)(De,{resource:a,children:(0,u.jsx)(sn,{children:(0,u.jsx)(d.ThemeProvider,{theme:r||Fn,children:(0,u.jsx)(N,{config:c,saveConfig:t,children:(0,u.jsx)(On,{children:(0,u.jsx)(ui,{children:(0,u.jsx)(Vn,{children:(0,u.jsx)(Re,{previews:i||[],configs:c.previews,children:(0,u.jsx)(p.AtlasStoreProvider,{children:n})})})})})})})})})})})}const Q={},mi=(0,l.createContext)(`global`);function hi(){return(0,l.useContext)(mi)}function gi(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}function _i(e){let t=hi(),[,n]=(0,l.useReducer)(e=>e+1,0),r=(0,l.useMemo)(()=>(Q[t]||(Q[t]={}),Q[t][e]||(Q[t][e]={name:e,emitter:(0,C.default)(),status:`idle`,promise:Promise.resolve(),abort:new AbortController,reject:()=>void 0,resolve:()=>void 0}),Q[t][e]),[t,e]);return $(r,`abort`,n),$(r,`error`,n),$(r,`complete`,n),$(r,`running`,n),r}function $(e,t,n){let r=(0,l.useCallback)(()=>n(e),[n]);(0,l.useEffect)(()=>{let n=e.emitter;return n.on(t,r),()=>n.off(t,r)},[t,r,e.emitter])}const vi=()=>void 0;function yi(e,t){let n=_i(e);return $(n,`complete`,t||vi),[e=>{n.status===`running`&&(n.abort.abort(),n.emitter.emit(`abort`)),n.error&&(n.error=``);let t=gi();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 bi(e,t){let n=_i(e);return $(n,`running`,t),[e=>{n.status===`running`&&(n.response=e,n.status=`complete`,n.resolve())},n,(e,t)=>{n.status===`running`&&(n.error=t||e,n.status=`error`,n.reject(e))}]}function xi({children:e}){return(0,u.jsx)(mi.Provider,{value:(0,l.useMemo)(()=>`id-${Date.now()}`,[]),children:e})}function Si(e){return!1}function Ci({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]),ee=(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]),b=(0,l.useCallback)(async function(e){if(!e.defaultPrevented&&(e.preventDefault(),e.clipboardData)){if(p.onLoading&&p.onLoading(),g){let t=e.clipboardData.getData(`application/json+vault`);if(t)try{let e=JSON.parse(t);e&&e.id&&e.type&&g(e)}catch{}}if(_||v){let t=e.clipboardData.getData(`text`);if(t.startsWith(`http`)){let e=t.split(`
988
988
  `);for(let t of e){if(v)try{let e=await Si(t);if(e){v(e);continue}}catch{}_&&_(t)}}}p.onComplete&&p.onComplete()}},[]),x=(0,l.useCallback)(function(e){e.defaultPrevented||(e.preventDefault(),e.dataTransfer&&p.draggable&&(e.dataTransfer.effectAllowed=`all`,y&&y.id&&y.type&&e.dataTransfer.setData(`application/json+vault`,JSON.stringify({id:y.id,type:y.type}))))},[]);return(0,u.jsx)(m,{onCopy:ee,onPaste:b,onDrop:(0,l.useCallback)(async function(e){if(e.preventDefault(),e.dataTransfer){if(h){let t=e.dataTransfer.getData(`application/json+vault`);if(t)try{let n=JSON.parse(t);n&&n.id&&n.type&&h(n,e)}catch{return}}let t=e.dataTransfer.getData(`application/json`);if(t){JSON.parse(t);return}if(e.dataTransfer.getData(`text/plain`))return}},[]),onDragOver:(0,l.useCallback)(e=>{e.preventDefault(),e.dataTransfer&&(e.dataTransfer.dropEffect=`copy`)},[]),onDragStart:x,tabIndex:-1,...p})}exports.AppHeader=rt,exports.AppMenuProvider=st,exports.AppProvider=ue,exports.AppReactContext=ae,exports.AppResourceInstanceProvider=Ee,exports.AppResourceProvider=De,exports.AppStateReactContext=oe,exports.AtlasStoreProvider=p.AtlasStoreProvider,exports.AtlasStoreReactContext=p.AtlasStoreReactContext,exports.BaseAnnotationCreator=In,exports.BaseEditor=Nn,exports.BaseEditorBackButton=An,exports.BaseEditorCloseButton=jn,exports.ConfigEditor=Rn,exports.ConfigProvider=N,exports.ConfigReactContext=A,exports.ContextMenuProvider=Vn,exports.ContextMenuReactContext=Bn,exports.EditingStack=On,exports.EditingStackContext=W,exports.EventEmitterProvider=hr,exports.ExportPanel=fr,exports.HOMEPAGE_COLLECTION=an,exports.HandleContainer=Sr,exports.HandleControls=Dr,exports.InlineEditingStack=kn,exports.Layout=ei,exports.LayoutActionsReactContext=At,exports.LayoutStateReactContext=jt,exports.ModularPanel=$t,exports.ModularPanelHeader=Yt,exports.ModulePanelButton=U,exports.MultiAppProvider=me,exports.PanelError=Ft,exports.PreviewButton=nt,exports.PreviewProvider=Re,exports.PreviewVaultBoundary=cn,exports.PreviewVaultContext=sn,exports.PrimeAppReactContext=ie,exports.ReactEmitterContext=mr,exports.ResourceEditingProvider=ci,exports.ResourceEditingReactContext=ii,exports.SaveConfigReactContext=j,exports.ShellProvider=pi,exports.TaskBridge=xi,exports.UniversalCopyTarget=Ci,exports.analyse=pt,exports.analyseJson=ht,exports.baseCreator=pn,exports.baseEditor=Pn,exports.copyToClipboard=St,exports.createActionIdentity=xt,exports.createDownload=B,exports.createPreviewVault=en,exports.detectMedia=ft,exports.editBasedOnResource=Mn,exports.extendApp=Tt,exports.getDefaultLayoutState=ri,exports.getDefaultPanelState=X,exports.getFormat=vt,exports.getImageDimensions=yt,exports.getManifestNomalized=bt,exports.isPinnableState=It,exports.layoutReducer=ni,exports.mapApp=wt,exports.panelSizing=Lt,exports.polygonToBoundingBox=lt,exports.randomId=Ct,exports.renderHelper=Rt,exports.useAnnotationCreatorState=xr,exports.useAnnotationPageEditor=Tn,exports.useApp=P,exports.useAppInstance=se,exports.useAppMenu=at,exports.useAppMenuItem=ot,exports.useAppResource=I,exports.useAppResourceInstance=Te,exports.useAppState=ce,exports.useApps=fe,exports.useAtlasStore=ct,exports.useAvailableLayouts=Nt,exports.useCollectionEditor=Cn,exports.useConfig=M,exports.useCreatingResource=xn,exports.useCreator=ln,exports.useCustomContextMenu=Gn,exports.useDecayState=Ln,exports.useEditingContext=ai,exports.useEditingResource=yn,exports.useEditingResourceStack=bn,exports.useEditingStack=vn,exports.useEditor=En,exports.useEmitter=gr,exports.useEvent=_r,exports.useGenericEditor=wn,exports.useHighlightedImageResource=V,exports.useHoverHighlightImageResource=Dt,exports.useInlineCreator=un,exports.useLayoutActions=H,exports.useLayoutProvider=Pt,exports.useLayoutState=Mt,exports.useLocalStorage=c.useLocalStorage,exports.useManifestEditor=Sn,exports.useMatchMedia=vr,exports.useOptionalLocalStorage=c.useOptionalLocalStorage,exports.useOptionalResource=si,exports.usePanelActions=J,exports.usePreviewContext=Be,exports.usePreviewHistory=on,exports.usePreviewVault=tn,exports.usePreviews=ze,exports.useResource=oi,exports.useResourceContextMenuItems=Un,exports.useSaveConfig=re,exports.useSaveVault=yr,exports.useSetCustomTitle=qt,exports.useSvgTools=br,exports.useTask=_i,exports.useTaskDispatch=yi,exports.useTaskEvent=$,exports.useTaskRunner=bi,exports.useTemporaryHighlight=Et;
989
989
  //# sourceMappingURL=index.cjs.map