@manifest-editor/projects 2.2.2-next.0.a82700e → 2.3.0

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.js CHANGED
@@ -1,4 +1,4 @@
1
- import*as e from"react";import{createContext as t,useCallback as n,useContext as r,useEffect as i,useMemo as a,useReducer as o,useRef as s,useState as c}from"react";import{useDebounce as l}from"tiny-use-debounce";import{getValue as u}from"@iiif/helpers";import{convertPresentation2 as d}from"@iiif/parser/presentation-2";import{ClientVault as f}from"@manifest-editor/client-vault";import{AppResourceInstanceProvider as p,AppResourceProvider as m,getManifestNomalized as h,useApps as g,useLocalStorage as _}from"@manifest-editor/shell";import{produce as v}from"immer";import*as y from"localforage";import b from"localforage";import{Vault as ee}from"@iiif/helpers/vault";import{VaultProvider as te}from"react-iiif-vault";import{Fragment as x,jsx as S,jsxs as C}from"react/jsx-runtime";import w,{css as T}from"styled-components";import{flushSync as ne}from"react-dom";var re=Object.create,E=Object.defineProperty,ie=Object.getOwnPropertyDescriptor,ae=Object.getOwnPropertyNames,oe=Object.getPrototypeOf,D=Object.prototype.hasOwnProperty,O=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),se=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=ae(t),a=0,o=i.length,s;a<o;a++)s=i[a],!D.call(e,s)&&s!==n&&E(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=ie(t,s))||r.enumerable});return e},k=(e,t,n)=>(n=e==null?{}:re(oe(e)),se(t||!e||!e.__esModule||!D.call(e,`default`)?E(n,`default`,{value:e,enumerable:!0}):n,e)),ce=`Invariant failed`;function A(e,t){if(!e)throw Error(ce)}const j=t(null),M=t({error:void 0,isError:!1,isLoading:!1});function le(){return r(M)}function N(){let e=r(j);return A(e,`useProjectContext can only be called from inside <ProjectProvider />`),e}function ue(){let e=N().current;return A(e,`No current project`),e}function de(){return N().current||null}var fe=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}})),pe=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})})),me=k(fe(),1),P=k(pe(),1);function he(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function F(e,t={}){let n=u(e.label)||`Untitled manifest`;return{id:`manifest-editor://project/${he()}`,filename:(0,P.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 ge(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,P.default)(r,{lower:!0})}${t?` (${t})`:``}`;if(n.indexOf(i)===-1){e.filename=i,e.name=`${e.name} (${t})`;break}t++}}}function I(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function _e(e,t={}){let n=u(e.label)||`Untitled collection`;return{id:`manifest-editor://project/${I()}`,filename:(0,P.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 L(e,t,n){async function r(r){let i=await t.getAllProjects(!0),a={...r};if(ge(a,i),!n.canCreate())throw Error(`Cannot create project with this storage backend`);let s=await n.create(a,a.storage.data),c={...a,storage:s};await t.createProject(c),e({type:`createProject`,payload:c}),o(a.id)}function i(n){t.canDelete()&&(e({type:`deleteProject`,payload:n}),t.deleteProject(n).then(()=>{console.log(`Loader: project deleted`)}))}function o(n){e({type:`switchProject`,payload:n}),t.setLastProject(n).then(()=>{})}function s(t){e({type:`deselectProject`,payload:t})}function c(t){throw e({type:`forkProject`,payload:t}),Error(`Not implemented yet`)}function l(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 a(()=>({createProject:r,deleteProject:i,switchProject:o,deselectProject:s,forkProject:c,saveProject:u,setLoadingStatus:l,load:v,updateDetails:d,createPublication:f,updatePublication:p,removePublication:m,updateSettings:h,updateThumbnail:g,updateStorage:_,setPreview:y,removePreview:b}),[])}function R({actions:e,current:t},n){i(()=>{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 z({actions:e,current:t},r){let o=s(null),[u,d]=c(!1),[p,m]=c(``),h=n(()=>{let t=o.current;t&&r.saveStorage(t.storage).then(()=>{let n=r.getBackendStorage(t);(0,me.default)(n,t.storage)||e.saveProject({...t,storage:n})})},[e,r]),g=l(h,r.saveInterval),_=t?.id;i(()=>{o.current=t},[t]);let{vault:v,promise:y}=a(()=>{if(t){let[e,n]=r.createVaultInstance(t);return{vault:e,promise:n}}return{vault:null,promise:null}},[r,_]);return i(()=>{let e=r,n=t,i=v;return()=>{i&&n?e.closeVaultInstance(n,i):i instanceof f&&i.ws.close()}},[r,t,v]),i(()=>{d(!1);let e=!1;return y&&y.then(()=>{e||d(!0)}).catch(e=>{m(e.message)}),()=>{e=!0}},[y]),i(()=>(window.addEventListener(`beforeunload`,h,!1),()=>{window.removeEventListener(`beforeunload`,h)}),[h]),i(()=>()=>{h()},[h,_]),i(()=>{if(v&&r.shouldUpdateWithVault())return v.subscribe(g,!0)},[g,r,v]),{vault:v,ready:u,error:p}}function ve(){let{actions:e}=N(),t=n(function(){e.createProject(F({"@context":`http://iiif.io/api/presentation/3/context.json`,id:`https://example.org/${I()}`,type:`Manifest`,label:{en:[`Blank Manifest`]},items:[]}))},[]),r=n(async function(t){let n=await h(t);n&&(n[`@id`]&&(n=d(n)),n&&e.createProject(F(n)))},[]),i=n(async function(t){let n=await h(t);n&&(n[`@id`]&&(n=d(n)),n&&e.createProject(_e(n)))},[]);return{createProjectFromManifestJson:n(async function(t){let n=JSON.parse(t);n&&(n[`@id`]&&(n=d(n)),n&&e.createProject(F(n)))},[]),createProjectFromManifestId:r,createProjectFromCollectionId:i,createBlankManifest:t}}const ye=v(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 be(e={loading:!1,loaded:!0,lastLoaded:0}){return{allProjects:[],current:null,loadingStatus:e}}function B(e){"@babel/helpers - typeof";return B=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},B(e)}function xe(e,t){if(B(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(B(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Se(e){var t=xe(e,`string`);return B(t)==`symbol`?t:t+``}function V(e,t,n){return(t=Se(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var Ce=class{constructor(e){V(this,`namespace`,void 0),V(this,`saveInterval`,void 0),V(this,`storage`,void 0),this.namespace=e?.namespace||`default-v1.1`,this.saveInterval=5e3,this.storage=y.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:[]}},we=class{constructor(e={}){V(this,`vaults`,{}),V(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 ee;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)}}},Te=class extends we{constructor(e){super({saveInterval:5e3}),V(this,`type`,`local-storage`),V(this,`namespace`,void 0),V(this,`storage`,void 0),V(this,`vaults`,{}),this.namespace=e?.namespace||`default`,this.storage=b.createInstance({name:`local-storage-resource-loader`})}shouldUpdateWithVault(){return!0}async create(e,t){let n=I();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 A(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 Ee(e){let{currentApp:t,changeApp:n}=g(),r=a(()=>e.backend||new Ce,[]),s=a(()=>e.storage||new Te,[]),[c,l]=o(ye,void 0,e.initialState||be),u=L(l,r,s),d=a(()=>({actions:u,canDelete:r.canDelete(),...c}),[u,r,c]),{vault:f,ready:h,error:_}=z(d,s),v=d.current?.resource,y=a(()=>({isLoading:!h,isError:!!_,error:_}),[h,_]);return R(d,r),i(()=>{c.loadingStatus&&c.loadingStatus.loaded&&h&&(!f||!v)&&t?.id!==(e.defaultApp||`splash`)&&n({id:e.defaultApp||`splash`})},[]),c.loadingStatus&&c.loadingStatus.loading||d.current&&!v?S(`div`,{children:`Loading...`}):S(M.Provider,{value:y,children:S(j.Provider,{value:d,children:S(te,{vault:f||void 0,children:S(p,{id:d.current?.id,children:S(m,{resource:v,children:e.children})})},c.current?.id)})})}const H=()=>C(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[S(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),S(`path`,{d:`M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z`})]});w.button`
1
+ import*as e from"react";import{createContext as t,useCallback as n,useContext as r,useEffect as i,useMemo as a,useReducer as o,useRef as s,useState as c}from"react";import{useDebounce as l}from"tiny-use-debounce";import{getValue as u}from"@iiif/helpers";import{convertPresentation2 as d}from"@iiif/parser/presentation-2";import{ClientVault as f}from"@manifest-editor/client-vault";import{AppResourceInstanceProvider as p,AppResourceProvider as m,getManifestNomalized as h,useApps as g,useLocalStorage as _}from"@manifest-editor/shell";import{useEditorI18n as v,useTranslations as y}from"@manifest-editor/i18n";import{produce as b}from"immer";import*as x from"localforage";import ee from"localforage";import{Vault as te}from"@iiif/helpers/vault";import{VaultProvider as ne}from"react-iiif-vault";import{Fragment as S,jsx as C,jsxs as w}from"react/jsx-runtime";import T,{css as E}from"styled-components";import{flushSync as re}from"react-dom";var ie=Object.create,D=Object.defineProperty,ae=Object.getOwnPropertyDescriptor,oe=Object.getOwnPropertyNames,se=Object.getPrototypeOf,O=Object.prototype.hasOwnProperty,k=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),ce=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=oe(t),a=0,o=i.length,s;a<o;a++)s=i[a],!O.call(e,s)&&s!==n&&D(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=ae(t,s))||r.enumerable});return e},A=(e,t,n)=>(n=e==null?{}:ie(se(e)),ce(t||!e||!e.__esModule||!O.call(e,`default`)?D(n,`default`,{value:e,enumerable:!0}):n,e)),le=`Invariant failed`;function j(e,t){if(!e)throw Error(le)}const M=t(null),N=t({error:void 0,isError:!1,isLoading:!1});function ue(){return r(N)}function P(){let e=r(M);return j(e,`useProjectContext can only be called from inside <ProjectProvider />`),e}function de(){let e=P().current;return j(e,`No current project`),e}function fe(){return P().current||null}var pe=k(((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}})),me=k(((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})})),he=A(pe(),1),F=A(me(),1);function ge(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function I(e,t={}){let n=u(e.label)||`Untitled manifest`;return{id:`manifest-editor://project/${ge()}`,filename:(0,F.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 _e(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,F.default)(r,{lower:!0})}${t?` (${t})`:``}`;if(n.indexOf(i)===-1){e.filename=i,e.name=`${e.name} (${t})`;break}t++}}}function L(){return`${Math.random().toString(36).substr(2)}-${Date.now().toString(36)}`}function ve(e,t={}){let n=u(e.label)||`Untitled collection`;return{id:`manifest-editor://project/${L()}`,filename:(0,F.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 R(e,t,n){async function r(r){let i=await t.getAllProjects(!0),a={...r};if(_e(a,i),!n.canCreate())throw Error(`Cannot create project with this storage backend`);let s=await n.create(a,a.storage.data),c={...a,storage:s};await t.createProject(c),e({type:`createProject`,payload:c}),o(a.id)}function i(n){t.canDelete()&&(e({type:`deleteProject`,payload:n}),t.deleteProject(n).then(()=>{console.log(`Loader: project deleted`)}))}function o(n){e({type:`switchProject`,payload:n}),t.setLastProject(n).then(()=>{})}function s(t){e({type:`deselectProject`,payload:t})}function c(t){throw e({type:`forkProject`,payload:t}),Error(`Not implemented yet`)}function l(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 a(()=>({createProject:r,deleteProject:i,switchProject:o,deselectProject:s,forkProject:c,saveProject:u,setLoadingStatus:l,load:v,updateDetails:d,createPublication:f,updatePublication:p,removePublication:m,updateSettings:h,updateThumbnail:g,updateStorage:_,setPreview:y,removePreview:b}),[])}function z({actions:e,current:t},n){i(()=>{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 B({actions:e,current:t},r){let o=s(null),[u,d]=c(!1),[p,m]=c(``),h=n(()=>{let t=o.current;t&&r.saveStorage(t.storage).then(()=>{let n=r.getBackendStorage(t);(0,he.default)(n,t.storage)||e.saveProject({...t,storage:n})})},[e,r]),g=l(h,r.saveInterval),_=t?.id;i(()=>{o.current=t},[t]);let{vault:v,promise:y}=a(()=>{if(t){let[e,n]=r.createVaultInstance(t);return{vault:e,promise:n}}return{vault:null,promise:null}},[r,_]);return i(()=>{let e=r,n=t,i=v;return()=>{i&&n?e.closeVaultInstance(n,i):i instanceof f&&i.ws.close()}},[r,t,v]),i(()=>{d(!1);let e=!1;return y&&y.then(()=>{e||d(!0)}).catch(e=>{m(e.message)}),()=>{e=!0}},[y]),i(()=>(window.addEventListener(`beforeunload`,h,!1),()=>{window.removeEventListener(`beforeunload`,h)}),[h]),i(()=>()=>{h()},[h,_]),i(()=>{if(v&&r.shouldUpdateWithVault())return v.subscribe(g,!0)},[g,r,v]),{vault:v,ready:u,error:p}}function ye(){let{actions:e}=P(),t=n(function(){e.createProject(I({"@context":`http://iiif.io/api/presentation/3/context.json`,id:`https://example.org/${L()}`,type:`Manifest`,label:{en:[`Blank Manifest`]},items:[]}))},[]),r=n(async function(t){let n=await h(t);n&&(n[`@id`]&&(n=d(n)),n&&e.createProject(I(n)))},[]),i=n(async function(t){let n=await h(t);n&&(n[`@id`]&&(n=d(n)),n&&e.createProject(ve(n)))},[]);return{createProjectFromManifestJson:n(async function(t){let n=JSON.parse(t);n&&(n[`@id`]&&(n=d(n)),n&&e.createProject(I(n)))},[]),createProjectFromManifestId:r,createProjectFromCollectionId:i,createBlankManifest:t}}const be=b(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 xe(e={loading:!1,loaded:!0,lastLoaded:0}){return{allProjects:[],current:null,loadingStatus:e}}function V(e){"@babel/helpers - typeof";return V=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},V(e)}function Se(e,t){if(V(e)!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(V(r)!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}function Ce(e){var t=Se(e,`string`);return V(t)==`symbol`?t:t+``}function H(e,t,n){return(t=Ce(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var we=class{constructor(e){H(this,`namespace`,void 0),H(this,`saveInterval`,void 0),H(this,`storage`,void 0),this.namespace=e?.namespace||`default-v1.1`,this.saveInterval=5e3,this.storage=x.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:[]}},Te=class{constructor(e={}){H(this,`vaults`,{}),H(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 te;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)}}},Ee=class extends Te{constructor(e){super({saveInterval:5e3}),H(this,`type`,`local-storage`),H(this,`namespace`,void 0),H(this,`storage`,void 0),H(this,`vaults`,{}),this.namespace=e?.namespace||`default`,this.storage=ee.createInstance({name:`local-storage-resource-loader`})}shouldUpdateWithVault(){return!0}async create(e,t){let n=L();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 j(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 De(e){let t=y(`projects`),{currentApp:n,changeApp:r}=g(),s=a(()=>e.backend||new we,[]),c=a(()=>e.storage||new Ee,[]),[l,u]=o(be,void 0,e.initialState||xe),d=R(u,s,c),f=a(()=>({actions:d,canDelete:s.canDelete(),...l}),[d,s,l]),{vault:h,ready:_,error:v}=B(f,c),b=f.current?.resource,x=a(()=>({isLoading:!_,isError:!!v,error:v}),[_,v]);return z(f,s),i(()=>{l.loadingStatus&&l.loadingStatus.loaded&&_&&(!h||!b)&&n?.id!==(e.defaultApp||`splash`)&&r({id:e.defaultApp||`splash`})},[]),l.loadingStatus&&l.loadingStatus.loading||f.current&&!b?C(`output`,{style:{display:`block`},children:t(`status.loading`)}):C(N.Provider,{value:x,children:C(M.Provider,{value:f,children:C(ne,{vault:h||void 0,children:C(p,{id:f.current?.id,children:C(m,{resource:b,children:e.children})})},l.current?.id)})})}const Oe=()=>w(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`1rem`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[C(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),C(`path`,{d:`M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z`})]});T.button`
2
2
  border: none;
3
3
  outline: none;
4
4
  background-color: transparent;
@@ -10,7 +10,7 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
10
10
  &:hover {
11
11
  color: inherit;
12
12
  }
13
- `;const U=w.button`
13
+ `;const U=T.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 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
28
28
  &:hover {
29
29
  background: #eee;
30
30
  }
31
- `,De=w(U)`
31
+ `,ke=T(U)`
32
32
  padding: 0.25em ${e=>e.theme.padding.xs||`0.4em`};
33
33
  height: unset;
34
34
  background: none;
35
- `;w(U)`
35
+ `;T(U)`
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 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
51
51
  cursor: not-allowed;
52
52
  }
53
53
  }
54
- `,w(U)`
54
+ `,T(U)`
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 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
64
64
  &:hover {
65
65
  background-color: ${e=>e.theme.color.mainHover||`#B84C74;`};
66
66
  }
67
- `,w.div`
67
+ `,T.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 Oe=w.div`
73
+ `;const Ae=T.div`
74
74
  position: relative;
75
75
  display: inline-block;
76
- `;w.div`
76
+ `;T.div`
77
77
  display: flex;
78
78
  flex-direction: column;
79
79
  position: absolute;
@@ -88,7 +88,7 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
88
88
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
89
89
  }
90
90
  }
