@manifest-editor/creators 2.2.1 → 2.2.2-next.0.1a22558

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,9 +1,9 @@
1
- import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as n,defineCreator as r}from"@manifest-editor/creator-api";import{Vault as i,createThumbnailHelper as a,getValue as o}from"@iiif/helpers";import{ActionButton as s,AddImageIcon as c,AudioIcon as l,EmptyCanvasIcon as u,ErrorMessage as d,Form as f,HTMLEditor as p,HTMLIcon as m,IIIFBrowserIcon as h,IIIFLogo as g,ImageListIcon as _,PaddedSidebarContainer as v,RangesIcon as y,ScaledImageIcon as b,VideoIcon as ee,YouTubeIcon as te}from"@manifest-editor/components";import{DimensionsTriplet as ne,FormFieldWrapper as re,Input as x,InputContainer as S,InputLabel as C,LanguageFieldEditor as w,centerRectangles as ie}from"@manifest-editor/editors";import{lazy as ae,useEffect as oe,useLayoutEffect as se,useMemo as T,useState as E}from"react";import{Fragment as ce,jsx as D,jsxs as O}from"react/jsx-runtime";import{isSupportedDigitalCollectionPage as le}from"iiif-browser/digital-collections";import{CanvasPanel as ue,MediaPlayerProvider as de,VaultProvider as fe,formatTime as pe,useImage as me,useManifest as he,useMediaActions as ge,useMediaElements as _e,useMediaState as ve,useSimpleMediaPlayer as ye,useVault as be}from"react-iiif-vault";import k,{css as xe}from"styled-components";import{PreviewVaultBoundary as Se,getFormat as Ce,getImageDimensions as we,useAnnotationCreatorState as Te,useConfig as Ee,usePreviewVault as De}from"@manifest-editor/shell";import{canonicalServiceUrl as Oe,createImageServiceRequest as ke,getImageServices as Ae,imageServiceRequestToString as A,isImageService as je,parseImageServiceRequest as Me}from"@iiif/parser/image-3";import{EditorInstance as Ne}from"@manifest-editor/editor-api";import{ErrorBoundary as Pe}from"react-error-boundary";import{IIIFBrowser as Fe}from"iiif-browser";var Ie=Object.defineProperty,Le=(e,t)=>{let n={};for(var r in e)Ie(n,r,{get:e[r],enumerable:!0});return t||Ie(n,Symbol.toStringTag,{value:`Module`}),n};async function Re(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:o(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 ze(e){let t=e.options.initialData,[n,r]=E(t.url||``),[i,a]=E(t.label||{en:[``]}),[o,c]=E(t.homepage||``),[l,u]=E(t.logo||``),[d,f]=E(t.homepageLabel||{en:[``]});return D(v,{children:O(`div`,{className:`max-w-xl`,children:[D(w,{containerId:`label`,focusId:`label_`,label:`Label`,fields:i,onSave:e=>a(e.toInternationalString())}),O(S,{$fluid:!0,children:[D(C,{htmlFor:`provider-logo`,children:`Logo`}),D(x,{placeholder:`https://example.org/logo.png`,type:`text`,id:`provider-logo`,value:l,onChange:e=>u(e.target.value)})]}),O(S,{$fluid:!0,children:[D(C,{htmlFor:`provider-homepage`,children:`Homepage`}),D(x,{placeholder:`https://example.org/homepage`,type:`text`,id:`provider-homepage`,value:o,onChange:e=>c(e.target.value)})]}),o?D(`div`,{children:D(w,{containerId:`homepageLabel`,focusId:`homepageLabel_`,label:`Homepage label`,fields:d,onSave:e=>f(e.toInternationalString())})}):null,O(S,{$fluid:!0,children:[D(C,{$margin:!1,htmlFor:`provider-url`,children:`Provider ID`}),D(`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`}),D(x,{placeholder:`https://id.loc.gov/authorities/abc123`,type:`text`,id:`provider-url`,value:n,onChange:e=>r(e.target.value)})]}),D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,label:i,homepage:o,homepageLabel:d,logo:l})},children:`Add provider`})]})})}const Be=r({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:Re,render(e){return D(ze,{...e})}});function j(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}async function M(e,t){if(!j(e))return null;try{return await t.json(e)}catch{return null}}function Ve(e){let t=e?.type||e?.[`@type`];return t===`sc:Manifest`?`Manifest`:t===`sc:Collection`?`Collection`:t}function He(e){let t=Ve(e);return e?.protocol===`http://iiif.io/api/image`||t===`ImageService`||typeof t==`string`&&t.startsWith(`ImageService`)}async function Ue(e){return j(e)&&await le(e)}async function N(e,t){try{return await t.contentType(e)}catch{return``}}function P(e,t){let n=new URL(e).pathname.toLowerCase();return t.some(e=>n.endsWith(e))}const We=e=>O(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?D(`title`,{children:e.title}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`path`,{d:`M8 5v14l11-7z`,fill:`currentColor`})]}),Ge=e=>O(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?D(`title`,{children:e.title}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`path`,{fill:`currentColor`,d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`})]}),Ke=({title:e,...t})=>O(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?D(`title`,{children:e}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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`})]}),qe=({title:e,...t})=>O(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?D(`title`,{children:e}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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`})]}),Je=({title:e,...t})=>O(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?D(`title`,{children:e}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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`})]}),Ye=k.div`
1
+ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as n,defineCreator as r}from"@manifest-editor/creator-api";import{Vault as i,createThumbnailHelper as a,getValue as o}from"@iiif/helpers";import{ActionButton as s,AddImageIcon as c,AudioIcon as l,EmptyCanvasIcon as u,ErrorMessage as d,Form as f,HTMLEditor as p,HTMLIcon as m,IIIFBrowserIcon as h,IIIFLogo as g,ImageListIcon as _,PaddedSidebarContainer as v,RangesIcon as y,ScaledImageIcon as b,VideoIcon as ee,YouTubeIcon as te}from"@manifest-editor/components";import{DimensionsTriplet as ne,FormFieldWrapper as re,Input as x,InputContainer as S,InputLabel as C,LanguageFieldEditor as w,centerRectangles as ie}from"@manifest-editor/editors";import{lazy as ae,useEffect as oe,useLayoutEffect as se,useMemo as T,useState as E}from"react";import{Fragment as ce,jsx as D,jsxs as O}from"react/jsx-runtime";import{isSupportedDigitalCollectionPage as le}from"iiif-browser/digital-collections";import{CanvasPanel as ue,MediaPlayerProvider as de,VaultProvider as fe,formatTime as pe,useImage as me,useManifest as he,useMediaActions as ge,useMediaElements as _e,useMediaState as ve,useSimpleMediaPlayer as ye,useVault as be}from"react-iiif-vault";import k,{css as xe}from"styled-components";import{PreviewVaultBoundary as Se,getFormat as Ce,getImageDimensions as we,useAnnotationCreatorState as Te,useConfig as Ee,usePreviewVault as De}from"@manifest-editor/shell";import{canonicalServiceUrl as Oe,createImageServiceRequest as ke,getImageServices as Ae,imageServiceRequestToString as A,isImageService as je,parseImageServiceRequest as Me}from"@iiif/parser/image-3";import{EditorInstance as Ne,canvasHasAv as Pe}from"@manifest-editor/editor-api";import{ErrorBoundary as Fe}from"react-error-boundary";import{IIIFBrowser as Ie}from"iiif-browser";var Le=Object.defineProperty,Re=(e,t)=>{let n={};for(var r in e)Le(n,r,{get:e[r],enumerable:!0});return t||Le(n,Symbol.toStringTag,{value:`Module`}),n};async function ze(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:o(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 Be(e){let t=e.options.initialData,[n,r]=E(t.url||``),[i,a]=E(t.label||{en:[``]}),[o,c]=E(t.homepage||``),[l,u]=E(t.logo||``),[d,f]=E(t.homepageLabel||{en:[``]});return D(v,{children:O(`div`,{className:`max-w-xl`,children:[D(w,{containerId:`label`,focusId:`label_`,label:`Label`,fields:i,onSave:e=>a(e.toInternationalString())}),O(S,{$fluid:!0,children:[D(C,{htmlFor:`provider-logo`,children:`Logo`}),D(x,{placeholder:`https://example.org/logo.png`,type:`text`,id:`provider-logo`,value:l,onChange:e=>u(e.target.value)})]}),O(S,{$fluid:!0,children:[D(C,{htmlFor:`provider-homepage`,children:`Homepage`}),D(x,{placeholder:`https://example.org/homepage`,type:`text`,id:`provider-homepage`,value:o,onChange:e=>c(e.target.value)})]}),o?D(`div`,{children:D(w,{containerId:`homepageLabel`,focusId:`homepageLabel_`,label:`Homepage label`,fields:d,onSave:e=>f(e.toInternationalString())})}):null,O(S,{$fluid:!0,children:[D(C,{$margin:!1,htmlFor:`provider-url`,children:`Provider ID`}),D(`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`}),D(x,{placeholder:`https://id.loc.gov/authorities/abc123`,type:`text`,id:`provider-url`,value:n,onChange:e=>r(e.target.value)})]}),D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,label:i,homepage:o,homepageLabel:d,logo:l})},children:`Add provider`})]})})}const Ve=r({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:ze,render(e){return D(Be,{...e})}});function j(e){try{let t=new URL(e);return t.protocol===`http:`||t.protocol===`https:`}catch{return!1}}async function M(e,t){if(!j(e))return null;try{return await t.json(e)}catch{return null}}function He(e){let t=e?.type||e?.[`@type`];return t===`sc:Manifest`?`Manifest`:t===`sc:Collection`?`Collection`:t}function Ue(e){let t=He(e);return e?.protocol===`http://iiif.io/api/image`||t===`ImageService`||typeof t==`string`&&t.startsWith(`ImageService`)}async function We(e){return j(e)&&await le(e)}async function N(e,t){try{return await t.contentType(e)}catch{return``}}function P(e,t){let n=new URL(e).pathname.toLowerCase();return t.some(e=>n.endsWith(e))}const Ge=e=>O(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?D(`title`,{children:e.title}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`path`,{d:`M8 5v14l11-7z`,fill:`currentColor`})]}),Ke=e=>O(`svg`,{...e,viewBox:`4 4 16 16`,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,children:[e.title?D(`title`,{children:e.title}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`path`,{fill:`currentColor`,d:`M6 19h4V5H6v14zm8-14v14h4V5h-4z`})]}),qe=({title:e,...t})=>O(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?D(`title`,{children:e}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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`})]}),Je=({title:e,...t})=>O(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?D(`title`,{children:e}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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`})]}),Ye=({title:e,...t})=>O(`svg`,{...t,xmlns:`http://www.w3.org/2000/svg`,height:`1em`,width:`1em`,viewBox:`2 2 20 20`,children:[e?D(`title`,{children:e}):null,D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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`})]}),Xe=k.div`
2
2
  background: #ededed; // Not in variable.
3
3
  display: flex;
4
4
  padding: 0.5em;
5
5
  align-items: center;
6
- `,Xe=k.button`
6
+ `,Ze=k.button`
7
7
  cursor: pointer;
8
8
  padding: 0.75em 1.5em;
9
9
  font-size: 0.938em;
@@ -14,7 +14,7 @@ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as
14
14
  display: inline-block;
15
15
  vertical-align: top;
16
16
  white-space: nowrap;
17
- `,Ze=k(Xe)`
17
+ `,Qe=k(Ze)`
18
18
  width: 2em;
19
19
  height: 2em;
20
20
  overflow: hidden;
@@ -28,17 +28,17 @@ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as
28
28
  &:disabled {
29
29
  color: #999;
30
30
  }
31
- `,Qe=k.div`
31
+ `,$e=k.div`
32
32
  margin: 0 1em;
33
33
  font-size: 0.85em;
34
34
  color: #000;
35
- `,$e=k.div`
35
+ `,et=k.div`
36
36
  flex: 1 1 0px;
37
37
  height: 6px;
38
38
  display: flex;
39
39
  position: relative;
40
40
  padding: 15px 0;
41
- `,et=k.div`
41
+ `,tt=k.div`
42
42
  background: #d85680;
43
43
  height: 6px;
44
44
  pointer-events: none;
@@ -47,7 +47,7 @@ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as
47
47
  left: 0;
48
48
  border-radius: 3px;
49
49
  transition: width 200ms;
50
- `,tt=k.div`
50
+ `,nt=k.div`
51
51
  position: absolute;
52
52
  top: 13px;
53
53
  left: 0;
@@ -56,7 +56,7 @@ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as
56
56
  width: 100%;
57
57
  pointer-events: none;
58
58
  background: #fff;
59
- `,nt=k(Xe)`
59
+ `,rt=k(Ze)`
60
60
  width: 2em;
61
61
  height: 2em;
62
62
  overflow: hidden;
@@ -65,10 +65,10 @@ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as
65
65
  border-radius: 3px;
66
66
  padding: 0;
67
67
  margin: 0;
68
- `,rt=k.div`
68
+ `,it=k.div`
69
69
  display: flex;
70
70
  align-items: center;
71
- `,it=k.div`
71
+ `,at=k.div`
72
72
  width: 0;
