@manifest-editor/creators 2.0.3-next.0.e92a6d7 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{t as e}from"./manifest-browser-form.lazy-BTnOj81t.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,MediaPlayerProvider as fe,VaultProvider as pe,formatTime as me,useImage 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-CUJKdJ0m.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,MediaPlayerProvider as fe,VaultProvider as pe,formatTime as me,useImage 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-BTnOj81t.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:me(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(Sn,{src:t},t)}):w(`div`,{className:`text-grey-600`,children:`Preview`})}),w(`div`,{children:w(o,{primary:!0,large:!0,type:`submit`,isDisabled:!t,children:`Create`})})]})})}function Sn({src:e}){let t=he({id:e},{size:{width:512}});return t?w(`div`,{className:`h-full`,children:w(`img`,{className:`w-full h-full object-contain`,src:t})}):w(Je,{})}async function Cn(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 wn(e){return w(K,{...e})}const Tn=n({id:`@manifest-editor/image-service-annotation`,create:Cn,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(wn,{...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 En(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 Dn(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 On(e){return w(q,{...e})}const kn=n({id:`@manifest-editor/image-url-annotation`,create:Dn,label:`Image`,dependencies:[`@manifest-editor/image-url-creator`],summary:`Image from URL`,tags:[`image`],icon:w(s,{}),render(e){return w(On,{...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 An(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 jn(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 Mn=n({id:`@manifest-editor/image-url-list-annotation`,create:jn,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`}}),Nn=n({id:`@manifest-editor/no-body-annotation`,create:Pn,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 Pn(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 Fn({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=be({duration:n});return T(fe,{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 In(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 Ln(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(Fn,{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 Rn=n({id:`@manifest-editor/video-annotation`,create:In,label:`Video`,summary:`Video annotation`,icon:w(ne,{}),render(e){return w(Ln,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),zn=()=>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`})]})}),Bn=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(zn,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}}),Vn=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 Hn=!0,Y=`Invariant failed`;function X(e,t){if(!e){if(Hn)throw Error(Y);var n=typeof t==`function`?t():t,r=n?`${Y}: ${n}`:Y;throw Error(r)}}const Un=n({id:`@manifest-editor/internal-canvas`,create:Gn,label:`Internal canvas link`,summary:`Canvas from the same manifest`,icon:w(zn,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>w(Wn,{...e})});function Wn(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(pe,{vault:n,children:w(ke,{vault:n,navigation:r,output:i,history:a})})}async function Gn(e,t){return t.embed({id:e.id,type:`Canvas`})}const Kn=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 qn(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function Jn(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 Yn=n({id:`@manifest-editor/html-body-creator`,create:qn,label:`HTML Body`,summary:`Add HTML annotation body`,icon:w(Kn,{}),render(e){return w(Jn,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],supports:{parentTypes:[`Annotation`],parentFields:[`body`]},staticFields:{type:`TextualBody`,format:`text/html`}});function Xn(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 Zn(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=Xn(e,s.spatial,`max`),l=Xn(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({...r,target:t.getTarget()}))}}}return a}const Z=se(()=>import(`./iiif-browser-form.lazy-B7Lg0pEn.js`)),Qn=n({id:`@manifest-editor/iiif-browser-creator`,create:Zn,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:w(m,{}),render(e){return w(Z,{...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:{}}),$n=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`]}}),er=n({id:`@manifest-editor/image-url-creator`,create:En,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`}}),tr=n({id:`@manifest-editor/image-url-list`,label:`Image URL List`,summary:`Image from a list of URLs`,create:An,icon:w(g,{}),render(e){return w(J,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function nr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function rr(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 ir=n({id:`@manifest-editor/plaintext-creator`,create:nr,label:`Plaintext`,summary:`Add link to an plaintext`,icon:w(Kn,{}),render(e){return w(rr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]},staticFields:{format:`text/plain`}});function ar(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 or(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=ar(n,a);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:a.width,height:a.height})}}return null}function sr(e){let[t,n]=C(``),[r,i]=C(null),[a,s]=C({width:0,height:0}),c=S(()=>!r||!a.width||!a.height?null:ar(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 cr=n({id:`@manifest-editor/thumbnail-image`,create:or,label:`Thumbnail from service`,summary:`Add thumbnail from an image service`,icon:w(te,{}),render(e){return w(sr,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`],supports:{parentFields:[`thumbnail`]}});function lr(){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 ur(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function dr(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 fr=n({id:`@manifest-editor/web-page-creator`,create:ur,label:`Web page`,summary:`Add link to an external web page`,icon:w(lr,{}),render(e){return w(dr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]}}),pr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function $(e){let t=(e||``).match(pr);return t?t[1]:null}function mr(e){return!!$(e.youtubeUrl)}async function hr(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 gr(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 _r=n({id:`@manifest-editor/youtube`,create:hr,label:`YouTube`,summary:`Embed YouTube`,icon:w(re,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],render:e=>w(gr,{...e}),supports:{onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function vr(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 yr=se(()=>import(`./manifest-browser-form.lazy-C6Kbyc7m.js`)),br=n({id:`@manifest-editor/manifest-browser-creator`,create:vr,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 xr(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 Sr(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 Cr=n({id:`@manifest-editor/range-with-items`,create:xr,label:`Range`,summary:`Add a new range`,icon:w(ee,{}),render(e){return w(Sr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});async function wr(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 Tr(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 Er=n({id:`@manifest-editor/range-top-level`,create:wr,label:`Top Level Range`,summary:`Add a new top level range`,icon:w(ee,{}),render(e){return w(Tr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),Dr=[$n,Tn,er,kn,Rn,et,Yn,ot,_r,Qn,Vn,ir,fr,Bn,Nn,Un,rt,tr,Mn,cr,Er,Cr,je];export{$e as CreateAudioAnnotationForm,nt as CreateCaptionedImageAnnotation,at as CreateHTMLAnnotation,Jn as CreateHTMLBodyForm,K as CreateImageServerForm,wn as CreateImageServiceAnnotationForm,On as CreateImageUrlAnnotationForm,q as CreateImageUrlForm,J as CreateImageUrlListForm,rr as CreatePlaintextForm,Ae as CreateProviderForm,sr as CreateThumbnailForm,Ln as CreateVideoAnnotationForm,dr as CreateWebPageForm,Z as IIIFBrowserCreatorForm,yr as ManifestBrowserCreatorForm,Sr as RangeWithItemsCreatorForm,Tr as TopLevelRangeCreatorForm,gr as YouTubeForm,Dr as allCreators,et as audioAnnotation,rt as captionedImageAnnotation,Qe as createAudioAnnotation,tt as createCaptionedImageAnnotation,Zn as createFromIIIFBrowserOutput,vr as createFromManifestBrowserOutput,it as createHtmlAnnotation,qn as createHtmlBody,xn as createImageServer,Cn as createImageServiceAnnotation,En as createImageUrl,Dn as createImageUrlAnnotation,An as createImageUrlList,jn as createImageUrlListAnnotation,Pn as createNoBodyAnnotation,nr as createPlaintext,N as createProvider,wr as createRangeTopLevel,xr as createRangeWithItems,or as createThumbnail,In as createVideoAnnotation,ur as createWebPage,hr as createYoutubeBody,Bn as emptyAnnotationPage,Vn as emptyCanvas,$ as getYouTubeId,ot as htmlAnnotation,Yn as htmlBodyCreator,Qn as iiifBrowserCreator,Tn as imageServiceAnnotation,$n as imageServiceCreator,kn as imageUrlAnnotation,er as imageUrlCreator,Mn as imageUrlListAnnotation,tr as imageUrlListCreator,Un as internalCanvas,br as manifestBrowserCreator,Nn as noBodyAnnotation,ir as plaintextCreator,je as providerCreator,Er as rangeTopLevel,Cr as rangeWithItems,mr as validateYouTube,Rn as videoAnnotation,fr as webPageCreator,_r 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 jn(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 Mn=n({id:`@manifest-editor/image-url-list-annotation`,create:jn,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`}}),Nn=n({id:`@manifest-editor/no-body-annotation`,create:Pn,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 Pn(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 Fn({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=be({duration:n});return T(fe,{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 In(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 Ln(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(Fn,{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 Rn=n({id:`@manifest-editor/video-annotation`,create:In,label:`Video`,summary:`Video annotation`,icon:w(ne,{}),render(e){return w(Ln,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),zn=()=>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`})]})}),Bn=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(zn,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}}),Vn=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 Hn=!0,Y=`Invariant failed`;function X(e,t){if(!e){if(Hn)throw Error(Y);var n=typeof t==`function`?t():t,r=n?`${Y}: ${n}`:Y;throw Error(r)}}const Un=n({id:`@manifest-editor/internal-canvas`,create:Gn,label:`Internal canvas link`,summary:`Canvas from the same manifest`,icon:w(zn,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>w(Wn,{...e})});function Wn(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(pe,{vault:n,children:w(ke,{vault:n,navigation:r,output:i,history:a})})}async function Gn(e,t){return t.embed({id:e.id,type:`Canvas`})}const Kn=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 qn(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function Jn(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 Yn=n({id:`@manifest-editor/html-body-creator`,create:qn,label:`HTML Body`,summary:`Add HTML annotation body`,icon:w(Kn,{}),render(e){return w(Jn,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],supports:{parentTypes:[`Annotation`,`ContentResource`],parentFields:[`body`,`items`],custom(e,t){if(e.resource.type===`Annotation`)return e.property===`body`;let n=t.get(e.resource,{skipSelfReturn:!1});return e.property===`items`&&n?.type===`Choice`}},staticFields:{type:`TextualBody`,format:`text/html`}});function Xn(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 Zn(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`]}),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=Xn(e,s.spatial,`max`),l=Xn(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({...r,target:t.getTarget()}))}}}return a}const Z=se(()=>import(`./iiif-browser-form.lazy-B46fXhwH.js`)),Qn=n({id:`@manifest-editor/iiif-browser-creator`,create:Zn,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:w(m,{}),render(e){return w(Z,{...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:{}}),$n=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}}),tags:[`image`,`image-service`],render(e){return w(K,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`height`,`width`,`format`,`service`],supports:{parentFields:[`logo`,`body`,`thumbnail`,`items`],custom(e,t){return e.property===`items`?e.resource.type===`ContentResource`?t.get(e.resource,{skipSelfReturn:!1})?.type===`Choice`:!1:!0}}}),er=n({id:`@manifest-editor/image-url-creator`,create:En,label:`Image`,summary:`Image from a URL`,icon:w(s,{}),tags:[`image`],render(e){return w(q,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`,`items`],custom(e,t){return e.property===`items`?e.resource.type===`ContentResource`?t.get(e.resource,{skipSelfReturn:!1})?.type===`Choice`:!1:!0}},staticFields:{type:`Image`}}),tr=n({id:`@manifest-editor/image-url-list`,label:`Image URL List`,summary:`Image from a list of URLs`,create:An,icon:w(g,{}),render(e){return w(J,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function nr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function rr(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 ir=n({id:`@manifest-editor/plaintext-creator`,create:nr,label:`Plaintext`,summary:`Add link to an plaintext`,icon:w(Kn,{}),render(e){return w(rr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]},staticFields:{format:`text/plain`}});function ar(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 or(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=ar(n,a);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:a.width,height:a.height})}}return null}function sr(e){let[t,n]=C(``),[r,i]=C(null),[a,s]=C({width:0,height:0}),c=S(()=>!r||!a.width||!a.height?null:ar(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 cr=n({id:`@manifest-editor/thumbnail-image`,create:or,label:`Thumbnail from service`,summary:`Add thumbnail from an image service`,icon:w(te,{}),render(e){return w(sr,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`],supports:{parentFields:[`thumbnail`]}});function lr(){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 ur(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function dr(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 fr=n({id:`@manifest-editor/web-page-creator`,create:ur,label:`Web page`,summary:`Add link to an external web page`,icon:w(lr,{}),render(e){return w(dr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]}}),pr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function $(e){let t=(e||``).match(pr);return t?t[1]:null}function mr(e){return!!$(e.youtubeUrl)}async function hr(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 gr(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 _r=n({id:`@manifest-editor/youtube`,create:hr,label:`YouTube`,summary:`Embed YouTube`,icon:w(re,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],render:e=>w(gr,{...e}),supports:{onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function vr(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 yr=se(()=>import(`./manifest-browser-form.lazy-Den0Cg8B.js`)),br=n({id:`@manifest-editor/manifest-browser-creator`,create:vr,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 xr(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 Sr(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 Cr=n({id:`@manifest-editor/range-with-items`,create:xr,label:`Range`,summary:`Add a new range`,icon:w(ee,{}),render(e){return w(Sr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});async function wr(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 Tr(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 Er=n({id:`@manifest-editor/range-top-level`,create:wr,label:`Top Level Range`,summary:`Add a new top level range`,icon:w(ee,{}),render(e){return w(Tr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),Dr=[$n,Tn,er,kn,Rn,et,Yn,ot,_r,Qn,Vn,ir,fr,Bn,Nn,Un,rt,tr,Mn,cr,Er,Cr,je];export{$e as CreateAudioAnnotationForm,nt as CreateCaptionedImageAnnotation,at as CreateHTMLAnnotation,Jn as CreateHTMLBodyForm,K as CreateImageServerForm,wn as CreateImageServiceAnnotationForm,On as CreateImageUrlAnnotationForm,q as CreateImageUrlForm,J as CreateImageUrlListForm,rr as CreatePlaintextForm,Ae as CreateProviderForm,sr as CreateThumbnailForm,Ln as CreateVideoAnnotationForm,dr as CreateWebPageForm,Z as IIIFBrowserCreatorForm,yr as ManifestBrowserCreatorForm,Sr as RangeWithItemsCreatorForm,Tr as TopLevelRangeCreatorForm,gr as YouTubeForm,Dr as allCreators,et as audioAnnotation,rt as captionedImageAnnotation,Qe as createAudioAnnotation,tt as createCaptionedImageAnnotation,Zn as createFromIIIFBrowserOutput,vr as createFromManifestBrowserOutput,it as createHtmlAnnotation,qn as createHtmlBody,xn as createImageServer,Cn as createImageServiceAnnotation,En as createImageUrl,Dn as createImageUrlAnnotation,An as createImageUrlList,jn as createImageUrlListAnnotation,Pn as createNoBodyAnnotation,nr as createPlaintext,N as createProvider,wr as createRangeTopLevel,xr as createRangeWithItems,or as createThumbnail,In as createVideoAnnotation,ur as createWebPage,hr as createYoutubeBody,Bn as emptyAnnotationPage,Vn as emptyCanvas,$ as getYouTubeId,ot as htmlAnnotation,Yn as htmlBodyCreator,Qn as iiifBrowserCreator,Tn as imageServiceAnnotation,$n as imageServiceCreator,kn as imageUrlAnnotation,er as imageUrlCreator,Mn as imageUrlListAnnotation,tr as imageUrlListCreator,Un as internalCanvas,br as manifestBrowserCreator,Nn as noBodyAnnotation,ir as plaintextCreator,je as providerCreator,Er as rangeTopLevel,Cr as rangeWithItems,mr as validateYouTube,Rn as videoAnnotation,fr as webPageCreator,_r as youTubeBodyCreator};
98
98
  //# sourceMappingURL=index.js.map