91
- `,w.button`
91
+ `,T.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 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
107
107
  background-color: ${e=>e.theme.color.lightgrey||`lightgrey`};
108
108
  }
109
109
 
110
- ${e=>e.$active&&T`
110
+ ${e=>e.$active&&E`
111
111
  background: #b84c74;
112
112
  color: #fff;
113
113
  &:hover {
@@ -115,7 +115,7 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
115
115
  color: #fff;
116
116
  }
117
117
  `}
118
- `;const ke=w.div`
118
+ `;const je=T.div`
119
119
  display: none;
120
120
  flex-direction: column;
121
121
  position: absolute;
@@ -139,20 +139,20 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
139
139
  }
140
140
  }
141
141
 
142
- ${e=>e.$open&&T`
142
+ ${e=>e.$open&&E`
143
143
  display: flex;
144
144
  `}
145
- `,W=w.div`
145
+ `,W=T.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=w.div`
151
+ `,G=T.div`
152
152
  height: 1px;
153
153
  margin: 0 0.5em;
154
154
  background: #eee;
155
- `;var Ae=O(((t,n)=>{n.exports={...e}})),K=k(O((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Ae();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 je=typeof K.default==`object`&&K.default!==null&&`default`in K.default?K.default.default:K.default,q=w.button`
155
+ `;var Me=k(((t,n)=>{n.exports={...e}})),K=A(k((e=>{Object.defineProperty(e,"__esModule",{value:!0});let t=Me();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 q=K.default,Ne=typeof q==`object`&&q&&`default`in q?q.default:K.default,J=T.button`
156
156
  height: 1.75em;
157
157
  width: 1.75em;
158
158
  background: #e9e9e9;
@@ -171,7 +171,7 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
171
171
  fill: #fff;
172
172
  }
173
173
  }
174
- `;function Me(e){let{current:t}=N(),[n,r]=_(`menu-hidden`),{apps:i,changeApp:a}=g(),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}=je(s.length+1);return C(Oe,{children:[S(q,{...l,children:S(H,{})}),C(ke,{$open:u,children:[S(W,{children:`Apps`}),S(G,{}),s.map((e,t)=>S(U,{...c[t],onClick:()=>{a({id:e.metadata.id}),d(!1)},children:e.metadata.title},e.metadata.id)),e.hideMenu?null:C(x,{children:[S(W,{children:`Quick Settings`}),S(G,{}),S(U,{...c[s.length+0],onClick:()=>r(!n),children:n?`Show menu`:`Hide menu`})]})]})]})}const J=w.div`
174
+ `;function Pe(e){let t=y(`projects`),{resolveMessage:n}=v(),{current:r}=P(),[i,a]=_(`menu-hidden`),{apps:o,changeApp:s}=g(),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}=Ne(l.length+1);return w(Ae,{children:[C(J,{...d,"aria-label":t(`menu.toggle`),children:C(Oe,{})}),w(je,{$open:f,children:[C(W,{children:t(`menu.apps`)}),C(G,{}),l.map((e,t)=>C(U,{...u[t],onClick:()=>{s({id:e.metadata.id}),p(!1)},children:n(e.metadata.titleMessage,e.metadata.title)},e.metadata.id)),e.hideMenu?null:w(S,{children:[C(W,{children:t(`menu.quickSettings`)}),C(G,{}),C(U,{...u[l.length+0],onClick:()=>a(!i),children:t(i?`menu.show`:`menu.hide`)})]})]})]})}const Y=T.div`
175
175
  display: flex;
176
176
  flex-direction: row;
177
177
  flex: 1;
@@ -179,28 +179,34 @@ import*as e from"react";import{createContext as t,useCallback as n,useContext as
179
179
  padding-left: 0.5em;
180
180
  align-items: center;
181
181
  overflow: hidden;
182
- `,Y=w.div`
182
+ `,X=T.div`
183
183
  color: #828282;
184
184
  padding-right: 1em;
185
- `,X=w.form`
185
+ `,Z=T.form`
186
186
  margin: 0;
187
187
  padding: 0;
188
188
  display: flex;
189
189
  flex: 1;
190
- `,Z=w.input`
190
+ `,Q=T.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=w(De)`
196
+ `,$=T(ke)`
197
197
  font-size: 1em;
198
198
  display: inline-block;
199
- `,$=w.div`
199
+ `,Fe=T.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 Ne(){let{actions:e,current:t}=N(),[n,r]=c(!1);return C(J,{children:[S(Y,{children:`Drafts`}),t?S(x,{children:n?C(X,{onSubmit:t=>{let n=new FormData(t.target),i=Object.fromEntries(n.entries());e.updateDetails(i),r(!1)},children:[S(Z,{id:`project-title`,defaultValue:t.name,name:`name`}),S(Q,{children:`Save`})]}):S($,{onClick:()=>{ne(()=>{r(!0)}),document.getElementById(`project-title`)?.focus()},children:t.name||`Untitled project`})}):null]})}export{Me as AppMenu,J as Draft,$ as DraftTitle,X as DraftTitleEdit,Q as DraftTitleEditButton,Z as DraftTitleEditInput,Ne as DraftTitleEditor,Y as DraftsText,q as IconButton,M as ProjectLoadingReactContext,Ee as ProjectProvider,j as ProjectReactContext,ue as useCurrentProject,de as useOptionalCurrentProject,L as useProjectActionsWithBackend,R as useProjectBackend,N as useProjectContext,ve as useProjectCreators,z as useProjectLoader,le as useProjectLoading};
211
+ `;function Ie(){let e=y(`projects`),t=y(`common`),n=s(null),{actions:r,current:i}=P(),[a,o]=c(!1);return w(Y,{children:[C(X,{children:e(`draft.list`)}),i?C(S,{children:a?w(Z,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries());r.updateDetails(n),o(!1)},children:[C(Q,{ref:n,"aria-label":e(`draft.title`),defaultValue:i.name,name:`name`}),C($,{type:`submit`,children:t(`actions.save`)})]}):C(Fe,{as:`button`,type:`button`,"aria-label":e(`draft.edit`,{name:i.name||e(`draft.untitledProject`)}),onClick:()=>{re(()=>{o(!0)}),n.current?.focus()},children:i.name||e(`draft.untitledProject`)})}):null]})}export{Pe as AppMenu,Y as Draft,Fe as DraftTitle,Z as DraftTitleEdit,$ as DraftTitleEditButton,Q as DraftTitleEditInput,Ie as DraftTitleEditor,X as DraftsText,J as IconButton,N as ProjectLoadingReactContext,De as ProjectProvider,M as ProjectReactContext,de as useCurrentProject,fe as useOptionalCurrentProject,R as useProjectActionsWithBackend,z as useProjectBackend,P as useProjectContext,ye as useProjectCreators,B as useProjectLoader,ue as useProjectLoading};
206
212
  //# sourceMappingURL=index.js.map