73
73
  overflow: hidden;
74
74
  transition: width 500ms;
@@ -77,10 +77,10 @@ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as
77
77
  ${e=>e.$isOpen&&xe`
78
78
  width: 150px;
79
79
  `}
80
- `,at=k.input.attrs({type:`range`})`
80
+ `,ot=k.input.attrs({type:`range`})`
81
81
  width: 120px;
82
82
  margin: 0 15px;
83
- `;function ot(e){return D(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 42 42`,xmlns:`http://www.w3.org/2000/svg`,stroke:`currentColor`,...e,children:O(`g`,{transform:`translate(2 2)`,strokeWidth:5,fill:`none`,fillRule:`evenodd`,children:[D(`circle`,{strokeOpacity:.5,cx:18,cy:18,r:18}),D(`path`,{d:`M36 18c0-9.94-8.06-18-18-18`,children:D(`animateTransform`,{attributeName:`transform`,type:`rotate`,from:`0 18 18`,to:`360 18 18`,dur:`1s`,repeatCount:`indefinite`})})]})})}const st=xe`
83
+ `;function st(e){return D(`svg`,{width:`1em`,height:`1em`,viewBox:`0 0 42 42`,xmlns:`http://www.w3.org/2000/svg`,stroke:`currentColor`,...e,children:O(`g`,{transform:`translate(2 2)`,strokeWidth:5,fill:`none`,fillRule:`evenodd`,children:[D(`circle`,{strokeOpacity:.5,cx:18,cy:18,r:18}),D(`path`,{d:`M36 18c0-9.94-8.06-18-18-18`,children:D(`animateTransform`,{attributeName:`transform`,type:`rotate`,from:`0 18 18`,to:`360 18 18`,dur:`1s`,repeatCount:`indefinite`})})]})})}const ct=xe`
84
84
  clip: rect(1px, 1px, 1px, 1px);
85
85
  clip-path: inset(50%);
86
86
  height: 1px;
@@ -89,10 +89,10 @@ import{n as e,t}from"./iiif-browser-output-DSDX-M6m.js";import{creatorHelper as
89
89
  overflow: hidden;
90
90
  padding: 0;
91
91
  position: absolute;
92
- `,ct=k.label`
93
- ${st}
94
- `;function lt(e){let[t,n]=E(!1),{progress:r,currentTime:i,element:a}=_e(),{duration:o,isMuted:s,volume:c,isPlaying:l,playRequested:u}=ve(),{setVolume:d,toggleMute:f,play:p,pause:m,setDurationPercent:h}=ge(),g=s||c===0?Je:c>50?Ke:qe;return se(()=>{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)}}},[]),O(Ye,{children:[D(Ze,{disabled:u,onClick:()=>{l?m():p()},children:u?D(ot,{stroke:`#999`}):l?D(Ge,{title:`Pause`}):D(We,{title:`Play`})}),D(Qe,{ref:i,children:`0:00`}),O($e,{onClick:e=>{let{left:t,width:n}=e.currentTarget.getBoundingClientRect(),r=(e.pageX-t)/n;h(r)},children:[D(tt,{}),o?D(et,{ref:r}):null]}),D(Qe,{children:pe(o)}),O(rt,{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[D(it,{$isOpen:t,children:O(`span`,{children:[D(ct,{htmlFor:`audio-slider`,children:`Change volume`}),D(at,{id:`audio-slider`,role:`slider`,disabled:s,min:`0`,max:`100`,value:c,onChange:e=>d(Number(e.currentTarget.value))})]})}),D(nt,{onClick:()=>f(),children:D(g,{title:s?`Mute`:`Unmute`})})]})]})}async function ut(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:o(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 dt(e){let t=e.options.initialData,[n,r]=E(t.url||``),[i,a]=E(0),[o,c]=E(``),[l,u]=E({en:[``]});return oe(()=>{if(c(``),a(0),n){let e=n.split(`/`).pop()?.split(`.`).shift();u({en:[e||``]})}},[n]),O(v,{children:[o?D(d,{children:o}):null,O(S,{$wide:!0,children:[D(C,{htmlFor:`audio-url`,children:`URL`}),D(x,{type:`text`,id:`audio-url`,value:n,onChange:e=>r(e.target.value)})]}),n&&!o?D(`div`,{children:D(w,{containerId:`label`,focusId:`label_`,label:`Label`,fields:l,onSave:e=>u(e.toInternationalString())},`${n}__${i}`)}):null,n&&!o?D(ue.AudioHTML,{media:{url:n,duration:i,type:`Sound`},children:D(lt,{onError:e=>c(e),onDuration:e=>a(~~e)},`${n}__${i}`)},`${n}__${i}`):null,i&&!o?O(re,{children:[D(C,{htmlFor:`duration`,children:`Duration`}),D(x,{type:`number`,id:`duration`,value:i,onChange:e=>a(e.target.valueAsNumber)})]}):null,D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,duration:i,label:l})},isDisabled:!n||!!o,children:`Add audio`})]})}const ft=r({id:`@manifest-editor/audio-annotation`,create:ut,label:`Audio`,summary:`Audio annotation`,icon:D(l,{}),render(e){return D(dt,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return j(e)&&((await N(e,t)).startsWith(`audio/`)||P(e,[`.mp3`,`.m4a`,`.wav`,`.ogg`]))?{initialData:{url:e}}:!1},supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}});async function pt(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
- `);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 mt(e){let[t,n]=Te({key:`bodyValue`,initialValue:{en:[``]},requestId:e.options.initialData?.requestId});return D(`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:O(ce,{children:[O(S,{$wide:!0,children:[D(C,{htmlFor:`url`,children:`URL to Image`}),D(x,{id:`url`,name:`url`,defaultValue:``,placeholder:`https://example.org/image.jpg`})]}),O(S,{$wide:!0,children:[D(C,{htmlFor:`caption`,children:`Caption`}),D(x,{id:`caption`,name:`caption`,placeholder:`Enter a caption`,onChange:e=>n({en:[e.target.value]}),value:t.en?.[0]||``})]}),D(s,{primary:!0,type:`submit`,children:`Create`})]})})}const ht=r({id:`@manifest-editor/captioned-image-annotation`,create:pt,label:`Captioned image`,summary:`Add an image from a URL with caption`,icon:D(c,{}),render(e){return D(mt,{...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 gt(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
- `);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 _t(e){let[t,n]=Te({key:`bodyValue`,initialValue:{en:[``]},requestId:e.options.initialData?.requestId}),r=o(t).trim()===``;return O(ce,{children:[D(p,{className:`border-none`,value:t.en?.[0]||``,onChange:e=>n({en:[e]})}),D(s,{primary:!0,type:`button`,onPress:()=>{e.runCreate({body:t})},isDisabled:r,children:`Create`})]})}const vt=r({id:`@manifest-editor/html-annotation`,create:gt,label:`HTML`,summary:`HTML annotation`,icon:D(m,{}),render(e){return D(_t,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),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)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=>je(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 Ne({vault:t,reference:e}),p=ie(a,{width:u,height:d},.6);f.annotation.target.setPosition(p)}}},I={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 Ne({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 yt=Object.defineProperty,bt=(e,t,n)=>t in e?yt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,L=(e,t,n)=>(bt(e,typeof t==`symbol`?t:t+``,n),n);function R(e){return e.endsWith(`info.json`)?e:e.endsWith(`/`)?`${e}info.json`:`${e}/info.json`}var xt=`http://library.stanford.edu/iiif/image-api/compliance.html#level0`,St=`http://library.stanford.edu/iiif/image-api/compliance.html#level1`,Ct=`http://library.stanford.edu/iiif/image-api/compliance.html#level2`,wt=`http://library.stanford.edu/iiif/image-api/conformance.html#level0`,Tt=`http://library.stanford.edu/iiif/image-api/conformance.html#level1`,Et=`http://library.stanford.edu/iiif/image-api/conformance.html#level2`,Dt=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0`,Ot=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1`,kt=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2`,At=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0`,jt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1`,Mt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2`,Nt=`http://iiif.io/api/image/1/level0.json`,Pt=`http://iiif.io/api/image/1/profiles/level0.json`,Ft=`http://iiif.io/api/image/1/level1.json`,It=`http://iiif.io/api/image/1/profiles/level1.json`,Lt=`http://iiif.io/api/image/1/level2.json`,Rt=`http://iiif.io/api/image/1/profiles/level2.json`,zt=`http://iiif.io/api/image/2/level0.json`,Bt=`http://iiif.io/api/image/2/profiles/level0.json`,Vt=`http://iiif.io/api/image/2/level1.json`,Ht=`http://iiif.io/api/image/2/profiles/level1.json`,Ut=`http://iiif.io/api/image/2/level2.json`,Wt=`http://iiif.io/api/image/2/profiles/level2.json`,Gt=`level0`,Kt=`level1`,qt=`level2`,Jt=`http://iiif.io/api/image/2/level0`,Yt=`http://iiif.io/api/image/2/level1`,Xt=`http://iiif.io/api/image/2/level2`,Zt=[Xt,Ct,Et,kt,Mt,Lt,Rt,Ut,Wt,qt],Qt=[...Zt,Yt,St,Tt,Ot,jt,Ft,It,Vt,Ht,Kt],$t=[Jt,Yt,Xt,xt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Pt,Ft,It,Lt,Rt,zt,Bt,Vt,Ht,Ut,Wt,Gt,Kt,qt],en={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`sizeByWhListed`]},tn={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPx`,`regionSquare`,`sizeByWhListed`,`sizeByH`,`sizeByW`,`sizeByWh`]},nn={extraFormats:[`jpg`,`png`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPct`,`regionByPx`,`regionSquare`,`rotationBy90s`,`sizeByWhListed`,`sizeByConfinedWh`,`sizeByH`,`sizeByPct`,`sizeByW`,`sizeByWh`]};function rn(e){return Zt.indexOf(e)===-1?Qt.indexOf(e)===-1?en:tn:nn}function an(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=rn(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 on(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 sn(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 cn(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 ln(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 un(e,t=``){let{path:n,scheme:r,server:i,prefix:a}=ln(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:on(u),size:sn(l),rotation:cn(c),quality:p[0],format:p[1]}}function dn(e){let t=un(R(e.id));if(t.type!==`info`)throw Error(`Invalid service URL`);let n=an(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 fn(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 pn(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 z(e){if(e[`@id`])return e[`@id`];if(e.id)return e.id}function B(e){if(!e||!e.profile||!z(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`&&$t.indexOf(e)!==-1)return!0;return!1}function mn(e){if(!B(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`){if(Qt.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 V(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 H(e){return B(e)?V(0,e)?0:V(1,e)?1:V(2,e)?2:null:null}function hn(e){return(e[`@context`]?Array.isArray(e[`@context`])?e[`@context`]:[e[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1}function gn(e){if(!mn(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:z(e),type:`variable`,minWidth:0,minHeight:0,maxHeight:r.maxHeight||r.maxWidth,maxWidth:r.maxWidth||r.maxHeight,level:H(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:z(e),type:`variable`,minHeight:0,minWidth:0,maxHeight:n.height||n.width,maxWidth:n.width,level:H(e),version:hn(e)?3:2})}}return t}function _n(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 vn(e){if(e[`@type`])return e[`@type`];if(e.type)return e.type}function yn(e){if(typeof e==`string`)return _n(e);let t=vn(e);if(t!==`Image`&&t!==`sc:Image`)return null;let n=e,r=z(n);return r?r&&n.width&&n.height?{id:r,type:`fixed`,width:n.width,height:n.height,unsafe:!0}:_n(r):null}function bn(e){return B(e)?(e&&e.sizes?e.sizes:[]).map(t=>({id:z(e),type:`fixed-service`,height:t.height,width:t.width,level:H(e),version:hn(e)?3:2})):[]}function xn(e){let t=[],n=e.length;for(let r=0;r<n;r++){let n=e[r];if(!n)continue;let i=bn(n);i.length&&t.push(...i);let a=gn(n);a.length&&t.push(...a)}return t}function Sn(e){let t=e.service?Array.isArray(e.service)?e.service:[e.service]:[],n=t.length,r=[];for(let e=0;e<n;e++)B(t[e])&&r.push(t[e]);return r}function Cn(e,t=!0,n){let r=[],i=yn(e);if(i===null)return r;let a=e;if(r.push(i),t&&a&&a.width&&a.height){let e=[],t=Sn(a);for(let r of t){let t={id:z(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(...xn([r])))}}if(e.length)return r.push(...e),r}return a.service&&r.push(...xn(a.service)),r}function wn({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 Tn({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 En(e){return`${e.mirror?`!`:``}${(e.angle||0)%360}`}function Dn(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,wn(a),Tn(i),En(o),`${c}.${s}`].filter(Boolean).join(`/`)}function U(e,t,n){let r=dn({"@context":e.version===3?`http://iiif.io/api/image/3/context.json`:`http://iiif.io/api/image/2/context.json`,id:R(z(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:Dn(r),type:`fixed`,width:t,height:n||e.height/(e.width||1)*t,unsafe:e.width>t}}function W(e){let t=e.replace(/(https?:\/\/)?(www.)?/i,``);return t.indexOf(`/`)===-1?t:t.split(`/`)[0]}function On(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 kn(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),On(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(U(t,r.width,r.height),s)):(i(()=>`Checking for an image from the tile source 3`,2),c(U(t,t.width,t.height),s))),t.type===`variable`&&t.maxWidth&&c(U({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 An(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 jn(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 Mn(e){return V(0,e)}new class{constructor(e={}){L(this,`config`,{verificationsRequired:1,approximateServices:!1,enableFetching:!0,disableThrottling:!1}),L(this,`fetchingCount`,0),L(this,`imageServices`,{}),L(this,`knownImageServers`,{}),this.config=Object.assign(this.config,e)}setConfig(e){Object.assign(this.config,e)}sample(e,t,n=!0){let r=W(z(e)),i=R(z(e)),a=this.knownImageServers[r];return this.imageServices[i]=Object.assign(e,{real:!0}),!a&&e.tiles&&!Mn(e)?(this.knownImageServers[r]={verifications:0,malformed:!1,root:r,preLoaded:n,sampledId:z(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:fn(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=W(z(e)),a=this.knownImageServers[i],o=R(z(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)||Mn(e.source)?null:(this.imageServices[o]||(this.imageServices[o]={"@context":a.result.context,"@id":z(e),id:z(e),protocol:`http://iiif.io/api/image`,tiles:r?.tiles||An(e.width,e.height,a.result.sampledTiles),sizes:r?.sizes||pn(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 kn(t,[()=>r,()=>i])}async getImageCandidates(e,t=!0){let n=e;if(t&&n&&n.height&&n.width){let e=Sn(n);for(let t of e){let e={id:z(t),width:t.width?t.width:n.width,height:t.height?t.height:n.height,source:t};await this.loadService(e)}}return Cn(e,t,this)}async verify(e){let t=this.predict(e,!1,!0),n=await this.fetchService(z(e));if(!t)return!1;let r=t.height===n.height&&t.width===n.width&&t[`@context`]===n[`@context`]&&jn(t.sizes||[],n.sizes||[]);if(r){let t=W(z(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:z(e),n=R(t);if(this.imageServices[n])return!0;let r=this.knownImageServers[W(t)];return!!(r&&!r.malformed&&r.verifications>=this.config.verificationsRequired)}async markAsMalformed(e){return this.knownImageServers[W(z(e))].malformed=!0,this.loadService(e,!0)}async fetchService(e,t=!1){let n=R(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[W(z(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(z(e),t);return this.fetchingCount--,r.real&&this.sample(r,e),r}loadServiceSync(e){let t=R(z(e));return this.imageServices[t]?this.imageServices[t]:this.config.approximateServices?this.predict(e):null}};const G={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=>B(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))}}};function K(e){let{"@id":t,"@type":n,...r}=e,i=`${e[`@context`]||``} ${e.profile||``}`.match(/\/(?:image|image-api)\/([123])(?:[./])/);return{...r,id:e.id||t,type:e.type||n||`ImageService${i?.[1]||`2`}`}}function Nn(e,t={},n=!1){let r=[];t.compact!==`compact`&&r.push(`width`,`height`),(n||t.includeSizes===!0)&&r.push(`sizes`),(n||t.includeTiles===!0)&&r.push(`tiles`);let i=K(e);return{id:i.id,type:i.type,profile:i.profile,...Object.fromEntries(r.filter(e=>i[e]!==void 0).map(e=>[e,i[e]]))}}async function Pn(e,t){let n=K(e.service),r=ke(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:[Nn(n,t.config,t.options.parent?.property===`thumbnail`)]})}function q(e){return e.endsWith(`default.jpg`)?A({...Me(e),type:`info`}):Oe(e)}function J(e){let t=e.options.initialData,n=t.url?q(t.url):``,[r,i]=E(n||``);return D(v,{children:O(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries()),i=r.url;if(i){let t=q(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:[D(`div`,{className:`flex gap-2 items-center`,children:O(S,{$wide:!0,children:[D(C,{htmlFor:`url`,children:`Link to image service`}),D(x,{id:`url`,name:`url`,defaultValue:t.url||``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);i(t?q(t):``)},onBlur:e=>i(e.currentTarget.value?q(e.currentTarget.value):``)})]})}),D(`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:r.trim()?D(Pe,{fallbackRender:()=>D(`div`,{children:`Invalid service`}),children:D(Fn,{src:r},r)}):D(`div`,{className:`text-grey-600`,children:`Preview`})}),D(`div`,{children:D(s,{primary:!0,large:!0,type:`submit`,isDisabled:!r,children:`Create`})})]})})}function Fn({src:e}){let t=me({id:e},{size:{width:512}});return t?D(`div`,{className:`h-full`,children:D(`img`,{className:`w-full h-full object-contain`,src:t})}):D(ot,{})}async function In(e,t){let r={id:t.generateId(`annotation`),type:`Annotation`},i=t.options.targetType,a=await n(t,`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:t.getTarget()};if(i===`Canvas`){let i=t.generateId(`canvas`),o=t.generateId(`annotation-page`,{id:i,type:`Canvas`}),s=t.embed({...r,motivation:`painting`,body:[a],target:{type:`SpecificResource`,source:{id:i,type:`Canvas`}}}),c=t.embed({id:o,type:`AnnotationPage`,items:[s]}),l;return e.service?.sizes&&(l=await n(t,`Canvas`,`thumbnail`,`@manifest-editor/thumbnail-image`)({service:e.service,width:e.thumbnailSize||400})),t.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 Ln(e){return D(J,{...e})}const Y=r({id:`@manifest-editor/image-service-creator`,configKey:`iiif-image-services`,create:Pn,label:`Image Service`,summary:`Add an image from Image Service`,icon:D(g,{style:{padding:10}}),tags:[`image`,`image-service`],async supportsResource(e,t){if(!j(e))return!1;let n=q(e);if(!n)return!1;let r=await M(n,t);return He(r)?{initialData:{url:e,service:r}}:!1},render(e){return D(J,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`height`,`width`,`format`,`service`],supports:{initialData:!0,parentFields:[`logo`,`body`,`thumbnail`,`items`],custom(e,t){return e.property!==`items`||e.resource.type===`ContentResource`&&t.get(e.resource,{skipSelfReturn:!1})?.type===`Choice`}}}),Rn=r({id:`@manifest-editor/image-service-annotation`,create:In,label:`IIIF Image`,dependencies:[`@manifest-editor/image-service-creator`],summary:`IIIF Image service`,tags:[`image`,`image-service`],icon:D(g,{style:{padding:10}}),render(e){return D(Ln,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:Y.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[G,I,F],staticFields:{type:`Annotation`}});async function zn(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 X(e){let t=e.options.initialData;return D(v,{children:O(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.url&&e.runCreate({url:r.url})},children:[O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link to Image`}),D(x,{id:`url`,name:`url`,defaultValue:t.url||``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function Bn(e,t){let r={id:t.generateId(`annotation`),type:`Annotation`},i=t.options.targetType,a=await n(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`)(e,{parent:{resource:r,property:`body`}});if(i===`Annotation`)return t.embed({...r,body:[a],motivation:e.motivation||`painting`,target:t.getTarget()});if(i===`Canvas`){let n=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:n,type:`Canvas`}),o=t.embed({...r,motivation:`painting`,body:[a],target:{type:`SpecificResource`,source:{id:n,type:`Canvas`}}}),s=t.embed({id:i,type:`AnnotationPage`,items:[o]});return t.embed({id:n,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 Vn(e){return D(X,{...e})}const Hn=r({id:`@manifest-editor/image-url-creator`,create:zn,label:`Image`,summary:`Image from a URL`,icon:D(c,{}),tags:[`image`],async supportsResource(e,t){if(!j(e))return!1;let n=q(e);if(n)try{if(He(await t.json(n)))return!1}catch{}let r=await N(e,t);return r.startsWith(`image/`)||P(e,[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`])?{initialData:{url:e,format:r||void 0}}:!1},render(e){return D(X,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{initialData:!0,parentFields:[`logo`,`body`,`thumbnail`,`items`],custom(e,t){return e.property!==`items`||e.resource.type===`ContentResource`&&t.get(e.resource,{skipSelfReturn:!1})?.type===`Choice`}},staticFields:{type:`Image`}}),Un=r({id:`@manifest-editor/image-url-annotation`,create:Bn,label:`Image`,dependencies:[`@manifest-editor/image-url-creator`],summary:`Image from URL`,tags:[`image`],icon:D(c,{}),render(e){return D(Vn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:Hn.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[G,I,F],staticFields:{type:`Annotation`}});async function Wn(e,t){let r=[],i=n(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`);for(let n of e.images)r.push(await i(n,t.options));return r}function Gn(e){return D(v,{children:O(f.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:[O(f.InputContainer,{className:`mb-4`,children:[D(f.Label,{children:`Enter a list of URLs (one per line)`}),D(f.TextArea,{name:`urls`,rows:`10`})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function Kn(e,t){let r=[],i=n(t,`AnnotationPage`,`items`,`@manifest-editor/image-url-annotation`);for(let n of e.images)r.push(await i(n,t.options));return r}const qn=r({id:`@manifest-editor/image-url-list-annotation`,create:Kn,label:`List of Images`,dependencies:[`@manifest-editor/image-url-annotation`],summary:`List of Images from URLs`,tags:[`image`],icon:D(_,{}),render(e){return D(Gn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[G,I,F],staticFields:{type:`Annotation`}}),Jn=r({id:`@manifest-editor/no-body-annotation`,create:Yn,label:`Annotation without body`,summary:`Add an annotation that only has motivation and target`,icon:D(u,{}),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 Yn(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 Xn({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=ye({duration:n});return O(de,{element:a,state:c,actions:l,currentTime:o,progress:s,children:[D(`div`,{style:{maxHeight:400,aspectRatio:`${e.width}/${e.height}`,position:`relative`},children:D(ue.VideoHTML,{element:a,media:e,playPause:l.playPause})}),D(lt,{onError:t,onDuration:r,onDimensions:i})]})}async function Zn(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:o(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 Qn(e){let t=e.options.initialData,[n,r]=E(t.url||``),[i,a]=E(0),[o,c]=E(0),[l,u]=E(0),[f,p]=E(``),[m,h]=E({en:[``]});return oe(()=>{if(p(``),a(0),n){let e=n.split(`/`).pop()?.split(`.`).shift();h({en:[e||``]})}},[n]),O(v,{children:[f?D(d,{children:f}):null,O(S,{$wide:!0,children:[D(C,{htmlFor:`video-url`,children:`URL`}),D(x,{type:`text`,id:`video-url`,value:n,onChange:e=>r(e.target.value)})]}),n&&!f?D(`div`,{children:D(w,{containerId:`label`,focusId:`label_`,label:`Label`,fields:m,onSave:e=>h(e.toInternationalString())},`${n}__${i}`)}):null,n&&!f?D(`div`,{className:`mb-4 bg-black`,children:D(Xn,{duration:i,onDuration:e=>a(e),onError:e=>p(e),media:{url:n,duration:i,height:l,width:o,type:`Video`},onDimensions:(e,t)=>{c(e||0),u(t||0)}})}):null,!f&&(i||o||l)?D(S,{$wide:!0,children:D(ne,{widthId:`width`,width:o||0,changeWidth:e=>c(e),heightId:`height`,height:l||0,changeHeight:e=>u(e),durationId:`duration`,duration:i||0,changeDuration:e=>a(e)})}):null,D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,duration:i,label:m,width:o,height:l})},isDisabled:!n||!!f,children:`Add video`})]})}const $n=r({id:`@manifest-editor/video-annotation`,create:Zn,label:`Video`,summary:`Video annotation`,icon:D(ee,{}),render(e){return D(Qn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return j(e)&&((await N(e,t)).startsWith(`video/`)||P(e,[`.mp4`,`.m4v`,`.webm`,`.mov`]))?{initialData:{url:e}}:!1},supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),er=()=>D(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,transform:`scale(-1, 1)`,children:O(`g`,{children:[D(`rect`,{fill:`none`,height:`24`,width:`24`}),D(`path`,{d:`M16,20H2V4h14V20z M18,8h4V4h-4V8z M18,20h4v-4h-4V20z M18,14h4v-4h-4V14z`})]})}),tr=r({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:D(er,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}}),nr=r({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:D(u,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`,`height`,`width`,`items`],supports:{parentTypes:[`Manifest`],parentFields:[`items`]}});var rr=`Invariant failed`;function Z(e,t){if(!e)throw Error(rr)}const ir=r({id:`@manifest-editor/internal-canvas`,create:or,label:`Internal canvas link`,summary:`Canvas from the same manifest`,icon:D(er,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>D(ar,{...e})});function ar(e){let t=he(),n=be(),r=T(()=>({canSelectCanvas:!1,canSelectCollection:!1,canSelectManifest:!0,canCropImage:!1,alwaysShowNavigationArrow:!1,multiSelect:!1}),[]),i=T(()=>[{type:`callback`,cb:t=>e.runCreate({id:t}),label:`Select canvas`,supportedTypes:[`Canvas`],format:{type:`url`}}],[e.runCreate]),a=T(()=>({saveToLocalStorage:!1,restoreFromLocalStorage:!1,initialHistory:[{url:t?.id,resource:t?.id,route:`/loading?id=${t?.id}`,metadata:{type:`Manifest`}}]}),[t?.id]);return Z(t,`Manifest is not loaded`),D(fe,{vault:n,children:D(Fe,{vault:n,navigation:r,output:i,history:a})})}async function or(e,t){return t.embed({id:e.id,type:`Canvas`})}const sr=e=>O(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:`1em`,width:`1em`,...e,children:[D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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 cr(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function lr(e){let{i18n:t}=Ee(),[n,r]=E(`<p></p>`),[i,a]=E(t.defaultLanguage);return O(v,{children:[D(p,{className:`border-none`,value:n,onChange:e=>r(e)}),D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({language:i,body:n})},children:`Create`})]})}const ur=r({id:`@manifest-editor/html-body-creator`,create:cr,label:`HTML Body`,summary:`Add HTML annotation body`,icon:D(sr,{}),render(e){return D(lr,{...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 Q(e,t,n,r=0){return`${e}/${Math.floor(t.x)},${Math.floor(t.y)},${Math.floor(t.width)},${Math.floor(t.height)}/${n}/${r}/default.jpg`}async function dr(n,r){let a=r.options.targetType,o=n.output,s=[];for(let{resource:c,selector:l,parent:u,rotation:d}of o){let o=c.type,f=new i;if((a===`Canvas`||a===`Annotation`||a===`ContentResource`)&&o===`Canvas`){let i=c.id,o=u?.type===`Manifest`?u.id:void 0;Z(o,`Could not find Manifest`);let p=f.get({id:o,type:`Manifest`})||await f.loadManifest(o);Z(p,`Manifest not found`);let m=r.config.addManifestMetadataToCanvas!==!1;n.trackManifest?.({requiredStatement:p.requiredStatement,rights:p.rights,...m?{metadata:p.metadata||[]}:{},partOf:[{id:o,type:`Manifest`,label:p.label}]});let h=e=>{if(e.type===`SpecificResource`&&e.source)return{...e,source:h(e.source)};let t=e.type===`Canvas`&&!m?{}:{metadata:p.metadata||[]};return{requiredStatement:p.requiredStatement,rights:p.rights,...t,...e,partOf:[{id:o,type:`Manifest`,label:p.label}]}},g=p.items.find(e=>e.id===i);Z(g,`Canvas not found`);let _=f.get(g),v=t(l,d);if(a===`Canvas`&&!v){let e=f.toPresentation3(_);e.label||(e.label={en:[`Untitled canvas`]}),r.vault.loadSync(e.id,h(e)),s.push(r.embed(r.vault.get({id:e.id,type:`Canvas`})));continue}let y=f.get(_.items[0]),b=f.get(y.items[0]);if(a===`Annotation`||a===`Canvas`||a===`ContentResource`){let t=f.toPresentation3(b);t.id=r.generateId(`Annotation`);let i=null,o={width:0,height:0};if(t?.body?.service){let e=t?.body.width,r=t?.body.height;i=Ae(t?.body)[0],i&&(!i.width||!i.height)&&(i.width=e,i.height=r),o.width=e,o.height=r,n.trackSize&&n.trackSize(o)}if(v){let c={...t.body},u=``;if(i&&l?.type===`BoxSelector`){let e=i.id||i[`@id`]||``;e&&(c.id=Q(e,l.spatial,`max`,d),u=Q(e,l.spatial,`512,`,d))}t.body={id:r.generateId(`SpecificResource`,b),type:`SpecificResource`,source:c,selector:v};let f=e(l?.type===`BoxSelector`?{width:~~l.spatial.width,height:~~l.spatial.height}:o,d);if(n.trackSize&&n.trackSize(f),a===`ContentResource`){s.push(h(t.body));continue}if(a===`Canvas`){let e=r.generateId(`Canvas`,b);t.target=e;let n=r.generateId(`Page`,b),i=r.embed({id:n,type:`AnnotationPage`,items:[t]}),{width:a,height:o}=f;s.push(r.embed(h({id:e,type:`Canvas`,label:{en:[`Untitled canvas`]},width:a,height:o,thumbnail:u?[r.embed({id:u,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(o/a*512)})]:void 0,items:[i]})));continue}s.push(r.embed(h({...t,target:r.getTarget()})));continue}s.push(r.embed(h({...t,target:r.getTarget()})))}}}return s}const fr=ae(()=>import(`./iiif-browser-form.lazy-DtTHoW1Q.js`)),pr=r({id:`@manifest-editor/iiif-browser-creator`,create:dr,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:D(h,{}),configuration:{fields:[{id:`addManifestMetadataToCanvas`,type:`checkbox`,label:`Add manifest metadata to imported canvases`,summary:`Copies metadata from the source Manifest when the IIIF Browser creates a Canvas.`,defaultValue:!0}]},render(e){return D(fr,{...e})},hiddenModal:!0,tags:[`image`,`image-service`],async supportsResource(e,t){let n=Ve(await M(e,t));return n===`Manifest`||n===`Collection`||await Ue(e)?{initialData:{url:e}}:!1},resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],additionalTypes:[`Annotation`,`Canvas`],supports:{initialData:!0,onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFields:[`body`,`items`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},sideEffects:[{canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(!(e&&e.type===`Annotation`&&n.targetType===`Annotation`))return;let r=t.get(e),i=r.target;if(!(i&&i.source?.type===`Canvas`))return;let a=(Array.isArray(r.body)?r.body[0]:r.body)?.selector;if(!(a&&(a.type===`iiif:ImageApiSelector`||a.type===`ImageApiSelector`)&&a.region))return;let[o,s,c,l]=a.region.split(`,`).map(Number);if(![o,s,c,l].every(Number.isFinite)||c<=0||l<=0)return;let[u]=t.get(r.body),d=(u?.service||[]).find(e=>je(e)),f=d?.id||d?.[`@id`];if(!f)return;let p=Q(f,{x:o,y:s,width:c,height:l},`512,`);t.loadSync(p,{id:p,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(l/c*512),service:[d]}),t.modifyEntityField(i.source,`thumbnail`,[{id:p,type:`ContentResource`}])}},G,I,F],staticFields:{}}),mr=r({id:`@manifest-editor/image-url-list`,label:`Image URL List`,summary:`Image from a list of URLs`,create:Wn,icon:D(_,{}),render(e){return D(Gn,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function hr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function gr(e){let[t,n]=E({en:[`View as text`]});return D(v,{children:O(`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:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link to plaintext`}),D(x,{id:`url`,name:`url`,defaultValue:``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const _r=r({id:`@manifest-editor/plaintext-creator`,create:hr,label:`Plaintext`,summary:`Add link to an plaintext`,icon:D(sr,{}),render(e){return D(gr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`]},staticFields:{format:`text/plain`}});function vr(e,t){let n=ke(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 yr(e){return e.endsWith(`default.jpg`)?A({...Me(e),type:`info`}):Oe(e)}async function br(e,t){let n=K(e.service),r=n.sizes,i=Nn(n,t.config,!0);if(e.thumbnailUrl)return t.embed({id:e.thumbnailUrl,type:`Image`,format:`image/jpeg`,width:e.width,height:e.height,service:[i]});if(r){let a=e.width||400,o=null;for(let e of r)(!o||Math.abs(e.width-a)<Math.abs(o.width-a))&&(o={width:e.width,height:e.height});if(o){let e=vr(n,o);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:o.width,height:o.height,service:[i]})}}return null}function xr(e){let[t,n]=E(``),[r,i]=E(null),[a,o]=E({width:0,height:0}),c=T(()=>!r||!a.width||!a.height?null:vr(r,a),[a,r]);return r?O(v,{children:[O(`div`,{className:`mb-4`,children:[D(`div`,{className:`mb-2`,children:r[`@id`]||r.id}),D(`div`,{className:`flex gap-2 mb-4`,children:r.sizes?.map(e=>{let t=e.width===a.width;return O(s,{primary:t,isDisabled:t,large:!0,onPress:()=>o(e),children:[e.width,`x`,e.height]},e.width)})}),c?D(`img`,{src:c,alt:`preview of selected resource`}):null]}),D(s,{primary:!0,large:!0,isDisabled:!c,onPress:()=>{r&&e.runCreate({service:r,width:a.width,height:a.height})},children:`Add thumbnail`})]}):D(v,{children:O(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries()).url;if(n){let e=yr(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&&o(t)})}},children:[D(`div`,{className:`flex gap-2 items-center`,children:O(S,{$wide:!0,children:[D(C,{htmlFor:`url`,children:`Link to image service`}),D(x,{id:`url`,name:`url`,defaultValue:``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);n(t?yr(t):``)},onBlur:e=>n(e.currentTarget.value?yr(e.currentTarget.value):``)})]})}),D(`div`,{children:D(s,{primary:!0,large:!0,type:`submit`,isDisabled:!t,children:`Select size`})})]})})}const Sr=r({id:`@manifest-editor/thumbnail-image`,configKey:`iiif-image-services`,create:br,label:`Thumbnail from service`,summary:`Add thumbnail from an image service`,icon:D(b,{}),render(e){return D(xr,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`,`width`,`height`,`service`],supports:{parentFields:[`thumbnail`]}});function Cr(){return O(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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 wr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function Tr(e){let[t,n]=E({en:[``]});return D(v,{children:O(`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:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link`}),D(x,{id:`url`,name:`url`,defaultValue:``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create link`})]})})}const Er=r({id:`@manifest-editor/web-page-creator`,create:wr,label:`Web page`,summary:`Add link to an external web page`,icon:D(Cr,{}),render(e){return D(Tr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]}}),Dr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function $(e){let t=(e||``).match(Dr);return t?t[1]:null}function Or(e){return!!$(e.youtubeUrl)}function kr(e,t){let n=$(e.youtubeUrl);return t.embed({id:`https://www.youtube.com/watch?v=${n}`,type:`Video`,service:[{type:`Service`,profile:`http://digirati.com/objectifier`,params:{data:`https://www.youtube.com/embed/${n}`}},{id:`https://www.youtube.com/watch?v=${n}`,type:`Service`,profile:`https://www.youtube.com`}]})}async function Ar(e,t){let n=kr(e,t);if(t.options.targetType===`Canvas`){let r=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:r,type:`Canvas`}),a=t.embed({id:t.generateId(`annotation`,{id:i,type:`AnnotationPage`}),type:`Annotation`,motivation:`painting`,body:[n],target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),o=t.embed({id:i,type:`AnnotationPage`,items:[a]});return t.embed({id:r,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:[n],target:t.getTarget()}):n}function jr(e){let t=e.options.initialData;return D(v,{children:O(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.youtubeUrl&&e.runCreate({youtubeUrl:r.youtubeUrl})},children:[O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link to YouTube`}),D(x,{id:`youtubeUrl`,name:`youtubeUrl`,defaultValue:t.youtubeUrl||``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const Mr=r({id:`@manifest-editor/youtube`,create:Ar,label:`YouTube`,summary:`Embed YouTube`,icon:D(te,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],supportsResource(e){return $(e)?{initialData:{youtubeUrl:e}}:!1},render:e=>D(jr,{...e}),supports:{initialData:!0,onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function Nr(e,t){let n=e.output||[],r=[];for(let e of n){let{resource:n,parent:i,selector:o}=e,s=t.getPreviewVault(),c=a(s);if(n.type===`Manifest`){let e=n.id;Z(e,`Could not find Manifest ID`);let i=await s.loadManifest(e),a=await c.getBestThumbnailAtSize(i,{width:256,height:256},!1);Z(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;Z(e,`Could not find Manifest ID`);let i=await s.loadManifest(e);Z(i,`Collection not found`),r.push(t.embed({id:n.id,type:`Collection`,label:i.label}))}}return r}const Pr=ae(()=>Promise.resolve().then(()=>Fr));var Fr=Le({default:()=>Ir});function Ir(e){let t=De(),n=T(()=>e.options.initialData||{},[e.options.initialData]),r=T(()=>[{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]),i=T(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...n.iiifBrowserOptions?.navigation||{}}),[n.iiifBrowserOptions?.navigation]),a=T(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,homeLink:n.url||(typeof e.config?.defaultCollection==`string`?e.config.defaultCollection:void 0),...n.iiifBrowserOptions?.ui||{}}),[n,e.config]),o=T(()=>{let e=n.iiifBrowserOptions?.history||{};return n.url?{...e,restoreFromLocalStorage:!1,saveToLocalStorage:!1,initialHistory:[{url:n.url,resource:null,route:`/loading?id=${encodeURIComponent(n.url)}`}]}:e},[n]);return D(Se,{children:D(Fe,{ui:a,vault:t,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:r,navigation:i,customPages:n.iiifBrowserOptions?.customPages||{},history:o})})}const Lr=r({id:`@manifest-editor/manifest-browser-creator`,configKey:`@manifest-editor/iiif-browser-creator`,create:Nr,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:D(h,{}),render(e){return D(Ir,{...e})},async supportsResource(e,t){let n=Ve(await M(e,t));return n===`Manifest`||n===`Collection`||await Ue(e)?{initialData:{url:e}}:!1},resourceType:`Manifest`,resourceFields:[`id`,`label`],additionalTypes:[`Collection`],supports:{initialData:!0,parentTypes:[`Collection`,`Manifest`,`Canvas`],parentFieldMap:{Collection:[`items`],Manifest:[`partOf`],Canvas:[`partOf`]}},sideEffects:[],staticFields:{}});async function Rr(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 zr(e){let[t,n]=E({en:[``]});return D(v,{children:O(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),D(s,{primary:!0,type:`submit`,children:`Create range`})]})})}const Br=r({id:`@manifest-editor/range-with-items`,create:Rr,label:`Range`,summary:`Add a new range`,icon:D(y,{}),render(e){return D(zr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});async function Vr(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 Hr(e){let[t,n]=E({en:[``]});return D(v,{children:O(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),D(s,{primary:!0,type:`submit`,children:`Create range`})]})})}const Ur=r({id:`@manifest-editor/range-top-level`,create:Vr,label:`Top Level Range`,summary:`Add a new top level range`,icon:D(y,{}),render(e){return D(Hr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),Wr=[Y,Rn,Hn,Un,$n,ft,ur,vt,Mr,pr,nr,_r,Er,tr,Jn,ir,ht,mr,qn,Sr,Ur,Br,Be];export{dt as CreateAudioAnnotationForm,mt as CreateCaptionedImageAnnotation,_t as CreateHTMLAnnotation,lr as CreateHTMLBodyForm,J as CreateImageServerForm,Ln as CreateImageServiceAnnotationForm,Vn as CreateImageUrlAnnotationForm,X as CreateImageUrlForm,Gn as CreateImageUrlListForm,gr as CreatePlaintextForm,ze as CreateProviderForm,xr as CreateThumbnailForm,Qn as CreateVideoAnnotationForm,Tr as CreateWebPageForm,fr as IIIFBrowserCreatorForm,Pr as ManifestBrowserCreatorForm,zr as RangeWithItemsCreatorForm,Hr as TopLevelRangeCreatorForm,jr as YouTubeForm,Wr as allCreators,ft as audioAnnotation,ht as captionedImageAnnotation,ut as createAudioAnnotation,pt as createCaptionedImageAnnotation,dr as createFromIIIFBrowserOutput,Nr as createFromManifestBrowserOutput,gt as createHtmlAnnotation,cr as createHtmlBody,Pn as createImageServer,In as createImageServiceAnnotation,zn as createImageUrl,Bn as createImageUrlAnnotation,Wn as createImageUrlList,Kn as createImageUrlListAnnotation,Yn as createNoBodyAnnotation,hr as createPlaintext,Re as createProvider,Vr as createRangeTopLevel,Rr as createRangeWithItems,br as createThumbnail,Zn as createVideoAnnotation,wr as createWebPage,Ar as createYoutubeBody,kr as createYoutubeBodyResource,Q as croppedRegion,tr as emptyAnnotationPage,nr as emptyCanvas,q as getCanonicalUrl,$ as getYouTubeId,vt as htmlAnnotation,ur as htmlBodyCreator,pr as iiifBrowserCreator,Rn as imageServiceAnnotation,Y as imageServiceCreator,Un as imageUrlAnnotation,Hn as imageUrlCreator,qn as imageUrlListAnnotation,mr as imageUrlListCreator,ir as internalCanvas,Lr as manifestBrowserCreator,Jn as noBodyAnnotation,_r as plaintextCreator,Be as providerCreator,Ur as rangeTopLevel,Br as rangeWithItems,Or as validateYouTube,$n as videoAnnotation,Er as webPageCreator,Mr as youTubeBodyCreator};
92
+ `,lt=k.label`
93
+ ${ct}
94
+ `;function ut(e){let[t,n]=E(!1),{progress:r,currentTime:i,element:a}=_e(),{duration:o,isMuted:s,volume:c,isPlaying:l,playRequested:u}=ve(),{setVolume:d,toggleMute:f,play:p,pause:m,setDurationPercent:h}=ge(),g=s||c===0?Ye:c>50?qe:Je;return se(()=>{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)}}},[]),O(Xe,{children:[D(Qe,{disabled:u,onClick:()=>{l?m():p()},children:u?D(st,{stroke:`#999`}):l?D(Ke,{title:`Pause`}):D(Ge,{title:`Play`})}),D($e,{ref:i,children:`0:00`}),O(et,{onClick:e=>{let{left:t,width:n}=e.currentTarget.getBoundingClientRect(),r=(e.pageX-t)/n;h(r)},children:[D(nt,{}),o?D(tt,{ref:r}):null]}),D($e,{children:pe(o)}),O(it,{onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:[D(at,{$isOpen:t,children:O(`span`,{children:[D(lt,{htmlFor:`audio-slider`,children:`Change volume`}),D(ot,{id:`audio-slider`,role:`slider`,disabled:s,min:`0`,max:`100`,value:c,onChange:e=>d(Number(e.currentTarget.value))})]})}),D(rt,{onClick:()=>f(),children:D(g,{title:s?`Mute`:`Unmute`})})]})]})}async function dt(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:o(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 ft(e){let t=e.options.initialData,[n,r]=E(t.url||``),[i,a]=E(0),[o,c]=E(``),[l,u]=E({en:[``]});return oe(()=>{if(c(``),a(0),n){let e=n.split(`/`).pop()?.split(`.`).shift();u({en:[e||``]})}},[n]),O(v,{children:[o?D(d,{children:o}):null,O(S,{$wide:!0,children:[D(C,{htmlFor:`audio-url`,children:`URL`}),D(x,{type:`text`,id:`audio-url`,value:n,onChange:e=>r(e.target.value)})]}),n&&!o?D(`div`,{children:D(w,{containerId:`label`,focusId:`label_`,label:`Label`,fields:l,onSave:e=>u(e.toInternationalString())},`${n}__${i}`)}):null,n&&!o?D(ue.AudioHTML,{media:{url:n,duration:i,type:`Sound`},children:D(ut,{onError:e=>c(e),onDuration:e=>a(~~e)},`${n}__${i}`)},`${n}__${i}`):null,i&&!o?O(re,{children:[D(C,{htmlFor:`duration`,children:`Duration`}),D(x,{type:`number`,id:`duration`,value:i,onChange:e=>a(e.target.valueAsNumber)})]}):null,D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,duration:i,label:l})},isDisabled:!n||!!o,children:`Add audio`})]})}const pt=r({id:`@manifest-editor/audio-annotation`,create:dt,label:`Audio`,summary:`Audio annotation`,icon:D(l,{}),render(e){return D(ft,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return j(e)&&((await N(e,t)).startsWith(`audio/`)||P(e,[`.mp3`,`.m4a`,`.wav`,`.ogg`]))?{initialData:{url:e}}:!1},supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}});async function mt(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
+ `);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 ht(e){let[t,n]=Te({key:`bodyValue`,initialValue:{en:[``]},requestId:e.options.initialData?.requestId});return D(`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:O(ce,{children:[O(S,{$wide:!0,children:[D(C,{htmlFor:`url`,children:`URL to Image`}),D(x,{id:`url`,name:`url`,defaultValue:``,placeholder:`https://example.org/image.jpg`})]}),O(S,{$wide:!0,children:[D(C,{htmlFor:`caption`,children:`Caption`}),D(x,{id:`caption`,name:`caption`,placeholder:`Enter a caption`,onChange:e=>n({en:[e.target.value]}),value:t.en?.[0]||``})]}),D(s,{primary:!0,type:`submit`,children:`Create`})]})})}const gt=r({id:`@manifest-editor/captioned-image-annotation`,create:mt,label:`Captioned image`,summary:`Add an image from a URL with caption`,icon:D(c,{}),render(e){return D(ht,{...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 _t(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
+ `);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 vt(e){let[t,n]=Te({key:`bodyValue`,initialValue:{en:[``]},requestId:e.options.initialData?.requestId}),r=o(t).trim()===``;return O(ce,{children:[D(p,{className:`border-none`,value:t.en?.[0]||``,onChange:e=>n({en:[e]})}),D(s,{primary:!0,type:`button`,onPress:()=>{e.runCreate({body:t})},isDisabled:r,children:`Create`})]})}const yt=r({id:`@manifest-editor/html-annotation`,create:_t,label:`HTML`,summary:`HTML annotation`,icon:D(m,{}),render(e){return D(vt,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),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)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=>je(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 Ne({vault:t,reference:e}),p=ie(a,{width:u,height:d},.6);f.annotation.target.setPosition(p)}}},I={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 Ne({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 bt=Object.defineProperty,xt=(e,t,n)=>t in e?bt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,L=(e,t,n)=>(xt(e,typeof t==`symbol`?t:t+``,n),n);function R(e){return e.endsWith(`info.json`)?e:e.endsWith(`/`)?`${e}info.json`:`${e}/info.json`}var St=`http://library.stanford.edu/iiif/image-api/compliance.html#level0`,Ct=`http://library.stanford.edu/iiif/image-api/compliance.html#level1`,wt=`http://library.stanford.edu/iiif/image-api/compliance.html#level2`,Tt=`http://library.stanford.edu/iiif/image-api/conformance.html#level0`,Et=`http://library.stanford.edu/iiif/image-api/conformance.html#level1`,Dt=`http://library.stanford.edu/iiif/image-api/conformance.html#level2`,Ot=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level0`,kt=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level1`,At=`http://library.stanford.edu/iiif/image-api/1.1/compliance.html#level2`,jt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level0`,Mt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level1`,Nt=`http://library.stanford.edu/iiif/image-api/1.1/conformance.html#level2`,Pt=`http://iiif.io/api/image/1/level0.json`,Ft=`http://iiif.io/api/image/1/profiles/level0.json`,It=`http://iiif.io/api/image/1/level1.json`,Lt=`http://iiif.io/api/image/1/profiles/level1.json`,Rt=`http://iiif.io/api/image/1/level2.json`,zt=`http://iiif.io/api/image/1/profiles/level2.json`,Bt=`http://iiif.io/api/image/2/level0.json`,Vt=`http://iiif.io/api/image/2/profiles/level0.json`,Ht=`http://iiif.io/api/image/2/level1.json`,Ut=`http://iiif.io/api/image/2/profiles/level1.json`,Wt=`http://iiif.io/api/image/2/level2.json`,Gt=`http://iiif.io/api/image/2/profiles/level2.json`,Kt=`level0`,qt=`level1`,Jt=`level2`,Yt=`http://iiif.io/api/image/2/level0`,Xt=`http://iiif.io/api/image/2/level1`,Zt=`http://iiif.io/api/image/2/level2`,Qt=[Zt,wt,Dt,At,Nt,Rt,zt,Wt,Gt,Jt],$t=[...Qt,Xt,Ct,Et,kt,Mt,It,Lt,Ht,Ut,qt],en=[Yt,Xt,Zt,St,Ct,wt,Tt,Et,Dt,Ot,kt,At,jt,Mt,Nt,Pt,Ft,It,Lt,Rt,zt,Bt,Vt,Ht,Ut,Wt,Gt,Kt,qt,Jt],tn={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`sizeByWhListed`]},nn={extraFormats:[`jpg`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPx`,`regionSquare`,`sizeByWhListed`,`sizeByH`,`sizeByW`,`sizeByWh`]},rn={extraFormats:[`jpg`,`png`],extraQualities:[`default`],extraFeatures:[`baseUriRedirect`,`cors`,`jsonldMediaType`,`regionByPct`,`regionByPx`,`regionSquare`,`rotationBy90s`,`sizeByWhListed`,`sizeByConfinedWh`,`sizeByH`,`sizeByPct`,`sizeByW`,`sizeByWh`]};function an(e){return Qt.indexOf(e)===-1?$t.indexOf(e)===-1?tn:nn:rn}function on(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=an(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 sn(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 cn(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 ln(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 un(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 dn(e,t=``){let{path:n,scheme:r,server:i,prefix:a}=un(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:sn(u),size:cn(l),rotation:ln(c),quality:p[0],format:p[1]}}function fn(e){let t=dn(R(e.id));if(t.type!==`info`)throw Error(`Invalid service URL`);let n=on(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 pn(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 mn(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 z(e){if(e[`@id`])return e[`@id`];if(e.id)return e.id}function B(e){if(!e||!e.profile||!z(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`&&en.indexOf(e)!==-1)return!0;return!1}function hn(e){if(!B(e))return!1;let t=Array.isArray(e.profile)?e.profile:[e.profile];for(let e of t)if(typeof e==`string`){if($t.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 V(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 H(e){return B(e)?V(0,e)?0:V(1,e)?1:V(2,e)?2:null:null}function gn(e){return(e[`@context`]?Array.isArray(e[`@context`])?e[`@context`]:[e[`@context`]]:[]).indexOf(`http://iiif.io/api/image/3/context.json`)!==-1}function _n(e){if(!hn(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:z(e),type:`variable`,minWidth:0,minHeight:0,maxHeight:r.maxHeight||r.maxWidth,maxWidth:r.maxWidth||r.maxHeight,level:H(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:z(e),type:`variable`,minHeight:0,minWidth:0,maxHeight:n.height||n.width,maxWidth:n.width,level:H(e),version:gn(e)?3:2})}}return t}function vn(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 yn(e){if(e[`@type`])return e[`@type`];if(e.type)return e.type}function bn(e){if(typeof e==`string`)return vn(e);let t=yn(e);if(t!==`Image`&&t!==`sc:Image`)return null;let n=e,r=z(n);return r?r&&n.width&&n.height?{id:r,type:`fixed`,width:n.width,height:n.height,unsafe:!0}:vn(r):null}function xn(e){return B(e)?(e&&e.sizes?e.sizes:[]).map(t=>({id:z(e),type:`fixed-service`,height:t.height,width:t.width,level:H(e),version:gn(e)?3:2})):[]}function Sn(e){let t=[],n=e.length;for(let r=0;r<n;r++){let n=e[r];if(!n)continue;let i=xn(n);i.length&&t.push(...i);let a=_n(n);a.length&&t.push(...a)}return t}function Cn(e){let t=e.service?Array.isArray(e.service)?e.service:[e.service]:[],n=t.length,r=[];for(let e=0;e<n;e++)B(t[e])&&r.push(t[e]);return r}function wn(e,t=!0,n){let r=[],i=bn(e);if(i===null)return r;let a=e;if(r.push(i),t&&a&&a.width&&a.height){let e=[],t=Cn(a);for(let r of t){let t={id:z(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(...Sn([r])))}}if(e.length)return r.push(...e),r}return a.service&&r.push(...Sn(a.service)),r}function Tn({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 En({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 Dn(e){return`${e.mirror?`!`:``}${(e.angle||0)%360}`}function On(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,Tn(a),En(i),Dn(o),`${c}.${s}`].filter(Boolean).join(`/`)}function U(e,t,n){let r=fn({"@context":e.version===3?`http://iiif.io/api/image/3/context.json`:`http://iiif.io/api/image/2/context.json`,id:R(z(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:On(r),type:`fixed`,width:t,height:n||e.height/(e.width||1)*t,unsafe:e.width>t}}function W(e){let t=e.replace(/(https?:\/\/)?(www.)?/i,``);return t.indexOf(`/`)===-1?t:t.split(`/`)[0]}function kn(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 An(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),kn(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(U(t,r.width,r.height),s)):(i(()=>`Checking for an image from the tile source 3`,2),c(U(t,t.width,t.height),s))),t.type===`variable`&&t.maxWidth&&c(U({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 jn(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 Mn(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 Nn(e){return V(0,e)}new class{constructor(e={}){L(this,`config`,{verificationsRequired:1,approximateServices:!1,enableFetching:!0,disableThrottling:!1}),L(this,`fetchingCount`,0),L(this,`imageServices`,{}),L(this,`knownImageServers`,{}),this.config=Object.assign(this.config,e)}setConfig(e){Object.assign(this.config,e)}sample(e,t,n=!0){let r=W(z(e)),i=R(z(e)),a=this.knownImageServers[r];return this.imageServices[i]=Object.assign(e,{real:!0}),!a&&e.tiles&&!Nn(e)?(this.knownImageServers[r]={verifications:0,malformed:!1,root:r,preLoaded:n,sampledId:z(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:pn(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=W(z(e)),a=this.knownImageServers[i],o=R(z(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)||Nn(e.source)?null:(this.imageServices[o]||(this.imageServices[o]={"@context":a.result.context,"@id":z(e),id:z(e),protocol:`http://iiif.io/api/image`,tiles:r?.tiles||jn(e.width,e.height,a.result.sampledTiles),sizes:r?.sizes||mn(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 An(t,[()=>r,()=>i])}async getImageCandidates(e,t=!0){let n=e;if(t&&n&&n.height&&n.width){let e=Cn(n);for(let t of e){let e={id:z(t),width:t.width?t.width:n.width,height:t.height?t.height:n.height,source:t};await this.loadService(e)}}return wn(e,t,this)}async verify(e){let t=this.predict(e,!1,!0),n=await this.fetchService(z(e));if(!t)return!1;let r=t.height===n.height&&t.width===n.width&&t[`@context`]===n[`@context`]&&Mn(t.sizes||[],n.sizes||[]);if(r){let t=W(z(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:z(e),n=R(t);if(this.imageServices[n])return!0;let r=this.knownImageServers[W(t)];return!!(r&&!r.malformed&&r.verifications>=this.config.verificationsRequired)}async markAsMalformed(e){return this.knownImageServers[W(z(e))].malformed=!0,this.loadService(e,!0)}async fetchService(e,t=!1){let n=R(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[W(z(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(z(e),t);return this.fetchingCount--,r.real&&this.sample(r,e),r}loadServiceSync(e){let t=R(z(e));return this.imageServices[t]?this.imageServices[t]:this.config.approximateServices?this.predict(e):null}};const G={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=>B(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))}}};function K(e){let{"@id":t,"@type":n,...r}=e,i=`${e[`@context`]||``} ${e.profile||``}`.match(/\/(?:image|image-api)\/([123])(?:[./])/);return{...r,id:e.id||t,type:e.type||n||`ImageService${i?.[1]||`2`}`}}function Pn(e,t={},n=!1){let r=[];t.compact!==`compact`&&r.push(`width`,`height`),(n||t.includeSizes===!0)&&r.push(`sizes`),(n||t.includeTiles===!0)&&r.push(`tiles`);let i=K(e);return{id:i.id,type:i.type,profile:i.profile,...Object.fromEntries(r.filter(e=>i[e]!==void 0).map(e=>[e,i[e]]))}}async function Fn(e,t){let n=K(e.service),r=ke(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:[Pn(n,t.config,t.options.parent?.property===`thumbnail`)]})}function q(e){return e.endsWith(`default.jpg`)?A({...Me(e),type:`info`}):Oe(e)}function J(e){let t=e.options.initialData,n=t.url?q(t.url):``,[r,i]=E(n||``);return D(v,{children:O(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries()),i=r.url;if(i){let t=q(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:[D(`div`,{className:`flex gap-2 items-center`,children:O(S,{$wide:!0,children:[D(C,{htmlFor:`url`,children:`Link to image service`}),D(x,{id:`url`,name:`url`,defaultValue:t.url||``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);i(t?q(t):``)},onBlur:e=>i(e.currentTarget.value?q(e.currentTarget.value):``)})]})}),D(`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:r.trim()?D(Fe,{fallbackRender:()=>D(`div`,{children:`Invalid service`}),children:D(In,{src:r},r)}):D(`div`,{className:`text-grey-600`,children:`Preview`})}),D(`div`,{children:D(s,{primary:!0,large:!0,type:`submit`,isDisabled:!r,children:`Create`})})]})})}function In({src:e}){let t=me({id:e},{size:{width:512}});return t?D(`div`,{className:`h-full`,children:D(`img`,{className:`w-full h-full object-contain`,src:t})}):D(st,{})}async function Ln(e,t){let r={id:t.generateId(`annotation`),type:`Annotation`},i=t.options.targetType,a=await n(t,`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:t.getTarget()};if(i===`Canvas`){let i=t.generateId(`canvas`),o=t.generateId(`annotation-page`,{id:i,type:`Canvas`}),s=t.embed({...r,motivation:`painting`,body:[a],target:{type:`SpecificResource`,source:{id:i,type:`Canvas`}}}),c=t.embed({id:o,type:`AnnotationPage`,items:[s]}),l;return e.service?.sizes&&(l=await n(t,`Canvas`,`thumbnail`,`@manifest-editor/thumbnail-image`)({service:e.service,width:e.thumbnailSize||400})),t.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 Rn(e){return D(J,{...e})}const Y=r({id:`@manifest-editor/image-service-creator`,configKey:`iiif-image-services`,create:Fn,label:`Image Service`,summary:`Add an image from Image Service`,icon:D(g,{style:{padding:10}}),tags:[`image`,`image-service`],async supportsResource(e,t){if(!j(e))return!1;let n=q(e);if(!n)return!1;let r=await M(n,t);return Ue(r)?{initialData:{url:e,service:r}}:!1},render(e){return D(J,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`height`,`width`,`format`,`service`],supports:{initialData:!0,parentFields:[`logo`,`body`,`thumbnail`,`items`],custom(e,t){return e.property!==`items`||e.resource.type===`ContentResource`&&t.get(e.resource,{skipSelfReturn:!1})?.type===`Choice`}}}),zn=r({id:`@manifest-editor/image-service-annotation`,create:Ln,label:`IIIF Image`,dependencies:[`@manifest-editor/image-service-creator`],summary:`IIIF Image service`,tags:[`image`,`image-service`],icon:D(g,{style:{padding:10}}),render(e){return D(Rn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:Y.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[G,I,F],staticFields:{type:`Annotation`}});async function Bn(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 X(e){let t=e.options.initialData;return D(v,{children:O(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.url&&e.runCreate({url:r.url})},children:[O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link to Image`}),D(x,{id:`url`,name:`url`,defaultValue:t.url||``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function Vn(e,t){let r={id:t.generateId(`annotation`),type:`Annotation`},i=t.options.targetType,a=await n(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`)(e,{parent:{resource:r,property:`body`}});if(i===`Annotation`)return t.embed({...r,body:[a],motivation:e.motivation||`painting`,target:t.getTarget()});if(i===`Canvas`){let n=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:n,type:`Canvas`}),o=t.embed({...r,motivation:`painting`,body:[a],target:{type:`SpecificResource`,source:{id:n,type:`Canvas`}}}),s=t.embed({id:i,type:`AnnotationPage`,items:[o]});return t.embed({id:n,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 Hn(e){return D(X,{...e})}const Un=r({id:`@manifest-editor/image-url-creator`,create:Bn,label:`Image`,summary:`Image from a URL`,icon:D(c,{}),tags:[`image`],async supportsResource(e,t){if(!j(e))return!1;let n=q(e);if(n)try{if(Ue(await t.json(n)))return!1}catch{}let r=await N(e,t);return r.startsWith(`image/`)||P(e,[`.jpg`,`.jpeg`,`.png`,`.gif`,`.webp`])?{initialData:{url:e,format:r||void 0}}:!1},render(e){return D(X,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{initialData:!0,parentFields:[`logo`,`body`,`thumbnail`,`items`],custom(e,t){return e.property!==`items`||e.resource.type===`ContentResource`&&t.get(e.resource,{skipSelfReturn:!1})?.type===`Choice`}},staticFields:{type:`Image`}}),Wn=r({id:`@manifest-editor/image-url-annotation`,create:Vn,label:`Image`,dependencies:[`@manifest-editor/image-url-creator`],summary:`Image from URL`,tags:[`image`],icon:D(c,{}),render(e){return D(Hn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supportsResource:Un.supportsResource,supports:{initialData:!0,onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[G,I,F],staticFields:{type:`Annotation`}});async function Gn(e,t){let r=[],i=n(t,`Annotation`,`body`,`@manifest-editor/image-url-creator`);for(let n of e.images)r.push(await i(n,t.options));return r}function Kn(e){return D(v,{children:O(f.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:[O(f.InputContainer,{className:`mb-4`,children:[D(f.Label,{children:`Enter a list of URLs (one per line)`}),D(f.TextArea,{name:`urls`,rows:`10`})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}async function qn(e,t){let r=[],i=n(t,`AnnotationPage`,`items`,`@manifest-editor/image-url-annotation`);for(let n of e.images)r.push(await i(n,t.options));return r}const Jn=r({id:`@manifest-editor/image-url-list-annotation`,create:qn,label:`List of Images`,dependencies:[`@manifest-editor/image-url-annotation`],summary:`List of Images from URLs`,tags:[`image`],icon:D(_,{}),render(e){return D(Kn,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],supports:{onlyPainting:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},sideEffects:[G,I,F],staticFields:{type:`Annotation`}}),Yn=r({id:`@manifest-editor/no-body-annotation`,create:Xn,label:`Annotation without body`,summary:`Add an annotation that only has motivation and target`,icon:D(u,{}),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 Xn(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 Zn({media:e,onError:t,duration:n,onDuration:r,onDimensions:i}){let[{element:a,currentTime:o,progress:s},c,l]=ye({duration:n});return O(de,{element:a,state:c,actions:l,currentTime:o,progress:s,children:[D(`div`,{style:{maxHeight:400,aspectRatio:`${e.width}/${e.height}`,position:`relative`},children:D(ue.VideoHTML,{element:a,media:e,playPause:l.playPause})}),D(ut,{onError:t,onDuration:r,onDimensions:i})]})}async function Qn(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:o(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`}),s=t.embed({...n,motivation:`painting`,body:i,target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),c=t.embed({id:a,type:`AnnotationPage`,items:[s]});return t.embed({id:r,type:`Canvas`,label:o(e.label)?e.label:void 0,duration:e.duration||0,width:e.width,height:e.height,items:[c]})}}function $n(e){let t=e.options.initialData,[n,r]=E(t.url||``),[i,a]=E(0),[o,c]=E(0),[l,u]=E(0),[f,p]=E(``),[m,h]=E({en:[``]});return oe(()=>{if(p(``),a(0),n){let e=n.split(`/`).pop()?.split(`.`).shift();h({en:[e||``]})}},[n]),O(v,{children:[f?D(d,{children:f}):null,O(S,{$wide:!0,children:[D(C,{htmlFor:`video-url`,children:`URL`}),D(x,{type:`text`,id:`video-url`,value:n,onChange:e=>r(e.target.value)})]}),n&&!f?D(`div`,{children:D(w,{containerId:`label`,focusId:`label_`,label:`Label`,fields:m,onSave:e=>h(e.toInternationalString())},`${n}__${i}`)}):null,n&&!f?D(`div`,{className:`mb-4 bg-black`,children:D(Zn,{duration:i,onDuration:e=>a(e),onError:e=>p(e),media:{url:n,duration:i,height:l,width:o,type:`Video`},onDimensions:(e,t)=>{c(e||0),u(t||0)}})}):null,!f&&(i||o||l)?D(S,{$wide:!0,children:D(ne,{widthId:`width`,width:o||0,changeWidth:e=>c(e),heightId:`height`,height:l||0,changeHeight:e=>u(e),durationId:`duration`,duration:i||0,changeDuration:e=>a(e)})}):null,D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({url:n,duration:i,label:m,width:o,height:l})},isDisabled:!n||!!f,children:`Add video`})]})}const er=r({id:`@manifest-editor/video-annotation`,create:Qn,label:`Video`,summary:`Video annotation`,icon:D(ee,{}),render(e){return D($n,{...e})},resourceType:`Annotation`,resourceFields:[`id`,`type`,`motivation`,`body`,`target`],additionalTypes:[`Canvas`],async supportsResource(e,t){return j(e)&&((await N(e,t)).startsWith(`video/`)||P(e,[`.mp4`,`.m4v`,`.webm`,`.mov`]))?{initialData:{url:e}}:!1},supports:{onlyPainting:!0,initialData:!0,parentTypes:[`AnnotationPage`,`Manifest`],parentFields:[`items`]},staticFields:{type:`Annotation`}}),tr=()=>D(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,transform:`scale(-1, 1)`,children:O(`g`,{children:[D(`rect`,{fill:`none`,height:`24`,width:`24`}),D(`path`,{d:`M16,20H2V4h14V20z M18,8h4V4h-4V8z M18,20h4v-4h-4V20z M18,14h4v-4h-4V14z`})]})}),nr=r({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:D(tr,{}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Manifest`,`Canvas`,`Range`],parentFieldMap:{Manifest:[`annotations`],Canvas:[`items`,`annotations`],Range:[`annotations`]}}}),rr=e=>O(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 24 24`,height:`1em`,width:`1em`,...e,children:[D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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 ir(e,t){let n=e.url.trim();if(!j(n))throw Error(`Enter an absolute HTTP or HTTPS URL for the WebVTT file.`);let r=t.getParent();if(r?.type!==`Canvas`)throw Error(`WebVTT captions must belong to a Canvas.`);let i=t.embed({id:n,type:`Text`,format:`text/vtt`,...o(e.label)?{label:e.label}:{},...e.language?.trim()?{language:e.language.trim()}:{}}),a=t.embed({id:t.generateId(`annotation`),type:`Annotation`,motivation:`supplementing`,body:i,target:r});return t.embed({id:t.generateId(`annotation-page`),type:`AnnotationPage`,items:[a]})}function ar(e){let[t,n]=E({en:[`Captions in WebVTT format`]});return D(v,{children:O(`form`,{onSubmit:n=>{n.preventDefault();let r=new FormData(n.currentTarget),i=String(r.get(`url`)||``).trim(),a=String(r.get(`language`)||``).trim();e.runCreate({url:i,label:o(t)?t:void 0,language:a||void 0})},children:[D(`p`,{id:`vtt-help`,className:`mb-4 text-sm text-gray-600`,children:`Link an existing WebVTT (.vtt) file to this canvas. Host the file at a public URL before adding it.`}),O(S,{$wide:!0,children:[D(C,{htmlFor:`vtt-url`,children:`WebVTT file URL`}),D(x,{id:`vtt-url`,name:`url`,type:`url`,required:!0,placeholder:`https://example.org/captions.vtt`,pattern:`https?://.+`,title:`Enter an absolute http:// or https:// URL`,"aria-describedby":`vtt-help`,defaultValue:``})]}),D(w,{focusId:`vtt-label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),O(S,{$wide:!0,children:[D(C,{htmlFor:`vtt-language`,children:`Language (BCP 47 code)`}),D(x,{id:`vtt-language`,name:`language`,type:`text`,placeholder:`en`,title:`A language code such as en, fr or pt-BR`,defaultValue:`en`})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Add captions`})]})})}const or=r({id:`@manifest-editor/vtt-annotation-page`,label:`WebVTT captions`,tags:[`captions`],summary:`Link captions to an audio or video canvas`,icon:D(rr,{}),create:ir,render:e=>D(ar,{...e}),resourceType:`AnnotationPage`,resourceFields:[`id`,`type`,`items`],supports:{parentTypes:[`Canvas`],parentFields:[`annotations`],custom:({resource:e},t)=>Pe(t,e)}}),sr=r({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:D(u,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`,`height`,`width`,`items`],supports:{parentTypes:[`Manifest`],parentFields:[`items`]}});var cr=`Invariant failed`;function Z(e,t){if(!e)throw Error(cr)}const lr=r({id:`@manifest-editor/internal-canvas`,create:dr,label:`Internal canvas link`,summary:`Canvas from the same manifest`,icon:D(tr,{}),resourceType:`Canvas`,resourceFields:[`id`,`type`,`label`],supports:{parentTypes:[`Manifest`],parentFields:[`start`]},render:e=>D(ur,{...e})});function ur(e){let t=he(),n=be(),r=T(()=>({canSelectCanvas:!1,canSelectCollection:!1,canSelectManifest:!0,canCropImage:!1,alwaysShowNavigationArrow:!1,multiSelect:!1}),[]),i=T(()=>[{type:`callback`,cb:t=>e.runCreate({id:t}),label:`Select canvas`,supportedTypes:[`Canvas`],format:{type:`url`}}],[e.runCreate]),a=T(()=>({saveToLocalStorage:!1,restoreFromLocalStorage:!1,initialHistory:[{url:t?.id,resource:t?.id,route:`/loading?id=${t?.id}`,metadata:{type:`Manifest`}}]}),[t?.id]);return Z(t,`Manifest is not loaded`),D(fe,{vault:n,children:D(Ie,{vault:n,navigation:r,output:i,history:a})})}async function dr(e,t){return t.embed({id:e.id,type:`Canvas`})}async function fr(e,t){return t.embed({id:t.generateId(`html/${e.language}`),language:e.language,type:`TextualBody`,format:`text/html`,value:e.body||``})}function pr(e){let{i18n:t}=Ee(),[n,r]=E(`<p></p>`),[i,a]=E(t.defaultLanguage);return O(v,{children:[D(p,{className:`border-none`,value:n,onChange:e=>r(e)}),D(s,{primary:!0,large:!0,type:`button`,onPress:()=>{e.runCreate({language:i,body:n})},children:`Create`})]})}const mr=r({id:`@manifest-editor/html-body-creator`,create:fr,label:`HTML Body`,summary:`Add HTML annotation body`,icon:D(rr,{}),render(e){return D(pr,{...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 Q(e,t,n,r=0){return`${e}/${Math.floor(t.x)},${Math.floor(t.y)},${Math.floor(t.width)},${Math.floor(t.height)}/${n}/${r}/default.jpg`}async function hr(n,r){let a=r.options.targetType,o=n.output,s=[];for(let{resource:c,selector:l,parent:u,rotation:d}of o){let o=c.type,f=new i;if((a===`Canvas`||a===`Annotation`||a===`ContentResource`)&&o===`Canvas`){let i=c.id,o=u?.type===`Manifest`?u.id:void 0;Z(o,`Could not find Manifest`);let p=f.get({id:o,type:`Manifest`})||await f.loadManifest(o);Z(p,`Manifest not found`);let m=r.config.addManifestMetadataToCanvas!==!1;n.trackManifest?.({requiredStatement:p.requiredStatement,rights:p.rights,...m?{metadata:p.metadata||[]}:{},partOf:[{id:o,type:`Manifest`,label:p.label}]});let h=e=>{if(e.type===`SpecificResource`&&e.source)return{...e,source:h(e.source)};let t=e.type===`Canvas`&&!m?{}:{metadata:p.metadata||[]};return{requiredStatement:p.requiredStatement,rights:p.rights,...t,...e,partOf:[{id:o,type:`Manifest`,label:p.label}]}},g=p.items.find(e=>e.id===i);Z(g,`Canvas not found`);let _=f.get(g),v=t(l,d);if(a===`Canvas`&&!v){let e=f.toPresentation3(_);e.label||(e.label={en:[`Untitled canvas`]}),r.vault.loadSync(e.id,h(e)),s.push(r.embed(r.vault.get({id:e.id,type:`Canvas`})));continue}let y=f.get(_.items[0]),b=f.get(y.items[0]);if(a===`Annotation`||a===`Canvas`||a===`ContentResource`){let t=f.toPresentation3(b);t.id=r.generateId(`Annotation`);let i=null,o={width:0,height:0};if(t?.body?.service){let e=t?.body.width,r=t?.body.height;i=Ae(t?.body)[0],i&&(!i.width||!i.height)&&(i.width=e,i.height=r),o.width=e,o.height=r,n.trackSize&&n.trackSize(o)}if(v){let c={...t.body},u=``;if(i&&l?.type===`BoxSelector`){let e=i.id||i[`@id`]||``;e&&(c.id=Q(e,l.spatial,`max`,d),u=Q(e,l.spatial,`512,`,d))}t.body={id:r.generateId(`SpecificResource`,b),type:`SpecificResource`,source:c,selector:v};let f=e(l?.type===`BoxSelector`?{width:~~l.spatial.width,height:~~l.spatial.height}:o,d);if(n.trackSize&&n.trackSize(f),a===`ContentResource`){s.push(h(t.body));continue}if(a===`Canvas`){let e=r.generateId(`Canvas`,b);t.target=e;let n=r.generateId(`Page`,b),i=r.embed({id:n,type:`AnnotationPage`,items:[t]}),{width:a,height:o}=f;s.push(r.embed(h({id:e,type:`Canvas`,label:{en:[`Untitled canvas`]},width:a,height:o,thumbnail:u?[r.embed({id:u,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(o/a*512)})]:void 0,items:[i]})));continue}s.push(r.embed(h({...t,target:r.getTarget()})));continue}s.push(r.embed(h({...t,target:r.getTarget()})))}}}return s}const gr=ae(()=>import(`./iiif-browser-form.lazy-DtTHoW1Q.js`)),_r=r({id:`@manifest-editor/iiif-browser-creator`,create:hr,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:D(h,{}),configuration:{fields:[{id:`addManifestMetadataToCanvas`,type:`checkbox`,label:`Add manifest metadata to imported canvases`,summary:`Copies metadata from the source Manifest when the IIIF Browser creates a Canvas.`,defaultValue:!0}]},render(e){return D(gr,{...e})},hiddenModal:!0,tags:[`image`,`image-service`],async supportsResource(e,t){let n=He(await M(e,t));return n===`Manifest`||n===`Collection`||await We(e)?{initialData:{url:e}}:!1},resourceType:`ContentResource`,resourceFields:[`id`,`language`,`type`,`format`,`value`],additionalTypes:[`Annotation`,`Canvas`],supports:{initialData:!0,onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFields:[`body`,`items`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},sideEffects:[{canvasInteraction:!0,spatial:!0,async run(e,{vault:t,options:n}){if(!(e&&e.type===`Annotation`&&n.targetType===`Annotation`))return;let r=t.get(e),i=r.target;if(!(i&&i.source?.type===`Canvas`))return;let a=(Array.isArray(r.body)?r.body[0]:r.body)?.selector;if(!(a&&(a.type===`iiif:ImageApiSelector`||a.type===`ImageApiSelector`)&&a.region))return;let[o,s,c,l]=a.region.split(`,`).map(Number);if(![o,s,c,l].every(Number.isFinite)||c<=0||l<=0)return;let[u]=t.get(r.body),d=(u?.service||[]).find(e=>je(e)),f=d?.id||d?.[`@id`];if(!f)return;let p=Q(f,{x:o,y:s,width:c,height:l},`512,`);t.loadSync(p,{id:p,type:`Image`,format:`image/jpeg`,width:512,height:Math.round(l/c*512),service:[d]}),t.modifyEntityField(i.source,`thumbnail`,[{id:p,type:`ContentResource`}])}},G,I,F],staticFields:{}}),vr=r({id:`@manifest-editor/image-url-list`,label:`Image URL List`,summary:`Image from a list of URLs`,create:Gn,icon:D(_,{}),render(e){return D(Kn,{...e})},resourceType:`ContentResource`,resourceFields:[`format`],supports:{parentFields:[`logo`,`body`,`thumbnail`]},staticFields:{type:`Image`}});async function yr(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/plain`})}function br(e){let[t,n]=E({en:[`View as text`]});return D(v,{children:O(`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:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link to plaintext`}),D(x,{id:`url`,name:`url`,defaultValue:``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const xr=r({id:`@manifest-editor/plaintext-creator`,create:yr,label:`Plaintext`,summary:`Add link to an plaintext`,icon:D(rr,{}),render(e){return D(br,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`]},staticFields:{format:`text/plain`}});function Sr(e,t){let n=ke(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 Cr(e){return e.endsWith(`default.jpg`)?A({...Me(e),type:`info`}):Oe(e)}async function wr(e,t){let n=K(e.service),r=n.sizes,i=Pn(n,t.config,!0);if(e.thumbnailUrl)return t.embed({id:e.thumbnailUrl,type:`Image`,format:`image/jpeg`,width:e.width,height:e.height,service:[i]});if(r){let a=e.width||400,o=null;for(let e of r)(!o||Math.abs(e.width-a)<Math.abs(o.width-a))&&(o={width:e.width,height:e.height});if(o){let e=Sr(n,o);return t.embed({id:e,type:`Image`,format:`image/jpeg`,width:o.width,height:o.height,service:[i]})}}return null}function Tr(e){let[t,n]=E(``),[r,i]=E(null),[a,o]=E({width:0,height:0}),c=T(()=>!r||!a.width||!a.height?null:Sr(r,a),[a,r]);return r?O(v,{children:[O(`div`,{className:`mb-4`,children:[D(`div`,{className:`mb-2`,children:r[`@id`]||r.id}),D(`div`,{className:`flex gap-2 mb-4`,children:r.sizes?.map(e=>{let t=e.width===a.width;return O(s,{primary:t,isDisabled:t,large:!0,onPress:()=>o(e),children:[e.width,`x`,e.height]},e.width)})}),c?D(`img`,{src:c,alt:`preview of selected resource`}):null]}),D(s,{primary:!0,large:!0,isDisabled:!c,onPress:()=>{r&&e.runCreate({service:r,width:a.width,height:a.height})},children:`Add thumbnail`})]}):D(v,{children:O(`form`,{onSubmit:e=>{e.preventDefault();let t=new FormData(e.target),n=Object.fromEntries(t.entries()).url;if(n){let e=Cr(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&&o(t)})}},children:[D(`div`,{className:`flex gap-2 items-center`,children:O(S,{$wide:!0,children:[D(C,{htmlFor:`url`,children:`Link to image service`}),D(x,{id:`url`,name:`url`,defaultValue:``,onPaste:e=>{let t=e.clipboardData.getData(`text/plain`);n(t?Cr(t):``)},onBlur:e=>n(e.currentTarget.value?Cr(e.currentTarget.value):``)})]})}),D(`div`,{children:D(s,{primary:!0,large:!0,type:`submit`,isDisabled:!t,children:`Select size`})})]})})}const Er=r({id:`@manifest-editor/thumbnail-image`,configKey:`iiif-image-services`,create:wr,label:`Thumbnail from service`,summary:`Add thumbnail from an image service`,icon:D(b,{}),render(e){return D(Tr,{...e})},resourceType:`ContentResource`,resourceFields:[`id`,`type`,`format`,`width`,`height`,`service`],supports:{parentFields:[`thumbnail`]}});function Dr(){return O(`svg`,{xmlns:`http://www.w3.org/2000/svg`,height:`24px`,viewBox:`0 0 24 24`,width:`24px`,fill:`#000000`,children:[D(`path`,{d:`M0 0h24v24H0z`,fill:`none`}),D(`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 Or(e,t){return t.embed({id:e.url,type:`Text`,label:e.label,format:`text/html`})}function kr(e){let[t,n]=E({en:[``]});return D(v,{children:O(`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:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link`}),D(x,{id:`url`,name:`url`,defaultValue:``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create link`})]})})}const Ar=r({id:`@manifest-editor/web-page-creator`,create:Or,label:`Web page`,summary:`Add link to an external web page`,icon:D(Dr,{}),render(e){return D(kr,{...e})},resourceType:`ContentResource`,resourceFields:[`label`,`format`],supports:{parentFields:[`seeAlso`,`rendering`,`homepage`]}}),jr=/^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/|shorts\/)|(?:(?:watch)?\?vi?=|&vi?=))([^#&?]*).*/;function $(e){let t=(e||``).match(jr);return t?t[1]:null}function Mr(e){return!!$(e.youtubeUrl)}function Nr(e,t){let n=$(e.youtubeUrl);return t.embed({id:`https://www.youtube.com/watch?v=${n}`,type:`Video`,service:[{type:`Service`,profile:`http://digirati.com/objectifier`,params:{data:`https://www.youtube.com/embed/${n}`}},{id:`https://www.youtube.com/watch?v=${n}`,type:`Service`,profile:`https://www.youtube.com`}]})}async function Pr(e,t){let n=Nr(e,t);if(t.options.targetType===`Canvas`){let r=t.generateId(`canvas`),i=t.generateId(`annotation-page`,{id:r,type:`Canvas`}),a=t.embed({id:t.generateId(`annotation`,{id:i,type:`AnnotationPage`}),type:`Annotation`,motivation:`painting`,body:[n],target:{type:`SpecificResource`,source:{id:r,type:`Canvas`}}}),o=t.embed({id:i,type:`AnnotationPage`,items:[a]});return t.embed({id:r,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:[n],target:t.getTarget()}):n}function Fr(e){let t=e.options.initialData;return D(v,{children:O(`form`,{onSubmit:t=>{t.preventDefault();let n=new FormData(t.target),r=Object.fromEntries(n.entries());r.youtubeUrl&&e.runCreate({youtubeUrl:r.youtubeUrl})},children:[O(S,{$wide:!0,children:[D(C,{htmlFor:`id`,children:`Link to YouTube`}),D(x,{id:`youtubeUrl`,name:`youtubeUrl`,defaultValue:t.youtubeUrl||``})]}),D(s,{primary:!0,large:!0,type:`submit`,children:`Create`})]})})}const Ir=r({id:`@manifest-editor/youtube`,create:Pr,label:`YouTube`,summary:`Embed YouTube`,icon:D(te,{}),resourceType:`ContentResource`,additionalTypes:[`Canvas`,`Annotation`],resourceFields:[`id`,`type`,`service`],supportsResource(e){return $(e)?{initialData:{youtubeUrl:e}}:!1},render:e=>D(Fr,{...e}),supports:{initialData:!0,onlyPainting:!0,parentTypes:[`Annotation`,`Manifest`,`AnnotationPage`],parentFieldMap:{Annotation:[`body`],Manifest:[`items`],AnnotationPage:[`items`]}},staticFields:{type:`Video`}});async function Lr(e,t){let n=e.output||[],r=[];for(let e of n){let{resource:n,parent:i,selector:o}=e,s=t.getPreviewVault(),c=a(s);if(n.type===`Manifest`){let e=n.id;Z(e,`Could not find Manifest ID`);let i=await s.loadManifest(e),a=await c.getBestThumbnailAtSize(i,{width:256,height:256},!1);Z(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;Z(e,`Could not find Manifest ID`);let i=await s.loadManifest(e);Z(i,`Collection not found`),r.push(t.embed({id:n.id,type:`Collection`,label:i.label}))}}return r}const Rr=ae(()=>Promise.resolve().then(()=>zr));var zr=Re({default:()=>Br});function Br(e){let t=De(),n=T(()=>e.options.initialData||{},[e.options.initialData]),r=T(()=>[{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]),i=T(()=>({canCropImage:!1,canSelectCanvas:!1,canSelectManifest:!0,canSelectCollection:!0,multiSelect:!0,...n.iiifBrowserOptions?.navigation||{}}),[n.iiifBrowserOptions?.navigation]),a=T(()=>({buttonClassName:`bg-me-primary-500 text-white hover:bg-me-primary-600`,homeLink:n.url||(typeof e.config?.defaultCollection==`string`?e.config.defaultCollection:void 0),...n.iiifBrowserOptions?.ui||{}}),[n,e.config]),o=T(()=>{let e=n.iiifBrowserOptions?.history||{};return n.url?{...e,restoreFromLocalStorage:!1,saveToLocalStorage:!1,initialHistory:[{url:n.url,resource:null,route:`/loading?id=${encodeURIComponent(n.url)}`}]}:e},[n]);return D(Se,{children:D(Ie,{ui:a,vault:t,className:`iiif-browser border-none border-t rounded-none h-[70vh] min-h-[60vh] max-h-full max-w-full`,output:r,navigation:i,customPages:n.iiifBrowserOptions?.customPages||{},history:o})})}const Vr=r({id:`@manifest-editor/manifest-browser-creator`,configKey:`@manifest-editor/iiif-browser-creator`,create:Lr,label:`IIIF Browser`,summary:`Browse IIIF Resources`,icon:D(h,{}),render(e){return D(Br,{...e})},async supportsResource(e,t){let n=He(await M(e,t));return n===`Manifest`||n===`Collection`||await We(e)?{initialData:{url:e}}:!1},resourceType:`Manifest`,resourceFields:[`id`,`label`],additionalTypes:[`Collection`],supports:{initialData:!0,parentTypes:[`Collection`,`Manifest`,`Canvas`],parentFieldMap:{Collection:[`items`],Manifest:[`partOf`],Canvas:[`partOf`]}},sideEffects:[],staticFields:{}});async function Hr(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 Ur(e){let[t,n]=E({en:[``]});return D(v,{children:O(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),D(s,{primary:!0,type:`submit`,children:`Create range`})]})})}const Wr=r({id:`@manifest-editor/range-with-items`,create:Hr,label:`Range`,summary:`Add a new range`,icon:D(y,{}),render(e){return D(Ur,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Range`],parentFields:[`items`]},staticFields:{type:`Range`}});async function Gr(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 Kr(e){let[t,n]=E({en:[``]});return D(v,{children:O(`form`,{onSubmit:n=>{n.preventDefault(),t&&e.runCreate({type:`Range`,label:t})},children:[D(w,{focusId:`label`,label:`Label`,fields:t,onSave:e=>n(e.toInternationalString())}),D(s,{primary:!0,type:`submit`,children:`Create range`})]})})}const qr=r({id:`@manifest-editor/range-top-level`,create:Gr,label:`Top Level Range`,summary:`Add a new top level range`,icon:D(y,{}),render(e){return D(Kr,{...e})},resourceType:`Range`,resourceFields:[`id`,`label`,`type`],supports:{parentTypes:[`Manifest`],parentFields:[`structures`]},staticFields:{type:`Range`}}),Jr=[Y,zn,Un,Wn,er,pt,mr,yt,Ir,_r,sr,xr,Ar,nr,or,Yn,lr,gt,vr,Jn,Er,qr,Wr,Ve];export{ft as CreateAudioAnnotationForm,ht as CreateCaptionedImageAnnotation,vt as CreateHTMLAnnotation,pr as CreateHTMLBodyForm,J as CreateImageServerForm,Rn as CreateImageServiceAnnotationForm,Hn as CreateImageUrlAnnotationForm,X as CreateImageUrlForm,Kn as CreateImageUrlListForm,br as CreatePlaintextForm,Be as CreateProviderForm,Tr as CreateThumbnailForm,$n as CreateVideoAnnotationForm,ar as CreateVttAnnotationPageForm,kr as CreateWebPageForm,gr as IIIFBrowserCreatorForm,Rr as ManifestBrowserCreatorForm,Ur as RangeWithItemsCreatorForm,Kr as TopLevelRangeCreatorForm,Fr as YouTubeForm,Jr as allCreators,pt as audioAnnotation,gt as captionedImageAnnotation,dt as createAudioAnnotation,mt as createCaptionedImageAnnotation,hr as createFromIIIFBrowserOutput,Lr as createFromManifestBrowserOutput,_t as createHtmlAnnotation,fr as createHtmlBody,Fn as createImageServer,Ln as createImageServiceAnnotation,Bn as createImageUrl,Vn as createImageUrlAnnotation,Gn as createImageUrlList,qn as createImageUrlListAnnotation,Xn as createNoBodyAnnotation,yr as createPlaintext,ze as createProvider,Gr as createRangeTopLevel,Hr as createRangeWithItems,wr as createThumbnail,Qn as createVideoAnnotation,ir as createVttAnnotationPage,Or as createWebPage,Pr as createYoutubeBody,Nr as createYoutubeBodyResource,Q as croppedRegion,nr as emptyAnnotationPage,sr as emptyCanvas,q as getCanonicalUrl,$ as getYouTubeId,yt as htmlAnnotation,mr as htmlBodyCreator,_r as iiifBrowserCreator,zn as imageServiceAnnotation,Y as imageServiceCreator,Wn as imageUrlAnnotation,Un as imageUrlCreator,Jn as imageUrlListAnnotation,vr as imageUrlListCreator,lr as internalCanvas,Vr as manifestBrowserCreator,Yn as noBodyAnnotation,xr as plaintextCreator,Ve as providerCreator,qr as rangeTopLevel,Wr as rangeWithItems,Mr as validateYouTube,er as videoAnnotation,or as vttAnnotationPage,Ar as webPageCreator,Ir as youTubeBodyCreator};
98
98
  //# sourceMappingURL=index.js.map