@manifest-editor/projects 2.2.2-next.0.903673e → 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 +29 -23
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -22
- package/dist/index.js.map +1 -1
- package/package.json +17 -10
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=
|
|
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
|
-
`,
|
|
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
|
-
`;
|
|
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
|
-
`,
|
|
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
|
-
`,
|
|
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
|
|
73
|
+
`;const Ae=T.div`
|
|
74
74
|
position: relative;
|
|
75
75
|
display: inline-block;
|
|
76
|
-
`;
|
|
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
|
-
`,
|
|
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&&
|
|
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
|
|
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&&
|
|
142
|
+
${e=>e.$open&&E`
|
|
143
143
|
display: flex;
|
|
144
144
|
`}
|
|
145
|
-
`,W=
|
|
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=
|
|
151
|
+
`,G=T.div`
|
|
152
152
|
height: 1px;
|
|
153
153
|
margin: 0 0.5em;
|
|
154
154
|
background: #eee;
|
|
155
|
-
`;var
|
|
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
|
|
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
|
-
`,
|
|
182
|
+
`,X=T.div`
|
|
183
183
|
color: #828282;
|
|
184
184
|
padding-right: 1em;
|
|
185
|
-
`,
|
|
185
|
+
`,Z=T.form`
|
|
186
186
|
margin: 0;
|
|
187
187
|
padding: 0;
|
|
188
188
|
display: flex;
|
|
189
189
|
flex: 1;
|
|
190
|
-
`,
|
|
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
|
-
|
|
196
|
+
`,$=T(ke)`
|
|
197
197
|
font-size: 1em;
|
|
198
198
|
display: inline-block;
|
|
199
|
-
|
|
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
|
|
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
|