@manifest-editor/creators 2.0.2 → 2.0.3-next.0.da9a339

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{t as e}from"./manifest-browser-form.lazy-Bm07wmnB.js";import{creatorHelper as t,defineCreator as n}from"@manifest-editor/creator-api";import{Vault as r,createThumbnailHelper as i,getValue as a}from"@iiif/helpers";import{ActionButton as o,AddImageIcon as s,AudioIcon as c,EmptyCanvasIcon as l,ErrorMessage as u,Form as d,HTMLEditor as f,HTMLIcon as p,IIIFBrowserIcon as m,IIIFLogo as h,ImageListIcon as g,PaddedSidebarContainer as _,RangesIcon as ee,ScaledImageIcon as te,VideoIcon as ne,YouTubeIcon as re}from"@manifest-editor/components";import{DimensionsTriplet as ie,FormFieldWrapper as ae,Input as v,InputContainer as y,InputLabel as b,LanguageFieldEditor as x,centerRectangles as oe}from"@manifest-editor/editors";import{lazy as se,useEffect as ce,useLayoutEffect as le,useMemo as S,useState as C}from"react";import{Fragment as ue,jsx as w,jsxs as T}from"react/jsx-runtime";import{CanvasPanel as de,ImageService as fe,MediaPlayerProvider as pe,VaultProvider as me,formatTime as he,useManifest as ge,useMediaActions as _e,useMediaElements as ve,useMediaState as ye,useSimpleMediaPlayer as be,useVault as xe}from"react-iiif-vault";import E,{css as Se}from"styled-components";import{getFormat as Ce,getImageDimensions as we,useAnnotationCreatorState as D,useConfig as Te}from"@manifest-editor/shell";import{canonicalServiceUrl as O,createImageServiceRequest as k,getImageServices as Ee,imageServiceRequestToString as A,isImageService as De,parseImageServiceRequest as j}from"@iiif/parser/image-3";import{EditorInstance as M}from"@manifest-editor/editor-api";import{ErrorBoundary as Oe}from"react-error-boundary";import{IIIFBrowser as ke}from"iiif-browser";async function N(e,t){let n={id:e.url||t.generateId(`provider`),label:e.label,type:`Agent`,homepage:[],logo:[]};return e.homepage&&(n.homepage=[t.embed({id:e.url,label:a(e.homepageLabel)?e.homepageLabel:{en:[`Homepage`]},type:`Text`,format:`text/html`,language:[`en`]})]),e.logo&&(n.logo=[t.embed({id:e.logo,type:`Image`})]),t.embed(n)}function Ae(e){let t=e.options.initialData,[n,r]=C(t.url||``),[i,a]=C(t.label||{en:[``]}),[s,c]=C(t.homepage||``),[l,u]=C(t.logo||``),[d,f]=C(t.homepageLabel||{en:[``]});return w(_,{children:T(`div`,{className:`max-w-xl`,children:[w(x,{containerId:`label`,focusId:`label_`,label:`Label`,fields:i,onSave:e=>a(e.toInternationalString())}),T(y,{$fluid:!0,children:[w(b,{htmlFor:`provider-logo`,children:`Logo`}),w(v,{placeholder:`https://example.org/logo.png`,type:`text`,id:`provider-logo`,value:l,onChange:e=>u(e.target.value)})]}),T(y,{$fluid:!0,children:[w(b,{htmlFor:`provider-homepage`,children:`Homepage`}),w(v,{placeholder:`https://example.org/homepage`,type:`text`,id:`provider-homepage`,value:s,onChange:e=>c(e.target.value)})]}),s?w(`div`,{children:w(x,{containerId:`homepageLabel`,focusId:`homepageLabel_`,label:`Homepage label`,fields:d,onSave:e=>f(e.toInternationalString())})}):null,T(y,{$fluid:!0,children:[w(b,{$margin:!1,htmlFor:`provider-url`,children:`Provider ID`}),w(`span`,{className:`text-gray-500 text-sm mb-2`,children:`Will be generated if not specified, this is not a URL that the user can follow`}),w(v,{placeholder:`https://id.loc.gov/authorities/abc123`,type:`text`,id:`provider-url`,value:n,onChange:e=>r(e.target.value)})]}),w(o,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,label:i,homepage:s,homepageLabel:d,logo:l})},children:`Add provider`})]})})}const je=n({id:`@manifest-editor/provider`,label:`Provider`,summary:`Create a new provider`,resourceType:`Agent`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`,`Collection`],parentFields:[`provider`],initialData:!0},create:N,render(e){return w(Ae,{...e})}}),Me=e=>T(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?w(`title`,{children:e.title}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{d:`M8 5v14l11-7z`,fill:`currentColor`})]}),Ne=e=>T(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?w(`title`,{children:e.title}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`})]}),Pe=({title:e,...t})=>T(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?w(`title`,{children:e}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z`})]}),Fe=({title:e,...t})=>T(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?w(`title`,{children:e}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z`})]}),Ie=({title:e,...t})=>T(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?w(`title`,{children:e}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06a8.99 8.99 0 0 0 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4 9.91 6.09 12 8.18V4z`})]}),Le=E.div`
1
+ import{t as e}from"./manifest-browser-form.lazy-CvgqUwj3.js";import{creatorHelper as t,defineCreator as n}from"@manifest-editor/creator-api";import{Vault as r,createThumbnailHelper as i,getValue as a}from"@iiif/helpers";import{ActionButton as o,AddImageIcon as s,AudioIcon as c,EmptyCanvasIcon as l,ErrorMessage as u,Form as d,HTMLEditor as f,HTMLIcon as p,IIIFBrowserIcon as m,IIIFLogo as h,ImageListIcon as g,PaddedSidebarContainer as _,RangesIcon as ee,ScaledImageIcon as te,VideoIcon as ne,YouTubeIcon as re}from"@manifest-editor/components";import{DimensionsTriplet as ie,FormFieldWrapper as ae,Input as v,InputContainer as y,InputLabel as b,LanguageFieldEditor as x,centerRectangles as oe}from"@manifest-editor/editors";import{lazy as se,useEffect as ce,useLayoutEffect as le,useMemo as S,useState as C}from"react";import{Fragment as ue,jsx as w,jsxs as T}from"react/jsx-runtime";import{CanvasPanel as de,ImageService as fe,MediaPlayerProvider as pe,VaultProvider as me,formatTime as he,useManifest as ge,useMediaActions as _e,useMediaElements as ve,useMediaState as ye,useSimpleMediaPlayer as be,useVault as xe}from"react-iiif-vault";import E,{css as Se}from"styled-components";import{getFormat as Ce,getImageDimensions as we,useAnnotationCreatorState as D,useConfig as Te}from"@manifest-editor/shell";import{canonicalServiceUrl as O,createImageServiceRequest as k,getImageServices as Ee,imageServiceRequestToString as A,isImageService as De,parseImageServiceRequest as j}from"@iiif/parser/image-3";import{EditorInstance as M}from"@manifest-editor/editor-api";import{ErrorBoundary as Oe}from"react-error-boundary";import{IIIFBrowser as ke}from"iiif-browser";async function N(e,t){let n={id:e.url||t.generateId(`provider`),label:e.label,type:`Agent`,homepage:[],logo:[]};return e.homepage&&(n.homepage=[t.embed({id:e.url,label:a(e.homepageLabel)?e.homepageLabel:{en:[`Homepage`]},type:`Text`,format:`text/html`,language:[`en`]})]),e.logo&&(n.logo=[t.embed({id:e.logo,type:`Image`})]),t.embed(n)}function Ae(e){let t=e.options.initialData,[n,r]=C(t.url||``),[i,a]=C(t.label||{en:[``]}),[s,c]=C(t.homepage||``),[l,u]=C(t.logo||``),[d,f]=C(t.homepageLabel||{en:[``]});return w(_,{children:T(`div`,{className:`max-w-xl`,children:[w(x,{containerId:`label`,focusId:`label_`,label:`Label`,fields:i,onSave:e=>a(e.toInternationalString())}),T(y,{$fluid:!0,children:[w(b,{htmlFor:`provider-logo`,children:`Logo`}),w(v,{placeholder:`https://example.org/logo.png`,type:`text`,id:`provider-logo`,value:l,onChange:e=>u(e.target.value)})]}),T(y,{$fluid:!0,children:[w(b,{htmlFor:`provider-homepage`,children:`Homepage`}),w(v,{placeholder:`https://example.org/homepage`,type:`text`,id:`provider-homepage`,value:s,onChange:e=>c(e.target.value)})]}),s?w(`div`,{children:w(x,{containerId:`homepageLabel`,focusId:`homepageLabel_`,label:`Homepage label`,fields:d,onSave:e=>f(e.toInternationalString())})}):null,T(y,{$fluid:!0,children:[w(b,{$margin:!1,htmlFor:`provider-url`,children:`Provider ID`}),w(`span`,{className:`text-gray-500 text-sm mb-2`,children:`Will be generated if not specified, this is not a URL that the user can follow`}),w(v,{placeholder:`https://id.loc.gov/authorities/abc123`,type:`text`,id:`provider-url`,value:n,onChange:e=>r(e.target.value)})]}),w(o,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,label:i,homepage:s,homepageLabel:d,logo:l})},children:`Add provider`})]})})}const je=n({id:`@manifest-editor/provider`,label:`Provider`,summary:`Create a new provider`,resourceType:`Agent`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`,`Collection`],parentFields:[`provider`],initialData:!0},create:N,render(e){return w(Ae,{...e})}}),Me=e=>T(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?w(`title`,{children:e.title}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{d:`M8 5v14l11-7z`,fill:`currentColor`})]}),Ne=e=>T(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?w(`title`,{children:e.title}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`})]}),Pe=({title:e,...t})=>T(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?w(`title`,{children:e}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M3 9v6h4l5 5V4L7 9H3zm13.5 3A4.5 4.5 0 0 0 14 7.97v8.05c1.48-.73 2.5-2.25 2.5-4.02zM14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77z`})]}),Fe=({title:e,...t})=>T(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?w(`title`,{children:e}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M18.5 12c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02zM5 9v6h4l5 5V4L9 9H5z`})]}),Ie=({title:e,...t})=>T(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?w(`title`,{children:e}):null,w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{fill:`currentColor`,d:`M16.5 12A4.5 4.5 0 0 0 14 7.97v2.21l2.45 2.45c.03-.2.05-.41.05-.63zm2.5 0c0 .94-.2 1.82-.54 2.64l1.51 1.51A8.796 8.796 0 0 0 21 12c0-4.28-2.99-7.86-7-8.77v2.06c2.89.86 5 3.54 5 6.71zM4.27 3 3 4.27 7.73 9H3v6h4l5 5v-6.73l4.25 4.25c-.67.52-1.42.93-2.25 1.18v2.06a8.99 8.99 0 0 0 3.69-1.81L19.73 21 21 19.73l-9-9L4.27 3zM12 4 9.91 6.09 12 8.18V4z`})]}),Le=E.div`
2
2
  background: #ededed; // Not in variable.
3
3
  display: flex;
4
4
  padding: 0.5em;
@@ -94,5 +94,5 @@ import{t as e}from"./manifest-browser-form.lazy-Bm07wmnB.js";import{creatorHelpe
94
94
  `;function Ze(e){let[t,n]=C(!1),{progress:r,currentTime:i,element:a}=ve(),{duration:o,isMuted:s,volume:c,isPlaying:l,playRequested:u}=ye(),{setVolume:d,toggleMute:f,play:p,pause:m,setDurationPercent:h}=_e(),g=s||c===0?Ie:c>50?Pe:Fe;return le(()=>{if(a.current){let t=a.current;if(t.error&&e.onError){e.onError(t.error?.message||`Unknown error`);return}let n=()=>{e.onError&&e.onError(t.error?.message||`Unknown error`)},r=()=>{t.duration&&e.onDuration&&e.onDuration(t.duration),e.onDimensions&&t instanceof HTMLVideoElement&&e.onDimensions(t.videoWidth,t.videoHeight)};return t.addEventListener(`loadedmetadata`,r),t.addEventListener(`error`,n),()=>{t.removeEventListener(`loadedmetadata`,r),t.removeEventListener(`error`,n)}}},[]),T(Le,{children:[w(ze,{disabled:u,onClick:()=>{l?m():p()},children:u?w(Je,{stroke:`#999`}):l?w(Ne,{title:`Pause`}):w(Me,{title:`Play`})}),w(Be,{ref:i,children:`0:00`}),T(Ve,{onClick:e=>{let{left:t,width:n}=e.currentTarget.getBoundingClientRect();h((e.pageX-t)/n)},children:[w(Ue,{}),o?w(He,{ref:r}):null]}),w(Be,{children:he(o)}),T(Ge,{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[w(Ke,{$isOpen:t,children:T(`span`,{children:[w(Xe,{htmlFor:`audio-slider`,children:`Change volume`}),w(qe,{id:`audio-slider`,role:`slider`,disabled:s,min:`0`,max:`100`,value:c,onChange:e=>d(Number(e.currentTarget.value))})]})}),w(We,{onClick:()=>f(),children:w(g,{title:s?`Mute`:`Unmute`})})]})]})}async function Qe(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=t.embed({id:e.url,type:`Sound`,format:`audio/mp4`,duration:e.duration||0});if(r===`Annotation`)return t.embed({...n,label:a(e.label)&&e.label,motivation:e.motivation||t.options.initialData?.motivation||`painting`,body:i,target:t.getTarget()});if(r===`Canvas`){let r=t.generateId(`canvas`),a=t.generateId(`annotation-page`,{id:r,type:`Canvas`}),o=t.embed({...n,motivation:`painting`,body:i,target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),s=t.embed({id:a,type:`AnnotationPage`,items:[o]});return t.embed({id:r,type:`Canvas`,label:e.label||{en:[`Untitled HTML canvas`]},duration:e.duration||0,items:[s]})}}function $e(e){let[t,n]=C(``),[r,i]=C(0),[a,s]=C(``),[c,l]=C({en:[``]});return ce(()=>{if(s(``),i(0),t){let e=t.split(`/`).pop()?.split(`.`).shift();l({en:[e||``]})}},[t]),T(_,{children:[a?w(u,{children:a}):null,T(y,{$wide:!0,children:[w(b,{htmlFor:`audio-url`,children:`URL`}),w(v,{type:`text`,id:`audio-url`,value:t,onChange:e=>n(e.target.value)})]}),t&&!a?w(`div`,{children:w(x,{containerId:`label`,focusId:`label_`,label:`Label`,fields:c,onSave:e=>l(e.toInternationalString())},`${t}__${r}`)}):null,t&&!a?w(de.AudioHTML,{media:{url:t,duration:r,type:`Sound`},children:w(Ze,{onError:e=>s(e),onDuration:e=>i(~~e)},`${t}__${r}`)},`${t}__${r}`):null,r&&!a?T(ae,{children:[w(b,{htmlFor:`duration`,children:`Duration`}),w(v,{type:`number`,id:`duration`,value:r,onChange:e=>i(e.target.valueAsNumber)})]}):null,w(o,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:t,duration:r,label:c})},isDisabled:!t||!!a,children:`Add audio`})]})}const et=n({id:`@manifest-editor/audio-annotation`,create:Qe,label:`Audio`,summary:`Audio annotation`,icon:w(c,{}),render(e){return w($e,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}});async function tt(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=Object.keys(e.body),a=[];for(let r of i){let i=e.body[r].join(`
95
95
  `);i&&a.push(await t.create(`@manifest-editor/html-body-creator`,{language:r,body:i},{parent:{resource:n,property:`items`}}))}let o=await t.create(`@manifest-editor/image-url-creator`,{url:e.imageUrl},{parent:{resource:n,property:`body`}});if(o&&a.push(o),r===`Annotation`)return t.embed({...n,motivation:e.motivation||t.options.initialData?.motivation||`painting`,body:a,target:t.getTarget()});if(r===`Canvas`){let r=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:r,type:`Canvas`}),o=t.embed({...n,motivation:`painting`,body:a,target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),s=t.embed({id:i,type:`AnnotationPage`,items:[o]});return t.embed({id:r,type:`Canvas`,label:e.label||{en:[`Untitled HTML canvas`]},height:e.height||1e3,width:e.width||1e3,items:[s]})}}function nt(e){let[t,n]=D({key:`bodyValue`,initialValue:{en:[``]},requestId:e.options.initialData?.requestId});return w(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());e.runCreate({body:{en:[r.caption]},imageUrl:r.url})},children:T(ue,{children:[T(y,{$wide:!0,children:[w(b,{htmlFor:`url`,children:`URL to Image`}),w(v,{id:`url`,name:`url`,defaultValue:``,placeholder:`https://example.org/image.jpg`})]}),T(y,{$wide:!0,children:[w(b,{htmlFor:`caption`,children:`Caption`}),w(v,{id:`caption`,name:`caption`,placeholder:`Enter a caption`,onChange:e=>n({en:[e.target.value]}),value:t.en?.[0]||``})]}),w(o,{primary:!0,type:`submit`,children:`Create`})]})})}const rt=n({id:`@manifest-editor/captioned-image-annotation`,create:tt,label:`Captioned image`,summary:`Add an image from a URL with caption`,icon:w(s,{}),render(e){return w(nt,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{initialData:!0,disallowPainting:!0,parentTypes:[`AnnotationPage`],parentFields:[`items`]},staticFields:{type:`Annotation`}});async function it(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=Object.keys(e.body),a=[];for(let r of i){let i=e.body[r].join(`
96
96
  `);i&&a.push(await t.create(`@manifest-editor/html-body-creator`,{language:r,body:i},{parent:{resource:n,property:`items`}}))}if(r===`Annotation`)return t.embed({...n,motivation:e.motivation||t.options.initialData?.motivation||`painting`,body:a,target:t.getTarget()});if(r===`Canvas`){let r=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:r,type:`Canvas`}),o=t.embed({...n,motivation:`painting`,body:a,target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),s=t.embed({id:i,type:`AnnotationPage`,items:[o]});return t.embed({id:r,type:`Canvas`,label:e.label||{en:[`Untitled HTML canvas`]},height:e.height||1e3,width:e.width||1e3,items:[s]})}}function at(e){let[t,n]=D({key:`bodyValue`,initialValue:{en:[``]},requestId:e.options.initialData?.requestId}),r=a(t).trim()===``;return T(ue,{children:[w(f,{className:`border-none`,value:t.en?.[0]||``,onChange:e=>n({en:[e]})}),w(o,{primary:!0,type:`button`,onPress:()=>{e.runCreate({body:t})},isDisabled:r,children:`Create`})]})}const ot=n({id:`@manifest-editor/html-annotation`,create:it,label:`HTML`,summary:`HTML annotation`,icon:w(p,{}),render(e){return w(at,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),P={canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(e&&e.type===`Annotation`&&n.targetType===`Annotation`){let n=t.get(e),r=n.target;if(!(r&&r.source?.type===`Canvas`))return;let i=r.source,a=t.get(i);if(!a.items)return;let o=t.get(a.items[0]);if(!o||o.items.length<2&&!a.behavior.includes(`multi-image`))return;let s=t.get(n.body)[0],c=n.body[0]?.selector,l=(s.service||[]).find(e=>De(e));l&&l.width&&l.height&&(l.width!==s.width&&t.modifyEntityField({id:s.id,type:`ContentResource`},`width`,l.width),l.height!==s.height&&t.modifyEntityField({id:s.id,type:`ContentResource`},`height`,l.height));let u=l?.width||s.width,d=l?.height||s.height;if(c&&(c.type===`iiif:ImageApiSelector`||c.type===`ImageApiSelector`)&&c.region){let[e,t,n,r]=c.region.split(`,`);u=Number(n)||u,d=Number(r)||d}let f=new M({vault:t,reference:e}),p=oe(a,{width:u,height:d},.6);f.annotation.target.setPosition(p)}}},F={canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(e&&e.type===`Annotation`&&n.targetType===`Annotation`){let n=t.get(e),r=n.target;if(!(r&&r.source?.type===`Canvas`))return;let i=r.source,a=t.get(i);if(!a.items||a.behavior.includes(`multi-image`))return;let o=t.get(a.items[0]);if(!o||o.items.length>1)return;let s=t.get(n.body);if(s.length!==1)return;let c=s[0],l=n.body[0]?.selector,u=(c.service||[])[0],d=u?.width||c.width,f=u?.height||c.height,p=c.duration||u?.duration;if(l&&(l.type===`iiif:ImageApiSelector`||l.type===`ImageApiSelector`)&&l.region){let[e,t,n,r]=l.region.split(`,`);d=Number(n)||d,f=Number(r)||f}let m=new M({vault:t,reference:i});t.batch(()=>{d!==void 0&&m.technical.width.set(d),f!==void 0&&m.technical.height.set(f),p!==void 0&&m.technical.duration.set(p)})}}};var st=Object.defineProperty,ct=(e,t,n)=>t in e?st(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,I=(e,t,n)=>(ct(e,typeof t==`symbol`?t:t+``,n),n);function L(e){return e.endsWith(`info.json`)?e:e.endsWith(`/`)?`${e}info.json`:`${e}/info.json`}var lt=`http://library.stanford.edu/iiif/image-api/compliance.html#level0`,ut=`http://library.stanford.edu/iiif/image-api/compliance.html#level1`,dt=`http://library.stanford.edu/iiif/image-api/compliance.html#level2`,ft=`http://library.stanford.edu/iiif/image-api/conformance.html#level0`,pt=`http://library.stanford.edu/iiif/image-api/conformance.html#level1`,mt=`http://library.stanford.edu/iiif/image-api/conformance.html#level2`,ht=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0`,gt=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1`,_t=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2`,vt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0`,yt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1`,bt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2`,xt=`http://iiif.io/api/image/1/level0.json`,St=`http://iiif.io/api/image/1/profiles/level0.json`,Ct=`http://iiif.io/api/image/1/level1.json`,wt=`http://iiif.io/api/image/1/profiles/level1.json`,Tt=`http://iiif.io/api/image/1/level2.json`,Et=`http://iiif.io/api/image/1/profiles/level2.json`,Dt=`http://iiif.io/api/image/2/level0.json`,Ot=`http://iiif.io/api/image/2/profiles/level0.json`,kt=`http://iiif.io/api/image/2/level1.json`,At=`http://iiif.io/api/image/2/profiles/level1.json`,jt=`http://iiif.io/api/image/2/level2.json`,Mt=`http://iiif.io/api/image/2/profiles/level2.json`,Nt=`level0`,Pt=`level1`,Ft=`level2`,It=`http://iiif.io/api/image/2/level0`,Lt=`http://iiif.io/api/image/2/level1`,Rt=`http://iiif.io/api/image/2/level2`,zt=[Rt,dt,mt,_t,bt,Tt,Et,jt,Mt,Ft],Bt=[...zt,Lt,ut,pt,gt,yt,Ct,wt,kt,At,Pt],Vt=[It,Lt,Rt,lt,ut,dt,ft,pt,mt,ht,gt,_t,vt,yt,bt,xt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Pt,Ft],Ht={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`sizeByWhListed`]},Ut={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPx`,`regionSquare`,`sizeByWhListed`,`sizeByH`,`sizeByW`,`sizeByWh`]},Wt={extraFormats:[`jpg`,`png`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPct`,`regionByPx`,`regionSquare`,`rotationBy90s`,`sizeByWhListed`,`sizeByConfinedWh`,`sizeByH`,`sizeByPct`,`sizeByW`,`sizeByWh`]};function Gt(e){return zt.indexOf(e)===-1?Bt.indexOf(e)===-1?Ht:Ut:Wt}function Kt(e){let t=e?Array.isArray(e.profile)?e.profile:[e.profile]:[],n={extraQualities:[],extraFormats:[],extraFeatures:[]};for(let e of t)if(typeof e==`string`&&(e=Gt(e)),e){if(e.formats)for(let t of e.formats)n.extraFormats.indexOf(t)===-1&&n.extraFormats.push(t);if(e.qualities)for(let t of e.qualities)n.extraQualities.indexOf(t)===-1&&n.extraQualities.push(t);if(e.supports)for(let t of e.supports)n.extraFeatures.indexOf(t)===-1&&n.extraFeatures.push(t);if(e.maxHeight&&(n.maxHeight=e.maxHeight),e.maxWidth&&(n.maxWidth=e.maxWidth),e.maxArea&&(n.maxArea=e.maxArea),e.extraFormats)for(let t of e.extraFormats)n.extraFormats.indexOf(t)===-1&&n.extraFormats.push(t);if(e.extraQualities)for(let t of e.extraQualities)n.extraQualities.indexOf(t)===-1&&n.extraQualities.push(t);if(e.extraFeatures)for(let t of e.extraFeatures)n.extraFeatures.indexOf(t)===-1&&n.extraFeatures.push(t);e.maxHeight&&(n.maxHeight=e.maxHeight),e.maxWidth&&(n.maxWidth=e.maxWidth),e.maxArea&&(n.maxArea=e.maxArea)}if(e.extraFormats)for(let t of e.extraFormats)n.extraFormats.indexOf(t)===-1&&n.extraFormats.push(t);if(e.extraFeatures)for(let t of e.extraFeatures)n.extraFeatures.indexOf(t)===-1&&n.extraFeatures.push(t);if(e.extraQualities)for(let t of e.extraQualities)n.extraQualities.indexOf(t)===-1&&n.extraQualities.push(t);return n}function qt(e){try{if(e===`full`)return{full:!0};if(e===`square`)return{square:!0};let t=e.startsWith(`pct:`),n=e.substr(t?4:0).split(`,`).map(e=>parseFloat(e));return{x:n[0],y:n[1],w:n[2],h:n[3],percent:t}}catch{throw Error(`Expected 'full', 'square' or 'x,y,w,h'. Found `+e)}}function Jt(e){let t={upscaled:!1,max:!1,confined:!1};if(e[0]===`^`&&(t.upscaled=!0,e=e.slice(1)),e===`max`||e===`full`)return t.max=!0,t.serialiseAsFull=e===`full`,t;if(e[0]===`!`&&(t.confined=!0,e=e.slice(1)),e[0]===`p`)return t.percentScale=parseFloat(e.slice(4)),t;let n=e.split(`,`).map(e=>e.trim());return n.length&&typeof n[0]<`u`&&(n[0]!==``&&(t.width=parseInt(n[0],10)),typeof n[1]<`u`&&n[1]!==``?(t.height=parseInt(n[1],10),t.version=2):t.version=3),t}function Yt(e){let t={angle:0};if(e[0]===`!`&&(t.mirror=!0,e=e.substr(1)),t.angle=parseFloat(e)%360,Number.isNaN(t.angle))throw Error(`Invalid rotation ${e}`);return t}function Xt(e,t=``){let n=e.match(/^(([a-zA-Z]+):\/\/([^/]+))?((.*)+)/);if(!n)throw Error(`Invalid or unknown input ${e}`);let r=n[2],i=n[3],a=n[4];if(a[0]===`/`&&(a=a.substring(1)),t.length>0){if(t[0]===`/`&&(t=t.substring(1)),t!==a.substring(0,t.length))throw Error(`Path does not start with prefix (path: ${a}, prefix: ${t})`);a=a.substring(t.length)}return{scheme:r,server:i,path:a,prefix:t}}function Zt(e,t=``){let{path:n,scheme:r,server:i,prefix:a}=Xt(e,t),o=(n||``).split(`/`).reverse(),[s,c,l,u,...d]=o,f=d.reverse().filter(Boolean).join(`/`);if(o.length===1||s===``)return{type:`base`,scheme:r,server:i,prefix:a,identifier:f};if(s===`info.json`){let[,...e]=o;return{type:`info`,scheme:r,server:i,prefix:a,identifier:e.reverse().filter(Boolean).join(`/`)}}let p=(s||``).split(`.`);if(typeof p[1]>`u`||typeof p[0]>`u`||typeof u>`u`||typeof l>`u`||typeof c>`u`)throw Error(`Invalid image request`);return{type:`image`,scheme:r,server:i,prefix:a,identifier:f,originalPath:n,region:qt(u),size:Jt(l),rotation:Yt(c),quality:p[0],format:p[1]}}function Qt(e){let t=Zt(L(e.id));if(t.type!==`info`)throw Error(`Invalid service URL`);let n=Kt(e);return{identifier:t.identifier,originalPath:``,server:t.server,prefix:t.prefix,scheme:t.scheme,type:`image`,quality:n.extraQualities.indexOf(`default`)===-1?n.extraQualities[0]:`default`,region:{full:!0},size:{max:!0,upscaled:!1,confined:!1},format:`jpg`,rotation:{angle:0}}}function $t(e,t,n){let r=n.length,i=[];for(let t=0;t<r;t++){let r=n[t];if(r){let t=r.width;i.push(e/t)}}return i}function en(e,t,n){let r=n.length,i=[];for(let a=0;a<r;a++){let r=n[a];r&&i.push({width:Math.floor(e/r),height:Math.floor(t/r)})}return i}function R(e){if(e[`@id`])return e[`@id`];if(e.id)return e.id}function z(e){if(!e||!e.profile||!R(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`&&Vt.indexOf(e)!==-1)return!0;return!1}function tn(e){if(!z(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`){if(Bt.indexOf(e)!==-1)return!0}else{let t=[...e.supports||[],...e.extraFeatures||[]];if(t.indexOf(`regionByPx`)!==-1&&(t.indexOf(`sizeByW`)!==-1||t.indexOf(`sizeByWh`)!==-1))return!0}return!1}function B(e,t){if(t&&t.profile){let n=t.profile;if(n){let t=Array.isArray(n)?n:[n];return t.includes(`level${e}`)||t.includes(`http://iiif.io/api/image/2/level${e}.json`)||t.includes(`http://iiif.io/api/image/1/level${e}.json`)||t.includes(`http://iiif.io/api/image/1/profiles/level${e}.json`)}}return!1}function V(e){return z(e)?B(0,e)?0:B(1,e)?1:B(2,e)?2:null:null}function nn(e){return(e[`@context`]?Array.isArray(e[`@context`])?e[`@context`]:[e[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1}function rn(e){if(!tn(e))return[];let t=[],n=Array.isArray(e.profile)?e.profile:[e.profile],r=n.length;for(let t=0;t<r;t++){let r=n[t];if(r&&typeof r!=`string`&&(r.maxHeight||r.maxWidth))return[{id:R(e),type:`variable`,minWidth:0,minHeight:0,maxHeight:r.maxHeight||r.maxWidth,maxWidth:r.maxWidth||r.maxHeight,level:V(e),version:e[`@context`]===`http://iiif.io/api/image/3/context.json`?3:2}]}if(e.tiles){let n=e.tiles.length;for(let r=0;r<n;r++){let n=e.tiles[r];n&&(n.height||n.width)&&t.push({id:R(e),type:`variable`,minHeight:0,minWidth:0,maxHeight:n.height||n.width,maxWidth:n.width,level:V(e),version:nn(e)?3:2})}}return t}function an(e){let t=e.match(/^.*\/(full)\/(((\d+),(\d+)?)|max)\/(\d+)\/default\.(jpg|png|jpeg)$/);if(t&&t[4]&&t[5]){let n=t[1],r=parseInt(t[4],10),i=parseInt(t[5],10),a=t[7];if((n===`max`||n===`full`)&&r&&i&&a)return{type:`fixed`,id:e,height:i,width:r}}return{type:`unknown`,id:e}}function on(e){if(e[`@type`])return e[`@type`];if(e.type)return e.type}function sn(e){if(typeof e==`string`)return an(e);let t=on(e);if(t!==`Image`&&t!==`sc:Image`)return null;let n=e,r=R(n);return r?r&&n.width&&n.height?{id:r,type:`fixed`,width:n.width,height:n.height,unsafe:!0}:an(r):null}function cn(e){return z(e)?(e&&e.sizes?e.sizes:[]).map(t=>({id:R(e),type:`fixed-service`,height:t.height,width:t.width,level:V(e),version:nn(e)?3:2})):[]}function ln(e){let t=[],n=e.length;for(let r=0;r<n;r++){let n=e[r];if(!n)continue;let i=cn(n);i.length&&t.push(...i);let a=rn(n);a.length&&t.push(...a)}return t}function un(e){let t=e.service?Array.isArray(e.service)?e.service:[e.service]:[],n=t.length,r=[];for(let e=0;e<n;e++)z(t[e])&&r.push(t[e]);return r}function dn(e,t=!0,n){let r=[],i=sn(e);if(i===null)return r;let a=e;if(r.push(i),t&&a&&a.width&&a.height){let e=[],t=un(a);for(let r of t){let t={id:R(r),width:a.width,height:a.height};if(n.canLoadSync(t)){let r=n.loadServiceSync(t);r&&(r.height||(r.height=a.height),r.width||(r.width=a.width),e.push(...ln([r])))}}if(e.length)return r.push(...e),r}return a.service&&r.push(...ln(a.service)),r}function fn({x:e=0,y:t=0,w:n,h:r,full:i,square:a,percent:o}){if(i)return`full`;if(a)return`square`;if(typeof n>`u`||typeof r>`u`)throw Error(`RegionParameter: invalid region`);let s=`${e},${t},${n},${r}`;return o?`pct:${s}`:s}function pn({max:e,percentScale:t,upscaled:n,confined:r,width:i,height:a,serialiseAsFull:o,version:s}){let c=[];return n&&c.push(`^`),e?(c.push(o?`full`:`max`),c.join(``)):(r&&c.push(`!`),t&&c.push(`pct:${t}`),i&&c.push(`${i}`),c.push(`,`),a&&s===3&&c.push(`${a}`),c.join(``))}function mn(e){return`${e.mirror?`!`:``}${(e.angle||0)%360}`}function hn(e,t){let n=e.prefix.startsWith(`/`)?e.prefix.substr(1):e.prefix,r=`${e.scheme}://${e.server}/${n?`${n}/`:``}${e.identifier}`;if(e.type===`base`)return r;if(e.type===`info`)return`${r}/info.json`;let{size:i}=e,{region:a,rotation:o,format:s,quality:c}=e;if(t){let e=t[`@context`]?Array.isArray(t[`@context`])?t[`@context`]:[t[`@context`]]:[],n=e.indexOf(`http://iiif.io/api/image/2/context.json`)!==-1,r=e.indexOf(`http://iiif.io/api/image/3/context.json`)!==-1;if((i.width===t.width&&!i.height||i.height===t.height&&!i.width||i.width===t.width&&i.height===t.height)&&(i={...i,max:!0}),n&&(i.max&&!i.serialiseAsFull&&(i={...i,serialiseAsFull:!0}),!i.max&&i.width&&i.height&&(i={...i,height:void 0}),i={...i,version:2}),r){if(i.max&&i.serialiseAsFull&&(i={...i,serialiseAsFull:!1}),i.width&&!i.height&&t.width&&t.height){let e=t.height/t.width;i={...i,height:Math.ceil(i.width*e)}}i={...i,version:3}}}return[r,fn(a),pn(i),mn(o),`${c}.${s}`].filter(Boolean).join(`/`)}function H(e,t,n){let r=Qt({"@context":e.version===3?`http://iiif.io/api/image/3/context.json`:`http://iiif.io/api/image/2/context.json`,id:L(R(e)),profile:e.level===null||typeof e.level>`u`?`level0`:`level${e.level}`,type:e.version===3?`ImageService3`:`ImageService2`});if(r.type!==`image`)throw Error(`Invalid service`);return r.size.max=!1,r.size.width=t,r.size.height=n,{id:hn(r),type:`fixed`,width:t,height:n||e.height/(e.width||1)*t,unsafe:e.width>t}}function U(e){let t=e.replace(/(https?:\/\/)?(www.)?/i,``);return t.indexOf(`/`)===-1?t:t.split(`/`)[0]}function gn(e,t,n){let r=e.width?e.width:e.maxWidth;return n.height<=e.maxHeight&&n.width<=e.maxWidth&&n.height>=e.minHeight&&n.width>=e.minWidth&&(!t||Math.abs(n.width-r)<Math.abs(t.width-r))}function _n(e,t){let n=[],r=Object.assign({unsafeImageService:!1,atAnyCost:!0,fallback:!0,minHeight:64,minWidth:64,maxHeight:1/0,maxWidth:1/0,returnAllOptions:!1,preferFixedSize:!1,allowUnsafe:!1,explain:!1,height:0,width:0},e),i=(e,t=0)=>r.explain?n.push(Array(t).fill(0).map(e=>` `).join(``)+e().trim()):void 0,a=[],o=[],s=null;i(()=>`Using configuration: ${JSON.stringify(r,null,2)}`);let c=(e,t)=>{if(i(()=>`Swapping choice`,3),gn(r,t,e)){if(r.preferFixedSize&&e.unsafe){i(()=>`We found an image that was marked as unsafe, but it was the best size. (${e.id})`,4),o.push(e);return}r.returnAllOptions&&t&&o.push(t),i(()=>`We found a new image that was the best size. (${e.id})`,4),s=e}else r.returnAllOptions&&o.push(e)};i(()=>`The input shows we have ${t.length} list(s) of candidates to choose from.`);let l=t.length;for(let e=0;e<l;e++){let n=t[e]();i(()=>`Candidate group ${e}: ${JSON.stringify(n,null,2)}`,1);let o=n.length;i(()=>`Checking candidate list number ${e} and found ${o} potential ways of creating image(s)`,1);for(let e=0;e<o;e++){let t=n[e];i(()=>`-> Checking candidate ${e}`,1),t.type===`unknown`&&r.atAnyCost&&(i(()=>`We've found an unknown image type, adding this to the "last resort" list`,2),a.push(t)),t.type===`fixed`&&(t.unsafe?(i(()=>`We've found an unsafe fixed image type, adding this to the "last resort" list`,2),a.push(t)):(i(()=>`We've found a fixed size image, checking if it matches the request`,2),c(t,s))),t.type===`fixed-service`&&(r.unsafeImageService?(i(()=>`Checking for an image from the tile source, without calculating the right height and width (unsafeImageService)`,2),c(H(t,r.width,r.height),s)):(i(()=>`Checking for an image from the tile source 3`,2),c(H(t,t.width,t.height),s))),t.type===`variable`&&t.maxWidth&&c(H({id:t.id,type:`fixed-service`,width:t.maxWidth,height:t.maxWidth,level:t.level,version:t.version},t.maxWidth),s)}if(s&&!r.returnAllOptions){if(s.unsafe||r.allowUnsafe)continue;i(()=>`We found a match in choice list number ${e}, no searching any more`);break}}return r.atAnyCost&&o.length===0?(i(()=>s?`We found an image! ${s.id} of type ${s.type}`:`We found no images, but "atAnyCost" is set, so returning that`),{best:s||a[0]||null,fallback:a.slice(1),log:n}):r.returnAllOptions?(i(()=>`Returning all options that we have found`),{best:(r.atAnyCost?s||o[0]||a[0]:s||o[0])||null,fallback:[...o,...a],log:n}):(i(()=>`Returning the best image that we found, and a fallback`),{best:s||o[0]||null,fallback:s?o:o.slice(1),log:n})}function vn(e,t,n){let r=e>t?e:t,i=n.length,a=[];for(let e=0;e<i;e++){let t=n[e];if(!t||t.scaleFactors.length===0)continue;let i=t.scaleFactors[0];if(!i)continue;let o=r/i,s=[i];for(;o>=t.width;)i*=2,s.push(i),o/=2;a.push({...t,scaleFactors:s})}return a}function yn(e,t){if(e.length!==t.length)return!1;if(e.length===0&&t.length===0)return!0;let n=e.length,r=!0;for(let i=0;i<n;i++){let n=e[i],a=t[i];if(n.width!==a.width||n.height!==a.height){r=!1;break}}if(r)return!0;let i=0;for(let r=0;r<n;r++)for(let a=0;a<n;a++)if(e[r].width===t[a].width&&e[r].height===t[a].height){i++;break}return i===n}function bn(e){return B(0,e)}new class{constructor(e={}){I(this,`config`,{verificationsRequired:1,approximateServices:!1,enableFetching:!0,disableThrottling:!1}),I(this,`fetchingCount`,0),I(this,`imageServices`,{}),I(this,`knownImageServers`,{}),this.config=Object.assign(this.config,e)}setConfig(e){Object.assign(this.config,e)}sample(e,t,n=!0){let r=U(R(e)),i=L(R(e)),a=this.knownImageServers[r];return this.imageServices[i]=Object.assign(e,{real:!0}),!a&&e.tiles&&!bn(e)?(this.knownImageServers[r]={verifications:0,malformed:!1,root:r,preLoaded:n,sampledId:R(e),verified:!1,server:null,result:{context:e[`@context`]||[],sampledProfile:e.profile,resourceServiceRatio:t&&e.height?t.height/e.height:1,sampledSizes:e.sizes||[],sizeRatios:$t(e.width,e.height,e.sizes||[]),sampledTiles:e.tiles||[]}},!0):this.verify(e)}preLoad(e,t=!0){this.knownImageServers[e.root]=e,t&&(this.knownImageServers[e.root].malformed=!1,this.knownImageServers[e.root].verifications=this.config.verificationsRequired)}predict(e,t=!1,n=!1){let r=e?.source,i=U(R(e)),a=this.knownImageServers[i],o=L(R(e));return this.imageServices[o]?this.imageServices[o]||null:!this.config.approximateServices||!a||!a.result||!(r?.height||e.height)||!(r?.width||e.width)||!n&&(a.malformed||a.verifications<this.config.verificationsRequired)||bn(e.source)?null:(this.imageServices[o]||(this.imageServices[o]={"@context":a.result.context,"@id":R(e),id:R(e),protocol:`http://iiif.io/api/image`,tiles:r?.tiles||vn(e.width,e.height,a.result.sampledTiles),sizes:r?.sizes||en(Math.round(e.width/a.result.resourceServiceRatio),Math.round(e.height/a.result.resourceServiceRatio),a.result.sizeRatios),profile:r?.profile||a.result.sampledProfile,height:r?.height||e.height,width:r?.width||e.width,real:!1}),this.imageServices[o]||null)}async getThumbnailFromResource(e,t,n=!0,r=[]){let i=e?await this.getImageCandidates(e,n):[];return _n(t,[()=>r,()=>i])}async getImageCandidates(e,t=!0){let n=e;if(t&&n&&n.height&&n.width){let e=un(n);for(let t of e){let e={id:R(t),width:t.width?t.width:n.width,height:t.height?t.height:n.height,source:t};await this.loadService(e)}}return dn(e,t,this)}async verify(e){let t=this.predict(e,!1,!0),n=await this.fetchService(R(e));if(!t)return!1;let r=t.height===n.height&&t.width===n.width&&t[`@context`]===n[`@context`]&&yn(t.sizes||[],n.sizes||[]);if(r){let t=U(R(e)),n=this.knownImageServers[t];n&&(n.verifications+=1,n.verifications>=this.config.verificationsRequired&&(n.verified=!0))}return r}canLoadSync(e){let t=typeof e==`string`?e:R(e),n=L(t);if(this.imageServices[n])return!0;let r=this.knownImageServers[U(t)];return!!(r&&!r.malformed&&r.verifications>=this.config.verificationsRequired)}async markAsMalformed(e){return this.knownImageServers[U(R(e))].malformed=!0,this.loadService(e,!0)}async fetchService(e,t=!1){let n=L(e),r=this.imageServices[n];if(r&&(!t||r.real))return r;if(!this.config.enableFetching)throw Error(`Fetching is not enabled`);let i=await this.fetch(n).then(e=>e.json());return!i.id&&i[`@id`]&&(i.id=i[`@id`]),i.id!==e&&(i.id=e,i[`@id`]&&(i[`@id`]=e)),this.imageServices[n]=Object.assign(i,{real:!0}),this.imageServices[n]}async fetch(e,t){return fetch(e,t)}async loadService(e,t=!1){if(!this.config.disableThrottling){let e=!0;for(;e;)if(this.fetchingCount>=this.config.verificationsRequired)await new Promise(e=>setTimeout(e,500));else{e=!1;break}}let n=this.knownImageServers[U(R(e))];if(n&&!n.malformed&&!t){await n.result;let t=this.loadServiceSync(e);if(t)return t}this.fetchingCount++;let r=await this.fetchService(R(e),t);return this.fetchingCount--,r.real&&this.sample(r,e),r}loadServiceSync(e){let t=L(R(e));return this.imageServices[t]?this.imageServices[t]:this.config.approximateServices?this.predict(e):null}};const W={canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(e&&e.type===`Annotation`&&n.targetType===`Annotation`){let n=t.get(e),r=n.target;if(!(r&&r.source?.type===`Canvas`))return;let i=r.source,a=t.get(i);if(!a.items||a.behavior.includes(`multi-image`)||!t.get(a.items[0]))return;let o=Array.isArray(n.body)?n.body[0]:n.body;if(o.type===`SpecificResource`&&o.selector)return;let s=t.get(n.body)[0],c=(s.service||[]).find(e=>z(e));c&&c.width&&c.height&&(c.width!==s.width&&t.modifyEntityField({id:s.id,type:`ContentResource`},`width`,c.width),c.height!==s.height&&t.modifyEntityField({id:s.id,type:`ContentResource`},`height`,c.height))}}};async function xn(e,t){let n={...e.service};n[`@id`]&&(n.id=n[`@id`]),n[`@type`]&&(n.type=n[`@type`]);let r=k(n),i=A({identifier:r.identifier,server:r.server,scheme:r.scheme,type:`image`,size:{max:!e.size?.width&&!e.size?.height,confined:!1,upscaled:!1,...e.size||{}},format:`jpg`,region:{full:!0},rotation:{angle:0},quality:`default`,prefix:r.prefix,originalPath:r.originalPath});return t.embed({id:i,type:`Image`,format:e.format||`image/jpeg`,height:e.height||n.height,width:e.width||n.width,service:e.embedService===!1?void 0:[e.service]})}function G(e){return e.endsWith(`default.jpg`)?A({...j(e),type:`info`}):O(e)}function K(e){let[t,n]=C(``);return w(_,{children:T(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries()),i=r.url;if(i){let t=G(i);if(!t)throw Error(`Invalid image service request`);fetch(t).then(e=>e.json()).then(t=>{e.runCreate({url:r.url,service:t})})}},children:[w(`div`,{className:`flex gap-2 items-center`,children:T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to image service`}),w(v,{id:`url`,name:`url`,defaultValue:``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);n(t?G(t):``)},onBlur:e=>n(e.currentTarget.value?G(e.currentTarget.value):``)})]})}),w(`div`,{className:`relative flex z-0 my-5 h-96 min-h-0 min-w-0 overflow-hidden bg-gray-200 rounded items-center justify-center`,children:t.trim()?w(Oe,{fallbackRender:()=>w(`div`,{children:`Invalid service`}),children:w(fe,{src:t,fluid:!0,errorFallback:()=>w(`div`,{children:`Invalid service`}),background:`rgb(229,231,235)`,className:`h-full w-full`,containerProps:{className:`w-full h-full z-10`}})}):w(`div`,{className:`text-grey-600`,children:`Preview`})}),w(`div`,{children:w(o,{primary:!0,large:!0,type:`submit`,isDisabled:!t,children:`Create`})})]})})}async function Sn(e,n){let r={id:n.generateId(`annotation`),type:`Annotation`},i=n.options.targetType,a=await t(n,`Annotation`,`body`,`@manifest-editor/image-service-creator`)(e,{parent:{resource:r,property:`body`}});if(i===`Annotation`)return{...r,body:[a],motivation:e.motivation||`painting`,target:n.getTarget()};if(i===`Canvas`){let i=n.generateId(`canvas`),o=n.generateId(`annotation-page`,{id:i,type:`Canvas`}),s=n.embed({...r,motivation:`painting`,body:[a],target:{type:`SpecificResource`,source:{id:i,type:`Canvas`}}}),c=n.embed({id:o,type:`AnnotationPage`,items:[s]}),l;return e.service?.sizes&&(l=await t(n,`Canvas`,`thumbnail`,`@manifest-editor/thumbnail-image`)({service:e.service,width:e.thumbnailSize||400})),n.embed({id:i,type:`Canvas`,label:e.label||{en:[`Untitled canvas`]},height:a.resource.height||1e3,width:a.resource.width||1e3,thumbnail:l?[l]:void 0,items:[c]})}}function Cn(e){return w(K,{...e})}const wn=n({id:`@manifest-editor/image-service-annotation`,create:Sn,label:`IIIF Image`,dependencies:[`@manifest-editor/image-service-creator`],summary:`IIIF Image service`,tags:[`image`,`image-service`],icon:w(h,{style:{padding:10}}),render(e){return w(Cn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[W,F,P],staticFields:{type:`Annotation`}});async function Tn(e,t){if(!e.height||!e.width){let t=await we(e.url);t&&(e.height=t.height,e.width=t.width)}return t.embed({id:e.url,type:`Image`,format:e.format||await Ce(e.url),height:e.height,width:e.width,service:e.service?Array.isArray(e.service)?e.service:[e.service]:void 0})}function q(e){return w(_,{children:T(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.url&&e.runCreate({url:r.url})},children:[T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to Image`}),w(v,{id:`url`,name:`url`,defaultValue:``})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function En(e,n){let r={id:n.generateId(`annotation`),type:`Annotation`},i=n.options.targetType,a=await t(n,`Annotation`,`body`,`@manifest-editor/image-url-creator`)(e,{parent:{resource:r,property:`body`}});if(i===`Annotation`)return n.embed({...r,body:[a],motivation:e.motivation||`painting`,target:n.getTarget()});if(i===`Canvas`){let t=n.generateId(`canvas`),i=n.generateId(`annotation-page`,{id:t,type:`Canvas`}),o=n.embed({...r,motivation:`painting`,body:[a],target:{type:`SpecificResource`,source:{id:t,type:`Canvas`}}}),s=n.embed({id:i,type:`AnnotationPage`,items:[o]});return n.embed({id:t,type:`Canvas`,label:e.label||{en:[`Untitled canvas`]},height:a.resource.height||1e3,width:a.resource.width||1e3,items:[s]})}throw Error(`Unsupported target type`)}function Dn(e){return w(q,{...e})}const On=n({id:`@manifest-editor/image-url-annotation`,create:En,label:`Image`,dependencies:[`@manifest-editor/image-url-creator`],summary:`Image from URL`,tags:[`image`],icon:w(s,{}),render(e){return w(Dn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[W,F,P],staticFields:{type:`Annotation`}});async function kn(e,n){let r=[],i=t(n,`Annotation`,`body`,`@manifest-editor/image-url-creator`);for(let t of e.images)r.push(await i(t,n.options));return r}function J(e){return w(_,{children:T(d.Form,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.urls&&e.runCreate({images:r.urls.split(`
97
- `).map(e=>({url:e}))})},children:[T(d.InputContainer,{className:`mb-4`,children:[w(d.Label,{children:`Enter a list of URLs (one per line)`}),w(d.TextArea,{name:`urls`,rows:`10`})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function An(e,n){let r=[],i=t(n,`AnnotationPage`,`items`,`@manifest-editor/image-url-annotation`);for(let t of e.images)r.push(await i(t,n.options));return r}const jn=n({id:`@manifest-editor/image-url-list-annotation`,create:An,label:`List of Images`,dependencies:[`@manifest-editor/image-url-annotation`],summary:`List of Images from URLs`,tags:[`image`],icon:w(g,{}),render(e){return w(J,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[W,F,P],staticFields:{type:`Annotation`}}),Mn=n({id:`@manifest-editor/no-body-annotation`,create:Nn,label:`Annotation without body`,summary:`Add an annotation that only has motivation and target`,icon:w(l,{}),resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`target`],supports:{initialData:!0,parentTypes:[`AnnotationPage`],parentFields:[`items`],disallowPainting:!0},actionButton:`Create empty annotation`,sideEffects:[],staticFields:{type:`Annotation`}});function Nn(e,t){return t.embed({id:t.generateId(`annotation`),type:`Annotation`,label:e?.label,motivation:e.motivation||t.options.initialData?.motivation||`highlighting`,target:t.getTarget()})}function Pn({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=be({duration:n});return T(pe,{element:a,state:c,actions:l,currentTime:o,progress:s,children:[w(`div`,{style:{maxHeight:400,aspectRatio:`${e.width}/${e.height}`,position:`relative`},children:w(de.VideoHTML,{element:a,media:e,playPause:l.playPause})}),w(Ze,{onError:t,onDuration:r,onDimensions:i})]})}async function Fn(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=t.embed({id:e.url,type:`Video`,format:`video/mp4`,width:e.width,height:e.height,duration:e.duration||0});if(r===`Annotation`)return t.embed({...n,label:a(e.label)&&e.label,motivation:e.motivation||t.options.initialData?.motivation||`painting`,body:i,target:t.getTarget()});if(r===`Canvas`){let r=t.generateId(`canvas`),a=t.generateId(`annotation-page`,{id:r,type:`Canvas`}),o=t.embed({...n,motivation:`painting`,body:i,target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),s=t.embed({id:a,type:`AnnotationPage`,items:[o]});return t.embed({id:r,type:`Canvas`,label:e.label||{en:[`Untitled HTML canvas`]},duration:e.duration||0,width:e.width,height:e.height,items:[s]})}}function In(e){let[t,n]=C(``),[r,i]=C(0),[a,s]=C(0),[c,l]=C(0),[d,f]=C(``),[p,m]=C({en:[``]});return ce(()=>{if(f(``),i(0),t){let e=t.split(`/`).pop()?.split(`.`).shift();m({en:[e||``]})}},[t]),T(_,{children:[d?w(u,{children:d}):null,T(y,{$wide:!0,children:[w(b,{htmlFor:`video-url`,children:`URL`}),w(v,{type:`text`,id:`video-url`,value:t,onChange:e=>n(e.target.value)})]}),t&&!d?w(`div`,{children:w(x,{containerId:`label`,focusId:`label_`,label:`Label`,fields:p,onSave:e=>m(e.toInternationalString())},`${t}__${r}`)}):null,t&&!d?w(`div`,{className:`mb-4 bg-black`,children:w(Pn,{duration:r,onDuration:e=>i(e),onError:e=>f(e),media:{url:t,duration:r,height:c,width:a,type:`Video`},onDimensions:(e,t)=>{s(e||0),l(t||0)}})}):null,!d&&(r||a||c)?w(y,{$wide:!0,children:w(ie,{widthId:`width`,width:a||0,changeWidth:e=>s(e),heightId:`height`,height:c||0,changeHeight:e=>l(e),durationId:`duration`,duration:r||0,changeDuration:e=>i(e)})}):null,w(o,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:t,duration:r,label:p,width:a,height:c})},isDisabled:!t||!!d,children:`Add video`})]})}const Ln=n({id:`@manifest-editor/video-annotation`,create:Fn,label:`Video`,summary:`Video annotation`,icon:w(ne,{}),render(e){return w(In,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),Rn=()=>w(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,transform:`scale(-1, 1)`,children:T(`g`,{children:[w(`rect`,{fill:`none`,height:`24`,width:`24`}),w(`path`,{d:`M16,20H2V4h14V20z M18,8h4V4h-4V8z M18,20h4v-4h-4V20z M18,14h4v-4h-4V14z`})]})}),zn=n({id:`@manifest-editor/empty-annotation-page`,create:(e,t)=>t.embed({id:t.generateId(`annotations`),label:e.label,type:`AnnotationPage`,items:[]}),label:`Empty annotation page`,summary:`AnnotationPage with nothing`,icon:w(Rn,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}}),Bn=n({id:`@manifest-editor/empty-canvas`,create:(e,t)=>{let n=t.generateId(`canvas`),r=t.embed({id:t.generateId(`annotation-page`,{id:n,type:`Canvas`}),type:`AnnotationPage`,items:[]});return{id:n,type:`Canvas`,label:e.label||{en:[``]},height:e.height||1e3,width:e.width||1e3,items:[r]}},label:`Empty canvas`,summary:`No content`,icon:w(l,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`,`height`,`width`,`items`],supports:{parentTypes:[`Manifest`],parentFields:[`items`]}});var Vn=!0,Y=`Invariant failed`;function X(e,t){if(!e){if(Vn)throw Error(Y);var n=typeof t==`function`?t():t,r=n?`${Y}: ${n}`:Y;throw Error(r)}}const Hn=n({id:`@manifest-editor/internal-canvas`,create:Wn,label:`Internal canvas link`,summary:`Canvas from the same manifest`,icon:w(Rn,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>w(Un,{...e})});function Un(e){let t=ge(),n=xe(),r=S(()=>({canSelectCanvas:!1,canSelectCollection:!1,canSelectManifest:!0,canCropImage:!1,alwaysShowNavigationArrow:!1,multiSelect:!1}),[]),i=S(()=>[{type:`callback`,cb:t=>e.runCreate({id:t}),label:`Select canvas`,supportedTypes:[`Canvas`],format:{type:`url`}}],[e.runCreate]),a=S(()=>({saveToLocalStorage:!1,restoreFromLocalStorage:!1,initialHistory:[{url:t?.id,resource:t?.id,route:`/loading?id=${t?.id}`,metadata:{type:`Manifest`}}]}),[t?.id]);return X(t,`Manifest is not loaded`),w(me,{vault:n,children:w(ke,{vault:n,navigation:r,output:i,history:a})})}async function Wn(e,t){return t.embed({id:e.id,type:`Canvas`})}const Gn=e=>T(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:`1em`,width:`1em`,...e,children:[w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{d:`M5 17v2h14v-2H5zm4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98 13.87 11h-3.74L12 5.98z`})]});async function Kn(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function qn(e){let{i18n:t}=Te(),[n,r]=C(`<p></p>`),[i,a]=C(t.defaultLanguage);return T(_,{children:[w(f,{className:`border-none`,value:n,onChange:e=>r(e)}),w(o,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({language:i,body:n})},children:`Create`})]})}const Jn=n({id:`@manifest-editor/html-body-creator`,create:Kn,label:`HTML Body`,summary:`Add HTML annotation body`,icon:w(Gn,{}),render(e){return w(qn,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],supports:{parentTypes:[`Annotation`],parentFields:[`body`]},staticFields:{type:`TextualBody`,format:`text/html`}});function Yn(e,t,n){return`${e}/${Math.floor(t.x)},${Math.floor(t.y)},${Math.floor(t.width)},${Math.floor(t.height)}/${n}/0/default.jpg`}async function Xn(e,t){let n=t.options.targetType,i=e.output,a=[];for(let{resource:o,selector:s,parent:c}of i){let i=o.type,l=new r;if((n===`Canvas`||n===`Annotation`||n===`ContentResource`)&&i===`Canvas`){let r=o.id,i=c?.type===`Manifest`?c.id:void 0;X(i,`Could not find Manifest`);let u=l.get({id:i,type:`Manifest`})||await l.loadManifest(i);X(u,`Manifest not found`);let d=u.items.find(e=>e.id===r);X(d,`Canvas not found`);let f=l.get(d);if(n===`Canvas`&&s?.type!==`BoxSelector`){let e=l.toPresentation3(f);e.label||(e.label={en:[`Untitled canvas`]}),console.log(`loading full canvas`,e),t.vault.loadSync(e.id,e),a.push(t.embed({id:e.id,type:`Canvas`}));continue}let p=l.get(f.items[0]),m=l.get(p.items[0]);if(n===`Annotation`||n===`Canvas`||n===`ContentResource`){let r=l.toPresentation3(m);r.id=t.generateId(`Annotation`);let i=null,o={width:0,height:0};if(r?.body?.service){let t=r?.body.width,n=r?.body.height;i=Ee(r?.body)[0],i&&(!i.width||!i.height)&&(i.width=t,i.height=n),o.width=t,o.height=n,e.trackSize&&e.trackSize(o)}if(s?.type===`BoxSelector`){let o={type:`ImageApiSelector`,region:[~~s.spatial.x,~~s.spatial.y,~~s.spatial.width,~~s.spatial.height].join(`,`)},c={...r.body},l=``;if(i){let e=i.id||i[`@id`]||``;e&&(c.id=Yn(e,s.spatial,`max`),l=Yn(e,s.spatial,`512,`))}if(r.body={id:t.generateId(`SpecificResource`,m),type:`SpecificResource`,source:c,selector:o},e.trackSize&&e.trackSize({width:~~s.spatial.width,height:~~s.spatial.height}),n===`ContentResource`){a.push(r.body);continue}if(n===`Canvas`){let e=t.generateId(`Canvas`,m);r.target=e;let n=t.generateId(`Page`,m),i=t.embed({id:n,type:`AnnotationPage`,items:[r]});a.push(t.embed({id:e,type:`Canvas`,label:{en:[`Untitled canvas`]},width:~~s.spatial.width,height:~~s.spatial.height,thumbnail:l?[t.embed({id:l,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(s.spatial.height/s.spatial.width*512)})]:void 0,items:[i]}));continue}a.push(t.embed({...r,target:t.getTarget()}));continue}a.push(t.embed({...l.toPresentation3(m),target:t.getTarget()}))}}}return a}const Zn=se(()=>import(`./iiif-browser-form.lazy-X1qeXSx5.js`)),Z=n({id:`@manifest-editor/iiif-browser-creator`,create:Xn,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:w(m,{}),render(e){return w(Zn,{...e})},hiddenModal:!0,tags:[`image`,`image-service`],resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],additionalTypes:[`Annotation`,`Canvas`],supports:{onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFields:[`body`,`items`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},sideEffects:[W,F,P],staticFields:{}}),Qn=n({id:`@manifest-editor/image-service-creator`,create:xn,label:`Image Service`,summary:`Add an image from Image Service`,icon:w(h,{style:{padding:10}}),render(e){return w(K,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`height`,`width`,`format`,`service`],supports:{parentFields:[`logo`,`body`,`thumbnail`]}}),$n=n({id:`@manifest-editor/image-url-creator`,create:Tn,label:`Image`,summary:`Image from a URL`,icon:w(s,{}),render(e){return w(q,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}}),er=n({id:`@manifest-editor/image-url-list`,label:`Image URL List`,summary:`Image from a list of URLs`,create:kn,icon:w(g,{}),render(e){return w(J,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function tr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function nr(e){let[t,n]=C({en:[`View as text`]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault();let r=new FormData(n.target),i=Object.fromEntries(r.entries());i.url&&e.runCreate({url:i.url,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to plaintext`}),w(v,{id:`url`,name:`url`,defaultValue:``})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const rr=n({id:`@manifest-editor/plaintext-creator`,create:tr,label:`Plaintext`,summary:`Add link to an plaintext`,icon:w(Gn,{}),render(e){return w(nr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]},staticFields:{format:`text/plain`}});function ir(e,t){e[`@id`]&&(e.id=e[`@id`]),e[`@type`]&&(e.type=e[`@type`]);let n=k(e);return A({identifier:n.identifier,server:n.server,scheme:n.scheme,type:`image`,size:{max:!1,confined:!1,upscaled:!1,width:t.width,height:t.height},format:`jpg`,region:{full:!0},rotation:{angle:0},quality:`default`,prefix:n.prefix,originalPath:n.originalPath})}function Q(e){return e.endsWith(`default.jpg`)?A({...j(e),type:`info`}):O(e)}async function ar(e,t){let n={...e.service},r=n.sizes;if(n[`@id`]&&(n.id=n[`@id`]),n[`@type`]&&(n.type=n[`@type`]),e.thumbnailUrl)return t.embed({id:e.thumbnailUrl,type:`Image`,format:`image/jpeg`,width:e.width,height:e.height});if(r){let i=e.width||400,a=null;for(let e of r)(!a||Math.abs(e.width-i)<Math.abs(a.width-i))&&(a={width:e.width,height:e.height});if(a){let e=ir(n,a);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:a.width,height:a.height})}}return null}function or(e){let[t,n]=C(``),[r,i]=C(null),[a,s]=C({width:0,height:0}),c=S(()=>!r||!a.width||!a.height?null:ir(r,a),[a,r]);return r?T(_,{children:[T(`div`,{className:`mb-4`,children:[w(`div`,{className:`mb-2`,children:r[`@id`]||r.id}),w(`div`,{className:`flex gap-2 mb-4`,children:r.sizes?.map(e=>{let t=e.width===a.width;return T(o,{primary:t,isDisabled:t,large:!0,onPress:()=>s(e),children:[e.width,`x`,e.height]},e.width)})}),c?w(`img`,{src:c,alt:`preview of selected resource`}):null]}),w(o,{primary:!0,large:!0,isDisabled:!c,onPress:()=>{r&&e.runCreate({service:r,width:a.width,height:a.height})},children:`Add thumbnail`})]}):w(_,{children:T(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries()).url;if(n){let e=Q(n);if(!e)throw Error(`Invalid image service request`);fetch(e).then(e=>e.json()).then(e=>{i(e);let t=e.sizes?.[0];t&&s(t)})}},children:[w(`div`,{className:`flex gap-2 items-center`,children:T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to image service`}),w(v,{id:`url`,name:`url`,defaultValue:``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);n(t?Q(t):``)},onBlur:e=>n(e.currentTarget.value?Q(e.currentTarget.value):``)})]})}),w(`div`,{children:w(o,{primary:!0,large:!0,type:`submit`,isDisabled:!t,children:`Select size`})})]})})}const sr=n({id:`@manifest-editor/thumbnail-image`,create:ar,label:`Thumbnail from service`,summary:`Add thumbnail from an image service`,icon:w(te,{}),render(e){return w(or,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`],supports:{parentFields:[`thumbnail`]}});function cr(){return T(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{d:`M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z`})]})}async function lr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function ur(e){let[t,n]=C({en:[``]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault();let r=new FormData(n.target),i=Object.fromEntries(r.entries());i.url&&e.runCreate({url:i.url,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link`}),w(v,{id:`url`,name:`url`,defaultValue:``})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create link`})]})})}const dr=n({id:`@manifest-editor/web-page-creator`,create:lr,label:`Web page`,summary:`Add link to an external web page`,icon:w(cr,{}),render(e){return w(ur,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]}}),fr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function $(e){let t=(e||``).match(fr);return t?t[1]:null}function pr(e){return!!$(e.youtubeUrl)}async function mr(e,t){let n=$(e.youtubeUrl),r=t.embed({id:`https://www.youtube.com/watch?v=${n}`,type:`Video`,service:[{profile:`http://digirati.com/objectifier`,params:{data:`https://www.youtube.com/embed/${n}`}},{id:`https://www.youtube.com/watch?v=${n}`,profile:`https://www.youtube.com`}]});if(t.options.targetType===`Canvas`){let n=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:n,type:`Canvas`}),a=t.embed({id:t.generateId(`annotation`,{id:i,type:`AnnotationPage`}),type:`Annotation`,motivation:`painting`,body:[r],target:{type:`SpecificResource`,source:{id:n,type:`Canvas`}}}),o=t.embed({id:i,type:`AnnotationPage`,items:[a]});return t.embed({id:n,type:`Canvas`,label:e.label||{en:[`Untitled YouTube canvas`]},height:e.height||1e3,width:e.width||1e3,duration:e.duration||1,items:[o]})}return t.options.targetType===`Annotation`?t.embed({id:t.generateId(`annotation`),type:`Annotation`,motivation:`painting`,body:[r],target:t.getTarget()}):r}function hr(e){return w(_,{children:T(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.youtubeUrl&&e.runCreate({youtubeUrl:r.youtubeUrl})},children:[T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to YouTube`}),w(v,{id:`youtubeUrl`,name:`youtubeUrl`,defaultValue:``})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const gr=n({id:`@manifest-editor/youtube`,create:mr,label:`YouTube`,summary:`Embed YouTube`,icon:w(re,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],render:e=>w(hr,{...e}),supports:{onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function _r(e,t){let n=e.output||[],r=[];for(let e of n){let{resource:n,parent:a,selector:o}=e,s=t.getPreviewVault(),c=i(s);if(n.type===`Manifest`){let e=n.id;X(e,`Could not find Manifest ID`);let i=await s.loadManifest(e),a=await c.getBestThumbnailAtSize(i,{width:256,height:256},!1);X(i,`Manifest not found`),r.push(t.embed({id:n.id,type:`Manifest`,label:i.label,summary:i.summary,thumbnail:a?.best?[{id:a.best.id,type:`Image`}]:void 0}));continue}if(n.type===`Collection`){let e=n.id;X(e,`Could not find Manifest ID`);let i=await s.loadManifest(e);X(i,`Collection not found`),r.push(t.embed({id:n.id,type:`Collection`,label:i.label}))}}return r}const vr=se(()=>import(`./manifest-browser-form.lazy-RbQ8NE8u.js`)),yr=n({id:`@manifest-editor/manifest-browser-creator`,create:_r,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:w(m,{}),render(t){return w(e,{...t})},resourceType:`Manifest`,resourceFields:[`id`,`label`],additionalTypes:[`Collection`],supports:{parentTypes:[`Collection`],parentFieldMap:{Collection:[`items`]}},sideEffects:[],staticFields:{}});async function br(e,t,n){let r=t.generateId(`range`,n?{id:n,type:`Range`}:void 0);return t.embed({id:r,type:`Range`,label:e.label||{en:[`Untitled range`]},items:e.items||[]})}function xr(e){let[t,n]=C({en:[``]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),w(o,{primary:!0,type:`submit`,children:`Create range`})]})})}const Sr=n({id:`@manifest-editor/range-with-items`,create:br,label:`Range`,summary:`Add a new range`,icon:w(ee,{}),render(e){return w(xr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});async function Cr(e,t,n){let r=t.generateId(`range`,n?{id:n,type:`Range`}:void 0);return t.embed({id:r,type:`Range`,label:e.label||{en:[`Table of Contents`]},items:(e.items||[]).map(e=>t.ref(e))})}function wr(e){let[t,n]=C({en:[``]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),w(o,{primary:!0,type:`submit`,children:`Create range`})]})})}const Tr=n({id:`@manifest-editor/range-top-level`,create:Cr,label:`Top Level Range`,summary:`Add a new top level range`,icon:w(ee,{}),render(e){return w(wr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),Er=[Qn,wn,$n,On,Ln,et,Jn,ot,gr,Z,Bn,rr,dr,zn,Mn,Hn,rt,er,jn,sr,Tr,Sr,je];export{$e as CreateAudioAnnotationForm,nt as CreateCaptionedImageAnnotation,at as CreateHTMLAnnotation,qn as CreateHTMLBodyForm,K as CreateImageServerForm,Cn as CreateImageServiceAnnotationForm,Dn as CreateImageUrlAnnotationForm,q as CreateImageUrlForm,J as CreateImageUrlListForm,nr as CreatePlaintextForm,Ae as CreateProviderForm,or as CreateThumbnailForm,In as CreateVideoAnnotationForm,ur as CreateWebPageForm,Zn as IIIFBrowserCreatorForm,vr as ManifestBrowserCreatorForm,xr as RangeWithItemsCreatorForm,wr as TopLevelRangeCreatorForm,hr as YouTubeForm,Er as allCreators,et as audioAnnotation,rt as captionedImageAnnotation,Qe as createAudioAnnotation,tt as createCaptionedImageAnnotation,Xn as createFromIIIFBrowserOutput,_r as createFromManifestBrowserOutput,it as createHtmlAnnotation,Kn as createHtmlBody,xn as createImageServer,Sn as createImageServiceAnnotation,Tn as createImageUrl,En as createImageUrlAnnotation,kn as createImageUrlList,An as createImageUrlListAnnotation,Nn as createNoBodyAnnotation,tr as createPlaintext,N as createProvider,Cr as createRangeTopLevel,br as createRangeWithItems,ar as createThumbnail,Fn as createVideoAnnotation,lr as createWebPage,mr as createYoutubeBody,zn as emptyAnnotationPage,Bn as emptyCanvas,$ as getYouTubeId,ot as htmlAnnotation,Jn as htmlBodyCreator,Z as iiifBrowserCreator,wn as imageServiceAnnotation,Qn as imageServiceCreator,On as imageUrlAnnotation,$n as imageUrlCreator,jn as imageUrlListAnnotation,er as imageUrlListCreator,Hn as internalCanvas,yr as manifestBrowserCreator,Mn as noBodyAnnotation,rr as plaintextCreator,je as providerCreator,Tr as rangeTopLevel,Sr as rangeWithItems,pr as validateYouTube,Ln as videoAnnotation,dr as webPageCreator,gr as youTubeBodyCreator};
97
+ `).map(e=>({url:e}))})},children:[T(d.InputContainer,{className:`mb-4`,children:[w(d.Label,{children:`Enter a list of URLs (one per line)`}),w(d.TextArea,{name:`urls`,rows:`10`})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function An(e,n){let r=[],i=t(n,`AnnotationPage`,`items`,`@manifest-editor/image-url-annotation`);for(let t of e.images)r.push(await i(t,n.options));return r}const jn=n({id:`@manifest-editor/image-url-list-annotation`,create:An,label:`List of Images`,dependencies:[`@manifest-editor/image-url-annotation`],summary:`List of Images from URLs`,tags:[`image`],icon:w(g,{}),render(e){return w(J,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[W,F,P],staticFields:{type:`Annotation`}}),Mn=n({id:`@manifest-editor/no-body-annotation`,create:Nn,label:`Annotation without body`,summary:`Add an annotation that only has motivation and target`,icon:w(l,{}),resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`target`],supports:{initialData:!0,parentTypes:[`AnnotationPage`],parentFields:[`items`],disallowPainting:!0},actionButton:`Create empty annotation`,sideEffects:[],staticFields:{type:`Annotation`}});function Nn(e,t){return t.embed({id:t.generateId(`annotation`),type:`Annotation`,label:e?.label,motivation:e.motivation||t.options.initialData?.motivation||`highlighting`,target:t.getTarget()})}function Pn({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=be({duration:n});return T(pe,{element:a,state:c,actions:l,currentTime:o,progress:s,children:[w(`div`,{style:{maxHeight:400,aspectRatio:`${e.width}/${e.height}`,position:`relative`},children:w(de.VideoHTML,{element:a,media:e,playPause:l.playPause})}),w(Ze,{onError:t,onDuration:r,onDimensions:i})]})}async function Fn(e,t){let n={id:t.generateId(`annotation`),type:`Annotation`},r=t.options.targetType,i=t.embed({id:e.url,type:`Video`,format:`video/mp4`,width:e.width,height:e.height,duration:e.duration||0});if(r===`Annotation`)return t.embed({...n,label:a(e.label)&&e.label,motivation:e.motivation||t.options.initialData?.motivation||`painting`,body:i,target:t.getTarget()});if(r===`Canvas`){let r=t.generateId(`canvas`),a=t.generateId(`annotation-page`,{id:r,type:`Canvas`}),o=t.embed({...n,motivation:`painting`,body:i,target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),s=t.embed({id:a,type:`AnnotationPage`,items:[o]});return t.embed({id:r,type:`Canvas`,label:e.label||{en:[`Untitled HTML canvas`]},duration:e.duration||0,width:e.width,height:e.height,items:[s]})}}function In(e){let[t,n]=C(``),[r,i]=C(0),[a,s]=C(0),[c,l]=C(0),[d,f]=C(``),[p,m]=C({en:[``]});return ce(()=>{if(f(``),i(0),t){let e=t.split(`/`).pop()?.split(`.`).shift();m({en:[e||``]})}},[t]),T(_,{children:[d?w(u,{children:d}):null,T(y,{$wide:!0,children:[w(b,{htmlFor:`video-url`,children:`URL`}),w(v,{type:`text`,id:`video-url`,value:t,onChange:e=>n(e.target.value)})]}),t&&!d?w(`div`,{children:w(x,{containerId:`label`,focusId:`label_`,label:`Label`,fields:p,onSave:e=>m(e.toInternationalString())},`${t}__${r}`)}):null,t&&!d?w(`div`,{className:`mb-4 bg-black`,children:w(Pn,{duration:r,onDuration:e=>i(e),onError:e=>f(e),media:{url:t,duration:r,height:c,width:a,type:`Video`},onDimensions:(e,t)=>{s(e||0),l(t||0)}})}):null,!d&&(r||a||c)?w(y,{$wide:!0,children:w(ie,{widthId:`width`,width:a||0,changeWidth:e=>s(e),heightId:`height`,height:c||0,changeHeight:e=>l(e),durationId:`duration`,duration:r||0,changeDuration:e=>i(e)})}):null,w(o,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:t,duration:r,label:p,width:a,height:c})},isDisabled:!t||!!d,children:`Add video`})]})}const Ln=n({id:`@manifest-editor/video-annotation`,create:Fn,label:`Video`,summary:`Video annotation`,icon:w(ne,{}),render(e){return w(In,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),Rn=()=>w(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,transform:`scale(-1, 1)`,children:T(`g`,{children:[w(`rect`,{fill:`none`,height:`24`,width:`24`}),w(`path`,{d:`M16,20H2V4h14V20z M18,8h4V4h-4V8z M18,20h4v-4h-4V20z M18,14h4v-4h-4V14z`})]})}),zn=n({id:`@manifest-editor/empty-annotation-page`,create:(e,t)=>t.embed({id:t.generateId(`annotations`),label:e.label,type:`AnnotationPage`,items:[]}),label:`Empty annotation page`,summary:`AnnotationPage with nothing`,icon:w(Rn,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}}),Bn=n({id:`@manifest-editor/empty-canvas`,create:(e,t)=>{let n=t.generateId(`canvas`),r=t.embed({id:t.generateId(`annotation-page`,{id:n,type:`Canvas`}),type:`AnnotationPage`,items:[]});return{id:n,type:`Canvas`,label:e.label||{en:[``]},height:e.height||1e3,width:e.width||1e3,items:[r]}},label:`Empty canvas`,summary:`No content`,icon:w(l,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`,`height`,`width`,`items`],supports:{parentTypes:[`Manifest`],parentFields:[`items`]}});var Vn=!0,Y=`Invariant failed`;function X(e,t){if(!e){if(Vn)throw Error(Y);var n=typeof t==`function`?t():t,r=n?`${Y}: ${n}`:Y;throw Error(r)}}const Hn=n({id:`@manifest-editor/internal-canvas`,create:Wn,label:`Internal canvas link`,summary:`Canvas from the same manifest`,icon:w(Rn,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>w(Un,{...e})});function Un(e){let t=ge(),n=xe(),r=S(()=>({canSelectCanvas:!1,canSelectCollection:!1,canSelectManifest:!0,canCropImage:!1,alwaysShowNavigationArrow:!1,multiSelect:!1}),[]),i=S(()=>[{type:`callback`,cb:t=>e.runCreate({id:t}),label:`Select canvas`,supportedTypes:[`Canvas`],format:{type:`url`}}],[e.runCreate]),a=S(()=>({saveToLocalStorage:!1,restoreFromLocalStorage:!1,initialHistory:[{url:t?.id,resource:t?.id,route:`/loading?id=${t?.id}`,metadata:{type:`Manifest`}}]}),[t?.id]);return X(t,`Manifest is not loaded`),w(me,{vault:n,children:w(ke,{vault:n,navigation:r,output:i,history:a})})}async function Wn(e,t){return t.embed({id:e.id,type:`Canvas`})}const Gn=e=>T(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:`1em`,width:`1em`,...e,children:[w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{d:`M5 17v2h14v-2H5zm4.5-4.2h5l.9 2.2h2.1L12.75 4h-1.5L6.5 15h2.1l.9-2.2zM12 5.98 13.87 11h-3.74L12 5.98z`})]});async function Kn(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function qn(e){let{i18n:t}=Te(),[n,r]=C(`<p></p>`),[i,a]=C(t.defaultLanguage);return T(_,{children:[w(f,{className:`border-none`,value:n,onChange:e=>r(e)}),w(o,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({language:i,body:n})},children:`Create`})]})}const Jn=n({id:`@manifest-editor/html-body-creator`,create:Kn,label:`HTML Body`,summary:`Add HTML annotation body`,icon:w(Gn,{}),render(e){return w(qn,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],supports:{parentTypes:[`Annotation`],parentFields:[`body`]},staticFields:{type:`TextualBody`,format:`text/html`}});function Yn(e,t,n){return`${e}/${Math.floor(t.x)},${Math.floor(t.y)},${Math.floor(t.width)},${Math.floor(t.height)}/${n}/0/default.jpg`}async function Xn(e,t){let n=t.options.targetType,i=e.output,a=[];for(let{resource:o,selector:s,parent:c}of i){let i=o.type,l=new r;if((n===`Canvas`||n===`Annotation`||n===`ContentResource`)&&i===`Canvas`){let r=o.id,i=c?.type===`Manifest`?c.id:void 0;X(i,`Could not find Manifest`);let u=l.get({id:i,type:`Manifest`})||await l.loadManifest(i);X(u,`Manifest not found`);let d=u.items.find(e=>e.id===r);X(d,`Canvas not found`);let f=l.get(d);if(n===`Canvas`&&s?.type!==`BoxSelector`){let e=l.toPresentation3(f);e.label||(e.label={en:[`Untitled canvas`]}),console.log(`loading full canvas`,e),t.vault.loadSync(e.id,e),a.push(t.embed({id:e.id,type:`Canvas`}));continue}let p=l.get(f.items[0]),m=l.get(p.items[0]);if(n===`Annotation`||n===`Canvas`||n===`ContentResource`){let r=l.toPresentation3(m);r.id=t.generateId(`Annotation`);let i=null,o={width:0,height:0};if(r?.body?.service){let t=r?.body.width,n=r?.body.height;i=Ee(r?.body)[0],i&&(!i.width||!i.height)&&(i.width=t,i.height=n),o.width=t,o.height=n,e.trackSize&&e.trackSize(o)}if(s?.type===`BoxSelector`){let o={type:`ImageApiSelector`,region:[~~s.spatial.x,~~s.spatial.y,~~s.spatial.width,~~s.spatial.height].join(`,`)},c={...r.body},l=``;if(i){let e=i.id||i[`@id`]||``;e&&(c.id=Yn(e,s.spatial,`max`),l=Yn(e,s.spatial,`512,`))}if(r.body={id:t.generateId(`SpecificResource`,m),type:`SpecificResource`,source:c,selector:o},e.trackSize&&e.trackSize({width:~~s.spatial.width,height:~~s.spatial.height}),n===`ContentResource`){a.push(r.body);continue}if(n===`Canvas`){let e=t.generateId(`Canvas`,m);r.target=e;let n=t.generateId(`Page`,m),i=t.embed({id:n,type:`AnnotationPage`,items:[r]});a.push(t.embed({id:e,type:`Canvas`,label:{en:[`Untitled canvas`]},width:~~s.spatial.width,height:~~s.spatial.height,thumbnail:l?[t.embed({id:l,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(s.spatial.height/s.spatial.width*512)})]:void 0,items:[i]}));continue}a.push(t.embed({...r,target:t.getTarget()}));continue}a.push(t.embed({...l.toPresentation3(m),target:t.getTarget()}))}}}return a}const Zn=se(()=>import(`./iiif-browser-form.lazy-B1XgjrGQ.js`)),Z=n({id:`@manifest-editor/iiif-browser-creator`,create:Xn,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:w(m,{}),render(e){return w(Zn,{...e})},hiddenModal:!0,tags:[`image`,`image-service`],resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],additionalTypes:[`Annotation`,`Canvas`],supports:{onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFields:[`body`,`items`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},sideEffects:[W,F,P],staticFields:{}}),Qn=n({id:`@manifest-editor/image-service-creator`,create:xn,label:`Image Service`,summary:`Add an image from Image Service`,icon:w(h,{style:{padding:10}}),render(e){return w(K,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`height`,`width`,`format`,`service`],supports:{parentFields:[`logo`,`body`,`thumbnail`]}}),$n=n({id:`@manifest-editor/image-url-creator`,create:Tn,label:`Image`,summary:`Image from a URL`,icon:w(s,{}),render(e){return w(q,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}}),er=n({id:`@manifest-editor/image-url-list`,label:`Image URL List`,summary:`Image from a list of URLs`,create:kn,icon:w(g,{}),render(e){return w(J,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function tr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function nr(e){let[t,n]=C({en:[`View as text`]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault();let r=new FormData(n.target),i=Object.fromEntries(r.entries());i.url&&e.runCreate({url:i.url,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to plaintext`}),w(v,{id:`url`,name:`url`,defaultValue:``})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const rr=n({id:`@manifest-editor/plaintext-creator`,create:tr,label:`Plaintext`,summary:`Add link to an plaintext`,icon:w(Gn,{}),render(e){return w(nr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]},staticFields:{format:`text/plain`}});function ir(e,t){e[`@id`]&&(e.id=e[`@id`]),e[`@type`]&&(e.type=e[`@type`]);let n=k(e);return A({identifier:n.identifier,server:n.server,scheme:n.scheme,type:`image`,size:{max:!1,confined:!1,upscaled:!1,width:t.width,height:t.height},format:`jpg`,region:{full:!0},rotation:{angle:0},quality:`default`,prefix:n.prefix,originalPath:n.originalPath})}function Q(e){return e.endsWith(`default.jpg`)?A({...j(e),type:`info`}):O(e)}async function ar(e,t){let n={...e.service},r=n.sizes;if(n[`@id`]&&(n.id=n[`@id`]),n[`@type`]&&(n.type=n[`@type`]),e.thumbnailUrl)return t.embed({id:e.thumbnailUrl,type:`Image`,format:`image/jpeg`,width:e.width,height:e.height});if(r){let i=e.width||400,a=null;for(let e of r)(!a||Math.abs(e.width-i)<Math.abs(a.width-i))&&(a={width:e.width,height:e.height});if(a){let e=ir(n,a);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:a.width,height:a.height})}}return null}function or(e){let[t,n]=C(``),[r,i]=C(null),[a,s]=C({width:0,height:0}),c=S(()=>!r||!a.width||!a.height?null:ir(r,a),[a,r]);return r?T(_,{children:[T(`div`,{className:`mb-4`,children:[w(`div`,{className:`mb-2`,children:r[`@id`]||r.id}),w(`div`,{className:`flex gap-2 mb-4`,children:r.sizes?.map(e=>{let t=e.width===a.width;return T(o,{primary:t,isDisabled:t,large:!0,onPress:()=>s(e),children:[e.width,`x`,e.height]},e.width)})}),c?w(`img`,{src:c,alt:`preview of selected resource`}):null]}),w(o,{primary:!0,large:!0,isDisabled:!c,onPress:()=>{r&&e.runCreate({service:r,width:a.width,height:a.height})},children:`Add thumbnail`})]}):w(_,{children:T(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries()).url;if(n){let e=Q(n);if(!e)throw Error(`Invalid image service request`);fetch(e).then(e=>e.json()).then(e=>{i(e);let t=e.sizes?.[0];t&&s(t)})}},children:[w(`div`,{className:`flex gap-2 items-center`,children:T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to image service`}),w(v,{id:`url`,name:`url`,defaultValue:``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);n(t?Q(t):``)},onBlur:e=>n(e.currentTarget.value?Q(e.currentTarget.value):``)})]})}),w(`div`,{children:w(o,{primary:!0,large:!0,type:`submit`,isDisabled:!t,children:`Select size`})})]})})}const sr=n({id:`@manifest-editor/thumbnail-image`,create:ar,label:`Thumbnail from service`,summary:`Add thumbnail from an image service`,icon:w(te,{}),render(e){return w(or,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`],supports:{parentFields:[`thumbnail`]}});function cr(){return T(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[w(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),w(`path`,{d:`M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z`})]})}async function lr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function ur(e){let[t,n]=C({en:[``]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault();let r=new FormData(n.target),i=Object.fromEntries(r.entries());i.url&&e.runCreate({url:i.url,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link`}),w(v,{id:`url`,name:`url`,defaultValue:``})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create link`})]})})}const dr=n({id:`@manifest-editor/web-page-creator`,create:lr,label:`Web page`,summary:`Add link to an external web page`,icon:w(cr,{}),render(e){return w(ur,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]}}),fr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function $(e){let t=(e||``).match(fr);return t?t[1]:null}function pr(e){return!!$(e.youtubeUrl)}async function mr(e,t){let n=$(e.youtubeUrl),r=t.embed({id:`https://www.youtube.com/watch?v=${n}`,type:`Video`,service:[{profile:`http://digirati.com/objectifier`,params:{data:`https://www.youtube.com/embed/${n}`}},{id:`https://www.youtube.com/watch?v=${n}`,profile:`https://www.youtube.com`}]});if(t.options.targetType===`Canvas`){let n=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:n,type:`Canvas`}),a=t.embed({id:t.generateId(`annotation`,{id:i,type:`AnnotationPage`}),type:`Annotation`,motivation:`painting`,body:[r],target:{type:`SpecificResource`,source:{id:n,type:`Canvas`}}}),o=t.embed({id:i,type:`AnnotationPage`,items:[a]});return t.embed({id:n,type:`Canvas`,label:e.label||{en:[`Untitled YouTube canvas`]},height:e.height||1e3,width:e.width||1e3,duration:e.duration||1,items:[o]})}return t.options.targetType===`Annotation`?t.embed({id:t.generateId(`annotation`),type:`Annotation`,motivation:`painting`,body:[r],target:t.getTarget()}):r}function hr(e){return w(_,{children:T(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.youtubeUrl&&e.runCreate({youtubeUrl:r.youtubeUrl})},children:[T(y,{$wide:!0,children:[w(b,{htmlFor:`id`,children:`Link to YouTube`}),w(v,{id:`youtubeUrl`,name:`youtubeUrl`,defaultValue:``})]}),w(o,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const gr=n({id:`@manifest-editor/youtube`,create:mr,label:`YouTube`,summary:`Embed YouTube`,icon:w(re,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],render:e=>w(hr,{...e}),supports:{onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function _r(e,t){let n=e.output||[],r=[];for(let e of n){let{resource:n,parent:a,selector:o}=e,s=t.getPreviewVault(),c=i(s);if(n.type===`Manifest`){let e=n.id;X(e,`Could not find Manifest ID`);let i=await s.loadManifest(e),a=await c.getBestThumbnailAtSize(i,{width:256,height:256},!1);X(i,`Manifest not found`),r.push(t.embed({id:n.id,type:`Manifest`,label:i.label,summary:i.summary,thumbnail:a?.best?[{id:a.best.id,type:`Image`}]:void 0}));continue}if(n.type===`Collection`){let e=n.id;X(e,`Could not find Manifest ID`);let i=await s.loadManifest(e);X(i,`Collection not found`),r.push(t.embed({id:n.id,type:`Collection`,label:i.label}))}}return r}const vr=se(()=>import(`./manifest-browser-form.lazy-DYKHUOu_.js`)),yr=n({id:`@manifest-editor/manifest-browser-creator`,create:_r,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:w(m,{}),render(t){return w(e,{...t})},resourceType:`Manifest`,resourceFields:[`id`,`label`],additionalTypes:[`Collection`],supports:{parentTypes:[`Collection`],parentFieldMap:{Collection:[`items`]}},sideEffects:[],staticFields:{}});async function br(e,t,n){let r=t.generateId(`range`,n?{id:n,type:`Range`}:void 0);return t.embed({id:r,type:`Range`,label:e.label||{en:[`Untitled range`]},items:e.items||[]})}function xr(e){let[t,n]=C({en:[``]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),w(o,{primary:!0,type:`submit`,children:`Create range`})]})})}const Sr=n({id:`@manifest-editor/range-with-items`,create:br,label:`Range`,summary:`Add a new range`,icon:w(ee,{}),render(e){return w(xr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});async function Cr(e,t,n){let r=t.generateId(`range`,n?{id:n,type:`Range`}:void 0);return t.embed({id:r,type:`Range`,label:e.label||{en:[`Table of Contents`]},items:(e.items||[]).map(e=>t.ref(e))})}function wr(e){let[t,n]=C({en:[``]});return w(_,{children:T(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[w(x,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),w(o,{primary:!0,type:`submit`,children:`Create range`})]})})}const Tr=n({id:`@manifest-editor/range-top-level`,create:Cr,label:`Top Level Range`,summary:`Add a new top level range`,icon:w(ee,{}),render(e){return w(wr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),Er=[Qn,wn,$n,On,Ln,et,Jn,ot,gr,Z,Bn,rr,dr,zn,Mn,Hn,rt,er,jn,sr,Tr,Sr,je];export{$e as CreateAudioAnnotationForm,nt as CreateCaptionedImageAnnotation,at as CreateHTMLAnnotation,qn as CreateHTMLBodyForm,K as CreateImageServerForm,Cn as CreateImageServiceAnnotationForm,Dn as CreateImageUrlAnnotationForm,q as CreateImageUrlForm,J as CreateImageUrlListForm,nr as CreatePlaintextForm,Ae as CreateProviderForm,or as CreateThumbnailForm,In as CreateVideoAnnotationForm,ur as CreateWebPageForm,Zn as IIIFBrowserCreatorForm,vr as ManifestBrowserCreatorForm,xr as RangeWithItemsCreatorForm,wr as TopLevelRangeCreatorForm,hr as YouTubeForm,Er as allCreators,et as audioAnnotation,rt as captionedImageAnnotation,Qe as createAudioAnnotation,tt as createCaptionedImageAnnotation,Xn as createFromIIIFBrowserOutput,_r as createFromManifestBrowserOutput,it as createHtmlAnnotation,Kn as createHtmlBody,xn as createImageServer,Sn as createImageServiceAnnotation,Tn as createImageUrl,En as createImageUrlAnnotation,kn as createImageUrlList,An as createImageUrlListAnnotation,Nn as createNoBodyAnnotation,tr as createPlaintext,N as createProvider,Cr as createRangeTopLevel,br as createRangeWithItems,ar as createThumbnail,Fn as createVideoAnnotation,lr as createWebPage,mr as createYoutubeBody,zn as emptyAnnotationPage,Bn as emptyCanvas,$ as getYouTubeId,ot as htmlAnnotation,Jn as htmlBodyCreator,Z as iiifBrowserCreator,wn as imageServiceAnnotation,Qn as imageServiceCreator,On as imageUrlAnnotation,$n as imageUrlCreator,jn as imageUrlListAnnotation,er as imageUrlListCreator,Hn as internalCanvas,yr as manifestBrowserCreator,Mn as noBodyAnnotation,rr as plaintextCreator,je as providerCreator,Tr as rangeTopLevel,Sr as rangeWithItems,pr as validateYouTube,Ln as videoAnnotation,dr as webPageCreator,gr as youTubeBodyCreator};
98
98
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- const e=require(`./index.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`),r=require(`@manifest-editor/shell`),i=require(`iiif-browser`);function a(e){let a=(0,r.usePreviewVault)(),o=(0,t.useMemo)(()=>e.options.initialData||{},[e.options.initialData]),s=(0,t.useMemo)(()=>[{type:`callback`,label:`Select`,supportedTypes:[`Manifest`,`Collection`,`ManifestList`,`CollectionList`,`CollectionItemList`],cb:t=>e.runCreate({output:t}),format:{type:`custom`,format:(e,t,n)=>{let r=Array.isArray(e)?e:[{...e,parent:t}],i=[];for(let e of r)i.push({resource:n.get(e),parent:e.parent,selector:e.selector});return i}}}],[e.runCreate]),c=(0,t.useMemo)(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...o.iiifBrowserOptions?.navigation||{}}),[o.iiifBrowserOptions?.navigation]);return(0,n.jsx)(r.PreviewVaultBoundary,{children:(0,n.jsx)(i.IIIFBrowser,{ui:(0,t.useMemo)(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,...o.iiifBrowserOptions?.ui||{}}),[o.iiifBrowserOptions?.ui]),vault:a,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:s,navigation:c,customPages:o.iiifBrowserOptions?.customPages||{},history:o.iiifBrowserOptions?.history||{}})})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
1
+ const e=require(`./index.cjs`);let t=require(`react`),n=require(`react/jsx-runtime`),r=require(`@manifest-editor/shell`),i=require(`iiif-browser`);function a(e){let a=(0,r.usePreviewVault)(),o=(0,t.useMemo)(()=>e.options.initialData||{},[e.options.initialData]),s=(0,t.useMemo)(()=>[{type:`callback`,label:`Select`,supportedTypes:[`Manifest`,`Collection`,`ManifestList`,`CollectionList`,`CollectionItemList`],cb:t=>e.runCreate({output:t}),format:{type:`custom`,format:(e,t,n)=>{let r=Array.isArray(e)?e:[{...e,parent:t}],i=[];for(let e of r)i.push({resource:n.get(e),parent:e.parent,selector:e.selector});return i}}}],[e.runCreate]),c=(0,t.useMemo)(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...o.iiifBrowserOptions?.navigation||{}}),[o.iiifBrowserOptions?.navigation]);return(0,n.jsx)(r.PreviewVaultBoundary,{children:(0,n.jsx)(i.IIIFBrowser,{ui:(0,t.useMemo)(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,homeLink:`${window.location.origin}/collection.json`,...o.iiifBrowserOptions?.ui||{}}),[o.iiifBrowserOptions?.ui]),vault:a,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:s,navigation:c,customPages:o.iiifBrowserOptions?.customPages||{},history:o.iiifBrowserOptions?.history||{}})})}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
@@ -1,2 +1,2 @@
1
- import{useMemo as e}from"react";import{jsx as t}from"react/jsx-runtime";import{PreviewVaultBoundary as n,usePreviewVault as r}from"@manifest-editor/shell";import{IIIFBrowser as i}from"iiif-browser";function a(a){let o=r(),s=e(()=>a.options.initialData||{},[a.options.initialData]),c=e(()=>[{type:`callback`,label:`Select`,supportedTypes:[`Manifest`,`Collection`,`ManifestList`,`CollectionList`,`CollectionItemList`],cb:e=>a.runCreate({output:e}),format:{type:`custom`,format:(e,t,n)=>{let r=Array.isArray(e)?e:[{...e,parent:t}],i=[];for(let e of r)i.push({resource:n.get(e),parent:e.parent,selector:e.selector});return i}}}],[a.runCreate]),l=e(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...s.iiifBrowserOptions?.navigation||{}}),[s.iiifBrowserOptions?.navigation]);return t(n,{children:t(i,{ui:e(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,...s.iiifBrowserOptions?.ui||{}}),[s.iiifBrowserOptions?.ui]),vault:o,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:c,navigation:l,customPages:s.iiifBrowserOptions?.customPages||{},history:s.iiifBrowserOptions?.history||{}})})}export{a as t};
2
- //# sourceMappingURL=manifest-browser-form.lazy-Bm07wmnB.js.map
1
+ import{useMemo as e}from"react";import{jsx as t}from"react/jsx-runtime";import{PreviewVaultBoundary as n,usePreviewVault as r}from"@manifest-editor/shell";import{IIIFBrowser as i}from"iiif-browser";function a(a){let o=r(),s=e(()=>a.options.initialData||{},[a.options.initialData]),c=e(()=>[{type:`callback`,label:`Select`,supportedTypes:[`Manifest`,`Collection`,`ManifestList`,`CollectionList`,`CollectionItemList`],cb:e=>a.runCreate({output:e}),format:{type:`custom`,format:(e,t,n)=>{let r=Array.isArray(e)?e:[{...e,parent:t}],i=[];for(let e of r)i.push({resource:n.get(e),parent:e.parent,selector:e.selector});return i}}}],[a.runCreate]),l=e(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...s.iiifBrowserOptions?.navigation||{}}),[s.iiifBrowserOptions?.navigation]);return t(n,{children:t(i,{ui:e(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,homeLink:`${window.location.origin}/collection.json`,...s.iiifBrowserOptions?.ui||{}}),[s.iiifBrowserOptions?.ui]),vault:o,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:c,navigation:l,customPages:s.iiifBrowserOptions?.customPages||{},history:s.iiifBrowserOptions?.history||{}})})}export{a as t};
2
+ //# sourceMappingURL=manifest-browser-form.lazy-CvgqUwj3.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-browser-form.lazy-Bm07wmnB.js","names":["initialData: ManifestBrowserCreatorInitialData","resource","vault"],"sources":["../src/Manifest/ManifestBrowserCreator/manifest-browser-form.lazy.tsx"],"sourcesContent":["import type { CreatorContext } from \"@manifest-editor/creator-api\";\nimport { PreviewVaultBoundary, usePreviewVault } from \"@manifest-editor/shell\";\nimport { IIIFBrowser, type IIIFBrowserProps } from \"iiif-browser\";\nimport { useMemo } from \"react\";\n\nexport interface ManifestBrowserCreatorInitialData {\n iiifBrowserOptions?: Partial<IIIFBrowserProps>;\n}\n\nexport default function ManifestBrowserCreatorForm(props: CreatorContext) {\n const vault = usePreviewVault();\n const initialData: ManifestBrowserCreatorInitialData = useMemo(() => {\n return props.options.initialData || {};\n }, [props.options.initialData]);\n\n const output = useMemo(() => {\n return [\n {\n type: \"callback\",\n label: \"Select\",\n supportedTypes: [\n \"Manifest\",\n \"Collection\",\n \"ManifestList\",\n \"CollectionList\",\n \"CollectionItemList\",\n ],\n cb: (resource) => props.runCreate({ output: resource }),\n format: {\n type: \"custom\",\n format: (resource, parent, vault) => {\n const resourcesAsArray = Array.isArray(resource)\n ? resource\n : [{ ...resource, parent }];\n const resources = [];\n for (const resource of resourcesAsArray) {\n resources.push({\n resource: vault.get(resource),\n parent: resource.parent,\n selector: resource.selector,\n });\n }\n return resources;\n },\n },\n },\n ] as IIIFBrowserProps[\"output\"];\n }, [props.runCreate]);\n\n const navigationOptions = useMemo(() => {\n return {\n canCropImage: false,\n canSelectCanvas: false,\n canSelectManifest: true,\n canSelectCollection: true,\n multiSelect: true,\n ...(initialData.iiifBrowserOptions?.navigation || {}),\n };\n }, [initialData.iiifBrowserOptions?.navigation]);\n\n const uiOptions = useMemo(() => {\n return {\n buttonClassName: \"bg-me-primary-500 text-white hover:bg-me-primary-600\",\n ...(initialData.iiifBrowserOptions?.ui || {}),\n } as IIIFBrowserProps[\"ui\"];\n }, [initialData.iiifBrowserOptions?.ui]);\n\n return (\n <PreviewVaultBoundary>\n <IIIFBrowser\n ui={uiOptions}\n vault={vault}\n className=\"iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full\"\n output={output}\n navigation={navigationOptions}\n customPages={(initialData.iiifBrowserOptions?.customPages || {})}\n history={initialData.iiifBrowserOptions?.history || {}}\n />\n </PreviewVaultBoundary>\n );\n}\n"],"mappings":"sMASA,SAAwB,EAA2B,EAAuB,CACxE,IAAM,EAAQ,GAAiB,CACzBA,EAAiD,MAC9C,EAAM,QAAQ,aAAe,EAAE,CACrC,CAAC,EAAM,QAAQ,YAAY,CAAC,CAEzB,EAAS,MACN,CACL,CACE,KAAM,WACN,MAAO,SACP,eAAgB,CACd,WACA,aACA,eACA,iBACA,qBACD,CACD,GAAK,GAAa,EAAM,UAAU,CAAE,OAAQ,EAAU,CAAC,CACvD,OAAQ,CACN,KAAM,SACN,QAAS,EAAU,EAAQ,IAAU,CACnC,IAAM,EAAmB,MAAM,QAAQ,EAAS,CAC5C,EACA,CAAC,CAAE,GAAG,EAAU,SAAQ,CAAC,CACvB,EAAY,EAAE,CACpB,IAAK,IAAMC,KAAY,EACrB,EAAU,KAAK,CACb,SAAUC,EAAM,IAAID,EAAS,CAC7B,OAAQA,EAAS,OACjB,SAAUA,EAAS,SACpB,CAAC,CAEJ,OAAO,GAEV,CACF,CACF,CACA,CAAC,EAAM,UAAU,CAAC,CAEf,EAAoB,OACjB,CACL,aAAc,GACd,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GACrB,YAAa,GACb,GAAI,EAAY,oBAAoB,YAAc,EAAE,CACrD,EACA,CAAC,EAAY,oBAAoB,WAAW,CAAC,CAShD,OACE,EAAC,EAAA,CAAA,SACC,EAAC,EAAA,CACC,GAVY,OACT,CACL,gBAAiB,uDACjB,GAAI,EAAY,oBAAoB,IAAM,EAAE,CAC7C,EACA,CAAC,EAAY,oBAAoB,GAAG,CAAC,CAM3B,QACP,UAAU,6FACF,SACR,WAAY,EACZ,YAAc,EAAY,oBAAoB,aAAe,EAAE,CAC/D,QAAS,EAAY,oBAAoB,SAAW,EAAE,EACtD,CAAA,CACmB"}
1
+ {"version":3,"file":"manifest-browser-form.lazy-CvgqUwj3.js","names":["initialData: ManifestBrowserCreatorInitialData","resource","vault"],"sources":["../src/Manifest/ManifestBrowserCreator/manifest-browser-form.lazy.tsx"],"sourcesContent":["import type { CreatorContext } from \"@manifest-editor/creator-api\";\nimport { PreviewVaultBoundary, usePreviewVault } from \"@manifest-editor/shell\";\nimport { IIIFBrowser, type IIIFBrowserProps } from \"iiif-browser\";\nimport { useMemo } from \"react\";\n\nexport interface ManifestBrowserCreatorInitialData {\n iiifBrowserOptions?: Partial<IIIFBrowserProps>;\n}\n\nexport default function ManifestBrowserCreatorForm(props: CreatorContext) {\n const vault = usePreviewVault();\n const initialData: ManifestBrowserCreatorInitialData = useMemo(() => {\n return props.options.initialData || {};\n }, [props.options.initialData]);\n\n const output = useMemo(() => {\n return [\n {\n type: \"callback\",\n label: \"Select\",\n supportedTypes: [\n \"Manifest\",\n \"Collection\",\n \"ManifestList\",\n \"CollectionList\",\n \"CollectionItemList\",\n ],\n cb: (resource) => props.runCreate({ output: resource }),\n format: {\n type: \"custom\",\n format: (resource, parent, vault) => {\n const resourcesAsArray = Array.isArray(resource)\n ? resource\n : [{ ...resource, parent }];\n const resources = [];\n for (const resource of resourcesAsArray) {\n resources.push({\n resource: vault.get(resource),\n parent: resource.parent,\n selector: resource.selector,\n });\n }\n return resources;\n },\n },\n },\n ] as IIIFBrowserProps[\"output\"];\n }, [props.runCreate]);\n\n const navigationOptions = useMemo(() => {\n return {\n canCropImage: false,\n canSelectCanvas: false,\n canSelectManifest: true,\n canSelectCollection: true,\n multiSelect: true,\n ...(initialData.iiifBrowserOptions?.navigation || {}),\n };\n }, [initialData.iiifBrowserOptions?.navigation]);\n\n const uiOptions = useMemo(() => {\n return {\n buttonClassName: \"bg-me-primary-500 text-white hover:bg-me-primary-600\",\n homeLink: `${window.location.origin}/collection.json`,\n ...(initialData.iiifBrowserOptions?.ui || {}),\n } as IIIFBrowserProps[\"ui\"];\n }, [initialData.iiifBrowserOptions?.ui]);\n\n return (\n <PreviewVaultBoundary>\n <IIIFBrowser\n ui={uiOptions}\n vault={vault}\n className=\"iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full\"\n output={output}\n navigation={navigationOptions}\n customPages={(initialData.iiifBrowserOptions?.customPages || {})}\n history={initialData.iiifBrowserOptions?.history || {}}\n />\n </PreviewVaultBoundary>\n );\n}\n"],"mappings":"sMASA,SAAwB,EAA2B,EAAuB,CACxE,IAAM,EAAQ,GAAiB,CACzBA,EAAiD,MAC9C,EAAM,QAAQ,aAAe,EAAE,CACrC,CAAC,EAAM,QAAQ,YAAY,CAAC,CAEzB,EAAS,MACN,CACL,CACE,KAAM,WACN,MAAO,SACP,eAAgB,CACd,WACA,aACA,eACA,iBACA,qBACD,CACD,GAAK,GAAa,EAAM,UAAU,CAAE,OAAQ,EAAU,CAAC,CACvD,OAAQ,CACN,KAAM,SACN,QAAS,EAAU,EAAQ,IAAU,CACnC,IAAM,EAAmB,MAAM,QAAQ,EAAS,CAC5C,EACA,CAAC,CAAE,GAAG,EAAU,SAAQ,CAAC,CACvB,EAAY,EAAE,CACpB,IAAK,IAAMC,KAAY,EACrB,EAAU,KAAK,CACb,SAAUC,EAAM,IAAID,EAAS,CAC7B,OAAQA,EAAS,OACjB,SAAUA,EAAS,SACpB,CAAC,CAEJ,OAAO,GAEV,CACF,CACF,CACA,CAAC,EAAM,UAAU,CAAC,CAEf,EAAoB,OACjB,CACL,aAAc,GACd,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GACrB,YAAa,GACb,GAAI,EAAY,oBAAoB,YAAc,EAAE,CACrD,EACA,CAAC,EAAY,oBAAoB,WAAW,CAAC,CAUhD,OACE,EAAC,EAAA,CAAA,SACC,EAAC,EAAA,CACC,GAXY,OACT,CACL,gBAAiB,uDACjB,SAAU,GAAG,OAAO,SAAS,OAAO,kBACpC,GAAI,EAAY,oBAAoB,IAAM,EAAE,CAC7C,EACA,CAAC,EAAY,oBAAoB,GAAG,CAAC,CAM3B,QACP,UAAU,6FACF,SACR,WAAY,EACZ,YAAc,EAAY,oBAAoB,aAAe,EAAE,CAC/D,QAAS,EAAY,oBAAoB,SAAW,EAAE,EACtD,CAAA,CACmB"}
@@ -0,0 +1 @@
1
+ import{t as e}from"./manifest-browser-form.lazy-CvgqUwj3.js";export{e as default};
@@ -0,0 +1 @@
1
+ const e=require(`./manifest-browser-form.lazy-CIUTZSTb.cjs`);exports.default=e.t;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifest-editor/creators",
3
- "version": "2.0.2",
3
+ "version": "2.0.3-next.0.da9a339",
4
4
  "type": "module",
5
5
  "bugs": "https://github.com/digirati-co-uk/iiif-manifest-editor/issues",
6
6
  "repository": {
@@ -41,11 +41,11 @@
41
41
  "@iiif/parser": "2.2.8",
42
42
  "@iiif/presentation-3": "^2.2.3",
43
43
  "@iiif/presentation-3-normalized": "^0.9.7",
44
- "@manifest-editor/components": "2.0.2",
45
- "@manifest-editor/creator-api": "2.0.2",
46
- "@manifest-editor/editor-api": "2.0.2",
47
- "@manifest-editor/editors": "2.0.2",
48
- "@manifest-editor/shell": "2.0.2",
44
+ "@manifest-editor/components": "2.0.3-next.0.da9a339",
45
+ "@manifest-editor/creator-api": "2.0.3-next.0.da9a339",
46
+ "@manifest-editor/editor-api": "2.0.3-next.0.da9a339",
47
+ "@manifest-editor/editors": "2.0.3-next.0.da9a339",
48
+ "@manifest-editor/shell": "2.0.3-next.0.da9a339",
49
49
  "iiif-browser": "2.0.5-next.95a29ac",
50
50
  "react": "19.2.0",
51
51
  "react-dom": "19.2.0",
@@ -67,5 +67,5 @@
67
67
  "publishConfig": {
68
68
  "access": "public"
69
69
  },
70
- "gitHead": "9825dc38f994931db06f820f70163538dd1f4e1f"
70
+ "gitHead": "da9a339b93961c143a9aded5e8a736fec418d2a1"
71
71
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"iiif-browser-form.lazy-X1qeXSx5.js","names":["initialData: IIIFBrowserCreatorInitialData","resource","vault"],"sources":["../src/ContentResource/IIIFBrowserCreator/iiif-browser-form.lazy.tsx"],"sourcesContent":["import type { CreatorContext } from \"@manifest-editor/creator-api\";\nimport { PreviewVaultBoundary, usePreviewVault } from \"@manifest-editor/shell\";\nimport { IIIFBrowser, type IIIFBrowserProps } from \"iiif-browser\";\nimport { useMemo } from \"react\";\n\nexport interface IIIFBrowserCreatorInitialData {\n iiifBrowserOptions?: Partial<IIIFBrowserProps>;\n}\n\nexport default function IIIFBrowserCreatorForm(props: CreatorContext) {\n const initialData: IIIFBrowserCreatorInitialData = useMemo(() => {\n return props.options.initialData || {};\n }, [props.options.initialData]);\n\n const vault = usePreviewVault();\n const output = useMemo(() => {\n return [\n {\n type: \"callback\",\n label: \"Select\",\n supportedTypes: [\n \"Canvas\",\n \"CanvasList\",\n \"CanvasRegion\",\n \"ImageService\",\n \"ImageServiceRegion\",\n ],\n cb: (resource) => props.runCreate({ output: resource }),\n format: {\n type: \"custom\",\n format: (resource, parent, vault) => {\n const resourcesAsArray = Array.isArray(resource)\n ? resource\n : [{ ...resource, parent }];\n const resources = [];\n for (const resource of resourcesAsArray) {\n resources.push({\n resource: vault.get(resource),\n parent: resource.parent,\n selector: resource.selector,\n });\n }\n return resources;\n },\n },\n },\n ] as IIIFBrowserProps[\"output\"];\n }, [props.runCreate]);\n\n const navigationOptions = useMemo(() => {\n return {\n canCropImage: true,\n canSelectCanvas: true,\n canSelectManifest: false,\n canSelectCollection: false,\n // @todo fix the output so this one works.\n multiSelect: true,\n ...(initialData.iiifBrowserOptions?.navigation || {})\n };\n }, [initialData]);\n\n const uiOptions = useMemo(() => {\n return {\n buttonClassName: \"bg-me-primary-500 text-white hover:bg-me-primary-600\",\n ...(initialData.iiifBrowserOptions?.ui || {})\n } as IIIFBrowserProps[\"ui\"];\n }, [initialData]);\n\n return (\n <PreviewVaultBoundary>\n <IIIFBrowser\n ui={uiOptions}\n vault={vault}\n className=\"iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full\"\n output={output}\n navigation={navigationOptions}\n customPages={(initialData.iiifBrowserOptions?.customPages || {})}\n history={initialData.iiifBrowserOptions?.history || {}}\n />\n </PreviewVaultBoundary>\n );\n}\n"],"mappings":"sMASA,SAAwB,EAAuB,EAAuB,CACpE,IAAMA,EAA6C,MAC1C,EAAM,QAAQ,aAAe,EAAE,CACrC,CAAC,EAAM,QAAQ,YAAY,CAAC,CAEzB,EAAQ,GAAiB,CACzB,EAAS,MACN,CACL,CACE,KAAM,WACN,MAAO,SACP,eAAgB,CACd,SACA,aACA,eACA,eACA,qBACD,CACD,GAAK,GAAa,EAAM,UAAU,CAAE,OAAQ,EAAU,CAAC,CACvD,OAAQ,CACN,KAAM,SACN,QAAS,EAAU,EAAQ,IAAU,CACnC,IAAM,EAAmB,MAAM,QAAQ,EAAS,CAC5C,EACA,CAAC,CAAE,GAAG,EAAU,SAAQ,CAAC,CACvB,EAAY,EAAE,CACpB,IAAK,IAAMC,KAAY,EACrB,EAAU,KAAK,CACb,SAAUC,EAAM,IAAID,EAAS,CAC7B,OAAQA,EAAS,OACjB,SAAUA,EAAS,SACpB,CAAC,CAEJ,OAAO,GAEV,CACF,CACF,CACA,CAAC,EAAM,UAAU,CAAC,CAEf,EAAoB,OACjB,CACL,aAAc,GACd,gBAAiB,GACjB,kBAAmB,GACnB,oBAAqB,GAErB,YAAa,GACb,GAAI,EAAY,oBAAoB,YAAc,EAAE,CACrD,EACA,CAAC,EAAY,CAAC,CASjB,OACE,EAAC,EAAA,CAAA,SACC,EAAC,EAAA,CACC,GAVY,OACT,CACL,gBAAiB,uDACjB,GAAI,EAAY,oBAAoB,IAAM,EAAE,CAC7C,EACA,CAAC,EAAY,CAAC,CAMJ,QACP,UAAU,6FACF,SACR,WAAY,EACZ,YAAc,EAAY,oBAAoB,aAAe,EAAE,CAC/D,QAAS,EAAY,oBAAoB,SAAW,EAAE,EACtD,CAAA,CACmB"}
@@ -1 +0,0 @@
1
- const e=require(`./manifest-browser-form.lazy-DWabAT8J.cjs`);exports.default=e.t;
@@ -1 +0,0 @@
1
- import{t as e}from"./manifest-browser-form.lazy-Bm07wmnB.js";export{e as default};