@manifest-editor/projects 2.2.2-next.0.4041094 → 2.2.2-next.0.92cba17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
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("react"),u=require("tiny-use-debounce"),d=require("@iiif/helpers"),f=require("@iiif/parser/presentation-2"),p=require("@manifest-editor/client-vault"),m=require("@manifest-editor/shell"),h=require("immer"),g=require("localforage");g=c(g,1);let _=require("@iiif/helpers/vault"),v=require("react-iiif-vault"),y=require("react/jsx-runtime"),b=require("styled-components");b=c(b,1);let ee=require("react-dom");var x=process.env.NODE_ENV===`production`,S=`Invariant failed`;function C(e,t){if(!e){if(x)throw Error(S);var n=typeof t==`function`?t():t,r=n?`${S}: ${n}`:S;throw Error(r)}}const w=(0,l.createContext)(null),T=(0,l.createContext)({error:void 0,isError:!1,isLoading:!1});function te(){return(0,l.useContext)(T)}function E(){let e=(0,l.useContext)(w);return C(e,`useProjectContext can only be called from inside <ProjectProvider />`),e}function ne(){let e=E().current;return C(e,`No current project`),e}function re(){return E().current||null}var ie=o(((e,t)=>{t.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),c=0;c<a.length;c++){var l=a[c];if(!s(l))return!1;var u=e[l],d=t[l];if(i=n?n.call(r,u,d,l):void 0,i===!1||i===void 0&&u!==d)return!1}return!0}})),D=o(((e,t)=>{(function(n,r,i){typeof e==`object`?(t.exports=i(),t.exports.default=i()):typeof define==`function`&&define.amd?define(i):r[n]=i()})(`slugify`,e,function(){var e=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E'","Ը":"Y'","Թ":"T'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C'","Կ":"K","Հ":"H","Ձ":"D'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P'","Ք":"Q'","Օ":"O''","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"'","’":"'","“":"\\"","”":"\\"","„":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}`),t=JSON.parse(`{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}`);function n(n,r){if(typeof n!=`string`)throw Error(`slugify: string argument expected`);r=typeof r==`string`?{replacement:r}:r||{};var i=t[r.locale]||{},a=r.replacement===void 0?`-`:r.replacement,o=r.trim===void 0||r.trim,s=n.normalize().split(``).reduce(function(t,n){var o=i[n];return o===void 0&&(o=e[n]),o===void 0&&(o=n),o===a&&(o=` `),t+o.replace(r.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,``)},``);return r.strict&&(s=s.replace(/[^A-Za-z0-9\s]/g,``)),o&&(s=s.trim()),s=s.replace(/\s+/g,a),r.lower&&(s=s.toLowerCase()),s}return n.extend=function(t){Object.assign(e,t)},n})})),O=c(ie(),1),k=c(D(),1);function ae(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function A(e,t={}){let n=(0,d.getValue)(e.label)||`Untitled manifest`;return{id:`manifest-editor://project/${ae()}`,filename:(0,k.default)(n,{lower:!0}),name:n,metadata:{created:Date.now(),modified:Date.now()},resource:{id:e.id,type:`Manifest`},publications:[],previews:[],settings:{},storage:{type:`manifest-storage`,data:e},...t}}function oe(e,t){let n=t.map(e=>e.filename),r=(e.name||e.filename||`Untitled project`).toLowerCase();if(e.filename&&n.indexOf(e.filename)!==-1&&(e.filename=void 0),!e.filename){let t=0;for(;!e.filename;){let i=`${(0,k.default)(r,{lower:!0})}${t?` (${t})`:``}`;if(n.indexOf(i)===-1){e.filename=i,e.name=`${e.name} (${t})`;break}t++}}}function j(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function se(e,t={}){let n=(0,d.getValue)(e.label)||`Untitled collection`;return{id:`manifest-editor://project/${j()}`,filename:(0,k.default)(n,{lower:!0}),name:n,metadata:{created:Date.now(),modified:Date.now()},resource:{id:e.id,type:`Collection`},publications:[],previews:[],settings:{},storage:{type:`collection-storage`,data:e},...t}}function M(e,t,n){async function r(r){let i=await t.getAllProjects(!0),o={...r};if(oe(o,i),!n.canCreate())throw Error(`Cannot create project with this storage backend`);let s=await n.create(o,o.storage.data),c={...o,storage:s};await t.createProject(c),e({type:`createProject`,payload:c}),a(o.id)}function i(n){t.canDelete()&&(e({type:`deleteProject`,payload:n}),t.deleteProject(n).then(()=>{console.log(`Loader: project deleted`)}))}function a(n){e({type:`switchProject`,payload:n}),t.setLastProject(n).then(()=>{})}function o(t){e({type:`deselectProject`,payload:t})}function s(t){throw e({type:`forkProject`,payload:t}),Error(`Not implemented yet`)}function c(t){e({type:`setLoadingStatus`,payload:t})}function u(r){console.log(`trying to save project...`),e({type:`saveProject`,payload:r}),Promise.all([t.updateProject(r),n.saveStorage(r.storage)]).then(()=>{console.log(`Loader: project saved`)})}function d(t){e({type:`updateDetails`,payload:t})}function f(t){e({type:`createPublication`,payload:t})}function p(t){e({type:`updatePublication`,payload:t})}function m(t){e({type:`removePublication`,payload:t})}function h(t){e({type:`updateSettings`,payload:t})}function g(t){e({type:`updateThumbnail`,payload:t})}function _(t){e({type:`updateStorage`,payload:t})}function v(t){e({type:`load`,payload:t})}function y(t){e({type:`setPreview`,payload:t})}function b(t){e({type:`removePreview`,payload:t})}return(0,l.useMemo)(()=>({createProject:r,deleteProject:i,switchProject:a,deselectProject:o,forkProject:s,saveProject:u,setLoadingStatus:c,load:v,updateDetails:d,createPublication:f,updatePublication:p,removePublication:m,updateSettings:h,updateThumbnail:g,updateStorage:_,setPreview:y,removePreview:b}),[])}function N({actions:e,current:t},n){(0,l.useEffect)(()=>{e.setLoadingStatus({loading:!0,lastLoaded:0,loaded:!1}),n.getAllProjects().then(async t=>{let r=await n.getLastProject(),i=t.find(e=>e.id===r);e.load({allProjects:t,current:i||null,loadingStatus:{loaded:!0,loading:!1,lastLoaded:Date.now()}})})},[])}function P({actions:e,current:t},n){let r=(0,l.useRef)(null),[i,a]=(0,l.useState)(!1),[o,s]=(0,l.useState)(``),c=(0,l.useCallback)(()=>{let t=r.current;t&&n.saveStorage(t.storage).then(()=>{let r=n.getBackendStorage(t);(0,O.default)(r,t.storage)||e.saveProject({...t,storage:r})})},[e,n]),d=(0,u.useDebounce)(c,n.saveInterval),f=t?.id;(0,l.useEffect)(()=>{r.current=t},[t]);let{vault:m,promise:h}=(0,l.useMemo)(()=>{if(t){let[e,r]=n.createVaultInstance(t);return{vault:e,promise:r}}return{vault:null,promise:null}},[n,f]);return(0,l.useEffect)(()=>{let e=n,r=t,i=m;return()=>{i&&r?e.closeVaultInstance(r,i):i instanceof p.ClientVault&&i.ws.close()}},[n,t,m]),(0,l.useEffect)(()=>{a(!1);let e=!1;return h&&h.then(()=>{e||a(!0)}).catch(e=>{s(e.message)}),()=>{e=!0}},[h]),(0,l.useEffect)(()=>(window.addEventListener(`beforeunload`,c,!1),()=>{window.removeEventListener(`beforeunload`,c)}),[c]),(0,l.useEffect)(()=>()=>{c()},[c,f]),(0,l.useEffect)(()=>{if(m&&n.shouldUpdateWithVault())return m.subscribe(d,!0)},[d,n,m]),{vault:m,ready:i,error:o}}function ce(){let{actions:e}=E(),t=(0,l.useCallback)(function(){e.createProject(A({"@context":`http://iiif.io/api/presentation/3/context.json`,id:`https://example.org/${j()}`,type:`Manifest`,label:{en:[`Blank Manifest`]},items:[]}))},[]),n=(0,l.useCallback)(async function(t){let n=await(0,m.getManifestNomalized)(t);n&&(n[`@id`]&&(n=(0,f.convertPresentation2)(n)),n&&e.createProject(A(n)))},[]),r=(0,l.useCallback)(async function(t){let n=await(0,m.getManifestNomalized)(t);n&&(n[`@id`]&&(n=(0,f.convertPresentation2)(n)),n&&e.createProject(se(n)))},[]);return{createProjectFromManifestJson:(0,l.useCallback)(async function(t){let n=JSON.parse(t);n&&(n[`@id`]&&(n=(0,f.convertPresentation2)(n)),n&&e.createProject(A(n)))},[]),createProjectFromManifestId:n,createProjectFromCollectionId:r,createBlankManifest:t}}const le=(0,h.produce)(function(e,t){if(e.current)switch(t.type){case`removePublication`:e.current.publications=e.current.publications.filter(e=>e.id!==t.payload);break;case`saveProject`:e.current.metadata.modified=Date.now();break;case`updateDetails`:e.current.name=t.payload.name,e.current.filename=t.payload.filename;break;case`updateStorage`:e.current.storage=t.payload;break;case`createPublication`:e.current.publications.find(e=>e.id===t.payload.id)||e.current.publications.push(t.payload);break;case`updateThumbnail`:e.current.thumbnail=t.payload;break;case`updateSettings`:e.current.settings=t.payload;break;case`updatePublication`:{let n=e.current.publications.find(e=>e.id===t.payload.id);n&&(n.config=t.payload.config);break}case`removePreview`:{let n=e.current.previews?.findIndex(e=>e.id===t.payload);n!==-1&&e.current.previews.splice(n,1);break}case`setPreview`:{let n=e.current.previews?.findIndex(e=>e.id===t.payload.id);n===-1?e.current.previews.push(t.payload):e.current.previews.splice(n,1,t.payload);break}}switch(t.type){case`load`:e.allProjects=t.payload.allProjects,e.current=t.payload.current,e.loadingStatus=t.payload.loadingStatus;break;case`forkProject`:break;case`deleteProject`:e.allProjects=e.allProjects.filter(e=>e.id!==t.payload),e.current&&e.current.id===t.payload&&(e.current=null);break;case`deselectProject`:e.current=null;break;case`createProject`:e.allProjects.push(t.payload),e.current=t.payload;break;case`switchProject`:e.current=e.allProjects.find(e=>e.id===t.payload)||null;break;case`setLoadingStatus`:e.loadingStatus=t.payload}});function ue(e={loading:!1,loaded:!0,lastLoaded:0}){return{allProjects:[],current:null,loadingStatus:e}}function F(e){"@babel/helpers - typeof";return F=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},F(e)}function I(e,t){if(F(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(F(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function L(e){var t=I(e,`string`);return F(t)==`symbol`?t:t+``}function R(e,t,n){return(t=L(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var z=class{constructor(e){R(this,`namespace`,void 0),R(this,`saveInterval`,void 0),R(this,`storage`,void 0),this.namespace=e?.namespace||`default-v1.1`,this.saveInterval=5e3,this.storage=g.createInstance({name:`manifest-editor-projects`})}async deleteProject(e){await this.storage.removeItem(`${this.namespace}/projects/${e}`)}async createProject(e){let t=await this.getProjectIndex();await this.storage.setItem(`${this.namespace}/projects/${e.id}`,JSON.stringify(e)),t.indexOf(e.id)===-1&&(t.push(e.id),await this.saveProjectIndex(t))}canDelete(){return!0}async getAllProjects(){try{let e=await this.getProjectIndex(),t=[];for(let n of e){if(n===`_index`)continue;let e=await this.storage.getItem(`${this.namespace}/projects/${n}`);if(e)try{t.push(JSON.parse(e))}catch{}}return t}catch(e){return console.error(`Error loading from localstorage`,e),[]}}async getLastProject(){return this.storage.getItem(`${this.namespace}/last`)}async setLastProject(e){await this.storage.setItem(`${this.namespace}/last`,e)}async updateProject(e){await this.storage.setItem(`${this.namespace}/projects/${e.id}`,JSON.stringify(e))}async saveProjectIndex(e){await this.storage.setItem(`${this.namespace}/_index`,JSON.stringify(e))}async getProjectIndex(){let e=await this.storage.getItem(`${this.namespace}/_index`);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t:[]}},B=class{constructor(e={}){R(this,`vaults`,{}),R(this,`saveInterval`,void 0),this.saveInterval=e.saveInterval||5e3}shouldUpdateWithVault(){return!0}canCreate(){return!0}canDelete(){return!0}createVaultInstance(e){let t=this.vaults[e.storage.data.key];if(t)return[t,Promise.resolve()];let n=new _.Vault;return[n,(async()=>{let t=await this.getStorage(e.storage);await n.loadManifest(e.resource.id,JSON.parse(JSON.stringify(t?.data))),this.vaults[e.storage.data.key]=n})()]}closeVaultInstance(e,t){}async saveStorage(e){let t=this.vaults[e.data.key],n={id:e.data.id,type:e.data.type};if(t){let r=t.toPresentation3(n),i=r.type===`Collection`?{type:`collection-storage`,data:r}:{type:`manifest-storage`,data:r};await this.saveStorageData(i,e)}}},V=class extends B{constructor(e){super({saveInterval:5e3}),R(this,`type`,`local-storage`),R(this,`namespace`,void 0),R(this,`storage`,void 0),R(this,`vaults`,{}),this.namespace=e?.namespace||`default`,this.storage=g.default.createInstance({name:`local-storage-resource-loader`})}shouldUpdateWithVault(){return!0}async create(e,t){let n=j();return await localStorage.setItem(`${this.namespace}/store/${n}`,JSON.stringify(t)),{type:`resource-keyed-storage`,data:{id:t.id,type:t.type,key:n}}}async getStorage(e){try{let t=await localStorage.getItem(`${this.namespace}/store/${e.data.key}`),n=t?JSON.parse(t):null;return C(n,`Resource not found`),n.type===`Collection`?{type:`collection-storage`,data:n}:{type:`manifest-storage`,data:n}}catch{return null}}async saveStorageData(e,t){await localStorage.setItem(`${this.namespace}/store/${t.data.key}`,JSON.stringify(e.data))}async deleteStorage(e){this.vaults[e.data.key]=null,await localStorage.removeItem(`${this.namespace}/store/${e.data.key}`)}getBackendStorage(e){return e.storage}};function H(e){let{currentApp:t,changeApp:n}=(0,m.useApps)(),r=(0,l.useMemo)(()=>e.backend||new z,[]),i=(0,l.useMemo)(()=>e.storage||new V,[]),[a,o]=(0,l.useReducer)(le,void 0,e.initialState||ue),s=M(o,r,i),c=(0,l.useMemo)(()=>({actions:s,canDelete:r.canDelete(),...a}),[s,r,a]),{vault:u,ready:d,error:f}=P(c,i),p=c.current?.resource,h=(0,l.useMemo)(()=>({isLoading:!d,isError:!!f,error:f}),[d,f]);return N(c,r),(0,l.useEffect)(()=>{a.loadingStatus&&a.loadingStatus.loaded&&d&&(!u||!p)&&t?.id!==(e.defaultApp||`splash`)&&n({id:e.defaultApp||`splash`})},[]),a.loadingStatus&&a.loadingStatus.loading||c.current&&!p?(0,y.jsx)(`div`,{children:`Loading...`}):(0,y.jsx)(T.Provider,{value:h,children:(0,y.jsx)(w.Provider,{value:c,children:(0,y.jsx)(v.VaultProvider,{vault:u||void 0,children:(0,y.jsx)(m.AppResourceInstanceProvider,{id:c.current?.id,children:(0,y.jsx)(m.AppResourceProvider,{resource:p,children:e.children})})},a.current?.id)})})}const de=()=>(0,y.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[(0,y.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,y.jsx)(`path`,{d:`M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z`})]});b.default.button`
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("react"),u=require("tiny-use-debounce"),d=require("@iiif/helpers"),f=require("@iiif/parser/presentation-2"),p=require("@manifest-editor/client-vault"),m=require("@manifest-editor/shell"),h=require("@manifest-editor/i18n"),g=require("immer"),_=require("localforage");_=c(_,1);let v=require("@iiif/helpers/vault"),y=require("react-iiif-vault"),b=require("react/jsx-runtime"),x=require("styled-components");x=c(x,1);let ee=require("react-dom");var S=process.env.NODE_ENV===`production`,C=`Invariant failed`;function w(e,t){if(!e){if(S)throw Error(C);var n=typeof t==`function`?t():t,r=n?`${C}: ${n}`:C;throw Error(r)}}const T=(0,l.createContext)(null),E=(0,l.createContext)({error:void 0,isError:!1,isLoading:!1});function te(){return(0,l.useContext)(E)}function D(){let e=(0,l.useContext)(T);return w(e,`useProjectContext can only be called from inside <ProjectProvider />`),e}function ne(){let e=D().current;return w(e,`No current project`),e}function re(){return D().current||null}var ie=o(((e,t)=>{t.exports=function(e,t,n,r){var i=n?n.call(r,e,t):void 0;if(i!==void 0)return!!i;if(e===t)return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;var a=Object.keys(e),o=Object.keys(t);if(a.length!==o.length)return!1;for(var s=Object.prototype.hasOwnProperty.bind(t),c=0;c<a.length;c++){var l=a[c];if(!s(l))return!1;var u=e[l],d=t[l];if(i=n?n.call(r,u,d,l):void 0,i===!1||i===void 0&&u!==d)return!1}return!0}})),O=o(((e,t)=>{(function(n,r,i){typeof e==`object`?(t.exports=i(),t.exports.default=i()):typeof define==`function`&&define.amd?define(i):r[n]=i()})(`slugify`,e,function(){var e=JSON.parse(`{"$":"dollar","%":"percent","&":"and","<":"less",">":"greater","|":"or","¢":"cent","£":"pound","¤":"currency","¥":"yen","©":"(c)","ª":"a","®":"(r)","º":"o","À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","Æ":"AE","Ç":"C","È":"E","É":"E","Ê":"E","Ë":"E","Ì":"I","Í":"I","Î":"I","Ï":"I","Ð":"D","Ñ":"N","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","Ù":"U","Ú":"U","Û":"U","Ü":"U","Ý":"Y","Þ":"TH","ß":"ss","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","æ":"ae","ç":"c","è":"e","é":"e","ê":"e","ë":"e","ì":"i","í":"i","î":"i","ï":"i","ð":"d","ñ":"n","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","ù":"u","ú":"u","û":"u","ü":"u","ý":"y","þ":"th","ÿ":"y","Ā":"A","ā":"a","Ă":"A","ă":"a","Ą":"A","ą":"a","Ć":"C","ć":"c","Č":"C","č":"c","Ď":"D","ď":"d","Đ":"DJ","đ":"dj","Ē":"E","ē":"e","Ė":"E","ė":"e","Ę":"e","ę":"e","Ě":"E","ě":"e","Ğ":"G","ğ":"g","Ģ":"G","ģ":"g","Ĩ":"I","ĩ":"i","Ī":"i","ī":"i","Į":"I","į":"i","İ":"I","ı":"i","Ķ":"k","ķ":"k","Ļ":"L","ļ":"l","Ľ":"L","ľ":"l","Ł":"L","ł":"l","Ń":"N","ń":"n","Ņ":"N","ņ":"n","Ň":"N","ň":"n","Ō":"O","ō":"o","Ő":"O","ő":"o","Œ":"OE","œ":"oe","Ŕ":"R","ŕ":"r","Ř":"R","ř":"r","Ś":"S","ś":"s","Ş":"S","ş":"s","Š":"S","š":"s","Ţ":"T","ţ":"t","Ť":"T","ť":"t","Ũ":"U","ũ":"u","Ū":"u","ū":"u","Ů":"U","ů":"u","Ű":"U","ű":"u","Ų":"U","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","ź":"z","Ż":"Z","ż":"z","Ž":"Z","ž":"z","Ə":"E","ƒ":"f","Ơ":"O","ơ":"o","Ư":"U","ư":"u","Lj":"LJ","lj":"lj","Nj":"NJ","nj":"nj","Ș":"S","ș":"s","Ț":"T","ț":"t","ə":"e","˚":"o","Ά":"A","Έ":"E","Ή":"H","Ί":"I","Ό":"O","Ύ":"Y","Ώ":"W","ΐ":"i","Α":"A","Β":"B","Γ":"G","Δ":"D","Ε":"E","Ζ":"Z","Η":"H","Θ":"8","Ι":"I","Κ":"K","Λ":"L","Μ":"M","Ν":"N","Ξ":"3","Ο":"O","Π":"P","Ρ":"R","Σ":"S","Τ":"T","Υ":"Y","Φ":"F","Χ":"X","Ψ":"PS","Ω":"W","Ϊ":"I","Ϋ":"Y","ά":"a","έ":"e","ή":"h","ί":"i","ΰ":"y","α":"a","β":"b","γ":"g","δ":"d","ε":"e","ζ":"z","η":"h","θ":"8","ι":"i","κ":"k","λ":"l","μ":"m","ν":"n","ξ":"3","ο":"o","π":"p","ρ":"r","ς":"s","σ":"s","τ":"t","υ":"y","φ":"f","χ":"x","ψ":"ps","ω":"w","ϊ":"i","ϋ":"y","ό":"o","ύ":"y","ώ":"w","Ё":"Yo","Ђ":"DJ","Є":"Ye","І":"I","Ї":"Yi","Ј":"J","Љ":"LJ","Њ":"NJ","Ћ":"C","Џ":"DZ","А":"A","Б":"B","В":"V","Г":"G","Д":"D","Е":"E","Ж":"Zh","З":"Z","И":"I","Й":"J","К":"K","Л":"L","М":"M","Н":"N","О":"O","П":"P","Р":"R","С":"S","Т":"T","У":"U","Ф":"F","Х":"H","Ц":"C","Ч":"Ch","Ш":"Sh","Щ":"Sh","Ъ":"U","Ы":"Y","Ь":"","Э":"E","Ю":"Yu","Я":"Ya","а":"a","б":"b","в":"v","г":"g","д":"d","е":"e","ж":"zh","з":"z","и":"i","й":"j","к":"k","л":"l","м":"m","н":"n","о":"o","п":"p","р":"r","с":"s","т":"t","у":"u","ф":"f","х":"h","ц":"c","ч":"ch","ш":"sh","щ":"sh","ъ":"u","ы":"y","ь":"","э":"e","ю":"yu","я":"ya","ё":"yo","ђ":"dj","є":"ye","і":"i","ї":"yi","ј":"j","љ":"lj","њ":"nj","ћ":"c","ѝ":"u","џ":"dz","Ґ":"G","ґ":"g","Ғ":"GH","ғ":"gh","Қ":"KH","қ":"kh","Ң":"NG","ң":"ng","Ү":"UE","ү":"ue","Ұ":"U","ұ":"u","Һ":"H","һ":"h","Ә":"AE","ә":"ae","Ө":"OE","ө":"oe","Ա":"A","Բ":"B","Գ":"G","Դ":"D","Ե":"E","Զ":"Z","Է":"E'","Ը":"Y'","Թ":"T'","Ժ":"JH","Ի":"I","Լ":"L","Խ":"X","Ծ":"C'","Կ":"K","Հ":"H","Ձ":"D'","Ղ":"GH","Ճ":"TW","Մ":"M","Յ":"Y","Ն":"N","Շ":"SH","Չ":"CH","Պ":"P","Ջ":"J","Ռ":"R'","Ս":"S","Վ":"V","Տ":"T","Ր":"R","Ց":"C","Փ":"P'","Ք":"Q'","Օ":"O''","Ֆ":"F","և":"EV","ء":"a","آ":"aa","أ":"a","ؤ":"u","إ":"i","ئ":"e","ا":"a","ب":"b","ة":"h","ت":"t","ث":"th","ج":"j","ح":"h","خ":"kh","د":"d","ذ":"th","ر":"r","ز":"z","س":"s","ش":"sh","ص":"s","ض":"dh","ط":"t","ظ":"z","ع":"a","غ":"gh","ف":"f","ق":"q","ك":"k","ل":"l","م":"m","ن":"n","ه":"h","و":"w","ى":"a","ي":"y","ً":"an","ٌ":"on","ٍ":"en","َ":"a","ُ":"u","ِ":"e","ْ":"","٠":"0","١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","پ":"p","چ":"ch","ژ":"zh","ک":"k","گ":"g","ی":"y","۰":"0","۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","฿":"baht","ა":"a","ბ":"b","გ":"g","დ":"d","ე":"e","ვ":"v","ზ":"z","თ":"t","ი":"i","კ":"k","ლ":"l","მ":"m","ნ":"n","ო":"o","პ":"p","ჟ":"zh","რ":"r","ს":"s","ტ":"t","უ":"u","ფ":"f","ქ":"k","ღ":"gh","ყ":"q","შ":"sh","ჩ":"ch","ც":"ts","ძ":"dz","წ":"ts","ჭ":"ch","ხ":"kh","ჯ":"j","ჰ":"h","Ṣ":"S","ṣ":"s","Ẁ":"W","ẁ":"w","Ẃ":"W","ẃ":"w","Ẅ":"W","ẅ":"w","ẞ":"SS","Ạ":"A","ạ":"a","Ả":"A","ả":"a","Ấ":"A","ấ":"a","Ầ":"A","ầ":"a","Ẩ":"A","ẩ":"a","Ẫ":"A","ẫ":"a","Ậ":"A","ậ":"a","Ắ":"A","ắ":"a","Ằ":"A","ằ":"a","Ẳ":"A","ẳ":"a","Ẵ":"A","ẵ":"a","Ặ":"A","ặ":"a","Ẹ":"E","ẹ":"e","Ẻ":"E","ẻ":"e","Ẽ":"E","ẽ":"e","Ế":"E","ế":"e","Ề":"E","ề":"e","Ể":"E","ể":"e","Ễ":"E","ễ":"e","Ệ":"E","ệ":"e","Ỉ":"I","ỉ":"i","Ị":"I","ị":"i","Ọ":"O","ọ":"o","Ỏ":"O","ỏ":"o","Ố":"O","ố":"o","Ồ":"O","ồ":"o","Ổ":"O","ổ":"o","Ỗ":"O","ỗ":"o","Ộ":"O","ộ":"o","Ớ":"O","ớ":"o","Ờ":"O","ờ":"o","Ở":"O","ở":"o","Ỡ":"O","ỡ":"o","Ợ":"O","ợ":"o","Ụ":"U","ụ":"u","Ủ":"U","ủ":"u","Ứ":"U","ứ":"u","Ừ":"U","ừ":"u","Ử":"U","ử":"u","Ữ":"U","ữ":"u","Ự":"U","ự":"u","Ỳ":"Y","ỳ":"y","Ỵ":"Y","ỵ":"y","Ỷ":"Y","ỷ":"y","Ỹ":"Y","ỹ":"y","–":"-","‘":"'","’":"'","“":"\\"","”":"\\"","„":"\\"","†":"+","•":"*","…":"...","₠":"ecu","₢":"cruzeiro","₣":"french franc","₤":"lira","₥":"mill","₦":"naira","₧":"peseta","₨":"rupee","₩":"won","₪":"new shequel","₫":"dong","€":"euro","₭":"kip","₮":"tugrik","₯":"drachma","₰":"penny","₱":"peso","₲":"guarani","₳":"austral","₴":"hryvnia","₵":"cedi","₸":"kazakhstani tenge","₹":"indian rupee","₺":"turkish lira","₽":"russian ruble","₿":"bitcoin","℠":"sm","™":"tm","∂":"d","∆":"delta","∑":"sum","∞":"infinity","♥":"love","元":"yuan","円":"yen","﷼":"rial","ﻵ":"laa","ﻷ":"laa","ﻹ":"lai","ﻻ":"la"}`),t=JSON.parse(`{"bg":{"Й":"Y","Ц":"Ts","Щ":"Sht","Ъ":"A","Ь":"Y","й":"y","ц":"ts","щ":"sht","ъ":"a","ь":"y"},"de":{"Ä":"AE","ä":"ae","Ö":"OE","ö":"oe","Ü":"UE","ü":"ue","ß":"ss","%":"prozent","&":"und","|":"oder","∑":"summe","∞":"unendlich","♥":"liebe"},"es":{"%":"por ciento","&":"y","<":"menor que",">":"mayor que","|":"o","¢":"centavos","£":"libras","¤":"moneda","₣":"francos","∑":"suma","∞":"infinito","♥":"amor"},"fr":{"%":"pourcent","&":"et","<":"plus petit",">":"plus grand","|":"ou","¢":"centime","£":"livre","¤":"devise","₣":"franc","∑":"somme","∞":"infini","♥":"amour"},"pt":{"%":"porcento","&":"e","<":"menor",">":"maior","|":"ou","¢":"centavo","∑":"soma","£":"libra","∞":"infinito","♥":"amor"},"uk":{"И":"Y","и":"y","Й":"Y","й":"y","Ц":"Ts","ц":"ts","Х":"Kh","х":"kh","Щ":"Shch","щ":"shch","Г":"H","г":"h"},"vi":{"Đ":"D","đ":"d"},"da":{"Ø":"OE","ø":"oe","Å":"AA","å":"aa","%":"procent","&":"og","|":"eller","$":"dollar","<":"mindre end",">":"større end"},"nb":{"&":"og","Å":"AA","Æ":"AE","Ø":"OE","å":"aa","æ":"ae","ø":"oe"},"it":{"&":"e"},"nl":{"&":"en"},"sv":{"&":"och","Å":"AA","Ä":"AE","Ö":"OE","å":"aa","ä":"ae","ö":"oe"}}`);function n(n,r){if(typeof n!=`string`)throw Error(`slugify: string argument expected`);r=typeof r==`string`?{replacement:r}:r||{};var i=t[r.locale]||{},a=r.replacement===void 0?`-`:r.replacement,o=r.trim===void 0||r.trim,s=n.normalize().split(``).reduce(function(t,n){var o=i[n];return o===void 0&&(o=e[n]),o===void 0&&(o=n),o===a&&(o=` `),t+o.replace(r.remove||/[^\w\s$*_+~.()'"!\-:@]+/g,``)},``);return r.strict&&(s=s.replace(/[^A-Za-z0-9\s]/g,``)),o&&(s=s.trim()),s=s.replace(/\s+/g,a),r.lower&&(s=s.toLowerCase()),s}return n.extend=function(t){Object.assign(e,t)},n})})),k=c(ie(),1),A=c(O(),1);function ae(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function j(e,t={}){let n=(0,d.getValue)(e.label)||`Untitled manifest`;return{id:`manifest-editor://project/${ae()}`,filename:(0,A.default)(n,{lower:!0}),name:n,metadata:{created:Date.now(),modified:Date.now()},resource:{id:e.id,type:`Manifest`},publications:[],previews:[],settings:{},storage:{type:`manifest-storage`,data:e},...t}}function oe(e,t){let n=t.map(e=>e.filename),r=(e.name||e.filename||`Untitled project`).toLowerCase();if(e.filename&&n.indexOf(e.filename)!==-1&&(e.filename=void 0),!e.filename){let t=0;for(;!e.filename;){let i=`${(0,A.default)(r,{lower:!0})}${t?` (${t})`:``}`;if(n.indexOf(i)===-1){e.filename=i,e.name=`${e.name} (${t})`;break}t++}}}function M(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function se(e,t={}){let n=(0,d.getValue)(e.label)||`Untitled collection`;return{id:`manifest-editor://project/${M()}`,filename:(0,A.default)(n,{lower:!0}),name:n,metadata:{created:Date.now(),modified:Date.now()},resource:{id:e.id,type:`Collection`},publications:[],previews:[],settings:{},storage:{type:`collection-storage`,data:e},...t}}function N(e,t,n){async function r(r){let i=await t.getAllProjects(!0),o={...r};if(oe(o,i),!n.canCreate())throw Error(`Cannot create project with this storage backend`);let s=await n.create(o,o.storage.data),c={...o,storage:s};await t.createProject(c),e({type:`createProject`,payload:c}),a(o.id)}function i(n){t.canDelete()&&(e({type:`deleteProject`,payload:n}),t.deleteProject(n).then(()=>{console.log(`Loader: project deleted`)}))}function a(n){e({type:`switchProject`,payload:n}),t.setLastProject(n).then(()=>{})}function o(t){e({type:`deselectProject`,payload:t})}function s(t){throw e({type:`forkProject`,payload:t}),Error(`Not implemented yet`)}function c(t){e({type:`setLoadingStatus`,payload:t})}function u(r){console.log(`trying to save project...`),e({type:`saveProject`,payload:r}),Promise.all([t.updateProject(r),n.saveStorage(r.storage)]).then(()=>{console.log(`Loader: project saved`)})}function d(t){e({type:`updateDetails`,payload:t})}function f(t){e({type:`createPublication`,payload:t})}function p(t){e({type:`updatePublication`,payload:t})}function m(t){e({type:`removePublication`,payload:t})}function h(t){e({type:`updateSettings`,payload:t})}function g(t){e({type:`updateThumbnail`,payload:t})}function _(t){e({type:`updateStorage`,payload:t})}function v(t){e({type:`load`,payload:t})}function y(t){e({type:`setPreview`,payload:t})}function b(t){e({type:`removePreview`,payload:t})}return(0,l.useMemo)(()=>({createProject:r,deleteProject:i,switchProject:a,deselectProject:o,forkProject:s,saveProject:u,setLoadingStatus:c,load:v,updateDetails:d,createPublication:f,updatePublication:p,removePublication:m,updateSettings:h,updateThumbnail:g,updateStorage:_,setPreview:y,removePreview:b}),[])}function P({actions:e,current:t},n){(0,l.useEffect)(()=>{e.setLoadingStatus({loading:!0,lastLoaded:0,loaded:!1}),n.getAllProjects().then(async t=>{let r=await n.getLastProject(),i=t.find(e=>e.id===r);e.load({allProjects:t,current:i||null,loadingStatus:{loaded:!0,loading:!1,lastLoaded:Date.now()}})})},[])}function F({actions:e,current:t},n){let r=(0,l.useRef)(null),[i,a]=(0,l.useState)(!1),[o,s]=(0,l.useState)(``),c=(0,l.useCallback)(()=>{let t=r.current;t&&n.saveStorage(t.storage).then(()=>{let r=n.getBackendStorage(t);(0,k.default)(r,t.storage)||e.saveProject({...t,storage:r})})},[e,n]),d=(0,u.useDebounce)(c,n.saveInterval),f=t?.id;(0,l.useEffect)(()=>{r.current=t},[t]);let{vault:m,promise:h}=(0,l.useMemo)(()=>{if(t){let[e,r]=n.createVaultInstance(t);return{vault:e,promise:r}}return{vault:null,promise:null}},[n,f]);return(0,l.useEffect)(()=>{let e=n,r=t,i=m;return()=>{i&&r?e.closeVaultInstance(r,i):i instanceof p.ClientVault&&i.ws.close()}},[n,t,m]),(0,l.useEffect)(()=>{a(!1);let e=!1;return h&&h.then(()=>{e||a(!0)}).catch(e=>{s(e.message)}),()=>{e=!0}},[h]),(0,l.useEffect)(()=>(window.addEventListener(`beforeunload`,c,!1),()=>{window.removeEventListener(`beforeunload`,c)}),[c]),(0,l.useEffect)(()=>()=>{c()},[c,f]),(0,l.useEffect)(()=>{if(m&&n.shouldUpdateWithVault())return m.subscribe(d,!0)},[d,n,m]),{vault:m,ready:i,error:o}}function ce(){let{actions:e}=D(),t=(0,l.useCallback)(function(){e.createProject(j({"@context":`http://iiif.io/api/presentation/3/context.json`,id:`https://example.org/${M()}`,type:`Manifest`,label:{en:[`Blank Manifest`]},items:[]}))},[]),n=(0,l.useCallback)(async function(t){let n=await(0,m.getManifestNomalized)(t);n&&(n[`@id`]&&(n=(0,f.convertPresentation2)(n)),n&&e.createProject(j(n)))},[]),r=(0,l.useCallback)(async function(t){let n=await(0,m.getManifestNomalized)(t);n&&(n[`@id`]&&(n=(0,f.convertPresentation2)(n)),n&&e.createProject(se(n)))},[]);return{createProjectFromManifestJson:(0,l.useCallback)(async function(t){let n=JSON.parse(t);n&&(n[`@id`]&&(n=(0,f.convertPresentation2)(n)),n&&e.createProject(j(n)))},[]),createProjectFromManifestId:n,createProjectFromCollectionId:r,createBlankManifest:t}}const le=(0,g.produce)(function(e,t){if(e.current)switch(t.type){case`removePublication`:e.current.publications=e.current.publications.filter(e=>e.id!==t.payload);break;case`saveProject`:e.current.metadata.modified=Date.now();break;case`updateDetails`:e.current.name=t.payload.name,e.current.filename=t.payload.filename;break;case`updateStorage`:e.current.storage=t.payload;break;case`createPublication`:e.current.publications.find(e=>e.id===t.payload.id)||e.current.publications.push(t.payload);break;case`updateThumbnail`:e.current.thumbnail=t.payload;break;case`updateSettings`:e.current.settings=t.payload;break;case`updatePublication`:{let n=e.current.publications.find(e=>e.id===t.payload.id);n&&(n.config=t.payload.config);break}case`removePreview`:{let n=e.current.previews?.findIndex(e=>e.id===t.payload);n!==-1&&e.current.previews.splice(n,1);break}case`setPreview`:{let n=e.current.previews?.findIndex(e=>e.id===t.payload.id);n===-1?e.current.previews.push(t.payload):e.current.previews.splice(n,1,t.payload);break}}switch(t.type){case`load`:e.allProjects=t.payload.allProjects,e.current=t.payload.current,e.loadingStatus=t.payload.loadingStatus;break;case`forkProject`:break;case`deleteProject`:e.allProjects=e.allProjects.filter(e=>e.id!==t.payload),e.current&&e.current.id===t.payload&&(e.current=null);break;case`deselectProject`:e.current=null;break;case`createProject`:e.allProjects.push(t.payload),e.current=t.payload;break;case`switchProject`:e.current=e.allProjects.find(e=>e.id===t.payload)||null;break;case`setLoadingStatus`:e.loadingStatus=t.payload}});function ue(e={loading:!1,loaded:!0,lastLoaded:0}){return{allProjects:[],current:null,loadingStatus:e}}function I(e){"@babel/helpers - typeof";return I=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},I(e)}function de(e,t){if(I(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(I(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function L(e){var t=de(e,`string`);return I(t)==`symbol`?t:t+``}function R(e,t,n){return(t=L(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var z=class{constructor(e){R(this,`namespace`,void 0),R(this,`saveInterval`,void 0),R(this,`storage`,void 0),this.namespace=e?.namespace||`default-v1.1`,this.saveInterval=5e3,this.storage=_.createInstance({name:`manifest-editor-projects`})}async deleteProject(e){await this.storage.removeItem(`${this.namespace}/projects/${e}`)}async createProject(e){let t=await this.getProjectIndex();await this.storage.setItem(`${this.namespace}/projects/${e.id}`,JSON.stringify(e)),t.indexOf(e.id)===-1&&(t.push(e.id),await this.saveProjectIndex(t))}canDelete(){return!0}async getAllProjects(){try{let e=await this.getProjectIndex(),t=[];for(let n of e){if(n===`_index`)continue;let e=await this.storage.getItem(`${this.namespace}/projects/${n}`);if(e)try{t.push(JSON.parse(e))}catch{}}return t}catch(e){return console.error(`Error loading from localstorage`,e),[]}}async getLastProject(){return this.storage.getItem(`${this.namespace}/last`)}async setLastProject(e){await this.storage.setItem(`${this.namespace}/last`,e)}async updateProject(e){await this.storage.setItem(`${this.namespace}/projects/${e.id}`,JSON.stringify(e))}async saveProjectIndex(e){await this.storage.setItem(`${this.namespace}/_index`,JSON.stringify(e))}async getProjectIndex(){let e=await this.storage.getItem(`${this.namespace}/_index`);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t:[]}},B=class{constructor(e={}){R(this,`vaults`,{}),R(this,`saveInterval`,void 0),this.saveInterval=e.saveInterval||5e3}shouldUpdateWithVault(){return!0}canCreate(){return!0}canDelete(){return!0}createVaultInstance(e){let t=this.vaults[e.storage.data.key];if(t)return[t,Promise.resolve()];let n=new v.Vault;return[n,(async()=>{let t=await this.getStorage(e.storage);await n.loadManifest(e.resource.id,JSON.parse(JSON.stringify(t?.data))),this.vaults[e.storage.data.key]=n})()]}closeVaultInstance(e,t){}async saveStorage(e){let t=this.vaults[e.data.key],n={id:e.data.id,type:e.data.type};if(t){let r=t.toPresentation3(n),i=r.type===`Collection`?{type:`collection-storage`,data:r}:{type:`manifest-storage`,data:r};await this.saveStorageData(i,e)}}},V=class extends B{constructor(e){super({saveInterval:5e3}),R(this,`type`,`local-storage`),R(this,`namespace`,void 0),R(this,`storage`,void 0),R(this,`vaults`,{}),this.namespace=e?.namespace||`default`,this.storage=_.default.createInstance({name:`local-storage-resource-loader`})}shouldUpdateWithVault(){return!0}async create(e,t){let n=M();return await localStorage.setItem(`${this.namespace}/store/${n}`,JSON.stringify(t)),{type:`resource-keyed-storage`,data:{id:t.id,type:t.type,key:n}}}async getStorage(e){try{let t=await localStorage.getItem(`${this.namespace}/store/${e.data.key}`),n=t?JSON.parse(t):null;return w(n,`Resource not found`),n.type===`Collection`?{type:`collection-storage`,data:n}:{type:`manifest-storage`,data:n}}catch{return null}}async saveStorageData(e,t){await localStorage.setItem(`${this.namespace}/store/${t.data.key}`,JSON.stringify(e.data))}async deleteStorage(e){this.vaults[e.data.key]=null,await localStorage.removeItem(`${this.namespace}/store/${e.data.key}`)}getBackendStorage(e){return e.storage}};function fe(e){let t=(0,h.useTranslations)(`projects`),{currentApp:n,changeApp:r}=(0,m.useApps)(),i=(0,l.useMemo)(()=>e.backend||new z,[]),a=(0,l.useMemo)(()=>e.storage||new V,[]),[o,s]=(0,l.useReducer)(le,void 0,e.initialState||ue),c=N(s,i,a),u=(0,l.useMemo)(()=>({actions:c,canDelete:i.canDelete(),...o}),[c,i,o]),{vault:d,ready:f,error:p}=F(u,a),g=u.current?.resource,_=(0,l.useMemo)(()=>({isLoading:!f,isError:!!p,error:p}),[f,p]);return P(u,i),(0,l.useEffect)(()=>{o.loadingStatus&&o.loadingStatus.loaded&&f&&(!d||!g)&&n?.id!==(e.defaultApp||`splash`)&&r({id:e.defaultApp||`splash`})},[]),o.loadingStatus&&o.loadingStatus.loading||u.current&&!g?(0,b.jsx)(`output`,{style:{display:`block`},children:t(`status.loading`)}):(0,b.jsx)(E.Provider,{value:_,children:(0,b.jsx)(T.Provider,{value:u,children:(0,b.jsx)(y.VaultProvider,{vault:d||void 0,children:(0,b.jsx)(m.AppResourceInstanceProvider,{id:u.current?.id,children:(0,b.jsx)(m.AppResourceProvider,{resource:g,children:e.children})})},o.current?.id)})})}const pe=()=>(0,b.jsxs)(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[(0,b.jsx)(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),(0,b.jsx)(`path`,{d:`M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z`})]});x.default.button`
2
2
  border: none;
3
3
  outline: none;
4
4
  background-color: transparent;
@@ -10,7 +10,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
10
10
  &:hover {
11
11
  color: inherit;
12
12
  }
13
- `;const U=b.default.button`
13
+ `;const H=x.default.button`
14
14
  padding: 0.5rem 1rem;
15
15
  color: ${e=>e.theme.color.main||`none`};
16
16
  background-color: ${e=>e.theme.color.white||`white`};
@@ -28,11 +28,11 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
28
28
  &:hover {
29
29
  background: #eee;
30
30
  }
31
- `,fe=(0,b.default)(U)`
31
+ `,me=(0,x.default)(H)`
32
32
  padding: 0.25em ${e=>e.theme.padding.xs||`0.4em`};
33
33
  height: unset;
34
34
  background: none;
35
- `;(0,b.default)(U)`
35
+ `;(0,x.default)(H)`
36
36
  {
37
37
  padding: 0 ${e=>e.theme.padding.medium||`1rem`};
38
38
  color: ${e=>e.theme.color.main||`#B84C74;`};
@@ -51,7 +51,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
51
51
  cursor: not-allowed;
52
52
  }
53
53
  }
54
- `,(0,b.default)(U)`
54
+ `,(0,x.default)(H)`
55
55
  padding: 0 ${e=>e.theme.padding.medium||`1rem`};
56
56
  color: ${e=>e.theme.color.white||`white`};
57
57
  background-color: ${e=>e.theme.color.main||`#B84C74;`};
@@ -64,16 +64,16 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
64
64
  &:hover {
65
65
  background-color: ${e=>e.theme.color.mainHover||`#B84C74;`};
66
66
  }
67
- `,b.default.div`
67
+ `,x.default.div`
68
68
  display: flex;
69
69
  flex-direction: row;
70
70
  flex-wrap: wrap;
71
71
  align-items: flex-start;
72
72
  justify-content: ${e=>e.$right?`flex-end`:`flex-start`};
73
- `;const pe=b.default.div`
73
+ `;const he=x.default.div`
74
74
  position: relative;
75
75
  display: inline-block;
76
- `;b.default.div`
76
+ `;x.default.div`
77
77
  display: flex;
78
78
  flex-direction: column;
79
79
  position: absolute;
@@ -88,7 +88,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
88
88
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
89
89
  }
90
90
  }
91
- `,b.default.button`
91
+ `,x.default.button`
92
92
  padding: 0 ${e=>e.theme.padding.small||`0.5rem`};
93
93
  color: ${e=>e.theme.color.main||`none`};
94
94
  background-color: ${e=>e.theme.color.white||`white`};
@@ -107,7 +107,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
107
107
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
108
108
  }
109
109
 
110
- ${e=>e.$active&&b.css`
110
+ ${e=>e.$active&&x.css`
111
111
  background: #b84c74;
112
112
  color: #fff;
113
113
  &:hover {
@@ -115,7 +115,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
115
115
  color: #fff;
116
116
  }
117
117
  `}
118
- `;const me=b.default.div`
118
+ `;const ge=x.default.div`
119
119
  display: none;
120
120
  flex-direction: column;
121
121
  position: absolute;
@@ -133,26 +133,26 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
133
133
  overflow: hidden;
134
134
  padding-bottom: 3px;
135
135
 
136
- ${U} {
136
+ ${H} {
137
137
  &:hover {
138
138
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
139
139
  }
140
140
  }
141
141
 
142
- ${e=>e.$open&&b.css`
142
+ ${e=>e.$open&&x.css`
143
143
  display: flex;
144
144
  `}
145
- `,W=b.default.div`
145
+ `,U=x.default.div`
146
146
  color: #999;
147
147
  text-transform: uppercase;
148
148
  font-weight: 600;
149
149
  padding: 0.7em;
150
150
  font-size: 0.875em;
151
- `,G=b.default.div`
151
+ `,W=x.default.div`
152
152
  height: 1px;
153
153
  margin: 0 0.5em;
154
154
  background: #eee;
155
- `;var K=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 he=typeof K.default==`object`&&K.default!==null&&`default`in K.default?K.default.default:K.default,q=b.default.button`
155
+ `;var G=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 K=G.default,_e=typeof K==`object`&&K&&`default`in K?K.default:G.default,q=x.default.button`
156
156
  height: 1.75em;
157
157
  width: 1.75em;
158
158
  background: #e9e9e9;
@@ -171,7 +171,7 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
171
171
  fill: #fff;
172
172
  }
173
173
  }
174
- `;function ge(e){let{current:t}=E(),[n,r]=(0,m.useLocalStorage)(`menu-hidden`),{apps:i,changeApp:a}=(0,m.useApps)(),o=t?.resource.type,s=Object.values(i).filter(e=>!(e.metadata.project&&e.metadata.projectType!==o||!t&&e.metadata.project||e.metadata.type===`launcher`)),{itemProps:c,buttonProps:l,isOpen:u,setIsOpen:d}=he(s.length+1);return(0,y.jsxs)(pe,{children:[(0,y.jsx)(q,{...l,children:(0,y.jsx)(de,{})}),(0,y.jsxs)(me,{$open:u,children:[(0,y.jsx)(W,{children:`Apps`}),(0,y.jsx)(G,{}),s.map((e,t)=>(0,y.jsx)(U,{...c[t],onClick:()=>{a({id:e.metadata.id}),d(!1)},children:e.metadata.title},e.metadata.id)),e.hideMenu?null:(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(W,{children:`Quick Settings`}),(0,y.jsx)(G,{}),(0,y.jsx)(U,{...c[s.length+0],onClick:()=>r(!n),children:n?`Show menu`:`Hide menu`})]})]})]})}const J=b.default.div`
174
+ `;function ve(e){let t=(0,h.useTranslations)(`projects`),{resolveMessage:n}=(0,h.useEditorI18n)(),{current:r}=D(),[i,a]=(0,m.useLocalStorage)(`menu-hidden`),{apps:o,changeApp:s}=(0,m.useApps)(),c=r?.resource.type,l=Object.values(o).filter(e=>!(e.metadata.project&&e.metadata.projectType!==c||!r&&e.metadata.project||e.metadata.type===`launcher`)),{itemProps:u,buttonProps:d,isOpen:f,setIsOpen:p}=_e(l.length+1);return(0,b.jsxs)(he,{children:[(0,b.jsx)(q,{...d,"aria-label":t(`menu.toggle`),children:(0,b.jsx)(pe,{})}),(0,b.jsxs)(ge,{$open:f,children:[(0,b.jsx)(U,{children:t(`menu.apps`)}),(0,b.jsx)(W,{}),l.map((e,t)=>(0,b.jsx)(H,{...u[t],onClick:()=>{s({id:e.metadata.id}),p(!1)},children:n(e.metadata.titleMessage,e.metadata.title)},e.metadata.id)),e.hideMenu?null:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(U,{children:t(`menu.quickSettings`)}),(0,b.jsx)(W,{}),(0,b.jsx)(H,{...u[l.length+0],onClick:()=>a(!i),children:t(i?`menu.show`:`menu.hide`)})]})]})]})}const J=x.default.div`
175
175
  display: flex;
176
176
  flex-direction: row;
177
177
  flex: 1;
@@ -179,28 +179,34 @@ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});var e=Object.
179
179
  padding-left: 0.5em;
180
180
  align-items: center;
181
181
  overflow: hidden;
182
- `,Y=b.default.div`
182
+ `,Y=x.default.div`
183
183
  color: #828282;
184
184
  padding-right: 1em;
185
- `,X=b.default.form`
185
+ `,X=x.default.form`
186
186
  margin: 0;
187
187
  padding: 0;
188
188
  display: flex;
189
189
  flex: 1;
190
- `,Z=b.default.input`
190
+ `,Z=x.default.input`
191
191
  font-size: 1em;
192
192
  flex: 1;
193
193
  border: 1px solid #999;
194
194
  padding: 0.2em;
195
195
  margin: -0.2em 0;
196
- `,Q=(0,b.default)(fe)`
196
+ `,Q=(0,x.default)(me)`
197
197
  font-size: 1em;
198
198
  display: inline-block;
199
- `,$=b.default.div`
199
+ `,$=x.default.div`
200
+ border: 0;
201
+ background: none;
202
+ padding: 0;
203
+ font: inherit;
204
+ text-align: start;
205
+ cursor: pointer;
200
206
  color: #333;
201
207
  flex: 1;
202
208
  text-overflow: ellipsis;
203
209
  white-space: nowrap;
204
210
  overflow: hidden;
205
- `;function _e(){let{actions:e,current:t}=E(),[n,r]=(0,l.useState)(!1);return(0,y.jsxs)(J,{children:[(0,y.jsx)(Y,{children:`Drafts`}),t?(0,y.jsx)(y.Fragment,{children:n?(0,y.jsxs)(X,{onSubmit:t=>{let n=new FormData(t.target),i=Object.fromEntries(n.entries());e.updateDetails(i),r(!1)},children:[(0,y.jsx)(Z,{id:`project-title`,defaultValue:t.name,name:`name`}),(0,y.jsx)(Q,{children:`Save`})]}):(0,y.jsx)($,{onClick:()=>{(0,ee.flushSync)(()=>{r(!0)}),document.getElementById(`project-title`)?.focus()},children:t.name||`Untitled project`})}):null]})}exports.AppMenu=ge,exports.Draft=J,exports.DraftTitle=$,exports.DraftTitleEdit=X,exports.DraftTitleEditButton=Q,exports.DraftTitleEditInput=Z,exports.DraftTitleEditor=_e,exports.DraftsText=Y,exports.IconButton=q,exports.ProjectLoadingReactContext=T,exports.ProjectProvider=H,exports.ProjectReactContext=w,exports.useCurrentProject=ne,exports.useOptionalCurrentProject=re,exports.useProjectActionsWithBackend=M,exports.useProjectBackend=N,exports.useProjectContext=E,exports.useProjectCreators=ce,exports.useProjectLoader=P,exports.useProjectLoading=te;
211
+ `;function ye(){let e=(0,h.useTranslations)(`projects`),t=(0,h.useTranslations)(`common`),n=(0,l.useRef)(null),{actions:r,current:i}=D(),[a,o]=(0,l.useState)(!1);return(0,b.jsxs)(J,{children:[(0,b.jsx)(Y,{children:e(`draft.list`)}),i?(0,b.jsx)(b.Fragment,{children:a?(0,b.jsxs)(X,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries());r.updateDetails(n),o(!1)},children:[(0,b.jsx)(Z,{ref:n,"aria-label":e(`draft.title`),defaultValue:i.name,name:`name`}),(0,b.jsx)(Q,{type:`submit`,children:t(`actions.save`)})]}):(0,b.jsx)($,{as:`button`,type:`button`,"aria-label":e(`draft.edit`,{name:i.name||e(`draft.untitledProject`)}),onClick:()=>{(0,ee.flushSync)(()=>{o(!0)}),n.current?.focus()},children:i.name||e(`draft.untitledProject`)})}):null]})}exports.AppMenu=ve,exports.Draft=J,exports.DraftTitle=$,exports.DraftTitleEdit=X,exports.DraftTitleEditButton=Q,exports.DraftTitleEditInput=Z,exports.DraftTitleEditor=ye,exports.DraftsText=Y,exports.IconButton=q,exports.ProjectLoadingReactContext=E,exports.ProjectProvider=fe,exports.ProjectReactContext=T,exports.useCurrentProject=ne,exports.useOptionalCurrentProject=re,exports.useProjectActionsWithBackend=N,exports.useProjectBackend=P,exports.useProjectContext=D,exports.useProjectCreators=ce,exports.useProjectLoader=F,exports.useProjectLoading=te;
206
212
  //# sourceMappingURL=index.cjs.map